@offgridsec/kira-lite-mcp 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +486 -34
- package/dist/config.d.ts +1 -0
- package/dist/config.js +1 -1
- package/dist/core/engines/kira-core.js +1 -1
- package/dist/core/engines/osv.js +1 -485
- package/dist/core/engines/runner.js +1 -30
- package/dist/core/scanner.js +1 -101
- package/dist/core/types.js +1 -1
- package/dist/core/utils.js +1 -70
- package/dist/index.js +1 -477
- package/dist/rules/c-cpp.js +1 -202
- package/dist/rules/cicd.js +1 -144
- package/dist/rules/csharp.js +1 -207
- package/dist/rules/docker.js +1 -143
- package/dist/rules/go.js +1 -184
- package/dist/rules/index.js +1 -147
- package/dist/rules/java.js +1 -1
- package/dist/rules/javascript-extended.js +1 -1
- package/dist/rules/javascript.js +1 -1
- package/dist/rules/kubernetes.js +1 -1
- package/dist/rules/php.js +1 -1
- package/dist/rules/python-extended.js +1 -1
- package/dist/rules/python.js +1 -1
- package/dist/rules/ruby.js +1 -1
- package/dist/rules/secrets-extended.js +1 -1
- package/dist/rules/secrets.js +1 -1
- package/dist/rules/shell.js +1 -1
- package/dist/rules/terraform.js +1 -1
- package/dist/telemetry.js +1 -1
- package/dist/tools/fix-vulnerability.js +1 -1
- package/dist/tools/scan-code.js +1 -1
- package/dist/tools/scan-dependencies.js +1 -1
- package/dist/tools/scan-diff.js +1 -1
- package/dist/tools/scan-file.js +1 -1
- package/package.json +1 -1
|
@@ -1,30 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { promisify } from "node:util";
|
|
3
|
-
import { which } from "../utils.js";
|
|
4
|
-
const execFileAsync = promisify(execFile);
|
|
5
|
-
export async function runCommand(command, args, options) {
|
|
6
|
-
try {
|
|
7
|
-
const result = await execFileAsync(command, args, {
|
|
8
|
-
timeout: options?.timeout ?? 30_000,
|
|
9
|
-
cwd: options?.cwd,
|
|
10
|
-
maxBuffer: 10 * 1024 * 1024,
|
|
11
|
-
encoding: "utf-8",
|
|
12
|
-
...(options?.stdin ? { input: options.stdin } : {}),
|
|
13
|
-
});
|
|
14
|
-
return {
|
|
15
|
-
stdout: String(result.stdout),
|
|
16
|
-
stderr: String(result.stderr),
|
|
17
|
-
exitCode: 0,
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
catch (err) {
|
|
21
|
-
return {
|
|
22
|
-
stdout: err.stdout ?? "",
|
|
23
|
-
stderr: err.stderr ?? err.message ?? String(err),
|
|
24
|
-
exitCode: err.code === "ETIMEDOUT" ? -1 : (err.status ?? 1),
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
export async function isToolAvailable(name) {
|
|
29
|
-
return (await which(name)) !== null;
|
|
30
|
-
}
|
|
1
|
+
(function(_0x412ec9,_0x4d1004){const _0x41cf4e={_0x254c56:0x1b0,_0x4ff743:0x1b6,_0x86d5e2:0x1b6,_0x15e3e3:0x1ae,_0x388516:0x1a9,_0x2c252e:0x21e,_0x3bb451:0x221,_0x2fa0e9:0x1a6,_0x4908e5:0x1b0,_0x4add30:0x227,_0x131ca4:0x22a,_0x4b310a:0x1a8},_0xaf8b90={_0x118f1d:0x7c},_0x5b7ea7=_0x412ec9();function _0x7a9f14(_0x1f4126,_0x16a6cb){return _0x4969(_0x1f4126-0xa,_0x16a6cb);}function _0x5bd234(_0x1be6ef,_0x16f175){return _0x4969(_0x1be6ef-_0xaf8b90._0x118f1d,_0x16f175);}while(!![]){try{const _0x4ae21b=parseInt(_0x7a9f14(_0x41cf4e._0x254c56,_0x41cf4e._0x4ff743))/(-0x69d+0xc7a+-0x3c*0x19)*(-parseInt(_0x7a9f14(0x1b6,_0x41cf4e._0x86d5e2))/(0x19d0+0xc83+-0x1*0x2651))+parseInt(_0x7a9f14(_0x41cf4e._0x15e3e3,_0x41cf4e._0x388516))/(-0x3*-0x125+0x13d*-0x10+0x1064)+parseInt(_0x5bd234(_0x41cf4e._0x2c252e,0x223))/(0x1cf2+-0x537+-0xd*0x1d3)+-parseInt(_0x5bd234(_0x41cf4e._0x3bb451,0x220))/(0x1592+-0x1*-0x1fa8+-0x3535)+-parseInt(_0x7a9f14(_0x41cf4e._0x2fa0e9,_0x41cf4e._0x4908e5))/(-0x29*0x29+0x1*-0x2415+0xaab*0x4)+-parseInt(_0x5bd234(_0x41cf4e._0x4add30,_0x41cf4e._0x131ca4))/(0x2528+-0x12*-0xc2+0x1*-0x32c5)*(parseInt(_0x5bd234(0x22e,0x234))/(0x2681+-0x19*0x48+-0x1f71))+-parseInt(_0x7a9f14(_0x41cf4e._0x4b310a,0x1a5))/(0x5*0x2b1+0x4ee+-0x125a)*(-parseInt(_0x5bd234(0x22a,0x221))/(0x10f*-0x1d+0x2c2+0xd*0x227));if(_0x4ae21b===_0x4d1004)break;else _0x5b7ea7['push'](_0x5b7ea7['shift']());}catch(_0x32c3cc){_0x5b7ea7['push'](_0x5b7ea7['shift']());}}}(_0x24c2,0x1*-0xd6244+0x1e572+0x12e9dc));import{execFile}from'node:child_process';function _0x24c2(){const _0x19e600=['AvfssuW','C3rKB3u','D0LeqLu','mteXotmYme1XCLrjCa','oteZodaWt2Hmtezy','z3PzDxK','nZuYmdK0ouzntMDqCa','C3rKAw4','AMvmrfG','rvrjtuu','mZe5mJm0mfrJwxznAa','DxrMltG','mta4oduXngTgCxLJBW','nde4nJq4mej0tejnyG','mtK3D0ftywnf','C3rKzxi','re9vva','s2vpvvO','y3DK','n0nsswPNwq','mZG2mKvizu5YEa','BwvZC2e','mtbns2Lmr3e'];_0x24c2=function(){return _0x19e600;};return _0x24c2();}import{promisify}from'node:util';function _0x4969(_0x4d7864,_0x4936ef){_0x4d7864=_0x4d7864-(0x2cb+0x1*-0x51b+-0x3ec*-0x1);const _0xd9d091=_0x24c2();let _0x266e93=_0xd9d091[_0x4d7864];if(_0x4969['BPRrby']===undefined){var _0x4315a9=function(_0x5f40ea){const _0x57eaee='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x301e12='',_0x2deb1a='';for(let _0x5ed83f=0x1d5e+0x2c2+-0x2020,_0x2e1844,_0x2bad51,_0x36549c=0x74f+0x1df0+-0x253f*0x1;_0x2bad51=_0x5f40ea['charAt'](_0x36549c++);~_0x2bad51&&(_0x2e1844=_0x5ed83f%(-0x1*-0x32b+0x1*0xed1+-0x11f8)?_0x2e1844*(-0x13+-0xf3+-0x146*-0x1)+_0x2bad51:_0x2bad51,_0x5ed83f++%(-0x2e*0x89+0x8a1*-0x2+-0x14f2*-0x2))?_0x301e12+=String['fromCharCode'](0x26fc+-0x91*-0x12+-0x302f&_0x2e1844>>(-(-0x1*-0x10d3+0x511+-0x15e2)*_0x5ed83f&0x204*0x6+-0x1*-0x5dd+-0x11ef)):0xb11+0x110d+-0x1c1e){_0x2bad51=_0x57eaee['indexOf'](_0x2bad51);}for(let _0x440371=-0xb7*0x3+-0x63a*0x2+0x65*0x25,_0x16989f=_0x301e12['length'];_0x440371<_0x16989f;_0x440371++){_0x2deb1a+='%'+('00'+_0x301e12['charCodeAt'](_0x440371)['toString'](0xce2+0x10f0+-0x1dc2))['slice'](-(-0x67+0x2527+-0x24be));}return decodeURIComponent(_0x2deb1a);};_0x4969['bUrqmG']=_0x4315a9,_0x4969['rrQKGE']={},_0x4969['BPRrby']=!![];}const _0x8408be=_0xd9d091[0x71*0x1d+0xd65*-0x2+0xdfd],_0x4a011f=_0x4d7864+_0x8408be,_0x54dcce=_0x4969['rrQKGE'][_0x4a011f];return!_0x54dcce?(_0x266e93=_0x4969['bUrqmG'](_0x266e93),_0x4969['rrQKGE'][_0x4a011f]=_0x266e93):_0x266e93=_0x54dcce,_0x266e93;}import{which}from'../utils.js';const execFileAsync=promisify(execFile);export async function runCommand(_0x52ff0a,_0x569ec2,_0x5e655a){const _0x54109a={_0x58938b:0x3d,_0x528616:0x445,_0x4b11d8:0x440,_0x2983d2:0x449,_0x16119c:0x444,_0x3b3727:0x43f,_0x37e7dc:0x447,_0x240eb4:0x446,_0x43cad3:0x454,_0x7e55a7:0x450,_0x18ec1d:0x44f,_0x1eaf93:0x43,_0x4b53e5:0x4a,_0x98157f:0x44e,_0x5b15bd:0x446,_0x1e7473:0x456,_0x5b0bbb:0x44c,_0x39f969:0x37},_0x58e5c6={_0x5a5464:0x166};function _0x23bf49(_0x36d0e4,_0x282ed0){return _0x4969(_0x282ed0- -_0x58e5c6._0x5a5464,_0x36d0e4);}const _0x303847={'jeLDX':_0x23bf49(0x38,_0x54109a._0x58938b),'wIDBU':function(_0x4970cd,_0x16cb7e){return _0x4970cd(_0x16cb7e);},'iQRIL':function(_0xed5989,_0x5dc09a){return _0xed5989===_0x5dc09a;},'gzYuy':_0x40c1b5(_0x54109a._0x528616,0x440)+_0x23bf49(0x38,0x42)};function _0x40c1b5(_0x257803,_0x5a4fbd){return _0x4969(_0x5a4fbd-0x29f,_0x257803);}try{const _0x29c553={'timeout':_0x5e655a?.['timeo'+'ut']??-0x8b4+0xe7cf+-0x152f*0x5,'cwd':_0x5e655a?.[_0x40c1b5(_0x54109a._0x4b11d8,_0x54109a._0x2983d2)],'maxBuffer':(-0x25ea+0x6ee+0x1f06)*(0x67*-0x38+0x263b+-0xbb3)*(0x2*-0x969+0x3d7+-0x71*-0x2b),'encoding':_0x303847[_0x40c1b5(_0x54109a._0x16119c,_0x54109a._0x3b3727)],..._0x5e655a?.[_0x40c1b5(_0x54109a._0x37e7dc,0x43e)]?{'input':_0x5e655a[_0x40c1b5(_0x54109a._0x240eb4,0x43e)]}:{}},_0x486c81=await execFileAsync(_0x52ff0a,_0x569ec2,_0x29c553);return{'stdout':_0x303847[_0x40c1b5(_0x54109a._0x43cad3,_0x54109a._0x7e55a7)](String,_0x486c81[_0x40c1b5(0x45a,_0x54109a._0x18ec1d)+'t']),'stderr':_0x303847['wIDBU'](String,_0x486c81['stder'+'r']),'exitCode':0x0};}catch(_0x4837a7){return{'stdout':_0x4837a7[_0x23bf49(_0x54109a._0x1eaf93,_0x54109a._0x4b53e5)+'t']??'','stderr':_0x4837a7[_0x40c1b5(_0x54109a._0x98157f,_0x54109a._0x5b15bd)+'r']??_0x4837a7[_0x40c1b5(_0x54109a._0x1e7473,_0x54109a._0x5b0bbb)+'ge']??_0x303847[_0x40c1b5(0x453,0x450)](String,_0x4837a7),'exitCode':_0x303847[_0x23bf49(0x46,0x49)](_0x4837a7['code'],_0x303847[_0x23bf49(0x3d,_0x54109a._0x39f969)])?-(-0x206d+-0x78d+0x27fb):_0x4837a7['statu'+'s']??-0x14e6+0x4*0x649+-0x43d};}}export async function isToolAvailable(_0x44e9de){const _0x22eff9={_0x5a5f87:0xdc};function _0x2452ee(_0x186a2f,_0x87ac36){return _0x4969(_0x186a2f- -0x7b,_0x87ac36);}const _0x23b64c={};_0x23b64c[_0x11dfe5(_0x22eff9._0x5a5f87,0xe7)]=function(_0x48b82f,_0x26fc9f){return _0x48b82f!==_0x26fc9f;};function _0x11dfe5(_0x3221e0,_0x2d1d23){return _0x4969(_0x3221e0- -0xcd,_0x2d1d23);}const _0x361e46=_0x23b64c;return _0x361e46[_0x11dfe5(0xdc,0xd4)](await which(_0x44e9de),null);}
|
package/dist/core/scanner.js
CHANGED
|
@@ -1,101 +1 @@
|
|
|
1
|
-
import { detectLanguage, getRulesForLanguage } from "../rules/index.js";
|
|
2
|
-
import { runKiraCore } from "./engines/kira-core.js";
|
|
3
|
-
export class KiraScanner {
|
|
4
|
-
/**
|
|
5
|
-
* Synchronous regex-only scan (fast fallback, always available).
|
|
6
|
-
*/
|
|
7
|
-
scanRegex(options) {
|
|
8
|
-
const start = Date.now();
|
|
9
|
-
const language = detectLanguage(options.filename, options.language);
|
|
10
|
-
const rules = getRulesForLanguage(language);
|
|
11
|
-
const lines = options.code.split("\n");
|
|
12
|
-
const findings = [];
|
|
13
|
-
for (const rule of rules) {
|
|
14
|
-
for (let i = 0; i < lines.length; i++) {
|
|
15
|
-
const line = lines[i];
|
|
16
|
-
rule.pattern.lastIndex = 0;
|
|
17
|
-
const match = rule.pattern.exec(line);
|
|
18
|
-
if (match) {
|
|
19
|
-
const isDuplicate = findings.some((f) => f.id === rule.id && f.line === i + 1);
|
|
20
|
-
if (isDuplicate)
|
|
21
|
-
continue;
|
|
22
|
-
findings.push({
|
|
23
|
-
id: rule.id,
|
|
24
|
-
severity: rule.severity,
|
|
25
|
-
cwe: rule.cwe,
|
|
26
|
-
title: rule.title,
|
|
27
|
-
description: rule.description,
|
|
28
|
-
line: i + 1,
|
|
29
|
-
column: match.index + 1,
|
|
30
|
-
snippet: line.trim(),
|
|
31
|
-
fix: rule.fix,
|
|
32
|
-
engine: "regex",
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return {
|
|
38
|
-
findings,
|
|
39
|
-
status: {
|
|
40
|
-
engine: "regex",
|
|
41
|
-
available: true,
|
|
42
|
-
findingsCount: findings.length,
|
|
43
|
-
durationMs: Date.now() - start,
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Full async scan.
|
|
49
|
-
*
|
|
50
|
-
* Strategy:
|
|
51
|
-
* 1. If kira-core Go binary is available → use it (single binary, has everything)
|
|
52
|
-
* 2. Otherwise → fall back to regex engine
|
|
53
|
-
*/
|
|
54
|
-
async scan(options) {
|
|
55
|
-
const language = detectLanguage(options.filename, options.language);
|
|
56
|
-
const lines = options.code.split("\n");
|
|
57
|
-
// Strategy 1: Try kira-core binary (single Go binary with everything compiled in)
|
|
58
|
-
const kiraCoreResult = await runKiraCore(options.code, language, options.filename);
|
|
59
|
-
if (kiraCoreResult?.available) {
|
|
60
|
-
return kiraCoreResult.result;
|
|
61
|
-
}
|
|
62
|
-
// Strategy 2: Fall back to regex engine
|
|
63
|
-
const regexResult = this.scanRegex(options);
|
|
64
|
-
const severityOrder = { critical: 0, high: 1, medium: 2, low: 3, info: 4 };
|
|
65
|
-
regexResult.findings.sort((a, b) => {
|
|
66
|
-
const sevDiff = severityOrder[a.severity] - severityOrder[b.severity];
|
|
67
|
-
return sevDiff !== 0 ? sevDiff : a.line - b.line;
|
|
68
|
-
});
|
|
69
|
-
const summary = this.buildSummary(regexResult.findings, language, lines.length);
|
|
70
|
-
return {
|
|
71
|
-
status: regexResult.findings.length > 0 ? "vulnerabilities_found" : "clean",
|
|
72
|
-
language,
|
|
73
|
-
scannedLines: lines.length,
|
|
74
|
-
findings: regexResult.findings,
|
|
75
|
-
summary,
|
|
76
|
-
engines: [regexResult.status],
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
buildSummary(findings, language, totalLines) {
|
|
80
|
-
let summary = `Kira-Lite scanned ${totalLines} lines of ${language}.`;
|
|
81
|
-
if (findings.length === 0) {
|
|
82
|
-
summary += " No vulnerabilities detected.";
|
|
83
|
-
return summary;
|
|
84
|
-
}
|
|
85
|
-
const critical = findings.filter((f) => f.severity === "critical").length;
|
|
86
|
-
const high = findings.filter((f) => f.severity === "high").length;
|
|
87
|
-
const medium = findings.filter((f) => f.severity === "medium").length;
|
|
88
|
-
const low = findings.filter((f) => f.severity === "low").length;
|
|
89
|
-
const parts = [];
|
|
90
|
-
if (critical > 0)
|
|
91
|
-
parts.push(`${critical} critical`);
|
|
92
|
-
if (high > 0)
|
|
93
|
-
parts.push(`${high} high`);
|
|
94
|
-
if (medium > 0)
|
|
95
|
-
parts.push(`${medium} medium`);
|
|
96
|
-
if (low > 0)
|
|
97
|
-
parts.push(`${low} low`);
|
|
98
|
-
summary += ` Found ${findings.length} vulnerabilities: ${parts.join(", ")}.`;
|
|
99
|
-
return summary;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
1
|
+
function _0x2702d2(_0x31a8aa,_0x4f265f){return _0x2e55(_0x31a8aa- -0x31c,_0x4f265f);}function _0x1e3c(){const _0x348e3e=['ndG4nJiZnNHnyNHwqW','Axr5','zgv0zwm','mtbjvgHuCKq','DgLLCYa','zwDLEa','uhPYz0q','zMLSzw4','mZa3mJC5nJfhsuvTtuu','y2fS','mLLIEhnJDa','ywDL','yNvPBgq','mte1CMfOChne','C2v2zxi','CMTrzwq','DgL0Bgu','C3rHDhu','mJi5ode4Aefyq1vg','nti5owPXyKT5Eq','Aw5MBW','zxHLyW','igXVDW','t3Hpvfy','DgvKlG','t0zxy2u','Cgf0Dgu','BgfZDeK','CMvZDwW','BM93','r0j0vgy','rhvpuxO','yw1L','BgfUz3u','C2nHBM4','BgvUz3q','C2nHBLi','tgL0zsa','BMrLEa','D3bruNm','BgL0Awu','z2vYvLm','Axb0Aw8','ndmXnZjKv0D2zfm','sLbNsuC','BgvZCg4','CYbVzIa','mJyXnty0m1vctMTyAW','y29Kzq','AwnHBa','ihz1Bg4','mJiXnMLewvr3uq','ChvZAa','mJi2mZe1ogTrrKPgvG','C29Tzq','BgLUzq','ignYAxq','sgryte4','y3jPDgK','CMfIAwW','AgLNAa','s2LYys0','y2XLyw4','ywjSzq','C3bSAxq','DhjPBq','BwvKAxu','EfrHDLu','yxzHAwW','zMLSDgu','zgvZy3i','ig1LzgK','D3fMyu4','u3vTBwe','CMvNzxG','BMDZ','zwqG','CZOG','DNvSBMu'];_0x1e3c=function(){return _0x348e3e;};return _0x1e3c();}function _0x2e55(_0x49cc5a,_0x462c01){_0x49cc5a=_0x49cc5a-(-0x2616+-0x1a49+-0x25*-0x1c9);const _0x4a2e38=_0x1e3c();let _0x1ef7f8=_0x4a2e38[_0x49cc5a];if(_0x2e55['ONzFjB']===undefined){var _0x4d8874=function(_0x162749){const _0x1ddc7e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3d6ae9='',_0x20b128='';for(let _0x13e811=0x1*0x2214+-0x1c2f+-0x5e5,_0x4e943e,_0x8d8fa8,_0x61c494=0x1ed9*0x1+0x7*0x4d5+0x2*-0x2056;_0x8d8fa8=_0x162749['charAt'](_0x61c494++);~_0x8d8fa8&&(_0x4e943e=_0x13e811%(-0x2683+-0x205e+0x46e5)?_0x4e943e*(-0x1040+-0x247+0xd1*0x17)+_0x8d8fa8:_0x8d8fa8,_0x13e811++%(0xd4c+-0x1561+0x1*0x819))?_0x3d6ae9+=String['fromCharCode'](-0x1b3a+0x1d22+-0xe9&_0x4e943e>>(-(0xe8b+-0x2*-0x303+-0x148f)*_0x13e811&-0x248f+0x1588+0xf0d)):0x8*-0x1b4+-0x6af*-0x1+0x6f1){_0x8d8fa8=_0x1ddc7e['indexOf'](_0x8d8fa8);}for(let _0x1053b3=-0x68b*0x3+-0x22+-0x1*-0x13c3,_0x477232=_0x3d6ae9['length'];_0x1053b3<_0x477232;_0x1053b3++){_0x20b128+='%'+('00'+_0x3d6ae9['charCodeAt'](_0x1053b3)['toString'](0x374*-0x4+0xd40+0xa0))['slice'](-(-0x21ca+-0x1*-0x12be+-0x787*-0x2));}return decodeURIComponent(_0x20b128);};_0x2e55['ThseEz']=_0x4d8874,_0x2e55['NOReYQ']={},_0x2e55['ONzFjB']=!![];}const _0x2016b4=_0x4a2e38[-0xfaf+-0x2*0x1251+-0x1*-0x3451],_0x5e7893=_0x49cc5a+_0x2016b4,_0x2abb39=_0x2e55['NOReYQ'][_0x5e7893];return!_0x2abb39?(_0x1ef7f8=_0x2e55['ThseEz'](_0x1ef7f8),_0x2e55['NOReYQ'][_0x5e7893]=_0x1ef7f8):_0x1ef7f8=_0x2abb39,_0x1ef7f8;}(function(_0x904fa6,_0x1e0773){const _0x3d5481={_0x2dbb55:0xbc,_0x3819fc:0x150,_0x27acf0:0x14a,_0x57d7ae:0x178,_0x2e499d:0xa5,_0x389028:0xa9,_0x1ef1fb:0x89,_0x388829:0x8c,_0x286b32:0x154,_0x4fc4d5:0xad},_0x258482={_0x543b9e:0x12c},_0x39896a={_0x108498:0x325};function _0x538ca2(_0x3ea943,_0x497626){return _0x2e55(_0x497626- -_0x39896a._0x108498,_0x3ea943);}function _0x27830b(_0x5a8cd4,_0xb2b01b){return _0x2e55(_0x5a8cd4- -_0x258482._0x543b9e,_0xb2b01b);}const _0x9c722=_0x904fa6();while(!![]){try{const _0x449490=-parseInt(_0x27830b(0xd0,_0x3d5481._0x2dbb55))/(0x1*-0x19c6+-0x1447+-0x7ad*-0x6)*(-parseInt(_0x538ca2(-_0x3d5481._0x3819fc,-_0x3d5481._0x27acf0))/(-0x1e70+-0x22a8+0xd*0x502))+parseInt(_0x538ca2(-_0x3d5481._0x57d7ae,-0x174))/(-0x1fb2*-0x1+-0x23b8+0x1*0x409)+parseInt(_0x27830b(_0x3d5481._0x2e499d,0x7e))/(0x14f*-0xb+0x1949*0x1+-0x57*0x20)+parseInt(_0x538ca2(-0x148,-0x147))/(-0x11*-0x8d+-0x1074*0x2+0x1790)*(parseInt(_0x27830b(0xb7,_0x3d5481._0x389028))/(-0x273+-0x1*0x751+0x9ca))+-parseInt(_0x27830b(0xb8,0xcb))/(0xf9f+-0x2703+-0x5*-0x4af)*(-parseInt(_0x27830b(_0x3d5481._0x1ef1fb,_0x3d5481._0x388829))/(0xf3*0xc+0x811+-0x136d))+parseInt(_0x27830b(0x8b,0x82))/(0x1*-0x12f+-0x1cbb+0x1df3)+parseInt(_0x538ca2(-_0x3d5481._0x286b32,-0x151))/(-0x20cd+0xef*0x1f+0x2*0x1f3)*(-parseInt(_0x27830b(_0x3d5481._0x4fc4d5,0x8f))/(0x2693+-0x7f1+0x1e97*-0x1));if(_0x449490===_0x1e0773)break;else _0x9c722['push'](_0x9c722['shift']());}catch(_0x2cad63){_0x9c722['push'](_0x9c722['shift']());}}}(_0x1e3c,0x866f9+0xa2805+-0x81a1d*0x1));function _0x4b1670(_0x2bec76,_0x2dc11c){const _0x3a4e3d={_0x20a86a:0x59};return _0x2e55(_0x2bec76- -_0x3a4e3d._0x20a86a,_0x2dc11c);}import{detectLanguage,getRulesForLanguage}from'../rules/index.js';import{runKiraCore}from'./engines/kira-core.js';export class KiraScanner{[_0x2702d2(-0x127,-0x12e)+_0x2702d2(-0x146,-0x13a)](_0x3cf8bc){const _0x4b7117={_0x14f3db:0x1d1,_0x36080e:0x1b7,_0x747ab2:0x1da,_0x9a34cd:0x1cd,_0x525540:0x1ad,_0x13e8b3:0x1e5,_0x48f2a4:0x1e7,_0x2cc495:0x1c8,_0x14829e:0x1bb,_0x1deb23:0x19f,_0xc61ae8:0x1be,_0x4efe30:0x1ae,_0x52fcc4:0x1c3,_0x42091a:0x187,_0x372fb5:0x1d7,_0x3b42cf:0x1cc,_0x45c239:0x17a,_0x46511d:0x1ab,_0x337933:0x192,_0x369a5d:0x1af,_0x12aa0a:0x19b,_0x428c22:0x1b9},_0x2a7973={'IBWro':function(_0xad4606,_0x178dab,_0xe8888e){return _0xad4606(_0x178dab,_0xe8888e);},'fKuUf':function(_0x16388c,_0x14bce1){return _0x16388c(_0x14bce1);},'qQrdx':function(_0x461f2b,_0x2fdd76){return _0x461f2b+_0x2fdd76;},'rkQed':function(_0x1a2fe5,_0x10ef1f){return _0x1a2fe5+_0x10ef1f;},'PzrgD':function(_0x2e1425,_0x4d6cae){return _0x2e1425-_0x4d6cae;}},_0xe63c8=Date[_0x3fd99a(0x1bd,0x1d8)]();function _0x3fd99a(_0x58bb9a,_0x1ee303){return _0x2702d2(_0x58bb9a-0x2eb,_0x1ee303);}const _0x32bcfe=_0x2a7973['IBWro'](detectLanguage,_0x3cf8bc[_0x391b4e(-_0x4b7117._0x14f3db,-0x1af)+'ame'],_0x3cf8bc[_0x391b4e(-_0x4b7117._0x36080e,-_0x4b7117._0x747ab2)+_0x391b4e(-_0x4b7117._0x9a34cd,-_0x4b7117._0x525540)]),_0x35f1bc=_0x2a7973['fKuUf'](getRulesForLanguage,_0x32bcfe),_0xe6f055=_0x3cf8bc[_0x391b4e(-0x1f7,-_0x4b7117._0x13e8b3)][_0x391b4e(-_0x4b7117._0x48f2a4,-_0x4b7117._0x2cc495)]('\x0a'),_0xd8f4a7=[];for(const _0x641988 of _0x35f1bc){for(let _0x46045c=-0x17c0+-0x88d*0x4+-0x1*-0x39f4;_0x46045c<_0xe6f055[_0x3fd99a(0x1c3,0x1ad)+'h'];_0x46045c++){const _0x3447b0=_0xe6f055[_0x46045c];_0x641988['patte'+'rn'][_0x3fd99a(_0x4b7117._0x14829e,_0x4b7117._0x1deb23)+_0x3fd99a(0x1c6,0x1a7)]=0x4ef*0x6+-0x16ea*0x1+-0xd6*0x8;const _0x3caec1=_0x641988[_0x391b4e(-_0x4b7117._0xc61ae8,-_0x4b7117._0x4efe30)+'rn'][_0x391b4e(-_0x4b7117._0x52fcc4,-_0x4b7117._0x747ab2)](_0x3447b0);if(_0x3caec1){const _0x5f351c=_0xd8f4a7[_0x3fd99a(_0x4b7117._0x42091a,0x193)](_0x270d58=>_0x270d58['id']===_0x641988['id']&&_0x270d58['line']===_0x46045c+(0x1c04+0x1*-0x37+-0x251*0xc));if(_0x5f351c)continue;_0xd8f4a7['push']({'id':_0x641988['id'],'severity':_0x641988['sever'+_0x391b4e(-_0x4b7117._0x372fb5,-0x1ce)],'cwe':_0x641988['cwe'],'title':_0x641988[_0x3fd99a(0x1b0,_0x4b7117._0x3b42cf)],'description':_0x641988[_0x3fd99a(0x197,_0x4b7117._0x45c239)+_0x391b4e(-0x1ae,-_0x4b7117._0x46511d)+'n'],'line':_0x2a7973['qQrdx'](_0x46045c,0x55*-0x2e+0x2669+-0x1722),'column':_0x2a7973[_0x3fd99a(0x1af,_0x4b7117._0x42091a)](_0x3caec1['index'],0x97*-0xb+-0x2574+0x2bf2),'snippet':_0x3447b0[_0x3fd99a(_0x4b7117._0x337933,_0x4b7117._0x369a5d)](),'fix':_0x641988['fix'],'engine':_0x3fd99a(_0x4b7117._0x12aa0a,0x19c)});}}}function _0x391b4e(_0x5e41e8,_0x325cf9){return _0x4b1670(_0x5e41e8- -0x350,_0x325cf9);}return{'findings':_0xd8f4a7,'status':{'engine':_0x3fd99a(0x19b,_0x4b7117._0x525540),'available':!![],'findingsCount':_0xd8f4a7[_0x3fd99a(_0x4b7117._0x52fcc4,0x1d9)+'h'],'durationMs':_0x2a7973[_0x3fd99a(0x1a6,_0x4b7117._0x428c22)](Date['now'](),_0xe63c8)}};}async['scan'](_0x34a369){const _0x205f77={_0x1bdaa0:0x4b3,_0x3cea77:0x4db,_0x16ee4b:0x4a3,_0xf63509:0x4bb,_0x2ea87c:0x430,_0x40c6b2:0x412,_0x376827:0x431,_0x580a93:0x41b,_0x1a5c50:0x41b,_0x171ab0:0x4a5,_0x2b5ccb:0x4bc,_0x9660d7:0x495,_0x3176d0:0x4a6,_0x23afdd:0x4eb,_0x525375:0x3ef,_0x384aad:0x4af,_0x28d1dc:0x42c,_0x1164e1:0x435,_0x306b72:0x4ac,_0x349302:0x3fb,_0x58cf43:0x4bd,_0x2997f0:0x4cc,_0x1ee993:0x3fd,_0x4341d7:0x4c4,_0x5a9f70:0x4c8,_0x1a57f5:0x4ca,_0x58a86b:0x4d2,_0x5a1f12:0x4cb,_0x4c9b58:0x4ee,_0x2b6b0a:0x4b0,_0xc7bd99:0x4c5},_0x189fe2={_0x488286:0x316,_0xe5ff5a:0x2f8,_0x4ba777:0x32d,_0x2acf38:0x2f0,_0x547bff:0x30f},_0x2cb9e4={_0x30099b:0x108},_0x13eaba={_0x2c2631:0x5ff},_0xd2001={'RbIFh':function(_0x48ef7d,_0x2cfe69){return _0x48ef7d-_0x2cfe69;},'HMjoQ':function(_0x40b46f,_0x1d59a5){return _0x40b46f!==_0x1d59a5;},'DuOQz':function(_0x12b410,_0x11f70f){return _0x12b410-_0x11f70f;},'lespn':function(_0x172da6,_0x16ef97,_0x1ba320,_0x3f0dc0){return _0x172da6(_0x16ef97,_0x1ba320,_0x3f0dc0);},'GBtTf':function(_0x233980,_0x531322){return _0x233980>_0x531322;},'OxOTV':_0xa077cf(_0x205f77._0x1bdaa0,_0x205f77._0x3cea77)+_0x578954(0x3fc,0x417)+'ities'+'_foun'+'d','OFWce':_0xa077cf(_0x205f77._0x16ee4b,0x4a8)};function _0xa077cf(_0x4e168b,_0x20a310){return _0x2702d2(_0x4e168b-_0x13eaba._0x2c2631,_0x20a310);}const _0x3b97a4=detectLanguage(_0x34a369[_0xa077cf(_0x205f77._0xf63509,0x496)+_0x578954(_0x205f77._0x2ea87c,_0x205f77._0x40c6b2)],_0x34a369[_0x578954(_0x205f77._0x376827,0x43d)+_0x578954(_0x205f77._0x580a93,_0x205f77._0x1a5c50)]),_0x3e8bd8=_0x34a369[_0x578954(0x3f1,0x3e9)][_0xa077cf(_0x205f77._0x171ab0,_0x205f77._0x2b5ccb)]('\x0a'),_0x19e75d=await _0xd2001[_0x578954(0x3ee,0x3e0)](runKiraCore,_0x34a369[_0xa077cf(_0x205f77._0x9660d7,0x47b)],_0x3b97a4,_0x34a369[_0xa077cf(0x4bb,_0x205f77._0x3176d0)+_0xa077cf(0x4d4,_0x205f77._0x23afdd)]);if(_0x19e75d?.[_0x578954(0x405,_0x205f77._0x525375)+_0xa077cf(0x4a4,_0x205f77._0x384aad)])return _0x19e75d[_0x578954(_0x205f77._0x28d1dc,_0x205f77._0x1164e1)+'t'];const _0x3247bd=this[_0xa077cf(0x4d8,0x4df)+_0xa077cf(0x4b9,_0x205f77._0x306b72)](_0x34a369),_0x4083a9={};_0x4083a9[_0x578954(_0x205f77._0x349302,0x3d5)+_0xa077cf(_0x205f77._0x58cf43,_0x205f77._0x2997f0)]=0x0,_0x4083a9[_0x578954(_0x205f77._0x1ee993,0x401)]=0x1,_0x4083a9[_0xa077cf(0x4a7,_0x205f77._0x4341d7)+'m']=0x2,_0x4083a9['low']=0x3,_0x4083a9[_0xa077cf(_0x205f77._0x5a9f70,_0x205f77._0x1a57f5)]=0x4;const _0x26cf5d=_0x4083a9;_0x3247bd['findi'+'ngs']['sort']((_0x4a4d4f,_0x2c0cf3)=>{function _0x2c98a5(_0x3d3e4c,_0x49c483){return _0xa077cf(_0x3d3e4c- -0x5f5,_0x49c483);}const _0x46c868=_0xd2001['RbIFh'](_0x26cf5d[_0x4a4d4f[_0x205875(_0x189fe2._0x488286,0x30f)+_0x205875(0x309,_0x189fe2._0xe5ff5a)]],_0x26cf5d[_0x2c0cf3['sever'+_0x2c98a5(-0x140,-0x139)]]);function _0x205875(_0x3974df,_0x2adf08){return _0x578954(_0x3974df- -_0x2cb9e4._0x30099b,_0x2adf08);}return _0xd2001['HMjoQ'](_0x46c868,-0x16d7*0x1+-0x65*0x17+0x1fea)?_0x46c868:_0xd2001[_0x205875(0x327,_0x189fe2._0x4ba777)](_0x4a4d4f[_0x205875(_0x189fe2._0x2acf38,_0x189fe2._0x547bff)],_0x2c0cf3[_0x2c98a5(-0x159,-0x166)]);});function _0x578954(_0x1e88cf,_0x46d8e2){return _0x4b1670(_0x1e88cf-0x298,_0x46d8e2);}const _0x3acd88=this['build'+'Summa'+'ry'](_0x3247bd['findi'+_0x578954(0x40c,0x421)],_0x3b97a4,_0x3e8bd8['lengt'+'h']);return{'status':_0xd2001[_0xa077cf(_0x205f77._0x58a86b,0x4d0)](_0x3247bd['findi'+'ngs'][_0x578954(0x433,0x440)+'h'],-0x16b*0x2+-0x1987+0x1c5d)?_0xd2001[_0xa077cf(_0x205f77._0x5a1f12,_0x205f77._0x4c9b58)]:_0xd2001[_0x578954(0x429,0x42a)],'language':_0x3b97a4,'scannedLines':_0x3e8bd8['lengt'+'h'],'findings':_0x3247bd['findi'+_0xa077cf(_0x205f77._0x2b6b0a,0x49c)],'summary':_0x3acd88,'engines':[_0x3247bd[_0xa077cf(_0x205f77._0xc7bd99,0x4c1)+'s']]};}[_0x2702d2(-0x13f,-0x159)+_0x2702d2(-0x151,-0x12f)+'ry'](_0x1dab6,_0x25b15e,_0x1b47f2){const _0x2cd8d8={_0xac5ff8:0x167,_0x1b91a0:0x2fd,_0x537006:0x30c,_0x34ec77:0x14c,_0x971e7:0x15e,_0x198447:0x15a,_0x16f980:0x148,_0x5eefb1:0x34a,_0x8ded32:0x33f,_0x180614:0x137,_0x3e6c84:0x158,_0x29efc6:0x2fa,_0x5977ec:0x306,_0x2a6b20:0x13e,_0x4dcc72:0x163,_0x3799a6:0x181,_0x2dd7b0:0x174,_0x1ef9da:0x167,_0x4c11c1:0x132,_0x1fe64e:0x16c,_0x3857d5:0x332,_0x4a57d8:0x33b,_0x2c8612:0x30e,_0x2517c2:0x30e,_0x32f9e9:0x32b,_0xe7f727:0x30e,_0x3cb254:0x139,_0x3d2fd8:0x30f,_0x4ffc29:0x2fc,_0x14f8ce:0x301,_0x104d51:0x300,_0x3fdd9b:0x17b,_0x29a0b2:0x158,_0x11bfca:0x156,_0x51fe8f:0x171,_0x54130f:0x32e,_0x79c106:0x314,_0x353af9:0x33b,_0x171c01:0x17d,_0x1d3bcb:0x31f,_0x2d83a4:0x162,_0x106c87:0x13f},_0x1eef20={_0xfdee15:0x2d8},_0x324233={};_0x324233[_0x2e7f42(-_0x2cd8d8._0xac5ff8,-0x159)]=function(_0x158fe7,_0x161cf9){return _0x158fe7===_0x161cf9;},_0x324233[_0x392b5d(_0x2cd8d8._0x1b91a0,_0x2cd8d8._0x537006)]='\x20No\x20v'+'ulner'+'abili'+_0x2e7f42(-0x15c,-_0x2cd8d8._0x34ec77)+_0x2e7f42(-_0x2cd8d8._0x971e7,-_0x2cd8d8._0x198447)+_0x2e7f42(-_0x2cd8d8._0x16f980,-0x130),_0x324233[_0x392b5d(_0x2cd8d8._0x5eefb1,_0x2cd8d8._0x8ded32)]=function(_0x535f07,_0x5f2d83){return _0x535f07>_0x5f2d83;},_0x324233['JPgIG']=function(_0x35120c,_0x81d9fd){return _0x35120c>_0x81d9fd;},_0x324233[_0x392b5d(0x309,0x302)]=function(_0x37b956,_0x14d7ad){return _0x37b956>_0x14d7ad;},_0x324233[_0x2e7f42(-_0x2cd8d8._0x180614,-_0x2cd8d8._0x3e6c84)]=function(_0x2ced41,_0x44529d){return _0x2ced41>_0x44529d;};const _0x333c37=_0x324233;let _0x25009a=_0x392b5d(_0x2cd8d8._0x29efc6,_0x2cd8d8._0x5977ec)+_0x392b5d(0x31d,0x33d)+_0x2e7f42(-_0x2cd8d8._0x2a6b20,-_0x2cd8d8._0x4dcc72)+_0x2e7f42(-_0x2cd8d8._0x4dcc72,-0x164)+_0x1b47f2+('\x20line'+_0x2e7f42(-_0x2cd8d8._0x3799a6,-_0x2cd8d8._0x2dd7b0))+_0x25b15e+'.';function _0x392b5d(_0x371637,_0x3ee6fa){return _0x4b1670(_0x3ee6fa-0x1a0,_0x371637);}if(_0x333c37[_0x2e7f42(-_0x2cd8d8._0x1ef9da,-0x14c)](_0x1dab6[_0x2e7f42(-0x13d,-_0x2cd8d8._0x4c11c1)+'h'],-0x1039+-0x224d+0x2*0x1943))return _0x25009a+=_0x333c37[_0x2e7f42(-_0x2cd8d8._0x1fe64e,-0x189)],_0x25009a;const _0x2fbe15=_0x1dab6[_0x2e7f42(-0x16a,-0x164)+'r'](_0x4f1c06=>_0x4f1c06[_0x2e7f42(-0x152,-0x12d)+_0x2e7f42(-0x15f,-0x160)]===_0x2e7f42(-0x175,-0x191)+_0x392b5d(0x334,0x321))[_0x392b5d(_0x2cd8d8._0x3857d5,_0x2cd8d8._0x4a57d8)+'h'],_0x3328bb=_0x1dab6[_0x392b5d(_0x2cd8d8._0x1b91a0,_0x2cd8d8._0x2c8612)+'r'](_0x2b4d66=>_0x2b4d66[_0x2e7f42(-0x152,-0x133)+_0x392b5d(0x33a,0x319)]===_0x392b5d(0x2f9,0x305))[_0x2e7f42(-0x13d,-0x153)+'h'];function _0x2e7f42(_0x30a20c,_0x33e567){return _0x4b1670(_0x30a20c- -_0x1eef20._0xfdee15,_0x33e567);}const _0x2020c5=_0x1dab6[_0x392b5d(0x330,_0x2cd8d8._0x2517c2)+'r'](_0x39e2f1=>_0x39e2f1[_0x392b5d(0x322,0x326)+'ity']===_0x2e7f42(-0x16d,-0x187)+'m')['lengt'+'h'],_0x5bed54=_0x1dab6[_0x392b5d(_0x2cd8d8._0x32f9e9,_0x2cd8d8._0xe7f727)+'r'](_0x5c1095=>_0x5c1095[_0x2e7f42(-0x152,-0x14e)+_0x392b5d(0x317,0x319)]==='low')['lengt'+'h'],_0x46ade3=[];if(_0x333c37[_0x2e7f42(-_0x2cd8d8._0x3cb254,-0x113)](_0x2fbe15,-0x1a07+-0x405+0xc*0x281))_0x46ade3[_0x392b5d(_0x2cd8d8._0x3d2fd8,0x2fd)](_0x2fbe15+(_0x392b5d(_0x2cd8d8._0x4ffc29,_0x2cd8d8._0x14f8ce)+_0x392b5d(0x315,0x2fa)));if(_0x333c37[_0x392b5d(_0x2cd8d8._0x104d51,0x2f5)](_0x3328bb,0x31b+0x1366+-0x1681))_0x46ade3[_0x2e7f42(-0x17b,-0x19a)](_0x3328bb+'\x20high');if(_0x333c37[_0x2e7f42(-0x176,-0x19b)](_0x2020c5,-0x61e+-0x1f01*0x1+0x251f))_0x46ade3[_0x2e7f42(-_0x2cd8d8._0x3fdd9b,-_0x2cd8d8._0x29a0b2)](_0x2020c5+(_0x2e7f42(-0x168,-_0x2cd8d8._0x11bfca)+'um'));if(_0x333c37['gerVS'](_0x5bed54,-0x2*0x2f+0xf7d+-0xf1f))_0x46ade3[_0x2e7f42(-0x17b,-_0x2cd8d8._0x51fe8f)](_0x5bed54+_0x392b5d(0x33c,_0x2cd8d8._0x54130f));return _0x25009a+='\x20Foun'+'d\x20'+_0x1dab6[_0x392b5d(_0x2cd8d8._0x79c106,_0x2cd8d8._0x353af9)+'h']+(_0x2e7f42(-_0x2cd8d8._0x171c01,-0x177)+'erabi'+_0x392b5d(_0x2cd8d8._0x1d3bcb,0x340)+_0x2e7f42(-_0x2cd8d8._0x2d83a4,-_0x2cd8d8._0x106c87))+_0x46ade3['join'](',\x20')+'.',_0x25009a;}}
|
package/dist/core/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export{};
|
package/dist/core/utils.js
CHANGED
|
@@ -1,70 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { promisify } from "node:util";
|
|
3
|
-
import { mkdtemp, writeFile, rm } from "node:fs/promises";
|
|
4
|
-
import { tmpdir } from "node:os";
|
|
5
|
-
import { join } from "node:path";
|
|
6
|
-
const execFileAsync = promisify(execFile);
|
|
7
|
-
const extensionMap = {
|
|
8
|
-
javascript: ".js",
|
|
9
|
-
typescript: ".ts",
|
|
10
|
-
python: ".py",
|
|
11
|
-
java: ".java",
|
|
12
|
-
go: ".go",
|
|
13
|
-
ruby: ".rb",
|
|
14
|
-
php: ".php",
|
|
15
|
-
csharp: ".cs",
|
|
16
|
-
c: ".c",
|
|
17
|
-
cpp: ".cpp",
|
|
18
|
-
rust: ".rs",
|
|
19
|
-
swift: ".swift",
|
|
20
|
-
kotlin: ".kt",
|
|
21
|
-
scala: ".scala",
|
|
22
|
-
shell: ".sh",
|
|
23
|
-
bash: ".sh",
|
|
24
|
-
yaml: ".yaml",
|
|
25
|
-
json: ".json",
|
|
26
|
-
xml: ".xml",
|
|
27
|
-
html: ".html",
|
|
28
|
-
css: ".css",
|
|
29
|
-
sql: ".sql",
|
|
30
|
-
dockerfile: "Dockerfile",
|
|
31
|
-
terraform: ".tf",
|
|
32
|
-
hcl: ".tf",
|
|
33
|
-
};
|
|
34
|
-
export function getExtensionForLanguage(language) {
|
|
35
|
-
if (!language)
|
|
36
|
-
return ".js";
|
|
37
|
-
return extensionMap[language.toLowerCase()] ?? ".txt";
|
|
38
|
-
}
|
|
39
|
-
export async function writeTempFile(code, language, filename) {
|
|
40
|
-
const dir = await mkdtemp(join(tmpdir(), "kira-"));
|
|
41
|
-
const ext = filename
|
|
42
|
-
? filename.slice(filename.lastIndexOf("."))
|
|
43
|
-
: getExtensionForLanguage(language);
|
|
44
|
-
const name = filename ? filename.replace(/[/\\]/g, "_") : `scan${ext}`;
|
|
45
|
-
const filePath = join(dir, name);
|
|
46
|
-
await writeFile(filePath, code, "utf-8");
|
|
47
|
-
return {
|
|
48
|
-
dir,
|
|
49
|
-
filePath,
|
|
50
|
-
cleanup: async () => {
|
|
51
|
-
try {
|
|
52
|
-
await rm(dir, { recursive: true, force: true });
|
|
53
|
-
}
|
|
54
|
-
catch {
|
|
55
|
-
// best effort
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
export async function which(command) {
|
|
61
|
-
try {
|
|
62
|
-
const cmd = process.platform === "win32" ? "where" : "which";
|
|
63
|
-
const { stdout } = await execFileAsync(cmd, [command], { timeout: 5000 });
|
|
64
|
-
const path = stdout.trim().split("\n")[0];
|
|
65
|
-
return path || null;
|
|
66
|
-
}
|
|
67
|
-
catch {
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
1
|
+
(function(_0x50fce3,_0x216c13){const _0x40caa6={_0x458daa:0xc6,_0x382bf3:0x267,_0x5a081a:0x25c,_0x4049cc:0x266,_0x59da9f:0x288,_0x2ea818:0x253},_0x3b0d3b={_0x457fda:0x1b4};function _0x4fa8ab(_0x2a6009,_0x1fb880){return _0x24fa(_0x2a6009- -_0x3b0d3b._0x457fda,_0x1fb880);}function _0x4f4133(_0x3201ec,_0xf8d80f){return _0x24fa(_0x3201ec- -0x342,_0xf8d80f);}const _0x1f00eb=_0x50fce3();while(!![]){try{const _0x4e3524=parseInt(_0x4fa8ab(-0xc5,-0xc4))/(0x1d5+-0x8ef*-0x1+-0xac3*0x1)+parseInt(_0x4fa8ab(-0xdf,-_0x40caa6._0x458daa))/(0x31*-0x31+-0x1336+0x1c99*0x1)*(parseInt(_0x4f4133(-_0x40caa6._0x382bf3,-_0x40caa6._0x5a081a))/(0x870+0x1d6d+-0x792*0x5))+-parseInt(_0x4f4133(-_0x40caa6._0x4049cc,-_0x40caa6._0x59da9f))/(0xa1c+-0xe06+0x3ee)*(-parseInt(_0x4f4133(-0x252,-0x22f))/(0x3fa+0x602*0x2+-0xff9))+parseInt(_0x4f4133(-0x24e,-0x242))/(0x63d*-0x2+0xff8*0x2+0x1*-0x1370)+-parseInt(_0x4fa8ab(-0xd0,-0xd5))/(-0x1221+0x2403+0x7*-0x28d)+-parseInt(_0x4f4133(-0x24c,-_0x40caa6._0x2ea818))/(-0x19*0x12+0x42c*-0x8+0x232a)+parseInt(_0x4fa8ab(-0xed,-0xdd))/(0x14f0+-0xa*0x6b+-0x1*0x10b9);if(_0x4e3524===_0x216c13)break;else _0x1f00eb['push'](_0x1f00eb['shift']());}catch(_0x55f5de){_0x1f00eb['push'](_0x1f00eb['shift']());}}}(_0x5216,-0x47e33+-0x5cf*0x2ad+0x1af7a*0x11));function _0x24fa(_0xb7444a,_0x42bcc9){_0xb7444a=_0xb7444a-(-0x4*0x157+0xf62+-0x4a9*0x2);const _0x15fab1=_0x5216();let _0x311bf3=_0x15fab1[_0xb7444a];if(_0x24fa['LzUTTW']===undefined){var _0x423f02=function(_0x2b7b80){const _0x2adece='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x50a473='',_0x4ec9fd='';for(let _0x216ce5=-0x2*-0xa0d+-0x2609+0x11ef,_0x722ce5,_0xa6d329,_0x474cfb=0xa*-0x9b+0x67*0x3f+-0x134b;_0xa6d329=_0x2b7b80['charAt'](_0x474cfb++);~_0xa6d329&&(_0x722ce5=_0x216ce5%(-0x38d+-0x2456+0x27e7)?_0x722ce5*(0x164a+-0x46*0x6a+0x6f2)+_0xa6d329:_0xa6d329,_0x216ce5++%(-0x1508+-0xd*0x2fc+-0x77b*-0x8))?_0x50a473+=String['fromCharCode'](0x4b9+-0x18d*-0x9+0x1*-0x11af&_0x722ce5>>(-(0x3b3+-0x1*-0x1003+-0xc2*0x1a)*_0x216ce5&-0x91+0x10b6+-0x101f)):-0x69*0x3b+-0xbe5+-0x2*-0x120c){_0xa6d329=_0x2adece['indexOf'](_0xa6d329);}for(let _0x5927b9=0x2*-0x42d+0x2d7*-0x5+-0x1*-0x168d,_0x1b70b5=_0x50a473['length'];_0x5927b9<_0x1b70b5;_0x5927b9++){_0x4ec9fd+='%'+('00'+_0x50a473['charCodeAt'](_0x5927b9)['toString'](-0xa*-0x11f+0x3bb*-0x9+0x1*0x166d))['slice'](-(-0x2*0xbb6+0x2f*-0x8f+0x31af));}return decodeURIComponent(_0x4ec9fd);};_0x24fa['sBQhiU']=_0x423f02,_0x24fa['mFGdtb']={},_0x24fa['LzUTTW']=!![];}const _0x3870a4=_0x15fab1[-0x2363+-0x653+0x14db*0x2],_0x3fc0ad=_0xb7444a+_0x3870a4,_0x58a4a7=_0x24fa['mFGdtb'][_0x3fc0ad];return!_0x58a4a7?(_0x311bf3=_0x24fa['sBQhiU'](_0x311bf3),_0x24fa['mFGdtb'][_0x3fc0ad]=_0x311bf3):_0x311bf3=_0x58a4a7,_0x311bf3;}import{execFile}from'node:child_process';import{promisify}from'node:util';import{mkdtemp,writeFile,rm}from'node:fs/promises';function _0x5216(){const _0x58fd07=['C2nHBG','nK1Kq1DZvW','zM9YBq','vMDlBee','DxrMltG','A3PmExi','EwfTBa','nduWodeZze5ushvN','mZa4mZzSufn1vgm','lNnO','CNvIEq','lNnJywW','t2DRvw4','Eg1S','BgfZDeK','u3nxAeq','nZG1mty0ogXpCvj3tW','lNn3Awy','lNjZ','Dg9mB3C','lNrZ','lNrM','CuPnwK4','lNjI','y3nZ','uuPqyLa','D2HLCMu','nti1ntK4CwDIr3rL','mtKWAxzKugfb','zxjdyxm','lMH0BwW','D2LUmZi','nJuWnta4DeHSv0He','zhnPq3C','nZi3mJa5nLbJweTssq','y3jPChq','lNbOCa','lMPHDMe','DhLWzxm','Cvjyueq','y3bW','C2L2zq','sgrADeO','ANnVBG','AhrTBa','lMnZ','zM9Yy2u','lMDV','CMvWBge','yMfZAa','AgnS','lMnWCa','y3nOyxi','lMPZB24','C3fS','A290BgK','A2LYys0','lNr4Da','mta5ntG4mdvIrejisfy','lMPZ','BMrLEe8','DgLTzw8','CgXHDgy','lMT0','z1bjzM0','CMzPBgu','CMvJDxi','AMf2yxm','C3bSAxq','lNb5','DhjPBq'];_0x5216=function(){return _0x58fd07;};return _0x5216();}import{tmpdir}from'node:os';import{join}from'node:path';const execFileAsync=promisify(execFile),_0x3448c8={};_0x3448c8[_0x3c3ee9(-0x217,-0x1fc)+_0x3c3ee9(-0x1f0,-0x1e2)]='.js',_0x3448c8[_0x3c3ee9(-0x1ed,-0x1f7)+_0x3c3ee9(-0x1f0,-0x1d8)]=_0x3c3ee9(-0x1ff,-0x217),_0x3448c8['pytho'+'n']=_0x20e63b(0xaa,0x8a),_0x3448c8['java']=_0x20e63b(0xd1,0xc0),_0x3448c8['go']=_0x3c3ee9(-0x22b,-0x21d),_0x3448c8[_0x3c3ee9(-0x209,-0x1fe)]=_0x3c3ee9(-0x1fc,-0x1dc),_0x3448c8['php']=_0x20e63b(0xd0,0xb0),_0x3448c8[_0x20e63b(0x99,0x81)+'p']=_0x3c3ee9(-0x22d,-0x21f),_0x3448c8['c']='.c',_0x3448c8[_0x3c3ee9(-0x232,-0x23d)]=_0x3c3ee9(-0x227,-0x247),_0x3448c8['rust']=_0x3c3ee9(-0x201,-0x218),_0x3448c8['swift']=_0x3c3ee9(-0x202,-0x1ec)+'t',_0x3448c8[_0x20e63b(0x9c,0xa1)+'n']=_0x3c3ee9(-0x21b,-0x239),_0x3448c8['scala']=_0x3c3ee9(-0x208,-0x210)+'a',_0x3448c8['shell']=_0x3c3ee9(-0x20a,-0x229),_0x3448c8[_0x20e63b(0x96,0x85)]=_0x3c3ee9(-0x20a,-0x1f1),_0x3448c8[_0x3c3ee9(-0x20d,-0x1f3)]='.yaml',_0x3448c8[_0x20e63b(0x90,0x8b)]=_0x3c3ee9(-0x225,-0x246),_0x3448c8[_0x20e63b(0xb9,0xba)]='.xml',_0x3448c8[_0x3c3ee9(-0x22e,-0x222)]=_0x20e63b(0xca,0xe7),_0x3448c8[_0x3c3ee9(-0x1fb,-0x217)]='.css';function _0x3c3ee9(_0x29684c,_0x4ede82){const _0x4e39e1={_0x3c7650:0x2e7};return _0x24fa(_0x29684c- -_0x4e39e1._0x3c7650,_0x4ede82);}_0x3448c8[_0x3c3ee9(-0x224,-0x222)]='.sql',_0x3448c8['docke'+_0x20e63b(0xa6,0xb0)]='Docke'+_0x20e63b(0xa6,0x9b),_0x3448c8['terra'+_0x3c3ee9(-0x211,-0x1f3)]=_0x20e63b(0xc1,0xb0),_0x3448c8[_0x20e63b(0x97,0xad)]=_0x20e63b(0xc1,0xa4);const extensionMap=_0x3448c8;function _0x20e63b(_0x1e7756,_0x301a35){return _0x24fa(_0x1e7756- -0x28,_0x301a35);}export function getExtensionForLanguage(_0x57ca09){const _0x29dbc9={_0x3b7581:0xd8,_0xa354dd:0xb9,_0x1637c4:0xc0,_0x511229:0xdb,_0x4c90c0:0x2f5,_0x2aaf81:0xdf,_0x4d416c:0xd6},_0x48cbdd={_0x5e41a1:0xb3},_0x5e08a2={};_0x5e08a2[_0x467da9(0xfb,_0x29dbc9._0x3b7581)]=_0x467da9(_0x29dbc9._0xa354dd,_0x29dbc9._0x1637c4);function _0x467da9(_0x48757e,_0x521494){return _0x20e63b(_0x521494-0x20,_0x48757e);}_0x5e08a2[_0x467da9(0xbd,_0x29dbc9._0x511229)]=_0x3181f4(-0x2d4,-_0x29dbc9._0x4c90c0);const _0x371f58=_0x5e08a2;function _0x3181f4(_0x49cf9d,_0x260342){return _0x3c3ee9(_0x49cf9d- -_0x48cbdd._0x5e41a1,_0x260342);}if(!_0x57ca09)return _0x371f58[_0x467da9(0xdf,0xd8)];return extensionMap[_0x57ca09[_0x467da9(0xe7,_0x29dbc9._0x2aaf81)+_0x467da9(_0x29dbc9._0x4d416c,0xe9)+'e']()]??_0x371f58['SsWhD'];}export async function writeTempFile(_0x25e201,_0x108f57,_0x152dfd){const _0x5219e4={_0x2fff2b:0x132,_0x12add3:0x10d,_0x25668c:0xf6,_0x3fede7:0xd2,_0x24cdb5:0xaf,_0x30f0fa:0x92,_0x1b7e22:0x13a,_0x288934:0xb5,_0x4b9bfe:0xa6,_0x38d5f6:0xb2,_0x4f5c3b:0xce},_0x3a1992={_0x50e90b:0x12c,_0x13f533:0x47},_0x58e667={_0x1a4ce2:0x69},_0xc40a93={_0x3c7baa:0xf0},_0x4cbd6c={'kzLyr':function(_0x29b122,_0x2c6b26,_0x374655){return _0x29b122(_0x2c6b26,_0x374655);},'qJMZN':function(_0x3cc808){return _0x3cc808();},'HdZtJ':_0x5aa3e2(-_0x5219e4._0x2fff2b,-0x125),'YrAMf':function(_0x31a023,_0x15977a){return _0x31a023(_0x15977a);},'VgKlA':function(_0x58f761,_0xe83c8a,_0x5beb15){return _0x58f761(_0xe83c8a,_0x5beb15);},'IWxxR':function(_0x410798,_0x39ff45,_0x404145,_0x5456d5){return _0x410798(_0x39ff45,_0x404145,_0x5456d5);}},_0x71b3a2=await mkdtemp(_0x4cbd6c[_0x5aa3e2(-0x11e,-0x124)](join,_0x4cbd6c[_0x5aa3e2(-_0x5219e4._0x12add3,-_0x5219e4._0x25668c)](tmpdir),_0x4cbd6c[_0xf38572(-_0x5219e4._0x3fede7,-_0x5219e4._0x24cdb5)])),_0x103341=_0x152dfd?_0x152dfd['slice'](_0x152dfd[_0xf38572(-0xa7,-_0x5219e4._0x30f0fa)+_0xf38572(-0xc0,-0xb5)+'f']('.')):_0x4cbd6c['YrAMf'](getExtensionForLanguage,_0x108f57),_0x4393a6=_0x152dfd?_0x152dfd[_0x5aa3e2(-_0x5219e4._0x1b7e22,-0x13d)+'ce'](/[/\\]/g,'_'):_0xf38572(-_0x5219e4._0x288934,-_0x5219e4._0x4b9bfe)+_0x103341,_0xf96c09=_0x4cbd6c[_0xf38572(-_0x5219e4._0x38d5f6,-0xc8)](join,_0x71b3a2,_0x4393a6);function _0x5aa3e2(_0x14d6e4,_0x3a0ea1){return _0x3c3ee9(_0x14d6e4-_0xc40a93._0x3c7baa,_0x3a0ea1);}await _0x4cbd6c['IWxxR'](writeFile,_0xf96c09,_0x25e201,_0xf38572(-0xb1,-_0x5219e4._0x4f5c3b));function _0xf38572(_0x18189e,_0x2a3678){return _0x3c3ee9(_0x18189e-0x15e,_0x2a3678);}return{'dir':_0x71b3a2,'filePath':_0xf96c09,'cleanup':async()=>{const _0x3d3256={_0x164f96:0x26d};function _0x213c77(_0x37fb02,_0x4185d2){return _0x5aa3e2(_0x37fb02-_0x3d3256._0x164f96,_0x4185d2);}function _0x3899ec(_0x323bad,_0x4e32dc){return _0xf38572(_0x323bad-_0x58e667._0x1a4ce2,_0x4e32dc);}try{const _0x40ead8={};_0x40ead8[_0x3899ec(-0x51,-0x6d)+_0x213c77(_0x3a1992._0x50e90b,0x132)]=!![],_0x40ead8[_0x213c77(0x131,0x13c)]=!![],await _0x4cbd6c[_0x3899ec(-_0x3a1992._0x13f533,-0x62)](rm,_0x71b3a2,_0x40ead8);}catch{}}};}export async function which(_0x526767){const _0x2159d9={_0x1e4ce9:0x346,_0x230a64:0x350,_0x4aa3a1:0x177,_0xf62753:0x170,_0x3f4508:0x34e,_0x54f899:0x342,_0x1cbb61:0x323,_0x59aef7:0x326,_0x5ec5a5:0x318,_0x155aa4:0x30d,_0xb75a70:0x322,_0x38a9d9:0x179,_0x318671:0x331,_0x334d1a:0x32a,_0x710724:0x329},_0x5a77ad={_0x93b13c:0x36b};function _0x2331be(_0x183114,_0x5efc18){return _0x3c3ee9(_0x183114-_0x5a77ad._0x93b13c,_0x5efc18);}const _0x68a1a7={};_0x68a1a7[_0x318d7c(_0x2159d9._0x1e4ce9,_0x2159d9._0x230a64)]=function(_0x56715a,_0x11ea3c){return _0x56715a===_0x11ea3c;};function _0x318d7c(_0x326366,_0x4d1eab){return _0x20e63b(_0x326366-0x281,_0x4d1eab);}_0x68a1a7[_0x318d7c(0x30d,0x31e)]=_0x2331be(_0x2159d9._0x4aa3a1,_0x2159d9._0xf62753),_0x68a1a7[_0x318d7c(_0x2159d9._0x3f4508,_0x2159d9._0x54f899)]=_0x318d7c(0x347,_0x2159d9._0x1cbb61),_0x68a1a7[_0x318d7c(_0x2159d9._0x59aef7,_0x2159d9._0x5ec5a5)]='which';const _0x302048=_0x68a1a7;try{const _0x46e044=_0x302048[_0x2331be(0x171,0x15a)](process[_0x2331be(0x14f,0x136)+'orm'],_0x302048[_0x318d7c(_0x2159d9._0x155aa4,_0x2159d9._0xb75a70)])?_0x302048[_0x2331be(_0x2159d9._0x38a9d9,0x198)]:_0x302048[_0x318d7c(0x326,_0x2159d9._0x318671)],_0x36246b={};_0x36246b[_0x318d7c(_0x2159d9._0x1cbb61,0x333)+'ut']=0x1388;const {stdout:_0x1e7584}=await execFileAsync(_0x46e044,[_0x526767],_0x36246b),_0x252b7a=_0x1e7584[_0x318d7c(0x32c,0x339)]()[_0x318d7c(_0x2159d9._0x334d1a,_0x2159d9._0x710724)]('\x0a')[-0x21a5+-0x1785+0x392a*0x1];return _0x252b7a||null;}catch{return null;}}
|