@gitguard/cli 1.1.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.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +356 -0
  3. package/dist/commands/login.d.ts +2 -0
  4. package/dist/commands/login.d.ts.map +1 -0
  5. package/dist/commands/login.js +135 -0
  6. package/dist/commands/login.js.map +1 -0
  7. package/dist/commands/logout.d.ts +2 -0
  8. package/dist/commands/logout.d.ts.map +1 -0
  9. package/dist/commands/logout.js +26 -0
  10. package/dist/commands/logout.js.map +1 -0
  11. package/dist/commands/scan.d.ts +14 -0
  12. package/dist/commands/scan.d.ts.map +1 -0
  13. package/dist/commands/scan.js +85 -0
  14. package/dist/commands/scan.js.map +1 -0
  15. package/dist/commands/whoami.d.ts +2 -0
  16. package/dist/commands/whoami.d.ts.map +1 -0
  17. package/dist/commands/whoami.js +46 -0
  18. package/dist/commands/whoami.js.map +1 -0
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +40 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/lib/api-client.d.ts +21 -0
  24. package/dist/lib/api-client.d.ts.map +1 -0
  25. package/dist/lib/api-client.js +54 -0
  26. package/dist/lib/api-client.js.map +1 -0
  27. package/dist/lib/config.d.ts +19 -0
  28. package/dist/lib/config.d.ts.map +1 -0
  29. package/dist/lib/config.js +93 -0
  30. package/dist/lib/config.js.map +1 -0
  31. package/dist/lib/file-scanner.d.ts +6 -0
  32. package/dist/lib/file-scanner.d.ts.map +1 -0
  33. package/dist/lib/file-scanner.js +131 -0
  34. package/dist/lib/file-scanner.js.map +1 -0
  35. package/dist/lib/repo-detector.d.ts +6 -0
  36. package/dist/lib/repo-detector.d.ts.map +1 -0
  37. package/dist/lib/repo-detector.js +116 -0
  38. package/dist/lib/repo-detector.js.map +1 -0
  39. package/dist/lib/reporter.d.ts +18 -0
  40. package/dist/lib/reporter.d.ts.map +1 -0
  41. package/dist/lib/reporter.js +178 -0
  42. package/dist/lib/reporter.js.map +1 -0
  43. package/dist/types/index.d.ts +70 -0
  44. package/dist/types/index.d.ts.map +1 -0
  45. package/dist/types/index.js +3 -0
  46. package/dist/types/index.js.map +1 -0
  47. package/package.json +52 -0
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Reporter = void 0;
4
+ const COLORS = {
5
+ reset: '\x1b[0m',
6
+ bright: '\x1b[1m',
7
+ dim: '\x1b[2m',
8
+ red: '\x1b[31m',
9
+ green: '\x1b[32m',
10
+ yellow: '\x1b[33m',
11
+ blue: '\x1b[34m',
12
+ cyan: '\x1b[36m',
13
+ };
14
+ class Reporter {
15
+ useColors;
16
+ config;
17
+ constructor(config, useColors = true) {
18
+ this.config = config;
19
+ this.useColors = useColors && process.stdout.isTTY;
20
+ }
21
+ color(text, color) {
22
+ if (!this.useColors) {
23
+ return text;
24
+ }
25
+ return `${COLORS[color]}${text}${COLORS.reset}`;
26
+ }
27
+ success(message) {
28
+ console.log(this.color('✓ ', 'green') + message);
29
+ }
30
+ error(message) {
31
+ console.error(this.color('✗ ', 'red') + message);
32
+ }
33
+ warning(message) {
34
+ console.warn(this.color('⚠ ', 'yellow') + message);
35
+ }
36
+ info(message) {
37
+ console.log(this.color('ℹ ', 'blue') + message);
38
+ }
39
+ reportScan(result) {
40
+ console.log(this.color('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━', 'dim'));
41
+ console.log(this.color(' GitGuard Security Scan Results', 'bright'));
42
+ console.log(this.color('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n', 'dim'));
43
+ // Show scan metadata
44
+ console.log(this.color(`Files scanned: ${result.filesScanned}`, 'dim'));
45
+ console.log(this.color(`Duration: ${(result.duration / 1000).toFixed(2)}s`, 'dim'));
46
+ // Show enhanced features status
47
+ const hasAI = result.vulnerabilities.some(v => v.aiRemediation);
48
+ const preferences = this.config.getPreferences();
49
+ if (hasAI) {
50
+ console.log(this.color('AI-Enhanced: Yes', 'cyan'));
51
+ }
52
+ if (preferences.dependencyScanEnabled) {
53
+ console.log(this.color('Dependency Scan: Enabled', 'cyan'));
54
+ }
55
+ if (preferences.secretScanEnabled) {
56
+ console.log(this.color('Secret Scan: Enabled', 'cyan'));
57
+ }
58
+ console.log();
59
+ if (result.vulnerabilities.length === 0) {
60
+ this.success('No vulnerabilities found');
61
+ console.log(this.color('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n', 'dim'));
62
+ return;
63
+ }
64
+ const { summary } = result;
65
+ console.log(this.color(`Found ${result.vulnerabilities.length} issue(s):`, 'bright'));
66
+ if (summary.critical > 0) {
67
+ console.log(this.color(` CRITICAL: ${summary.critical}`, 'red'));
68
+ }
69
+ if (summary.high > 0) {
70
+ console.log(this.color(` HIGH: ${summary.high}`, 'red'));
71
+ }
72
+ if (summary.medium > 0) {
73
+ console.log(this.color(` MEDIUM: ${summary.medium}`, 'yellow'));
74
+ }
75
+ if (summary.low > 0) {
76
+ console.log(this.color(` LOW: ${summary.low}`, 'blue'));
77
+ }
78
+ if (summary.info > 0) {
79
+ console.log(this.color(` INFO: ${summary.info}`, 'cyan'));
80
+ }
81
+ console.log();
82
+ const sorted = this.sortBySeverity(result.vulnerabilities);
83
+ for (const vuln of sorted.slice(0, 10)) {
84
+ this.reportVulnerability(vuln);
85
+ }
86
+ if (result.vulnerabilities.length > 10) {
87
+ console.log(this.color(`\n... and ${result.vulnerabilities.length - 10} more issue(s)\n`, 'dim'));
88
+ }
89
+ console.log(this.color('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━', 'dim'));
90
+ console.log(this.color(`View full results: ${this.config.get().apiUrl.replace('/api/v1', '')}/dashboard/scans?scan=${result.scanId}`, 'cyan'));
91
+ console.log(this.color('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n', 'dim'));
92
+ }
93
+ reportVulnerability(vuln) {
94
+ const severityColor = this.getSeverityColor(vuln.severity);
95
+ const severityLabel = vuln.severity.toUpperCase().padEnd(8);
96
+ // Header with severity and type
97
+ console.log(this.color('┌─', 'dim') + this.color(` ${severityLabel}`, severityColor) + this.color('─────────────────────────────────────────', 'dim'));
98
+ console.log(this.color('│ ', 'dim') + this.color(vuln.type, 'bright'));
99
+ console.log(this.color('│ ', 'dim') + this.color(`${vuln.file}:${vuln.line}`, 'cyan'));
100
+ console.log(this.color('├─────────────────────────────────────────────────────', 'dim'));
101
+ // Description
102
+ console.log(this.color('│ ', 'dim') + this.color('Description:', 'bright'));
103
+ const descLines = this.wrapText(vuln.description, 50);
104
+ for (const line of descLines) {
105
+ console.log(this.color('│ ', 'dim') + ` ${line}`);
106
+ }
107
+ // Code snippet if available
108
+ if (vuln.code) {
109
+ console.log(this.color('│ ', 'dim'));
110
+ console.log(this.color('│ ', 'dim') + this.color('Code:', 'bright'));
111
+ const codeLines = vuln.code.split('\n');
112
+ for (const line of codeLines.slice(0, 3)) {
113
+ if (line.trim()) {
114
+ console.log(this.color('│ ', 'dim') + this.color(` ${line.trim().substring(0, 50)}`, 'dim'));
115
+ }
116
+ }
117
+ }
118
+ // Standard remediation
119
+ if (vuln.remediation) {
120
+ console.log(this.color('│ ', 'dim'));
121
+ console.log(this.color('│ ', 'dim') + this.color('How to fix:', 'bright'));
122
+ const remLines = this.wrapText(vuln.remediation, 50);
123
+ for (const line of remLines.slice(0, 5)) {
124
+ console.log(this.color('│ ', 'dim') + ` ${line}`);
125
+ }
126
+ }
127
+ // AI remediation if available
128
+ if (vuln.aiRemediation) {
129
+ console.log(this.color('│ ', 'dim'));
130
+ console.log(this.color('│ ', 'dim') + this.color('AI Suggestion:', 'cyan') + this.color(' ✨', 'bright'));
131
+ const aiLines = this.wrapText(vuln.aiRemediation, 50);
132
+ for (const line of aiLines.slice(0, 5)) {
133
+ console.log(this.color('│ ', 'dim') + ` ${line}`);
134
+ }
135
+ }
136
+ console.log(this.color('└─────────────────────────────────────────────────────', 'dim'));
137
+ console.log();
138
+ }
139
+ wrapText(text, maxWidth) {
140
+ const words = text.split(' ');
141
+ const lines = [];
142
+ let currentLine = '';
143
+ for (const word of words) {
144
+ if ((currentLine + ' ' + word).length <= maxWidth) {
145
+ currentLine = currentLine ? currentLine + ' ' + word : word;
146
+ }
147
+ else {
148
+ if (currentLine)
149
+ lines.push(currentLine);
150
+ currentLine = word;
151
+ }
152
+ }
153
+ if (currentLine)
154
+ lines.push(currentLine);
155
+ return lines;
156
+ }
157
+ getSeverityColor(severity) {
158
+ switch (severity) {
159
+ case 'critical':
160
+ case 'high':
161
+ return 'red';
162
+ case 'medium':
163
+ return 'yellow';
164
+ case 'low':
165
+ return 'blue';
166
+ case 'info':
167
+ return 'cyan';
168
+ default:
169
+ return 'reset';
170
+ }
171
+ }
172
+ sortBySeverity(vulnerabilities) {
173
+ const order = { critical: 0, high: 1, medium: 2, low: 3, info: 4 };
174
+ return [...vulnerabilities].sort((a, b) => order[a.severity] - order[b.severity]);
175
+ }
176
+ }
177
+ exports.Reporter = Reporter;
178
+ //# sourceMappingURL=reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/lib/reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ export interface Config {
2
+ apiUrl: string;
3
+ apiToken?: string;
4
+ email?: string;
5
+ subscription?: 'free' | 'pro' | 'premier';
6
+ preferences?: {
7
+ aiScanEnabled?: boolean;
8
+ dependencyScanEnabled?: boolean;
9
+ secretScanEnabled?: boolean;
10
+ };
11
+ }
12
+ export interface AuthResponse {
13
+ token: string;
14
+ user: {
15
+ id: string;
16
+ email: string;
17
+ subscription: 'free' | 'pro' | 'premier';
18
+ };
19
+ }
20
+ export interface ScanRequest {
21
+ files: Record<string, string>;
22
+ repository?: string;
23
+ options?: {
24
+ includeAI?: boolean;
25
+ includeDependencies?: boolean;
26
+ includeSecrets?: boolean;
27
+ };
28
+ }
29
+ export interface Vulnerability {
30
+ id: string;
31
+ severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
32
+ type: string;
33
+ file: string;
34
+ line: number;
35
+ code?: string;
36
+ description: string;
37
+ remediation?: string;
38
+ aiRemediation?: string;
39
+ }
40
+ export interface ScanResponse {
41
+ scanId: string;
42
+ status: 'completed' | 'failed' | 'processing';
43
+ vulnerabilities: Vulnerability[];
44
+ summary: {
45
+ total: number;
46
+ critical: number;
47
+ high: number;
48
+ medium: number;
49
+ low: number;
50
+ info: number;
51
+ };
52
+ filesScanned: number;
53
+ duration: number;
54
+ }
55
+ export interface UserProfile {
56
+ id: string;
57
+ email: string;
58
+ subscription: 'free' | 'pro' | 'premier';
59
+ limits: {
60
+ dailyScans: number;
61
+ scansRemaining: number;
62
+ resetsAt: string;
63
+ };
64
+ preferences: {
65
+ aiScanEnabled: boolean;
66
+ dependencyScanEnabled: boolean;
67
+ secretScanEnabled: boolean;
68
+ };
69
+ }
70
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAC1C,WAAW,CAAC,EAAE;QACZ,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;KAC1C,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC9C,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IACzC,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,WAAW,EAAE;QACX,aAAa,EAAE,OAAO,CAAC;QACvB,qBAAqB,EAAE,OAAO,CAAC;QAC/B,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@gitguard/cli",
3
+ "version": "1.1.0",
4
+ "description": "GitGuard CLI - Security scanning for developers",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "gitguard": "./dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "tsx src/index.ts",
12
+ "prepublishOnly": "yarn build",
13
+ "test": "echo \"Tests coming soon\""
14
+ },
15
+ "keywords": [
16
+ "security",
17
+ "scanner",
18
+ "cli",
19
+ "vulnerability",
20
+ "code-analysis",
21
+ "static-analysis"
22
+ ],
23
+ "author": "GitGuard",
24
+ "license": "MIT",
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "https://github.com/git-guard/gitguard-cli.git"
28
+ },
29
+ "bugs": {
30
+ "url": "https://github.com/git-guard/gitguard-cli/issues"
31
+ },
32
+ "homepage": "https://gitguard.net",
33
+ "engines": {
34
+ "node": ">=18.0.0"
35
+ },
36
+ "dependencies": {
37
+ "axios": "^1.7.7",
38
+ "commander": "^14.0.2",
39
+ "ignore": "^7.0.5",
40
+ "open": "^8.4.2"
41
+ },
42
+ "devDependencies": {
43
+ "@types/node": "^22.0.0",
44
+ "tsx": "^4.20.0",
45
+ "typescript": "^5.6.0"
46
+ },
47
+ "files": [
48
+ "dist",
49
+ "LICENSE",
50
+ "README.md"
51
+ ]
52
+ }