@loxia-labs/loxia-autopilot-one 1.0.14 → 1.0.16
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 +2 -2
- package/bin/cli.js +1 -1
- package/bin/loxia-terminal-v2.js +1 -1
- package/bin/loxia-terminal.js +1 -1
- package/bin/start-with-terminal.js +1 -1
- package/package.json +1 -1
- package/scripts/install-scanners.js +1 -1
- package/src/analyzers/CSSAnalyzer.js +1 -1
- package/src/analyzers/ConfigValidator.js +1 -1
- package/src/analyzers/ESLintAnalyzer.js +1 -1
- package/src/analyzers/JavaScriptAnalyzer.js +1 -1
- package/src/analyzers/PrettierFormatter.js +1 -1
- package/src/analyzers/PythonAnalyzer.js +1 -1
- package/src/analyzers/SecurityAnalyzer.js +1 -1
- package/src/analyzers/TypeScriptAnalyzer.js +1 -1
- package/src/analyzers/codeCloneDetector/analyzer.js +1 -1
- package/src/analyzers/codeCloneDetector/detector.js +1 -1
- package/src/analyzers/codeCloneDetector/index.js +1 -1
- package/src/analyzers/codeCloneDetector/parser.js +1 -1
- package/src/analyzers/codeCloneDetector/reporter.js +1 -1
- package/src/analyzers/codeCloneDetector/scanner.js +1 -1
- package/src/core/agentPool.js +1 -1
- package/src/core/agentScheduler.js +1 -1
- package/src/core/contextManager.js +1 -1
- package/src/core/messageProcessor.js +1 -1
- package/src/core/orchestrator.js +1 -1
- package/src/core/stateManager.js +1 -1
- package/src/index.js +1 -1
- package/src/interfaces/cli.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/agents.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/components.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/connection.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/imports.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/messages.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/tools.test.js +1 -1
- package/src/interfaces/terminal/api/apiClient.js +1 -1
- package/src/interfaces/terminal/api/messageRouter.js +1 -1
- package/src/interfaces/terminal/api/session.js +1 -1
- package/src/interfaces/terminal/api/websocket.js +1 -1
- package/src/interfaces/terminal/components/AgentCreator.js +1 -1
- package/src/interfaces/terminal/components/AgentEditor.js +1 -1
- package/src/interfaces/terminal/components/AgentSwitcher.js +1 -1
- package/src/interfaces/terminal/components/ErrorBoundary.js +1 -1
- package/src/interfaces/terminal/components/ErrorPanel.js +1 -1
- package/src/interfaces/terminal/components/Header.js +1 -1
- package/src/interfaces/terminal/components/HelpPanel.js +1 -1
- package/src/interfaces/terminal/components/InputBox.js +1 -1
- package/src/interfaces/terminal/components/Layout.js +1 -1
- package/src/interfaces/terminal/components/LoadingSpinner.js +1 -1
- package/src/interfaces/terminal/components/MessageList.js +1 -1
- package/src/interfaces/terminal/components/MultilineTextInput.js +1 -1
- package/src/interfaces/terminal/components/SearchPanel.js +1 -1
- package/src/interfaces/terminal/components/SettingsPanel.js +1 -1
- package/src/interfaces/terminal/components/StatusBar.js +1 -1
- package/src/interfaces/terminal/components/TextInput.js +1 -1
- package/src/interfaces/terminal/config/agentEditorConstants.js +1 -1
- package/src/interfaces/terminal/config/constants.js +1 -1
- package/src/interfaces/terminal/index.js +1 -1
- package/src/interfaces/terminal/state/useAgentControl.js +1 -1
- package/src/interfaces/terminal/state/useAgents.js +1 -1
- package/src/interfaces/terminal/state/useConnection.js +1 -1
- package/src/interfaces/terminal/state/useMessages.js +1 -1
- package/src/interfaces/terminal/state/useTools.js +1 -1
- package/src/interfaces/terminal/utils/debugLogger.js +1 -1
- package/src/interfaces/terminal/utils/settingsStorage.js +1 -1
- package/src/interfaces/terminal/utils/theme.js +1 -1
- package/src/interfaces/webServer.js +1 -1
- package/src/modules/fileExplorer/controller.js +1 -1
- package/src/modules/fileExplorer/index.js +1 -1
- package/src/modules/fileExplorer/middleware.js +1 -1
- package/src/modules/fileExplorer/routes.js +1 -1
- package/src/services/agentActivityService.js +1 -1
- package/src/services/aiService.js +1 -1
- package/src/services/apiKeyManager.js +1 -1
- package/src/services/benchmarkService.js +1 -1
- package/src/services/budgetService.js +1 -1
- package/src/services/contextInjectionService.js +1 -1
- package/src/services/conversationCompactionService.js +1 -1
- package/src/services/errorHandler.js +1 -1
- package/src/services/fileAttachmentService.js +1 -1
- package/src/services/modelRouterService.js +1 -1
- package/src/services/modelsService.js +1 -1
- package/src/services/qualityInspector.js +1 -1
- package/src/services/tokenCountingService.js +1 -1
- package/src/tools/agentCommunicationTool.js +1 -1
- package/src/tools/agentDelayTool.js +1 -1
- package/src/tools/asyncToolManager.js +1 -1
- package/src/tools/baseTool.js +1 -1
- package/src/tools/browserTool.js +1 -1
- package/src/tools/cloneDetectionTool.js +1 -1
- package/src/tools/dependencyResolverTool.js +1 -1
- package/src/tools/fileContentReplaceTool.js +1 -1
- package/src/tools/fileSystemTool.js +1 -1
- package/src/tools/fileTreeTool.js +1 -1
- package/src/tools/imageTool.js +1 -1
- package/src/tools/importAnalyzerTool.js +1 -1
- package/src/tools/jobDoneTool.js +1 -1
- package/src/tools/seekTool.js +1 -1
- package/src/tools/staticAnalysisTool.js +1 -1
- package/src/tools/taskManagerTool.js +1 -1
- package/src/tools/terminalTool.js +1 -1
- package/src/tools/webTool.js +1 -1
- package/src/types/agent.js +1 -1
- package/src/types/contextReference.js +1 -1
- package/src/types/conversation.js +1 -1
- package/src/types/toolCommand.js +1 -1
- package/src/utilities/attachmentValidator.js +1 -1
- package/src/utilities/configManager.js +1 -1
- package/src/utilities/constants.js +1 -1
- package/src/utilities/directoryAccessManager.js +1 -1
- package/src/utilities/fileProcessor.js +1 -1
- package/src/utilities/logger.js +1 -1
- package/src/utilities/tagParser.js +1 -1
- package/src/utilities/toolConstants.js +1 -1
- package/src/utilities/userDataDir.js +1 -1
- package/web-ui/build/index.html +2 -2
- package/web-ui/build/static/index-DFmFvOoy.css +1 -0
- package/web-ui/build/static/index-DOk0l6Kf.js +348 -0
- package/web-ui/build/static/index-DXN850Y2.js +0 -400
- package/web-ui/build/static/index-an-YRzUX.css +0 -1
package/README.md
CHANGED
|
@@ -99,7 +99,7 @@ npm install -g @loxia-labs/loxia-autopilot-one
|
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
101
|
loxia --version
|
|
102
|
-
# Should display: Loxia Autopilot One v1.0.
|
|
102
|
+
# Should display: Loxia Autopilot One v1.0.16
|
|
103
103
|
```
|
|
104
104
|
|
|
105
105
|
### 4. Create an API Key
|
|
@@ -369,7 +369,7 @@ Loxia automatically compacts long conversations to stay within token limits:
|
|
|
369
369
|
|
|
370
370
|
## 🛣️ Roadmap
|
|
371
371
|
|
|
372
|
-
### Current Version (1.0.
|
|
372
|
+
### Current Version (1.0.16)
|
|
373
373
|
|
|
374
374
|
- ✅ Multi-agent orchestration
|
|
375
375
|
- ✅ 18+ specialized tools
|
package/bin/cli.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const a0_0x20cb28=a0_0x4bad;function a0_0x4bad(_0x77b389,_0x20616e){_0x77b389=_0x77b389-0xbb;const _0x411973=a0_0x4119();let _0x4badc6=_0x411973[_0x77b389];return _0x4badc6;}(function(_0xc749f4,_0x449c4d){const _0x43a51e=a0_0x4bad,_0x18d3df=_0xc749f4();while(!![]){try{const _0x255a64=-parseInt(_0x43a51e(0xf7))/0x1*(-parseInt(_0x43a51e(0xcd))/0x2)+-parseInt(_0x43a51e(0xef))/0x3*(-parseInt(_0x43a51e(0x105))/0x4)+parseInt(_0x43a51e(0xdc))/0x5*(parseInt(_0x43a51e(0xe5))/0x6)+-parseInt(_0x43a51e(0xee))/0x7+-parseInt(_0x43a51e(0xe6))/0x8*(-parseInt(_0x43a51e(0xe4))/0x9)+-parseInt(_0x43a51e(0x102))/0xa+-parseInt(_0x43a51e(0xea))/0xb;if(_0x255a64===_0x449c4d)break;else _0x18d3df['push'](_0x18d3df['shift']());}catch(_0xc8d689){_0x18d3df['push'](_0x18d3df['shift']());}}}(a0_0x4119,0xc2d2a));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn,exec}from'child_process';import{readFileSync}from'fs';import a0_0x18e68e from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x20cb28(0xd9),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process['argv'][a0_0x20cb28(0xe2)](0x2),command=args[0x0]&&!args[0x0][a0_0x20cb28(0xbb)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x20cb28(0x106)]('--help')||args[a0_0x20cb28(0x106)]('-h'),'version':args['includes'](a0_0x20cb28(0xfb))||args['includes']('-v')};for(let i=0x0;i<args['length'];i++){args[i]===a0_0x20cb28(0xce)&&args[i+0x1]&&(flags['port']=parseInt(args[i+0x1],0xa)),args[i]===a0_0x20cb28(0xe1)&&args[i+0x1]&&(flags['host']=args[i+0x1]);}const port=flags[a0_0x20cb28(0xe3)]||DEFAULT_PORT,host=flags[a0_0x20cb28(0xff)]||DEFAULT_HOST,serverUrl='http://'+host+':'+port;if(flags[a0_0x20cb28(0xc5)]){const pkgPath=join(__dirname,'..',a0_0x20cb28(0xf3)),pkg=JSON[a0_0x20cb28(0xc6)](readFileSync(pkgPath,a0_0x20cb28(0xf0)));console['log'](a0_0x20cb28(0xcf)+pkg[a0_0x20cb28(0xc5)]),process[a0_0x20cb28(0xdb)](0x0);}if(flags[a0_0x20cb28(0xd4)]||!command){const pkgPath=join(__dirname,'..',a0_0x20cb28(0xf3)),pkg=JSON[a0_0x20cb28(0xc6)](readFileSync(pkgPath,a0_0x20cb28(0xf0)));console[a0_0x20cb28(0xed)](a0_0x20cb28(0xf1)+pkg[a0_0x20cb28(0xc5)]+'\x20-\x20AI\x20Agent\x20System\x0a\x0aUsage:\x0a\x20\x20loxia\x20<command>\x20[options]\x0a\x0aCommands:\x0a\x20\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20open\x20Web\x20UI\x20in\x20browser\x0a\x20\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20Start\x20Terminal\x20UI\x20(server\x20must\x20be\x20running)\x0a\x20\x20plus-web\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20'+DEFAULT_PORT+a0_0x20cb28(0xc4)+DEFAULT_HOST+a0_0x20cb28(0xf2)),process['exit'](0x0);}async function checkServerRunning(_0x28014d,_0x193c2a,_0x584934=0x1){for(let _0x55d444=0x0;_0x55d444<_0x584934;_0x55d444++){const _0x25744d=await new Promise(_0x29c34d=>{const _0x5d9af2=a0_0x4bad,_0x2c4ae0=a0_0x18e68e[_0x5d9af2(0xbf)](_0x5d9af2(0xd7)+_0x28014d+':'+_0x193c2a+_0x5d9af2(0xf4),_0x28f7ec=>{const _0x2c8b94=_0x5d9af2;_0x29c34d(_0x28f7ec[_0x2c8b94(0xf8)]===0xc8);});_0x2c4ae0['on'](_0x5d9af2(0x103),()=>_0x29c34d(![])),_0x2c4ae0[_0x5d9af2(0xc1)](0x7d0,()=>{const _0x417a5a=_0x5d9af2;_0x2c4ae0[_0x417a5a(0x107)](),_0x29c34d(![]);});});if(_0x25744d)return!![];_0x55d444<_0x584934-0x1&&await new Promise(_0x3f5158=>setTimeout(_0x3f5158,SERVER_CHECK_INTERVAL));}return![];}async function waitForServer(_0x452945,_0x179c3b,_0x17fa3f=SERVER_STARTUP_TIMEOUT){const _0x4db531=a0_0x20cb28,_0x258b12=Math[_0x4db531(0xd3)](_0x17fa3f/SERVER_CHECK_INTERVAL);return checkServerRunning(_0x452945,_0x179c3b,_0x258b12);}function openBrowser(_0x446678){const _0xe237df=a0_0x20cb28,_0x332014=process[_0xe237df(0xc0)];let _0x2120c5;if(_0x332014===_0xe237df(0xcc))_0x2120c5=_0xe237df(0xfa)+_0x446678+'\x22';else _0x332014===_0xe237df(0xf6)?_0x2120c5=_0xe237df(0xda)+_0x446678+'\x22':_0x2120c5=_0xe237df(0x101)+_0x446678+'\x22';exec(_0x2120c5,_0x2b621a=>{const _0x3265b5=_0xe237df;_0x2b621a&&(console[_0x3265b5(0xed)](_0x3265b5(0xc9)),console[_0x3265b5(0xed)](_0x3265b5(0xe9)+_0x446678));});}function startServer(_0x4097b1=![]){const _0x227c4f=a0_0x20cb28,_0x4d0220={...process['env'],'LOXIA_PORT':port['toString'](),'PORT':port['toString']()};flags['host']&&(_0x4d0220['LOXIA_HOST']=flags[_0x227c4f(0xff)]);const _0x1e8555=join(__dirname,'..',_0x227c4f(0xc3),_0x227c4f(0xf5)),_0x280e1c=spawn('node',[_0x1e8555],{'cwd':join(__dirname,'..'),'env':_0x4d0220,'stdio':_0x4097b1?[_0x227c4f(0xfd),_0x227c4f(0xfd),_0x227c4f(0xfd)]:_0x227c4f(0xcb),'detached':_0x4097b1});return _0x4097b1&&_0x280e1c[_0x227c4f(0xde)](),_0x280e1c;}function startTerminalUI(){const _0x3a6fe0=a0_0x20cb28,_0x422de8=join(__dirname,_0x3a6fe0(0xe7)),_0x361614={...process[_0x3a6fe0(0xe0)],'LOXIA_PORT':port['toString'](),'LOXIA_HOST':host},_0x33e343=spawn(_0x3a6fe0(0xc7),[_0x422de8],{'cwd':join(__dirname,'..'),'env':_0x361614,'stdio':_0x3a6fe0(0xcb)});return _0x33e343;}function a0_0x4119(){const _0x366277=['8088340qfxcPJ','error','message','804JYACpw','includes','destroy','\x0aOpening\x20Web\x20UI\x20at\x20','startsWith','Error:','Server\x20is\x20running\x20at\x20','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','get','platform','setTimeout','web','src',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','version','parse','node','SIGINT','Could\x20not\x20open\x20browser\x20automatically.','Starting\x20Loxia\x20server\x20in\x20background...','inherit','darwin','49458RJeGfA','--port','Loxia\x20Autopilot\x20One\x20v','Server\x20running\x20at\x20','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','ceil','help','catch','kill','http://','\x20manually.','localhost','start\x20\x22\x22\x20\x22','exit','6404725CQuUIc','pid','unref','\x0aServer\x20may\x20still\x20be\x20starting.\x20Open\x20','env','--host','slice','port','81CHwCWC','6lkzbZI','484856GXIzze','loxia-terminal.js','Starting\x20Terminal\x20UI...\x0a','Please\x20open\x20manually:\x20','28857763BbPGrF','SIGTERM','\x0aShutting\x20down\x20server...','log','130928lOpdqV','17334BOxZQm','utf8','\x0aLoxia\x20Autopilot\x20One\x20v',')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20custom\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a','package.json','/api/health','index.js','win32','51RaJKki','statusCode','\x0aPlease\x20start\x20the\x20server\x20first:','open\x20\x22','--version','Waiting\x20for\x20server\x20to\x20start...','ignore','Unknown\x20command:\x20','host','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','xdg-open\x20\x22'];a0_0x4119=function(){return _0x366277;};return a0_0x4119();}const commands={'web':async()=>{const _0x15ea42=a0_0x20cb28;console[_0x15ea42(0xed)]('Starting\x20Loxia\x20server...\x0a');const _0x1977fd=startServer(![]);console[_0x15ea42(0xed)](_0x15ea42(0xfc));const _0xf17734=await waitForServer(host,port);_0xf17734?(console[_0x15ea42(0xed)](_0x15ea42(0x108)+serverUrl),openBrowser(serverUrl)):console[_0x15ea42(0xed)](_0x15ea42(0xdf)+serverUrl+_0x15ea42(0xd8)),process['on'](_0x15ea42(0xc8),()=>_0x1977fd[_0x15ea42(0xd6)](_0x15ea42(0xc8))),process['on'](_0x15ea42(0xeb),()=>_0x1977fd['kill'](_0x15ea42(0xeb))),_0x1977fd['on'](_0x15ea42(0xdb),_0xdb146c=>process[_0x15ea42(0xdb)](_0xdb146c||0x0));},'plus-web':async()=>{const _0x19d2af=a0_0x20cb28;await commands[_0x19d2af(0xc2)]();},'terminal':async()=>{const _0x7376ab=a0_0x20cb28;console[_0x7376ab(0xed)]('Checking\x20if\x20server\x20is\x20running...');const _0x199396=await checkServerRunning(host,port);!_0x199396&&(console[_0x7376ab(0x103)]('\x0aServer\x20is\x20not\x20running\x20at\x20'+serverUrl),console[_0x7376ab(0x103)](_0x7376ab(0xf9)),console[_0x7376ab(0x103)](_0x7376ab(0xd1)),console[_0x7376ab(0x103)](_0x7376ab(0xd2)),process['exit'](0x1));console[_0x7376ab(0xed)](_0x7376ab(0xbd)+serverUrl),console['log'](_0x7376ab(0xe8));const _0x457bd2=startTerminalUI();process['on']('SIGINT',()=>_0x457bd2['kill'](_0x7376ab(0xc8))),process['on'](_0x7376ab(0xeb),()=>_0x457bd2[_0x7376ab(0xd6)]('SIGTERM')),_0x457bd2['on']('exit',_0x5922e7=>process[_0x7376ab(0xdb)](_0x5922e7||0x0));},'plus-terminal':async()=>{const _0x373936=a0_0x20cb28;console['log'](_0x373936(0xca));const _0x541583=startServer(!![]),_0x2ff221=await waitForServer(host,port);!_0x2ff221&&(console[_0x373936(0x103)](_0x373936(0x100)),process[_0x373936(0xdb)](0x1));console['log'](_0x373936(0xd0)+serverUrl),console['log'](_0x373936(0xe8));const _0x48683f=startTerminalUI();_0x48683f['on'](_0x373936(0xdb),_0xed7ee=>{const _0x311511=_0x373936;console['log'](_0x311511(0xec));try{process['kill'](_0x541583[_0x311511(0xdd)],_0x311511(0xeb));}catch(_0x102b7b){}process['exit'](_0xed7ee||0x0);}),process['on'](_0x373936(0xc8),()=>{const _0x212b76=_0x373936;_0x48683f[_0x212b76(0xd6)](_0x212b76(0xc8));}),process['on'](_0x373936(0xeb),()=>{const _0x3dc8f8=_0x373936;_0x48683f[_0x3dc8f8(0xd6)]('SIGTERM');});}};commands[command]?commands[command]()[a0_0x20cb28(0xd5)](_0xda4bf7=>{const _0x4a562c=a0_0x20cb28;console[_0x4a562c(0x103)](_0x4a562c(0xbc),_0xda4bf7[_0x4a562c(0x104)]),process[_0x4a562c(0xdb)](0x1);}):(console[a0_0x20cb28(0x103)](a0_0x20cb28(0xfe)+command),console['error'](a0_0x20cb28(0xbe)),process[a0_0x20cb28(0xdb)](0x1));
|
|
3
|
+
const a0_0x39f234=a0_0x41d2;(function(_0x294909,_0x9a1a64){const _0x30e7fa=a0_0x41d2,_0x445459=_0x294909();while(!![]){try{const _0x20b46d=-parseInt(_0x30e7fa(0x85))/0x1*(-parseInt(_0x30e7fa(0x89))/0x2)+-parseInt(_0x30e7fa(0xb7))/0x3+-parseInt(_0x30e7fa(0xa9))/0x4+-parseInt(_0x30e7fa(0x9a))/0x5+parseInt(_0x30e7fa(0xb3))/0x6+parseInt(_0x30e7fa(0x80))/0x7+parseInt(_0x30e7fa(0x82))/0x8*(parseInt(_0x30e7fa(0x84))/0x9);if(_0x20b46d===_0x9a1a64)break;else _0x445459['push'](_0x445459['shift']());}catch(_0x2db7ef){_0x445459['push'](_0x445459['shift']());}}}(a0_0xf343,0x33ec1));function a0_0xf343(){const _0x3fada6=['1767294WrSOSX','--port','help','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','1097547OZlMOj','\x0aOpening\x20Web\x20UI\x20at\x20','Server\x20is\x20running\x20at\x20','localhost','Loxia\x20Autopilot\x20One\x20v',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','http://','start\x20\x22\x22\x20\x22','kill','xdg-open\x20\x22','unref','index.js','toString','SIGINT','version','exit','catch','694050sPvLbq','/api/health','24NIOvMM','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','1838178xzStow','77759HwbhCU','parse','ceil','log','2rXOjHo','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','darwin','\x0aLoxia\x20Autopilot\x20One\x20v','port','Unknown\x20command:\x20','inherit','node','get','setTimeout','\x0aServer\x20may\x20still\x20be\x20starting.\x20Open\x20','\x0aShutting\x20down\x20server...','message','SIGTERM','argv','host','Error:','1762535neRnEm','destroy','\x0aPlease\x20start\x20the\x20server\x20first:','Server\x20running\x20at\x20','win32','includes','\x20manually.','error','Checking\x20if\x20server\x20is\x20running...','env','\x20-\x20AI\x20Agent\x20System\x0a\x0aUsage:\x0a\x20\x20loxia\x20<command>\x20[options]\x0a\x0aCommands:\x0a\x20\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20open\x20Web\x20UI\x20in\x20browser\x0a\x20\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20Start\x20Terminal\x20UI\x20(server\x20must\x20be\x20running)\x0a\x20\x20plus-web\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20','pid','Could\x20not\x20open\x20browser\x20automatically.','Please\x20open\x20manually:\x20','src','612620hokGGn','Starting\x20Loxia\x20server...\x0a','Waiting\x20for\x20server\x20to\x20start...','Starting\x20Loxia\x20server\x20in\x20background...','utf8','ignore','--version','loxia-terminal.js','package.json','--host'];a0_0xf343=function(){return _0x3fada6;};return a0_0xf343();}import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn,exec}from'child_process';import{readFileSync}from'fs';function a0_0x41d2(_0x223c78,_0x14c880){_0x223c78=_0x223c78-0x7a;const _0xf34376=a0_0xf343();let _0x41d20c=_0xf34376[_0x223c78];return _0x41d20c;}import a0_0x60397a from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x39f234(0xba),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x39f234(0x97)]['slice'](0x2),command=args[0x0]&&!args[0x0]['startsWith']('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args['includes']('--help')||args[a0_0x39f234(0x9f)]('-h'),'version':args[a0_0x39f234(0x9f)](a0_0x39f234(0xaf))||args[a0_0x39f234(0x9f)]('-v')};for(let i=0x0;i<args['length'];i++){args[i]===a0_0x39f234(0xb4)&&args[i+0x1]&&(flags['port']=parseInt(args[i+0x1],0xa)),args[i]===a0_0x39f234(0xb2)&&args[i+0x1]&&(flags[a0_0x39f234(0x98)]=args[i+0x1]);}const port=flags[a0_0x39f234(0x8d)]||DEFAULT_PORT,host=flags[a0_0x39f234(0x98)]||DEFAULT_HOST,serverUrl=a0_0x39f234(0xbd)+host+':'+port;if(flags[a0_0x39f234(0x7d)]){const pkgPath=join(__dirname,'..',a0_0x39f234(0xb1)),pkg=JSON['parse'](readFileSync(pkgPath,a0_0x39f234(0xad)));console['log'](a0_0x39f234(0xbb)+pkg[a0_0x39f234(0x7d)]),process['exit'](0x0);}if(flags[a0_0x39f234(0xb5)]||!command){const pkgPath=join(__dirname,'..',a0_0x39f234(0xb1)),pkg=JSON[a0_0x39f234(0x86)](readFileSync(pkgPath,'utf8'));console[a0_0x39f234(0x88)](a0_0x39f234(0x8c)+pkg[a0_0x39f234(0x7d)]+a0_0x39f234(0xa4)+DEFAULT_PORT+a0_0x39f234(0xbc)+DEFAULT_HOST+')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20custom\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a'),process[a0_0x39f234(0x7e)](0x0);}async function checkServerRunning(_0x16446e,_0x3629a2,_0x3dd460=0x1){for(let _0x2afde3=0x0;_0x2afde3<_0x3dd460;_0x2afde3++){const _0x15d31b=await new Promise(_0x2c8781=>{const _0x361f2c=a0_0x41d2,_0x578f33=a0_0x60397a[_0x361f2c(0x91)](_0x361f2c(0xbd)+_0x16446e+':'+_0x3629a2+_0x361f2c(0x81),_0x1460a2=>{_0x2c8781(_0x1460a2['statusCode']===0xc8);});_0x578f33['on'](_0x361f2c(0xa1),()=>_0x2c8781(![])),_0x578f33[_0x361f2c(0x92)](0x7d0,()=>{const _0x196b1c=_0x361f2c;_0x578f33[_0x196b1c(0x9b)](),_0x2c8781(![]);});});if(_0x15d31b)return!![];_0x2afde3<_0x3dd460-0x1&&await new Promise(_0x3b91c3=>setTimeout(_0x3b91c3,SERVER_CHECK_INTERVAL));}return![];}async function waitForServer(_0x291eff,_0x30b219,_0x1d3667=SERVER_STARTUP_TIMEOUT){const _0x2d2fc2=a0_0x39f234,_0x12c987=Math[_0x2d2fc2(0x87)](_0x1d3667/SERVER_CHECK_INTERVAL);return checkServerRunning(_0x291eff,_0x30b219,_0x12c987);}function openBrowser(_0x85a3ef){const _0x3d6ae1=a0_0x39f234,_0x3400ca=process['platform'];let _0x478ed4;if(_0x3400ca===_0x3d6ae1(0x8b))_0x478ed4='open\x20\x22'+_0x85a3ef+'\x22';else _0x3400ca===_0x3d6ae1(0x9e)?_0x478ed4=_0x3d6ae1(0xbe)+_0x85a3ef+'\x22':_0x478ed4=_0x3d6ae1(0xc0)+_0x85a3ef+'\x22';exec(_0x478ed4,_0x1d2186=>{const _0xc9c303=_0x3d6ae1;_0x1d2186&&(console[_0xc9c303(0x88)](_0xc9c303(0xa6)),console[_0xc9c303(0x88)](_0xc9c303(0xa7)+_0x85a3ef));});}function startServer(_0x3f32f1=![]){const _0x14ae66=a0_0x39f234,_0x342481={...process['env'],'LOXIA_PORT':port[_0x14ae66(0x7b)](),'PORT':port[_0x14ae66(0x7b)]()};flags['host']&&(_0x342481['LOXIA_HOST']=flags[_0x14ae66(0x98)]);const _0x41898f=join(__dirname,'..',_0x14ae66(0xa8),_0x14ae66(0x7a)),_0x321ab2=spawn(_0x14ae66(0x90),[_0x41898f],{'cwd':join(__dirname,'..'),'env':_0x342481,'stdio':_0x3f32f1?['ignore',_0x14ae66(0xae),'ignore']:_0x14ae66(0x8f),'detached':_0x3f32f1});return _0x3f32f1&&_0x321ab2[_0x14ae66(0xc1)](),_0x321ab2;}function startTerminalUI(){const _0x5a8f43=a0_0x39f234,_0x3c55ea=join(__dirname,_0x5a8f43(0xb0)),_0x2167ff={...process[_0x5a8f43(0xa3)],'LOXIA_PORT':port['toString'](),'LOXIA_HOST':host},_0x2f01ab=spawn(_0x5a8f43(0x90),[_0x3c55ea],{'cwd':join(__dirname,'..'),'env':_0x2167ff,'stdio':'inherit'});return _0x2f01ab;}const commands={'web':async()=>{const _0x5caf89=a0_0x39f234;console[_0x5caf89(0x88)](_0x5caf89(0xaa));const _0x46cea7=startServer(![]);console[_0x5caf89(0x88)](_0x5caf89(0xab));const _0xa55345=await waitForServer(host,port);_0xa55345?(console[_0x5caf89(0x88)](_0x5caf89(0xb8)+serverUrl),openBrowser(serverUrl)):console[_0x5caf89(0x88)](_0x5caf89(0x93)+serverUrl+_0x5caf89(0xa0)),process['on'](_0x5caf89(0x7c),()=>_0x46cea7['kill'](_0x5caf89(0x7c))),process['on'](_0x5caf89(0x96),()=>_0x46cea7[_0x5caf89(0xbf)](_0x5caf89(0x96))),_0x46cea7['on'](_0x5caf89(0x7e),_0x4de8a2=>process[_0x5caf89(0x7e)](_0x4de8a2||0x0));},'plus-web':async()=>{await commands['web']();},'terminal':async()=>{const _0x5ecb72=a0_0x39f234;console['log'](_0x5ecb72(0xa2));const _0xf2b178=await checkServerRunning(host,port);!_0xf2b178&&(console[_0x5ecb72(0xa1)]('\x0aServer\x20is\x20not\x20running\x20at\x20'+serverUrl),console[_0x5ecb72(0xa1)](_0x5ecb72(0x9c)),console[_0x5ecb72(0xa1)](_0x5ecb72(0x83)),console[_0x5ecb72(0xa1)](_0x5ecb72(0xb6)),process[_0x5ecb72(0x7e)](0x1));console[_0x5ecb72(0x88)](_0x5ecb72(0xb9)+serverUrl),console[_0x5ecb72(0x88)]('Starting\x20Terminal\x20UI...\x0a');const _0x4ff7f9=startTerminalUI();process['on'](_0x5ecb72(0x7c),()=>_0x4ff7f9[_0x5ecb72(0xbf)](_0x5ecb72(0x7c))),process['on']('SIGTERM',()=>_0x4ff7f9[_0x5ecb72(0xbf)]('SIGTERM')),_0x4ff7f9['on']('exit',_0x4a1269=>process['exit'](_0x4a1269||0x0));},'plus-terminal':async()=>{const _0x402d63=a0_0x39f234;console[_0x402d63(0x88)](_0x402d63(0xac));const _0x1d9e19=startServer(!![]),_0x5d8e4d=await waitForServer(host,port);!_0x5d8e4d&&(console[_0x402d63(0xa1)]('\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.'),process['exit'](0x1));console[_0x402d63(0x88)](_0x402d63(0x9d)+serverUrl),console['log']('Starting\x20Terminal\x20UI...\x0a');const _0x2261bb=startTerminalUI();_0x2261bb['on']('exit',_0x348c98=>{const _0x385f17=_0x402d63;console[_0x385f17(0x88)](_0x385f17(0x94));try{process['kill'](_0x1d9e19[_0x385f17(0xa5)],_0x385f17(0x96));}catch(_0x109a29){}process[_0x385f17(0x7e)](_0x348c98||0x0);}),process['on'](_0x402d63(0x7c),()=>{const _0x241597=_0x402d63;_0x2261bb[_0x241597(0xbf)](_0x241597(0x7c));}),process['on'](_0x402d63(0x96),()=>{const _0x2c6c9c=_0x402d63;_0x2261bb[_0x2c6c9c(0xbf)](_0x2c6c9c(0x96));});}};commands[command]?commands[command]()[a0_0x39f234(0x7f)](_0x482ea0=>{const _0x38ed2f=a0_0x39f234;console[_0x38ed2f(0xa1)](_0x38ed2f(0x99),_0x482ea0[_0x38ed2f(0x95)]),process[_0x38ed2f(0x7e)](0x1);}):(console[a0_0x39f234(0xa1)](a0_0x39f234(0x8e)+command),console[a0_0x39f234(0xa1)](a0_0x39f234(0x8a)),process[a0_0x39f234(0x7e)](0x1));
|
package/bin/loxia-terminal-v2.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const a0_0xd1f1cb=a0_0x2980;function a0_0x2980(_0x3f212b,_0x27e9f1){_0x3f212b=_0x3f212b-0x1d7;const _0x3afe4b=a0_0x3afe();let _0x298051=_0x3afe4b[_0x3f212b];return _0x298051;}(function(_0x1d3d4e,_0x1e1604){const _0x687600=a0_0x2980,_0x2b8b9c=_0x1d3d4e();while(!![]){try{const _0x5f1e61=parseInt(_0x687600(0x1e2))/0x1+-parseInt(_0x687600(0x202))/0x2*(-parseInt(_0x687600(0x1de))/0x3)+-parseInt(_0x687600(0x1f3))/0x4*(parseInt(_0x687600(0x1ff))/0x5)+-parseInt(_0x687600(0x203))/0x6*(parseInt(_0x687600(0x1f9))/0x7)+-parseInt(_0x687600(0x1da))/0x8+-parseInt(_0x687600(0x1f0))/0x9*(-parseInt(_0x687600(0x1e7))/0xa)+-parseInt(_0x687600(0x208))/0xb*(-parseInt(_0x687600(0x1db))/0xc);if(_0x5f1e61===_0x1e1604)break;else _0x2b8b9c['push'](_0x2b8b9c['shift']());}catch(_0x2b0693){_0x2b8b9c['push'](_0x2b8b9c['shift']());}}}(a0_0x3afe,0x95d02));import{spawn}from'child_process';function a0_0x3afe(){const _0x3c7178=['argv','localhost','✓\x20Server\x20started\x20at\x20','--ui','ignore','destroy','5971077csWjWN','LOXIA_PORT','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','4531708UNrPsw','error','connect','\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details','Server\x20startup\x20timeout','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','2380588EDNdph','✓\x20Server\x20is\x20already\x20running\x20at\x20','data','env','timeout','🚀\x20Starting\x20Loxia\x20server...','5qnrhRR','dirname','join','669462emVYjd','12MzGEeH','Socket','exit','LOXIA_HOST','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','11JcCyya','bin/cli.js','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','now','slice','log','node','769256TeKvIs','974076vDrCCW','toString','--host','9eQEfDe','../src/interfaces/terminal/index.js','...','💡\x20Troubleshooting:','774067xieazA','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','pipe','web','message','10SRmkfI','setTimeout','--port'];a0_0x3afe=function(){return _0x3c7178;};return a0_0x3afe();}import a0_0x56ed8c from'net';import a0_0x1567f6 from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x1567f6[a0_0xd1f1cb(0x200)](__filename),projectRoot=a0_0x1567f6[a0_0xd1f1cb(0x200)](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0xd1f1cb(0x1eb),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0xd16d79,_0x3b104f){return new Promise(_0x178483=>{const _0x3c628a=a0_0x2980,_0xa63bdc=new a0_0x56ed8c[(_0x3c628a(0x204))]();_0xa63bdc[_0x3c628a(0x1e8)](0x7d0),_0xa63bdc['on'](_0x3c628a(0x1f5),()=>{const _0x5dd22a=_0x3c628a;_0xa63bdc[_0x5dd22a(0x1ef)](),_0x178483(!![]);}),_0xa63bdc['on'](_0x3c628a(0x1fd),()=>{const _0x473213=_0x3c628a;_0xa63bdc[_0x473213(0x1ef)](),_0x178483(![]);}),_0xa63bdc['on']('error',()=>{const _0x24a448=_0x3c628a;_0xa63bdc[_0x24a448(0x1ef)](),_0x178483(![]);}),_0xa63bdc['connect'](_0x3b104f,_0xd16d79);});}async function startServer(_0x32dece,_0x523896){const _0x3a0463=a0_0xd1f1cb;return console[_0x3a0463(0x1d8)](_0x3a0463(0x1fe)),new Promise((_0x10a899,_0x57beda)=>{const _0x51238a=_0x3a0463,_0xf94e8d=spawn(_0x51238a(0x1d9),[a0_0x1567f6[_0x51238a(0x201)](projectRoot,_0x51238a(0x209)),_0x51238a(0x1ed),_0x51238a(0x1e5),'--host',_0x32dece,'--port',_0x523896[_0x51238a(0x1dc)]()],{'detached':![],'stdio':[_0x51238a(0x1ee),_0x51238a(0x1e4),_0x51238a(0x1e4)]});_0xf94e8d['stdout']['on'](_0x51238a(0x1fb),()=>{}),_0xf94e8d['stderr']['on']('data',()=>{}),_0xf94e8d['on']('error',_0x253951=>{const _0x475300=_0x51238a;console[_0x475300(0x1f4)]('Failed\x20to\x20start\x20server:',_0x253951[_0x475300(0x1e6)]),_0x57beda(_0x253951);});const _0x2d6082=Date[_0x51238a(0x20c)](),_0x1b2f99=setInterval(async()=>{const _0x4657b3=_0x51238a,_0x2d2dfe=await isServerRunning(_0x32dece,_0x523896);if(_0x2d2dfe)clearInterval(_0x1b2f99),console[_0x4657b3(0x1d8)](_0x4657b3(0x1ec)+_0x32dece+':'+_0x523896),_0x10a899();else Date[_0x4657b3(0x20c)]()-_0x2d6082>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x1b2f99),_0xf94e8d['kill'](),_0x57beda(new Error(_0x4657b3(0x1f7))));},0x1f4);});}async function main(){const _0x3f321c=a0_0xd1f1cb;try{console[_0x3f321c(0x1d8)](_0x3f321c(0x1f8)),console[_0x3f321c(0x1d8)](_0x3f321c(0x1f2)),console[_0x3f321c(0x1d8)]('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console['log']('');const _0x16f738=process[_0x3f321c(0x1ea)][_0x3f321c(0x1d7)](0x2);let _0x233e67=DEFAULT_HOST,_0x1d29a8=DEFAULT_PORT;for(let _0x1a1434=0x0;_0x1a1434<_0x16f738['length'];_0x1a1434++){if(_0x16f738[_0x1a1434]===_0x3f321c(0x1dd)&&_0x16f738[_0x1a1434+0x1])_0x233e67=_0x16f738[_0x1a1434+0x1],_0x1a1434++;else _0x16f738[_0x1a1434]===_0x3f321c(0x1e9)&&_0x16f738[_0x1a1434+0x1]&&(_0x1d29a8=parseInt(_0x16f738[_0x1a1434+0x1],0xa),_0x1a1434++);}console['log']('🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20'+_0x233e67+':'+_0x1d29a8+_0x3f321c(0x1e0));const _0x4bb02f=await isServerRunning(_0x233e67,_0x1d29a8);!_0x4bb02f?(console['log']('✗\x20Server\x20is\x20not\x20running'),await startServer(_0x233e67,_0x1d29a8)):console[_0x3f321c(0x1d8)](_0x3f321c(0x1fa)+_0x233e67+':'+_0x1d29a8),console['log'](''),console[_0x3f321c(0x1d8)](_0x3f321c(0x20b)),console[_0x3f321c(0x1d8)](''),await new Promise(_0x4570ef=>setTimeout(_0x4570ef,0x1f4)),process[_0x3f321c(0x1fc)][_0x3f321c(0x206)]=_0x233e67,process[_0x3f321c(0x1fc)][_0x3f321c(0x1f1)]=_0x1d29a8[_0x3f321c(0x1dc)](),await import(_0x3f321c(0x1df));}catch(_0x405196){console['error'](''),console[_0x3f321c(0x1f4)](_0x3f321c(0x20a)),console[_0x3f321c(0x1f4)]('\x20\x20',_0x405196[_0x3f321c(0x1e6)]),console[_0x3f321c(0x1f4)](''),console[_0x3f321c(0x1f4)](_0x3f321c(0x1e1)),console[_0x3f321c(0x1f4)](_0x3f321c(0x207)),console[_0x3f321c(0x1f4)](_0x3f321c(0x1e3)),console[_0x3f321c(0x1f4)](_0x3f321c(0x1f6)),console[_0x3f321c(0x1f4)](''),process[_0x3f321c(0x205)](0x1);}}main();
|
package/bin/loxia-terminal.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const a0_0xb3e3f8=a0_0x4a12;(function(_0x3e661e,_0x384452){const _0x436ee7=a0_0x4a12,_0x440116=_0x3e661e();while(!![]){try{const _0x21e5fb=parseInt(_0x436ee7(0x1a7))/0x1*(parseInt(_0x436ee7(0x1b3))/0x2)+parseInt(_0x436ee7(0x1c6))/0x3*(parseInt(_0x436ee7(0x1af))/0x4)+-parseInt(_0x436ee7(0x1a2))/0x5*(parseInt(_0x436ee7(0x1ba))/0x6)+-parseInt(_0x436ee7(0x1b1))/0x7*(-parseInt(_0x436ee7(0x1b6))/0x8)+-parseInt(_0x436ee7(0x1bd))/0x9*(parseInt(_0x436ee7(0x1a6))/0xa)+parseInt(_0x436ee7(0x1b7))/0xb+parseInt(_0x436ee7(0x1c0))/0xc*(-parseInt(_0x436ee7(0x1c4))/0xd);if(_0x21e5fb===_0x384452)break;else _0x440116['push'](_0x440116['shift']());}catch(_0x311208){_0x440116['push'](_0x440116['shift']());}}}(a0_0x1b8f,0xba381));import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0xb3e3f8(0x1ab)][a0_0xb3e3f8(0x1be)](0x2),options={'host':'localhost','port':0x1f90};for(let i=0x0;i<args[a0_0xb3e3f8(0x1c3)];i++){const arg=args[i];if(arg===a0_0xb3e3f8(0x1c5)||arg==='-h')options['host']=args[++i];else{if(arg===a0_0xb3e3f8(0x1bc)||arg==='-p')options[a0_0xb3e3f8(0x1c8)]=parseInt(args[++i],0xa);else arg===a0_0xb3e3f8(0x1a5)&&(console[a0_0xb3e3f8(0x1c7)](a0_0xb3e3f8(0x1b9)),process[a0_0xb3e3f8(0x1a4)](0x0));}}process['env'][a0_0xb3e3f8(0x1c2)]&&(options['host']=process[a0_0xb3e3f8(0x1aa)][a0_0xb3e3f8(0x1c2)]);process[a0_0xb3e3f8(0x1aa)][a0_0xb3e3f8(0x1ad)]&&(options['port']=parseInt(process['env'][a0_0xb3e3f8(0x1ad)],0xa));function a0_0x4a12(_0xb528b9,_0x47542a){_0xb528b9=_0xb528b9-0x1a1;const _0x1b8f38=a0_0x1b8f();let _0x4a1205=_0x1b8f38[_0xb528b9];return _0x4a1205;}!process['stdin'][a0_0xb3e3f8(0x1a8)]&&(console[a0_0xb3e3f8(0x1bb)]('ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).'),console[a0_0xb3e3f8(0x1bb)](''),console[a0_0xb3e3f8(0x1bb)](a0_0xb3e3f8(0x1bf)),console['error'](a0_0xb3e3f8(0x1b8)),console[a0_0xb3e3f8(0x1bb)]('\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)'),console[a0_0xb3e3f8(0x1bb)](a0_0xb3e3f8(0x1a3)),console['error'](a0_0xb3e3f8(0x1ae)),console['error'](''),console[a0_0xb3e3f8(0x1bb)](a0_0xb3e3f8(0x1ac)),console['error'](a0_0xb3e3f8(0x1a1)),console['error'](''),console[a0_0xb3e3f8(0x1bb)](a0_0xb3e3f8(0x1c1)),console['error'](a0_0xb3e3f8(0x1b0)),process[a0_0xb3e3f8(0x1a4)](0x1));console['log'](a0_0xb3e3f8(0x1b5)),console[a0_0xb3e3f8(0x1c7)](a0_0xb3e3f8(0x1c9)+options['host']+':'+options[a0_0xb3e3f8(0x1c8)]),console[a0_0xb3e3f8(0x1c7)]('Press\x20Ctrl+C\x20to\x20exit\x0a');const instance=startTerminalUI(options);instance['waitUntilExit']()[a0_0xb3e3f8(0x1b4)](()=>{const _0x181bd5=a0_0xb3e3f8;console[_0x181bd5(0x1c7)](_0x181bd5(0x1a9)),process['exit'](0x0);})[a0_0xb3e3f8(0x1b2)](_0x1aed79=>{const _0x1645d4=a0_0xb3e3f8;console['error']('\x0aTerminal\x20UI\x20error:',_0x1aed79),process[_0x1645d4(0x1a4)](0x1);});function a0_0x1b8f(){const _0x1e0c9c=['4891964iycQqw','\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)','\x0aLoxia\x20Terminal\x20UI\x0a\x0aUsage:\x0a\x20\x20loxia-terminal\x20[options]\x0a\x0aOptions:\x0a\x20\x20--host,\x20-h\x20<host>\x20\x20\x20\x20Backend\x20host\x20(default:\x20localhost)\x0a\x20\x20--port,\x20-p\x20<port>\x20\x20\x20\x20Backend\x20port\x20(default:\x208080)\x0a\x20\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x0aEnvironment\x20Variables:\x0a\x20\x20LOXIA_HOST\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20host\x0a\x20\x20LOXIA_PORT\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20port\x0a\x0aExamples:\x0a\x20\x20loxia-terminal\x0a\x20\x20loxia-terminal\x20--host\x20192.168.1.100\x20--port\x203000\x0a\x20\x20LOXIA_HOST=api.example.com\x20LOXIA_PORT=443\x20loxia-terminal\x0a','4518834Coxvyk','error','--port','9828adZUjK','slice','The\x20terminal\x20UI\x20cannot\x20run\x20in:','69828TnKQLO','Or\x20use\x20the\x20web\x20UI\x20instead:','LOXIA_HOST','length','3211MEnAtg','--host','4228569XIdOMm','log','port','Connecting\x20to:\x20','\x20\x20npm\x20run\x20terminal-ui','5UzcsNu','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','exit','--help','11610xQMcqu','13094BCVsas','isTTY','\x0aTerminal\x20UI\x20exited','env','argv','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','LOXIA_PORT','\x20\x20-\x20Some\x20CI/CD\x20environments','4PrrqGy','\x20\x20npm\x20start','7NrnTnu','catch','148ySMnQY','then','Starting\x20Loxia\x20Terminal\x20UI...','11182352UggYPy'];a0_0x1b8f=function(){return _0x1e0c9c;};return a0_0x1b8f();}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const a0_0x2e7ca5=a0_0x5e6a;(function(_0x42544f,_0x123f15){const _0x4612ed=a0_0x5e6a,_0x2caae2=_0x42544f();while(!![]){try{const _0x1944fa=parseInt(_0x4612ed(0x10f))/0x1+parseInt(_0x4612ed(0xed))/0x2*(parseInt(_0x4612ed(0x110))/0x3)+-parseInt(_0x4612ed(0x11d))/0x4*(parseInt(_0x4612ed(0x106))/0x5)+parseInt(_0x4612ed(0x105))/0x6*(-parseInt(_0x4612ed(0x11a))/0x7)+parseInt(_0x4612ed(0x10e))/0x8+-parseInt(_0x4612ed(0xee))/0x9*(parseInt(_0x4612ed(0x112))/0xa)+-parseInt(_0x4612ed(0x103))/0xb;if(_0x1944fa===_0x123f15)break;else _0x2caae2['push'](_0x2caae2['shift']());}catch(_0x43d8b4){_0x2caae2['push'](_0x2caae2['shift']());}}}(a0_0x182e,0x284c8));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x5733fa from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process[a0_0x2e7ca5(0x100)][a0_0x2e7ca5(0xef)]||0x1f90,STARTUP_WAIT=0x7d0;let serverProcess=null;async function checkServerReady(_0x36f587=0xa,_0x430da6=0x1f4){const _0x514afa=a0_0x2e7ca5;for(let _0x2d3326=0x0;_0x2d3326<_0x36f587;_0x2d3326++){try{return await new Promise((_0x2c1eba,_0x4f73c2)=>{const _0x1fed6d=a0_0x5e6a,_0x212c39=a0_0x5733fa['get']('http://localhost:'+SERVER_PORT+'/health',_0x12eae2=>{const _0x16bfc1=a0_0x5e6a;_0x12eae2[_0x16bfc1(0x109)]===0xc8?_0x2c1eba():_0x4f73c2(new Error('Server\x20returned\x20'+_0x12eae2[_0x16bfc1(0x109)]));});_0x212c39['on']('error',_0x4f73c2),_0x212c39[_0x1fed6d(0x116)](0x3e8,()=>{const _0x5d182c=_0x1fed6d;_0x212c39[_0x5d182c(0x111)](),_0x4f73c2(new Error(_0x5d182c(0xfe)));});}),console[_0x514afa(0x10a)]('✅\x20Server\x20is\x20ready!'),!![];}catch(_0x471fcd){_0x2d3326<_0x36f587-0x1&&await new Promise(_0x17c5c3=>setTimeout(_0x17c5c3,_0x430da6));}}return console['log']('⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...'),![];}async function startServer(){return new Promise(_0x46654f=>{const _0x4c89ac=a0_0x5e6a;console[_0x4c89ac(0x10a)](_0x4c89ac(0x102));const _0x41ba7f=join(rootDir,_0x4c89ac(0x101),_0x4c89ac(0xf4));serverProcess=spawn(_0x4c89ac(0xf7),[_0x41ba7f],{'cwd':rootDir,'env':{...process[_0x4c89ac(0x100)]},'stdio':[_0x4c89ac(0xf6),_0x4c89ac(0xf2),_0x4c89ac(0xf2)],'detached':![]}),serverProcess[_0x4c89ac(0x108)]['on'](_0x4c89ac(0xf1),_0x1709b5=>{const _0x2b95c7=_0x4c89ac,_0x19d550=_0x1709b5[_0x2b95c7(0xfd)]()[_0x2b95c7(0x113)]();_0x19d550&&console[_0x2b95c7(0x10a)]('[SERVER]\x20'+_0x19d550);}),serverProcess['stderr']['on'](_0x4c89ac(0xf1),_0x2665ce=>{const _0x403964=_0x4c89ac,_0x350ba1=_0x2665ce[_0x403964(0xfd)]()[_0x403964(0x113)]();_0x350ba1&&!_0x350ba1[_0x403964(0xfa)](_0x403964(0x117))&&console[_0x403964(0xf3)](_0x403964(0xeb)+_0x350ba1);}),serverProcess['on'](_0x4c89ac(0xf3),_0x6a5b3a=>{const _0x410caa=_0x4c89ac;console['error'](_0x410caa(0x11c),_0x6a5b3a[_0x410caa(0x104)]),process[_0x410caa(0x118)](0x1);}),serverProcess['on'](_0x4c89ac(0x118),(_0x38510b,_0x4e0c29)=>{const _0x15f6b7=_0x4c89ac;_0x38510b!==null&&_0x38510b!==0x0&&(console['error'](_0x15f6b7(0xec)+_0x38510b),process[_0x15f6b7(0x118)](_0x38510b));}),setTimeout(_0x46654f,STARTUP_WAIT);});}async function startTerminalUI(){const _0x5e19db=a0_0x2e7ca5;console[_0x5e19db(0x10a)](_0x5e19db(0xf9)),console[_0x5e19db(0x10a)]('');const _0x3df00b=join(rootDir,'bin',_0x5e19db(0x10c)),_0x386539=spawn(_0x5e19db(0xf7),[_0x3df00b],{'cwd':rootDir,'env':{...process['env']},'stdio':_0x5e19db(0x114)});return _0x386539['on'](_0x5e19db(0xf3),_0x2680df=>{const _0x309d63=_0x5e19db;console[_0x309d63(0xf3)](_0x309d63(0x119),_0x2680df[_0x309d63(0x104)]),cleanup(),process[_0x309d63(0x118)](0x1);}),_0x386539['on'](_0x5e19db(0x118),_0x2e788f=>{const _0xeef511=_0x5e19db;console[_0xeef511(0x10a)](_0xeef511(0xff)),cleanup(),process[_0xeef511(0x118)](_0x2e788f||0x0);}),_0x386539;}function a0_0x5e6a(_0x8db2f9,_0x509dd7){_0x8db2f9=_0x8db2f9-0xea;const _0x182eff=a0_0x182e();let _0x5e6af5=_0x182eff[_0x8db2f9];return _0x5e6af5;}function cleanup(){const _0x14e255=a0_0x2e7ca5;serverProcess&&!serverProcess[_0x14e255(0x107)]&&(console[_0x14e255(0x10a)](_0x14e255(0x11b)),serverProcess[_0x14e255(0x10d)]('SIGTERM'),setTimeout(()=>{const _0x39b6ec=_0x14e255;!serverProcess['killed']&&serverProcess[_0x39b6ec(0x10d)](_0x39b6ec(0x115));},0x1388));}process['on']('SIGINT',()=>{const _0x4ae4c5=a0_0x2e7ca5;console['log'](_0x4ae4c5(0xf5)),cleanup(),process[_0x4ae4c5(0x118)](0x0);}),process['on'](a0_0x2e7ca5(0x10b),()=>{const _0x218906=a0_0x2e7ca5;console[_0x218906(0x10a)](_0x218906(0xf8)),cleanup(),process[_0x218906(0x118)](0x0);}),process['on'](a0_0x2e7ca5(0x118),()=>{cleanup();});function a0_0x182e(){const _0x434baa=['destroy','10tQepdZ','trim','inherit','SIGKILL','setTimeout','ExperimentalWarning','exit','Failed\x20to\x20start\x20Terminal\x20UI:','137179VStpaV','🛑\x20Stopping\x20server...','Failed\x20to\x20start\x20server:','20eBVZFq','Error\x20during\x20startup:','[SERVER\x20ERROR]\x20','Server\x20exited\x20with\x20code\x20','2AgYVwi','1664541SMTBHZ','PORT','╔════════════════════════════════════════════════╗','data','pipe','error','index.js','\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...','ignore','node','\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...','🖥️\x20\x20Starting\x20Terminal\x20UI...','includes','╚════════════════════════════════════════════════╝','║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║','toString','Timeout','\x0a👋\x20Terminal\x20UI\x20closed.','env','src','🚀\x20Starting\x20Loxia\x20server...','472472HyZBTg','message','42JwBfmo','91265Oufduj','killed','stdout','statusCode','log','SIGTERM','loxia-terminal.js','kill','1279256tDoBqF','217747hgMrlr','731265YdjRqt'];a0_0x182e=function(){return _0x434baa;};return a0_0x182e();}async function main(){const _0xdf861e=a0_0x2e7ca5;console[_0xdf861e(0x10a)](_0xdf861e(0xf0)),console['log'](_0xdf861e(0xfc)),console[_0xdf861e(0x10a)](_0xdf861e(0xfb)),console[_0xdf861e(0x10a)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x3e5150){console['error'](_0xdf861e(0xea),_0x3e5150[_0xdf861e(0x104)]),cleanup(),process[_0xdf861e(0x118)](0x1);}}main();
|
package/package.json
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
const a0_0x194a4b=a0_0x370a;(function(_0x1024b5,_0x205b93){const _0x314615=a0_0x370a,_0x3d5b54=_0x1024b5();while(!![]){try{const _0x38b82f=parseInt(_0x314615(0xa2))/0x1+-parseInt(_0x314615(0xac))/0x2+-parseInt(_0x314615(0x88))/0x3*(-parseInt(_0x314615(0x90))/0x4)+-parseInt(_0x314615(0x85))/0x5+parseInt(_0x314615(0xa9))/0x6*(-parseInt(_0x314615(0x8e))/0x7)+-parseInt(_0x314615(0x9d))/0x8*(parseInt(_0x314615(0xa5))/0x9)+parseInt(_0x314615(0x9e))/0xa;if(_0x38b82f===_0x205b93)break;else _0x3d5b54['push'](_0x3d5b54['shift']());}catch(_0x67a804){_0x3d5b54['push'](_0x3d5b54['shift']());}}}(a0_0x88ab,0x3d595));import{exec}from'child_process';import{promisify}from'util';import a0_0x36bcff from'https';import a0_0x53e2c5 from'http';import a0_0x3d7aa2 from'fs';function a0_0x370a(_0x342455,_0x4be41e){_0x342455=_0x342455-0x6a;const _0x88aba4=a0_0x88ab();let _0x370a78=_0x88aba4[_0x342455];return _0x370a78;}import a0_0x256117 from'path';import{fileURLToPath}from'url';import{createWriteStream}from'fs';import{pipeline}from'stream/promises';const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x256117[a0_0x194a4b(0x75)](__filename),SCANNER_DIR=a0_0x256117[a0_0x194a4b(0x70)](__dirname,'..',a0_0x194a4b(0x73),'.scanners'),SEMGREP_VERSION=a0_0x194a4b(0x77);function a0_0x88ab(){const _0x2034cf=['exit','790756JgFqGM','\x20already\x20installed','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','yamllint','arch','semgrep\x20--version','close','\x20\x20\x20✅\x20','python\x20--version','catch','python3\x20--version','pip-audit','semgrep','8WnsTpx','8979140ahsytQ','finish','Failed\x20to\x20download:\x20HTTP\x20','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','399792kLOxVT','bandit','...','3655539cGwfqf','\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:','\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found','trim','6FsucuS','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','593034dnyFld','python3','statusCode','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','platform','chmod','\x20\x20Installation\x20Complete','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','stdout','https','unlink','pipe','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','join','\x20\x20\x20Location:\x20','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','node_modules','error','dirname','mkdir','v1.55.0','startsWith','\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully','log','\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20','\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a','═══════════════════════════════════════════════════════════\x0a','\x20-m\x20pip\x20show\x20','\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:','\x20-m\x20pip\x20install\x20--user\x20','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','\x20\x20\x20✅\x20Python\x20found:\x20','\x20\x20\x20Installing\x20','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a','1719160DUrAzA','promises','═══════════════════════════════════════════════════════════','3rzVUqs','checkov','\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...','url','then','message','1383130EZCocH'];a0_0x88ab=function(){return _0x2034cf;};return a0_0x88ab();}console[a0_0x194a4b(0x7a)](a0_0x194a4b(0x87)),console[a0_0x194a4b(0x7a)]('\x20\x20Installing\x20Security\x20Scanners'),console[a0_0x194a4b(0x7a)]('═══════════════════════════════════════════════════════════\x0a');async function installScanners(){const _0x423357=a0_0x194a4b;await a0_0x3d7aa2[_0x423357(0x86)][_0x423357(0x76)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console[_0x423357(0x7a)]('\x0a═══════════════════════════════════════════════════════════'),console[_0x423357(0x7a)](_0x423357(0xb2)),console[_0x423357(0x7a)](_0x423357(0x7d));}async function checkESLintSecurity(){const _0x15ab18=a0_0x194a4b;console[_0x15ab18(0x7a)](_0x15ab18(0x81));try{await import('eslint-plugin-security'),console[_0x15ab18(0x7a)](_0x15ab18(0x7c));}catch(_0x58f0e0){console[_0x15ab18(0x7a)](_0x15ab18(0xa7)),console['log'](_0x15ab18(0x92));}}async function installSemgrep(){const _0xd38696=a0_0x194a4b;console['log']('🔍\x20Installing\x20Semgrep...');const _0x328cb3=process[_0xd38696(0xb0)],_0x4e8877=process[_0xd38696(0x94)];try{const _0x218773=await execAsync(_0xd38696(0x95),{'timeout':0x1388});console[_0xd38696(0x7a)](_0xd38696(0x7b)+_0x218773[_0xd38696(0x6b)][_0xd38696(0xa8)]()),console['log'](_0xd38696(0xa1));return;}catch(_0x579098){console[_0xd38696(0x7a)](_0xd38696(0x8a));}const _0x255bef=getSemgrepBinaryInfo(_0x328cb3,_0x4e8877);if(!_0x255bef){console[_0xd38696(0x7a)](_0xd38696(0x6f)+_0x328cb3+'-'+_0x4e8877),console['log']('\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a');return;}try{const _0x5c3696=a0_0x256117[_0xd38696(0x70)](SCANNER_DIR,_0xd38696(0x9c));console[_0xd38696(0x7a)]('\x20\x20\x20Downloading\x20from\x20'+_0x255bef[_0xd38696(0x8b)]+_0xd38696(0xa4)),await downloadFile(_0x255bef[_0xd38696(0x8b)],_0x5c3696),await a0_0x3d7aa2[_0xd38696(0x86)][_0xd38696(0xb1)](_0x5c3696,0x1ed),console[_0xd38696(0x7a)](_0xd38696(0x79)),console[_0xd38696(0x7a)](_0xd38696(0x71)+_0x5c3696+'\x0a'),console[_0xd38696(0x7a)](_0xd38696(0x7f)),console[_0xd38696(0x7a)]('\x20\x20\x20pip\x20install\x20semgrep\x0a');}catch(_0x5ba078){console[_0xd38696(0x7a)]('\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20'+_0x5ba078['message']),console['log'](_0xd38696(0x84));}}function getSemgrepBinaryInfo(_0x1e08a4,_0x4a39c5){return null;}async function installPythonScanners(){const _0x38d2ee=a0_0x194a4b;console[_0x38d2ee(0x7a)]('🐍\x20Checking\x20Python\x20scanners...');let _0x58b61d=null;try{await execAsync(_0x38d2ee(0x9a),{'timeout':0x1388}),_0x58b61d=_0x38d2ee(0xad);}catch(_0x3b9d7d){try{await execAsync(_0x38d2ee(0x98),{'timeout':0x1388}),_0x58b61d='python';}catch(_0x3d4ca8){console[_0x38d2ee(0x7a)]('\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners'),console[_0x38d2ee(0x7a)](_0x38d2ee(0xa6)),console[_0x38d2ee(0x7a)](_0x38d2ee(0x72));return;}}console[_0x38d2ee(0x7a)](_0x38d2ee(0x82)+_0x58b61d),await installViaPip('semgrep',_0x58b61d),await installViaPip(_0x38d2ee(0xa3),_0x58b61d),await installViaPip(_0x38d2ee(0x9b),_0x58b61d),await installViaPip(_0x38d2ee(0x89),_0x58b61d),await installViaPip(_0x38d2ee(0x93),_0x58b61d),console['log']('');}async function installViaPip(_0xf597be,_0x5cbc34){const _0x3ee9c9=a0_0x194a4b;try{const _0x66b809=await execAsync(_0x5cbc34+_0x3ee9c9(0x7e)+_0xf597be,{'timeout':0x1388});return console[_0x3ee9c9(0x7a)](_0x3ee9c9(0x97)+_0xf597be+_0x3ee9c9(0x91)),!![];}catch(_0x1c0de0){console[_0x3ee9c9(0x7a)](_0x3ee9c9(0x83)+_0xf597be+_0x3ee9c9(0xa4));try{return await execAsync(_0x5cbc34+_0x3ee9c9(0x80)+_0xf597be,{'timeout':0xea60}),console[_0x3ee9c9(0x7a)](_0x3ee9c9(0x97)+_0xf597be+'\x20installed\x20successfully'),!![];}catch(_0x24a876){return console[_0x3ee9c9(0x7a)](_0x3ee9c9(0xab)+_0xf597be+':\x20'+_0x24a876[_0x3ee9c9(0x8d)]),console[_0x3ee9c9(0x7a)](_0x3ee9c9(0xaa)+_0xf597be),![];}}}async function downloadFile(_0x143e63,_0x4994dd){return new Promise((_0x404cf3,_0x5c0880)=>{const _0x2ff29d=a0_0x370a,_0x1ff2f2=_0x143e63[_0x2ff29d(0x78)](_0x2ff29d(0x6c))?a0_0x36bcff:a0_0x53e2c5;_0x1ff2f2['get'](_0x143e63,_0x1d335d=>{const _0x269964=_0x2ff29d;if(_0x1d335d[_0x269964(0xae)]===0x12e||_0x1d335d[_0x269964(0xae)]===0x12d){downloadFile(_0x1d335d['headers']['location'],_0x4994dd)[_0x269964(0x8c)](_0x404cf3)[_0x269964(0x99)](_0x5c0880);return;}if(_0x1d335d[_0x269964(0xae)]!==0xc8){_0x5c0880(new Error(_0x269964(0xa0)+_0x1d335d[_0x269964(0xae)]));return;}const _0x221236=createWriteStream(_0x4994dd);_0x1d335d[_0x269964(0x6e)](_0x221236),_0x221236['on'](_0x269964(0x9f),()=>{const _0x8996eb=_0x269964;_0x221236[_0x8996eb(0x96)](),_0x404cf3();}),_0x221236['on'](_0x269964(0x74),_0x3f40c7=>{const _0x4c99f8=_0x269964;a0_0x3d7aa2[_0x4c99f8(0x6d)](_0x4994dd,()=>{}),_0x5c0880(_0x3f40c7);});})['on']('error',_0x5c0880);});}installScanners()['catch'](_0x52166a=>{const _0x38cf33=a0_0x194a4b;console['error']('❌\x20Installation\x20failed:',_0x52166a[_0x38cf33(0x8d)]),console[_0x38cf33(0x74)]('\x0aYou\x20can\x20manually\x20install\x20scanners:'),console[_0x38cf33(0x74)](_0x38cf33(0xaf)),console['error'](_0x38cf33(0x6a)),process[_0x38cf33(0x8f)](0x0);});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a0_0x372e71=a0_0x10c3;(function(_0x135c27,_0x47d7a7){const _0x5c013d=a0_0x10c3,_0x36c13f=_0x135c27();while(!![]){try{const _0x539c0f=-parseInt(_0x5c013d(0x19e))/0x1*(-parseInt(_0x5c013d(0x195))/0x2)+parseInt(_0x5c013d(0x19a))/0x3+-parseInt(_0x5c013d(0x1b4))/0x4+-parseInt(_0x5c013d(0x1b3))/0x5+-parseInt(_0x5c013d(0x1be))/0x6*(parseInt(_0x5c013d(0x17d))/0x7)+parseInt(_0x5c013d(0x1bd))/0x8*(-parseInt(_0x5c013d(0x187))/0x9)+-parseInt(_0x5c013d(0x182))/0xa*(-parseInt(_0x5c013d(0x1a0))/0xb);if(_0x539c0f===_0x47d7a7)break;else _0x36c13f['push'](_0x36c13f['shift']());}catch(_0x4da37c){_0x36c13f['push'](_0x36c13f['shift']());}}}(a0_0x5829,0xcbd12));import{STATIC_ANALYSIS}from'../utilities/constants.js';function a0_0x5829(){const _0x9d610f=['ndi4nZbdt1Hbsw0','ug9ZDentuYbZEw50yxGGy2HLy2SGCgfZC2vK','uevsrK9stufoq0u','Dgv4Da','zgvIDwC','otqXnhP1EfrhEq','z2v0u3vWCg9YDgvKrxH0zw5ZAw9UCW','D2fYBG','zgvMyxvSDa','D2HPBgu','Cg9ZDgnZCY1Zy3nZ','y29SDw1U','zw5KC1DPDgG','lMnZCW','Cg9ZDgnZCY1SzxnZ','zgv0zwn0tgfUz3vHz2u','y3nZ','ChvZAa','y2HLy2TtEw50yxG','neP0uejXvG','lMXLC3m','zwfJAa','q1ntigfUywX5C2LZigzHAwXLza','Aw5JBhvKzxm','ntaXodG1rhb6r1jf','v0fstKLorW','u1Lovefy','qKvtvf9quKfdveLdrq','mtGYnZC1zKXhAgfS','BgLUzq','nJG2nhnRrxPVBW','rvjst1i','Bg9Nz2vY','CgX1z2LU','Dw5RBM93BG','BgvUz3rO','y29UDgvUDa','CMvHC29U','BM8Tzw1WDhK','u0vwrvjjvfK','BwL4Aw4','CMvZDwX0CW','zM9YD2fYza','q0furuDpuLK','zg91yMXL','Cg9ZDgnZCW','DxnL','CMv0DxjU','BwvZC2fNzq','mta4otu0mfjWz2D5sq','ndiZmZe1nLDwyw9ZzG','C2v2zxjPDhK','Cg9ZDgnZC0XLC3m','CM9VDa','yMvZDc1WCMfJDgLJzq','lNnHC3m','zxH0zw5K','BgvZCW','C3LUDgf4','odmYogTgAu5Yyq','ndHrA0vmC2i','zMLSDgvY','C2nZCW','zxjYB3i','ChjVy2vZCW','Cg9ZDgnZC1nJC3m','zM9YBwf0ug9ZDentu0vYCM9Y','nZaXnezJAxPjDq','Dg9mB3DLCKnHC2u','BM8TDw5RBM93BG','BgLUDfn0EwXLCW','C3r5BgvSAw50'];a0_0x5829=function(){return _0x9d610f;};return a0_0x5829();}function a0_0x10c3(_0x5b7555,_0x54354e){_0x5b7555=_0x5b7555-0x17c;const _0x5829bb=a0_0x5829();let _0x10c34a=_0x5829bb[_0x5b7555];if(a0_0x10c3['UGBwVj']===undefined){var _0x296a01=function(_0x317a03){const _0x54f522='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x7e5b24='',_0x5cf612='';for(let _0x1b2b8b=0x0,_0x3bb191,_0x1b9fb1,_0x1668ea=0x0;_0x1b9fb1=_0x317a03['charAt'](_0x1668ea++);~_0x1b9fb1&&(_0x3bb191=_0x1b2b8b%0x4?_0x3bb191*0x40+_0x1b9fb1:_0x1b9fb1,_0x1b2b8b++%0x4)?_0x7e5b24+=String['fromCharCode'](0xff&_0x3bb191>>(-0x2*_0x1b2b8b&0x6)):0x0){_0x1b9fb1=_0x54f522['indexOf'](_0x1b9fb1);}for(let _0x2898b3=0x0,_0x25231b=_0x7e5b24['length'];_0x2898b3<_0x25231b;_0x2898b3++){_0x5cf612+='%'+('00'+_0x7e5b24['charCodeAt'](_0x2898b3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5cf612);};a0_0x10c3['lgCIIA']=_0x296a01,a0_0x10c3['meiCQI']={},a0_0x10c3['UGBwVj']=!![];}const _0x132688=_0x5829bb[0x0],_0x2e8cb9=_0x5b7555+_0x132688,_0x748a88=a0_0x10c3['meiCQI'][_0x2e8cb9];return!_0x748a88?(_0x10c34a=a0_0x10c3['lgCIIA'](_0x10c34a),a0_0x10c3['meiCQI'][_0x2e8cb9]=_0x10c34a):_0x10c34a=_0x748a88,_0x10c34a;}class CSSAnalyzer{constructor(_0x7e5b24=null){const _0x925114=a0_0x10c3;this[_0x925114(0x1a2)]=_0x7e5b24,this['stylelint']=null,this[_0x925114(0x1af)]=null,this[_0x925114(0x1c3)]=null,this[_0x925114(0x1b6)]=null;}async['analyze'](_0x5cf612,_0x1b2b8b,_0x3bb191={}){const _0x5ef623=a0_0x10c3;try{const _0x1b9fb1=[],_0x1668ea=this['detectLanguage'](_0x5cf612),_0x2898b3=await this['checkSyntax'](_0x5cf612,_0x1b2b8b,_0x1668ea);_0x1b9fb1[_0x5ef623(0x193)](..._0x2898b3);if(_0x2898b3['length']===0x0){const _0x25231b=await this[_0x5ef623(0x180)](_0x5cf612,_0x1b2b8b,_0x1668ea);_0x1b9fb1[_0x5ef623(0x193)](..._0x25231b);}return this[_0x5ef623(0x1a2)]?.[_0x5ef623(0x186)]('CSS\x20analysis\x20completed',{'file':_0x5cf612,'language':_0x1668ea,'totalDiagnostics':_0x1b9fb1[_0x5ef623(0x1a5)],'errors':_0x1b9fb1['filter'](_0x4eee75=>_0x4eee75['severity']===STATIC_ANALYSIS[_0x5ef623(0x1a9)][_0x5ef623(0x1a1)])[_0x5ef623(0x1a5)],'warnings':_0x1b9fb1[_0x5ef623(0x1bf)](_0x5eda4e=>_0x5eda4e['severity']===STATIC_ANALYSIS['SEVERITY']['WARNING'])['length']}),_0x1b9fb1;}catch(_0x2fa825){return this[_0x5ef623(0x1a2)]?.[_0x5ef623(0x1c1)](_0x5ef623(0x198),{'file':_0x5cf612,'error':_0x2fa825['message']}),[];}}async[a0_0x372e71(0x194)](_0x471cf6,_0x3e8e8a,_0xe6fff5){const _0x36c670=a0_0x372e71,_0x4e6ef3=[];try{if(!this['postcss']){const _0x4b0984=await import('postcss');this['postcss']=_0x4b0984['default'];}let _0x33f61c=null;if(_0xe6fff5===_0x36c670(0x1c0)){if(!this['postcssScss']){const _0x2f115b=await import(_0x36c670(0x18c));this[_0x36c670(0x1c3)]=_0x2f115b['default'];}_0x33f61c=this[_0x36c670(0x1c3)];}else{if(_0xe6fff5===_0x36c670(0x1bb)){if(!this[_0x36c670(0x1b6)]){const _0xf1350c=await import(_0x36c670(0x190));this['postcssLess']=_0xf1350c[_0x36c670(0x18a)];}_0x33f61c=this['postcssLess'];}}const _0x1ace8b=this['postcss']()[_0x36c670(0x1c2)](_0x3e8e8a,{'from':_0x471cf6,'syntax':_0x33f61c}),_0xa29d4d=_0x1ace8b[_0x36c670(0x1b7)];this['logger']?.['debug'](_0x36c670(0x183),{'file':_0x471cf6});}catch(_0x5903dc){const _0x4f0154=this[_0x36c670(0x17c)](_0x5903dc,_0x471cf6);_0x4f0154&&_0x4e6ef3['push'](_0x4f0154);}return _0x4e6ef3;}async['lintStyles'](_0x1c25e2,_0x48aa0e,_0x110113){const _0x359f17=a0_0x372e71,_0x60dbf3=[];try{if(!this[_0x359f17(0x181)]){const _0x243491=await import('stylelint');this['stylelint']=_0x243491['default'];}const _0x31b8e0={'extends':['stylelint-config-standard'],'rules':{'color-no-invalid-hex':!![],'font-family-no-duplicate-names':!![],'function-calc-no-invalid':!![],'string-no-newline':!![],'unit-no-unknown':!![],'property-no-unknown':!![],'declaration-block-no-duplicate-properties':!![],'selector-pseudo-class-no-unknown':!![],'selector-pseudo-element-no-unknown':!![],'selector-type-no-unknown':[!![],{'ignoreTypes':['/^custom-/','ng-deep']}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x110113==='scss'?[!![],{'ignoreAtRules':[_0x359f17(0x1aa),'include',_0x359f17(0x1ba),'if','else','for',_0x359f17(0x197),_0x359f17(0x18b),'function',_0x359f17(0x1b1),_0x359f17(0x1a6),_0x359f17(0x1b0),_0x359f17(0x1ac)]}]:_0x110113==='less'?[!![],{'ignoreAtRules':[_0x359f17(0x1a3)]}]:!![],'comment-no-empty':!![],'no-duplicate-selectors':!![],'no-empty-source':null,'block-no-empty':!![],'declaration-block-no-shorthand-property-overrides':!![],'font-family-no-missing-generic-family-keyword':!![],'function-linear-gradient-no-nonstandard-direction':!![],'no-descending-specificity':null,'no-duplicate-at-import-rules':!![],'no-extra-semicolons':!![],'no-invalid-double-slash-comments':!![],'selector-pseudo-element-colon-notation':_0x359f17(0x1ae),'selector-type-case':'lower'},'customSyntax':_0x110113==='scss'?'postcss-scss':_0x110113===_0x359f17(0x1bb)?_0x359f17(0x190):undefined},_0x431717=await this[_0x359f17(0x181)]['lint']({'code':_0x48aa0e,'codeFilename':_0x1c25e2,'config':_0x31b8e0});if(_0x431717['results']&&_0x431717[_0x359f17(0x1ab)]['length']>0x0){const _0x4bee90=_0x431717[_0x359f17(0x1ab)][0x0];if(_0x4bee90['warnings'])for(const _0x54231f of _0x4bee90['warnings']){_0x60dbf3[_0x359f17(0x193)]({'file':_0x1c25e2,'line':_0x54231f['line']||0x1,'column':_0x54231f[_0x359f17(0x18d)]||0x1,'severity':_0x54231f[_0x359f17(0x1b5)]==='error'?STATIC_ANALYSIS['SEVERITY']['ERROR']:STATIC_ANALYSIS['SEVERITY'][_0x359f17(0x19b)],'rule':_0x54231f['rule']||_0x359f17(0x1a4),'message':_0x54231f[_0x359f17(0x185)],'category':this['categorizeStylelintRule'](_0x54231f['rule']),'fixable':![],'source':_0x359f17(0x181)});}}}catch(_0x53e61f){this['logger']?.[_0x359f17(0x189)]('Stylelint\x20analysis\x20failed',{'file':_0x1c25e2,'error':_0x53e61f[_0x359f17(0x1b2)]});}return _0x60dbf3;}[a0_0x372e71(0x17c)](_0x2eb0f1,_0x3a6155){const _0x31896e=a0_0x372e71;return{'file':_0x3a6155,'line':_0x2eb0f1[_0x31896e(0x19f)]||0x1,'column':_0x2eb0f1['column']||0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x31896e(0x1a1)],'rule':_0x2eb0f1['name']||'CssSyntaxError','message':_0x2eb0f1[_0x31896e(0x1a7)]||_0x2eb0f1[_0x31896e(0x1b2)],'category':STATIC_ANALYSIS[_0x31896e(0x1ad)][_0x31896e(0x19c)],'fixable':![],'source':_0x31896e(0x1af),'code':_0x2eb0f1['source']||undefined};}['categorizeStylelintRule'](_0x27d657){const _0x3aab3a=a0_0x372e71;if(!_0x27d657)return STATIC_ANALYSIS['CATEGORY']['STYLE'];const _0x19646c=_0x27d657[_0x3aab3a(0x17e)]();if(_0x19646c['includes']('no-invalid')||_0x19646c['includes'](_0x3aab3a(0x17f))||_0x19646c['includes'](_0x3aab3a(0x1a8))||_0x19646c['includes'](_0x3aab3a(0x1bc)))return STATIC_ANALYSIS[_0x3aab3a(0x1ad)][_0x3aab3a(0x19c)];if(_0x19646c['includes']('performance')||_0x19646c[_0x3aab3a(0x199)]('optimize'))return STATIC_ANALYSIS[_0x3aab3a(0x1ad)][_0x3aab3a(0x184)];if(_0x19646c['includes'](_0x3aab3a(0x1b8))||_0x19646c['includes']('recommended'))return STATIC_ANALYSIS['CATEGORY'][_0x3aab3a(0x19d)];return STATIC_ANALYSIS[_0x3aab3a(0x1ad)]['STYLE'];}[a0_0x372e71(0x191)](_0x500286){const _0x2e7934=a0_0x372e71,_0x5b29f6=_0x500286['toLowerCase']();if(_0x5b29f6[_0x2e7934(0x18e)]('.scss')||_0x5b29f6['endsWith'](_0x2e7934(0x1b9)))return'scss';if(_0x5b29f6[_0x2e7934(0x18e)](_0x2e7934(0x196)))return'less';return _0x2e7934(0x192);}[a0_0x372e71(0x188)](){const _0xd45cee=a0_0x372e71;return[_0xd45cee(0x18f),'.scss',_0xd45cee(0x1b9),_0xd45cee(0x196)];}['supportsAutoFix'](){return![];}}export default CSSAnalyzer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a0_0x1e7674=a0_0x2583;(function(_0x50da16,_0x1f3232){const _0x8e8f6e=a0_0x2583,_0x4a716e=_0x50da16();while(!![]){try{const _0x42df34=parseInt(_0x8e8f6e(0x1bd))/0x1+parseInt(_0x8e8f6e(0x178))/0x2*(parseInt(_0x8e8f6e(0x166))/0x3)+parseInt(_0x8e8f6e(0x1bb))/0x4+parseInt(_0x8e8f6e(0x17f))/0x5+parseInt(_0x8e8f6e(0x1bf))/0x6*(-parseInt(_0x8e8f6e(0x16c))/0x7)+parseInt(_0x8e8f6e(0x189))/0x8+parseInt(_0x8e8f6e(0x163))/0x9*(-parseInt(_0x8e8f6e(0x186))/0xa);if(_0x42df34===_0x1f3232)break;else _0x4a716e['push'](_0x4a716e['shift']());}catch(_0x16c386){_0x4a716e['push'](_0x4a716e['shift']());}}}(a0_0x3f8e,0xe51ec));function a0_0x2583(_0x1f07ab,_0x59f9b5){_0x1f07ab=_0x1f07ab-0x15b;const _0x3f8efe=a0_0x3f8e();let _0x2583fd=_0x3f8efe[_0x1f07ab];if(a0_0x2583['LfBsnr']===undefined){var _0x2b2d0f=function(_0x755f9){const _0x35067a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3f96d7='',_0x15bab0='';for(let _0x40113a=0x0,_0x1a0659,_0x1d442b,_0x5f2cc1=0x0;_0x1d442b=_0x755f9['charAt'](_0x5f2cc1++);~_0x1d442b&&(_0x1a0659=_0x40113a%0x4?_0x1a0659*0x40+_0x1d442b:_0x1d442b,_0x40113a++%0x4)?_0x3f96d7+=String['fromCharCode'](0xff&_0x1a0659>>(-0x2*_0x40113a&0x6)):0x0){_0x1d442b=_0x35067a['indexOf'](_0x1d442b);}for(let _0x14c832=0x0,_0x2f1a04=_0x3f96d7['length'];_0x14c832<_0x2f1a04;_0x14c832++){_0x15bab0+='%'+('00'+_0x3f96d7['charCodeAt'](_0x14c832)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x15bab0);};a0_0x2583['LRUdkd']=_0x2b2d0f,a0_0x2583['PfXROZ']={},a0_0x2583['LfBsnr']=!![];}const _0x115041=_0x3f8efe[0x0],_0x1cea03=_0x1f07ab+_0x115041,_0x2c56a0=a0_0x2583['PfXROZ'][_0x1cea03];return!_0x2c56a0?(_0x2583fd=a0_0x2583['LRUdkd'](_0x2583fd),a0_0x2583['PfXROZ'][_0x1cea03]=_0x2583fd):_0x2583fd=_0x2c56a0,_0x2583fd;}import{exec}from'child_process';import{promisify}from'util';import a0_0x3f96d7 from'path';import a0_0x15bab0 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x40113a=null){const _0x33e92f=a0_0x2583;this['logger']=_0x40113a,this[_0x33e92f(0x165)]=null,this[_0x33e92f(0x1a4)]=new Map();}async['detectAvailableValidators'](){const _0x54eaae=a0_0x2583;if(this['availableScanners']!==null)return this[_0x54eaae(0x165)];const _0x1a0659={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync('checkov\x20--version',{'timeout':0x1388}),_0x1a0659[_0x54eaae(0x1d9)]=!![],this['logger']?.['debug']('checkov\x20detected');}catch(_0x1d442b){this[_0x54eaae(0x15d)]?.['debug']('checkov\x20not\x20available',{'error':_0x1d442b['message']});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x1a0659[_0x54eaae(0x175)]=!![],this['logger']?.['debug'](_0x54eaae(0x1d2));}catch(_0x5f2cc1){this[_0x54eaae(0x15d)]?.['debug'](_0x54eaae(0x1aa),{'error':_0x5f2cc1['message']});}try{await execAsync(_0x54eaae(0x1a6),{'timeout':0x1388}),_0x1a0659[_0x54eaae(0x1d3)]=!![],this['logger']?.[_0x54eaae(0x1ae)](_0x54eaae(0x170));}catch(_0x14c832){this['logger']?.['debug'](_0x54eaae(0x1ac),{'error':_0x14c832[_0x54eaae(0x1b3)]});}try{await import(_0x54eaae(0x18b)),_0x1a0659[_0x54eaae(0x1db)]=!![],this[_0x54eaae(0x15d)]?.['debug'](_0x54eaae(0x1c5));}catch(_0x2f1a04){this[_0x54eaae(0x15d)]?.[_0x54eaae(0x1ae)]('ajv\x20not\x20available',{'error':_0x2f1a04[_0x54eaae(0x1b3)]});}return this['availableScanners']=_0x1a0659,_0x1a0659;}async[a0_0x1e7674(0x1bc)](_0x190b0b,_0x30079c={}){const _0x3d260d=a0_0x1e7674,_0x13efdd=[],_0x204ddf=await this['detectAvailableValidators'](),_0x352e67=this[_0x3d260d(0x171)](_0x190b0b);this[_0x3d260d(0x15d)]?.[_0x3d260d(0x1ae)](_0x3d260d(0x1ca),{'filePath':_0x190b0b,'fileType':_0x352e67});switch(_0x352e67){case'dockerfile':if(_0x204ddf['hadolint']){const _0x415659=await this[_0x3d260d(0x1cd)](_0x190b0b,_0x30079c);_0x13efdd['push'](..._0x415659);}if(_0x204ddf['checkov']){const _0x191234=await this[_0x3d260d(0x1ab)](_0x190b0b,'dockerfile',_0x30079c);_0x13efdd['push'](..._0x191234);}break;case'docker-compose':if(_0x204ddf[_0x3d260d(0x1d3)]){const _0x365c55=await this[_0x3d260d(0x172)](_0x190b0b,_0x30079c);_0x13efdd[_0x3d260d(0x1ce)](..._0x365c55);}if(_0x204ddf['checkov']){const _0x254dcd=await this['validateWithCheckov'](_0x190b0b,'docker_compose',_0x30079c);_0x13efdd[_0x3d260d(0x1ce)](..._0x254dcd);}break;case _0x3d260d(0x196):if(_0x204ddf['yamllint']){const _0x586e97=await this['validateYAML'](_0x190b0b,_0x30079c);_0x13efdd[_0x3d260d(0x1ce)](..._0x586e97);}if(_0x204ddf[_0x3d260d(0x1d9)]){const _0x2a81a6=await this[_0x3d260d(0x1ab)](_0x190b0b,_0x3d260d(0x196),_0x30079c);_0x13efdd[_0x3d260d(0x1ce)](..._0x2a81a6);}break;case'terraform':if(_0x204ddf['checkov']){const _0x1d6829=await this[_0x3d260d(0x1ab)](_0x190b0b,_0x3d260d(0x19f),_0x30079c);_0x13efdd['push'](..._0x1d6829);}break;case'package.json':if(_0x204ddf['jsonSchema']){const _0xdf9244=await this['validatePackageJson'](_0x190b0b,_0x30079c);_0x13efdd[_0x3d260d(0x1ce)](..._0xdf9244);}break;case _0x3d260d(0x15c):if(_0x204ddf['jsonSchema']){const _0x40d9b6=await this[_0x3d260d(0x168)](_0x190b0b,_0x30079c);_0x13efdd['push'](..._0x40d9b6);}break;case _0x3d260d(0x187):if(_0x204ddf[_0x3d260d(0x1d3)]){const _0x2e3247=await this['validateYAML'](_0x190b0b,_0x30079c);_0x13efdd['push'](..._0x2e3247);}break;case _0x3d260d(0x16d):const _0x45fc39=await this['validateEnvFile'](_0x190b0b,_0x30079c);_0x13efdd[_0x3d260d(0x1ce)](..._0x45fc39);break;case'yaml':if(_0x204ddf['yamllint']){const _0x4ae7ba=await this['validateYAML'](_0x190b0b,_0x30079c);_0x13efdd[_0x3d260d(0x1ce)](..._0x4ae7ba);}break;default:this['logger']?.[_0x3d260d(0x167)](_0x3d260d(0x17e),{'filePath':_0x190b0b,'fileType':_0x352e67});return[];}return this['normalizeResults'](_0x13efdd);}async[a0_0x1e7674(0x1cd)](_0x3648af,_0x27786f={}){const _0x406b1d=a0_0x1e7674;try{const _0xa2692d=await execAsync(_0x406b1d(0x197)+_0x3648af+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x22c4c0=JSON[_0x406b1d(0x17b)](_0xa2692d['stdout']);return this[_0x406b1d(0x1c2)](_0x22c4c0,_0x3648af);}catch(_0x549351){if(_0x549351[_0x406b1d(0x1d5)])try{const _0x49e547=JSON['parse'](_0x549351[_0x406b1d(0x1d5)]);return this['parseHadolintResults'](_0x49e547,_0x3648af);}catch(_0x3d06fc){this['logger']?.[_0x406b1d(0x16b)](_0x406b1d(0x1a7),{'error':_0x3d06fc[_0x406b1d(0x1b3)]});}return this[_0x406b1d(0x15d)]?.['error']('hadolint\x20validation\x20failed',{'error':_0x549351[_0x406b1d(0x1b3)]}),[];}}['parseHadolintResults'](_0x3c1308,_0x3b0fdf){const _0xcd075f=a0_0x1e7674,_0x4286c6=[];if(Array[_0xcd075f(0x16e)](_0x3c1308))for(const _0x3de00f of _0x3c1308){_0x4286c6['push']({'file':_0x3b0fdf,'line':_0x3de00f['line']||0x1,'column':_0x3de00f['column']||0x1,'severity':this[_0xcd075f(0x1d6)](_0x3de00f['level']),'rule':_0x3de00f[_0xcd075f(0x1d4)],'message':_0x3de00f[_0xcd075f(0x1b3)],'category':_0xcd075f(0x1a3),'validator':'hadolint'});}return _0x4286c6;}async[a0_0x1e7674(0x172)](_0x55e421,_0x556019={}){const _0x30a80c=a0_0x1e7674;try{const _0x4efb7=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x55e421+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x30a80c(0x190)](_0x4efb7[_0x30a80c(0x1d5)],_0x55e421);}catch(_0x5c6f85){if(_0x5c6f85['stdout'])return this['parseYamllintResults'](_0x5c6f85['stdout'],_0x55e421);return this[_0x30a80c(0x15d)]?.['error']('yamllint\x20validation\x20failed',{'error':_0x5c6f85[_0x30a80c(0x1b3)]}),[];}}[a0_0x1e7674(0x190)](_0x262647,_0xd6365a){const _0x527429=a0_0x1e7674,_0x4edf39=[],_0x194488=_0x262647[_0x527429(0x1d0)]('\x0a')[_0x527429(0x179)](_0x1a5429=>_0x1a5429['trim']());for(const _0x3c8cd5 of _0x194488){const _0x5a6aa2=_0x3c8cd5['match'](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x5a6aa2){const [,_0x3ab82e,_0x27ca33,_0x433616,_0x1caf47,_0x2e9839,_0x126f3c]=_0x5a6aa2;_0x4edf39[_0x527429(0x1ce)]({'file':_0xd6365a,'line':parseInt(_0x27ca33,0xa),'column':parseInt(_0x433616,0xa),'severity':this['mapYamllintSeverity'](_0x1caf47),'rule':_0x126f3c,'message':_0x2e9839,'category':_0x527429(0x162),'validator':'yamllint'});}}return _0x4edf39;}async['validateWithCheckov'](_0x1c9c35,_0xcbe2c9,_0x82952e={}){const _0x37ece1=a0_0x1e7674;try{const _0x552287=await execAsync(_0x37ece1(0x15b)+_0x1c9c35+_0x37ece1(0x19c)+_0xcbe2c9+'\x20--output\x20json\x20--compact',{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x26a82a=JSON['parse'](_0x552287[_0x37ece1(0x1d5)]);return this['parseCheckovResults'](_0x26a82a,_0x1c9c35);}catch(_0x549d26){if(_0x549d26['stdout'])try{const _0x50bdc6=JSON[_0x37ece1(0x17b)](_0x549d26['stdout']);return this[_0x37ece1(0x17d)](_0x50bdc6,_0x1c9c35);}catch(_0x93c2b0){this['logger']?.[_0x37ece1(0x16b)](_0x37ece1(0x19b),{'error':_0x93c2b0['message']});}return this[_0x37ece1(0x15d)]?.[_0x37ece1(0x16b)](_0x37ece1(0x1c4),{'error':_0x549d26[_0x37ece1(0x1b3)]}),[];}}[a0_0x1e7674(0x17d)](_0x317c52,_0x215795){const _0x1cfe93=a0_0x1e7674,_0x2835b6=[];if(_0x317c52[_0x1cfe93(0x174)]&&_0x317c52[_0x1cfe93(0x174)]['failed_checks'])for(const _0x4e5e50 of _0x317c52[_0x1cfe93(0x174)]['failed_checks']){_0x2835b6['push']({'file':_0x215795,'line':_0x4e5e50['file_line_range']?_0x4e5e50[_0x1cfe93(0x181)][0x0]:0x1,'column':0x1,'severity':this[_0x1cfe93(0x188)](_0x4e5e50['check_class']),'rule':_0x4e5e50[_0x1cfe93(0x16f)],'message':_0x4e5e50['check_name']||_0x4e5e50['check_id'],'category':_0x1cfe93(0x173),'validator':_0x1cfe93(0x1d9),'remediation':_0x4e5e50['guideline'],'cwe':_0x4e5e50['cwe'],'references':_0x4e5e50[_0x1cfe93(0x17a)]?[_0x4e5e50['guideline']]:[]});}return _0x2835b6;}async['validatePackageJson'](_0x90ef61,_0x341334={}){const _0x692876=a0_0x1e7674;try{const _0x274cdf=(await import('ajv'))['default'],_0x11f126=(await import(_0x692876(0x193)))['default'],_0x3a197d=await a0_0x15bab0['readFile'](_0x90ef61,'utf-8'),_0x5709a6=JSON[_0x692876(0x17b)](_0x3a197d),_0x120b40=new _0x274cdf({'allErrors':!![],'strict':![]});_0x11f126(_0x120b40);const _0x30a2c0={'type':_0x692876(0x18d),'required':[_0x692876(0x16a),_0x692876(0x1b9)],'properties':{'name':{'type':_0x692876(0x1a1),'pattern':_0x692876(0x1b8)},'version':{'type':_0x692876(0x1a1)},'description':{'type':'string'},'main':{'type':'string'},'type':{'type':_0x692876(0x1a1),'enum':['module',_0x692876(0x18a)]},'scripts':{'type':'object'},'dependencies':{'type':'object'},'devDependencies':{'type':_0x692876(0x18d)}},'additionalProperties':!![]},_0x130ad0=_0x120b40[_0x692876(0x182)](_0x30a2c0),_0xa2ce7c=_0x130ad0(_0x5709a6);if(!_0xa2ce7c&&_0x130ad0['errors'])return _0x130ad0['errors']['map'](_0x4ee980=>({'file':_0x90ef61,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x692876(0x1b7)]['ERROR'],'rule':_0x692876(0x1a5),'message':_0x4ee980['instancePath']?_0x4ee980[_0x692876(0x1b5)]+'\x20'+_0x4ee980[_0x692876(0x1b3)]:_0x692876(0x1ad)+_0x4ee980['params'][_0x692876(0x1cf)]+'\x27','category':_0x692876(0x1c9),'validator':_0x692876(0x1a5)}));return[];}catch(_0x22ff53){return this['logger']?.['error']('package.json\x20validation\x20failed',{'error':_0x22ff53[_0x692876(0x1b3)]}),[{'file':_0x90ef61,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x22ff53['message'],'category':_0x692876(0x1b6),'validator':'json-parse'}];}}async['validateTsConfig'](_0x5dfbd5,_0x160b63={}){const _0x4b461a=a0_0x1e7674;try{const _0x591187=await a0_0x15bab0[_0x4b461a(0x19e)](_0x5dfbd5,_0x4b461a(0x161)),_0x2d9a81=JSON[_0x4b461a(0x17b)](_0x591187),_0xedc207=[];if(_0x2d9a81[_0x4b461a(0x192)]){const _0xe1d861=_0x2d9a81['compilerOptions'];!_0xe1d861['strict']&&_0xedc207['push']({'file':_0x5dfbd5,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x4b461a(0x1b7)]['WARNING'],'rule':'strict-mode','message':'Consider\x20enabling\x20\x22strict\x22\x20mode\x20for\x20better\x20type\x20safety','category':_0x4b461a(0x1ba),'validator':'tsconfig-validator'}),_0xe1d861['noImplicitAny']===![]&&_0xedc207[_0x4b461a(0x1ce)]({'file':_0x5dfbd5,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x4b461a(0x1b7)][_0x4b461a(0x1d7)],'rule':_0x4b461a(0x1dc),'message':_0x4b461a(0x1a2),'category':_0x4b461a(0x1ba),'validator':_0x4b461a(0x180)});}return _0xedc207;}catch(_0x56edfc){return this['logger']?.[_0x4b461a(0x16b)]('tsconfig.json\x20validation\x20failed',{'error':_0x56edfc[_0x4b461a(0x1b3)]}),[{'file':_0x5dfbd5,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x4b461a(0x1c0)],'rule':'json-parse','message':_0x4b461a(0x1dd)+_0x56edfc[_0x4b461a(0x1b3)],'category':'syntax','validator':'json-parse'}];}}async['validateEnvFile'](_0x569857,_0x44fb01={}){const _0x1bd5d0=a0_0x1e7674;try{const _0x586ced=await a0_0x15bab0[_0x1bd5d0(0x19e)](_0x569857,'utf-8'),_0x5144f3=[],_0x1edbc5=_0x586ced['split']('\x0a'),_0x36a4b3=[{'pattern':/password|passwd|pwd/i,'name':_0x1bd5d0(0x160)},{'pattern':/api[_-]?key/i,'name':_0x1bd5d0(0x169)},{'pattern':/secret/i,'name':'secret'},{'pattern':/token/i,'name':_0x1bd5d0(0x176)},{'pattern':/private[_-]?key/i,'name':_0x1bd5d0(0x19d)},{'pattern':/aws[_-]?access/i,'name':_0x1bd5d0(0x1a0)}];return _0x1edbc5['forEach']((_0x3ee824,_0x204df4)=>{const _0x20580f=_0x1bd5d0,_0x27b2ac=_0x3ee824['trim']();if(!_0x27b2ac||_0x27b2ac['startsWith']('#'))return;if(_0x27b2ac[_0x20580f(0x183)]('=')){const [_0x468ef7,_0x2a28fd]=_0x27b2ac[_0x20580f(0x1d0)]('='),_0x3582d5=_0x468ef7[_0x20580f(0x15f)](),_0x146a24=_0x2a28fd?.[_0x20580f(0x1b4)]()||'',_0x1aba8b=_0x146a24&&_0x146a24!==''&&!_0x146a24['startsWith']('$')&&_0x146a24!==_0x20580f(0x1af)&&_0x146a24!=='changeme'&&_0x146a24['length']>0x5;if(_0x1aba8b)for(const {pattern:_0x176cfa,name:_0xdecd7b}of _0x36a4b3){if(_0x176cfa[_0x20580f(0x191)](_0x3582d5)){_0x5144f3[_0x20580f(0x1ce)]({'file':_0x569857,'line':_0x204df4+0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x20580f(0x1c7)],'rule':'hardcoded-secret','message':'Potential\x20hardcoded\x20'+_0xdecd7b+_0x20580f(0x194),'category':'security','validator':_0x20580f(0x1be),'remediation':_0x20580f(0x1da)});break;}}}}),_0x5144f3;}catch(_0xfdc90d){return this[_0x1bd5d0(0x15d)]?.['error'](_0x1bd5d0(0x1d8),{'error':_0xfdc90d[_0x1bd5d0(0x1b3)]}),[];}}[a0_0x1e7674(0x171)](_0x5e9aee){const _0x2531df=a0_0x1e7674,_0x3d48d0=a0_0x3f96d7['basename'](_0x5e9aee)['toLowerCase'](),_0x1b7b40=a0_0x3f96d7['dirname'](_0x5e9aee);if(_0x3d48d0===_0x2531df(0x1a3))return'dockerfile';if(_0x3d48d0==='docker-compose.yml'||_0x3d48d0==='docker-compose.yaml')return'docker-compose';if(_0x3d48d0==='package.json')return _0x2531df(0x1d1);if(_0x3d48d0==='tsconfig.json')return'tsconfig.json';if(_0x3d48d0===_0x2531df(0x18c)||_0x3d48d0[_0x2531df(0x17c)](_0x2531df(0x18c)))return _0x2531df(0x16d);if(_0x1b7b40[_0x2531df(0x183)](_0x2531df(0x198)))return'github-actions';if(_0x1b7b40[_0x2531df(0x183)]('kubernetes')||_0x1b7b40['includes']('k8s'))return _0x2531df(0x196);const _0x4043d4=a0_0x3f96d7['extname'](_0x5e9aee)['toLowerCase']();if(_0x4043d4===_0x2531df(0x1b2)||_0x4043d4===_0x2531df(0x1b0))return'terraform';if(_0x4043d4===_0x2531df(0x19a)||_0x4043d4==='.yaml')return _0x2531df(0x162);if(_0x4043d4===_0x2531df(0x18e))return'json';return _0x2531df(0x1a9);}['normalizeResults'](_0x4b95d1){const _0x53b18d=a0_0x1e7674;return _0x4b95d1[_0x53b18d(0x1c8)](_0x1ea8d3=>({'file':_0x1ea8d3['file'],'line':_0x1ea8d3[_0x53b18d(0x1a8)]||0x1,'column':_0x1ea8d3['column']||0x1,'severity':_0x1ea8d3['severity']||STATIC_ANALYSIS[_0x53b18d(0x1b7)][_0x53b18d(0x1d7)],'rule':_0x1ea8d3['rule']||_0x53b18d(0x1a9),'message':_0x1ea8d3['message']||_0x53b18d(0x1c6),'category':_0x1ea8d3['category']||'validation','validator':_0x1ea8d3['validator'],'cwe':_0x1ea8d3[_0x53b18d(0x199)]||null,'remediation':_0x1ea8d3[_0x53b18d(0x1cc)]||null,'references':_0x1ea8d3[_0x53b18d(0x177)]||[]}));}[a0_0x1e7674(0x1d6)](_0x4f884f){const _0x338f91=a0_0x1e7674,_0x57f33a={'error':STATIC_ANALYSIS[_0x338f91(0x1b7)][_0x338f91(0x1c0)],'warning':STATIC_ANALYSIS[_0x338f91(0x1b7)][_0x338f91(0x1d7)],'info':STATIC_ANALYSIS['SEVERITY'][_0x338f91(0x1c1)],'style':STATIC_ANALYSIS[_0x338f91(0x1b7)]['INFO']};return _0x57f33a[_0x4f884f?.['toLowerCase']()]||STATIC_ANALYSIS['SEVERITY']['WARNING'];}['mapYamllintSeverity'](_0x175127){const _0x5cf1aa=a0_0x1e7674,_0x55f7ac={'error':STATIC_ANALYSIS[_0x5cf1aa(0x1b7)][_0x5cf1aa(0x1c0)],'warning':STATIC_ANALYSIS['SEVERITY'][_0x5cf1aa(0x1d7)]};return _0x55f7ac[_0x175127?.['toLowerCase']()]||STATIC_ANALYSIS['SEVERITY']['WARNING'];}['mapCheckovSeverity'](_0x441426){const _0x21f3b6=a0_0x1e7674;return STATIC_ANALYSIS[_0x21f3b6(0x1b7)]['ERROR'];}async[a0_0x1e7674(0x15e)](){const _0x30af31=a0_0x1e7674,_0x321d39=await this['detectAvailableValidators']();return{'validators':_0x321d39,'recommendations':this[_0x30af31(0x185)](_0x321d39)};}['getInstallRecommendations'](_0x5da78f){const _0xef8caf=a0_0x1e7674,_0x4a32bb=[];return!_0x5da78f['checkov']&&_0x4a32bb[_0xef8caf(0x1ce)]({'validator':_0xef8caf(0x1d9),'reason':'Infrastructure\x20as\x20Code\x20security\x20scanning\x20(Docker,\x20Kubernetes,\x20Terraform)','install':'pip\x20install\x20checkov','priority':'high'}),!_0x5da78f['hadolint']&&_0x4a32bb[_0xef8caf(0x1ce)]({'validator':_0xef8caf(0x175),'reason':_0xef8caf(0x1c3),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x5da78f['yamllint']&&_0x4a32bb['push']({'validator':'yamllint','reason':_0xef8caf(0x1b1),'install':_0xef8caf(0x18f),'priority':'medium'}),!_0x5da78f['jsonSchema']&&_0x4a32bb[_0xef8caf(0x1ce)]({'validator':_0xef8caf(0x184),'reason':_0xef8caf(0x164),'install':_0xef8caf(0x195),'priority':_0xef8caf(0x1cb)}),_0x4a32bb;}}function a0_0x3f8e(){const _0x186fbe=['z3vPzgvSAw5L','CgfYC2u','zw5KC1DPDgG','CgfYC2vdAgvJA292uMvZDwX0CW','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','ndG5otaWy1bqven5','DhnJB25MAwCTDMfSAwrHDg9Y','zMLSzv9SAw5Lx3jHBMDL','y29TCgLSzq','Aw5JBhvKzxm','ywP2icHku09oifnJAgvTysK','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','nduWndeWBK5Jyu5Q','z2L0AhvIlwfJDgLVBNm','BwfWq2HLy2TVDLnLDMvYAxr5','mti3nJiZndrpyKLXu08','y29TBw9UANm','ywP2','lMvUDG','B2jQzwn0','lMPZB24','CgLWigLUC3rHBgWGEwfTBgXPBNq','CgfYC2vzyw1SBgLUDfjLC3vSDhm','DgvZDa','y29TCgLSzxjpChrPB25Z','ywP2lwzVCM1HDhm','igrLDgvJDgvKigLUic5LBNyGzMLSzq','BNbTigLUC3rHBgWGywP2igfQDI1MB3jTyxrZ','A3vIzxjUzxrLCW','AgfKB2XPBNqGls1MB3jTyxqGANnVBIaI','lMDPDgH1yI93B3jRzMXVD3m','y3DL','lNLTBa','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','iIaTlwzYyw1LD29YAYa','ChjPDMf0zsbRzxK','CMvHzezPBgu','DgvYCMfMB3jT','qvDtignYzwrLBNrPywXZ','C3rYAw5N','rgLZywjSAw5Nig5Vsw1WBgLJAxrbBNKGCMvKDwnLCYb0ExbLihnHzMv0Eq','zg9JA2vYzMLSzq','C2nHBM5LCKnHy2HL','ANnVBI1Zy2HLBwe','EwfTBgXPBNqGls12zxjZAw9U','rMfPBgvKihrVihbHCNnLigHHzg9SAw50ig91Dhb1Da','BgLUzq','Dw5RBM93BG','AgfKB2XPBNqGBM90igf2ywLSywjSzq','DMfSAwrHDgvxAxrOq2HLy2TVDG','EwfTBgXPBNqGBM90igf2ywLSywjSzq','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','zgvIDwC','Ew91CI1RzxKTAgvYzq','lNrMDMfYCW','wufntcbMAwXLihzHBgLKyxrPB24','lNrM','BwvZC2fNzq','DhjPBq','Aw5ZDgfUy2vqyxrO','C3LUDgf4','u0vwrvjjvfK','xIG/oKbBys16mc05lx5Dw2eTEJaTos0Ux35DkI8Pp1THlxOWltKTFL1Bys16mc05ls5FFL0Qja','DMvYC2LVBG','yMvZDc1WCMfJDgLJzq','mJu4nZKYner3z3D4Aq','DMfSAwrHDgu','mtq4otq2oxLbyxj2Ca','zw52lxzHBgLKyxrVCG','otm3nte1mgn3vfLNwq','rvjst1i','su5gtW','CgfYC2viywrVBgLUDfjLC3vSDhm','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','y2HLy2TVDIb2ywXPzgf0Aw9UigzHAwXLza','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','q1jjveLdquW','BwfW','DMfSAwrHDgLVBG','vMfSAwrHDgLUzYbJB25MAwCGzMLSzq','BwvKAxvT','CMvTzwrPyxrPB24','DMfSAwrHDgveB2nRzxjMAwXL','ChvZAa','BwLZC2LUz1bYB3bLCNr5','C3bSAxq','CgfJA2fNzs5QC29U','AgfKB2XPBNqGzgv0zwn0zwq','EwfTBgXPBNq','y29Kzq','C3rKB3v0','BwfWsgfKB2XPBNrtzxzLCML0Eq','v0fstKLorW','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','y2HLy2TVDG','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','ANnVBLnJAgvTyq','BM8TAw1WBgLJAxqTyw55','sw52ywXPzcbku09ooIa','y2HLy2TVDIaTzIaI','DhnJB25MAwCUANnVBG','Bg9Nz2vY','z2v0vMfSAwrHDg9Yu3rHDhvZ','Dg9mB3DLCKnHC2u','CgfZC3DVCMq','DxrMltG','EwfTBa','mZy5zwLMreLL','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','yxzHAwXHyMXLu2nHBM5LCNm','mtu1mZG3n2H3uNf4sW','D2fYBG','DMfSAwrHDgvuC0nVBMzPzW','qvbjigTLEq','BMfTzq','zxjYB3i','n2P1q2ngzW','zw52','AxnbCNjHEq','y2HLy2TFAwq','EwfTBgXPBNqGzgv0zwn0zwq','zgv0zwn0rMLSzvr5Cgu','DMfSAwrHDgvzqu1m','C2vJDxjPDhK','CMvZDwX0CW','AgfKB2XPBNq','Dg9Rzw4','CMvMzxjLBMnLCW','mLHgB1Hftq','zMLSDgvY'];a0_0x3f8e=function(){return _0x186fbe;};return a0_0x3f8e();}export default ConfigValidator;
|
|
1
|
+
const a0_0x2f7acc=a0_0x3537;function a0_0x3537(_0x203a3e,_0x9b3e6b){_0x203a3e=_0x203a3e-0x146;const _0x2bcdea=a0_0x2bcd();let _0x353793=_0x2bcdea[_0x203a3e];if(a0_0x3537['oBOlZT']===undefined){var _0x8a027e=function(_0x400481){const _0x3afaaa='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x183772='',_0x4ba8d4='';for(let _0x48befb=0x0,_0x512c5c,_0x2cedc1,_0x430322=0x0;_0x2cedc1=_0x400481['charAt'](_0x430322++);~_0x2cedc1&&(_0x512c5c=_0x48befb%0x4?_0x512c5c*0x40+_0x2cedc1:_0x2cedc1,_0x48befb++%0x4)?_0x183772+=String['fromCharCode'](0xff&_0x512c5c>>(-0x2*_0x48befb&0x6)):0x0){_0x2cedc1=_0x3afaaa['indexOf'](_0x2cedc1);}for(let _0x32c212=0x0,_0x5bac29=_0x183772['length'];_0x32c212<_0x5bac29;_0x32c212++){_0x4ba8d4+='%'+('00'+_0x183772['charCodeAt'](_0x32c212)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4ba8d4);};a0_0x3537['InXSGe']=_0x8a027e,a0_0x3537['RabcZE']={},a0_0x3537['oBOlZT']=!![];}const _0x5495be=_0x2bcdea[0x0],_0x5bbe14=_0x203a3e+_0x5495be,_0x5c1a9d=a0_0x3537['RabcZE'][_0x5bbe14];return!_0x5c1a9d?(_0x353793=a0_0x3537['InXSGe'](_0x353793),a0_0x3537['RabcZE'][_0x5bbe14]=_0x353793):_0x353793=_0x5c1a9d,_0x353793;}(function(_0x5ab226,_0x264364){const _0xd816e9=a0_0x3537,_0x188347=_0x5ab226();while(!![]){try{const _0x4a3554=parseInt(_0xd816e9(0x1b7))/0x1+parseInt(_0xd816e9(0x188))/0x2*(-parseInt(_0xd816e9(0x150))/0x3)+-parseInt(_0xd816e9(0x1b6))/0x4*(-parseInt(_0xd816e9(0x1ba))/0x5)+parseInt(_0xd816e9(0x1c2))/0x6*(parseInt(_0xd816e9(0x151))/0x7)+parseInt(_0xd816e9(0x17e))/0x8*(-parseInt(_0xd816e9(0x198))/0x9)+-parseInt(_0xd816e9(0x1bb))/0xa*(parseInt(_0xd816e9(0x19d))/0xb)+-parseInt(_0xd816e9(0x186))/0xc*(-parseInt(_0xd816e9(0x169))/0xd);if(_0x4a3554===_0x264364)break;else _0x188347['push'](_0x188347['shift']());}catch(_0x4ef85e){_0x188347['push'](_0x188347['shift']());}}}(a0_0x2bcd,0x5113a));import{exec}from'child_process';import{promisify}from'util';import a0_0x183772 from'path';import a0_0x4ba8d4 from'fs/promises';function a0_0x2bcd(){const _0x30f3d4=['CNvSzq','CgfYC2vzyw1SBgLUDfjLC3vSDhm','DgvYCMfMB3jT','y2HLy2TVDG','C3rHCNrZv2L0Aa','DMfSAwrHDgvzqu1m','lMDPDgH1yI93B3jRzMXVD3m','BwfWsgfKB2XPBNrtzxzLCML0Eq','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','AgfKB2XPBNq','C3rYAwn0lw1Vzgu','zw5KC1DPDgG','CgfJA2fNzs5QC29U','DMfSAwrHDgvxAxrOq2HLy2TVDG','zxH0BMfTzq','ywP2icHku09oifnJAgvTysK','Bwf0y2G','mJuXmJa0uhL6vhPS','ntG2nJiWq0Tis05z','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','sw52ywXPzcbku09ooIa','mJvwuMP0Cfq','ntG0nZu0mefnC3DOAW','rMfPBgvKihrVihbHCNnLigHHzg9SAw50ig91Dhb1Da','igrLDgvJDgvKigLUic5LBNyGzMLSzq','z2L0AhvIlwfJDgLVBNm','BwfWwwfTBgXPBNrtzxzLCML0Eq','CMvHzezPBgu','ANnVBG','nJCYndHOveLmDhG','BM9YBwfSAxPLuMvZDwX0CW','AgfKB2XPBNqGls12zxjZAw9U','y29SDw1U','AgfKB2XPBNqGDMfSAwrHDgLVBIbMywLSzwq','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','DMfSAwrHDgvqywnRywDLsNnVBG','y2HLy2TFBMfTzq','DMfSAwrHDgvfBNzgAwXL','DhjPBq','yxzHAwXHyMXLu2nHBM5LCNm','m1vpthHTyW','mta1s0ndvNLw','ywP2','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','ANnVBLnJAgvTyq','zM9YrwfJAa','ChvZAa','EwfTBgXPBNq','DhnJB25MAwCTDMfSAwrHDg9Y','qvbjigTLEq','AxnbCNjHEq','zMLSDgvY','CgfYyw1Z','zw52','Bg9Nz2vY','BwvKAxvT','rvjst1i','BwLZC2LUz1bYB3bLCNr5','C2vJCMv0','C2nHBM5LCKnHy2HL','y29TCgLSzq','zg9JA2vYx2nVBxbVC2u','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','C3LUDgf4','DhnJB25MAwCUANnVBIb2ywXPzgf0Aw9UigzHAwXLza','nJa5nZb3rxzdzgS','ANnVBI1WyxjZzq','lNLTBa','C3rKB3v0','DMfSAwrHDgvuC0nVBMzPzW','zMLSzv9SAw5Lx3jHBMDL','z3vPzgvSAw5L','DMfSAwrHDgLVBG','DMfSAwrHDgveB2nRzxjMAwXL','C3rYAw5N','zgvIDwC','z2v0vMfSAwrHDg9Yu3rHDhvZ','lMvUDG','CgLWigLUC3rHBgWGEwfTBgXPBNq','BwvZC2fNzq','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','AgfKB2XPBNqGBM90igf2ywLSywjSzq','Dg9mB3DLCKnHC2u','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','Bw9KDwXL','D2fYBG','mte0otC1mMLcEMryrG','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','B2jQzwn0','y29TCgLSzxjpChrPB25Z','BwfW','u0vwrvjjvfK','BNbTigLUC3rHBgWGywP2igfQDI1MB3jTyxrZ','zxjYB3jZ','mtiXmLPzzwjfwG','Aw5ZDgfUy2vqyxrO','nJC2mZa2EwjRy0rM','C3bSAxq','CgfYC2u','wufntcbMAwXLihzHBgLKyxrPB24','A3vIzxjUzxrLCW','y2f0zwDVCNK','BM8TAw1WBgLJAxqTyw55','EwfTBgXPBNqGls12zxjZAw9U','DMvYC2LVBG','BMfTzq','BwfWq2HLy2TVDLnLDMvYAxr5','CgfJA2fNzs5QC29UihzHBgLKyxrPB24GzMfPBgvK','zxjYB3i','lMPZB24','CMvZDwX0CW','v0fstKLorW','mtH5rfHMqvu','DhnJB25MAwCUANnVBG','zg9JA2vYlwnVBxbVC2u','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','CMvTzwrPyxrPB24','mtfYwvPIueG','Aw5JBhvKzxm','zgv0zwn0rMLSzvr5Cgu','zg9JA2vYzMLSzq','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','CgfYC2viywrVBgLUDfjLC3vSDhm','Dw5RBM93BG','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0'];a0_0x2bcd=function(){return _0x30f3d4;};return a0_0x2bcd();}import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x48befb=null){const _0xabc34e=a0_0x3537;this['logger']=_0x48befb,this['availableScanners']=null,this[_0xabc34e(0x163)]=new Map();}async['detectAvailableValidators'](){const _0x450355=a0_0x3537;if(this[_0x450355(0x14f)]!==null)return this['availableScanners'];const _0x512c5c={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync('checkov\x20--version',{'timeout':0x1388}),_0x512c5c[_0x450355(0x1a8)]=!![],this['logger']?.['debug']('checkov\x20detected');}catch(_0x2cedc1){this['logger']?.['debug']('checkov\x20not\x20available',{'error':_0x2cedc1['message']});}try{await execAsync(_0x450355(0x147),{'timeout':0x1388}),_0x512c5c['hadolint']=!![],this[_0x450355(0x15e)]?.[_0x450355(0x173)]('hadolint\x20detected');}catch(_0x430322){this['logger']?.['debug'](_0x450355(0x179),{'error':_0x430322['message']});}try{await execAsync(_0x450355(0x18f),{'timeout':0x1388}),_0x512c5c['yamllint']=!![],this['logger']?.[_0x450355(0x173)]('yamllint\x20detected');}catch(_0x32c212){this[_0x450355(0x15e)]?.[_0x450355(0x173)]('yamllint\x20not\x20available',{'error':_0x32c212[_0x450355(0x177)]});}try{await import('ajv'),_0x512c5c[_0x450355(0x154)]=!![],this['logger']?.['debug'](_0x450355(0x1ad));}catch(_0x5bac29){this['logger']?.[_0x450355(0x173)]('ajv\x20not\x20available',{'error':_0x5bac29[_0x450355(0x177)]});}return this['availableScanners']=_0x512c5c,_0x512c5c;}async['validate'](_0xecb0f1,_0x265035={}){const _0x1d95f4=a0_0x3537,_0xfa994c=[],_0x10f2b2=await this[_0x1d95f4(0x166)](),_0x51d3dc=this[_0x1d95f4(0x19f)](_0xecb0f1);this[_0x1d95f4(0x15e)]?.['debug']('Validating\x20config\x20file',{'filePath':_0xecb0f1,'fileType':_0x51d3dc});switch(_0x51d3dc){case _0x1d95f4(0x1a0):if(_0x10f2b2[_0x1d95f4(0x1ae)]){const _0xada549=await this['validateDockerfile'](_0xecb0f1,_0x265035);_0xfa994c[_0x1d95f4(0x156)](..._0xada549);}if(_0x10f2b2[_0x1d95f4(0x1a8)]){const _0x392a44=await this['validateWithCheckov'](_0xecb0f1,'dockerfile',_0x265035);_0xfa994c[_0x1d95f4(0x156)](..._0x392a44);}break;case _0x1d95f4(0x19a):if(_0x10f2b2['yamllint']){const _0x41ad07=await this[_0x1d95f4(0x1aa)](_0xecb0f1,_0x265035);_0xfa994c['push'](..._0x41ad07);}if(_0x10f2b2['checkov']){const _0x3f9275=await this[_0x1d95f4(0x1b2)](_0xecb0f1,_0x1d95f4(0x165),_0x265035);_0xfa994c[_0x1d95f4(0x156)](..._0x3f9275);}break;case _0x1d95f4(0x18c):if(_0x10f2b2[_0x1d95f4(0x157)]){const _0x32de61=await this['validateYAML'](_0xecb0f1,_0x265035);_0xfa994c['push'](..._0x32de61);}if(_0x10f2b2[_0x1d95f4(0x1a8)]){const _0x35504b=await this[_0x1d95f4(0x1b2)](_0xecb0f1,_0x1d95f4(0x18c),_0x265035);_0xfa994c[_0x1d95f4(0x156)](..._0x35504b);}break;case _0x1d95f4(0x1a7):if(_0x10f2b2[_0x1d95f4(0x1a8)]){const _0x41d984=await this['validateWithCheckov'](_0xecb0f1,'terraform',_0x265035);_0xfa994c[_0x1d95f4(0x156)](..._0x41d984);}break;case'package.json':if(_0x10f2b2['jsonSchema']){const _0x85e53=await this[_0x1d95f4(0x14b)](_0xecb0f1,_0x265035);_0xfa994c[_0x1d95f4(0x156)](..._0x85e53);}break;case'tsconfig.json':if(_0x10f2b2[_0x1d95f4(0x154)]){const _0x22e828=await this['validateTsConfig'](_0xecb0f1,_0x265035);_0xfa994c[_0x1d95f4(0x156)](..._0x22e828);}break;case _0x1d95f4(0x1be):if(_0x10f2b2['yamllint']){const _0x257a44=await this[_0x1d95f4(0x1aa)](_0xecb0f1,_0x265035);_0xfa994c[_0x1d95f4(0x156)](..._0x257a44);}break;case _0x1d95f4(0x15d):const _0x5b3312=await this[_0x1d95f4(0x14d)](_0xecb0f1,_0x265035);_0xfa994c['push'](..._0x5b3312);break;case'yaml':if(_0x10f2b2['yamllint']){const _0xe0479f=await this['validateYAML'](_0xecb0f1,_0x265035);_0xfa994c[_0x1d95f4(0x156)](..._0xe0479f);}break;default:this[_0x1d95f4(0x15e)]?.[_0x1d95f4(0x17d)](_0x1d95f4(0x17f),{'filePath':_0xecb0f1,'fileType':_0x51d3dc});return[];}return this['normalizeResults'](_0xfa994c);}async[a0_0x2f7acc(0x171)](_0x562220,_0x4bb4b2={}){const _0x5efab9=a0_0x2f7acc;try{const _0x169a59=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x562220+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x2b3c28=JSON[_0x5efab9(0x18a)](_0x169a59[_0x5efab9(0x16c)]);return this[_0x5efab9(0x1a2)](_0x2b3c28,_0x562220);}catch(_0x250ba2){if(_0x250ba2[_0x5efab9(0x16c)])try{const _0x12a287=JSON[_0x5efab9(0x18a)](_0x250ba2[_0x5efab9(0x16c)]);return this[_0x5efab9(0x1a2)](_0x12a287,_0x562220);}catch(_0x290be7){this['logger']?.['error'](_0x5efab9(0x1bc),{'error':_0x290be7[_0x5efab9(0x177)]});}return this['logger']?.['error'](_0x5efab9(0x149),{'error':_0x250ba2['message']}),[];}}['parseHadolintResults'](_0x5cfdfd,_0x51c877){const _0x134de7=a0_0x2f7acc,_0x2600db=[];if(Array[_0x134de7(0x15a)](_0x5cfdfd))for(const _0x1ccd90 of _0x5cfdfd){_0x2600db['push']({'file':_0x51c877,'line':_0x1ccd90['line']||0x1,'column':_0x1ccd90[_0x134de7(0x148)]||0x1,'severity':this['mapHadolintSeverity'](_0x1ccd90['level']),'rule':_0x1ccd90['code'],'message':_0x1ccd90['message'],'category':_0x134de7(0x1a0),'validator':_0x134de7(0x1ae)});}return _0x2600db;}async[a0_0x2f7acc(0x1aa)](_0x1d09a5,_0x45955d={}){const _0x35c628=a0_0x2f7acc;try{const _0x342226=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x1d09a5+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this['parseYamllintResults'](_0x342226['stdout'],_0x1d09a5);}catch(_0x4c547a){if(_0x4c547a['stdout'])return this[_0x35c628(0x1a6)](_0x4c547a['stdout'],_0x1d09a5);return this['logger']?.[_0x35c628(0x194)]('yamllint\x20validation\x20failed',{'error':_0x4c547a['message']}),[];}}['parseYamllintResults'](_0x4b1133,_0x4c9a60){const _0x232ab5=a0_0x2f7acc,_0x3472c7=[],_0x18015c=_0x4b1133['split']('\x0a')[_0x232ab5(0x15b)](_0x4ef46b=>_0x4ef46b['trim']());for(const _0xd67d5b of _0x18015c){const _0x6d1bbc=_0xd67d5b[_0x232ab5(0x1b5)](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x6d1bbc){const [,_0x24d937,_0x13b00c,_0x3e695c,_0x2f1297,_0x25abb3,_0x3b1fc4]=_0x6d1bbc;_0x3472c7[_0x232ab5(0x156)]({'file':_0x4c9a60,'line':parseInt(_0x13b00c,0xa),'column':parseInt(_0x3e695c,0xa),'severity':this['mapYamllintSeverity'](_0x2f1297),'rule':_0x3b1fc4,'message':_0x25abb3,'category':'yaml','validator':_0x232ab5(0x157)});}}return _0x3472c7;}async[a0_0x2f7acc(0x1b2)](_0x5c28c9,_0x87eca3,_0x1d595a={}){const _0x1f6092=a0_0x2f7acc;try{const _0x532b97=await execAsync('checkov\x20-f\x20\x22'+_0x5c28c9+'\x22\x20--framework\x20'+_0x87eca3+_0x1f6092(0x1a4),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x18acd4=JSON[_0x1f6092(0x18a)](_0x532b97[_0x1f6092(0x16c)]);return this['parseCheckovResults'](_0x18acd4,_0x5c28c9);}catch(_0x4cf8ab){if(_0x4cf8ab['stdout'])try{const _0x3efde9=JSON['parse'](_0x4cf8ab['stdout']);return this['parseCheckovResults'](_0x3efde9,_0x5c28c9);}catch(_0x561f6f){this[_0x1f6092(0x15e)]?.['error'](_0x1f6092(0x17b),{'error':_0x561f6f['message']});}return this[_0x1f6092(0x15e)]?.['error']('checkov\x20validation\x20failed',{'error':_0x4cf8ab[_0x1f6092(0x177)]}),[];}}['parseCheckovResults'](_0x1ccc11,_0x2cf896){const _0x4cb538=a0_0x2f7acc,_0x419997=[];if(_0x1ccc11['results']&&_0x1ccc11['results']['failed_checks'])for(const _0x270045 of _0x1ccc11[_0x4cb538(0x196)]['failed_checks']){_0x419997[_0x4cb538(0x156)]({'file':_0x2cf896,'line':_0x270045[_0x4cb538(0x16e)]?_0x270045[_0x4cb538(0x16e)][0x0]:0x1,'column':0x1,'severity':this[_0x4cb538(0x192)](_0x270045['check_class']),'rule':_0x270045['check_id'],'message':_0x270045[_0x4cb538(0x14c)]||_0x270045['check_id'],'category':'security','validator':'checkov','remediation':_0x270045[_0x4cb538(0x16f)],'cwe':_0x270045['cwe'],'references':_0x270045[_0x4cb538(0x16f)]?[_0x270045[_0x4cb538(0x16f)]]:[]});}return _0x419997;}async['validatePackageJson'](_0x1885a8,_0x3e5de1={}){const _0x36e6ed=a0_0x2f7acc;try{const _0x3d14d1=(await import(_0x36e6ed(0x152)))['default'],_0x3a8ef5=(await import('ajv-formats'))['default'],_0x1e736b=await a0_0x4ba8d4['readFile'](_0x1885a8,'utf-8'),_0x1b9cb8=JSON[_0x36e6ed(0x18a)](_0x1e736b),_0x339366=new _0x3d14d1({'allErrors':!![],'strict':![]});_0x3a8ef5(_0x339366);const _0x424836={'type':_0x36e6ed(0x180),'required':[_0x36e6ed(0x191),_0x36e6ed(0x190)],'properties':{'name':{'type':_0x36e6ed(0x172),'pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':_0x36e6ed(0x172)},'description':{'type':'string'},'main':{'type':'string'},'type':{'type':'string','enum':[_0x36e6ed(0x17c),'commonjs']},'scripts':{'type':'object'},'dependencies':{'type':_0x36e6ed(0x180)},'devDependencies':{'type':'object'}},'additionalProperties':!![]},_0x6fe07c=_0x339366[_0x36e6ed(0x164)](_0x424836),_0x316a5c=_0x6fe07c(_0x1b9cb8);if(!_0x316a5c&&_0x6fe07c[_0x36e6ed(0x185)])return _0x6fe07c['errors'][_0x36e6ed(0x182)](_0x780645=>({'file':_0x1885a8,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x36e6ed(0x183)][_0x36e6ed(0x160)],'rule':'json-schema','message':_0x780645['instancePath']?_0x780645[_0x36e6ed(0x187)]+'\x20'+_0x780645['message']:_0x36e6ed(0x14a)+_0x780645[_0x36e6ed(0x15c)][_0x36e6ed(0x161)]+'\x27','category':'validation','validator':'json-schema'}));return[];}catch(_0x3ad624){return this[_0x36e6ed(0x15e)]?.['error'](_0x36e6ed(0x193),{'error':_0x3ad624[_0x36e6ed(0x177)]}),[{'file':_0x1885a8,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x36e6ed(0x183)][_0x36e6ed(0x160)],'rule':_0x36e6ed(0x16a),'message':_0x36e6ed(0x1b9)+_0x3ad624['message'],'category':_0x36e6ed(0x167),'validator':_0x36e6ed(0x16a)}];}}async[a0_0x2f7acc(0x16d)](_0x5e2d1a,_0x32a986={}){const _0x2d48ce=a0_0x2f7acc;try{const _0x19a5a0=await a0_0x4ba8d4[_0x2d48ce(0x1c0)](_0x5e2d1a,'utf-8'),_0x2fc7e7=JSON['parse'](_0x19a5a0),_0xc2e158=[];if(_0x2fc7e7['compilerOptions']){const _0x1c0e59=_0x2fc7e7[_0x2d48ce(0x181)];!_0x1c0e59['strict']&&_0xc2e158[_0x2d48ce(0x156)]({'file':_0x5e2d1a,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x2d48ce(0x1af),'message':'Consider\x20enabling\x20\x22strict\x22\x20mode\x20for\x20better\x20type\x20safety','category':'best-practice','validator':_0x2d48ce(0x158)}),_0x1c0e59['noImplicitAny']===![]&&_0xc2e158[_0x2d48ce(0x156)]({'file':_0x5e2d1a,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x2d48ce(0x18e),'message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':'best-practice','validator':_0x2d48ce(0x158)});}return _0xc2e158;}catch(_0x43fca5){return this['logger']?.['error'](_0x2d48ce(0x168),{'error':_0x43fca5['message']}),[{'file':_0x5e2d1a,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2d48ce(0x183)]['ERROR'],'rule':_0x2d48ce(0x16a),'message':_0x2d48ce(0x1b9)+_0x43fca5['message'],'category':_0x2d48ce(0x167),'validator':'json-parse'}];}}async[a0_0x2f7acc(0x14d)](_0x2287a7,_0x1aa7a3={}){const _0xeaac59=a0_0x2f7acc;try{const _0x4e81e1=await a0_0x4ba8d4[_0xeaac59(0x1c0)](_0x2287a7,'utf-8'),_0x3ec374=[],_0x480479=_0x4e81e1[_0xeaac59(0x189)]('\x0a'),_0x14931d=[{'pattern':/password|passwd|pwd/i,'name':'password'},{'pattern':/api[_-]?key/i,'name':_0xeaac59(0x159)},{'pattern':/secret/i,'name':_0xeaac59(0x162)},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':'private\x20key'},{'pattern':/aws[_-]?access/i,'name':'AWS\x20credentials'}];return _0x480479[_0xeaac59(0x155)]((_0x377ce8,_0xb63979)=>{const _0x4b3431=_0xeaac59,_0x9a7931=_0x377ce8[_0x4b3431(0x14e)]();if(!_0x9a7931||_0x9a7931['startsWith']('#'))return;if(_0x9a7931[_0x4b3431(0x19e)]('=')){const [_0x554967,_0x19a42a]=_0x9a7931[_0x4b3431(0x189)]('='),_0x1aa70d=_0x554967['toLowerCase'](),_0x1b6e69=_0x19a42a?.['trim']()||'',_0x53ec31=_0x1b6e69&&_0x1b6e69!==''&&!_0x1b6e69[_0x4b3431(0x1a9)]('$')&&_0x1b6e69!=='your-key-here'&&_0x1b6e69!=='changeme'&&_0x1b6e69['length']>0x5;if(_0x53ec31)for(const {pattern:_0x3aa69a,name:_0x197cef}of _0x14931d){if(_0x3aa69a['test'](_0x1aa70d)){_0x3ec374['push']({'file':_0x2287a7,'line':_0xb63979+0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['CRITICAL'],'rule':'hardcoded-secret','message':'Potential\x20hardcoded\x20'+_0x197cef+_0x4b3431(0x1bd),'category':'security','validator':'env-validator','remediation':_0x4b3431(0x1a1)});break;}}}}),_0x3ec374;}catch(_0x5fc1ea){return this[_0xeaac59(0x15e)]?.[_0xeaac59(0x194)]('.env\x20validation\x20failed',{'error':_0x5fc1ea[_0xeaac59(0x177)]}),[];}}[a0_0x2f7acc(0x19f)](_0x4cc5f9){const _0x384d17=a0_0x2f7acc,_0xc8166f=a0_0x183772['basename'](_0x4cc5f9)[_0x384d17(0x17a)](),_0x4b85e0=a0_0x183772['dirname'](_0x4cc5f9);if(_0xc8166f===_0x384d17(0x1a0))return'dockerfile';if(_0xc8166f==='docker-compose.yml'||_0xc8166f==='docker-compose.yaml')return'docker-compose';if(_0xc8166f===_0x384d17(0x1b1))return _0x384d17(0x1b1);if(_0xc8166f===_0x384d17(0x199))return _0x384d17(0x199);if(_0xc8166f==='.env'||_0xc8166f[_0x384d17(0x1b0)](_0x384d17(0x175)))return'env';if(_0x4b85e0[_0x384d17(0x19e)](_0x384d17(0x1ab)))return'github-actions';if(_0x4b85e0['includes']('kubernetes')||_0x4b85e0[_0x384d17(0x19e)]('k8s'))return'kubernetes';const _0x58850c=a0_0x183772[_0x384d17(0x1b3)](_0x4cc5f9)['toLowerCase']();if(_0x58850c==='.tf'||_0x58850c==='.tfvars')return'terraform';if(_0x58850c===_0x384d17(0x16b)||_0x58850c==='.yaml')return'yaml';if(_0x58850c===_0x384d17(0x195))return _0x384d17(0x1c1);return _0x384d17(0x1a3);}[a0_0x2f7acc(0x146)](_0x590511){const _0x26e65c=a0_0x2f7acc;return _0x590511[_0x26e65c(0x182)](_0x27de0b=>({'file':_0x27de0b['file'],'line':_0x27de0b['line']||0x1,'column':_0x27de0b['column']||0x1,'severity':_0x27de0b['severity']||STATIC_ANALYSIS['SEVERITY'][_0x26e65c(0x197)],'rule':_0x27de0b[_0x26e65c(0x1a5)]||'unknown','message':_0x27de0b['message']||_0x26e65c(0x19b),'category':_0x27de0b[_0x26e65c(0x18d)]||_0x26e65c(0x170),'validator':_0x27de0b['validator'],'cwe':_0x27de0b['cwe']||null,'remediation':_0x27de0b[_0x26e65c(0x19c)]||null,'references':_0x27de0b['references']||[]}));}[a0_0x2f7acc(0x1ac)](_0x4424d7){const _0x28f399=a0_0x2f7acc,_0xca31bb={'error':STATIC_ANALYSIS[_0x28f399(0x183)]['ERROR'],'warning':STATIC_ANALYSIS[_0x28f399(0x183)][_0x28f399(0x197)],'info':STATIC_ANALYSIS['SEVERITY']['INFO'],'style':STATIC_ANALYSIS[_0x28f399(0x183)]['INFO']};return _0xca31bb[_0x4424d7?.['toLowerCase']()]||STATIC_ANALYSIS['SEVERITY']['WARNING'];}[a0_0x2f7acc(0x1bf)](_0x402e76){const _0xbc781f=a0_0x2f7acc,_0x438a98={'error':STATIC_ANALYSIS[_0xbc781f(0x183)]['ERROR'],'warning':STATIC_ANALYSIS['SEVERITY']['WARNING']};return _0x438a98[_0x402e76?.[_0xbc781f(0x17a)]()]||STATIC_ANALYSIS['SEVERITY'][_0xbc781f(0x197)];}[a0_0x2f7acc(0x192)](_0x16c627){const _0x3b98c3=a0_0x2f7acc;return STATIC_ANALYSIS[_0x3b98c3(0x183)]['ERROR'];}async[a0_0x2f7acc(0x174)](){const _0x28dba6=a0_0x2f7acc,_0x47c8be=await this[_0x28dba6(0x166)]();return{'validators':_0x47c8be,'recommendations':this['getInstallRecommendations'](_0x47c8be)};}[a0_0x2f7acc(0x1b8)](_0x54403b){const _0x291775=a0_0x2f7acc,_0x5a1f8c=[];return!_0x54403b[_0x291775(0x1a8)]&&_0x5a1f8c[_0x291775(0x156)]({'validator':'checkov','reason':'Infrastructure\x20as\x20Code\x20security\x20scanning\x20(Docker,\x20Kubernetes,\x20Terraform)','install':'pip\x20install\x20checkov','priority':'high'}),!_0x54403b['hadolint']&&_0x5a1f8c['push']({'validator':'hadolint','reason':_0x291775(0x178),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x54403b[_0x291775(0x157)]&&_0x5a1f8c[_0x291775(0x156)]({'validator':_0x291775(0x157),'reason':_0x291775(0x18b),'install':_0x291775(0x176),'priority':_0x291775(0x15f)}),!_0x54403b['jsonSchema']&&_0x5a1f8c[_0x291775(0x156)]({'validator':_0x291775(0x1b4),'reason':_0x291775(0x153),'install':_0x291775(0x184),'priority':'medium'}),_0x5a1f8c;}}export default ConfigValidator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a0_0x29a89a=a0_0x5345;(function(_0x49484a,_0x528167){const _0xa08b21=a0_0x5345,_0x3a8bf1=_0x49484a();while(!![]){try{const _0x2df45c=-parseInt(_0xa08b21(0x157))/0x1*(-parseInt(_0xa08b21(0x166))/0x2)+-parseInt(_0xa08b21(0x158))/0x3+parseInt(_0xa08b21(0x156))/0x4+parseInt(_0xa08b21(0x179))/0x5+-parseInt(_0xa08b21(0x16c))/0x6*(parseInt(_0xa08b21(0x149))/0x7)+-parseInt(_0xa08b21(0x16e))/0x8*(parseInt(_0xa08b21(0x178))/0x9)+-parseInt(_0xa08b21(0x155))/0xa*(parseInt(_0xa08b21(0x16f))/0xb);if(_0x2df45c===_0x528167)break;else _0x3a8bf1['push'](_0x3a8bf1['shift']());}catch(_0x4ad711){_0x3a8bf1['push'](_0x3a8bf1['shift']());}}}(a0_0x2bc5,0x25987));import{ESLint}from'eslint';import a0_0x542a21 from'path';function a0_0x5345(_0x3a1c10,_0x2b0761){_0x3a1c10=_0x3a1c10-0x149;const _0x2bc5fb=a0_0x2bc5();let _0x5345d6=_0x2bc5fb[_0x3a1c10];if(a0_0x5345['ASpWda']===undefined){var _0x4bcdec=function(_0x94f69f){const _0x450d53='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x542a21='',_0x2edd46='';for(let _0x165f95=0x0,_0x415c5f,_0x1ce178,_0x100eeb=0x0;_0x1ce178=_0x94f69f['charAt'](_0x100eeb++);~_0x1ce178&&(_0x415c5f=_0x165f95%0x4?_0x415c5f*0x40+_0x1ce178:_0x1ce178,_0x165f95++%0x4)?_0x542a21+=String['fromCharCode'](0xff&_0x415c5f>>(-0x2*_0x165f95&0x6)):0x0){_0x1ce178=_0x450d53['indexOf'](_0x1ce178);}for(let _0x45a569=0x0,_0x47aa85=_0x542a21['length'];_0x45a569<_0x47aa85;_0x45a569++){_0x2edd46+='%'+('00'+_0x542a21['charCodeAt'](_0x45a569)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2edd46);};a0_0x5345['efHfMb']=_0x4bcdec,a0_0x5345['XATEAC']={},a0_0x5345['ASpWda']=!![];}const _0x55f49d=_0x2bc5fb[0x0],_0x363423=_0x3a1c10+_0x55f49d,_0x2deb50=a0_0x5345['XATEAC'][_0x363423];return!_0x2deb50?(_0x5345d6=a0_0x5345['efHfMb'](_0x5345d6),a0_0x5345['XATEAC'][_0x363423]=_0x5345d6):_0x5345d6=_0x2deb50,_0x5345d6;}function a0_0x2bc5(){const _0x29f772=['mteYmta3nNHZv3LzyW','mZa0zgXHzKTU','oty2nJb2CfjTqwS','C2vJDxjPDhK','u1rzteu','rvnmAw50igfUywX5C2LZignVBxbSzxrLza','z2v0rvnmAw50q29UzMLN','zML4ywjSzvDHCM5PBMDdB3vUDa','lMPZEa','CMvTB3zLza','BM8TAw1WBgLLzc1LDMfS','zML4','DNvL','CgfYC2vYt3b0Aw9UCW','y2f0zwDVCML6zvj1Bgu','qKvtvf9quKfdveLdrq','nJmYv3LWsw5Z','z2v0rvnmAw50sw5ZDgfUy2u','z2v0u3vWCg9YDgvKrxH0zw5ZAw9UCW','BM8TDw5Kzwy','BgvUz3rO','uevsrK9stufoq0u','mtqWmZu2mLrSAhD2uG','CMvHy3q','nduYmda4v0LNBuDg','mJjXEKHusxq','BM8TDMfY','zxnSAw50','C3bSAxq','lM1QCW','Aw5JBhvKzxm','zxnSAw50oNjLy29TBwvUzgvK','zw5KtgLUzq','Bwf4','mZzTvej1Cgq','mtm2nZe3nwXgDNjiDq','zM9YBwf0twvZC2fNzq','q0furuDpuLK','zMLSDgvY','rvnmAw50igzPEcbMywLSzwq','zgvZy3jPyMvdAgfUz2vZ','ywnJzxnZ','y29SDw1U','lMvZBgLUDhjJlMPZ','B3v0Chv0','Bg9Nz2vY','n1PKCKfpBG','C2LUz2XL','CNvSzuLK','D2fYBMLUz0nVDw50','BgLUzq','rvjst1i','yMvZDc1WCMfJDgLJzxm','zxjYB3jdB3vUDa','BwvZC2fNzq','ywrKzwq','rvnmAw50igfUywX5C2LZigzHAwXLza','C3vWCg9YDhnbDxrVrML4','mtGXmZbKzufby0e'];a0_0x2bc5=function(){return _0x29f772;};return a0_0x2bc5();}import a0_0x2edd46 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';class ESLintAnalyzer{constructor(_0x165f95=null){const _0x3a1a93=a0_0x5345;this[_0x3a1a93(0x183)]=_0x165f95,this['eslintCache']=new Map();}async['analyze'](_0x415c5f,_0x1ce178,_0x100eeb={}){const _0x20b9ef=a0_0x5345;try{const _0x45a569=await this['getESLintInstance'](_0x100eeb),_0x47aa85=await _0x45a569['lintText'](_0x1ce178,{'filePath':_0x415c5f,'warnIgnored':![]}),_0x4c1fa9=[];if(_0x47aa85&&_0x47aa85[_0x20b9ef(0x16a)]>0x0){const _0x4b26de=_0x47aa85[0x0];for(const _0x2217c1 of _0x4b26de['messages']){_0x4c1fa9['push'](this[_0x20b9ef(0x17a)](_0x2217c1,_0x415c5f));}}return this['logger']?.['debug'](_0x20b9ef(0x15b),{'file':_0x415c5f,'totalDiagnostics':_0x4c1fa9['length'],'errors':_0x4c1fa9['filter'](_0x26a0fc=>_0x26a0fc['severity']===STATIC_ANALYSIS['SEVERITY'][_0x20b9ef(0x14e)])['length'],'warnings':_0x4c1fa9[_0x20b9ef(0x17c)](_0x59db80=>_0x59db80['severity']===STATIC_ANALYSIS['SEVERITY']['WARNING'])['length']}),_0x4c1fa9;}catch(_0x1de5d4){return this['logger']?.['error'](_0x20b9ef(0x153),{'file':_0x415c5f,'error':_0x1de5d4['message']}),[];}}async['fix'](_0x546ab7,_0xe53972,_0x2be655={}){const _0x4273cd=a0_0x5345;try{const _0xffb1e5=await this['getESLintInstance']({..._0x2be655,'fix':!![]}),_0x41de35=await _0xffb1e5['lintText'](_0xe53972,{'filePath':_0x546ab7,'warnIgnored':![]});if(_0x41de35&&_0x41de35['length']>0x0){const _0x5e7979=_0x41de35[0x0];return{'fixed':_0x5e7979['output']!==undefined,'content':_0x5e7979[_0x4273cd(0x182)]||_0xe53972,'fixedCount':_0x5e7979['fixableErrorCount']+_0x5e7979[_0x4273cd(0x15d)],'remainingErrors':_0x5e7979[_0x4273cd(0x150)]-_0x5e7979['fixableErrorCount'],'remainingWarnings':_0x5e7979[_0x4273cd(0x14c)]-_0x5e7979['fixableWarningCount'],'changes':_0x5e7979['output']?this[_0x4273cd(0x17e)](_0xe53972,_0x5e7979['output']):[]};}return{'fixed':![],'content':_0xe53972,'fixedCount':0x0,'remainingErrors':0x0,'remainingWarnings':0x0,'changes':[]};}catch(_0x20b4a4){this['logger']?.['error'](_0x4273cd(0x17d),{'file':_0x546ab7,'error':_0x20b4a4[_0x4273cd(0x151)]});throw new Error('ESLint\x20fix\x20failed:\x20'+_0x20b4a4[_0x4273cd(0x151)]);}}async[a0_0x29a89a(0x167)](_0xf9fd89={}){const _0x425fa1=a0_0x29a89a,{workingDir:_0x4e07a9,fix:fix=![],framework:_0xd304ea}=_0xf9fd89,_0xb4ba00=await this[_0x425fa1(0x15c)](_0x4e07a9,_0xd304ea),_0x250a53=new ESLint({'fix':fix,'useEslintrc':!![],'overrideConfig':_0xb4ba00,'errorOnUnmatchedPattern':![]});return _0x250a53;}async[a0_0x29a89a(0x15c)](_0x8a514b,_0x377a08){const _0x31823b=a0_0x29a89a,_0x4f5471={'env':{'browser':!![],'es2021':!![],'node':!![]},'parserOptions':{'ecmaVersion':'latest','sourceType':'module'},'rules':{'no-unused-vars':'warn','no-undef':'error','no-console':'off','semi':['warn','always'],'quotes':['warn',_0x31823b(0x14a),{'avoidEscape':!![]}]}};if(_0x377a08===_0x31823b(0x16d))_0x4f5471['extends']=[_0x31823b(0x175)],_0x4f5471[_0x31823b(0x163)]['ecmaFeatures']={'jsx':!![]},_0x4f5471['settings']={'react':{'version':'detect'}};else _0x377a08===_0x31823b(0x162)?_0x4f5471['extends']=['eslint:recommended']:_0x4f5471['extends']=[_0x31823b(0x175)];if(_0x8a514b){const _0x552fcb=[_0x31823b(0x181),'.eslintrc.cjs','.eslintrc.json','eslint.config.js'];for(const _0x5e0753 of _0x552fcb){try{const _0x30993f=a0_0x542a21['join'](_0x8a514b,_0x5e0753);return await a0_0x2edd46[_0x31823b(0x17f)](_0x30993f),this[_0x31823b(0x183)]?.['debug']('Found\x20ESLint\x20config',{'configFile':_0x5e0753}),{};}catch{}}}return _0x4f5471;}[a0_0x29a89a(0x17a)](_0x2aa3d2,_0x2d80ed){const _0xbb4a7d=a0_0x29a89a;return{'file':_0x2d80ed,'line':_0x2aa3d2[_0xbb4a7d(0x14d)]||0x1,'column':_0x2aa3d2[_0xbb4a7d(0x180)]||0x1,'endLine':_0x2aa3d2[_0xbb4a7d(0x176)],'endColumn':_0x2aa3d2['endColumn'],'severity':_0x2aa3d2['severity']===0x2?STATIC_ANALYSIS['SEVERITY']['ERROR']:STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x2aa3d2['ruleId']||'eslint','message':_0x2aa3d2['message'],'category':this[_0xbb4a7d(0x164)](_0x2aa3d2[_0xbb4a7d(0x14b)]),'fixable':_0x2aa3d2[_0xbb4a7d(0x161)]!==undefined,'source':_0xbb4a7d(0x171)};}['categorizeRule'](_0x19d800){const _0x108616=a0_0x29a89a;if(!_0x19d800)return STATIC_ANALYSIS['CATEGORY'][_0x108616(0x15a)];if(_0x19d800['includes'](_0x108616(0x159))||_0x19d800[_0x108616(0x174)]('xss')||_0x19d800==='no-eval'||_0x19d800===_0x108616(0x160))return STATIC_ANALYSIS[_0x108616(0x17b)]['SECURITY'];if(_0x19d800['includes']('performance')||_0x19d800==='no-await-in-loop'||_0x19d800==='prefer-promise-reject-errors')return STATIC_ANALYSIS['CATEGORY'][_0x108616(0x16b)];if(_0x19d800['includes']('import')||_0x19d800===_0x108616(0x169))return STATIC_ANALYSIS['CATEGORY']['IMPORT'];if(_0x19d800[_0x108616(0x174)](_0x108616(0x14f))||_0x19d800==='no-unused-vars'||_0x19d800==='no-unreachable'||_0x19d800===_0x108616(0x170))return STATIC_ANALYSIS[_0x108616(0x17b)][_0x108616(0x165)];return STATIC_ANALYSIS['CATEGORY'][_0x108616(0x15a)];}['describeChanges'](_0x3aa0c0,_0x4644b5){const _0x4517d1=a0_0x29a89a,_0x2ab1a2=[],_0x194c72=_0x3aa0c0[_0x4517d1(0x172)]('\x0a'),_0xf1f528=_0x4644b5['split']('\x0a'),_0x15c0ac=Math[_0x4517d1(0x177)](_0x194c72['length'],_0xf1f528['length']);for(let _0x5c47ca=0x0;_0x5c47ca<_0x15c0ac;_0x5c47ca++){const _0x3eba72=_0x194c72[_0x5c47ca]||'',_0x3a8314=_0xf1f528[_0x5c47ca]||'';_0x3eba72!==_0x3a8314&&_0x2ab1a2['push']({'line':_0x5c47ca+0x1,'type':_0x3eba72&&_0x3a8314?'modified':_0x3eba72?_0x4517d1(0x15f):_0x4517d1(0x152),'original':_0x3eba72,'fixed':_0x3a8314});}return _0x2ab1a2;}[a0_0x29a89a(0x168)](){const _0x4e303b=a0_0x29a89a;return['.js',_0x4e303b(0x15e),_0x4e303b(0x173),'.cjs'];}[a0_0x29a89a(0x154)](){return!![];}}export default ESLintAnalyzer;
|