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
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.