flamerjs 0.0.0-stage → 0.1.6
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/LICENSE +21 -0
- package/README.md +204 -2
- package/dist/cli.js +3308 -0
- package/package.json +49 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Sagittarius
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,205 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Flamer
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**A fast sanity checker for AI-assisted codebases.**
|
|
4
|
+
|
|
5
|
+
[](https://github.com/dummy3ye/flamer/actions/workflows/ci.yml)
|
|
6
|
+
[](https://codecov.io/gh/dummy3ye/flamer)
|
|
7
|
+
[](https://www.npmjs.com/package/flamerjs)<br>
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
[](https://github.com/dummy3ye/flamer/commits/master)
|
|
10
|
+
[](https://github.com/dummy3ye/flamer/stargazers)
|
|
11
|
+
[](https://github.com/dummy3ye/flamer)
|
|
12
|
+
|
|
13
|
+
Flamer scans a repository for the common mistakes that appear when software is
|
|
14
|
+
assembled quickly with AI or other “vibe coding” workflows: unfinished
|
|
15
|
+
implementation, broken project wiring, missing tests, inconsistent tooling,
|
|
16
|
+
repository hygiene problems, and maintainability traps.
|
|
17
|
+
|
|
18
|
+
It is designed to answer:
|
|
19
|
+
|
|
20
|
+
> **What is obviously unfinished, disconnected, inconsistent, or likely to
|
|
21
|
+
> break in this repository?**
|
|
22
|
+
|
|
23
|
+
Flamer is **not a deep security scanner**. It includes a small credential check
|
|
24
|
+
so accidentally committed keys are not ignored; injection, authentication,
|
|
25
|
+
cryptography, infrastructure security, and supply-chain analysis belong in a
|
|
26
|
+
dedicated security tool.
|
|
27
|
+
|
|
28
|
+
## Why Flamer?
|
|
29
|
+
|
|
30
|
+
AI-generated code can look complete while still containing:
|
|
31
|
+
|
|
32
|
+
- placeholder implementations and empty error handlers;
|
|
33
|
+
- routes, scripts, or configuration that do not connect;
|
|
34
|
+
- tests that exist but provide little confidence;
|
|
35
|
+
- duplicate, generated, oversized, or abandoned files;
|
|
36
|
+
- dependency and runtime configuration that differs between environments.
|
|
37
|
+
|
|
38
|
+
Flamer turns these signals into a prioritized, machine-readable report that
|
|
39
|
+
can be used locally, in pull requests, or in CI.
|
|
40
|
+
|
|
41
|
+
## Features
|
|
42
|
+
|
|
43
|
+
- **Unfinished implementation:** explicit “not implemented” paths and empty
|
|
44
|
+
error handlers.
|
|
45
|
+
- **Project health:** missing README, license, CI, environment templates,
|
|
46
|
+
editor configuration, and ecosystem scaffolding.
|
|
47
|
+
- **Testing signals:** test presence and source-to-test balance by language.
|
|
48
|
+
- **Dependency hygiene:** lockfiles, version constraints, and manifest checks.
|
|
49
|
+
- **Repository hygiene:** conflict markers, work-item markers, missing
|
|
50
|
+
newlines, mixed line endings, generated/vendor bloat, and deep paths.
|
|
51
|
+
- **Language-aware checks:** JavaScript/TypeScript, Python, Rust, Go, C/C++,
|
|
52
|
+
C#, Zig, SQL, notebooks, and additional language profiles.
|
|
53
|
+
- **Stable JSON output:** suitable for CI annotations and other automation.
|
|
54
|
+
- **Single-pass scanning:** files are walked once and content is read once.
|
|
55
|
+
|
|
56
|
+
## Requirements
|
|
57
|
+
|
|
58
|
+
- Node.js 18 or newer
|
|
59
|
+
- npm
|
|
60
|
+
|
|
61
|
+
## Quick start
|
|
62
|
+
|
|
63
|
+
Run the published CLI without installing it permanently:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npx flamerjs .
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
For a project-local installation, add Flamer as a development dependency:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npm install --save-dev flamerjs
|
|
73
|
+
npx flamerjs .
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Or install it globally if you use it across repositories:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npm install --global flamerjs
|
|
80
|
+
flamerjs .
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
The default output is a colorized terminal summary when run interactively.
|
|
84
|
+
Use `--format json` for automation and machine-readable output.
|
|
85
|
+
|
|
86
|
+
For a human-readable report:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
flamerjs . --format summary
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Analyze another repository:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
flamerjs /path/to/repository --format summary
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## CLI
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
flamerjs [path] [options]
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
| Option | Description |
|
|
105
|
+
| --------------------------- | ----------------------------------------------------------------------------- |
|
|
106
|
+
| `--package, --scope <name>` | Analyze only a named sub-project |
|
|
107
|
+
| `--path <dir>` | Set the repository root; defaults to the current directory |
|
|
108
|
+
| `--format <json\|summary>` | Select JSON or human-readable output; summary is the default |
|
|
109
|
+
| `--out <file>` | Also write the JSON report to a file |
|
|
110
|
+
| `--fail-on <SEVERITY>` | Exit with status 1 at or above `CRITICAL`, `HIGH`, `MEDIUM`, `LOW`, or `INFO` |
|
|
111
|
+
| `--max-files <n>` | Limit the number of files scanned |
|
|
112
|
+
| `--commit-limit <n>` | Limit commits inspected by Git checks |
|
|
113
|
+
| `--no-git` | Skip Git analysis |
|
|
114
|
+
| `--no-lockfile-warning` | Suppress the missing-lockfile suggestion |
|
|
115
|
+
| `--ignore-dir <name>` | Ignore an additional directory name; repeatable |
|
|
116
|
+
| `--quiet` | Suppress the human summary |
|
|
117
|
+
| `--color` | Force ANSI colors |
|
|
118
|
+
| `--no-color` | Disable ANSI colors |
|
|
119
|
+
| `--list-languages` | List recognized language profiles |
|
|
120
|
+
| `--help` | Show command help |
|
|
121
|
+
|
|
122
|
+
Exit status `0` means the scan completed; findings may still exist. Status `1`
|
|
123
|
+
means `--fail-on` was reached, and status `2` indicates invalid usage or a
|
|
124
|
+
missing path.
|
|
125
|
+
|
|
126
|
+
## Example report
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"project": {
|
|
131
|
+
"name": "example-app",
|
|
132
|
+
"kind": ["node"],
|
|
133
|
+
"layout": "single"
|
|
134
|
+
},
|
|
135
|
+
"findings": [
|
|
136
|
+
{
|
|
137
|
+
"category": "unfinished",
|
|
138
|
+
"severity": "HIGH",
|
|
139
|
+
"title": "2 source file(s) contain unfinished implementation",
|
|
140
|
+
"detail": "Not-implemented errors and empty error handlers were detected.",
|
|
141
|
+
"files": ["src/api.ts", "src/jobs.ts"],
|
|
142
|
+
"count": 2
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Findings are sorted by severity. Credential values are always redacted.
|
|
149
|
+
|
|
150
|
+
## Development
|
|
151
|
+
|
|
152
|
+
Clone the repository when you want to contribute or work on the scanner itself:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
npm ci
|
|
156
|
+
npm run dev # watch and rebuild dist/cli.js
|
|
157
|
+
npm test # run the test suite
|
|
158
|
+
npm run lint
|
|
159
|
+
npm run format:check
|
|
160
|
+
npm run build
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
To run the local build directly:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
node dist/cli.js .
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
The project uses Node.js and npm as its supported development toolchain.
|
|
170
|
+
`package-lock.json` is the canonical dependency lockfile.
|
|
171
|
+
The current test suite contains **175 tests**.
|
|
172
|
+
|
|
173
|
+
## How it works
|
|
174
|
+
|
|
175
|
+
1. Detect the repository layout, languages, and ecosystems.
|
|
176
|
+
2. Walk the tree once and collect file metadata and content-derived signals.
|
|
177
|
+
3. Run isolated analyzers against the collected records.
|
|
178
|
+
4. Sort findings and emit JSON or a concise summary.
|
|
179
|
+
|
|
180
|
+
Analyzers are intentionally factual and conservative. A finding should identify
|
|
181
|
+
something actionable rather than merely express a preference.
|
|
182
|
+
|
|
183
|
+
## Scope and non-goals
|
|
184
|
+
|
|
185
|
+
Flamer focuses on **codebase completeness and engineering health**, not
|
|
186
|
+
penetration testing. It does not attempt to prove that an application is
|
|
187
|
+
secure, correct, performant, or production-ready. Static signals always need
|
|
188
|
+
human review, especially when a project uses deliberate stubs, generated code,
|
|
189
|
+
or unusual architecture.
|
|
190
|
+
|
|
191
|
+
## Contributing
|
|
192
|
+
|
|
193
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the development workflow and
|
|
194
|
+
guidelines for adding analyzers, language profiles, and tests.
|
|
195
|
+
|
|
196
|
+
When adding a check:
|
|
197
|
+
|
|
198
|
+
1. Prefer a high-confidence signal with a concrete fix.
|
|
199
|
+
2. Add a focused regression test.
|
|
200
|
+
3. Keep false positives low and explain unavoidable uncertainty.
|
|
201
|
+
4. Update the README when user-visible behavior changes.
|
|
202
|
+
|
|
203
|
+
## License
|
|
204
|
+
|
|
205
|
+
This project is licensed under the [MIT License](LICENSE).
|