@merupatel/reachable 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +19 -1
- package/dist/cli/index.js +17 -5
- package/package.json +16 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [1.0.6](https://github.com/Meru143/reachable/compare/v1.0.5...v1.0.6) (2026-04-04)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* scope reachable audit to production dependencies ([3b1a280](https://github.com/Meru143/reachable/commit/3b1a2803dbbd44a5341f9e0ce2096b933e4756b5))
|
|
7
|
+
|
|
8
|
+
## [1.0.5](https://github.com/Meru143/reachable/compare/v1.0.4...v1.0.5) (2026-03-20)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* add cli demo and resolve wildcard aliases ([5c6a62d](https://github.com/Meru143/reachable/commit/5c6a62d2b191d9c78cfd1ad18253c977d82b76a8))
|
|
14
|
+
|
|
1
15
|
## [1.0.4](https://github.com/Meru143/reachable/compare/v1.0.3...v1.0.4) (2026-03-20)
|
|
2
16
|
|
|
3
17
|
|
package/README.md
CHANGED
|
@@ -4,10 +4,20 @@
|
|
|
4
4
|

|
|
5
5
|

|
|
6
6
|
|
|
7
|
-
`reachable` is a local-first CLI that answers the question developers ask after `npm audit`: is the vulnerable code path actually reachable from my application?
|
|
7
|
+
`reachable` is a local-first CLI for JavaScript and TypeScript that answers the question developers ask after `npm audit`: is the vulnerable code path actually reachable from my application?
|
|
8
8
|
|
|
9
9
|
It parses JavaScript and TypeScript with tree-sitter, builds a project call graph, queries OSV advisories, and reports whether the vulnerable symbol is reachable, unknown, or unreachable from your entry points.
|
|
10
10
|
|
|
11
|
+
Live page: [merup.me/reachable](https://merup.me/reachable/)
|
|
12
|
+
|
|
13
|
+
The point is not to replace package-level scanners. It is to rank the work that actually matters by asking the next question those tools cannot answer on their own: does your code reach the vulnerable symbol?
|
|
14
|
+
|
|
15
|
+

|
|
16
|
+
|
|
17
|
+
- Cut false-positive dependency noise by separating `REACHABLE`, `UNKNOWN`, and `UNREACHABLE` findings.
|
|
18
|
+
- Fail CI on code paths that actually matter instead of every advisory in the lockfile.
|
|
19
|
+
- Run locally or in GitHub Actions without a hosted service, account, or API key.
|
|
20
|
+
|
|
11
21
|
## Why reachable?
|
|
12
22
|
|
|
13
23
|
`npm audit` reports package-level risk. It does not know whether your code imports or calls the vulnerable function. That leads to noisy CI failures, broad dependency upgrade churn, and teams ignoring entire audit reports.
|
|
@@ -18,6 +28,14 @@ It parses JavaScript and TypeScript with tree-sitter, builds a project call grap
|
|
|
18
28
|
- It separates `REACHABLE`, `UNKNOWN`, and `UNREACHABLE` findings so real risk rises to the top.
|
|
19
29
|
- It works locally in CI without a hosted service, account, or API key.
|
|
20
30
|
|
|
31
|
+
## Why Not Just `npm audit`?
|
|
32
|
+
|
|
33
|
+
| Tool | Flags vulnerable packages | Checks whether your code reaches the vulnerable symbol | Local-first CLI |
|
|
34
|
+
| --- | --- | --- | --- |
|
|
35
|
+
| `reachable` | Yes | Yes | Yes |
|
|
36
|
+
| `npm audit` | Yes | No | Yes |
|
|
37
|
+
| Dependabot alerts | Yes | No | No |
|
|
38
|
+
|
|
21
39
|
## Installation
|
|
22
40
|
|
|
23
41
|
```bash
|
package/dist/cli/index.js
CHANGED
|
@@ -209482,7 +209482,7 @@ function resolveAlias(importPath, cwd) {
|
|
|
209482
209482
|
}
|
|
209483
209483
|
const wildcardValue = match[1] ?? "";
|
|
209484
209484
|
for (const target of targets) {
|
|
209485
|
-
const substituted = target.
|
|
209485
|
+
const substituted = target.split("*").join(wildcardValue);
|
|
209486
209486
|
const absoluteTarget = import_node_path2.default.isAbsolute(substituted) ? substituted : import_node_path2.default.resolve(config.baseUrl, substituted);
|
|
209487
209487
|
const resolved = resolveFileCandidate(absoluteTarget);
|
|
209488
209488
|
if (resolved) {
|
|
@@ -209849,8 +209849,8 @@ var import_promises = require("timers/promises");
|
|
|
209849
209849
|
// package.json
|
|
209850
209850
|
var package_default = {
|
|
209851
209851
|
name: "@merupatel/reachable",
|
|
209852
|
-
version: "1.0.
|
|
209853
|
-
description: "
|
|
209852
|
+
version: "1.0.6",
|
|
209853
|
+
description: "Local-first vulnerability reachability CLI for JavaScript and TypeScript",
|
|
209854
209854
|
bin: {
|
|
209855
209855
|
reachable: "dist/cli/index.js"
|
|
209856
209856
|
},
|
|
@@ -209878,10 +209878,22 @@ var package_default = {
|
|
|
209878
209878
|
keywords: [
|
|
209879
209879
|
"cli",
|
|
209880
209880
|
"security",
|
|
209881
|
-
"dependency",
|
|
209881
|
+
"dependency-analysis",
|
|
209882
209882
|
"reachability",
|
|
209883
209883
|
"osv",
|
|
209884
|
-
"audit"
|
|
209884
|
+
"audit",
|
|
209885
|
+
"nodejs",
|
|
209886
|
+
"javascript",
|
|
209887
|
+
"typescript",
|
|
209888
|
+
"npm",
|
|
209889
|
+
"vulnerability-scanner",
|
|
209890
|
+
"static-analysis",
|
|
209891
|
+
"devsecops",
|
|
209892
|
+
"sast",
|
|
209893
|
+
"sarif",
|
|
209894
|
+
"github-actions",
|
|
209895
|
+
"supply-chain-security",
|
|
209896
|
+
"tree-sitter"
|
|
209885
209897
|
],
|
|
209886
209898
|
author: "merupatel",
|
|
209887
209899
|
license: "MIT",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@merupatel/reachable",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.6",
|
|
4
|
+
"description": "Local-first vulnerability reachability CLI for JavaScript and TypeScript",
|
|
5
5
|
"bin": {
|
|
6
6
|
"reachable": "dist/cli/index.js"
|
|
7
7
|
},
|
|
@@ -29,10 +29,22 @@
|
|
|
29
29
|
"keywords": [
|
|
30
30
|
"cli",
|
|
31
31
|
"security",
|
|
32
|
-
"dependency",
|
|
32
|
+
"dependency-analysis",
|
|
33
33
|
"reachability",
|
|
34
34
|
"osv",
|
|
35
|
-
"audit"
|
|
35
|
+
"audit",
|
|
36
|
+
"nodejs",
|
|
37
|
+
"javascript",
|
|
38
|
+
"typescript",
|
|
39
|
+
"npm",
|
|
40
|
+
"vulnerability-scanner",
|
|
41
|
+
"static-analysis",
|
|
42
|
+
"devsecops",
|
|
43
|
+
"sast",
|
|
44
|
+
"sarif",
|
|
45
|
+
"github-actions",
|
|
46
|
+
"supply-chain-security",
|
|
47
|
+
"tree-sitter"
|
|
36
48
|
],
|
|
37
49
|
"author": "merupatel",
|
|
38
50
|
"license": "MIT",
|