@nexus_js/cli 0.6.0

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/dist/audit.js ADDED
@@ -0,0 +1,383 @@
1
+ /**
2
+ * nexus audit — Security & Best Practices Auditor.
3
+ *
4
+ * Unlike `npm audit` (which only checks dependency CVEs), Nexus audit
5
+ * analyzes your application code and architecture for security issues:
6
+ *
7
+ * 1. Secret Leaks — env vars / keys referenced in client code
8
+ * 2. Missing CSRF — Server Actions without csrf protection
9
+ * 3. No Auth Guard — Routes that likely need authentication but don't have it
10
+ * 4. XSS Vectors — `innerHTML`, `dangerouslySetInnerHTML` patterns in islands
11
+ * 5. Security Headers — Missing CSP, HSTS, X-Frame-Options in nexus.config.ts
12
+ * 6. Forms Without Validation — Action handlers with no schema
13
+ * 7. Hardcoded Secrets — API keys embedded in source files
14
+ * 8. Open Redirects — Unvalidated redirect targets
15
+ * 9. Rate Limit Coverage — Public actions without rate limiting
16
+ * 10. Dependency Audit — Wraps npm/pnpm audit for CVE summary
17
+ */
18
+ import { readdir, readFile } from 'node:fs/promises';
19
+ import { join, relative, extname } from 'node:path';
20
+ import { execSync } from 'node:child_process';
21
+ // ── ANSI palette ──────────────────────────────────────────────────────────────
22
+ const c = {
23
+ reset: '\x1b[0m', bold: '\x1b[1m', dim: '\x1b[2m',
24
+ red: '\x1b[31m', green: '\x1b[32m', yellow: '\x1b[33m',
25
+ blue: '\x1b[34m', mag: '\x1b[35m', cyan: '\x1b[36m',
26
+ gray: '\x1b[90m', white: '\x1b[97m',
27
+ };
28
+ const sym = {
29
+ error: `${c.red}✖${c.reset}`,
30
+ warn: `${c.yellow}⚠${c.reset}`,
31
+ ok: `${c.green}✔${c.reset}`,
32
+ info: `${c.cyan}ℹ${c.reset}`,
33
+ shield: `${c.mag}🛡${c.reset}`,
34
+ };
35
+ const SEVERITY_ORDER = {
36
+ critical: 0, high: 1, medium: 2, low: 3, info: 4,
37
+ };
38
+ const SEVERITY_COLOR = {
39
+ critical: c.red,
40
+ high: c.red,
41
+ medium: c.yellow,
42
+ low: c.cyan,
43
+ info: c.gray,
44
+ };
45
+ const RULES = [
46
+ // ── Secret Leaks ────────────────────────────────────────────────────────────
47
+ {
48
+ id: 'secret-env-pattern', category: 'Secret Leak', severity: 'critical',
49
+ title: 'Hardcoded secret pattern detected',
50
+ description: 'A variable matching a secret pattern (*_KEY, *_SECRET, *_PASSWORD, *_TOKEN) was found outside a server block.',
51
+ fix: 'Move secrets to the server frontmatter block (---) and never reference them in <script> islands.',
52
+ pattern: /(?:api_?key|secret_?key|private_?key|password|db_?pass|jwt_?secret|auth_?token)\s*[=:]\s*['"`][^'"`\s]{8,}/i,
53
+ },
54
+ {
55
+ id: 'process-env-client', category: 'Secret Leak', severity: 'critical',
56
+ title: 'process.env used in client context',
57
+ description: '`process.env` variables are undefined in the browser. If this is a secret, it will be exposed in the JS bundle.',
58
+ fix: 'Use process.env only inside the server frontmatter (---). For public env vars, use import.meta.env.PUBLIC_*.',
59
+ pattern: /process\.env\.\w+/,
60
+ clientOnly: true,
61
+ extensions: ['.nx', '.ts', '.js'],
62
+ },
63
+ {
64
+ id: 'hardcoded-connection-string', category: 'Secret Leak', severity: 'critical',
65
+ title: 'Hardcoded database connection string',
66
+ description: 'A database URL with credentials was found in source code.',
67
+ fix: 'Store connection strings in environment variables and load them only in server code.',
68
+ pattern: /(['"`])(postgresql|mysql|mongodb|redis|sqlite):\/\/[^:]+:[^@]+@[^'"`\s]+\1/i,
69
+ },
70
+ // ── XSS Vectors ─────────────────────────────────────────────────────────────
71
+ {
72
+ id: 'unsafe-innerhtml', category: 'XSS', severity: 'high',
73
+ title: 'Unsafe innerHTML assignment',
74
+ description: '`innerHTML` allows arbitrary HTML injection. If the value comes from user input or an API, this is an XSS vulnerability.',
75
+ fix: 'Use `textContent` for plain text. For trusted HTML, use `@nexus_js/ui` components. For user HTML, use DOMPurify.sanitize().',
76
+ pattern: /\.innerHTML\s*=/,
77
+ extensions: ['.nx', '.ts', '.js'],
78
+ },
79
+ {
80
+ id: 'unsafe-insertadjacenthtml', category: 'XSS', severity: 'high',
81
+ title: 'Unsafe insertAdjacentHTML call',
82
+ description: '`insertAdjacentHTML` is equivalent to innerHTML in terms of XSS risk.',
83
+ fix: 'Use DOM methods (createElement, appendChild) or a safe template literal library.',
84
+ pattern: /\.insertAdjacentHTML\s*\(/,
85
+ extensions: ['.nx', '.ts', '.js'],
86
+ },
87
+ {
88
+ id: 'eval-usage', category: 'XSS', severity: 'critical',
89
+ title: 'eval() usage detected',
90
+ description: '`eval()` executes arbitrary code and is a severe XSS and code injection risk.',
91
+ fix: 'Remove eval(). Use JSON.parse for data, or structured function calls.',
92
+ pattern: /\beval\s*\(/,
93
+ extensions: ['.nx', '.ts', '.js'],
94
+ },
95
+ // ── Missing Security ─────────────────────────────────────────────────────────
96
+ {
97
+ id: 'console-log-sensitive', category: 'Info Disclosure', severity: 'medium',
98
+ title: 'console.log may expose sensitive data',
99
+ description: 'console.log statements found in server-side code may expose user data or secrets in production logs.',
100
+ fix: 'Use the Nexus logger (nexusLogger.info) which respects the IS_DEV flag. Remove or guard console.log in production.',
101
+ pattern: /console\.(log|info|debug)\s*\([^)]*(?:password|secret|token|key|auth)/i,
102
+ extensions: ['.ts', '.js', '.mjs'],
103
+ },
104
+ // ── Open Redirects ───────────────────────────────────────────────────────────
105
+ {
106
+ id: 'open-redirect', category: 'Open Redirect', severity: 'high',
107
+ title: 'Potential open redirect via user-controlled URL',
108
+ description: 'Redirecting to a URL from query parameters or form input without validation can be exploited for phishing.',
109
+ fix: 'Validate redirect URLs against an allowlist. Use `new URL(input, origin)` and check that origin matches.',
110
+ pattern: /redirect\s*\(\s*(?:req|request|url|params|query|searchParams)\./,
111
+ extensions: ['.nx', '.ts', '.js'],
112
+ },
113
+ // ── Missing CSP ──────────────────────────────────────────────────────────────
114
+ {
115
+ id: 'missing-csp', category: 'Security Headers', severity: 'medium',
116
+ title: 'Content-Security-Policy not configured',
117
+ description: 'Without CSP, browsers allow any script to execute, making XSS attacks much more dangerous.',
118
+ fix: 'Add security headers in nexus.config.ts: headers: { "Content-Security-Policy": "default-src \'self\'" }',
119
+ },
120
+ {
121
+ id: 'missing-hsts', category: 'Security Headers', severity: 'medium',
122
+ title: 'HSTS (Strict-Transport-Security) not configured',
123
+ description: 'Without HSTS, users can be downgraded to HTTP on subsequent visits.',
124
+ fix: 'Add to nexus.config.ts: headers: { "Strict-Transport-Security": "max-age=31536000; includeSubDomains" }',
125
+ },
126
+ {
127
+ id: 'missing-x-frame', category: 'Security Headers', severity: 'low',
128
+ title: 'X-Frame-Options not configured',
129
+ description: 'Without X-Frame-Options, your site can be embedded in iframes (clickjacking risk).',
130
+ fix: 'Add to nexus.config.ts: headers: { "X-Frame-Options": "DENY" }',
131
+ },
132
+ ];
133
+ // ── File scanner ──────────────────────────────────────────────────────────────
134
+ async function collectFiles(dir, exts = ['.nx', '.ts', '.js', '.mjs']) {
135
+ const results = [];
136
+ let entries;
137
+ try {
138
+ entries = await readdir(dir, { withFileTypes: true });
139
+ }
140
+ catch {
141
+ return results;
142
+ }
143
+ for (const e of entries) {
144
+ if (e.name.startsWith('.') || e.name === 'node_modules' || e.name === 'dist')
145
+ continue;
146
+ const full = join(dir, e.name);
147
+ if (e.isDirectory()) {
148
+ results.push(...await collectFiles(full, exts));
149
+ }
150
+ else if (exts.includes(extname(e.name))) {
151
+ results.push(full);
152
+ }
153
+ }
154
+ return results;
155
+ }
156
+ async function scanFile(filepath, root, rules) {
157
+ const findings = [];
158
+ let source;
159
+ try {
160
+ source = await readFile(filepath, 'utf-8');
161
+ }
162
+ catch {
163
+ return findings;
164
+ }
165
+ const relPath = relative(root, filepath);
166
+ const lines = source.split('\n');
167
+ const ext = extname(filepath);
168
+ // For .nx files, split into server and client blocks
169
+ let serverLines = [];
170
+ let isServer = false;
171
+ let serverDone = false;
172
+ for (let i = 0; i < lines.length; i++) {
173
+ if (lines[i]?.trim() === '---') {
174
+ if (!serverDone) {
175
+ isServer = !isServer;
176
+ if (!isServer)
177
+ serverDone = true;
178
+ }
179
+ continue;
180
+ }
181
+ if (isServer)
182
+ serverLines.push(i);
183
+ }
184
+ for (const rule of rules) {
185
+ if (!rule.pattern)
186
+ continue;
187
+ if (rule.extensions && !rule.extensions.includes(ext))
188
+ continue;
189
+ for (let i = 0; i < lines.length; i++) {
190
+ const line = lines[i] ?? '';
191
+ // Skip server block for clientOnly rules
192
+ if (rule.clientOnly && serverLines.includes(i))
193
+ continue;
194
+ if (rule.pattern.test(line)) {
195
+ findings.push({
196
+ severity: rule.severity,
197
+ category: rule.category,
198
+ title: rule.title,
199
+ description: rule.description,
200
+ file: relPath,
201
+ line: i + 1,
202
+ fix: rule.fix,
203
+ });
204
+ // One finding per rule per file max
205
+ break;
206
+ }
207
+ }
208
+ }
209
+ return findings;
210
+ }
211
+ // ── Config scanner ────────────────────────────────────────────────────────────
212
+ async function auditConfig(root) {
213
+ const findings = [];
214
+ const configPath = join(root, 'nexus.config.ts');
215
+ let configSource = '';
216
+ try {
217
+ configSource = await readFile(configPath, 'utf-8');
218
+ }
219
+ catch { /* no config */ }
220
+ const SECURITY_HEADERS = ['Content-Security-Policy', 'Strict-Transport-Security', 'X-Frame-Options'];
221
+ for (const header of SECURITY_HEADERS) {
222
+ if (!configSource.includes(header)) {
223
+ const rule = RULES.find((r) => r.id === `missing-${header.toLowerCase().replace(/[^a-z]/g, '-').replace(/-+/g, '-')}`);
224
+ if (rule) {
225
+ findings.push({
226
+ severity: rule.severity,
227
+ category: rule.category,
228
+ title: rule.title,
229
+ description: rule.description,
230
+ file: 'nexus.config.ts',
231
+ fix: rule.fix,
232
+ });
233
+ }
234
+ }
235
+ }
236
+ // Check for hardened mode
237
+ if (!configSource.includes('hardened:') && !configSource.includes('"hardened"')) {
238
+ findings.push({
239
+ severity: 'info',
240
+ category: 'Hardened Mode',
241
+ title: 'Consider enabling Nexus Hardened Mode',
242
+ description: 'Hardened mode enforces all security headers, CSP nonces, CSRF tokens, and rate limiting globally.',
243
+ file: 'nexus.config.ts',
244
+ fix: 'Add hardened: true to defineNexusConfig() or set individual security options.',
245
+ });
246
+ }
247
+ return findings;
248
+ }
249
+ // ── Dependency audit ──────────────────────────────────────────────────────────
250
+ function runDependencyAudit(root) {
251
+ const findings = [];
252
+ try {
253
+ const output = execSync('npm audit --json', { cwd: root, stdio: 'pipe' }).toString();
254
+ const report = JSON.parse(output);
255
+ const vulns = report.metadata?.vulnerabilities ?? {};
256
+ const critical = vulns['critical'] ?? 0;
257
+ const high = vulns['high'] ?? 0;
258
+ const moderate = vulns['moderate'] ?? 0;
259
+ if (critical > 0) {
260
+ findings.push({
261
+ severity: 'critical',
262
+ category: 'Dependencies',
263
+ title: `${critical} critical vulnerability in dependencies`,
264
+ description: 'Critical CVEs found in project dependencies.',
265
+ fix: 'Run `npm audit fix` or `pnpm audit --fix` to update vulnerable packages.',
266
+ });
267
+ }
268
+ if (high > 0) {
269
+ findings.push({
270
+ severity: 'high',
271
+ category: 'Dependencies',
272
+ title: `${high} high severity vulnerability in dependencies`,
273
+ description: 'High severity CVEs found in project dependencies.',
274
+ fix: 'Run `npm audit fix` to update vulnerable packages.',
275
+ });
276
+ }
277
+ if (moderate > 0) {
278
+ findings.push({
279
+ severity: 'medium',
280
+ category: 'Dependencies',
281
+ title: `${moderate} moderate severity vulnerability in dependencies`,
282
+ description: 'Moderate CVEs found in project dependencies.',
283
+ fix: 'Review `npm audit` output and update where possible.',
284
+ });
285
+ }
286
+ if (critical === 0 && high === 0 && moderate === 0) {
287
+ findings.push({
288
+ severity: 'info',
289
+ category: 'Dependencies',
290
+ title: 'No known vulnerabilities in dependencies',
291
+ description: 'npm audit returned no critical, high, or moderate vulnerabilities.',
292
+ });
293
+ }
294
+ }
295
+ catch {
296
+ findings.push({
297
+ severity: 'info',
298
+ category: 'Dependencies',
299
+ title: 'Dependency audit unavailable',
300
+ description: 'Could not run npm audit. Ensure you are in a project with package.json.',
301
+ });
302
+ }
303
+ return findings;
304
+ }
305
+ // ── Report formatter ──────────────────────────────────────────────────────────
306
+ function formatFindings(findings, root) {
307
+ const sorted = [...findings].sort((a, b) => SEVERITY_ORDER[a.severity] - SEVERITY_ORDER[b.severity]);
308
+ const byCategory = new Map();
309
+ for (const f of sorted) {
310
+ const list = byCategory.get(f.category) ?? [];
311
+ list.push(f);
312
+ byCategory.set(f.category, list);
313
+ }
314
+ const counts = {
315
+ critical: 0, high: 0, medium: 0, low: 0, info: 0,
316
+ };
317
+ for (const f of findings)
318
+ counts[f.severity]++;
319
+ console.log();
320
+ console.log(` ${sym.shield} ${c.bold}${c.white}Nexus Security Audit${c.reset} ${c.dim}${root}${c.reset}`);
321
+ console.log();
322
+ for (const [category, catFindings] of byCategory) {
323
+ console.log(` ${c.bold}${category}${c.reset}`);
324
+ for (const f of catFindings) {
325
+ const col = SEVERITY_COLOR[f.severity];
326
+ const tag = `${col}${f.severity.toUpperCase().padEnd(8)}${c.reset}`;
327
+ const loc = f.file ? `${c.dim}${f.file}${f.line ? `:${f.line}` : ''}${c.reset}` : '';
328
+ console.log(` ${tag} ${f.title} ${loc}`);
329
+ if (f.fix) {
330
+ console.log(` ${c.gray}→ ${f.fix}${c.reset}`);
331
+ }
332
+ }
333
+ console.log();
334
+ }
335
+ // Summary bar
336
+ const total = findings.length;
337
+ const hasIssues = counts.critical + counts.high + counts.medium > 0;
338
+ console.log(` ${c.dim}${'─'.repeat(60)}${c.reset}`);
339
+ console.log(` ${hasIssues ? sym.error : sym.ok} ` +
340
+ `${c.red}${counts.critical} critical${c.reset} ` +
341
+ `${c.red}${counts.high} high${c.reset} ` +
342
+ `${c.yellow}${counts.medium} medium${c.reset} ` +
343
+ `${c.cyan}${counts.low} low${c.reset} ` +
344
+ `${c.gray}${counts.info} info${c.reset} ` +
345
+ `${c.dim}(${total} total)${c.reset}`);
346
+ if (!hasIssues) {
347
+ console.log(`\n ${sym.ok} ${c.green}${c.bold}Audit passed — no critical/high/medium issues found.${c.reset}`);
348
+ }
349
+ else {
350
+ console.log(`\n ${sym.error} ${c.red}${c.bold}Audit failed — fix critical and high severity issues before deploying.${c.reset}`);
351
+ }
352
+ console.log();
353
+ }
354
+ export async function runAudit(opts) {
355
+ const { root } = opts;
356
+ console.log(`\n ${c.cyan}◆${c.reset} ${c.dim}Scanning for security issues...${c.reset}`);
357
+ const allFindings = [];
358
+ // 1. Scan source files
359
+ const files = await collectFiles(root);
360
+ for (const file of files) {
361
+ const findings = await scanFile(file, root, RULES.filter((r) => !!r.pattern));
362
+ allFindings.push(...findings);
363
+ }
364
+ // 2. Audit nexus.config.ts
365
+ const configFindings = await auditConfig(root);
366
+ allFindings.push(...configFindings);
367
+ // 3. Dependency audit
368
+ const depFindings = runDependencyAudit(root);
369
+ allFindings.push(...depFindings);
370
+ if (opts.json) {
371
+ console.log(JSON.stringify(allFindings, null, 2));
372
+ return;
373
+ }
374
+ formatFindings(allFindings, root);
375
+ // CI mode: exit with code 1 if critical or high issues found
376
+ if (opts.ci) {
377
+ const hasCritical = allFindings.some((f) => f.severity === 'critical' || f.severity === 'high');
378
+ if (hasCritical) {
379
+ process.exitCode = 1;
380
+ }
381
+ }
382
+ }
383
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
package/dist/bin.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Nexus CLI — nexus dev | nexus build | nexus start | nexus check | nexus studio | nexus audit
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;GAEG"}