npm / tr46 / 7.0.0

tr46 7.0.0

Source
https://github.com/jsdom/tr46
Tag scanned
v7.0.0
Compared with
v6.0.0 (12 signals introduced since)
Files
13 scanned, 1 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 12 info
Scan time
10.6 s
LLM review
Reviewed by claude-haiku-5-5 (Anthropic): 12 of 12 warn and critical signals; 12 demoted to info.
Disclude version
4.0.0
Scanned (UTC)
2026-10-14 19:29

Signals

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

  1. info warn → info by review dynamic-import scripts/generateRegexes.mjs:7:16 new in this release

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.80)

    const cp = {
      Mark: (await import(`@unicode/unicode-${unicodeVersion}/General_Category/Mark/code-points.mjs`)).default,
      JT: await generateUnicodeCodePoints(`https://unicode.org/Public/${unicodeVersion}/ucd/extracted/DerivedJoiningType.txt`, ["L", "R", "D", "T"]),
    likely benign LLM, confidence 0.93 Build script dynamically imports Unicode General_Category Mark code-point data for regex generation.
    Reasoning

    This is a build-time script that generates regex tables. The dynamic import interpolates only a unicodeVersion variable into a fixed @unicode/unicode-* package path for the General_Category/Mark data. The specifier is not attacker-controlled input, and the import loads a known npm package's data module. Nothing here executes untrusted content.

  2. info warn → info by review dynamic-import scripts/generateRegexes.mjs:12:13 new in this release

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.80)

      // https://tools.ietf.org/html/rfc5893#section-1.4
      L: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Left_To_Right/code-points.mjs`)).default,
      R: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Right_To_Left/code-points.mjs`)).default,
    likely benign LLM, confidence 0.93 Build script dynamically imports the Unicode Bidi_Class Left_To_Right code-point data.
    Reasoning

    Same pattern as the other findings in this script: a fixed @unicode package path with a version interpolated. The surrounding RFC 5893 reference and the Bidi_Class mapping show it is building bidi-class lookup tables for IDNA/bidi regexes. This is legitimate data generation.

  3. info warn → info by review dynamic-import scripts/generateRegexes.mjs:13:13 new in this release

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.80)

      R: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Right_To_Left/code-points.mjs`)).default,
      AL: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Arabic_Letter/code-points.mjs`)).default,
    likely benign LLM, confidence 0.93 Build script dynamically imports the Unicode Bidi_Class Right_To_Left code-point data.
    Reasoning

    The import specifier is a fixed @unicode data path with only the Unicode version varied. Bidi_Class table generation in a build script is an ordinary pattern and does not indicate obfuscation or malicious intent.

  4. info warn → info by review dynamic-import scripts/generateRegexes.mjs:14:14 new in this release

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.80)

      AL: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Arabic_Letter/code-points.mjs`)).default,
      EN: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/European_Number/code-points.mjs`)).default,
    likely benign LLM, confidence 0.93 Build script dynamically imports the Unicode Bidi_Class Arabic_Letter code-point data.
    Reasoning

    A template-literal import of a fixed Unicode package path, with the version as the only variable. It is part of a table of bidi-class imports used to generate regexes, which is benign build tooling.

  5. info warn → info by review dynamic-import scripts/generateRegexes.mjs:15:14 new in this release

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.80)

      EN: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/European_Number/code-points.mjs`)).default,
      ES: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/European_Separator/code-points.mjs`)).default,
    likely benign LLM, confidence 0.93 Build script dynamically imports the Unicode Bidi_Class European_Number code-point data.
    Reasoning

    Standard Unicode data import in a generator script. The specifier is constructed from a constant package name and a version string, with no untrusted input and no execution of fetched code.

  6. info warn → info by review dynamic-import scripts/generateRegexes.mjs:16:14 new in this release

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.80)

      ES: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/European_Separator/code-points.mjs`)).default,
      ET: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/European_Terminator/code-points.mjs`)).default,
    likely benign LLM, confidence 0.93 Build script dynamically imports the Unicode Bidi_Class European_Separator code-point data.
    Reasoning

    Fixed-path dynamic import of Unicode bidi data inside a regex-generation script. The pattern is a known way to load data modules with a versioned path and carries no malicious signal.

  7. info warn → info by review dynamic-import scripts/generateRegexes.mjs:17:14 new in this release

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.80)

      ET: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/European_Terminator/code-points.mjs`)).default,
      AN: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Arabic_Number/code-points.mjs`)).default,
    likely benign LLM, confidence 0.93 Build script dynamically imports the Unicode Bidi_Class European_Terminator code-point data.
    Reasoning

    The import uses a fixed @unicode package and a version variable only. It is one entry in a bidi-class lookup table generated at build time, so it is benign.

  8. info warn → info by review dynamic-import scripts/generateRegexes.mjs:18:14 new in this release

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.80)

      AN: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Arabic_Number/code-points.mjs`)).default,
      CS: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Common_Separator/code-points.mjs`)).default,
    likely benign LLM, confidence 0.93 Build script dynamically imports the Unicode Bidi_Class Arabic_Number code-point data.
    Reasoning

    Build-time generator importing Unicode Arabic_Number data via a versioned package path. The dynamic specifier is trusted and bounded, so this is a legitimate coding pattern.

  9. info warn → info by review dynamic-import scripts/generateRegexes.mjs:19:14 new in this release

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.80)

      CS: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Common_Separator/code-points.mjs`)).default,
      NSM: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Nonspacing_Mark/code-points.mjs`)).default,
    likely benign LLM, confidence 0.93 Build script dynamically imports the Unicode Bidi_Class Common_Separator code-point data.
    Reasoning

    Fixed-path Unicode data import in a code generation script, with only a version variable interpolated. This is standard tooling and not an obfuscation or supply-chain risk.

  10. info warn → info by review dynamic-import scripts/generateRegexes.mjs:20:15 new in this release

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.80)

      NSM: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Nonspacing_Mark/code-points.mjs`)).default,
      BN: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Boundary_Neutral/code-points.mjs`)).default,
    likely benign LLM, confidence 0.93 Build script dynamically imports the Unicode Bidi_Class Nonspacing_Mark code-point data.
    Reasoning

    Same fixed @unicode package template used for every Bidi_Class entry. Nothing in the snippet suggests attacker-controlled specifiers or code execution beyond loading static data.

  11. info warn → info by review dynamic-import scripts/generateRegexes.mjs:21:14 new in this release

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.80)

      BN: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Boundary_Neutral/code-points.mjs`)).default,
      ON: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Other_Neutral/code-points.mjs`)).default
    };
    likely benign LLM, confidence 0.93 Build script dynamically imports the Unicode Bidi_Class Boundary_Neutral and Other_Neutral code-point data.
    Reasoning

    The final entry in the bidi-class table, again a fixed Unicode data path with a version variable. The pattern is consistent with benign regex generation and the AST rule fires only because the specifier is a template literal.

  12. info warn → info by review dynamic-import scripts/generateRegexes.mjs:22:14 new in this release

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.80)

      BN: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Boundary_Neutral/code-points.mjs`)).default,
      ON: (await import(`@unicode/unicode-${unicodeVersion}/Bidi_Class/Other_Neutral/code-points.mjs`)).default
    };
    likely benign LLM, confidence 0.93 Build script dynamically imports Unicode Bidi_Class data modules from the @unicode package by version.
    Reasoning

    The dynamic import specifier is a template literal interpolating a unicode version into a fixed @unicode package path for Bidi_Class code-point data. This is a build-time script generating regexes from published Unicode data; the variable only selects a version string and the module namespace is limited to a known scoped package. No network fetch, decoding, or shell execution is present, so it reads as a legitimate code-generation pattern.

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/jsdom/tr46 tr46 && cd tr46
git checkout v7.0.0
disclude scan --severity info --diff v6.0.0 .