monoripple 0.0.1

Symbol-aware affected target detection for JavaScript and TypeScript monorepos
Documentation

monoripple

monoripple finds JavaScript and TypeScript applications affected by a change at symbol precision. It uses Oxc for parsing, semantic binding analysis, and module resolution instead of treating every declared package dependency as a runtime dependency.

Status

monoripple currently supports:

  • JavaScript, JSX, TypeScript, and TSX
  • npm-compatible workspace package manifests
  • relative and package imports
  • named, default, namespace, and re-exported bindings
  • runtime versus type-only dependency edges
  • deployable target discovery from package scripts and Wrangler entrypoints
  • Git working-tree comparisons
  • dependency-path explanations

The current implementation builds the working-tree graph. Deleted modules conservatively affect their owning package; a base/current graph union is planned to make deletion and export-removal paths symbol-precise.

Usage

cargo install monoripple
monoripple --root /path/to/monorepo affected --base origin/main
monoripple --root /path/to/monorepo affected --base origin/main --format json
monoripple --root /path/to/monorepo why @repo/engine --base origin/main

By default monoripple reports packages with a deploy script. Use --target <script> to select another package script, or --target all to include every package with an inferred entrypoint.

How it works

monoripple creates declaration nodes for each module using oxc_semantic. References inside a declaration become edges to the exact local or imported symbols they consume. oxc_resolver links imports and package exports across files. Changed declaration fingerprints are then propagated backwards to application entrypoints.

changed declaration
  -> local consumer
  -> imported binding
  -> application target

Type-only imports and exports do not participate in runtime affected-target queries.