@kairoaisec/cli 0.1.0 → 0.1.2
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/README.md +68 -11
- package/dist/api/client.d.ts +4 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +8 -0
- package/dist/api/client.js.map +1 -1
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +61 -3
- package/dist/commands/scan.js.map +1 -1
- package/dist/lib/patterns.d.ts.map +1 -1
- package/dist/lib/patterns.js +188 -0
- package/dist/lib/patterns.js.map +1 -1
- package/dist/lib/scanner.d.ts.map +1 -1
- package/dist/lib/scanner.js +106 -4
- package/dist/lib/scanner.js.map +1 -1
- package/dist/utils/logger.d.ts +4 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +17 -4
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/spinner.d.ts +1 -1
- package/dist/utils/spinner.d.ts.map +1 -1
- package/dist/utils/spinner.js +3 -2
- package/dist/utils/spinner.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,17 +5,19 @@ The official command-line interface for Kairo, the AI-powered smart contract sec
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install -g @
|
|
8
|
+
npm install -g @kairoaisec/cli
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
## Quick Start
|
|
12
12
|
|
|
13
13
|
1. **Login to your Kairo account:**
|
|
14
|
+
|
|
14
15
|
```bash
|
|
15
16
|
kairo auth login
|
|
16
17
|
```
|
|
17
18
|
|
|
18
19
|
2. **Create or select a project:**
|
|
20
|
+
|
|
19
21
|
```bash
|
|
20
22
|
kairo project create my-project
|
|
21
23
|
kairo project select my-project
|
|
@@ -42,7 +44,13 @@ npm install -g @kairo/cli
|
|
|
42
44
|
|
|
43
45
|
### Security Scanning
|
|
44
46
|
|
|
45
|
-
- `kairo scan [path]` - Scan contracts for vulnerabilities
|
|
47
|
+
- `kairo scan [path]` - Scan contracts for vulnerabilities
|
|
48
|
+
- `kairo scan [path] --deep` - Deep scan using 6-stage ML pipeline (requires API key)
|
|
49
|
+
- `kairo scan [path] --format json` - Output results as JSON to stdout
|
|
50
|
+
- `kairo scan [path] --format sarif` - Output results as SARIF to stdout
|
|
51
|
+
- `kairo scan [path] --no-upload` - Scan locally without uploading to dashboard
|
|
52
|
+
- `kairo scan [path] --no-slither` - Skip Slither, use Kairo patterns only
|
|
53
|
+
- `kairo scan [path] --slither-only` - Run only Slither analysis
|
|
46
54
|
|
|
47
55
|
### Configuration
|
|
48
56
|
|
|
@@ -51,6 +59,47 @@ npm install -g @kairo/cli
|
|
|
51
59
|
- `kairo config reset` - Reset configuration
|
|
52
60
|
- `kairo config path` - Show config file location
|
|
53
61
|
|
|
62
|
+
## Scan Modes
|
|
63
|
+
|
|
64
|
+
Kairo supports two scan modes:
|
|
65
|
+
|
|
66
|
+
### Local Scan (default)
|
|
67
|
+
|
|
68
|
+
Runs pattern-based analysis locally. Your code never leaves your machine. Includes Solidity version-aware analysis (suppresses integer-overflow false positives for >=0.8.0), ReentrancyGuard awareness, and tx.origin context awareness.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
kairo scan ./contracts
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Deep Scan (`--deep`)
|
|
75
|
+
|
|
76
|
+
Sends code to the Kairo backend for a full 6-stage ML pipeline analysis:
|
|
77
|
+
|
|
78
|
+
1. **Pattern matching** -- local vulnerability patterns
|
|
79
|
+
2. **AST analysis** -- structural code analysis
|
|
80
|
+
3. **CodeBERT triage** -- ML-based false positive filtering
|
|
81
|
+
4. **Agent analysis** -- specialized security agents
|
|
82
|
+
5. **Claude AI review** -- LLM-powered deep reasoning
|
|
83
|
+
6. **Dynamic analysis** -- runtime behavior checks
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
kairo scan ./contracts --deep
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
> **Note:** Deep scan requires an active API key and sends code to the Kairo backend. Use local scan for air-gapped environments.
|
|
90
|
+
|
|
91
|
+
### Output Formats
|
|
92
|
+
|
|
93
|
+
Both modes support structured output to stdout for piping:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# JSON output, pipe to jq
|
|
97
|
+
kairo scan ./contracts --format json | jq '.findings[] | select(.severity == "critical")'
|
|
98
|
+
|
|
99
|
+
# SARIF output for GitHub Code Scanning
|
|
100
|
+
kairo scan ./contracts --format sarif > results.sarif
|
|
101
|
+
```
|
|
102
|
+
|
|
54
103
|
## Examples
|
|
55
104
|
|
|
56
105
|
### Basic Workflow
|
|
@@ -68,8 +117,8 @@ kairo project select defi-protocol
|
|
|
68
117
|
# Check status
|
|
69
118
|
kairo whoami
|
|
70
119
|
|
|
71
|
-
# Scan contracts
|
|
72
|
-
kairo scan ./contracts
|
|
120
|
+
# Scan contracts
|
|
121
|
+
kairo scan ./contracts
|
|
73
122
|
```
|
|
74
123
|
|
|
75
124
|
### API Key Authentication
|
|
@@ -98,6 +147,7 @@ kairo config reset
|
|
|
98
147
|
## Configuration
|
|
99
148
|
|
|
100
149
|
Configuration is stored securely using:
|
|
150
|
+
|
|
101
151
|
- **Keychain/Credential Manager** - For sensitive tokens
|
|
102
152
|
- **Local config file** - For non-sensitive settings
|
|
103
153
|
|
|
@@ -107,24 +157,31 @@ Default API URL: `https://kairoaisec.com`
|
|
|
107
157
|
|
|
108
158
|
This CLI is part of Kairo's strategic pivot to enterprise CLI + Dashboard. Current status:
|
|
109
159
|
|
|
110
|
-
### ✅ Phase 0: Foundation (
|
|
160
|
+
### ✅ Phase 0: Foundation (Complete)
|
|
161
|
+
|
|
111
162
|
- [x] Authentication system
|
|
112
163
|
- [x] Project management
|
|
113
164
|
- [x] API client integration
|
|
114
165
|
- [x] Configuration management
|
|
115
166
|
|
|
116
|
-
###
|
|
117
|
-
|
|
118
|
-
- [
|
|
119
|
-
- [
|
|
120
|
-
- [
|
|
167
|
+
### ✅ Phase 0: Scanning (Complete)
|
|
168
|
+
|
|
169
|
+
- [x] Local contract scanning (pattern-based, Solidity version-aware)
|
|
170
|
+
- [x] Slither integration
|
|
171
|
+
- [x] Deep scan mode (6-stage ML pipeline with CodeBERT + Claude AI)
|
|
172
|
+
- [x] Findings upload to dashboard
|
|
173
|
+
- [x] Progress indicators
|
|
174
|
+
- [x] JSON and SARIF output formats (stdout-friendly for piping)
|
|
175
|
+
- [x] False positive reduction (ReentrancyGuard, tx.origin context, Solidity >=0.8.0)
|
|
121
176
|
|
|
122
177
|
### 🔮 Phase 1: CI/CD Integration
|
|
178
|
+
|
|
123
179
|
- [ ] GitHub Actions integration
|
|
124
180
|
- [ ] PR annotations
|
|
125
181
|
- [ ] Deployment gates
|
|
126
182
|
|
|
127
183
|
### 🔮 Phase 2: Advanced Features
|
|
184
|
+
|
|
128
185
|
- [ ] Mythril integration
|
|
129
186
|
- [ ] AI chat in terminal
|
|
130
187
|
- [ ] Custom rules
|
|
@@ -158,4 +215,4 @@ kairo --help
|
|
|
158
215
|
|
|
159
216
|
## License
|
|
160
217
|
|
|
161
|
-
MIT License - see [LICENSE](LICENSE) for details.
|
|
218
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
package/dist/api/client.d.ts
CHANGED
|
@@ -115,6 +115,10 @@ export declare class KairoApiClient {
|
|
|
115
115
|
description?: string;
|
|
116
116
|
}): Promise<ApiProject>;
|
|
117
117
|
deleteProject(projectId: string): Promise<void>;
|
|
118
|
+
deepScan(files: Array<{
|
|
119
|
+
path: string;
|
|
120
|
+
content: string;
|
|
121
|
+
}>, mode?: 'standard' | 'deep'): Promise<any>;
|
|
118
122
|
deployCheck(data: {
|
|
119
123
|
contract_code: string;
|
|
120
124
|
deployment_network: string;
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
package/dist/api/client.js
CHANGED
|
@@ -139,6 +139,14 @@ class KairoApiClient {
|
|
|
139
139
|
async deleteProject(projectId) {
|
|
140
140
|
return this.makeRequest('DELETE', `/projects/${projectId}`);
|
|
141
141
|
}
|
|
142
|
+
// Deep Scan — full ML pipeline (pattern → AST → CodeBERT → agents → Claude AI → dynamic)
|
|
143
|
+
async deepScan(files, mode = 'deep') {
|
|
144
|
+
return this.makeRequest('POST', '/security/scan', {
|
|
145
|
+
source: { type: 'inline', files },
|
|
146
|
+
mode,
|
|
147
|
+
config: { severity_threshold: 'low', include_suggestions: true },
|
|
148
|
+
});
|
|
149
|
+
}
|
|
142
150
|
// Deploy Safety Check
|
|
143
151
|
async deployCheck(data) {
|
|
144
152
|
return this.makeRequest('POST', '/deploy/check', data);
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,eAAO,MAAM,WAAW,SAkBpB,CAAC"}
|
package/dist/commands/scan.js
CHANGED
|
@@ -58,6 +58,7 @@ exports.scanCommand = new commander_1.Command('scan')
|
|
|
58
58
|
.option('--no-slither', 'Skip Slither analysis (use only Kairo patterns)')
|
|
59
59
|
.option('--slither-only', 'Run only Slither analysis (skip Kairo patterns)')
|
|
60
60
|
.option('--slither-timeout <ms>', 'Slither timeout in milliseconds', '120000')
|
|
61
|
+
.option('--deep', 'Use full ML pipeline (requires authentication, sends code to backend)')
|
|
61
62
|
.option('--fail-on <severities>', 'Exit 1 if findings match severities (critical,high,medium,low)')
|
|
62
63
|
.option('-v, --verbose', 'Verbose output')
|
|
63
64
|
.action(async (scanPath = '.', options) => {
|
|
@@ -71,6 +72,11 @@ async function runScan(scanPath, options) {
|
|
|
71
72
|
logger_js_1.Logger.error(`Path does not exist: ${scanPath}`);
|
|
72
73
|
process.exit(1);
|
|
73
74
|
}
|
|
75
|
+
// When outputting structured data to stdout, redirect all Logger/Spinner to stderr
|
|
76
|
+
const structuredOutput = (options.format === 'json' || options.format === 'sarif') && !options.output;
|
|
77
|
+
if (structuredOutput) {
|
|
78
|
+
logger_js_1.Logger.setStderrMode(true);
|
|
79
|
+
}
|
|
74
80
|
logger_js_1.Logger.info(`🔍 Scanning for vulnerabilities in: ${chalk_1.default.cyan(scanPath)}`);
|
|
75
81
|
logger_js_1.Logger.log('');
|
|
76
82
|
// Find Solidity files
|
|
@@ -146,6 +152,47 @@ async function runScan(scanPath, options) {
|
|
|
146
152
|
}
|
|
147
153
|
// Scan files for vulnerabilities with Kairo patterns (unless slither-only)
|
|
148
154
|
const allFindings = [];
|
|
155
|
+
// Deep scan mode — use backend ML pipeline
|
|
156
|
+
if (options.deep) {
|
|
157
|
+
if (!(await index_js_1.configManager.isAuthenticated())) {
|
|
158
|
+
logger_js_1.Logger.error('Deep scan requires authentication. Run `kairo auth login` first.');
|
|
159
|
+
process.exit(2);
|
|
160
|
+
}
|
|
161
|
+
const deepSpinner = new spinner_js_1.Spinner('Running deep ML analysis (CodeBERT + Claude AI)...').start();
|
|
162
|
+
try {
|
|
163
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
164
|
+
const fileContents = await Promise.all(solidityFiles.map(async (filePath) => ({
|
|
165
|
+
path: filePath.replace(process.cwd(), '.'),
|
|
166
|
+
content: await fs.readFile(filePath, 'utf8'),
|
|
167
|
+
})));
|
|
168
|
+
const client = new client_js_1.KairoApiClient();
|
|
169
|
+
const result = await client.deepScan(fileContents);
|
|
170
|
+
deepSpinner.succeed(`Deep analysis complete — ${result.summary?.total || 0} findings`);
|
|
171
|
+
// Convert backend findings to CLI Finding format
|
|
172
|
+
const deepFindings = (result.findings || []).map((f) => ({
|
|
173
|
+
id: f.id || `deep-${Date.now()}-${Math.random()}`,
|
|
174
|
+
severity: (f.severity || 'MEDIUM').toUpperCase(),
|
|
175
|
+
title: f.title || 'Unnamed Finding',
|
|
176
|
+
description: f.description || '',
|
|
177
|
+
file_path: f.file || f.affected_file || '',
|
|
178
|
+
line_start: f.line || f.line_number || 1,
|
|
179
|
+
line_end: f.line || f.line_number || 1,
|
|
180
|
+
code_snippet: f.code || '',
|
|
181
|
+
recommendation: f.recommendation || '',
|
|
182
|
+
confidence: f.confidence || 0.8,
|
|
183
|
+
cwe: f.cwe_id || f.cwe,
|
|
184
|
+
pattern_id: f.vulnerability_type || f.pattern || 'deep-analysis',
|
|
185
|
+
category: f.category || 'Deep Analysis',
|
|
186
|
+
fingerprint: `deep-${f.file}-${f.line}-${f.vulnerability_type}`,
|
|
187
|
+
}));
|
|
188
|
+
allFindings.push(...deepFindings);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
deepSpinner.warn('Deep analysis unavailable, falling back to local scan');
|
|
192
|
+
logger_js_1.Logger.warn(`Backend error: ${error.message}`);
|
|
193
|
+
// Fall through to local scanning below
|
|
194
|
+
}
|
|
195
|
+
}
|
|
149
196
|
if (!options.slitherOnly) {
|
|
150
197
|
const scanSpinner = new spinner_js_1.Spinner('Analyzing contracts for vulnerabilities...').start();
|
|
151
198
|
try {
|
|
@@ -199,9 +246,20 @@ async function runScan(scanPath, options) {
|
|
|
199
246
|
const sortedFindings = (0, scanner_js_1.sortFindings)(filteredFindings);
|
|
200
247
|
// Aggregate results
|
|
201
248
|
const stats = (0, scanner_js_1.aggregateFindings)(allCombinedFindings);
|
|
202
|
-
//
|
|
203
|
-
|
|
204
|
-
|
|
249
|
+
// Output results based on format
|
|
250
|
+
if (options.format === 'json' && !options.output) {
|
|
251
|
+
// JSON to stdout (for piping)
|
|
252
|
+
console.log(JSON.stringify(sortedFindings, null, 2));
|
|
253
|
+
}
|
|
254
|
+
else if (options.format === 'sarif' && !options.output) {
|
|
255
|
+
// SARIF to stdout (for piping)
|
|
256
|
+
console.log(JSON.stringify(convertToSarif(sortedFindings), null, 2));
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
// Text display (default, or when -o is used alongside any format)
|
|
260
|
+
displayScanResults(sortedFindings, stats, scanPath);
|
|
261
|
+
}
|
|
262
|
+
// Save to file if requested (works with any format)
|
|
205
263
|
if (options.output) {
|
|
206
264
|
await saveResults(sortedFindings, options.output, options.format);
|
|
207
265
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAwC;AACxC,+BAAyC;AAEzC,kDAA0B;AAC1B,yCAAoC;AAEpC,gDAAkD;AAClD,iDAAmD;AACnD,gEAA2F;AAC3F,kDAM2B;AAC3B,kDAAuE;AAEvE,kDAA4C;AAC5C,oDAA8C;AAejC,QAAA,WAAW,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;KAC3C,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,EAAE,GAAG,CAAC;KACpD,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,oBAAoB,EAAE,kCAAkC,EAAE,MAAM,CAAC;KACxE,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;KACtD,MAAM,CAAC,wBAAwB,EAAE,+CAA+C,EAAE,QAAQ,CAAC;KAC3F,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;KAC5D,MAAM,CAAC,cAAc,EAAE,iDAAiD,CAAC;KACzE,MAAM,CAAC,gBAAgB,EAAE,iDAAiD,CAAC;KAC3E,MAAM,CAAC,wBAAwB,EAAE,iCAAiC,EAAE,QAAQ,CAAC;KAC7E,MAAM,CAAC,QAAQ,EAAE,uEAAuE,CAAC;KACzF,MAAM,CACL,wBAAwB,EACxB,gEAAgE,CACjE;KACA,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,WAAmB,GAAG,EAAE,OAAoB,EAAE,EAAE;IAC7D,MAAM,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,KAAK,UAAU,OAAO,CAAC,QAAgB,EAAE,OAAoB;IAC3D,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;IAEnC,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,MAAM,IAAA,gCAAY,EAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,kBAAM,CAAC,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,mFAAmF;IACnF,MAAM,gBAAgB,GACpB,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/E,IAAI,gBAAgB,EAAE,CAAC;QACrB,kBAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,kBAAM,CAAC,IAAI,CAAC,uCAAuC,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3E,kBAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEf,sBAAsB;IACtB,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;IACrE,IAAI,aAAa,GAAa,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,MAAM,IAAA,kCAAc,EAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,aAAa,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;gBAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,MAAM,IAAA,qCAAiB,EAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACxC,kBAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,OAAO,CACb,SAAS,aAAa,CAAC,MAAM,iBAAiB,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CACtF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,kBAAM,CAAC,KAAK,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,+DAA+D;IAC/D,MAAM,eAAe,GAAmB,EAAE,CAAC;IAC3C,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,4BAAe,CAAC,WAAW,EAAE,CAAC;YAExD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,kBAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;oBAC5C,kBAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACf,kBAAM,CAAC,GAAG,CAAC,4BAAe,CAAC,sBAAsB,EAAE,CAAC,CAAC;oBACrD,kBAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC;gBACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;oBACxB,kBAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;oBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBACzB,kBAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,cAAc,GAAG,IAAI,oBAAO,CAAC,6BAA6B,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC1E,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,CAAC,CAAC;gBAC5E,MAAM,MAAM,GAAG,MAAM,4BAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;gBAEpF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,cAAc,CAAC,OAAO,CAAC,iBAAiB,MAAM,CAAC,QAAQ,CAAC,MAAM,SAAS,CAAC,CAAC;oBACzE,eAAe,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,cAAc,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;oBAChE,IAAI,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBACrC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC,CAAC;oBAC7E,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kBAAM,CAAC,IAAI,CAAC,0BAA0B,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,MAAM,WAAW,GAAc,EAAE,CAAC;IAElC,2CAA2C;IAC3C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,CAAC,MAAM,wBAAa,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;YAC7C,kBAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,oBAAO,CAAC,oDAAoD,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9F,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAC;YACvC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACrC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC;gBAC1C,OAAO,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;aAC7C,CAAC,CAAC,CACJ,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,0BAAc,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEnD,WAAW,CAAC,OAAO,CAAC,4BAA4B,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;YAEvF,iDAAiD;YACjD,MAAM,YAAY,GAAc,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBACvE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACjD,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAyB;gBACvE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,iBAAiB;gBACnC,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;gBAChC,SAAS,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,aAAa,IAAI,EAAE;gBAC1C,UAAU,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC;gBACxC,QAAQ,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC;gBACtC,YAAY,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;gBAC1B,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,EAAE;gBACtC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,GAAG;gBAC/B,GAAG,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG;gBACtB,UAAU,EAAE,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,OAAO,IAAI,eAAe;gBAChE,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,eAAe;gBACvC,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,kBAAkB,EAAE;aAChE,CAAC,CAAC,CAAC;YAEJ,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAC1E,kBAAM,CAAC,IAAI,CAAC,kBAAmB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,uCAAuC;QACzC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,oBAAO,CAAC,4CAA4C,CAAC,CAAC,KAAK,EAAE,CAAC;QAEtF,IAAI,CAAC;YACH,IAAI,cAAc,GAAG,CAAC,CAAC;YAEvB,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;gBACrC,cAAc,EAAE,CAAC;gBACjB,WAAW,CAAC,UAAU,CACpB,YAAY,IAAA,eAAQ,EAAC,QAAQ,CAAC,KAAK,cAAc,IAAI,aAAa,CAAC,MAAM,GAAG,CAC7E,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAQ,EAAC,QAAQ,CAAC,CAAC;gBAC1C,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAChC,CAAC;YAED,WAAW,CAAC,OAAO,CAAC,YAAY,aAAa,CAAC,MAAM,QAAQ,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzC,kBAAM,CAAC,KAAK,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,MAAM,mBAAmB,GAAc,CAAC,GAAG,WAAW,CAAC,CAAC;IAExD,iDAAiD;IACjD,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAY;YACvB,EAAE,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAC5C,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAyB;YACtE,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,WAAW,EAAE,cAAc,CAAC,WAAW;YACvC,SAAS,EAAE,cAAc,CAAC,SAAS,IAAI,EAAE;YACzC,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YACzE,QAAQ,EAAE,QAAQ,CAChB,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1C,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5C,GAAG,CACN;YACD,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,cAAc,CAAC,cAAc;YAC7C,UAAU,EACR,cAAc,CAAC,UAAU,KAAK,MAAM;gBAClC,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,cAAc,CAAC,UAAU,KAAK,QAAQ;oBACtC,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,GAAG;YACX,GAAG,EAAE,SAAS;YACd,UAAU,EAAE,WAAW,cAAc,CAAC,UAAU,IAAI,SAAS,EAAE;YAC/D,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,WAAW,cAAc,CAAC,SAAS,IAAI,cAAc,CAAC,UAAU,IAAI,cAAc,CAAC,cAAc,EAAE;SACjH,CAAC;QACF,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,8BAA8B;IAC9B,MAAM,WAAW,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAW,CAAC;IAClG,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IAC9D,MAAM,gBAAgB,GAAG,IAAA,6BAAgB,EAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,IAAA,yBAAY,EAAC,gBAAgB,CAAC,CAAC;IAEtD,oBAAoB;IACpB,MAAM,KAAK,GAAG,IAAA,8BAAiB,EAAC,mBAAmB,CAAC,CAAC;IAErD,iCAAiC;IACjC,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACjD,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACzD,+BAA+B;QAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,kEAAkE;QAClE,kBAAkB,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,oDAAoD;IACpD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC;IAED,sCAAsC;IACtC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,wBAAa,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,cAAc,CAAC,mBAAmB,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAChD,kBAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IAC3F,CAAC;IAED,8BAA8B;IAC9B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM;aACpC,WAAW,EAAE;aACb,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxB,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,IAAI,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YAChE,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACxD,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YACtD,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,kBAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,CAAC,MAAM,gBAAgB,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAC9F,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAmB,EAAE,KAAU,EAAE,QAAgB;IAC3E,kBAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,kBAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC1C,kBAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEf,kBAAkB;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC;IAClE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC;IAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC;IAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC;IAE1D,kBAAM,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClE,kBAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,kBAAM,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,kBAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACnD,kBAAM,CAAC,GAAG,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;IAChC,kBAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,kBAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,qCAAqC;IACrC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1C,kBAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1E,kBAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QAEnE,kBAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9E,kBAAM,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,YAAY,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACvE,kBAAM,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,kBAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACzB,kBAAM,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,MAAM,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;QACrE,kBAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3B,KAAK,QAAQ;YACX,OAAO,eAAK,CAAC,IAAI,CAAC;QACpB,KAAK,KAAK;YACR,OAAO,eAAK,CAAC,KAAK,CAAC;QACrB;YACE,OAAO,eAAK,CAAC,IAAI,CAAC;IACtB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAAmB,EAAE,UAAkB,EAAE,MAAc;IAChF,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEzD,IAAI,CAAC;QACH,IAAI,OAAe,CAAC;QAEpB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC5C,MAAM;YACR,KAAK,OAAO;gBACV,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC5D,MAAM;YACR,SAAS,QAAQ;gBACf,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAClC,MAAM;QACV,CAAC;QAED,MAAM,IAAA,oBAAS,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrC,OAAO,CAAC,OAAO,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACvC,kBAAM,CAAC,KAAK,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,QAAmB,EACnB,KAAe,EACf,QAAgB;IAEhB,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,oCAAoC,CAAC,CAAC,KAAK,EAAE,CAAC;IAE1E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,0BAAc,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAC;QAEvC,2BAA2B;QAC3B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC;YAC1C,OAAO,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;SAC7C,CAAC,CAAC,CACJ,CAAC;QAEF,MAAM,cAAc,GAAG,wBAAa,CAAC,iBAAiB,EAAE,CAAC;QAEzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;YACxC,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,YAAY;aACpB;YACD,UAAU,EAAE,cAAc,EAAE,EAAE;YAC9B,MAAM,EAAE;gBACN,kBAAkB,EAAE,KAAK;gBACzB,mBAAmB,EAAE,IAAI;aAC1B;SACF,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,GAAG,wBAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE1F,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QACjD,kBAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,kBAAM,CAAC,IAAI,CAAC,6BAA6B,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,kBAAM,CAAC,IAAI,CAAC,iBAAkB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,QAAmB;IACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAED,IAAI,MAAM,GAAG,4CAA4C,CAAC;IAC1D,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAEpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,YAAY,KAAK,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,IAAI,CAAC;IACtH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,QAAmB;IACzC,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,+CAA+C;QACxD,IAAI,EAAE;YACJ;gBACE,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,OAAO;wBAChB,cAAc,EAAE,wBAAwB;qBACzC;iBACF;gBACD,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBAClC,MAAM,EAAE,OAAO,CAAC,UAAU;oBAC1B,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;oBACrC,OAAO,EAAE;wBACP,IAAI,EAAE,OAAO,CAAC,WAAW;qBAC1B;oBACD,SAAS,EAAE;wBACT;4BACE,gBAAgB,EAAE;gCAChB,gBAAgB,EAAE;oCAChB,GAAG,EAAE,OAAO,CAAC,SAAS;iCACvB;gCACD,MAAM,EAAE;oCACN,SAAS,EAAE,OAAO,CAAC,UAAU;oCAC7B,OAAO,EAAE,OAAO,CAAC,QAAQ;iCAC1B;6BACF;yBACF;qBACF;iBACF,CAAC,CAAC;aACJ;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/lib/patterns.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/lib/patterns.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,EA4YxD,CAAC"}
|
package/dist/lib/patterns.js
CHANGED
|
@@ -183,5 +183,193 @@ exports.VULNERABILITY_PATTERNS = [
|
|
|
183
183
|
cwe: 'CWE-613',
|
|
184
184
|
confidenceBase: 0.7,
|
|
185
185
|
},
|
|
186
|
+
// DeFi-focused patterns for enhanced security coverage
|
|
187
|
+
{
|
|
188
|
+
id: 'erc20-approve-race',
|
|
189
|
+
pattern: /function\s+approve\s*\([^)]*\)\s*(external|public)[^{]*\{(?![^}]*require\([^)]*==\s*0)/gs,
|
|
190
|
+
severity: 'HIGH',
|
|
191
|
+
title: 'ERC20 Approve Race Condition',
|
|
192
|
+
description: 'ERC20 approve function vulnerable to front-running attacks without zero-value reset.',
|
|
193
|
+
recommendation: 'Implement approve with zero-value reset or use increaseAllowance/decreaseAllowance.',
|
|
194
|
+
category: 'Token Security',
|
|
195
|
+
cwe: 'CWE-362',
|
|
196
|
+
confidenceBase: 0.75,
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
id: 'missing-event-emission',
|
|
200
|
+
pattern: /function\s+\w+\([^)]*\)\s*(external|public)[^{]*\{(?![^}]*emit\s+\w+)[^}]*(_balances\[|_totalSupply|_owner|owner\s*=|pause|mint|burn)/gs,
|
|
201
|
+
severity: 'MEDIUM',
|
|
202
|
+
title: 'Missing Event Emission',
|
|
203
|
+
description: 'State-changing function does not emit events for important operations.',
|
|
204
|
+
recommendation: 'Emit events for all significant state changes for transparency and monitoring.',
|
|
205
|
+
category: 'Best Practices',
|
|
206
|
+
cwe: 'CWE-778',
|
|
207
|
+
confidenceBase: 0.6,
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
id: 'centralization-risk',
|
|
211
|
+
pattern: /function\s+\w*(?:withdraw|drain|pause|mint|burn|emergency)\w*\s*\([^)]*\)\s*(external|public)[^{]*\{[^}]*onlyOwner/gs,
|
|
212
|
+
severity: 'CRITICAL',
|
|
213
|
+
title: 'Centralization Risk',
|
|
214
|
+
description: 'Owner has excessive control over critical functions that could drain funds or halt operations.',
|
|
215
|
+
recommendation: 'Consider multi-signature requirements or timelock for critical administrative functions.',
|
|
216
|
+
category: 'Access Control',
|
|
217
|
+
cwe: 'CWE-269',
|
|
218
|
+
confidenceBase: 0.85,
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
id: 'unsafe-erc20-transfer',
|
|
222
|
+
pattern: /\.transfer\s*\((?![^;]*safeTransfer)/g,
|
|
223
|
+
severity: 'HIGH',
|
|
224
|
+
title: 'Unsafe ERC20 Transfer',
|
|
225
|
+
description: 'Using unsafe transfer() instead of safeTransfer() for ERC20 tokens.',
|
|
226
|
+
recommendation: 'Use OpenZeppelin SafeERC20 library with safeTransfer() for token operations.',
|
|
227
|
+
category: 'Token Security',
|
|
228
|
+
cwe: 'CWE-252',
|
|
229
|
+
confidenceBase: 0.9,
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
id: 'mev-sandwich',
|
|
233
|
+
pattern: /function\s+\w*(?:swap|exchange|trade)\w*\s*\([^)]*\)\s*(external|public)[^{]*\{(?![^}]*deadline)(?![^}]*slippage)/gs,
|
|
234
|
+
severity: 'CRITICAL',
|
|
235
|
+
title: 'MEV Sandwich Attack Vulnerability',
|
|
236
|
+
description: 'Token swap function lacks slippage protection and deadline, vulnerable to MEV sandwich attacks.',
|
|
237
|
+
recommendation: 'Add deadline parameter and slippage protection to prevent MEV exploitation.',
|
|
238
|
+
category: 'Security',
|
|
239
|
+
cwe: 'CWE-367',
|
|
240
|
+
confidenceBase: 0.8,
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
id: 'unchecked-math-legacy',
|
|
244
|
+
pattern: /(?<!using\s+SafeMath\s+for)[^\/\*]*[^+\-]\s*(\+\+|--|\+=|\-=|\*=|\/=)\s*(?!.*SafeMath)/g,
|
|
245
|
+
severity: 'HIGH',
|
|
246
|
+
title: 'Unchecked Math Operations (Legacy)',
|
|
247
|
+
description: 'Arithmetic operations without SafeMath in legacy Solidity versions.',
|
|
248
|
+
recommendation: 'Use SafeMath library for arithmetic operations or upgrade to Solidity >=0.8.0.',
|
|
249
|
+
category: 'Security',
|
|
250
|
+
cwe: 'CWE-190',
|
|
251
|
+
confidenceBase: 0.7,
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
id: 'unused-return-value',
|
|
255
|
+
pattern: /\w+\.\w+\([^)]*\)\s*;(?!\s*\/\/)/g,
|
|
256
|
+
severity: 'MEDIUM',
|
|
257
|
+
title: 'Unused Return Value',
|
|
258
|
+
description: 'Function call return value is not used or checked.',
|
|
259
|
+
recommendation: 'Check return values of external calls or explicitly ignore with a comment.',
|
|
260
|
+
category: 'Best Practices',
|
|
261
|
+
cwe: 'CWE-252',
|
|
262
|
+
confidenceBase: 0.5,
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
id: 'shadowed-variable',
|
|
266
|
+
pattern: /function\s+\w+\([^)]*\)\s*[^{]*\{[^}]*(?:uint|address|bool|string|bytes)\s+(\w+)[^}]*\}/gs,
|
|
267
|
+
severity: 'MEDIUM',
|
|
268
|
+
title: 'Shadowed State Variable',
|
|
269
|
+
description: 'Local variable may shadow state variable, causing confusion.',
|
|
270
|
+
recommendation: 'Use different names for local variables to avoid shadowing state variables.',
|
|
271
|
+
category: 'Best Practices',
|
|
272
|
+
cwe: 'CWE-710',
|
|
273
|
+
confidenceBase: 0.4,
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
id: 'locked-ether',
|
|
277
|
+
pattern: /(?:receive\(\)|fallback\(\)|payable)[^}]*\{(?![^}]*(?:transfer|send|call\{value|withdraw))/gs,
|
|
278
|
+
severity: 'MEDIUM',
|
|
279
|
+
title: 'Locked Ether',
|
|
280
|
+
description: 'Contract can receive Ether but has no mechanism to withdraw it.',
|
|
281
|
+
recommendation: 'Add withdrawal function for received Ether or remove payable modifiers.',
|
|
282
|
+
category: 'Security',
|
|
283
|
+
cwe: 'CWE-667',
|
|
284
|
+
confidenceBase: 0.7,
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
id: 'strict-equality-balance',
|
|
288
|
+
pattern: /(?:this\.balance|address\([^)]*\)\.balance)\s*==\s*\d+/g,
|
|
289
|
+
severity: 'MEDIUM',
|
|
290
|
+
title: 'Strict Balance Equality',
|
|
291
|
+
description: 'Using strict equality for Ether balance checks can be manipulated via selfdestruct.',
|
|
292
|
+
recommendation: 'Use >= instead of == for balance checks to prevent manipulation.',
|
|
293
|
+
category: 'Security',
|
|
294
|
+
cwe: 'CWE-1024',
|
|
295
|
+
confidenceBase: 0.8,
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
id: 'storage-collision',
|
|
299
|
+
pattern: /contract\s+\w+(?:\s+is\s+[^{]+)?\s*\{[^}]*(?:mapping|uint|address|bool)\s+(?:private|internal)\s+\w+(?:\[\])?[^}]*\}/gs,
|
|
300
|
+
severity: 'HIGH',
|
|
301
|
+
title: 'Potential Storage Collision',
|
|
302
|
+
description: 'Proxy contract implementation may have storage layout collision with proxy.',
|
|
303
|
+
recommendation: 'Use storage gaps or OpenZeppelin upgradeable patterns for proxy-safe storage.',
|
|
304
|
+
category: 'Security',
|
|
305
|
+
cwe: 'CWE-1025',
|
|
306
|
+
confidenceBase: 0.6,
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
id: 'missing-reentrancy-guard',
|
|
310
|
+
pattern: /function\s+\w+\([^)]*\)\s*(external|public)[^{]*\{[^}]*\.call\{[^}]*\}[^}]*(?!nonReentrant)/gs,
|
|
311
|
+
severity: 'CRITICAL',
|
|
312
|
+
title: 'Missing Reentrancy Protection',
|
|
313
|
+
description: 'Function with external calls lacks reentrancy protection.',
|
|
314
|
+
recommendation: 'Add ReentrancyGuard modifier or use Checks-Effects-Interactions pattern.',
|
|
315
|
+
category: 'Security',
|
|
316
|
+
cwe: 'CWE-841',
|
|
317
|
+
confidenceBase: 0.75,
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
id: 'price-oracle-stale',
|
|
321
|
+
pattern: /\.latestRoundData\(\)(?![^}]*updatedAt)(?![^}]*timestamp)/gs,
|
|
322
|
+
severity: 'HIGH',
|
|
323
|
+
title: 'Stale Oracle Price',
|
|
324
|
+
description: 'Oracle price data used without checking freshness or validity.',
|
|
325
|
+
recommendation: 'Check updatedAt timestamp and validate oracle response before using price data.',
|
|
326
|
+
category: 'Security',
|
|
327
|
+
cwe: 'CWE-346',
|
|
328
|
+
confidenceBase: 0.85,
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
id: 'insufficient-gas-stipend',
|
|
332
|
+
pattern: /\.(?:send|transfer)\s*\(/g,
|
|
333
|
+
severity: 'MEDIUM',
|
|
334
|
+
title: 'Insufficient Gas Stipend',
|
|
335
|
+
description: 'Using send() or transfer() with 2300 gas stipend may fail with smart contract recipients.',
|
|
336
|
+
recommendation: 'Use call() with explicit gas limit instead of send() or transfer().',
|
|
337
|
+
category: 'Security',
|
|
338
|
+
cwe: 'CWE-400',
|
|
339
|
+
confidenceBase: 0.7,
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
id: 'front-running-protection',
|
|
343
|
+
pattern: /function\s+\w*(?:buy|sell|trade|bid)\w*\s*\([^)]*\)\s*(external|public)[^{]*\{(?![^}]*nonce)(?![^}]*commitment)/gs,
|
|
344
|
+
severity: 'HIGH',
|
|
345
|
+
title: 'Front-Running Vulnerability',
|
|
346
|
+
description: 'Price-sensitive function vulnerable to front-running attacks.',
|
|
347
|
+
recommendation: 'Implement commit-reveal scheme or use transaction ordering protection.',
|
|
348
|
+
category: 'Security',
|
|
349
|
+
cwe: 'CWE-362',
|
|
350
|
+
confidenceBase: 0.6,
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
id: 'unvalidated-caller',
|
|
354
|
+
pattern: /function\s+\w+\([^)]*\)\s*external[^{]*\{(?![^}]*require\(msg\.sender)(?![^}]*onlyOwner)(?![^}]*modifier)/gs,
|
|
355
|
+
severity: 'MEDIUM',
|
|
356
|
+
title: 'Unvalidated External Caller',
|
|
357
|
+
description: 'External function lacks caller validation or access control.',
|
|
358
|
+
recommendation: 'Add appropriate access control modifiers or caller validation.',
|
|
359
|
+
category: 'Access Control',
|
|
360
|
+
cwe: 'CWE-284',
|
|
361
|
+
confidenceBase: 0.5,
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
id: 'state-modification-view',
|
|
365
|
+
pattern: /function\s+\w+\([^)]*\)\s*(?:view|pure)[^{]*\{[^}]*(?:_balances\[|_totalSupply|storage\s+\w+)/gs,
|
|
366
|
+
severity: 'HIGH',
|
|
367
|
+
title: 'State Modification in View Function',
|
|
368
|
+
description: 'View or pure function attempts to modify state variables.',
|
|
369
|
+
recommendation: 'Remove state modifications from view/pure functions or change visibility.',
|
|
370
|
+
category: 'Security',
|
|
371
|
+
cwe: 'CWE-664',
|
|
372
|
+
confidenceBase: 0.9,
|
|
373
|
+
},
|
|
186
374
|
];
|
|
187
375
|
//# sourceMappingURL=patterns.js.map
|
package/dist/lib/patterns.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/lib/patterns.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/lib/patterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/lib/scanner.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAQnE;
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/lib/scanner.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAQnE;AAcD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,CA0M5E;AAsBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAcA;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAU3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAClD,OAAO,EAAE,CAKX"}
|
package/dist/lib/scanner.js
CHANGED
|
@@ -21,16 +21,37 @@ async function scanFile(filePath) {
|
|
|
21
21
|
return [];
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
+
function parseSolidityVersion(code) {
|
|
25
|
+
const match = code.match(/pragma\s+solidity\s+[<>=^~!]*(\d+)\.(\d+)\.(\d+)/);
|
|
26
|
+
if (!match)
|
|
27
|
+
return null;
|
|
28
|
+
return [parseInt(match[1]), parseInt(match[2]), parseInt(match[3])];
|
|
29
|
+
}
|
|
30
|
+
function isSolidity08Plus(code) {
|
|
31
|
+
const version = parseSolidityVersion(code);
|
|
32
|
+
if (!version)
|
|
33
|
+
return false;
|
|
34
|
+
return version[0] > 0 || (version[0] === 0 && version[1] >= 8);
|
|
35
|
+
}
|
|
24
36
|
/**
|
|
25
37
|
* Scan file content for vulnerability patterns with context-aware detection
|
|
26
38
|
*/
|
|
27
39
|
function scanFileContent(content, filePath) {
|
|
28
40
|
const findings = [];
|
|
29
41
|
const lines = content.split('\n');
|
|
42
|
+
const skipOverflow = isSolidity08Plus(content) || /SafeMath|using\s+SafeMath\s+for/.test(content);
|
|
30
43
|
for (const pattern of patterns_js_1.VULNERABILITY_PATTERNS) {
|
|
31
44
|
const regex = new RegExp(pattern.pattern.source, pattern.pattern.flags);
|
|
32
45
|
let match;
|
|
33
46
|
while ((match = regex.exec(content)) !== null) {
|
|
47
|
+
// Skip integer-overflow for Solidity >=0.8.0 (built-in overflow checks)
|
|
48
|
+
if (pattern.id === 'integer-overflow' && skipOverflow) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
// Skip unchecked-math-legacy for Solidity >=0.8.0 (built-in overflow checks)
|
|
52
|
+
if (pattern.id === 'unchecked-math-legacy' && skipOverflow) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
34
55
|
const beforeMatch = content.substring(0, match.index);
|
|
35
56
|
const lineNumber = beforeMatch.split('\n').length;
|
|
36
57
|
// Check if match is in a comment
|
|
@@ -68,6 +89,31 @@ function scanFileContent(content, filePath) {
|
|
|
68
89
|
});
|
|
69
90
|
}
|
|
70
91
|
}
|
|
92
|
+
// Context-aware: ReentrancyGuard suppression
|
|
93
|
+
const hasReentrancyGuard = /ReentrancyGuard|nonReentrant|reentrancyLock/.test(content);
|
|
94
|
+
if (hasReentrancyGuard) {
|
|
95
|
+
for (const finding of findings) {
|
|
96
|
+
if (finding.pattern_id === 'reentrancy') {
|
|
97
|
+
const funcStart = Math.max(0, finding.line_start - 10);
|
|
98
|
+
const funcEnd = Math.min(lines.length, finding.line_start);
|
|
99
|
+
const funcContext = lines.slice(funcStart, funcEnd).join('\n');
|
|
100
|
+
if (/nonReentrant/.test(funcContext)) {
|
|
101
|
+
finding.confidence = 0;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
finding.confidence *= 0.3;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Context-aware: tx.origin — only flag if used for actual authentication
|
|
110
|
+
const txOriginFindings = findings.filter((f) => f.pattern_id === 'tx-origin');
|
|
111
|
+
for (const finding of txOriginFindings) {
|
|
112
|
+
const line = lines[finding.line_start - 1] || '';
|
|
113
|
+
if (!/require.*tx\.origin|if.*tx\.origin|tx\.origin\s*==/.test(line)) {
|
|
114
|
+
finding.confidence *= 0.2;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
71
117
|
// Context-aware detection for signature patterns
|
|
72
118
|
const signatureFindings = findings.filter((f) => f.pattern_id.startsWith('signature-'));
|
|
73
119
|
for (const finding of signatureFindings) {
|
|
@@ -82,7 +128,8 @@ function scanFileContent(content, filePath) {
|
|
|
82
128
|
/chainId|block\.chainid|domainSeparator/.test(context)) {
|
|
83
129
|
finding.confidence *= 0.3;
|
|
84
130
|
}
|
|
85
|
-
if (finding.pattern_id === 'signature-no-deadline' &&
|
|
131
|
+
if (finding.pattern_id === 'signature-no-deadline' &&
|
|
132
|
+
/deadline|expiry|validUntil/.test(context)) {
|
|
86
133
|
finding.confidence *= 0.3;
|
|
87
134
|
}
|
|
88
135
|
}
|
|
@@ -97,8 +144,63 @@ function scanFileContent(content, filePath) {
|
|
|
97
144
|
finding.confidence *= 0.3;
|
|
98
145
|
}
|
|
99
146
|
}
|
|
147
|
+
// Context-aware: Missing reentrancy guard — suppress if ReentrancyGuard is present
|
|
148
|
+
const missingReentrancyFindings = findings.filter((f) => f.pattern_id === 'missing-reentrancy-guard');
|
|
149
|
+
for (const finding of missingReentrancyFindings) {
|
|
150
|
+
if (hasReentrancyGuard) {
|
|
151
|
+
const funcStart = Math.max(0, finding.line_start - 10);
|
|
152
|
+
const funcEnd = Math.min(lines.length, finding.line_start + 10);
|
|
153
|
+
const funcContext = lines.slice(funcStart, funcEnd).join('\n');
|
|
154
|
+
if (/nonReentrant/.test(funcContext)) {
|
|
155
|
+
finding.confidence = 0;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
finding.confidence *= 0.3;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Context-aware: Unsafe ERC20 transfer — reduce confidence if SafeERC20 is imported
|
|
163
|
+
const unsafeTransferFindings = findings.filter((f) => f.pattern_id === 'unsafe-erc20-transfer');
|
|
164
|
+
const hasSafeERC20 = /import.*SafeERC20|using\s+SafeERC20\s+for/.test(content);
|
|
165
|
+
for (const finding of unsafeTransferFindings) {
|
|
166
|
+
if (hasSafeERC20) {
|
|
167
|
+
finding.confidence *= 0.2; // Likely false positive if SafeERC20 is used
|
|
168
|
+
}
|
|
169
|
+
// Check if it's actually an ERC20 contract context
|
|
170
|
+
const contextLines = lines
|
|
171
|
+
.slice(Math.max(0, finding.line_start - 20), Math.min(lines.length, finding.line_start + 5))
|
|
172
|
+
.join('\n');
|
|
173
|
+
if (!/ERC20|_transfer|_balances|allowance/.test(contextLines)) {
|
|
174
|
+
finding.confidence *= 0.3; // Not in ERC20 context
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Context-aware: Centralization risk — reduce confidence for test or mock contracts
|
|
178
|
+
const centralizationFindings = findings.filter((f) => f.pattern_id === 'centralization-risk');
|
|
179
|
+
for (const finding of centralizationFindings) {
|
|
180
|
+
if (/test|mock|demo|example/i.test(filePath) ||
|
|
181
|
+
/contract\s+\w*(?:Test|Mock|Demo)/i.test(content)) {
|
|
182
|
+
finding.confidence *= 0.2; // Test contracts can have centralized control
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Context-aware: Storage collision — only relevant for upgradeable contracts
|
|
186
|
+
const storageFindings = findings.filter((f) => f.pattern_id === 'storage-collision');
|
|
187
|
+
for (const finding of storageFindings) {
|
|
188
|
+
if (!/upgradeable|proxy|implementation|initialize/i.test(content)) {
|
|
189
|
+
finding.confidence *= 0.2; // Not relevant for non-upgradeable contracts
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Context-aware: Oracle staleness — check if validation exists
|
|
193
|
+
const oracleFindings = findings.filter((f) => f.pattern_id === 'price-oracle-stale');
|
|
194
|
+
for (const finding of oracleFindings) {
|
|
195
|
+
const startLine = Math.max(0, finding.line_start - 10);
|
|
196
|
+
const endLine = Math.min(lines.length, finding.line_start + 10);
|
|
197
|
+
const context = lines.slice(startLine, endLine).join('\n');
|
|
198
|
+
if (/updatedAt|timestamp.*>|block\.timestamp.*-.*</.test(context)) {
|
|
199
|
+
finding.confidence *= 0.3; // Validation appears to be present
|
|
200
|
+
}
|
|
201
|
+
}
|
|
100
202
|
// Filter out low confidence findings after context analysis
|
|
101
|
-
const filteredFindings = findings.filter(f => f.confidence >= 0.3);
|
|
203
|
+
const filteredFindings = findings.filter((f) => f.confidence >= 0.3);
|
|
102
204
|
// Deduplicate findings by fingerprint
|
|
103
205
|
const seen = new Set();
|
|
104
206
|
const uniqueFindings = filteredFindings.filter((f) => {
|
|
@@ -118,7 +220,7 @@ function generateFindingFingerprint(filePath, patternId, lineNumber, codeSnippet
|
|
|
118
220
|
let hash = 0;
|
|
119
221
|
for (let i = 0; i < content.length; i++) {
|
|
120
222
|
const char = content.charCodeAt(i);
|
|
121
|
-
hash = (
|
|
223
|
+
hash = (hash << 5) - hash + char;
|
|
122
224
|
hash = hash & hash; // Convert to 32bit integer
|
|
123
225
|
}
|
|
124
226
|
return Math.abs(hash).toString(36);
|
|
@@ -158,6 +260,6 @@ function sortFindings(findings) {
|
|
|
158
260
|
function filterBySeverity(findings, minSeverity) {
|
|
159
261
|
const severityOrder = { CRITICAL: 0, HIGH: 1, MEDIUM: 2, LOW: 3 };
|
|
160
262
|
const minLevel = severityOrder[minSeverity];
|
|
161
|
-
return findings.filter(finding => severityOrder[finding.severity] <= minLevel);
|
|
263
|
+
return findings.filter((finding) => severityOrder[finding.severity] <= minLevel);
|
|
162
264
|
}
|
|
163
265
|
//# sourceMappingURL=scanner.js.map
|
package/dist/lib/scanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/lib/scanner.ts"],"names":[],"mappings":";;AAwBA,4BAQC;
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/lib/scanner.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export declare class Logger {
|
|
2
2
|
private static debugMode;
|
|
3
|
+
private static stderrMode;
|
|
3
4
|
static setDebugMode(enabled: boolean): void;
|
|
5
|
+
/** When true, all output goes to stderr (keeps stdout clean for JSON/SARIF piping) */
|
|
6
|
+
static setStderrMode(enabled: boolean): void;
|
|
7
|
+
private static out;
|
|
4
8
|
static info(message: string, ...args: any[]): void;
|
|
5
9
|
static success(message: string, ...args: any[]): void;
|
|
6
10
|
static warn(message: string, ...args: any[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAS;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAS;IACjC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAS;IAElC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI3C,sFAAsF;IACtF,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI5C,OAAO,CAAC,MAAM,CAAC,GAAG;IAQlB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIlD,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIrD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIlD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAInD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAMnD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIjD,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAItC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAGlC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -7,14 +7,27 @@ exports.Logger = void 0;
|
|
|
7
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
8
|
class Logger {
|
|
9
9
|
static debugMode = false;
|
|
10
|
+
static stderrMode = false;
|
|
10
11
|
static setDebugMode(enabled) {
|
|
11
12
|
Logger.debugMode = enabled;
|
|
12
13
|
}
|
|
14
|
+
/** When true, all output goes to stderr (keeps stdout clean for JSON/SARIF piping) */
|
|
15
|
+
static setStderrMode(enabled) {
|
|
16
|
+
Logger.stderrMode = enabled;
|
|
17
|
+
}
|
|
18
|
+
static out(message, ...args) {
|
|
19
|
+
if (Logger.stderrMode) {
|
|
20
|
+
process.stderr.write(`${message} ${args.join(' ')}\n`);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
console.log(message, ...args);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
13
26
|
static info(message, ...args) {
|
|
14
|
-
|
|
27
|
+
Logger.out(`${chalk_1.default.blue('ℹ')} ${message}`, ...args);
|
|
15
28
|
}
|
|
16
29
|
static success(message, ...args) {
|
|
17
|
-
|
|
30
|
+
Logger.out(`${chalk_1.default.green('✓')} ${message}`, ...args);
|
|
18
31
|
}
|
|
19
32
|
static warn(message, ...args) {
|
|
20
33
|
console.warn(chalk_1.default.yellow('⚠'), message, ...args);
|
|
@@ -24,11 +37,11 @@ class Logger {
|
|
|
24
37
|
}
|
|
25
38
|
static debug(message, ...args) {
|
|
26
39
|
if (Logger.debugMode) {
|
|
27
|
-
|
|
40
|
+
Logger.out(`${chalk_1.default.gray('🐛')} ${chalk_1.default.gray(message)}`, ...args);
|
|
28
41
|
}
|
|
29
42
|
}
|
|
30
43
|
static log(message, ...args) {
|
|
31
|
-
|
|
44
|
+
Logger.out(message, ...args);
|
|
32
45
|
}
|
|
33
46
|
static highlight(text) {
|
|
34
47
|
return chalk_1.default.cyan(text);
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAa,MAAM;IACT,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAa,MAAM;IACT,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;IAElC,MAAM,CAAC,YAAY,CAAC,OAAgB;QAClC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC;IAC7B,CAAC;IAED,sFAAsF;IACtF,MAAM,CAAC,aAAa,CAAC,OAAgB;QACnC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;IAC9B,CAAC;IAEO,MAAM,CAAC,GAAG,CAAC,OAAe,EAAE,GAAG,IAAW;QAChD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW;QACzC,MAAM,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAe,EAAE,GAAG,IAAW;QAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW;QACzC,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,GAAG,IAAW;QAC1C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,GAAG,IAAW;QAC1C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,OAAe,EAAE,GAAG,IAAW;QACxC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,IAAY;QAC3B,OAAO,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,IAAY;QACrB,OAAO,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAY;QACtB,OAAO,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;;AAzDH,wBA0DC"}
|
package/dist/utils/spinner.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":"AAGA,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAM;gBAET,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":"AAGA,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAM;gBAET,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc;IAQxD,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI;IAKZ,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAK5B,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAKzB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAKzB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAKzB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK9B,QAAQ,CACN,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAC3F,IAAI;IAKP,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGrC;AAED,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAA4B,CAAC"}
|
package/dist/utils/spinner.js
CHANGED
|
@@ -7,10 +7,11 @@ exports.createSpinner = exports.Spinner = void 0;
|
|
|
7
7
|
const ora_1 = __importDefault(require("ora"));
|
|
8
8
|
class Spinner {
|
|
9
9
|
spinner;
|
|
10
|
-
constructor(text) {
|
|
10
|
+
constructor(text, stream) {
|
|
11
11
|
this.spinner = (0, ora_1.default)({
|
|
12
12
|
text,
|
|
13
|
-
color: 'cyan'
|
|
13
|
+
color: 'cyan',
|
|
14
|
+
stream: stream || process.stderr,
|
|
14
15
|
});
|
|
15
16
|
}
|
|
16
17
|
start() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":";;;;;;AAAA,8CAA+B;AAG/B,MAAa,OAAO;IACV,OAAO,CAAM;IAErB,YAAY,IAAY;
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":";;;;;;AAAA,8CAA+B;AAG/B,MAAa,OAAO;IACV,OAAO,CAAM;IAErB,YAAY,IAAY,EAAE,MAA8B;QACtD,IAAI,CAAC,OAAO,GAAG,IAAA,aAAG,EAAC;YACjB,IAAI;YACJ,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM;SACjC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,IAAa;QACnB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAa;QAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAa;QAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAa;QAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CACN,KAA4F;QAE5F,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAY;QACxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACF;AAxDD,0BAwDC;AAEM,MAAM,aAAa,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;AAA7D,QAAA,aAAa,iBAAgD"}
|