@loxia-labs/loxia-autopilot-one 1.0.11 → 1.0.12
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/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/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 -0
- package/web-ui/build/index.html +2 -2
- package/web-ui/build/static/{index-C5X7qBNF.js → index-DXN850Y2.js} +69 -65
- package/web-ui/build/static/index-an-YRzUX.css +1 -0
- package/web-ui/build/static/index-g2UFuTwG.css +0 -1
package/bin/cli.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const a0_0x219500=a0_0x13ce;(function(_0x139ca9,_0x521000){const _0x45d9d5=a0_0x13ce,_0xcedb2=_0x139ca9();while(!![]){try{const _0x379397=parseInt(_0x45d9d5(0x10f))/0x1+parseInt(_0x45d9d5(0x13e))/0x2+parseInt(_0x45d9d5(0x130))/0x3*(-parseInt(_0x45d9d5(0x114))/0x4)+parseInt(_0x45d9d5(0x136))/0x5+-parseInt(_0x45d9d5(0x142))/0x6+-parseInt(_0x45d9d5(0x106))/0x7*(parseInt(_0x45d9d5(0x117))/0x8)+parseInt(_0x45d9d5(0x13b))/0x9*(parseInt(_0x45d9d5(0x129))/0xa);if(_0x379397===_0x521000)break;else _0xcedb2['push'](_0xcedb2['shift']());}catch(_0x280530){_0xcedb2['push'](_0xcedb2['shift']());}}}(a0_0xa139,0x6a0d8));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn,exec}from'child_process';import{readFileSync}from'fs';import a0_0x4571f8 from'http';function a0_0x13ce(_0xcad0f1,_0x369f49){_0xcad0f1=_0xcad0f1-0x106;const _0xa13997=a0_0xa139();let _0x13ce55=_0xa13997[_0xcad0f1];return _0x13ce55;}const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x219500(0x10d),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x219500(0x108)][a0_0x219500(0x13f)](0x2),command=args[0x0]&&!args[0x0][a0_0x219500(0x112)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x219500(0x14a)](a0_0x219500(0x120))||args[a0_0x219500(0x14a)]('-h'),'version':args[a0_0x219500(0x14a)]('--version')||args[a0_0x219500(0x14a)]('-v')};for(let i=0x0;i<args[a0_0x219500(0x139)];i++){args[i]===a0_0x219500(0x111)&&args[i+0x1]&&(flags[a0_0x219500(0x10c)]=parseInt(args[i+0x1],0xa)),args[i]===a0_0x219500(0x13a)&&args[i+0x1]&&(flags[a0_0x219500(0x149)]=args[i+0x1]);}const port=flags[a0_0x219500(0x10c)]||DEFAULT_PORT,host=flags[a0_0x219500(0x149)]||DEFAULT_HOST,serverUrl=a0_0x219500(0x131)+host+':'+port;if(flags['version']){const pkgPath=join(__dirname,'..',a0_0x219500(0x110)),pkg=JSON[a0_0x219500(0x123)](readFileSync(pkgPath,a0_0x219500(0x125)));console[a0_0x219500(0x14d)](a0_0x219500(0x145)+pkg[a0_0x219500(0x116)]),process[a0_0x219500(0x132)](0x0);}function a0_0xa139(){const _0x4ca4f5=['xdg-open\x20\x22','Checking\x20if\x20server\x20is\x20running...','host','includes','help','pid','log','7TpSvcz','index.js','argv','\x0aShutting\x20down\x20server...','ignore','\x0aLoxia\x20Autopilot\x20One\x20v','port','localhost','unref','23067EFVvdR','package.json','--port','startsWith','error','12nyEeyq','\x0aServer\x20is\x20not\x20running\x20at\x20','version','5321696hqnoJR','Could\x20not\x20open\x20browser\x20automatically.','start\x20\x22\x22\x20\x22','statusCode','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','SIGINT','Waiting\x20for\x20server\x20to\x20start...',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','\x0aPlease\x20start\x20the\x20server\x20first:','--help','web','inherit','parse','get','utf8','open\x20\x22','destroy','\x0aOpening\x20Web\x20UI\x20at\x20','90UsijtE','env','catch','darwin','LOXIA_HOST','Error:','kill','324243EPyqOd','http://','exit','SIGTERM','Starting\x20Loxia\x20server...\x0a','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','116750mgfZfC','src','node','length','--host','1685601VPzBQg','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','loxia-terminal.js','859518xKavFD','slice','Starting\x20Terminal\x20UI...\x0a','toString','4427580lnzuZu','Server\x20is\x20running\x20at\x20','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','Loxia\x20Autopilot\x20One\x20v','message'];a0_0xa139=function(){return _0x4ca4f5;};return a0_0xa139();}if(flags[a0_0x219500(0x14b)]||!command){const pkgPath=join(__dirname,'..',a0_0x219500(0x110)),pkg=JSON[a0_0x219500(0x123)](readFileSync(pkgPath,a0_0x219500(0x125)));console[a0_0x219500(0x14d)](a0_0x219500(0x10b)+pkg[a0_0x219500(0x116)]+'\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_0x219500(0x11e)+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_0x219500(0x132)](0x0);}async function checkServerRunning(_0x12d7b2,_0x3d9964,_0x3bdc3d=0x1){for(let _0x4fc805=0x0;_0x4fc805<_0x3bdc3d;_0x4fc805++){const _0x5743cf=await new Promise(_0x40769c=>{const _0x37baf3=a0_0x13ce,_0x443980=a0_0x4571f8[_0x37baf3(0x124)](_0x37baf3(0x131)+_0x12d7b2+':'+_0x3d9964+'/api/health',_0x2b806c=>{const _0x50c468=_0x37baf3;_0x40769c(_0x2b806c[_0x50c468(0x11a)]===0xc8);});_0x443980['on'](_0x37baf3(0x113),()=>_0x40769c(![])),_0x443980['setTimeout'](0x7d0,()=>{const _0x5c49ea=_0x37baf3;_0x443980[_0x5c49ea(0x127)](),_0x40769c(![]);});});if(_0x5743cf)return!![];_0x4fc805<_0x3bdc3d-0x1&&await new Promise(_0x1d3d15=>setTimeout(_0x1d3d15,SERVER_CHECK_INTERVAL));}return![];}async function waitForServer(_0x5bad26,_0x490c1c,_0x4488e8=SERVER_STARTUP_TIMEOUT){const _0x2cc23d=Math['ceil'](_0x4488e8/SERVER_CHECK_INTERVAL);return checkServerRunning(_0x5bad26,_0x490c1c,_0x2cc23d);}function openBrowser(_0x530156){const _0x346b83=a0_0x219500,_0x28694c=process['platform'];let _0x4f0a32;if(_0x28694c===_0x346b83(0x12c))_0x4f0a32=_0x346b83(0x126)+_0x530156+'\x22';else _0x28694c==='win32'?_0x4f0a32=_0x346b83(0x119)+_0x530156+'\x22':_0x4f0a32=_0x346b83(0x147)+_0x530156+'\x22';exec(_0x4f0a32,_0x1a948c=>{const _0x5e8dca=_0x346b83;_0x1a948c&&(console[_0x5e8dca(0x14d)](_0x5e8dca(0x118)),console[_0x5e8dca(0x14d)]('Please\x20open\x20manually:\x20'+_0x530156));});}function startServer(_0xc66b98=![]){const _0x34ba44=a0_0x219500,_0x41ebd6={...process[_0x34ba44(0x12a)],'LOXIA_PORT':port[_0x34ba44(0x141)](),'PORT':port['toString']()};flags[_0x34ba44(0x149)]&&(_0x41ebd6[_0x34ba44(0x12d)]=flags[_0x34ba44(0x149)]);const _0x1451d1=join(__dirname,'..',_0x34ba44(0x137),_0x34ba44(0x107)),_0x55713f=spawn(_0x34ba44(0x138),[_0x1451d1],{'cwd':join(__dirname,'..'),'env':_0x41ebd6,'stdio':_0xc66b98?[_0x34ba44(0x10a),_0x34ba44(0x10a),'ignore']:_0x34ba44(0x122),'detached':_0xc66b98});return _0xc66b98&&_0x55713f[_0x34ba44(0x10e)](),_0x55713f;}function startTerminalUI(){const _0xbb074=a0_0x219500,_0xd489b6=join(__dirname,_0xbb074(0x13d)),_0x4f8091={...process[_0xbb074(0x12a)],'LOXIA_PORT':port[_0xbb074(0x141)](),'LOXIA_HOST':host},_0x5c86b6=spawn('node',[_0xd489b6],{'cwd':join(__dirname,'..'),'env':_0x4f8091,'stdio':_0xbb074(0x122)});return _0x5c86b6;}const commands={'web':async()=>{const _0x96861f=a0_0x219500;console['log'](_0x96861f(0x134));const _0x52f5b2=startServer(![]);console[_0x96861f(0x14d)](_0x96861f(0x11d));const _0x245c43=await waitForServer(host,port);_0x245c43?(console[_0x96861f(0x14d)](_0x96861f(0x128)+serverUrl),openBrowser(serverUrl)):console[_0x96861f(0x14d)]('\x0aServer\x20may\x20still\x20be\x20starting.\x20Open\x20'+serverUrl+'\x20manually.'),process['on']('SIGINT',()=>_0x52f5b2[_0x96861f(0x12f)](_0x96861f(0x11c))),process['on'](_0x96861f(0x133),()=>_0x52f5b2[_0x96861f(0x12f)](_0x96861f(0x133))),_0x52f5b2['on'](_0x96861f(0x132),_0x213b61=>process['exit'](_0x213b61||0x0));},'plus-web':async()=>{const _0x325394=a0_0x219500;await commands[_0x325394(0x121)]();},'terminal':async()=>{const _0x470c6a=a0_0x219500;console[_0x470c6a(0x14d)](_0x470c6a(0x148));const _0x14d49f=await checkServerRunning(host,port);!_0x14d49f&&(console[_0x470c6a(0x113)](_0x470c6a(0x115)+serverUrl),console['error'](_0x470c6a(0x11f)),console[_0x470c6a(0x113)](_0x470c6a(0x135)),console[_0x470c6a(0x113)](_0x470c6a(0x13c)),process[_0x470c6a(0x132)](0x1));console[_0x470c6a(0x14d)](_0x470c6a(0x143)+serverUrl),console['log'](_0x470c6a(0x140));const _0x161019=startTerminalUI();process['on'](_0x470c6a(0x11c),()=>_0x161019[_0x470c6a(0x12f)](_0x470c6a(0x11c))),process['on']('SIGTERM',()=>_0x161019[_0x470c6a(0x12f)](_0x470c6a(0x133))),_0x161019['on'](_0x470c6a(0x132),_0x3a9a3f=>process[_0x470c6a(0x132)](_0x3a9a3f||0x0));},'plus-terminal':async()=>{const _0x578c3e=a0_0x219500;console['log']('Starting\x20Loxia\x20server\x20in\x20background...');const _0x29827a=startServer(!![]),_0x5a54e8=await waitForServer(host,port);!_0x5a54e8&&(console[_0x578c3e(0x113)](_0x578c3e(0x144)),process[_0x578c3e(0x132)](0x1));console[_0x578c3e(0x14d)]('Server\x20running\x20at\x20'+serverUrl),console['log'](_0x578c3e(0x140));const _0x2f709a=startTerminalUI();_0x2f709a['on']('exit',_0x1ee213=>{const _0x3448d9=_0x578c3e;console[_0x3448d9(0x14d)](_0x3448d9(0x109));try{process[_0x3448d9(0x12f)](_0x29827a[_0x3448d9(0x14c)],_0x3448d9(0x133));}catch(_0xd8a9c9){}process[_0x3448d9(0x132)](_0x1ee213||0x0);}),process['on'](_0x578c3e(0x11c),()=>{const _0x172e4f=_0x578c3e;_0x2f709a[_0x172e4f(0x12f)](_0x172e4f(0x11c));}),process['on'](_0x578c3e(0x133),()=>{const _0x2ddaf8=_0x578c3e;_0x2f709a[_0x2ddaf8(0x12f)]('SIGTERM');});}};commands[command]?commands[command]()[a0_0x219500(0x12b)](_0x32c88c=>{const _0xf6be41=a0_0x219500;console[_0xf6be41(0x113)](_0xf6be41(0x12e),_0x32c88c[_0xf6be41(0x146)]),process[_0xf6be41(0x132)](0x1);}):(console[a0_0x219500(0x113)]('Unknown\x20command:\x20'+command),console['error'](a0_0x219500(0x11b)),process[a0_0x219500(0x132)](0x1));
|
|
3
|
+
function a0_0x1a37(){const _0x185d49=['35DveABh','node','Server\x20running\x20at\x20','port','error','Unknown\x20command:\x20','1842756hXvaCd','\x0aShutting\x20down\x20server...','SIGTERM','--port','env','\x0aLoxia\x20Autopilot\x20One\x20v','includes','Starting\x20Loxia\x20server...\x0a','startsWith','utf8','win32','host','catch','Waiting\x20for\x20server\x20to\x20start...','statusCode','SIGINT','open\x20\x22','1067304UylLrE','LOXIA_HOST','length',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','start\x20\x22\x22\x20\x22','\x0aOpening\x20Web\x20UI\x20at\x20','11QKDeek','argv','kill','--help','180495ekykSy','toString','--host','\x0aServer\x20may\x20still\x20be\x20starting.\x20Open\x20','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','Loxia\x20Autopilot\x20One\x20v','pid','Please\x20open\x20manually:\x20','log',')\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','14693990CpqMuo','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','Starting\x20Loxia\x20server\x20in\x20background...','129045tbJRbc','\x0aPlease\x20start\x20the\x20server\x20first:','Could\x20not\x20open\x20browser\x20automatically.','parse','36mfgFps','Checking\x20if\x20server\x20is\x20running...','/api/health','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','version','8669637eUIltg','54796MxaKst','setTimeout','Error:','ceil','ignore','Starting\x20Terminal\x20UI...\x0a','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','darwin','\x0aServer\x20is\x20not\x20running\x20at\x20','unref','exit','\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','help','loxia-terminal.js','--version','slice','web','localhost','10tPoXrK'];a0_0x1a37=function(){return _0x185d49;};return a0_0x1a37();}function a0_0x4243(_0x1ce742,_0x16bd46){_0x1ce742=_0x1ce742-0x6d;const _0x1a379e=a0_0x1a37();let _0x424357=_0x1a379e[_0x1ce742];return _0x424357;}const a0_0x7e0d73=a0_0x4243;(function(_0x2e2597,_0x40dea3){const _0x47548f=a0_0x4243,_0x556272=_0x2e2597();while(!![]){try{const _0x2d90f6=-parseInt(_0x47548f(0xae))/0x1*(parseInt(_0x47548f(0x75))/0x2)+parseInt(_0x47548f(0x97))/0x3+parseInt(_0x47548f(0x7c))/0x4+parseInt(_0x47548f(0xa4))/0x5*(parseInt(_0x47548f(0xa8))/0x6)+-parseInt(_0x47548f(0x76))/0x7*(-parseInt(_0x47548f(0x8d))/0x8)+parseInt(_0x47548f(0xad))/0x9+-parseInt(_0x47548f(0xa1))/0xa*(parseInt(_0x47548f(0x93))/0xb);if(_0x2d90f6===_0x40dea3)break;else _0x556272['push'](_0x556272['shift']());}catch(_0x5b8ad1){_0x556272['push'](_0x556272['shift']());}}}(a0_0x1a37,0x895ff));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn,exec}from'child_process';import{readFileSync}from'fs';import a0_0x4ed263 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x7e0d73(0x74),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x7e0d73(0x94)][a0_0x7e0d73(0x72)](0x2),command=args[0x0]&&!args[0x0][a0_0x7e0d73(0x84)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x7e0d73(0x82)](a0_0x7e0d73(0x96))||args[a0_0x7e0d73(0x82)]('-h'),'version':args[a0_0x7e0d73(0x82)](a0_0x7e0d73(0x71))||args[a0_0x7e0d73(0x82)]('-v')};for(let i=0x0;i<args[a0_0x7e0d73(0x8f)];i++){args[i]===a0_0x7e0d73(0x7f)&&args[i+0x1]&&(flags['port']=parseInt(args[i+0x1],0xa)),args[i]===a0_0x7e0d73(0x99)&&args[i+0x1]&&(flags[a0_0x7e0d73(0x87)]=args[i+0x1]);}const port=flags[a0_0x7e0d73(0x79)]||DEFAULT_PORT,host=flags[a0_0x7e0d73(0x87)]||DEFAULT_HOST,serverUrl='http://'+host+':'+port;if(flags[a0_0x7e0d73(0xac)]){const pkgPath=join(__dirname,'..','package.json'),pkg=JSON[a0_0x7e0d73(0xa7)](readFileSync(pkgPath,a0_0x7e0d73(0x85)));console[a0_0x7e0d73(0x9f)](a0_0x7e0d73(0x9c)+pkg[a0_0x7e0d73(0xac)]),process[a0_0x7e0d73(0x6d)](0x0);}if(flags[a0_0x7e0d73(0x6f)]||!command){const pkgPath=join(__dirname,'..','package.json'),pkg=JSON['parse'](readFileSync(pkgPath,a0_0x7e0d73(0x85)));console['log'](a0_0x7e0d73(0x81)+pkg['version']+a0_0x7e0d73(0x6e)+DEFAULT_PORT+a0_0x7e0d73(0x90)+DEFAULT_HOST+a0_0x7e0d73(0xa0)),process[a0_0x7e0d73(0x6d)](0x0);}async function checkServerRunning(_0x9b29b9,_0xba1ca,_0x32a9ff=0x1){for(let _0x51d055=0x0;_0x51d055<_0x32a9ff;_0x51d055++){const _0x338ffc=await new Promise(_0x33c7f8=>{const _0x239540=a0_0x4243,_0x2c9745=a0_0x4ed263['get']('http://'+_0x9b29b9+':'+_0xba1ca+_0x239540(0xaa),_0x34b01a=>{const _0x1e5772=_0x239540;_0x33c7f8(_0x34b01a[_0x1e5772(0x8a)]===0xc8);});_0x2c9745['on'](_0x239540(0x7a),()=>_0x33c7f8(![])),_0x2c9745[_0x239540(0xaf)](0x7d0,()=>{_0x2c9745['destroy'](),_0x33c7f8(![]);});});if(_0x338ffc)return!![];_0x51d055<_0x32a9ff-0x1&&await new Promise(_0x5e1efd=>setTimeout(_0x5e1efd,SERVER_CHECK_INTERVAL));}return![];}async function waitForServer(_0x467a2b,_0x56c1d9,_0x4d0b=SERVER_STARTUP_TIMEOUT){const _0x31b2bc=a0_0x7e0d73,_0x2b9c01=Math[_0x31b2bc(0xb1)](_0x4d0b/SERVER_CHECK_INTERVAL);return checkServerRunning(_0x467a2b,_0x56c1d9,_0x2b9c01);}function openBrowser(_0x1aa592){const _0x42f40d=a0_0x7e0d73,_0x3a75e0=process['platform'];let _0x2aefd5;if(_0x3a75e0===_0x42f40d(0xb5))_0x2aefd5=_0x42f40d(0x8c)+_0x1aa592+'\x22';else _0x3a75e0===_0x42f40d(0x86)?_0x2aefd5=_0x42f40d(0x91)+_0x1aa592+'\x22':_0x2aefd5='xdg-open\x20\x22'+_0x1aa592+'\x22';exec(_0x2aefd5,_0x4bbe4e=>{const _0x4285c=_0x42f40d;_0x4bbe4e&&(console[_0x4285c(0x9f)](_0x4285c(0xa6)),console[_0x4285c(0x9f)](_0x4285c(0x9e)+_0x1aa592));});}function startServer(_0x1fd268=![]){const _0x826b8e=a0_0x7e0d73,_0x18873c={...process[_0x826b8e(0x80)],'LOXIA_PORT':port['toString'](),'PORT':port[_0x826b8e(0x98)]()};flags[_0x826b8e(0x87)]&&(_0x18873c[_0x826b8e(0x8e)]=flags['host']);const _0x407f5b=join(__dirname,'..','src','index.js'),_0x1c1825=spawn(_0x826b8e(0x77),[_0x407f5b],{'cwd':join(__dirname,'..'),'env':_0x18873c,'stdio':_0x1fd268?[_0x826b8e(0xb2),_0x826b8e(0xb2),_0x826b8e(0xb2)]:'inherit','detached':_0x1fd268});return _0x1fd268&&_0x1c1825[_0x826b8e(0xb7)](),_0x1c1825;}function startTerminalUI(){const _0x358ed0=a0_0x7e0d73,_0x10db16=join(__dirname,_0x358ed0(0x70)),_0x5bc014={...process[_0x358ed0(0x80)],'LOXIA_PORT':port[_0x358ed0(0x98)](),'LOXIA_HOST':host},_0x276fe6=spawn('node',[_0x10db16],{'cwd':join(__dirname,'..'),'env':_0x5bc014,'stdio':'inherit'});return _0x276fe6;}const commands={'web':async()=>{const _0x49eb61=a0_0x7e0d73;console[_0x49eb61(0x9f)](_0x49eb61(0x83));const _0x4ee433=startServer(![]);console[_0x49eb61(0x9f)](_0x49eb61(0x89));const _0x14d1a0=await waitForServer(host,port);_0x14d1a0?(console[_0x49eb61(0x9f)](_0x49eb61(0x92)+serverUrl),openBrowser(serverUrl)):console[_0x49eb61(0x9f)](_0x49eb61(0x9a)+serverUrl+'\x20manually.'),process['on']('SIGINT',()=>_0x4ee433['kill'](_0x49eb61(0x8b))),process['on']('SIGTERM',()=>_0x4ee433['kill']('SIGTERM')),_0x4ee433['on']('exit',_0x2bcddd=>process['exit'](_0x2bcddd||0x0));},'plus-web':async()=>{const _0x4fe124=a0_0x7e0d73;await commands[_0x4fe124(0x73)]();},'terminal':async()=>{const _0x5b6f33=a0_0x7e0d73;console[_0x5b6f33(0x9f)](_0x5b6f33(0xa9));const _0x4b8230=await checkServerRunning(host,port);!_0x4b8230&&(console[_0x5b6f33(0x7a)](_0x5b6f33(0xb6)+serverUrl),console[_0x5b6f33(0x7a)](_0x5b6f33(0xa5)),console[_0x5b6f33(0x7a)](_0x5b6f33(0x9b)),console[_0x5b6f33(0x7a)](_0x5b6f33(0xab)),process['exit'](0x1));console[_0x5b6f33(0x9f)]('Server\x20is\x20running\x20at\x20'+serverUrl),console[_0x5b6f33(0x9f)](_0x5b6f33(0xb3));const _0x3e4eab=startTerminalUI();process['on'](_0x5b6f33(0x8b),()=>_0x3e4eab[_0x5b6f33(0x95)](_0x5b6f33(0x8b))),process['on'](_0x5b6f33(0x7e),()=>_0x3e4eab['kill'](_0x5b6f33(0x7e))),_0x3e4eab['on'](_0x5b6f33(0x6d),_0x205d5b=>process[_0x5b6f33(0x6d)](_0x205d5b||0x0));},'plus-terminal':async()=>{const _0x4470df=a0_0x7e0d73;console['log'](_0x4470df(0xa3));const _0x3dabe5=startServer(!![]),_0x25b153=await waitForServer(host,port);!_0x25b153&&(console[_0x4470df(0x7a)](_0x4470df(0xb4)),process[_0x4470df(0x6d)](0x1));console[_0x4470df(0x9f)](_0x4470df(0x78)+serverUrl),console['log'](_0x4470df(0xb3));const _0x3ceebe=startTerminalUI();_0x3ceebe['on'](_0x4470df(0x6d),_0x5c9c65=>{const _0x251eee=_0x4470df;console[_0x251eee(0x9f)](_0x251eee(0x7d));try{process['kill'](_0x3dabe5[_0x251eee(0x9d)],_0x251eee(0x7e));}catch(_0xf74bc9){}process[_0x251eee(0x6d)](_0x5c9c65||0x0);}),process['on']('SIGINT',()=>{const _0x2def72=_0x4470df;_0x3ceebe[_0x2def72(0x95)](_0x2def72(0x8b));}),process['on']('SIGTERM',()=>{const _0x4d7443=_0x4470df;_0x3ceebe['kill'](_0x4d7443(0x7e));});}};commands[command]?commands[command]()[a0_0x7e0d73(0x88)](_0x21033e=>{const _0x31a994=a0_0x7e0d73;console[_0x31a994(0x7a)](_0x31a994(0xb0),_0x21033e['message']),process[_0x31a994(0x6d)](0x1);}):(console[a0_0x7e0d73(0x7a)](a0_0x7e0d73(0x7b)+command),console[a0_0x7e0d73(0x7a)](a0_0x7e0d73(0xa2)),process[a0_0x7e0d73(0x6d)](0x1));
|
package/bin/loxia-terminal-v2.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
(function(_0x42c664,_0x588267){const _0x200734=a0_0x42d5,_0x4a2061=_0x42c664();while(!![]){try{const _0x5dca55=-parseInt(_0x200734(0x114))/0x1+parseInt(_0x200734(0xfe))/0x2+parseInt(_0x200734(0xff))/0x3+parseInt(_0x200734(0x10c))/0x4*(-parseInt(_0x200734(0xea))/0x5)+parseInt(_0x200734(0x102))/0x6*(parseInt(_0x200734(0x10f))/0x7)+-parseInt(_0x200734(0x101))/0x8*(-parseInt(_0x200734(0xe7))/0x9)+-parseInt(_0x200734(0xfc))/0xa;if(_0x5dca55===_0x588267)break;else _0x4a2061['push'](_0x4a2061['shift']());}catch(_0x4d4267){_0x4a2061['push'](_0x4a2061['shift']());}}}(a0_0x364a,0x1d162));import{spawn}from'child_process';import a0_0x141ce5 from'net';function a0_0x42d5(_0x3c5772,_0x36922f){_0x3c5772=_0x3c5772-0xe6;const _0x364aea=a0_0x364a();let _0x42d5fc=_0x364aea[_0x3c5772];return _0x42d5fc;}import a0_0x4ddab4 from'path';import{fileURLToPath}from'url';function a0_0x364a(){const _0x131c6b=['32wMZtkt','786BSiimk','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','env','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','connect','message','now','--host','stdout','error','20Afwcsv','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','stderr','11347nPBNHk','../src/interfaces/terminal/index.js','bin/cli.js','data','destroy','192422tVWmlM','setTimeout','\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details','🚀\x20Starting\x20Loxia\x20server...','508752XWmMHe','log','exit','29605SHIEjK','web','LOXIA_HOST','toString','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','--ui','length','node','join','💡\x20Troubleshooting:','pipe','kill','Failed\x20to\x20start\x20server:','✓\x20Server\x20is\x20already\x20running\x20at\x20','timeout','--port','✓\x20Server\x20started\x20at\x20','slice','2699400bCakAd','argv','283188vSyGlJ','93144ckbLda','ignore'];a0_0x364a=function(){return _0x131c6b;};return a0_0x364a();}const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x4ddab4['dirname'](__filename),projectRoot=a0_0x4ddab4['dirname'](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST='localhost',SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x24373e,_0x458e04){return new Promise(_0x582fa5=>{const _0x74d668=a0_0x42d5,_0x56b520=new a0_0x141ce5['Socket']();_0x56b520[_0x74d668(0x115)](0x7d0),_0x56b520['on']('connect',()=>{const _0x530a48=_0x74d668;_0x56b520[_0x530a48(0x113)](),_0x582fa5(!![]);}),_0x56b520['on'](_0x74d668(0xf8),()=>{const _0x5244b9=_0x74d668;_0x56b520[_0x5244b9(0x113)](),_0x582fa5(![]);}),_0x56b520['on'](_0x74d668(0x10b),()=>{_0x56b520['destroy'](),_0x582fa5(![]);}),_0x56b520[_0x74d668(0x106)](_0x458e04,_0x24373e);});}async function startServer(_0x86c7fe,_0x4a7cba){const _0x49d81a=a0_0x42d5;return console['log'](_0x49d81a(0xe6)),new Promise((_0x1cf04f,_0x2283c8)=>{const _0x3a0dbf=_0x49d81a,_0x2e9dbb=spawn(_0x3a0dbf(0xf1),[a0_0x4ddab4[_0x3a0dbf(0xf2)](projectRoot,_0x3a0dbf(0x111)),_0x3a0dbf(0xef),_0x3a0dbf(0xeb),_0x3a0dbf(0x109),_0x86c7fe,_0x3a0dbf(0xf9),_0x4a7cba[_0x3a0dbf(0xed)]()],{'detached':![],'stdio':[_0x3a0dbf(0x100),_0x3a0dbf(0xf4),_0x3a0dbf(0xf4)]});_0x2e9dbb[_0x3a0dbf(0x10a)]['on'](_0x3a0dbf(0x112),()=>{}),_0x2e9dbb[_0x3a0dbf(0x10e)]['on'](_0x3a0dbf(0x112),()=>{}),_0x2e9dbb['on'](_0x3a0dbf(0x10b),_0x326d70=>{const _0x174832=_0x3a0dbf;console[_0x174832(0x10b)](_0x174832(0xf6),_0x326d70[_0x174832(0x107)]),_0x2283c8(_0x326d70);});const _0x4abd6f=Date[_0x3a0dbf(0x108)](),_0x55941f=setInterval(async()=>{const _0x52d813=_0x3a0dbf,_0x34b5fc=await isServerRunning(_0x86c7fe,_0x4a7cba);if(_0x34b5fc)clearInterval(_0x55941f),console[_0x52d813(0xe8)](_0x52d813(0xfa)+_0x86c7fe+':'+_0x4a7cba),_0x1cf04f();else Date[_0x52d813(0x108)]()-_0x4abd6f>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x55941f),_0x2e9dbb[_0x52d813(0xf5)](),_0x2283c8(new Error('Server\x20startup\x20timeout')));},0x1f4);});}async function main(){const _0x35f97d=a0_0x42d5;try{console[_0x35f97d(0xe8)]('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console[_0x35f97d(0xe8)]('\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI'),console[_0x35f97d(0xe8)]('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console['log']('');const _0x59f993=process[_0x35f97d(0xfd)][_0x35f97d(0xfb)](0x2);let _0x14742a=DEFAULT_HOST,_0x41a109=DEFAULT_PORT;for(let _0x1c3005=0x0;_0x1c3005<_0x59f993[_0x35f97d(0xf0)];_0x1c3005++){if(_0x59f993[_0x1c3005]===_0x35f97d(0x109)&&_0x59f993[_0x1c3005+0x1])_0x14742a=_0x59f993[_0x1c3005+0x1],_0x1c3005++;else _0x59f993[_0x1c3005]===_0x35f97d(0xf9)&&_0x59f993[_0x1c3005+0x1]&&(_0x41a109=parseInt(_0x59f993[_0x1c3005+0x1],0xa),_0x1c3005++);}console[_0x35f97d(0xe8)](_0x35f97d(0x10d)+_0x14742a+':'+_0x41a109+'...');const _0x166db0=await isServerRunning(_0x14742a,_0x41a109);!_0x166db0?(console['log']('✗\x20Server\x20is\x20not\x20running'),await startServer(_0x14742a,_0x41a109)):console['log'](_0x35f97d(0xf7)+_0x14742a+':'+_0x41a109),console[_0x35f97d(0xe8)](''),console['log'](_0x35f97d(0x103)),console[_0x35f97d(0xe8)](''),await new Promise(_0x10f43f=>setTimeout(_0x10f43f,0x1f4)),process[_0x35f97d(0x104)][_0x35f97d(0xec)]=_0x14742a,process[_0x35f97d(0x104)]['LOXIA_PORT']=_0x41a109[_0x35f97d(0xed)](),await import(_0x35f97d(0x110));}catch(_0x274eb9){console['error'](''),console[_0x35f97d(0x10b)](_0x35f97d(0x105)),console['error']('\x20\x20',_0x274eb9[_0x35f97d(0x107)]),console[_0x35f97d(0x10b)](''),console['error'](_0x35f97d(0xf3)),console[_0x35f97d(0x10b)](_0x35f97d(0xee)),console[_0x35f97d(0x10b)]('\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js'),console['error'](_0x35f97d(0x116)),console['error'](''),process[_0x35f97d(0xe9)](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_0x418ebc=a0_0x2938;(function(_0x26bf76,_0x129a2b){const _0x5b21ae=a0_0x2938,_0x31ffe1=_0x26bf76();while(!![]){try{const _0x59a6ee=parseInt(_0x5b21ae(0xc1))/0x1+-parseInt(_0x5b21ae(0xa3))/0x2+-parseInt(_0x5b21ae(0xc4))/0x3*(parseInt(_0x5b21ae(0xb3))/0x4)+parseInt(_0x5b21ae(0xb5))/0x5*(parseInt(_0x5b21ae(0xc5))/0x6)+-parseInt(_0x5b21ae(0xb2))/0x7+-parseInt(_0x5b21ae(0xb8))/0x8*(parseInt(_0x5b21ae(0xb1))/0x9)+parseInt(_0x5b21ae(0xbd))/0xa*(parseInt(_0x5b21ae(0xa6))/0xb);if(_0x59a6ee===_0x129a2b)break;else _0x31ffe1['push'](_0x31ffe1['shift']());}catch(_0x1ce347){_0x31ffe1['push'](_0x31ffe1['shift']());}}}(a0_0x58b9,0xd8555));import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0x418ebc(0xc6)][a0_0x418ebc(0xab)](0x2),options={'host':a0_0x418ebc(0xae),'port':0x1f90};function a0_0x2938(_0x32ca56,_0x9b8ae7){_0x32ca56=_0x32ca56-0xa3;const _0x58b91a=a0_0x58b9();let _0x293870=_0x58b91a[_0x32ca56];return _0x293870;}for(let i=0x0;i<args[a0_0x418ebc(0xbc)];i++){const arg=args[i];if(arg==='--host'||arg==='-h')options['host']=args[++i];else{if(arg===a0_0x418ebc(0xbf)||arg==='-p')options['port']=parseInt(args[++i],0xa);else arg===a0_0x418ebc(0xc7)&&(console[a0_0x418ebc(0xa4)](a0_0x418ebc(0xaa)),process[a0_0x418ebc(0xb9)](0x0));}}process[a0_0x418ebc(0xa9)]['LOXIA_HOST']&&(options[a0_0x418ebc(0xa8)]=process[a0_0x418ebc(0xa9)][a0_0x418ebc(0xad)]);process[a0_0x418ebc(0xa9)]['LOXIA_PORT']&&(options[a0_0x418ebc(0xba)]=parseInt(process['env'][a0_0x418ebc(0xc3)],0xa));!process[a0_0x418ebc(0xb6)]['isTTY']&&(console[a0_0x418ebc(0xc2)](a0_0x418ebc(0xa7)),console['error'](''),console[a0_0x418ebc(0xc2)](a0_0x418ebc(0xc9)),console['error'](a0_0x418ebc(0xca)),console[a0_0x418ebc(0xc2)](a0_0x418ebc(0xc8)),console[a0_0x418ebc(0xc2)]('\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)'),console['error']('\x20\x20-\x20Some\x20CI/CD\x20environments'),console[a0_0x418ebc(0xc2)](''),console['error'](a0_0x418ebc(0xb0)),console[a0_0x418ebc(0xc2)](a0_0x418ebc(0xb4)),console[a0_0x418ebc(0xc2)](''),console[a0_0x418ebc(0xc2)]('Or\x20use\x20the\x20web\x20UI\x20instead:'),console[a0_0x418ebc(0xc2)](a0_0x418ebc(0xaf)),process['exit'](0x1));console[a0_0x418ebc(0xa4)](a0_0x418ebc(0xc0)),console[a0_0x418ebc(0xa4)](a0_0x418ebc(0xb7)+options[a0_0x418ebc(0xa8)]+':'+options['port']),console[a0_0x418ebc(0xa4)](a0_0x418ebc(0xbe));function a0_0x58b9(){const _0x2e6043=['\x20\x20npm\x20start','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','9757134fLzeUj','9513749fHaXBV','890360bVRaKt','\x20\x20npm\x20run\x20terminal-ui','5mpzVdt','stdin','Connecting\x20to:\x20','8gsgzoW','exit','port','waitUntilExit','length','4470ShqQqA','Press\x20Ctrl+C\x20to\x20exit\x0a','--port','Starting\x20Loxia\x20Terminal\x20UI...','952443VWCCNc','error','LOXIA_PORT','3zcsKcC','6190134HspXDV','argv','--help','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','The\x20terminal\x20UI\x20cannot\x20run\x20in:','\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)','2598532ifjOhi','log','then','70554wTkvpy','ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).','host','env','\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','slice','\x0aTerminal\x20UI\x20exited','LOXIA_HOST','localhost'];a0_0x58b9=function(){return _0x2e6043;};return a0_0x58b9();}const instance=startTerminalUI(options);instance[a0_0x418ebc(0xbb)]()[a0_0x418ebc(0xa5)](()=>{const _0x3b510a=a0_0x418ebc;console[_0x3b510a(0xa4)](_0x3b510a(0xac)),process[_0x3b510a(0xb9)](0x0);})['catch'](_0x2939a1=>{const _0x189809=a0_0x418ebc;console['error']('\x0aTerminal\x20UI\x20error:',_0x2939a1),process[_0x189809(0xb9)](0x1);});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const a0_0x17d3c0=a0_0x36e1;(function(_0x324249,_0x4d55ae){const _0x25cdd8=a0_0x36e1,_0x5155e0=_0x324249();while(!![]){try{const _0x386348=-parseInt(_0x25cdd8(0x125))/0x1*(parseInt(_0x25cdd8(0x122))/0x2)+parseInt(_0x25cdd8(0x137))/0x3+-parseInt(_0x25cdd8(0x135))/0x4*(-parseInt(_0x25cdd8(0x136))/0x5)+-parseInt(_0x25cdd8(0x126))/0x6+parseInt(_0x25cdd8(0x124))/0x7*(parseInt(_0x25cdd8(0x12a))/0x8)+-parseInt(_0x25cdd8(0x143))/0x9+-parseInt(_0x25cdd8(0x12b))/0xa*(-parseInt(_0x25cdd8(0x149))/0xb);if(_0x386348===_0x4d55ae)break;else _0x5155e0['push'](_0x5155e0['shift']());}catch(_0x3d269f){_0x5155e0['push'](_0x5155e0['shift']());}}}(a0_0x4a70,0x41b54));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x3eb759 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process['env'][a0_0x17d3c0(0x13e)]||0x1f90,STARTUP_WAIT=0x7d0;let serverProcess=null;async function checkServerReady(_0x4af873=0xa,_0x47c814=0x1f4){const _0x28d469=a0_0x17d3c0;for(let _0x800c6d=0x0;_0x800c6d<_0x4af873;_0x800c6d++){try{return await new Promise((_0x5631ad,_0x235f16)=>{const _0x43d12c=a0_0x36e1,_0x45a466=a0_0x3eb759[_0x43d12c(0x14d)]('http://localhost:'+SERVER_PORT+'/health',_0x29efe3=>{const _0x4e7431=_0x43d12c;_0x29efe3['statusCode']===0xc8?_0x5631ad():_0x235f16(new Error('Server\x20returned\x20'+_0x29efe3[_0x4e7431(0x13c)]));});_0x45a466['on']('error',_0x235f16),_0x45a466[_0x43d12c(0x130)](0x3e8,()=>{const _0x6a03df=_0x43d12c;_0x45a466[_0x6a03df(0x146)](),_0x235f16(new Error('Timeout'));});}),console['log']('✅\x20Server\x20is\x20ready!'),!![];}catch(_0x1044bf){_0x800c6d<_0x4af873-0x1&&await new Promise(_0x3f8b00=>setTimeout(_0x3f8b00,_0x47c814));}}return console[_0x28d469(0x132)](_0x28d469(0x12f)),![];}async function startServer(){return new Promise(_0x597aab=>{const _0x1ee911=a0_0x36e1;console[_0x1ee911(0x132)]('🚀\x20Starting\x20Loxia\x20server...');const _0x1aa2c4=join(rootDir,_0x1ee911(0x12c),_0x1ee911(0x14c));serverProcess=spawn('node',[_0x1aa2c4],{'cwd':rootDir,'env':{...process['env']},'stdio':[_0x1ee911(0x145),_0x1ee911(0x14f),_0x1ee911(0x14f)],'detached':![]}),serverProcess[_0x1ee911(0x13b)]['on'](_0x1ee911(0x13a),_0x4d1093=>{const _0x25bb3f=_0x1ee911,_0x440a80=_0x4d1093[_0x25bb3f(0x12e)]()[_0x25bb3f(0x14e)]();_0x440a80&&console[_0x25bb3f(0x132)](_0x25bb3f(0x131)+_0x440a80);}),serverProcess[_0x1ee911(0x147)]['on'](_0x1ee911(0x13a),_0x56dd80=>{const _0x3cdef1=_0x1ee911,_0x1af0f9=_0x56dd80[_0x3cdef1(0x12e)]()[_0x3cdef1(0x14e)]();_0x1af0f9&&!_0x1af0f9[_0x3cdef1(0x13d)]('ExperimentalWarning')&&console[_0x3cdef1(0x123)](_0x3cdef1(0x128)+_0x1af0f9);}),serverProcess['on'](_0x1ee911(0x123),_0x4c436c=>{const _0xe40e79=_0x1ee911;console[_0xe40e79(0x123)](_0xe40e79(0x133),_0x4c436c['message']),process[_0xe40e79(0x13f)](0x1);}),serverProcess['on'](_0x1ee911(0x13f),(_0x2731de,_0xa65701)=>{_0x2731de!==null&&_0x2731de!==0x0&&(console['error']('Server\x20exited\x20with\x20code\x20'+_0x2731de),process['exit'](_0x2731de));}),setTimeout(_0x597aab,STARTUP_WAIT);});}function a0_0x4a70(){const _0x3de63f=['statusCode','includes','PORT','exit','inherit','╔════════════════════════════════════════════════╗','loxia-terminal.js','2505213OEzSKg','SIGINT','ignore','destroy','stderr','SIGTERM','1862597rvozPx','SIGKILL','bin','index.js','get','trim','pipe','message','\x0a👋\x20Terminal\x20UI\x20closed.','44sJbjoo','error','77sPuBRp','22439kLZDAU','882702qXsqQW','kill','[SERVER\x20ERROR]\x20','╚════════════════════════════════════════════════╝','192328VnMmSc','40IakKTw','src','killed','toString','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','setTimeout','[SERVER]\x20','log','Failed\x20to\x20start\x20server:','env','900sYcTjk','445iQIVzr','679464rbPEff','║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║','node','data','stdout'];a0_0x4a70=function(){return _0x3de63f;};return a0_0x4a70();}async function startTerminalUI(){const _0x27a918=a0_0x17d3c0;console[_0x27a918(0x132)]('🖥️\x20\x20Starting\x20Terminal\x20UI...'),console[_0x27a918(0x132)]('');const _0x1e1c31=join(rootDir,_0x27a918(0x14b),_0x27a918(0x142)),_0x38336a=spawn(_0x27a918(0x139),[_0x1e1c31],{'cwd':rootDir,'env':{...process[_0x27a918(0x134)]},'stdio':_0x27a918(0x140)});return _0x38336a['on']('error',_0x3b605f=>{const _0x4f3f57=_0x27a918;console['error']('Failed\x20to\x20start\x20Terminal\x20UI:',_0x3b605f[_0x4f3f57(0x150)]),cleanup(),process[_0x4f3f57(0x13f)](0x1);}),_0x38336a['on'](_0x27a918(0x13f),_0x4165fe=>{const _0x138796=_0x27a918;console['log'](_0x138796(0x151)),cleanup(),process[_0x138796(0x13f)](_0x4165fe||0x0);}),_0x38336a;}function cleanup(){const _0xfcf326=a0_0x17d3c0;serverProcess&&!serverProcess[_0xfcf326(0x12d)]&&(console[_0xfcf326(0x132)]('🛑\x20Stopping\x20server...'),serverProcess['kill'](_0xfcf326(0x148)),setTimeout(()=>{const _0x1ebffd=_0xfcf326;!serverProcess[_0x1ebffd(0x12d)]&&serverProcess[_0x1ebffd(0x127)](_0x1ebffd(0x14a));},0x1388));}process['on'](a0_0x17d3c0(0x144),()=>{const _0x385974=a0_0x17d3c0;console[_0x385974(0x132)]('\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...'),cleanup(),process[_0x385974(0x13f)](0x0);}),process['on'](a0_0x17d3c0(0x148),()=>{const _0x39e9ee=a0_0x17d3c0;console[_0x39e9ee(0x132)]('\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...'),cleanup(),process[_0x39e9ee(0x13f)](0x0);}),process['on'](a0_0x17d3c0(0x13f),()=>{cleanup();});async function main(){const _0x5999e3=a0_0x17d3c0;console[_0x5999e3(0x132)](_0x5999e3(0x141)),console['log'](_0x5999e3(0x138)),console['log'](_0x5999e3(0x129)),console[_0x5999e3(0x132)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x8e4fbd){console[_0x5999e3(0x123)]('Error\x20during\x20startup:',_0x8e4fbd[_0x5999e3(0x150)]),cleanup(),process[_0x5999e3(0x13f)](0x1);}}function a0_0x36e1(_0x30adf3,_0x277266){_0x30adf3=_0x30adf3-0x122;const _0x4a70cf=a0_0x4a70();let _0x36e1ff=_0x4a70cf[_0x30adf3];return _0x36e1ff;}main();
|
package/package.json
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
const a0_0x4724f5=a0_0x16c2;(function(_0x580b89,_0x2f4e5c){const _0x159c0e=a0_0x16c2,_0x4efb2d=_0x580b89();while(!![]){try{const _0x2c0671=parseInt(_0x159c0e(0x1a3))/0x1*(-parseInt(_0x159c0e(0x17f))/0x2)+parseInt(_0x159c0e(0x178))/0x3+-parseInt(_0x159c0e(0x171))/0x4*(parseInt(_0x159c0e(0x1a8))/0x5)+-parseInt(_0x159c0e(0x1a4))/0x6*(parseInt(_0x159c0e(0x16a))/0x7)+parseInt(_0x159c0e(0x181))/0x8+parseInt(_0x159c0e(0x179))/0x9+-parseInt(_0x159c0e(0x19d))/0xa*(-parseInt(_0x159c0e(0x19e))/0xb);if(_0x2c0671===_0x2f4e5c)break;else _0x4efb2d['push'](_0x4efb2d['shift']());}catch(_0x35b726){_0x4efb2d['push'](_0x4efb2d['shift']());}}}(a0_0x5a24,0xa5718));import{exec}from'child_process';import{promisify}from'util';import a0_0x5b5cbf from'https';import a0_0x509b58 from'http';import a0_0x25fb47 from'fs';import a0_0x53d014 from'path';function a0_0x16c2(_0x5c862b,_0x3a7e2a){_0x5c862b=_0x5c862b-0x168;const _0x5a2463=a0_0x5a24();let _0x16c289=_0x5a2463[_0x5c862b];return _0x16c289;}import{fileURLToPath}from'url';import{createWriteStream}from'fs';function a0_0x5a24(){const _0x370b90=['error','\x20\x20Installation\x20Complete','bandit','326IavMWC','\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found','1737448OFEFTQ','═══════════════════════════════════════════════════════════\x0a','semgrep\x20--version','\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:','then','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a','\x20-m\x20pip\x20install\x20--user\x20','url','join','\x20\x20\x20Installing\x20','\x20already\x20installed','https','python','statusCode','close','.scanners','log','\x0a═══════════════════════════════════════════════════════════','\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','trim','\x20\x20Installing\x20Security\x20Scanners','exit','checkov','startsWith','headers','10MkgTBY','19068093yzatok','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','node_modules','location','🔍\x20Installing\x20Semgrep...','3179YpnVfn','52860UYTtcO','\x20installed\x20successfully','pipe','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','55rZkDyB','unlink','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','\x20\x20\x20✅\x20Python\x20found:\x20','\x20\x20\x20pip\x20install\x20semgrep\x0a','promises','\x0aYou\x20can\x20manually\x20install\x20scanners:','\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20','\x20-m\x20pip\x20show\x20','platform','yamllint','525CRBuCn','\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully','python3\x20--version','catch','...','pip-audit','arch','298464iCALjg','\x20\x20\x20✅\x20','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','python\x20--version','message','🐍\x20Checking\x20Python\x20scanners...','\x20\x20\x20Location:\x20','1642110ZBVvFR','1614105FlAcjP','python3','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a'];a0_0x5a24=function(){return _0x370b90;};return a0_0x5a24();}import{pipeline}from'stream/promises';const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x53d014['dirname'](__filename),SCANNER_DIR=a0_0x53d014[a0_0x4724f5(0x18b)](__dirname,'..',a0_0x4724f5(0x1a0),a0_0x4724f5(0x192)),SEMGREP_VERSION='v1.55.0';console[a0_0x4724f5(0x193)]('═══════════════════════════════════════════════════════════'),console['log'](a0_0x4724f5(0x198)),console[a0_0x4724f5(0x193)](a0_0x4724f5(0x182));async function installScanners(){const _0x5b3cb0=a0_0x4724f5;await a0_0x25fb47[_0x5b3cb0(0x1af)]['mkdir'](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console[_0x5b3cb0(0x193)](_0x5b3cb0(0x194)),console[_0x5b3cb0(0x193)](_0x5b3cb0(0x17d)),console[_0x5b3cb0(0x193)](_0x5b3cb0(0x182));}async function checkESLintSecurity(){const _0x455171=a0_0x4724f5;console[_0x455171(0x193)](_0x455171(0x1ab));try{await import('eslint-plugin-security'),console[_0x455171(0x193)]('\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a');}catch(_0x1cd183){console[_0x455171(0x193)](_0x455171(0x180)),console[_0x455171(0x193)]('\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a');}}async function installSemgrep(){const _0x284b1c=a0_0x4724f5;console[_0x284b1c(0x193)](_0x284b1c(0x1a2));const _0xefaac2=process[_0x284b1c(0x168)],_0x53d29c=process[_0x284b1c(0x170)];try{const _0x5e59cf=await execAsync(_0x284b1c(0x183),{'timeout':0x1388});console[_0x284b1c(0x193)](_0x284b1c(0x1b1)+_0x5e59cf['stdout'][_0x284b1c(0x197)]()),console['log'](_0x284b1c(0x1aa));return;}catch(_0x459fd0){console[_0x284b1c(0x193)]('\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...');}const _0x1ec2aa=getSemgrepBinaryInfo(_0xefaac2,_0x53d29c);if(!_0x1ec2aa){console[_0x284b1c(0x193)](_0x284b1c(0x19f)+_0xefaac2+'-'+_0x53d29c),console[_0x284b1c(0x193)]('\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a');return;}try{const _0x592f8f=a0_0x53d014[_0x284b1c(0x18b)](SCANNER_DIR,'semgrep');console[_0x284b1c(0x193)]('\x20\x20\x20Downloading\x20from\x20'+_0x1ec2aa[_0x284b1c(0x18a)]+_0x284b1c(0x16e)),await downloadFile(_0x1ec2aa[_0x284b1c(0x18a)],_0x592f8f),await a0_0x25fb47[_0x284b1c(0x1af)]['chmod'](_0x592f8f,0x1ed),console['log'](_0x284b1c(0x16b)),console[_0x284b1c(0x193)](_0x284b1c(0x177)+_0x592f8f+'\x0a'),console[_0x284b1c(0x193)](_0x284b1c(0x195)),console['log'](_0x284b1c(0x1ae));}catch(_0xb23e4a){console[_0x284b1c(0x193)](_0x284b1c(0x1ac)+_0xb23e4a['message']),console[_0x284b1c(0x193)](_0x284b1c(0x188));}}function getSemgrepBinaryInfo(_0x55e474,_0x2ec0a7){return null;}async function installPythonScanners(){const _0x45c7f7=a0_0x4724f5;console[_0x45c7f7(0x193)](_0x45c7f7(0x176));let _0x286130=null;try{await execAsync(_0x45c7f7(0x16c),{'timeout':0x1388}),_0x286130=_0x45c7f7(0x17a);}catch(_0x34141b){try{await execAsync(_0x45c7f7(0x174),{'timeout':0x1388}),_0x286130=_0x45c7f7(0x18f);}catch(_0xc9de00){console[_0x45c7f7(0x193)](_0x45c7f7(0x187)),console['log'](_0x45c7f7(0x184)),console[_0x45c7f7(0x193)](_0x45c7f7(0x17b));return;}}console['log'](_0x45c7f7(0x1ad)+_0x286130),await installViaPip('semgrep',_0x286130),await installViaPip(_0x45c7f7(0x17e),_0x286130),await installViaPip(_0x45c7f7(0x16f),_0x286130),await installViaPip(_0x45c7f7(0x19a),_0x286130),await installViaPip(_0x45c7f7(0x169),_0x286130),console[_0x45c7f7(0x193)]('');}async function installViaPip(_0x3eeebf,_0xf604bc){const _0x2f19ae=a0_0x4724f5;try{const _0x2dd31c=await execAsync(_0xf604bc+_0x2f19ae(0x1b2)+_0x3eeebf,{'timeout':0x1388});return console[_0x2f19ae(0x193)](_0x2f19ae(0x172)+_0x3eeebf+_0x2f19ae(0x18d)),!![];}catch(_0x1288d6){console['log'](_0x2f19ae(0x18c)+_0x3eeebf+_0x2f19ae(0x16e));try{return await execAsync(_0xf604bc+_0x2f19ae(0x189)+_0x3eeebf,{'timeout':0xea60}),console['log'](_0x2f19ae(0x172)+_0x3eeebf+_0x2f19ae(0x1a5)),!![];}catch(_0x39ccec){return console[_0x2f19ae(0x193)](_0x2f19ae(0x196)+_0x3eeebf+':\x20'+_0x39ccec['message']),console['log'](_0x2f19ae(0x173)+_0x3eeebf),![];}}}async function downloadFile(_0x2690a9,_0x47bebe){return new Promise((_0x18a19b,_0x3e1d45)=>{const _0x3d2cf9=a0_0x16c2,_0x166725=_0x2690a9[_0x3d2cf9(0x19b)](_0x3d2cf9(0x18e))?a0_0x5b5cbf:a0_0x509b58;_0x166725['get'](_0x2690a9,_0x448cda=>{const _0x2e7a64=_0x3d2cf9;if(_0x448cda[_0x2e7a64(0x190)]===0x12e||_0x448cda[_0x2e7a64(0x190)]===0x12d){downloadFile(_0x448cda[_0x2e7a64(0x19c)][_0x2e7a64(0x1a1)],_0x47bebe)[_0x2e7a64(0x185)](_0x18a19b)[_0x2e7a64(0x16d)](_0x3e1d45);return;}if(_0x448cda[_0x2e7a64(0x190)]!==0xc8){_0x3e1d45(new Error('Failed\x20to\x20download:\x20HTTP\x20'+_0x448cda[_0x2e7a64(0x190)]));return;}const _0x1d130b=createWriteStream(_0x47bebe);_0x448cda[_0x2e7a64(0x1a6)](_0x1d130b),_0x1d130b['on']('finish',()=>{const _0x131ea5=_0x2e7a64;_0x1d130b[_0x131ea5(0x191)](),_0x18a19b();}),_0x1d130b['on']('error',_0x42a55f=>{const _0xe7309b=_0x2e7a64;a0_0x25fb47[_0xe7309b(0x1a9)](_0x47bebe,()=>{}),_0x3e1d45(_0x42a55f);});})['on'](_0x3d2cf9(0x17c),_0x3e1d45);});}installScanners()['catch'](_0x5c38b1=>{const _0x37c5b2=a0_0x4724f5;console['error']('❌\x20Installation\x20failed:',_0x5c38b1[_0x37c5b2(0x175)]),console[_0x37c5b2(0x17c)](_0x37c5b2(0x1b0)),console['error'](_0x37c5b2(0x186)),console['error'](_0x37c5b2(0x1a7)),process[_0x37c5b2(0x199)](0x0);});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
const a0_0x91cba5=a0_0x46d0;(function(_0xbac233,_0x955679){const _0x2d9e69=a0_0x46d0,_0x2ec92b=_0xbac233();while(!![]){try{const _0x372fb5=parseInt(_0x2d9e69(0x16b))/0x1+parseInt(_0x2d9e69(0x159))/0x2+-parseInt(_0x2d9e69(0x149))/0x3+-parseInt(_0x2d9e69(0x152))/0x4*(-parseInt(_0x2d9e69(0x143))/0x5)+-parseInt(_0x2d9e69(0x14b))/0x6+-parseInt(_0x2d9e69(0x14e))/0x7+parseInt(_0x2d9e69(0x13c))/0x8;if(_0x372fb5===_0x955679)break;else _0x2ec92b['push'](_0x2ec92b['shift']());}catch(_0x4815bc){_0x2ec92b['push'](_0x2ec92b['shift']());}}}(a0_0x5dac,0xb9e3c));function a0_0x46d0(_0xf16503,_0x4a31a8){_0xf16503=_0xf16503-0x136;const _0x5dac74=a0_0x5dac();let _0x46d01b=_0x5dac74[_0xf16503];if(a0_0x46d0['OuTxvu']===undefined){var _0x4599c7=function(_0x5e7cdc){const _0x1c1c34='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xabd835='',_0x293bc4='';for(let _0x57b06c=0x0,_0x46b0cb,_0x9d41f5,_0x3bdd77=0x0;_0x9d41f5=_0x5e7cdc['charAt'](_0x3bdd77++);~_0x9d41f5&&(_0x46b0cb=_0x57b06c%0x4?_0x46b0cb*0x40+_0x9d41f5:_0x9d41f5,_0x57b06c++%0x4)?_0xabd835+=String['fromCharCode'](0xff&_0x46b0cb>>(-0x2*_0x57b06c&0x6)):0x0){_0x9d41f5=_0x1c1c34['indexOf'](_0x9d41f5);}for(let _0x2d415d=0x0,_0x6301e4=_0xabd835['length'];_0x2d415d<_0x6301e4;_0x2d415d++){_0x293bc4+='%'+('00'+_0xabd835['charCodeAt'](_0x2d415d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x293bc4);};a0_0x46d0['uJwEKj']=_0x4599c7,a0_0x46d0['DMsbQh']={},a0_0x46d0['OuTxvu']=!![];}const _0x7606f2=_0x5dac74[0x0],_0xfeeb80=_0xf16503+_0x7606f2,_0x1b1a92=a0_0x46d0['DMsbQh'][_0xfeeb80];return!_0x1b1a92?(_0x46d01b=a0_0x46d0['uJwEKj'](_0x46d01b),a0_0x46d0['DMsbQh'][_0xfeeb80]=_0x46d01b):_0x46d01b=_0x1b1a92,_0x46d01b;}import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0xabd835=null){const _0x41d98f=a0_0x46d0;this[_0x41d98f(0x141)]=_0xabd835,this['stylelint']=null,this['postcss']=null,this[_0x41d98f(0x139)]=null,this['postcssLess']=null;}async['analyze'](_0x293bc4,_0x57b06c,_0x46b0cb={}){const _0xae6725=a0_0x46d0;try{const _0x9d41f5=[],_0x3bdd77=this[_0xae6725(0x147)](_0x293bc4),_0x2d415d=await this[_0xae6725(0x15f)](_0x293bc4,_0x57b06c,_0x3bdd77);_0x9d41f5['push'](..._0x2d415d);if(_0x2d415d['length']===0x0){const _0x6301e4=await this[_0xae6725(0x15c)](_0x293bc4,_0x57b06c,_0x3bdd77);_0x9d41f5['push'](..._0x6301e4);}return this[_0xae6725(0x141)]?.['debug']('CSS\x20analysis\x20completed',{'file':_0x293bc4,'language':_0x3bdd77,'totalDiagnostics':_0x9d41f5['length'],'errors':_0x9d41f5['filter'](_0x1f4caf=>_0x1f4caf[_0xae6725(0x13d)]===STATIC_ANALYSIS['SEVERITY'][_0xae6725(0x165)])[_0xae6725(0x13e)],'warnings':_0x9d41f5['filter'](_0x2c1731=>_0x2c1731[_0xae6725(0x13d)]===STATIC_ANALYSIS[_0xae6725(0x169)][_0xae6725(0x14f)])[_0xae6725(0x13e)]}),_0x9d41f5;}catch(_0x5772fc){return this['logger']?.['error']('CSS\x20analysis\x20failed',{'file':_0x293bc4,'error':_0x5772fc['message']}),[];}}async[a0_0x91cba5(0x15f)](_0x4a9b37,_0x3c1d83,_0x321cc0){const _0x389c14=a0_0x91cba5,_0x6648f6=[];try{if(!this[_0x389c14(0x148)]){const _0x24815a=await import('postcss');this[_0x389c14(0x148)]=_0x24815a['default'];}let _0x3e8261=null;if(_0x321cc0==='scss'){if(!this[_0x389c14(0x139)]){const _0x508268=await import('postcss-scss');this[_0x389c14(0x139)]=_0x508268['default'];}_0x3e8261=this['postcssScss'];}else{if(_0x321cc0==='less'){if(!this['postcssLess']){const _0x4cbe97=await import(_0x389c14(0x16d));this[_0x389c14(0x15d)]=_0x4cbe97[_0x389c14(0x163)];}_0x3e8261=this[_0x389c14(0x15d)];}}const _0x141c0e=this[_0x389c14(0x148)]()['process'](_0x3c1d83,{'from':_0x4a9b37,'syntax':_0x3e8261}),_0x4d8478=_0x141c0e['root'];this['logger']?.['debug']('PostCSS\x20syntax\x20check\x20passed',{'file':_0x4a9b37});}catch(_0x365bf3){const _0x571580=this[_0x389c14(0x138)](_0x365bf3,_0x4a9b37);_0x571580&&_0x6648f6[_0x389c14(0x146)](_0x571580);}return _0x6648f6;}async['lintStyles'](_0x13aeac,_0xaca8de,_0x2e64f9){const _0x12bea3=a0_0x91cba5,_0x564811=[];try{if(!this['stylelint']){const _0xf728bd=await import('stylelint');this[_0x12bea3(0x16f)]=_0xf728bd['default'];}const _0x521eff={'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':[_0x12bea3(0x144),_0x12bea3(0x160)]}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x2e64f9==='scss'?[!![],{'ignoreAtRules':['mixin','include',_0x12bea3(0x175),'if',_0x12bea3(0x142),_0x12bea3(0x166),'each','while',_0x12bea3(0x153),_0x12bea3(0x151),_0x12bea3(0x154),'use','forward']}]:_0x2e64f9===_0x12bea3(0x155)?[!![],{'ignoreAtRules':['plugin']}]:!![],'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':'double','selector-type-case':_0x12bea3(0x13a)},'customSyntax':_0x2e64f9===_0x12bea3(0x156)?_0x12bea3(0x150):_0x2e64f9===_0x12bea3(0x155)?'postcss-less':undefined},_0xe02625=await this[_0x12bea3(0x16f)]['lint']({'code':_0xaca8de,'codeFilename':_0x13aeac,'config':_0x521eff});if(_0xe02625[_0x12bea3(0x172)]&&_0xe02625['results'][_0x12bea3(0x13e)]>0x0){const _0x46bb12=_0xe02625['results'][0x0];if(_0x46bb12['warnings'])for(const _0x571aca of _0x46bb12['warnings']){_0x564811['push']({'file':_0x13aeac,'line':_0x571aca['line']||0x1,'column':_0x571aca[_0x12bea3(0x16e)]||0x1,'severity':_0x571aca['severity']===_0x12bea3(0x157)?STATIC_ANALYSIS[_0x12bea3(0x169)][_0x12bea3(0x165)]:STATIC_ANALYSIS['SEVERITY'][_0x12bea3(0x14f)],'rule':_0x571aca[_0x12bea3(0x161)]||'unknown','message':_0x571aca['text'],'category':this['categorizeStylelintRule'](_0x571aca[_0x12bea3(0x161)]),'fixable':![],'source':'stylelint'});}}}catch(_0xfff92d){this['logger']?.[_0x12bea3(0x16c)](_0x12bea3(0x14c),{'file':_0x13aeac,'error':_0xfff92d['message']});}return _0x564811;}[a0_0x91cba5(0x138)](_0x1627c7,_0x3ab484){const _0x37d701=a0_0x91cba5;return{'file':_0x3ab484,'line':_0x1627c7[_0x37d701(0x136)]||0x1,'column':_0x1627c7[_0x37d701(0x16e)]||0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x37d701(0x165)],'rule':_0x1627c7[_0x37d701(0x15b)]||_0x37d701(0x158),'message':_0x1627c7[_0x37d701(0x167)]||_0x1627c7['message'],'category':STATIC_ANALYSIS['CATEGORY'][_0x37d701(0x15a)],'fixable':![],'source':_0x37d701(0x148),'code':_0x1627c7[_0x37d701(0x162)]||undefined};}[a0_0x91cba5(0x16a)](_0xdb285c){const _0x40565a=a0_0x91cba5;if(!_0xdb285c)return STATIC_ANALYSIS['CATEGORY']['STYLE'];const _0x18a309=_0xdb285c[_0x40565a(0x140)]();if(_0x18a309[_0x40565a(0x14a)]('no-invalid')||_0x18a309['includes']('no-unknown')||_0x18a309['includes'](_0x40565a(0x171))||_0x18a309[_0x40565a(0x14a)]('syntax'))return STATIC_ANALYSIS['CATEGORY'][_0x40565a(0x15a)];if(_0x18a309['includes'](_0x40565a(0x145))||_0x18a309[_0x40565a(0x14a)]('optimize'))return STATIC_ANALYSIS[_0x40565a(0x170)][_0x40565a(0x137)];if(_0x18a309[_0x40565a(0x14a)](_0x40565a(0x13f))||_0x18a309[_0x40565a(0x14a)]('recommended'))return STATIC_ANALYSIS['CATEGORY']['BEST_PRACTICE'];return STATIC_ANALYSIS['CATEGORY'][_0x40565a(0x164)];}[a0_0x91cba5(0x147)](_0x261930){const _0x2dc1e0=a0_0x91cba5,_0x2df17f=_0x261930[_0x2dc1e0(0x140)]();if(_0x2df17f[_0x2dc1e0(0x168)]('.scss')||_0x2df17f['endsWith'](_0x2dc1e0(0x173)))return _0x2dc1e0(0x156);if(_0x2df17f[_0x2dc1e0(0x168)]('.less'))return _0x2dc1e0(0x155);return'css';}[a0_0x91cba5(0x174)](){const _0x75e892=a0_0x91cba5;return[_0x75e892(0x14d),'.scss','.sass',_0x75e892(0x15e)];}[a0_0x91cba5(0x13b)](){return![];}}function a0_0x5dac(){const _0xf25f57=['Cg9ZDgnZCY1SzxnZ','y29SDw1U','C3r5BgvSAw50','q0furuDpuLK','BM8Tzw1WDhK','CMvZDwX0CW','lNnHC3m','z2v0u3vWCg9YDgvKrxH0zw5ZAw9UCW','zxH0zw5K','BgLUzq','uevsrK9stufoq0u','zM9YBwf0ug9ZDentu0vYCM9Y','Cg9ZDgnZC1nJC3m','Bg93zxi','C3vWCg9YDhnbDxrVrML4','mteWodqWndHwveLJyMG','C2v2zxjPDhK','BgvUz3rO','yMvZDc1WCMfJDgLJzq','Dg9mB3DLCKnHC2u','Bg9Nz2vY','zwXZzq','mtm3nJvtvuXrELa','l15JDxn0B20TlW','CgvYzM9YBwfUy2u','ChvZAa','zgv0zwn0tgfUz3vHz2u','Cg9ZDgnZCW','ndiZmZG2mw5XEg1cwa','Aw5JBhvKzxm','mZm4nJa4ofvbzuTNvW','u3r5BgvSAw50igfUywX5C2LZigzHAwXLza','lMnZCW','mtK3nJG0mMLmvg1lEG','v0fstKLorW','Cg9ZDgnZCY1Zy3nZ','CMv0DxjU','mtG2mhbLtvPmDa','zNvUy3rPB24','y29UDgvUDa','BgvZCW','C2nZCW','zxjYB3i','q3nZu3LUDgf4rxjYB3i','mJGYodK2wvr5wwPU','u1Lovefy','BMfTzq','BgLUDfn0EwXLCW','Cg9ZDgnZC0XLC3m','lMXLC3m','y2HLy2TtEw50yxG','BMCTzgvLCa','CNvSzq','C291CMnL','zgvMyxvSDa','u1rzteu','rvjst1i','zM9Y','CMvHC29U','zw5KC1DPDgG','u0vwrvjjvfK','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','mJeYmZq2Cu9xD2Di','D2fYBG'];a0_0x5dac=function(){return _0xf25f57;};return a0_0x5dac();}export default CSSAnalyzer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a0_0x139174=a0_0x4c0b;(function(_0x5f1c09,_0xb22bfa){const _0xa4c00=a0_0x4c0b,_0x1589b2=_0x5f1c09();while(!![]){try{const _0x11b80e=-parseInt(_0xa4c00(0xa5))/0x1*(parseInt(_0xa4c00(0xc8))/0x2)+parseInt(_0xa4c00(0x117))/0x3+parseInt(_0xa4c00(0xb1))/0x4+parseInt(_0xa4c00(0xa6))/0x5*(parseInt(_0xa4c00(0x10c))/0x6)+parseInt(_0xa4c00(0xdf))/0x7*(-parseInt(_0xa4c00(0xed))/0x8)+parseInt(_0xa4c00(0xaf))/0x9+-parseInt(_0xa4c00(0x104))/0xa*(-parseInt(_0xa4c00(0x10e))/0xb);if(_0x11b80e===_0xb22bfa)break;else _0x1589b2['push'](_0x1589b2['shift']());}catch(_0x584cb9){_0x1589b2['push'](_0x1589b2['shift']());}}}(a0_0x2125,0x47502));import{exec}from'child_process';import{promisify}from'util';function a0_0x4c0b(_0x3e4144,_0x1f8f61){_0x3e4144=_0x3e4144-0xa1;const _0x212586=a0_0x2125();let _0x4c0bbb=_0x212586[_0x3e4144];if(a0_0x4c0b['IAtogF']===undefined){var _0x25f521=function(_0x2913f3){const _0x14fafe='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x540e72='',_0x11a307='';for(let _0x5df910=0x0,_0x543086,_0x5747a7,_0xad5b6c=0x0;_0x5747a7=_0x2913f3['charAt'](_0xad5b6c++);~_0x5747a7&&(_0x543086=_0x5df910%0x4?_0x543086*0x40+_0x5747a7:_0x5747a7,_0x5df910++%0x4)?_0x540e72+=String['fromCharCode'](0xff&_0x543086>>(-0x2*_0x5df910&0x6)):0x0){_0x5747a7=_0x14fafe['indexOf'](_0x5747a7);}for(let _0x496448=0x0,_0x4a511c=_0x540e72['length'];_0x496448<_0x4a511c;_0x496448++){_0x11a307+='%'+('00'+_0x540e72['charCodeAt'](_0x496448)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x11a307);};a0_0x4c0b['bJyoAD']=_0x25f521,a0_0x4c0b['KRtixn']={},a0_0x4c0b['IAtogF']=!![];}const _0x489ee9=_0x212586[0x0],_0x9cda41=_0x3e4144+_0x489ee9,_0x42f87d=a0_0x4c0b['KRtixn'][_0x9cda41];return!_0x42f87d?(_0x4c0bbb=a0_0x4c0b['bJyoAD'](_0x4c0bbb),a0_0x4c0b['KRtixn'][_0x9cda41]=_0x4c0bbb):_0x4c0bbb=_0x42f87d,_0x4c0bbb;}import a0_0x540e72 from'path';function a0_0x2125(){const _0x45f04e=['DMfSAwrHDgvzqu1m','Aw5ZDgfUy2vqyxrO','ANnVBI1Zy2HLBwe','CgfYC2viywrVBgLUDfjLC3vSDhm','zMfPBgvKx2nOzwnRCW','odaZodrUufrTt0q','yMvZDc1WCMfJDgLJzq','z2v0vMfSAwrHDg9Yu3rHDhvZ','BwvKAxvT','zw52lxzHBgLKyxrVCG','zMLSzv9SAw5Lx3jHBMDL','DMfSAwrHDgLVBG','DMfSAwrHDgvuC0nVBMzPzW','DhnJB25MAwCTDMfSAwrHDg9Y','Dw5RBM93BG','qvbjigTLEq','rgLZywjSAw5Nig5Vsw1WBgLJAxrbBNKGCMvKDwnLCYb0ExbLihnHzMv0Eq','lMPZB24','zMLSDgvY','zw5KC1DPDgG','zMLSzq','D2fYBG','qvDtignYzwrLBNrPywXZ','EwfTBgXPBNq','DMfSAwrHDgvxAxrOq2HLy2TVDG','y29TCgLSzq','BwLZC2LUz1bYB3bLCNr5','BM9YBwfSAxPLuMvZDwX0CW','mtbTzwzdvxG','rvjst1i','DgvYCMfMB3jT','u0vwrvjjvfK','DhjPBq','AxnbCNjHEq','yxzHAwXHyMXLu2nHBM5LCNm','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','mtaXmZi4zwj1CeXP','BMfTzq','mtq0nZmWm29rwurQAq','zg9JA2vYlwnVBxbVC2u','CgfYC2vzyw1SBgLUDfjLC3vSDhm','zg9JA2vYzMLSzq','CgfJA2fNzs5QC29U','DxrMltG','CMvZDwX0CW','C3rYAw5N','AgfKB2XPBNqGls1MB3jTyxqGANnVBIaI','mtyWntaXoeToEK1pEG','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','BwvZC2fNzq','C3rYAwn0lw1Vzgu','Bw9KDwXL','AgfKB2XPBNqGzgv0zwn0zwq','EwfTBgXPBNqGBM90igf2ywLSywjSzq','zgLYBMfTzq','zgvIDwC','B2jQzwn0','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','zxjYB3i','CgLWigLUC3rHBgWGEwfTBgXPBNq','oda2nJj3zfDeBxa','ndvdzuvIy3i','AgLNAa','C3bSAxq','Bgv2zwW','y2HLy2TVDIaTlxzLCNnPB24','q1jjveLdquW','y2HLy2TFBMfTzq','y2HHBMDLBwu','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','mtaXmJG2CfHtCNn1','y2f0zwDVCNK','mJyXnZi0weLbBNbA','A3vIzxjUzxrLCW','y29TCgLSzxjpChrPB25Z','ywP2ig5VDcbHDMfPBgfIBgu','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','CgfYC2vdAgvJA292uMvZDwX0CW','Bg9Nz2vY','xIG/oKbBys16mc05lx5Dw2eTEJaTos0Ux35DkI8Pp1THlxOWltKTFL1Bys16mc05ls5FFL0Qja','BgLUzq','C3LUDgf4','y2HLy2TVDIaTzIaI','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','iIaTlwzYyw1LD29YAYa','z3vPzgvSAw5L','BNbTigLUC3rHBgWGywP2igfQDI1MB3jTyxrZ','DMfSAwrHDgveB2nRzxjMAwXL','y2HLy2TVDG','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','DMfSAwrHDgu','lMvUDG','CMvMzxjLBMnLCW','ANnVBLnJAgvTyq','v0fstKLorW','mLLAyKXtuq','zg9JA2vYx2nVBxbVC2u','DMfSAwrHDg9Y','EwfTBa','Aw5JBhvKzxm','DMfSAwrHDgvfBNzgAwXL','AZHZ','y2HLy2TFy2XHC3m','CgfZC3DVCMq','su5gtW','CMvTzwrPyxrPB24','BM9jBxbSAwnPDefUEq','ANnVBG','BwfWwwfTBgXPBNrtzxzLCML0Eq','CgfYC2u','ChvZAa','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','y29SDw1U','zxH0BMfTzq','ANnVBI1WyxjZzq','BM8TAw1WBgLJAxqTyw55','ywP2','CMvHzezPBgu','mZy0BLjJvhnT','DMvYC2LVBG','y2HLy2TVDIb2ywXPzgf0Aw9UigzHAwXLza','C3rKB3v0','y29Kzq','AgfKB2XPBNq','DhnJB25MAwCUANnVBIb2ywXPzgf0Aw9UigzHAwXLza','C2nHBM5LCKnHy2HL','zw52'];a0_0x2125=function(){return _0x45f04e;};return a0_0x2125();}import a0_0x11a307 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x5df910=null){const _0x3331d1=a0_0x4c0b;this['logger']=_0x5df910,this[_0x3331d1(0x10a)]=null,this[_0x3331d1(0xe6)]=new Map();}async['detectAvailableValidators'](){const _0xf621e6=a0_0x4c0b;if(this['availableScanners']!==null)return this['availableScanners'];const _0x543086={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0xf621e6(0xaa),{'timeout':0x1388}),_0x543086[_0xf621e6(0xc1)]=!![],this[_0xf621e6(0xb7)]?.['debug']('checkov\x20detected');}catch(_0x5747a7){this['logger']?.['debug']('checkov\x20not\x20available',{'error':_0x5747a7['message']});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x543086[_0xf621e6(0xe4)]=!![],this['logger']?.[_0xf621e6(0x11f)](_0xf621e6(0x11c));}catch(_0xad5b6c){this[_0xf621e6(0xb7)]?.[_0xf621e6(0x11f)]('hadolint\x20not\x20available',{'error':_0xad5b6c[_0xf621e6(0x119)]});}try{await execAsync('yamllint\x20--version',{'timeout':0x1388}),_0x543086[_0xf621e6(0xff)]=!![],this[_0xf621e6(0xb7)]?.[_0xf621e6(0x11f)]('yamllint\x20detected');}catch(_0x496448){this['logger']?.[_0xf621e6(0x11f)](_0xf621e6(0x11d),{'error':_0x496448[_0xf621e6(0x119)]});}try{await import(_0xf621e6(0xdd)),_0x543086['jsonSchema']=!![],this[_0xf621e6(0xb7)]?.['debug'](_0xf621e6(0x118));}catch(_0x4a511c){this[_0xf621e6(0xb7)]?.[_0xf621e6(0x11f)](_0xf621e6(0xb4),{'error':_0x4a511c['message']});}return this[_0xf621e6(0x10a)]=_0x543086,_0x543086;}async[a0_0x139174(0xc3)](_0x4a1e59,_0x5cf3fe={}){const _0xcb4374=a0_0x139174,_0x3eceb9=[],_0x14d43f=await this['detectAvailableValidators'](),_0xf47cd8=this['detectFileType'](_0x4a1e59);this[_0xcb4374(0xb7)]?.['debug']('Validating\x20config\x20file',{'filePath':_0x4a1e59,'fileType':_0xf47cd8});switch(_0xf47cd8){case _0xcb4374(0x111):if(_0x14d43f[_0xcb4374(0xe4)]){const _0x8b6624=await this[_0xcb4374(0xc0)](_0x4a1e59,_0x5cf3fe);_0x3eceb9['push'](..._0x8b6624);}if(_0x14d43f['checkov']){const _0x295a6c=await this['validateWithCheckov'](_0x4a1e59,'dockerfile',_0x5cf3fe);_0x3eceb9[_0xcb4374(0xd7)](..._0x295a6c);}break;case _0xcb4374(0x10f):if(_0x14d43f[_0xcb4374(0xff)]){const _0x370c28=await this[_0xcb4374(0xe8)](_0x4a1e59,_0x5cf3fe);_0x3eceb9['push'](..._0x370c28);}if(_0x14d43f['checkov']){const _0x165e83=await this[_0xcb4374(0x100)](_0x4a1e59,_0xcb4374(0xc9),_0x5cf3fe);_0x3eceb9[_0xcb4374(0xd7)](..._0x165e83);}break;case'kubernetes':if(_0x14d43f[_0xcb4374(0xff)]){const _0x47e036=await this[_0xcb4374(0xe8)](_0x4a1e59,_0x5cf3fe);_0x3eceb9[_0xcb4374(0xd7)](..._0x47e036);}if(_0x14d43f[_0xcb4374(0xc1)]){const _0x31fec2=await this['validateWithCheckov'](_0x4a1e59,'kubernetes',_0x5cf3fe);_0x3eceb9['push'](..._0x31fec2);}break;case _0xcb4374(0x106):if(_0x14d43f[_0xcb4374(0xc1)]){const _0x571777=await this['validateWithCheckov'](_0x4a1e59,'terraform',_0x5cf3fe);_0x3eceb9['push'](..._0x571777);}break;case'package.json':if(_0x14d43f[_0xcb4374(0xc6)]){const _0x1cf00b=await this['validatePackageJson'](_0x4a1e59,_0x5cf3fe);_0x3eceb9[_0xcb4374(0xd7)](..._0x1cf00b);}break;case'tsconfig.json':if(_0x14d43f[_0xcb4374(0xc6)]){const _0x3ebc98=await this['validateTsConfig'](_0x4a1e59,_0x5cf3fe);_0x3eceb9['push'](..._0x3ebc98);}break;case'github-actions':if(_0x14d43f[_0xcb4374(0xff)]){const _0x5d0137=await this[_0xcb4374(0xe8)](_0x4a1e59,_0x5cf3fe);_0x3eceb9['push'](..._0x5d0137);}break;case _0xcb4374(0xe7):const _0x22eede=await this[_0xcb4374(0xcd)](_0x4a1e59,_0x5cf3fe);_0x3eceb9[_0xcb4374(0xd7)](..._0x22eede);break;case _0xcb4374(0xcb):if(_0x14d43f['yamllint']){const _0x410ee8=await this['validateYAML'](_0x4a1e59,_0x5cf3fe);_0x3eceb9[_0xcb4374(0xd7)](..._0x410ee8);}break;default:this[_0xcb4374(0xb7)]?.[_0xcb4374(0xfd)]('Unknown\x20config\x20file\x20type',{'filePath':_0x4a1e59,'fileType':_0xf47cd8});return[];}return this[_0xcb4374(0x103)](_0x3eceb9);}async[a0_0x139174(0xc0)](_0x3dadb1,_0x16dea7={}){const _0x35019b=a0_0x139174;try{const _0x17b6a6=await execAsync(_0x35019b(0x116)+_0x3dadb1+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0xe8ffb1=JSON[_0x35019b(0xd6)](_0x17b6a6[_0x35019b(0xe2)]);return this[_0x35019b(0xeb)](_0xe8ffb1,_0x3dadb1);}catch(_0x522163){if(_0x522163['stdout'])try{const _0x29913e=JSON[_0x35019b(0xd6)](_0x522163[_0x35019b(0xe2)]);return this['parseHadolintResults'](_0x29913e,_0x3dadb1);}catch(_0x50a703){this[_0x35019b(0xb7)]?.['error']('Failed\x20to\x20parse\x20hadolint\x20output',{'error':_0x50a703[_0x35019b(0x119)]});}return this[_0x35019b(0xb7)]?.['error']('hadolint\x20validation\x20failed',{'error':_0x522163['message']}),[];}}[a0_0x139174(0xeb)](_0x3324a2,_0xf06f28){const _0x4ea50e=a0_0x139174,_0x6e14b=[];if(Array[_0x4ea50e(0x109)](_0x3324a2))for(const _0x1b8539 of _0x3324a2){_0x6e14b['push']({'file':_0xf06f28,'line':_0x1b8539['line']||0x1,'column':_0x1b8539['column']||0x1,'severity':this['mapHadolintSeverity'](_0x1b8539[_0x4ea50e(0xa9)]),'rule':_0x1b8539[_0x4ea50e(0xe3)],'message':_0x1b8539[_0x4ea50e(0x119)],'category':'dockerfile','validator':'hadolint'});}return _0x6e14b;}async[a0_0x139174(0xe8)](_0x4baf84,_0x214011={}){const _0x181b2a=a0_0x139174;try{const _0x2f9df1=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x4baf84+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this['parseYamllintResults'](_0x2f9df1[_0x181b2a(0xe2)],_0x4baf84);}catch(_0x2c1dfe){if(_0x2c1dfe[_0x181b2a(0xe2)])return this[_0x181b2a(0x110)](_0x2c1dfe['stdout'],_0x4baf84);return this['logger']?.['error']('yamllint\x20validation\x20failed',{'error':_0x2c1dfe['message']}),[];}}[a0_0x139174(0x110)](_0x231d67,_0x26cf3e){const _0x248696=a0_0x139174,_0x1594dc=[],_0x556488=_0x231d67['split']('\x0a')[_0x248696(0xfa)](_0x6c67fb=>_0x6c67fb[_0x248696(0x108)]());for(const _0x330a60 of _0x556488){const _0x2aff0f=_0x330a60['match'](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x2aff0f){const [,_0x4bee1e,_0x5c2d76,_0x58ea7d,_0xcfa77b,_0xb7e7d3,_0x488e86]=_0x2aff0f;_0x1594dc['push']({'file':_0x26cf3e,'line':parseInt(_0x5c2d76,0xa),'column':parseInt(_0x58ea7d,0xa),'severity':this[_0x248696(0xd5)](_0xcfa77b),'rule':_0x488e86,'message':_0xb7e7d3,'category':_0x248696(0xcb),'validator':'yamllint'});}}return _0x1594dc;}async['validateWithCheckov'](_0x18d8df,_0x237633,_0x39d821={}){const _0x37ebef=a0_0x139174;try{const _0x4a3a58=await execAsync(_0x37ebef(0xbb)+_0x18d8df+_0x37ebef(0xbd)+_0x237633+'\x20--output\x20json\x20--compact',{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x132980=JSON[_0x37ebef(0xd6)](_0x4a3a58['stdout']);return this[_0x37ebef(0xb6)](_0x132980,_0x18d8df);}catch(_0x177ee8){if(_0x177ee8['stdout'])try{const _0x59fc1c=JSON['parse'](_0x177ee8[_0x37ebef(0xe2)]);return this['parseCheckovResults'](_0x59fc1c,_0x18d8df);}catch(_0x50dc7c){this[_0x37ebef(0xb7)]?.[_0x37ebef(0xa3)](_0x37ebef(0x10b),{'error':_0x50dc7c['message']});}return this[_0x37ebef(0xb7)]?.[_0x37ebef(0xa3)](_0x37ebef(0xe1),{'error':_0x177ee8[_0x37ebef(0x119)]}),[];}}['parseCheckovResults'](_0x9b4ac5,_0x3424c6){const _0xf53fd2=a0_0x139174,_0x5c06bc=[];if(_0x9b4ac5['results']&&_0x9b4ac5[_0xf53fd2(0x114)][_0xf53fd2(0xec)])for(const _0x34267a of _0x9b4ac5[_0xf53fd2(0x114)]['failed_checks']){_0x5c06bc['push']({'file':_0x3424c6,'line':_0x34267a[_0xf53fd2(0xf2)]?_0x34267a[_0xf53fd2(0xf2)][0x0]:0x1,'column':0x1,'severity':this['mapCheckovSeverity'](_0x34267a[_0xf53fd2(0xcf)]),'rule':_0x34267a['check_id'],'message':_0x34267a[_0xf53fd2(0xac)]||_0x34267a['check_id'],'category':'security','validator':_0xf53fd2(0xc1),'remediation':_0x34267a['guideline'],'cwe':_0x34267a['cwe'],'references':_0x34267a['guideline']?[_0x34267a[_0xf53fd2(0xbe)]]:[]});}return _0x5c06bc;}async['validatePackageJson'](_0x666994,_0xe9feca={}){const _0x5e7203=a0_0x139174;try{const _0x55b227=(await import(_0x5e7203(0xdd)))['default'],_0x1788aa=(await import('ajv-formats'))['default'],_0x13bba2=await a0_0x11a307[_0x5e7203(0xde)](_0x666994,'utf-8'),_0x5dd2f6=JSON['parse'](_0x13bba2),_0x1fb457=new _0x55b227({'allErrors':!![],'strict':![]});_0x1788aa(_0x1fb457);const _0x1ca704={'type':_0x5e7203(0xa1),'required':[_0x5e7203(0x10d),_0x5e7203(0xe0)],'properties':{'name':{'type':_0x5e7203(0x115),'pattern':_0x5e7203(0xb8)},'version':{'type':_0x5e7203(0x115)},'description':{'type':_0x5e7203(0x115)},'main':{'type':'string'},'type':{'type':'string','enum':[_0x5e7203(0x11b),'commonjs']},'scripts':{'type':'object'},'dependencies':{'type':_0x5e7203(0xa1)},'devDependencies':{'type':_0x5e7203(0xa1)}},'additionalProperties':!![]},_0x4df503=_0x1fb457[_0x5e7203(0x101)](_0x1ca704),_0x42341d=_0x4df503(_0x5dd2f6);if(!_0x42341d&&_0x4df503['errors'])return _0x4df503['errors']['map'](_0xbdc974=>({'file':_0x666994,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x5e7203(0x107)]['ERROR'],'rule':_0x5e7203(0xea),'message':_0xbdc974[_0x5e7203(0xe9)]?_0xbdc974[_0x5e7203(0xe9)]+'\x20'+_0xbdc974[_0x5e7203(0x119)]:_0x5e7203(0xbc)+_0xbdc974['params'][_0x5e7203(0x102)]+'\x27','category':_0x5e7203(0xf3),'validator':_0x5e7203(0xea)}));return[];}catch(_0x4f80de){return this[_0x5e7203(0xb7)]?.[_0x5e7203(0xa3)]('package.json\x20validation\x20failed',{'error':_0x4f80de[_0x5e7203(0x119)]}),[{'file':_0x666994,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x5e7203(0x107)]['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x4f80de[_0x5e7203(0x119)],'category':_0x5e7203(0xba),'validator':_0x5e7203(0xdb)}];}}async[a0_0x139174(0xf4)](_0x3ce75a,_0x18eba7={}){const _0x2fc977=a0_0x139174;try{const _0x116a72=await a0_0x11a307['readFile'](_0x3ce75a,'utf-8'),_0x6105dd=JSON['parse'](_0x116a72),_0x10b297=[];if(_0x6105dd['compilerOptions']){const _0x4a8883=_0x6105dd[_0x2fc977(0xb3)];!_0x4a8883['strict']&&_0x10b297['push']({'file':_0x3ce75a,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2fc977(0x107)]['WARNING'],'rule':_0x2fc977(0x11a),'message':'Consider\x20enabling\x20\x22strict\x22\x20mode\x20for\x20better\x20type\x20safety','category':_0x2fc977(0xee),'validator':'tsconfig-validator'}),_0x4a8883[_0x2fc977(0xd3)]===![]&&_0x10b297[_0x2fc977(0xd7)]({'file':_0x3ce75a,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2fc977(0x107)]['WARNING'],'rule':_0x2fc977(0xdc),'message':_0x2fc977(0xf8),'category':'best-practice','validator':_0x2fc977(0xf5)});}return _0x10b297;}catch(_0x3223ac){return this[_0x2fc977(0xb7)]?.['error'](_0x2fc977(0xe5),{'error':_0x3223ac['message']}),[{'file':_0x3ce75a,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x3223ac[_0x2fc977(0x119)],'category':'syntax','validator':'json-parse'}];}}async[a0_0x139174(0xcd)](_0x3683e7,_0x23905d={}){const _0x4abb6b=a0_0x139174;try{const _0x41aa08=await a0_0x11a307['readFile'](_0x3683e7,_0x4abb6b(0x113)),_0x567c10=[],_0x2f0d14=_0x41aa08[_0x4abb6b(0xa8)]('\x0a'),_0x2e496e=[{'pattern':/password|passwd|pwd/i,'name':_0x4abb6b(0xd0)},{'pattern':/api[_-]?key/i,'name':_0x4abb6b(0xf7)},{'pattern':/secret/i,'name':'secret'},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':'private\x20key'},{'pattern':/aws[_-]?access/i,'name':_0x4abb6b(0xfe)}];return _0x2f0d14['forEach']((_0x8d4845,_0x1a5023)=>{const _0x52dbd6=_0x4abb6b,_0x572620=_0x8d4845['trim']();if(!_0x572620||_0x572620['startsWith']('#'))return;if(_0x572620[_0x52dbd6(0xcc)]('=')){const [_0x2e30a2,_0x209831]=_0x572620['split']('='),_0x3dfc84=_0x2e30a2['toLowerCase'](),_0x39cdbd=_0x209831?.['trim']()||'',_0x5cee4f=_0x39cdbd&&_0x39cdbd!==''&&!_0x39cdbd['startsWith']('$')&&_0x39cdbd!=='your-key-here'&&_0x39cdbd!==_0x52dbd6(0xad)&&_0x39cdbd['length']>0x5;if(_0x5cee4f)for(const {pattern:_0x5d1dfe,name:_0x4eb37a}of _0x2e496e){if(_0x5d1dfe['test'](_0x3dfc84)){_0x567c10[_0x52dbd6(0xd7)]({'file':_0x3683e7,'line':_0x1a5023+0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x52dbd6(0xab)],'rule':'hardcoded-secret','message':'Potential\x20hardcoded\x20'+_0x4eb37a+'\x20detected\x20in\x20.env\x20file','category':'security','validator':_0x52dbd6(0xf1),'remediation':'Use\x20environment-specific\x20.env\x20files\x20and\x20add\x20.env\x20to\x20.gitignore'});break;}}}}),_0x567c10;}catch(_0x2a7eb4){return this[_0x4abb6b(0xb7)]?.[_0x4abb6b(0xa3)]('.env\x20validation\x20failed',{'error':_0x2a7eb4[_0x4abb6b(0x119)]}),[];}}['detectFileType'](_0x2b8479){const _0x30622a=a0_0x139174,_0x5b195a=a0_0x540e72['basename'](_0x2b8479)['toLowerCase'](),_0x2394ff=a0_0x540e72[_0x30622a(0x11e)](_0x2b8479);if(_0x5b195a===_0x30622a(0x111))return'dockerfile';if(_0x5b195a==='docker-compose.yml'||_0x5b195a==='docker-compose.yaml')return'docker-compose';if(_0x5b195a===_0x30622a(0x112))return _0x30622a(0x112);if(_0x5b195a==='tsconfig.json')return'tsconfig.json';if(_0x5b195a==='.env'||_0x5b195a[_0x30622a(0xfb)](_0x30622a(0xc4)))return'env';if(_0x2394ff[_0x30622a(0xcc)]('.github/workflows'))return'github-actions';if(_0x2394ff['includes'](_0x30622a(0xb2))||_0x2394ff['includes'](_0x30622a(0xce)))return _0x30622a(0xb2);const _0x2f7dc1=a0_0x540e72[_0x30622a(0xda)](_0x2b8479)['toLowerCase']();if(_0x2f7dc1==='.tf'||_0x2f7dc1==='.tfvars')return'terraform';if(_0x2f7dc1==='.yml'||_0x2f7dc1==='.yaml')return'yaml';if(_0x2f7dc1===_0x30622a(0xf9))return _0x30622a(0xd4);return'unknown';}['normalizeResults'](_0x1c0acb){const _0x3b65dc=a0_0x139174;return _0x1c0acb['map'](_0x1eb77a=>({'file':_0x1eb77a[_0x3b65dc(0xfc)],'line':_0x1eb77a[_0x3b65dc(0xb9)]||0x1,'column':_0x1eb77a[_0x3b65dc(0xd9)]||0x1,'severity':_0x1eb77a['severity']||STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x1eb77a['rule']||_0x3b65dc(0xf6),'message':_0x1eb77a['message']||_0x3b65dc(0xae),'category':_0x1eb77a[_0x3b65dc(0xb0)]||_0x3b65dc(0xf3),'validator':_0x1eb77a[_0x3b65dc(0xca)],'cwe':_0x1eb77a['cwe']||null,'remediation':_0x1eb77a[_0x3b65dc(0xd2)]||null,'references':_0x1eb77a[_0x3b65dc(0xc5)]||[]}));}['mapHadolintSeverity'](_0x25636b){const _0x489655=a0_0x139174,_0x599a03={'error':STATIC_ANALYSIS[_0x489655(0x107)]['ERROR'],'warning':STATIC_ANALYSIS['SEVERITY'][_0x489655(0xc7)],'info':STATIC_ANALYSIS[_0x489655(0x107)][_0x489655(0xd1)],'style':STATIC_ANALYSIS[_0x489655(0x107)][_0x489655(0xd1)]};return _0x599a03[_0x25636b?.['toLowerCase']()]||STATIC_ANALYSIS['SEVERITY'][_0x489655(0xc7)];}['mapYamllintSeverity'](_0x412bef){const _0x4f48e7=a0_0x139174,_0x5dbf7d={'error':STATIC_ANALYSIS['SEVERITY'][_0x4f48e7(0x105)],'warning':STATIC_ANALYSIS[_0x4f48e7(0x107)]['WARNING']};return _0x5dbf7d[_0x412bef?.['toLowerCase']()]||STATIC_ANALYSIS[_0x4f48e7(0x107)]['WARNING'];}['mapCheckovSeverity'](_0x55c748){return STATIC_ANALYSIS['SEVERITY']['ERROR'];}async[a0_0x139174(0xef)](){const _0x543270=a0_0x139174,_0x335a65=await this[_0x543270(0xa2)]();return{'validators':_0x335a65,'recommendations':this[_0x543270(0xd8)](_0x335a65)};}[a0_0x139174(0xd8)](_0x34c020){const _0x22281b=a0_0x139174,_0x34acf6=[];return!_0x34c020[_0x22281b(0xc1)]&&_0x34acf6['push']({'validator':'checkov','reason':_0x22281b(0xc2),'install':'pip\x20install\x20checkov','priority':_0x22281b(0xa7)}),!_0x34c020[_0x22281b(0xe4)]&&_0x34acf6['push']({'validator':_0x22281b(0xe4),'reason':_0x22281b(0xb5),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x34c020['yamllint']&&_0x34acf6['push']({'validator':_0x22281b(0xff),'reason':'YAML\x20file\x20validation','install':_0x22281b(0xa4),'priority':'medium'}),!_0x34c020['jsonSchema']&&_0x34acf6['push']({'validator':'ajv\x20(JSON\x20Schema)','reason':'JSON\x20configuration\x20validation','install':_0x22281b(0xbf),'priority':_0x22281b(0xf0)}),_0x34acf6;}}export default ConfigValidator;
|
|
1
|
+
const a0_0x4db7d3=a0_0x402f;(function(_0x13457c,_0x283f75){const _0xc59294=a0_0x402f,_0x26f01f=_0x13457c();while(!![]){try{const _0x267727=-parseInt(_0xc59294(0x129))/0x1*(parseInt(_0xc59294(0xfc))/0x2)+parseInt(_0xc59294(0x113))/0x3*(parseInt(_0xc59294(0x155))/0x4)+-parseInt(_0xc59294(0xf2))/0x5*(parseInt(_0xc59294(0x170))/0x6)+-parseInt(_0xc59294(0x145))/0x7+parseInt(_0xc59294(0x125))/0x8+-parseInt(_0xc59294(0x165))/0x9*(parseInt(_0xc59294(0x120))/0xa)+parseInt(_0xc59294(0x135))/0xb;if(_0x267727===_0x283f75)break;else _0x26f01f['push'](_0x26f01f['shift']());}catch(_0x19c1e8){_0x26f01f['push'](_0x26f01f['shift']());}}}(a0_0x5880,0x371be));import{exec}from'child_process';import{promisify}from'util';function a0_0x5880(){const _0x38b63a=['CMvZDwX0CW','Ew91CI1RzxKTAgvYzq','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','CMvTzwrPyxrPB24','C2nHBM5LCKnHy2HL','ywP2icHku09oifnJAgvTysK','y3DL','AgfKB2XPBNqGBM90igf2ywLSywjSzq','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','zMfPBgvKx2nOzwnRCW','lMDPDgH1yI93B3jRzMXVD3m','DMfSAwrHDgu','zg9JA2vYzMLSzq','y2HLy2TFy2XHC3m','v0fstKLorW','y29TCgLSzq','C2vJDxjPDhK','CgfJA2fNzs5QC29U','y2HLy2TVDIaTzIaI','zgLYBMfTzq','mZn1sgTwAxu','Dg9mB3DLCKnHC2u','Dg9Rzw4','y2HLy2TFBMfTzq','C3rHCNrZv2L0Aa','y29TCgLSzxjpChrPB25Z','AgfKB2XPBNq','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','DhnJB25MAwCUANnVBIb2ywXPzgf0Aw9UigzHAwXLza','BM9jBxbSAwnPDefUEq','AgLNAa','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','AxnbCNjHEq','mJCXnZbVDNv3rvO','EwfTBa','C3rYAwn0lw1Vzgu','y2HLy2TVDG','wufntcbMAwXLihzHBgLKyxrPB24','mJe4nJuWngDozhPnta','B2jQzwn0','D2fYBG','yxzHAwXHyMXLu2nHBM5LCNm','muDtAhLmrG','zgvMyxvSDa','EwfTBgXPBNqGls12zxjZAw9U','zw52','DMfSAwrHDgveB2nRzxjMAwXL','zM9YrwfJAa','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','Aw5JBhvKzxm','EwfTBgXPBNq','C3LUDgf4','lMvUDG','C2vJCMv0','mtmWnZa5mJz2Bhr1rwy','CgfYC2viywrVBgLUDfjLC3vSDhm','DMfSAwrHDg9Y','CMvMzxjLBMnLCW','ChvZAa','BwvKAxvT','lNrM','BMfTzq','EwfTBgXPBNqGlwyGCgfYC2fIBguGiG','igrLDgvJDgvKigLUic5LBNyGzMLSzq','sw52ywXPzcbku09ooIa','lNrMDMfYCW','z2L0AhvIlwfJDgLVBNm','C3rYAw5N','AgfKB2XPBNqGls1MB3jTyxqGANnVBIaI','Dw5RBM93BG','mJeWodC4nvbHqLfXsG','ANnVBLnJAgvTyq','C2v2zxjPDhK','rvjst1i','BwfW','DMfSAwrHDgvuC0nVBMzPzW','Bwf0y2G','ywP2ig5VDcbHDMfPBgfIBgu','zgv0zwn0rMLSzvr5Cgu','CgfYC2vzyw1SBgLUDfjLC3vSDhm','ANnVBI1WyxjZzq','CgfYyw1Z','BM9YBwfSAxPLuMvZDwX0CW','y29SDw1U','DgvYCMfMB3jT','y2HLy2TVDIb2ywXPzgf0Aw9UigzHAwXLza','ndK5odHOvhnVvxK','DMvYC2LVBG','A3vIzxjUzxrLCW','zxjYB3jZ','C3bSAxq','ywP2','zMLSzv9SAw5Lx3jHBMDL','DMfSAwrHDgvzqu1m','CgfZC3DVCMq','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','y2f0zwDVCNK','rgLZywjSAw5Nig5Vsw1WBgLJAxrbBNKGCMvKDwnLCYb0ExbLihnHzMv0Eq','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','DMfSAwrHDgvfBNzgAwXL','CNvSzq','zxH0BMfTzq','odCZq3jzDLno','zg9JA2vYx2nVBxbVC2u','DMfSAwrHDgvxAxrOq2HLy2TVDG','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','y2HLy2TVDIbKzxrLy3rLza','ug90zw50AwfSigHHCMrJB2rLzca','Bg9Nz2vY','q1jjveLdquW','DhjPBq','ANnVBI1Zy2HLBwe','DhnJB25MAwCUANnVBG','nK5Ot2fvuq','u0vwrvjjvfK','zxjYB3i','CgLWigLUC3rHBgWGy2HLy2TVDG','BgLUzq','mtKWmJuYnwzAtfDZEa','y2HLy2TVDIaTlxzLCNnPB24','y2HHBMDLBwu','DxrMltG','BwvZC2fNzq','yMvZDc1WCMfJDgLJzq','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','C3rKB3v0','BwLZC2LUz1bYB3bLCNr5','CgfYC2u','odu2mdiYzg96yuf2','zgvIDwC','rMfPBgvKihrVihbHCNnLigHHzg9SAw50ig91Dhb1Da'];a0_0x5880=function(){return _0x38b63a;};return a0_0x5880();}import a0_0x44226d from'path';import a0_0x394965 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x23b327=null){const _0x9948d5=a0_0x402f;this[_0x9948d5(0x16b)]=_0x23b327,this['availableScanners']=null,this[_0x9948d5(0x103)]=new Map();}async[a0_0x4db7d3(0x15e)](){const _0x14baa5=a0_0x4db7d3;if(this['availableScanners']!==null)return this[_0x14baa5(0x128)];const _0x566f5e={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0x14baa5(0xf3),{'timeout':0x1388}),_0x566f5e['checkov']=!![],this[_0x14baa5(0x16b)]?.['debug'](_0x14baa5(0x169));}catch(_0x209d60){this['logger']?.['debug'](_0x14baa5(0x11a),{'error':_0x209d60['message']});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x566f5e[_0x14baa5(0x119)]=!![],this['logger']?.[_0x14baa5(0xfd)]('hadolint\x20detected');}catch(_0x4e55da){this['logger']?.[_0x14baa5(0xfd)](_0x14baa5(0x106),{'error':_0x4e55da['message']});}try{await execAsync(_0x14baa5(0x12b),{'timeout':0x1388}),_0x566f5e[_0x14baa5(0x131)]=!![],this[_0x14baa5(0x16b)]?.[_0x14baa5(0xfd)]('yamllint\x20detected');}catch(_0x2c549d){this['logger']?.['debug']('yamllint\x20not\x20available',{'error':_0x2c549d[_0x14baa5(0xf6)]});}try{await import(_0x14baa5(0x15a)),_0x566f5e[_0x14baa5(0x146)]=!![],this[_0x14baa5(0x16b)]?.[_0x14baa5(0xfd)](_0x14baa5(0xf8));}catch(_0x36c25e){this['logger']?.[_0x14baa5(0xfd)](_0x14baa5(0x14c),{'error':_0x36c25e[_0x14baa5(0xf6)]});}return this['availableScanners']=_0x566f5e,_0x566f5e;}async[a0_0x4db7d3(0x10a)](_0x2e2545,_0x35c6ff={}){const _0x34366a=a0_0x4db7d3,_0x4c3efd=[],_0x54d529=await this[_0x34366a(0x15e)](),_0x41d323=this[_0x34366a(0x14d)](_0x2e2545);this['logger']?.[_0x34366a(0xfd)]('Validating\x20config\x20file',{'filePath':_0x2e2545,'fileType':_0x41d323});switch(_0x41d323){case _0x34366a(0x10b):if(_0x54d529['hadolint']){const _0x374d98=await this[_0x34366a(0x12d)](_0x2e2545,_0x35c6ff);_0x4c3efd[_0x34366a(0x139)](..._0x374d98);}if(_0x54d529['checkov']){const _0x3f9d38=await this[_0x34366a(0x167)](_0x2e2545,_0x34366a(0x10b),_0x35c6ff);_0x4c3efd['push'](..._0x3f9d38);}break;case'docker-compose':if(_0x54d529['yamllint']){const _0x201ca6=await this['validateYAML'](_0x2e2545,_0x35c6ff);_0x4c3efd['push'](..._0x201ca6);}if(_0x54d529[_0x34366a(0x123)]){const _0x4b2451=await this['validateWithCheckov'](_0x2e2545,_0x34366a(0x166),_0x35c6ff);_0x4c3efd[_0x34366a(0x139)](..._0x4b2451);}break;case _0x34366a(0x157):if(_0x54d529[_0x34366a(0x131)]){const _0x1bd23f=await this['validateYAML'](_0x2e2545,_0x35c6ff);_0x4c3efd['push'](..._0x1bd23f);}if(_0x54d529[_0x34366a(0x123)]){const _0x37a85a=await this[_0x34366a(0x167)](_0x2e2545,_0x34366a(0x157),_0x35c6ff);_0x4c3efd['push'](..._0x37a85a);}break;case _0x34366a(0x153):if(_0x54d529['checkov']){const _0x3d66c5=await this['validateWithCheckov'](_0x2e2545,'terraform',_0x35c6ff);_0x4c3efd[_0x34366a(0x139)](..._0x3d66c5);}break;case _0x34366a(0x110):if(_0x54d529['jsonSchema']){const _0xbec058=await this['validatePackageJson'](_0x2e2545,_0x35c6ff);_0x4c3efd['push'](..._0xbec058);}break;case _0x34366a(0x16f):if(_0x54d529[_0x34366a(0x146)]){const _0x3de0fb=await this['validateTsConfig'](_0x2e2545,_0x35c6ff);_0x4c3efd[_0x34366a(0x139)](..._0x3de0fb);}break;case'github-actions':if(_0x54d529[_0x34366a(0x131)]){const _0x4c229f=await this[_0x34366a(0x15c)](_0x2e2545,_0x35c6ff);_0x4c3efd[_0x34366a(0x139)](..._0x4c229f);}break;case _0x34366a(0x12c):const _0x4f7fbc=await this[_0x34366a(0x162)](_0x2e2545,_0x35c6ff);_0x4c3efd['push'](..._0x4f7fbc);break;case'yaml':if(_0x54d529['yamllint']){const _0x2edc01=await this[_0x34366a(0x15c)](_0x2e2545,_0x35c6ff);_0x4c3efd['push'](..._0x2edc01);}break;default:this['logger']?.[_0x34366a(0x127)](_0x34366a(0x12f),{'filePath':_0x2e2545,'fileType':_0x41d323});return[];}return this[_0x34366a(0x151)](_0x4c3efd);}async[a0_0x4db7d3(0x12d)](_0x24d56e,_0x541ccc={}){const _0x369f79=a0_0x4db7d3;try{const _0x5b0886=await execAsync(_0x369f79(0x143)+_0x24d56e+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x3aa9ca=JSON['parse'](_0x5b0886[_0x369f79(0xf9)]);return this['parseHadolintResults'](_0x3aa9ca,_0x24d56e);}catch(_0x19a6f8){if(_0x19a6f8['stdout'])try{const _0x2c274d=JSON[_0x369f79(0xfb)](_0x19a6f8['stdout']);return this[_0x369f79(0x136)](_0x2c274d,_0x24d56e);}catch(_0x3a136a){this['logger']?.['error'](_0x369f79(0xfe),{'error':_0x3a136a[_0x369f79(0xf6)]});}return this['logger']?.['error']('hadolint\x20validation\x20failed',{'error':_0x19a6f8[_0x369f79(0xf6)]}),[];}}[a0_0x4db7d3(0x136)](_0x3b110c,_0x2b5c46){const _0x23ce61=a0_0x4db7d3,_0x2ec42b=[];if(Array[_0x23ce61(0x11f)](_0x3b110c))for(const _0x579464 of _0x3b110c){_0x2ec42b['push']({'file':_0x2b5c46,'line':_0x579464[_0x23ce61(0xf1)]||0x1,'column':_0x579464[_0x23ce61(0x152)]||0x1,'severity':this['mapHadolintSeverity'](_0x579464['level']),'rule':_0x579464['code'],'message':_0x579464['message'],'category':_0x23ce61(0x10b),'validator':'hadolint'});}return _0x2ec42b;}async['validateYAML'](_0xbcf151,_0x572bc3={}){const _0x1b74bc=a0_0x4db7d3;try{const _0x289e3d=await execAsync(_0x1b74bc(0x13d)+_0xbcf151+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this['parseYamllintResults'](_0x289e3d[_0x1b74bc(0xf9)],_0xbcf151);}catch(_0x98b084){if(_0x98b084[_0x1b74bc(0xf9)])return this[_0x1b74bc(0x14e)](_0x98b084['stdout'],_0xbcf151);return this[_0x1b74bc(0x16b)]?.[_0x1b74bc(0x172)]('yamllint\x20validation\x20failed',{'error':_0x98b084['message']}),[];}}[a0_0x4db7d3(0x14e)](_0x459c20,_0x1aa508){const _0x4d6d7c=a0_0x4db7d3,_0x90cc00=[],_0x13aa54=_0x459c20[_0x4d6d7c(0x159)]('\x0a')['filter'](_0x5431c8=>_0x5431c8['trim']());for(const _0x3117b7 of _0x13aa54){const _0x1fa0fe=_0x3117b7[_0x4d6d7c(0x14b)](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x1fa0fe){const [,_0x4c8356,_0x239043,_0x364fed,_0x478f59,_0x324ed5,_0x23168f]=_0x1fa0fe;_0x90cc00['push']({'file':_0x1aa508,'line':parseInt(_0x239043,0xa),'column':parseInt(_0x364fed,0xa),'severity':this['mapYamllintSeverity'](_0x478f59),'rule':_0x23168f,'message':_0x324ed5,'category':_0x4d6d7c(0x121),'validator':'yamllint'});}}return _0x90cc00;}async[a0_0x4db7d3(0x167)](_0x5c6f32,_0x23849f,_0x2d5729={}){const _0x661c9e=a0_0x4db7d3;try{const _0x2ac947=await execAsync(_0x661c9e(0x111)+_0x5c6f32+'\x22\x20--framework\x20'+_0x23849f+'\x20--output\x20json\x20--compact',{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x1f999d=JSON[_0x661c9e(0xfb)](_0x2ac947[_0x661c9e(0xf9)]);return this['parseCheckovResults'](_0x1f999d,_0x5c6f32);}catch(_0x2eb08a){if(_0x2eb08a['stdout'])try{const _0x4b842a=JSON[_0x661c9e(0xfb)](_0x2eb08a[_0x661c9e(0xf9)]);return this['parseCheckovResults'](_0x4b842a,_0x5c6f32);}catch(_0x1c52c9){this[_0x661c9e(0x16b)]?.['error'](_0x661c9e(0x11e),{'error':_0x1c52c9['message']});}return this['logger']?.['error'](_0x661c9e(0x154),{'error':_0x2eb08a['message']}),[];}}['parseCheckovResults'](_0x5486e9,_0x986971){const _0x3dea8c=a0_0x4db7d3,_0x4470ba=[];if(_0x5486e9[_0x3dea8c(0xff)]&&_0x5486e9[_0x3dea8c(0xff)][_0x3dea8c(0x108)])for(const _0x47d694 of _0x5486e9['results'][_0x3dea8c(0x108)]){_0x4470ba['push']({'file':_0x986971,'line':_0x47d694[_0x3dea8c(0x15b)]?_0x47d694['file_line_range'][0x0]:0x1,'column':0x1,'severity':this['mapCheckovSeverity'](_0x47d694[_0x3dea8c(0x10c)]),'rule':_0x47d694['check_id'],'message':_0x47d694[_0x3dea8c(0x116)]||_0x47d694['check_id'],'category':'security','validator':'checkov','remediation':_0x47d694['guideline'],'cwe':_0x47d694[_0x3dea8c(0x105)],'references':_0x47d694['guideline']?[_0x47d694['guideline']]:[]});}return _0x4470ba;}async['validatePackageJson'](_0x43bad4,_0x5e0fb5={}){const _0x29e5fc=a0_0x4db7d3;try{const _0x2210b0=(await import(_0x29e5fc(0x15a)))[_0x29e5fc(0x12a)],_0x3b1160=(await import('ajv-formats'))[_0x29e5fc(0x12a)],_0x5c41e3=await a0_0x394965['readFile'](_0x43bad4,_0x29e5fc(0xf5)),_0x45548f=JSON['parse'](_0x5c41e3),_0x337ced=new _0x2210b0({'allErrors':!![],'strict':![]});_0x3b1160(_0x337ced);const _0x2735e6={'type':_0x29e5fc(0x126),'required':[_0x29e5fc(0x13c),_0x29e5fc(0x156)],'properties':{'name':{'type':_0x29e5fc(0x142),'pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':_0x29e5fc(0x142)},'description':{'type':'string'},'main':{'type':'string'},'type':{'type':'string','enum':['module','commonjs']},'scripts':{'type':'object'},'dependencies':{'type':'object'},'devDependencies':{'type':_0x29e5fc(0x126)}},'additionalProperties':!![]},_0x2caaa6=_0x337ced[_0x29e5fc(0x10e)](_0x2735e6),_0x38bd47=_0x2caaa6(_0x45548f);if(!_0x38bd47&&_0x2caaa6[_0x29e5fc(0x158)])return _0x2caaa6[_0x29e5fc(0x158)][_0x29e5fc(0x149)](_0xc15174=>({'file':_0x43bad4,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x29e5fc(0x171)]['ERROR'],'rule':_0x29e5fc(0x16e),'message':_0xc15174['instancePath']?_0xc15174['instancePath']+'\x20'+_0xc15174['message']:'must\x20have\x20required\x20property\x20\x27'+_0xc15174[_0x29e5fc(0x150)][_0x29e5fc(0xfa)]+'\x27','category':'validation','validator':_0x29e5fc(0x16e)}));return[];}catch(_0x3425d4){return this[_0x29e5fc(0x16b)]?.[_0x29e5fc(0x172)]('package.json\x20validation\x20failed',{'error':_0x3425d4[_0x29e5fc(0xf6)]}),[{'file':_0x43bad4,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x29e5fc(0x171)]['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x3425d4['message'],'category':_0x29e5fc(0x132),'validator':'json-parse'}];}}async[a0_0x4db7d3(0x14a)](_0x167608,_0x25d780={}){const _0x12c00c=a0_0x4db7d3;try{const _0x2496a2=await a0_0x394965['readFile'](_0x167608,_0x12c00c(0xf5)),_0x4ab369=JSON[_0x12c00c(0xfb)](_0x2496a2),_0x185136=[];if(_0x4ab369['compilerOptions']){const _0x5602d1=_0x4ab369[_0x12c00c(0x118)];!_0x5602d1['strict']&&_0x185136['push']({'file':_0x167608,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x12c00c(0x122),'message':_0x12c00c(0x101),'category':'best-practice','validator':'tsconfig-validator'}),_0x5602d1[_0x12c00c(0x11c)]===![]&&_0x185136[_0x12c00c(0x139)]({'file':_0x167608,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x12c00c(0x171)]['WARNING'],'rule':'no-implicit-any','message':_0x12c00c(0x160),'category':_0x12c00c(0xf7),'validator':'tsconfig-validator'});}return _0x185136;}catch(_0x3cf88f){return this[_0x12c00c(0x16b)]?.[_0x12c00c(0x172)](_0x12c00c(0x11b),{'error':_0x3cf88f[_0x12c00c(0xf6)]}),[{'file':_0x167608,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':'json-parse','message':_0x12c00c(0x13f)+_0x3cf88f[_0x12c00c(0xf6)],'category':'syntax','validator':_0x12c00c(0x14f)}];}}async['validateEnvFile'](_0xbd089c,_0x10d872={}){const _0xe8a555=a0_0x4db7d3;try{const _0x2a2d48=await a0_0x394965['readFile'](_0xbd089c,_0xe8a555(0xf5)),_0x14780c=[],_0x501bec=_0x2a2d48['split']('\x0a'),_0x595f71=[{'pattern':/password|passwd|pwd/i,'name':_0xe8a555(0x15d)},{'pattern':/api[_-]?key/i,'name':'API\x20key'},{'pattern':/secret/i,'name':_0xe8a555(0x134)},{'pattern':/token/i,'name':_0xe8a555(0x115)},{'pattern':/private[_-]?key/i,'name':'private\x20key'},{'pattern':/aws[_-]?access/i,'name':'AWS\x20credentials'}];return _0x501bec[_0xe8a555(0x12e)]((_0x2fab12,_0xe12694)=>{const _0x7d07a8=_0xe8a555,_0x9d3905=_0x2fab12[_0x7d07a8(0x16d)]();if(!_0x9d3905||_0x9d3905[_0x7d07a8(0x117)]('#'))return;if(_0x9d3905['includes']('=')){const [_0x3defb6,_0x45c161]=_0x9d3905[_0x7d07a8(0x159)]('='),_0x6dfebe=_0x3defb6['toLowerCase'](),_0x1d1ee2=_0x45c161?.['trim']()||'',_0x7bb64e=_0x1d1ee2&&_0x1d1ee2!==''&&!_0x1d1ee2['startsWith']('$')&&_0x1d1ee2!==_0x7d07a8(0x100)&&_0x1d1ee2!==_0x7d07a8(0xf4)&&_0x1d1ee2['length']>0x5;if(_0x7bb64e)for(const {pattern:_0x5bb08f,name:_0x2b01d9}of _0x595f71){if(_0x5bb08f['test'](_0x6dfebe)){_0x14780c['push']({'file':_0xbd089c,'line':_0xe12694+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x7d07a8(0x171)][_0x7d07a8(0x16c)],'rule':'hardcoded-secret','message':_0x7d07a8(0x16a)+_0x2b01d9+_0x7d07a8(0x13e),'category':_0x7d07a8(0x10f),'validator':'env-validator','remediation':'Use\x20environment-specific\x20.env\x20files\x20and\x20add\x20.env\x20to\x20.gitignore'});break;}}}}),_0x14780c;}catch(_0x542d2c){return this['logger']?.['error'](_0xe8a555(0x168),{'error':_0x542d2c['message']}),[];}}['detectFileType'](_0xf802d4){const _0x21d97e=a0_0x4db7d3,_0x56f9a9=a0_0x44226d['basename'](_0xf802d4)['toLowerCase'](),_0x218e14=a0_0x44226d[_0x21d97e(0x112)](_0xf802d4);if(_0x56f9a9==='dockerfile')return'dockerfile';if(_0x56f9a9==='docker-compose.yml'||_0x56f9a9==='docker-compose.yaml')return'docker-compose';if(_0x56f9a9==='package.json')return'package.json';if(_0x56f9a9==='tsconfig.json')return _0x21d97e(0x16f);if(_0x56f9a9===_0x21d97e(0x133)||_0x56f9a9['endsWith'](_0x21d97e(0x133)))return'env';if(_0x218e14[_0x21d97e(0x130)](_0x21d97e(0x109)))return _0x21d97e(0x141);if(_0x218e14['includes']('kubernetes')||_0x218e14['includes']('k8s'))return _0x21d97e(0x157);const _0x2c95b1=a0_0x44226d[_0x21d97e(0x164)](_0xf802d4)['toLowerCase']();if(_0x2c95b1===_0x21d97e(0x13b)||_0x2c95b1===_0x21d97e(0x140))return'terraform';if(_0x2c95b1==='.yml'||_0x2c95b1==='.yaml')return _0x21d97e(0x121);if(_0x2c95b1==='.json')return'json';return _0x21d97e(0x144);}['normalizeResults'](_0x1e843f){const _0x352832=a0_0x4db7d3;return _0x1e843f[_0x352832(0x149)](_0x34dfbc=>({'file':_0x34dfbc['file'],'line':_0x34dfbc['line']||0x1,'column':_0x34dfbc['column']||0x1,'severity':_0x34dfbc[_0x352832(0x147)]||STATIC_ANALYSIS['SEVERITY'][_0x352832(0x10d)],'rule':_0x34dfbc[_0x352832(0x163)]||'unknown','message':_0x34dfbc[_0x352832(0xf6)]||'Validation\x20issue\x20detected','category':_0x34dfbc[_0x352832(0x15f)]||'validation','validator':_0x34dfbc[_0x352832(0x137)],'cwe':_0x34dfbc[_0x352832(0x105)]||null,'remediation':_0x34dfbc[_0x352832(0x102)]||null,'references':_0x34dfbc[_0x352832(0x138)]||[]}));}['mapHadolintSeverity'](_0x5b5acd){const _0x4b534d=a0_0x4db7d3,_0x3b70e8={'error':STATIC_ANALYSIS['SEVERITY'][_0x4b534d(0x148)],'warning':STATIC_ANALYSIS['SEVERITY'][_0x4b534d(0x10d)],'info':STATIC_ANALYSIS['SEVERITY']['INFO'],'style':STATIC_ANALYSIS['SEVERITY']['INFO']};return _0x3b70e8[_0x5b5acd?.['toLowerCase']()]||STATIC_ANALYSIS['SEVERITY']['WARNING'];}['mapYamllintSeverity'](_0x598dae){const _0x30574c=a0_0x4db7d3,_0x495460={'error':STATIC_ANALYSIS[_0x30574c(0x171)]['ERROR'],'warning':STATIC_ANALYSIS['SEVERITY']['WARNING']};return _0x495460[_0x598dae?.[_0x30574c(0x114)]()]||STATIC_ANALYSIS[_0x30574c(0x171)]['WARNING'];}['mapCheckovSeverity'](_0x7f3d08){const _0x5a9f37=a0_0x4db7d3;return STATIC_ANALYSIS[_0x5a9f37(0x171)][_0x5a9f37(0x148)];}async['getValidatorStatus'](){const _0xea3f7b=a0_0x4db7d3,_0x2cfb68=await this[_0xea3f7b(0x15e)]();return{'validators':_0x2cfb68,'recommendations':this['getInstallRecommendations'](_0x2cfb68)};}['getInstallRecommendations'](_0x1940aa){const _0x45390f=a0_0x4db7d3,_0x12d667=[];return!_0x1940aa['checkov']&&_0x12d667[_0x45390f(0x139)]({'validator':_0x45390f(0x123),'reason':_0x45390f(0x107),'install':_0x45390f(0xf0),'priority':'high'}),!_0x1940aa['hadolint']&&_0x12d667['push']({'validator':'hadolint','reason':'Dockerfile\x20linting\x20and\x20best\x20practices','install':'Download from https://github.com/hadolint/hadolint/releases','priority':_0x45390f(0x11d)}),!_0x1940aa['yamllint']&&_0x12d667[_0x45390f(0x139)]({'validator':_0x45390f(0x131),'reason':_0x45390f(0x124),'install':'pip\x20install\x20yamllint','priority':_0x45390f(0x13a)}),!_0x1940aa[_0x45390f(0x146)]&&_0x12d667['push']({'validator':_0x45390f(0x104),'reason':_0x45390f(0x161),'install':'npm\x20install\x20ajv\x20ajv-formats','priority':_0x45390f(0x13a)}),_0x12d667;}}function a0_0x402f(_0x36a56d,_0x2f633c){_0x36a56d=_0x36a56d-0xf0;const _0x588041=a0_0x5880();let _0x402f5c=_0x588041[_0x36a56d];if(a0_0x402f['JYxdyQ']===undefined){var _0x118834=function(_0x20bc29){const _0x4afeca='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x44226d='',_0x394965='';for(let _0x23b327=0x0,_0x566f5e,_0x209d60,_0x4e55da=0x0;_0x209d60=_0x20bc29['charAt'](_0x4e55da++);~_0x209d60&&(_0x566f5e=_0x23b327%0x4?_0x566f5e*0x40+_0x209d60:_0x209d60,_0x23b327++%0x4)?_0x44226d+=String['fromCharCode'](0xff&_0x566f5e>>(-0x2*_0x23b327&0x6)):0x0){_0x209d60=_0x4afeca['indexOf'](_0x209d60);}for(let _0x2c549d=0x0,_0x36c25e=_0x44226d['length'];_0x2c549d<_0x36c25e;_0x2c549d++){_0x394965+='%'+('00'+_0x44226d['charCodeAt'](_0x2c549d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x394965);};a0_0x402f['YDHEwO']=_0x118834,a0_0x402f['RzpcRn']={},a0_0x402f['JYxdyQ']=!![];}const _0x35532a=_0x588041[0x0],_0x4cf64d=_0x36a56d+_0x35532a,_0x30277a=a0_0x402f['RzpcRn'][_0x4cf64d];return!_0x30277a?(_0x402f5c=a0_0x402f['YDHEwO'](_0x402f5c),a0_0x402f['RzpcRn'][_0x4cf64d]=_0x402f5c):_0x402f5c=_0x30277a,_0x402f5c;}export default ConfigValidator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a0_0x51b70b=a0_0x1850;function a0_0x1850(_0x5cd269,_0x293a28){_0x5cd269=_0x5cd269-0x1b7;const _0x50daea=a0_0x50da();let _0x18504e=_0x50daea[_0x5cd269];if(a0_0x1850['PdGift']===undefined){var _0x5d8a67=function(_0x32411e){const _0x32e631='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2bf1c4='',_0x2df6fc='';for(let _0x353337=0x0,_0xb20a5b,_0x4606a8,_0x37ed4b=0x0;_0x4606a8=_0x32411e['charAt'](_0x37ed4b++);~_0x4606a8&&(_0xb20a5b=_0x353337%0x4?_0xb20a5b*0x40+_0x4606a8:_0x4606a8,_0x353337++%0x4)?_0x2bf1c4+=String['fromCharCode'](0xff&_0xb20a5b>>(-0x2*_0x353337&0x6)):0x0){_0x4606a8=_0x32e631['indexOf'](_0x4606a8);}for(let _0xef4625=0x0,_0x1630ca=_0x2bf1c4['length'];_0xef4625<_0x1630ca;_0xef4625++){_0x2df6fc+='%'+('00'+_0x2bf1c4['charCodeAt'](_0xef4625)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2df6fc);};a0_0x1850['fGxeyc']=_0x5d8a67,a0_0x1850['DpVYCI']={},a0_0x1850['PdGift']=!![];}const _0x2a2580=_0x50daea[0x0],_0x438cd6=_0x5cd269+_0x2a2580,_0x340a6d=a0_0x1850['DpVYCI'][_0x438cd6];return!_0x340a6d?(_0x18504e=a0_0x1850['fGxeyc'](_0x18504e),a0_0x1850['DpVYCI'][_0x438cd6]=_0x18504e):_0x18504e=_0x340a6d,_0x18504e;}function a0_0x50da(){const _0x1f40e4=['zML4ywjSzuvYCM9Yq291BNq','otC3nJvlCKPTwNm','zM9YBwf0twvZC2fNzq','lMvZBgLUDhjJlMPZB24','rvnmAw50igzPEcbMywLSzwq','uevsrK9stufoq0u','mJi0BxzyyvnX','z2v0rvnmAw50q29UzMLN','zw5KtgLUzq','BM8TzxzHBa','mZG1mJjfs1rSDLy','zxnSAw50','lMnQCW','zgvZy3jPyMvdAgfUz2vZ','Aw5JBhvKzxm','C2v0DgLUz3m','otu3mdmZre5fu0nc','zxH0zw5KCW','rvnmAw50igzPEcbMywLSzwq6ia','zML4ywjSzvDHCM5PBMDdB3vUDa','BM8TDMfY','CgfYC2vYt3b0Aw9UCW','Bwf4','rvnmAw50igfUywX5C2LZigzHAwXLza','BgvUz3rO','BgLUDfrLEhq','mti2B1jKzfbX','u0vwrvjjvfK','lM1QCW','Bw9KAwzPzwq','C3vWCg9YDhnbDxrVrML4','DNvL','yMvZDc1WCMfJDgLJzxm','mtiXntu0r0X4q25m','mZiWvvDKAvDH','CgvYzM9YBwfUy2u','zxnSAw50oNjLy29TBwvUzgvK','Bw9KDwXL','CNvSzuLK','Bg9Nz2vY','rM91BMqGrvnmAw50ignVBMzPzW','rvjst1i','ChvZAa','q0furuDpuLK','mtK0B0HwDhPK','ywX3yxLZ','zMLSDgvY','mJu3mJHUse9UBKK','u1rzteu','z2v0rvnmAw50sw5ZDgfUy2u','B3v0Chv0','D2fYBMLUz0nVDw50','zxjYB3i','BM8TDw51C2vKlxzHCNm','zML4','lMvZBgLUDhjJlMPZ','mZi0nZmWAwHtDxv0','C2v2zxjPDhK','BwvZC2fNzq','v0fstKLorW','C2LUz2XL','y2f0zwDVCML6zvj1Bgu','BgLUzq','mZu1nfrmDe1jBa','D2fYBG'];a0_0x50da=function(){return _0x1f40e4;};return a0_0x50da();}(function(_0x2f87de,_0x3e1ca1){const _0x4ecc0d=a0_0x1850,_0x1c8600=_0x2f87de();while(!![]){try{const _0x3545c5=-parseInt(_0x4ecc0d(0x1ba))/0x1*(-parseInt(_0x4ecc0d(0x1e8))/0x2)+-parseInt(_0x4ecc0d(0x1cc))/0x3+parseInt(_0x4ecc0d(0x1eb))/0x4+parseInt(_0x4ecc0d(0x1bd))/0x5*(parseInt(_0x4ecc0d(0x1d6))/0x6)+parseInt(_0x4ecc0d(0x1f4))/0x7+parseInt(_0x4ecc0d(0x1c2))/0x8*(-parseInt(_0x4ecc0d(0x1dd))/0x9)+parseInt(_0x4ecc0d(0x1de))/0xa*(parseInt(_0x4ecc0d(0x1c6))/0xb);if(_0x3545c5===_0x3e1ca1)break;else _0x1c8600['push'](_0x1c8600['shift']());}catch(_0x4a4d03){_0x1c8600['push'](_0x1c8600['shift']());}}}(a0_0x50da,0x36752));import{ESLint}from'eslint';import a0_0x2bf1c4 from'path';import a0_0x2df6fc from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';class ESLintAnalyzer{constructor(_0x353337=null){const _0x31bc90=a0_0x1850;this[_0x31bc90(0x1e3)]=_0x353337,this['eslintCache']=new Map();}async['analyze'](_0xb20a5b,_0x4606a8,_0x37ed4b={}){const _0x58096e=a0_0x1850;try{const _0xef4625=await this[_0x58096e(0x1ed)](_0x37ed4b),_0x1630ca=await _0xef4625[_0x58096e(0x1d5)](_0x4606a8,{'filePath':_0xb20a5b,'warnIgnored':![]}),_0x31959e=[];if(_0x1630ca&&_0x1630ca['length']>0x0){const _0x20bb5d=_0x1630ca[0x0];for(const _0x56bf37 of _0x20bb5d['messages']){_0x31959e[_0x58096e(0x1e6)](this[_0x58096e(0x1be)](_0x56bf37,_0xb20a5b));}}return this[_0x58096e(0x1e3)]?.['debug']('ESLint\x20analysis\x20completed',{'file':_0xb20a5b,'totalDiagnostics':_0x31959e[_0x58096e(0x1d4)],'errors':_0x31959e[_0x58096e(0x1ea)](_0x48827e=>_0x48827e[_0x58096e(0x1f5)]===STATIC_ANALYSIS['SEVERITY'][_0x58096e(0x1e5)])[_0x58096e(0x1d4)],'warnings':_0x31959e[_0x58096e(0x1ea)](_0x55f064=>_0x55f064['severity']===STATIC_ANALYSIS[_0x58096e(0x1d7)]['WARNING'])[_0x58096e(0x1d4)]}),_0x31959e;}catch(_0x1d5af6){return this['logger']?.['error'](_0x58096e(0x1d3),{'file':_0xb20a5b,'error':_0x1d5af6[_0x58096e(0x1f6)]}),[];}}async[a0_0x51b70b(0x1f2)](_0x242b66,_0x3a7d7e,_0x32e16c={}){const _0x251efd=a0_0x51b70b;try{const _0x2b72fc=await this[_0x251efd(0x1ed)]({..._0x32e16c,'fix':!![]}),_0x133c7c=await _0x2b72fc[_0x251efd(0x1d5)](_0x3a7d7e,{'filePath':_0x242b66,'warnIgnored':![]});if(_0x133c7c&&_0x133c7c['length']>0x0){const _0x302d34=_0x133c7c[0x0];return{'fixed':_0x302d34['output']!==undefined,'content':_0x302d34[_0x251efd(0x1ee)]||_0x3a7d7e,'fixedCount':_0x302d34['fixableErrorCount']+_0x302d34[_0x251efd(0x1cf)],'remainingErrors':_0x302d34['errorCount']-_0x302d34[_0x251efd(0x1bc)],'remainingWarnings':_0x302d34[_0x251efd(0x1ef)]-_0x302d34[_0x251efd(0x1cf)],'changes':_0x302d34['output']?this[_0x251efd(0x1c9)](_0x3a7d7e,_0x302d34[_0x251efd(0x1ee)]):[]};}return{'fixed':![],'content':_0x3a7d7e,'fixedCount':0x0,'remainingErrors':0x0,'remainingWarnings':0x0,'changes':[]};}catch(_0x28437d){this[_0x251efd(0x1e3)]?.['error'](_0x251efd(0x1c0),{'file':_0x242b66,'error':_0x28437d['message']});throw new Error(_0x251efd(0x1ce)+_0x28437d[_0x251efd(0x1f6)]);}}async['getESLintInstance'](_0x17ee1f={}){const _0x41ae7e=a0_0x51b70b,{workingDir:_0x345f90,fix:fix=![],framework:_0x37e910}=_0x17ee1f,_0xf5f60e=await this[_0x41ae7e(0x1c3)](_0x345f90,_0x37e910),_0x26a078=new ESLint({'fix':fix,'useEslintrc':!![],'overrideConfig':_0xf5f60e,'errorOnUnmatchedPattern':![]});return _0x26a078;}async['getESLintConfig'](_0x79b89c,_0x1664ab){const _0x34ee94=a0_0x51b70b,_0x35ca0e={'env':{'browser':!![],'es2021':!![],'node':!![]},'parserOptions':{'ecmaVersion':'latest','sourceType':_0x34ee94(0x1e1)},'rules':{'no-unused-vars':_0x34ee94(0x1bb),'no-undef':_0x34ee94(0x1f0),'no-console':'off','semi':['warn',_0x34ee94(0x1e9)],'quotes':[_0x34ee94(0x1bb),_0x34ee94(0x1b7),{'avoidEscape':!![]}]}};if(_0x1664ab==='react')_0x35ca0e['extends']=['eslint:recommended'],_0x35ca0e[_0x34ee94(0x1d1)]['ecmaFeatures']={'jsx':!![]},_0x35ca0e[_0x34ee94(0x1cb)]={'react':{'version':'detect'}};else _0x1664ab===_0x34ee94(0x1db)?_0x35ca0e[_0x34ee94(0x1cd)]=[_0x34ee94(0x1e0)]:_0x35ca0e['extends']=['eslint:recommended'];if(_0x79b89c){const _0x843090=[_0x34ee94(0x1f3),'.eslintrc.cjs',_0x34ee94(0x1bf),'eslint.config.js'];for(const _0x1f6607 of _0x843090){try{const _0x39bb85=a0_0x2bf1c4['join'](_0x79b89c,_0x1f6607);return await a0_0x2df6fc['access'](_0x39bb85),this['logger']?.['debug'](_0x34ee94(0x1e4),{'configFile':_0x1f6607}),{};}catch{}}}return _0x35ca0e;}[a0_0x51b70b(0x1be)](_0x15f89e,_0x1f3885){const _0x170288=a0_0x51b70b;return{'file':_0x1f3885,'line':_0x15f89e[_0x170288(0x1b9)]||0x1,'column':_0x15f89e['column']||0x1,'endLine':_0x15f89e[_0x170288(0x1c4)],'endColumn':_0x15f89e['endColumn'],'severity':_0x15f89e['severity']===0x2?STATIC_ANALYSIS[_0x170288(0x1d7)]['ERROR']:STATIC_ANALYSIS[_0x170288(0x1d7)][_0x170288(0x1f7)],'rule':_0x15f89e['ruleId']||_0x170288(0x1c7),'message':_0x15f89e['message'],'category':this[_0x170288(0x1b8)](_0x15f89e[_0x170288(0x1e2)]),'fixable':_0x15f89e[_0x170288(0x1f2)]!==undefined,'source':'eslint'};}['categorizeRule'](_0x2b39b8){const _0x52195b=a0_0x51b70b;if(!_0x2b39b8)return STATIC_ANALYSIS['CATEGORY'][_0x52195b(0x1ec)];if(_0x2b39b8['includes']('security')||_0x2b39b8['includes']('xss')||_0x2b39b8===_0x52195b(0x1c5)||_0x2b39b8==='no-implied-eval')return STATIC_ANALYSIS['CATEGORY']['SECURITY'];if(_0x2b39b8[_0x52195b(0x1ca)](_0x52195b(0x1df))||_0x2b39b8==='no-await-in-loop'||_0x2b39b8==='prefer-promise-reject-errors')return STATIC_ANALYSIS['CATEGORY'][_0x52195b(0x1c1)];if(_0x2b39b8[_0x52195b(0x1ca)]('import')||_0x2b39b8==='no-undef')return STATIC_ANALYSIS[_0x52195b(0x1e7)]['IMPORT'];if(_0x2b39b8['includes'](_0x52195b(0x1dc))||_0x2b39b8===_0x52195b(0x1f1)||_0x2b39b8==='no-unreachable'||_0x2b39b8===_0x52195b(0x1d0))return STATIC_ANALYSIS[_0x52195b(0x1e7)]['BEST_PRACTICE'];return STATIC_ANALYSIS[_0x52195b(0x1e7)]['STYLE'];}['describeChanges'](_0x59141c,_0x374032){const _0x1ead02=a0_0x51b70b,_0x54052b=[],_0x48f004=_0x59141c['split']('\x0a'),_0x4767e8=_0x374032['split']('\x0a'),_0x11a70d=Math[_0x1ead02(0x1d2)](_0x48f004['length'],_0x4767e8['length']);for(let _0x1035d1=0x0;_0x1035d1<_0x11a70d;_0x1035d1++){const _0x5b0526=_0x48f004[_0x1035d1]||'',_0x4c7367=_0x4767e8[_0x1035d1]||'';_0x5b0526!==_0x4c7367&&_0x54052b['push']({'line':_0x1035d1+0x1,'type':_0x5b0526&&_0x4c7367?_0x1ead02(0x1d9):_0x5b0526?'removed':'added','original':_0x5b0526,'fixed':_0x4c7367});}return _0x54052b;}['getSupportedExtensions'](){const _0x735cc6=a0_0x51b70b;return['.js','.jsx',_0x735cc6(0x1d8),_0x735cc6(0x1c8)];}[a0_0x51b70b(0x1da)](){return!![];}}export default ESLintAnalyzer;
|