@confirmdev/listalyze
v0.2.1
Published
Local-first list & text power tool — sort, clean, dedupe, regex from your terminal. Free; Pro unlocks more.
Readme
@listalyze/cli
The command-line surface of Listalyze — a local-first, privacy-first list & text power tool. It runs entirely offline on your machine and uses the same engine as the web app.
Fully-usable open beta. Every command works today with no account required. The CLI shows a brief WinRAR/PKZIP-style "Unregistered copy" reminder on stderr before each data command (and pauses ~2.5s). The reminder is annoyance-only — it never blocks a command, and stdout stays clean so pipes are unaffected. Registering a seat silences it. Run
listalyze registerto learn more.
Install / build
pnpm install
pnpm --filter @listalyze/cli build # typecheck + esbuild bundle -> dist/index.jsbuild typechecks (tsc --noEmit) and then esbuilds src/index.ts into a
single, self-contained, executable dist/index.js. The engine packages
(@listalyze/engine-js, @listalyze/core, @listalyze/operation-schemas) are
inlined from their TypeScript source, so the bundle runs with no need to
pre-build any workspace package. The license-nag WASM module
(license_nag.cjs + license_nag_bg.wasm) is vendored into
vendor/license-nag/ and copied to dist/vendor/license-nag/ at build time, so
it has no separate dependency — the published package is fully standalone
with an empty dependencies block.
The binary is listalyze (bin → dist/index.js).
Usage
Every command reads from stdin (or -i/--input <file>) and writes to
stdout (or -o/--output <file>).
printf 'banana\napple\napple\n' | node apps/cli/dist/index.js dedupe
printf 'banana\napple\n' | node apps/cli/dist/index.js sort
listalyze sort -i list.txt -o sorted.txt
listalyze register # how to license Listalyze ProSet LISTALYZE_SKIP_NAG_DELAY=1 to skip the unregistered-copy delay (the
reminder is still printed to stderr).
Commands
| Command | Description | Flags |
| --- | --- | --- |
| sort | Sort lines | --desc, --numeric, --natural |
| dedupe | Remove duplicate lines (keep first) | |
| trim | Trim leading/trailing whitespace per line | |
| remove-blanks | Remove blank/whitespace-only lines | |
| regex-extract <pattern> | Emit every regex match, one per line | --flags <f> (default gi) |
| regex-replace <pattern> <replacement> | Replace regex matches | --flags <f> (default g) |
| stats | Print list statistics | |
| register | Show how to register Listalyze Pro | |
Top-level: --help/-h, --version/-v. Each command also accepts --help.
--help, --version, and register never show the registration reminder.
On a pipeline error the first error message is printed to stderr and the process exits non-zero.
Registration
listalyze register explains Listalyze Pro: $6/month or $36/year per seat,
with one subscription covering web + CLI + desktop + mobile. Registration and
login open at launch; for now, join the launch list at
https://listalyze.com/pricing.
The CLI reads a license token from ~/.config/listalyze/license.json
({ "token": "..." }). A valid token silences the reminder. In-CLI sign-in
(ConfirmID device/loopback login) that fetches and writes that token is a future
task — this build cannot fetch a token yet.
Publishing
npm publishis a manual step (it is intentionally not run by CI or any build script here).
The package is fully standalone (zero workspace:* deps, empty runtime
dependencies): engine packages are bundled and license-nag is vendored. See
PUBLISH.md for the exact steps (build → npm pack →
npm publish --access public) and the name/scope notes.
