Releases: Andrew-Jayne/ExplicitJS
Releases · Andrew-Jayne/ExplicitJS
Release list
v1beta4
Full Changelog: v1beta3...v1beta4
v1beta3
v1beta2
Fixes
- Single-use checks no longer false-positive on closure-shared variables. The counter used to stop at scope boundaries, so a variable used repeatedly inside a callback (Promise executor, event handler) but once in its own scope was flagged as single-use. The analysis now resolves every reference to its nearest enclosing binding, with shadowing handled exactly. A definition is flagged only with exactly one same-scope read and zero closure reads.
||=and&&=are now flagged bybool_opexactly like their expandeda = a || bforms, which previously slipped through.- The CLI errors on extra positional paths instead of silently dropping them.
- Fixed the
DELIBERTATE_CONSTANTtypo in the single-use message.
New checks
nullish_coalesce(default-on): flags??and??=— inline if statements in disguise, matching the ternary ban. Excludable viaexclude-type.optional_param(opt-in viainclude-extra): flagsarg?: Tin function implementations in favor of the explicitarg: T | null = null. Type-space signatures and overload declarations are exempt.
Dogfooding
ExplicitJS now lints itself: deno task lint runs the tool on its own source with optional_param enabled (see .explicitrc.json) and must exit clean. All ?? uses and optional parameters in our own code were rewritten accordingly.
v1beta1
ExplicitJS v1beta1
First beta release of ExplicitJS — a Deno-based linter that enforces explicit, unambiguous JavaScript.
Highlights
- Runs directly from raw GitHub URL via Deno — no npm install needed
- Configurable via
.explicitrc.json - Table-driven test harness
Install & Run
deno run --allow-read https://raw.githubusercontent.com/Andrew-Jayne/ExplicitJS/main/src/main.ts