flamerjs 1.1.2 → 1.1.4
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 +18 -1
- package/README.md +17 -8
- package/dist/cli.js +62 -3
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,22 @@ All notable changes to flamer are recorded here. The format follows
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project
|
|
5
5
|
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [1.1.4] - 2026-10-24
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Added `--verbose` output with the CLI version, repository name, selected
|
|
12
|
+
backend, scan path, file and line counts, duration, and native fallback
|
|
13
|
+
details.
|
|
14
|
+
|
|
15
|
+
## [1.1.3] - 2026-10-24
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Standalone native installation now installs the CLI and both Rust/C++ workers.
|
|
20
|
+
- Native workers are discovered automatically from the platform cache.
|
|
21
|
+
- Added Windows PowerShell installation and checksum verification.
|
|
22
|
+
|
|
7
23
|
## [1.0.0] - 2026-10-24
|
|
8
24
|
|
|
9
25
|
### Added
|
|
@@ -139,7 +155,8 @@ Measured on a 3.0 GB monorepo of 98,161 files, 71,150 of them source:
|
|
|
139
155
|
- `poison` is a separate project. Flamer does not import it, and the handoff is
|
|
140
156
|
a runtime capability check in `SKILL.md` rather than a code dependency.
|
|
141
157
|
|
|
142
|
-
[Unreleased]: https://github.com/dummy3ye/flamer/compare/v1.1.
|
|
158
|
+
[Unreleased]: https://github.com/dummy3ye/flamer/compare/v1.1.3...HEAD
|
|
159
|
+
[1.1.3]: https://github.com/dummy3ye/flamer/releases/tag/v1.1.3
|
|
143
160
|
[1.1.2]: https://github.com/dummy3ye/flamer/releases/tag/v1.1.2
|
|
144
161
|
[1.1.1]: https://github.com/dummy3ye/flamer/releases/tag/v1.1.1
|
|
145
162
|
[1.1.0]: https://github.com/dummy3ye/flamer/releases/tag/v1.1.0
|
package/README.md
CHANGED
|
@@ -4,11 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://github.com/dummy3ye/flamer/actions/workflows/ci.yml)
|
|
6
6
|
[](https://codecov.io/gh/dummy3ye/flamer)
|
|
7
|
-
[](https://github.com/dummy3ye/flamer)<br>
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
[](https://github.com/dummy3ye/flamer/commits/master)
|
|
10
|
-
[](https://github.com/dummy3ye/flamer)
|
|
10
|
+
[](https://www.npmjs.com/package/flamerjs)
|
|
12
11
|
|
|
13
12
|
Flamer scans a repository for the common mistakes that appear when software is
|
|
14
13
|
assembled quickly with AI or other “vibe coding” workflows: unfinished
|
|
@@ -124,6 +123,7 @@ flamerjs [path] [options]
|
|
|
124
123
|
| `--no-lockfile-warning` | Suppress the missing-lockfile suggestion |
|
|
125
124
|
| `--ignore-dir <name>` | Ignore an additional directory name; repeatable |
|
|
126
125
|
| `--quiet` | Suppress the human summary |
|
|
126
|
+
| `--verbose` | Show CLI version, runtime backend, and scan details |
|
|
127
127
|
| `--color` | Force ANSI colors |
|
|
128
128
|
| `--no-color` | Disable ANSI colors |
|
|
129
129
|
| `--engine <all\|typescript\|rust\|cpp>` | Run all engines (default) or select one engine |
|
|
@@ -215,11 +215,20 @@ For the source installation path:
|
|
|
215
215
|
curl -fsSL https://raw.githubusercontent.com/dummy3ye/flamer/master/scripts/install.sh | sh
|
|
216
216
|
```
|
|
217
217
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
218
|
+
The npm package uses optional native packages when they are published for the
|
|
219
|
+
current platform; if npm skips them, TypeScript fallback is automatic. To
|
|
220
|
+
install the CLI plus standalone Rust and C++ release workers on Unix-like
|
|
221
|
+
systems:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
FLAMER_VERSION=1.1.3 \
|
|
225
|
+
sh -c 'curl -fsSL https://raw.githubusercontent.com/dummy3ye/flamer/master/scripts/install.sh | sh -s -- native'
|
|
226
|
+
flamer .
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
On Windows, run `scripts/install.ps1` from the repository or download it from
|
|
230
|
+
the tagged source tree. Both installers verify SHA-256 checksums and place the
|
|
231
|
+
two workers in the Flamer native cache.
|
|
223
232
|
|
|
224
233
|
## How it works
|
|
225
234
|
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
// src/cli.ts
|
|
4
|
-
import { writeFileSync, existsSync as existsSync4 } from "fs";
|
|
4
|
+
import { writeFileSync, existsSync as existsSync4, readFileSync as readFileSync2 } from "fs";
|
|
5
5
|
import { resolve, basename } from "path";
|
|
6
6
|
|
|
7
7
|
// src/util/fs.ts
|
|
@@ -2907,6 +2907,7 @@ import { spawn } from "child_process";
|
|
|
2907
2907
|
import { existsSync as existsSync3 } from "fs";
|
|
2908
2908
|
import { join as join6 } from "path";
|
|
2909
2909
|
import { createRequire } from "module";
|
|
2910
|
+
import { homedir } from "os";
|
|
2910
2911
|
var require2 = createRequire(import.meta.url);
|
|
2911
2912
|
function nativePackageName() {
|
|
2912
2913
|
const platform = `${process.platform}-${process.arch}`;
|
|
@@ -2929,12 +2930,27 @@ function packagedWorkerPath(worker) {
|
|
|
2929
2930
|
return null;
|
|
2930
2931
|
}
|
|
2931
2932
|
}
|
|
2933
|
+
function downloadedWorkerPath(worker) {
|
|
2934
|
+
const directory = process.env.FLAMER_NATIVE_DIR || join6(
|
|
2935
|
+
process.env.XDG_CACHE_HOME || (process.platform === "win32" ? process.env.LOCALAPPDATA || join6(homedir(), "AppData", "Local") : join6(homedir(), ".cache")),
|
|
2936
|
+
"flamer",
|
|
2937
|
+
"bin"
|
|
2938
|
+
);
|
|
2939
|
+
const extension = process.platform === "win32" ? ".exe" : "";
|
|
2940
|
+
const platform = `${process.platform}-${process.arch}`;
|
|
2941
|
+
return join6(
|
|
2942
|
+
directory,
|
|
2943
|
+
worker === "rust" ? `flamer-core-rust-${platform}${extension}` : `flamer-core-cpp-${platform}${extension}`
|
|
2944
|
+
);
|
|
2945
|
+
}
|
|
2932
2946
|
function nativeWorkerPath(root, worker) {
|
|
2933
2947
|
const configured = worker === "rust" ? process.env.FLAMER_RUST_CORE : process.env.FLAMER_CPP_CORE;
|
|
2934
2948
|
if (configured) return configured;
|
|
2935
2949
|
if (process.env.FLAMER_CORE && worker === "rust") return process.env.FLAMER_CORE;
|
|
2936
2950
|
const packaged = packagedWorkerPath(worker);
|
|
2937
2951
|
if (packaged) return packaged;
|
|
2952
|
+
const downloaded = downloadedWorkerPath(worker);
|
|
2953
|
+
if (existsSync3(downloaded)) return downloaded;
|
|
2938
2954
|
return worker === "rust" ? join6(root, "native", "core", "rust", "target", "release", "flamer-core") : join6(root, "native", "core", "cpp", "build", "flamer-core-cpp");
|
|
2939
2955
|
}
|
|
2940
2956
|
function runNativeWorker(root, files, worker, operation = "file_metrics") {
|
|
@@ -2987,6 +3003,7 @@ function runNativeWorker(root, files, worker, operation = "file_metrics") {
|
|
|
2987
3003
|
|
|
2988
3004
|
// src/cli.ts
|
|
2989
3005
|
var SPEC_VERSION = 1;
|
|
3006
|
+
var CLI_VERSION = JSON.parse(readFileSync2(new URL("../package.json", import.meta.url), "utf8")).version;
|
|
2990
3007
|
function parseArgs(argv) {
|
|
2991
3008
|
const opts = {
|
|
2992
3009
|
root: process.cwd(),
|
|
@@ -2998,6 +3015,7 @@ function parseArgs(argv) {
|
|
|
2998
3015
|
noGit: false,
|
|
2999
3016
|
noLockfileWarning: false,
|
|
3000
3017
|
quiet: false,
|
|
3018
|
+
verbose: false,
|
|
3001
3019
|
scope: null,
|
|
3002
3020
|
listLanguages: false,
|
|
3003
3021
|
help: false,
|
|
@@ -3042,6 +3060,9 @@ function parseArgs(argv) {
|
|
|
3042
3060
|
case "--quiet":
|
|
3043
3061
|
opts.quiet = true;
|
|
3044
3062
|
break;
|
|
3063
|
+
case "--verbose":
|
|
3064
|
+
opts.verbose = true;
|
|
3065
|
+
break;
|
|
3045
3066
|
case "--color":
|
|
3046
3067
|
opts.color = true;
|
|
3047
3068
|
break;
|
|
@@ -3095,6 +3116,7 @@ Options:
|
|
|
3095
3116
|
--no-lockfile-warning skip the "no lockfile" suggestion
|
|
3096
3117
|
--ignore-dir <name> also skip this directory name (repeatable)
|
|
3097
3118
|
--quiet suppress the human summary
|
|
3119
|
+
--verbose show runtime engine and scan details
|
|
3098
3120
|
--color force ANSI colors
|
|
3099
3121
|
--no-color disable ANSI colors
|
|
3100
3122
|
--engine <all|typescript|rust|cpp>
|
|
@@ -3363,13 +3385,50 @@ function severityColor(severity) {
|
|
|
3363
3385
|
function severityIcon(severity) {
|
|
3364
3386
|
return severity === "LOW" ? "\xB7" : severity === "INFO" ? "i" : "!";
|
|
3365
3387
|
}
|
|
3366
|
-
function
|
|
3388
|
+
function printVerbose(report, forceColor) {
|
|
3389
|
+
const enabled = colorEnabled(forceColor);
|
|
3390
|
+
const native = report.metadata.native;
|
|
3391
|
+
let backend = "typescript";
|
|
3392
|
+
let backendDetail = "TypeScript analyzers";
|
|
3393
|
+
if (native?.fallback) {
|
|
3394
|
+
backendDetail = "TypeScript fallback";
|
|
3395
|
+
} else if (native?.engine === "all") {
|
|
3396
|
+
backend = "rust + cpp";
|
|
3397
|
+
backendDetail = "Rust and C++ workers";
|
|
3398
|
+
} else if (native?.engine === "rust") {
|
|
3399
|
+
backend = "rust";
|
|
3400
|
+
backendDetail = "Rust worker";
|
|
3401
|
+
} else if (native?.engine === "cpp") {
|
|
3402
|
+
backend = "cpp";
|
|
3403
|
+
backendDetail = "C++ worker";
|
|
3404
|
+
}
|
|
3405
|
+
const p = report.project;
|
|
3406
|
+
const lines = [
|
|
3407
|
+
"",
|
|
3408
|
+
` ${paint(`flamer.js v${CLI_VERSION}`, ANSI.bold + ANSI.cyan, enabled)} ${paint(p.name, ANSI.bold, enabled)}`,
|
|
3409
|
+
` ${paint("cli", ANSI.dim, enabled)} : typescript`,
|
|
3410
|
+
` ${paint("backend", ANSI.dim, enabled)} : ${backend}`,
|
|
3411
|
+
` ${paint("details", ANSI.dim, enabled)} : ${backendDetail}`,
|
|
3412
|
+
` ${paint("path", ANSI.dim, enabled)} : ${p.root || p.name}`,
|
|
3413
|
+
` ${paint("files", ANSI.dim, enabled)} : ${(p.totalFiles || 0).toLocaleString()}`,
|
|
3414
|
+
` ${paint("lines", ANSI.dim, enabled)} : ${(p.totalLines || 0).toLocaleString()}`,
|
|
3415
|
+
` ${paint("duration", ANSI.dim, enabled)} : ${report.metadata.durationSeconds.toFixed(2)}s`
|
|
3416
|
+
];
|
|
3417
|
+
if (native?.fallback) {
|
|
3418
|
+
lines.push(
|
|
3419
|
+
` ${paint("fallback", ANSI.dim, enabled)} : ${[...new Set(native.fallback)].join("; ")}`
|
|
3420
|
+
);
|
|
3421
|
+
}
|
|
3422
|
+
process.stdout.write(lines.join("\n") + "\n");
|
|
3423
|
+
}
|
|
3424
|
+
function printSummary(report, forceColor, verbose = false) {
|
|
3367
3425
|
const enabled = colorEnabled(forceColor);
|
|
3368
3426
|
const p = report.project;
|
|
3369
3427
|
const out = [];
|
|
3370
3428
|
const width = 62;
|
|
3371
3429
|
const duration = report.metadata.durationSeconds;
|
|
3372
3430
|
out.push("");
|
|
3431
|
+
if (verbose) printVerbose(report, forceColor);
|
|
3373
3432
|
out.push(
|
|
3374
3433
|
` ${paint("FLAMER", ANSI.bold + ANSI.cyan, enabled)} ${paint(p.name, ANSI.bold, enabled)}`
|
|
3375
3434
|
);
|
|
@@ -3442,7 +3501,7 @@ async function main() {
|
|
|
3442
3501
|
}
|
|
3443
3502
|
}
|
|
3444
3503
|
if (opts.format === "summary") {
|
|
3445
|
-
if (!opts.quiet) printSummary(report, opts.color);
|
|
3504
|
+
if (!opts.quiet) printSummary(report, opts.color, opts.verbose);
|
|
3446
3505
|
} else {
|
|
3447
3506
|
process.stdout.write(json + "\n");
|
|
3448
3507
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flamerjs",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"description": "Language-agnostic code health auditor that walks a repository once and reports what is wrong with it",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
"docs/ARCHITECTURE.md"
|
|
28
28
|
],
|
|
29
29
|
"optionalDependencies": {
|
|
30
|
-
"@dummy3ye/flamer-native-darwin-arm64": "1.1.
|
|
31
|
-
"@dummy3ye/flamer-native-darwin-x64": "1.1.
|
|
32
|
-
"@dummy3ye/flamer-native-linux-arm64": "1.1.
|
|
33
|
-
"@dummy3ye/flamer-native-linux-x64": "1.1.
|
|
34
|
-
"@dummy3ye/flamer-native-win32-arm64": "1.1.
|
|
35
|
-
"@dummy3ye/flamer-native-win32-x64": "1.1.
|
|
30
|
+
"@dummy3ye/flamer-native-darwin-arm64": "1.1.3",
|
|
31
|
+
"@dummy3ye/flamer-native-darwin-x64": "1.1.3",
|
|
32
|
+
"@dummy3ye/flamer-native-linux-arm64": "1.1.3",
|
|
33
|
+
"@dummy3ye/flamer-native-linux-x64": "1.1.3",
|
|
34
|
+
"@dummy3ye/flamer-native-win32-arm64": "1.1.3",
|
|
35
|
+
"@dummy3ye/flamer-native-win32-x64": "1.1.3"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
38
|
"build": "tsup",
|