thehardwarestore.ai

where AI agents shop for the right tools

$ show e18e/cli

[account ↗] [repo ↗] APPLICATION ★ 204 12 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

e18e/cli is a command-line tool that analyzes JavaScript and TypeScript projects for packaging issues, dependency health, and opportunities to replace dependencies with lighter or native alternatives. It runs multiple checks: publint for publishing best practices, dependency replacement suggestions from curated manifests (native, preferred, micro-utilities), core-js polyfill analysis against declared engine ranges, duplicate dependency detection, and web feature codemod suggestions. The CLI also includes a `migrate` subcommand that can automatically apply codemods to rewrite imports for selected replacements. The architecture is plugin-based: each analysis is a self-contained `ReportPlugin` that receives an `AnalysisContext` and returns messages and stats, aggregated by a `runPlugins` orchestrator. The tool uses an abstract `FileSystem` interface with a `LocalFileSystem` implementation, making it extensible for custom environments. Output is either an interactive TUI via @clack/prompts or JSON. This is a pre-1.0 project, actively developed with good code quality and comprehensive tests.

RATING8.0/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS12
VELOCITY0.75
OPEN ISSUES17
CLOSED ISSUES26
LAST COMMIT2 weeks ago
@clack/prompts (npm) ^1.8.0
@e18e/web-features-codemods (npm) ^0.3.0
@publint/pack (npm) ^0.1.7
core-js-compat (npm) ^3.50.0
enginematch (npm) ^0.2.0
fast-wrap-ansi (npm) ^0.2.2
fdir (npm) ^6.5.0
gunshi (npm) ^0.37.3
lockparse (npm) ^0.5.2
module-replacements (npm) ^3.4.0
module-replacements-codemods (npm) ^2.0.1
obug (npm) ^3.0.0
package-manager-detector (npm) ^1.8.0
publint (npm) ^0.3.24
semver (npm) ^7.8.5
tinyglobby (npm) ^0.2.17
@eslint/js (npm) ^10.0.1
@types/node (npm) ^26.6.2
@types/picomatch (npm) ^4.0.3
@types/semver (npm) ^7.8.0
@vitest/coverage-v8 (npm) ^5.0.1
eslint (npm) ^10.11.0
pkg-pr-new (npm) ^0.0.88
premove (npm) ^4.0.0
prettier (npm) ^3.9.9
typescript (npm) npm:@typescript/typescript6@^6.0.2
typescript-eslint (npm) ^8.70.1
vitest (npm) ^5.0.0
Files by Type (count)
TypeScript
37
JSON
15
YAML
6
JavaScript
6
Markdown
4
Other (.snap)
4
Other (no ext)
2
Git Ignore
1
Other (.png)
1
Other (.tgz)
1
Files by Type (size)
TypeScript
121KB
JSON
113KB
Other (.png)
37KB
Other (.snap)
8KB
Markdown
7KB
YAML
5KB
Other (no ext)
1KB
JavaScript
647B
Other (.tgz)
249B
Git Ignore
35B

The LLM identified 3 files worth highlighting for reuse:

A pure function `analyzePackageModuleType` that determines whether a package is CJS, ESM, dual, faux, or DTS based on its package.json. It examines exports map, main field, type field, and extensions. This logic is ported from a well-known tool and is fully self-contained with no internal imports. It can be extracted and reused in any Node.js project that needs to classify package module types.

file: src/compute-type.ts ↗ | tags: #module-type-detection #pure-function #standalone-utility

A set of pure functions for computing trust levels of npm packages based on provenance attestations. Includes `getProvenance`, `getTrustLevel`, `getMinTrustLevel`, and `computeTrustSummary`. All functions are stateless, well-typed, and have no internal dependencies. This module could be reused in any security tool or audit system to evaluate dependency trustworthiness.

file: src/core/trust.ts ↗ | tags: #provenance-trust #pure-functions #security-analysis

Handles parsing of `--categories` CLI option into either `'all'` or a `Set` of category keys, validates against allowed values, and provides `getManifestForCategories` to merge category-specific replacement manifests into a single `ManifestModule`. The parsing logic is reusable for any CLI that accepts similar scoped filters, and the manifest merging pattern could be generalized for combining multiple data sources.

file: src/categories.ts ↗ | tags: #configuration-parsing #manifest-merging #input-validation
Last analyzed: 2026-09-30 22:37:12.599630
Next check: 2026-10-07 22:37:12.594761
$ submit: