@rustwrap/eslint 1.0.1 → 1.0.2

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.
Files changed (2) hide show
  1. package/README.md +26 -0
  2. package/package.json +5 -2
package/README.md CHANGED
@@ -22,6 +22,32 @@ dependency at `@rustwrap/eslint` and lint **~50–80× faster**.
22
22
  No script changes needed — `eslint …`, `pcf-scripts lint`, and tools using the ESLint Node API keep
23
23
  working. `@rustwrap/eslint` ships the `eslint` bin.
24
24
 
25
+ ## Requirements
26
+
27
+ **Node.js `^20.19.0 || ^22.13.0 || >=24`** (enforced via the package's `engines` field).
28
+
29
+ This is **not** an arbitrary floor — it is the exact intersection of the engine requirements of the
30
+ Rust toolchain this package is built on:
31
+
32
+ | Dependency | Requires | Why |
33
+ |---|---|---|
34
+ | `oxlint` (+ native binding) | `^20.19.0 \|\| >=22.12.0` | The N-API/V8 features the Rust binary uses were backported into each LTS line at Node **20.19.0** and **22.12.0**. |
35
+ | `eslint-scope` | `^20.19.0 \|\| ^22.13.0 \|\| >=24` | Follows ESLint's policy: active LTS lines only, skipping odd non-LTS majors (21.x, 23.x). |
36
+
37
+ Taking the **strictest** clause on each line yields the declared range. Reading it:
38
+
39
+ - `^20.19.0` → the **Node 20 LTS** line, from patch **.19** up (`>=20.19.0 <21`). Earlier 20.x patches
40
+ lack the backported native feature.
41
+ - `^22.13.0` → the **Node 22 LTS** line, from patch **.13** up (`>=22.13.0 <23`). Note this is one
42
+ patch higher than oxlint's own `22.12.0` floor, because `eslint-scope` requires `22.13.0`.
43
+ - `>=24` → **Node 24+** (the next even LTS line and beyond).
44
+ - **Excluded:** Node ≤16 (EOL), 18.x, 21.x, 22.0–22.12, and 23.x — none satisfy every dependency.
45
+
46
+ > **Node 16 / 18 are not supported.** oxlint 1.x and Rolldown 1.x dropped them; the native Rust
47
+ > binaries will not run there. The `engines` field makes this an **immediate, named `EBADENGINE`
48
+ > warning** at install (or a hard failure under `engine-strict=true`/CI) instead of a cryptic deep
49
+ > crash inside the native module.
50
+
25
51
  ## What it honors (config & ignore)
26
52
  - **Legacy eslintrc**: `.eslintrc.json`, `.eslintrc`, `.eslintrc.js`, `.eslintrc.cjs`,
27
53
  `.eslintrc.yaml`/`.yml`, and `package.json#eslintConfig`. Auto-discovered up the directory tree;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rustwrap/eslint",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "A drop-in ESLint replacement (CLI + Node API) backed by the Rust-based oxlint for very fast linting. Honors .eslintrc(.json/.js/.yml), package.json#eslintConfig, flat eslint.config.js, and .eslintignore.",
5
5
  "main": "lib/index.js",
6
6
  "publishConfig": {
@@ -30,5 +30,8 @@
30
30
  "oxc",
31
31
  "pcf"
32
32
  ],
33
- "license": "MIT"
33
+ "license": "MIT",
34
+ "engines": {
35
+ "node": "^20.19.0 || ^22.13.0 || >=24"
36
+ }
34
37
  }