Node Analyzer (npm/Yarn/pnpm)

This document captures the Node language analyzer’s deterministic behavior guarantees and safety constraints (what it emits, what it refuses to emit, and how it stays bounded/offline).

Component identity & precedence

Installed vs declared-only

Identity safety (PURL vs explicit-key)

Lock metadata lookup precedence

When attaching lock metadata to an installed package:

  1. package-lock.json path match (packages["<relativePath>"]),
  2. (name, version) match (Yarn/pnpm multi-version support),
  3. fallback to name-only (last-wins) for legacy locks.

Lockfile parsing guarantees (offline)

package-lock.json (npm)

yarn.lock (Yarn v1 + Berry v2/v3)

pnpm-lock.yaml (pnpm)

Workspaces

Import scanning (bounded)

Container layer layouts

Determinism & evidence hashing

Benchmark