@loxia-labs/loxia-autopilot-one 1.2.3 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/SparrowAnalyzer.js +1 -1
- package/src/analyzers/TypeScriptAnalyzer.js +1 -1
- package/src/analyzers/codeCloneDetector/analyzer.js +1 -1
- package/src/analyzers/codeCloneDetector/detector.js +1 -1
- package/src/analyzers/codeCloneDetector/index.js +1 -1
- package/src/analyzers/codeCloneDetector/parser.js +1 -1
- package/src/analyzers/codeCloneDetector/reporter.js +1 -1
- package/src/analyzers/codeCloneDetector/scanner.js +1 -1
- package/src/core/agentPool.js +1 -1
- package/src/core/agentScheduler.js +1 -1
- package/src/core/contextManager.js +1 -1
- package/src/core/messageProcessor.js +1 -1
- package/src/core/orchestrator.js +1 -1
- package/src/core/stateManager.js +1 -1
- package/src/index.js +1 -1
- package/src/interfaces/cli.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/agents.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/components.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/connection.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/imports.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/messages.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/tools.test.js +1 -1
- package/src/interfaces/terminal/api/apiClient.js +1 -1
- package/src/interfaces/terminal/api/messageRouter.js +1 -1
- package/src/interfaces/terminal/api/session.js +1 -1
- package/src/interfaces/terminal/api/websocket.js +1 -1
- package/src/interfaces/terminal/components/AgentCreator.js +1 -1
- package/src/interfaces/terminal/components/AgentEditor.js +1 -1
- package/src/interfaces/terminal/components/AgentSwitcher.js +1 -1
- package/src/interfaces/terminal/components/ErrorBoundary.js +1 -1
- package/src/interfaces/terminal/components/ErrorPanel.js +1 -1
- package/src/interfaces/terminal/components/Header.js +1 -1
- package/src/interfaces/terminal/components/HelpPanel.js +1 -1
- package/src/interfaces/terminal/components/InputBox.js +1 -1
- package/src/interfaces/terminal/components/Layout.js +1 -1
- package/src/interfaces/terminal/components/LoadingSpinner.js +1 -1
- package/src/interfaces/terminal/components/MessageList.js +1 -1
- package/src/interfaces/terminal/components/MultilineTextInput.js +1 -1
- package/src/interfaces/terminal/components/SearchPanel.js +1 -1
- package/src/interfaces/terminal/components/SettingsPanel.js +1 -1
- package/src/interfaces/terminal/components/StatusBar.js +1 -1
- package/src/interfaces/terminal/components/TextInput.js +1 -1
- package/src/interfaces/terminal/config/agentEditorConstants.js +1 -1
- package/src/interfaces/terminal/config/constants.js +1 -1
- package/src/interfaces/terminal/index.js +1 -1
- package/src/interfaces/terminal/state/useAgentControl.js +1 -1
- package/src/interfaces/terminal/state/useAgents.js +1 -1
- package/src/interfaces/terminal/state/useConnection.js +1 -1
- package/src/interfaces/terminal/state/useMessages.js +1 -1
- package/src/interfaces/terminal/state/useTools.js +1 -1
- package/src/interfaces/terminal/utils/debugLogger.js +1 -1
- package/src/interfaces/terminal/utils/settingsStorage.js +1 -1
- package/src/interfaces/terminal/utils/theme.js +1 -1
- package/src/interfaces/webServer.js +1 -1
- package/src/modules/fileExplorer/controller.js +1 -1
- package/src/modules/fileExplorer/index.js +1 -1
- package/src/modules/fileExplorer/middleware.js +1 -1
- package/src/modules/fileExplorer/routes.js +1 -1
- package/src/services/agentActivityService.js +1 -1
- package/src/services/aiService.js +1 -1
- package/src/services/apiKeyManager.js +1 -1
- package/src/services/benchmarkService.js +1 -1
- package/src/services/budgetService.js +1 -1
- package/src/services/contextInjectionService.js +1 -1
- package/src/services/conversationCompactionService.js +1 -1
- package/src/services/errorHandler.js +1 -1
- package/src/services/fileAttachmentService.js +1 -1
- package/src/services/modelRouterService.js +1 -1
- package/src/services/modelsService.js +1 -1
- package/src/services/qualityInspector.js +1 -1
- package/src/services/tokenCountingService.js +1 -1
- package/src/tools/agentCommunicationTool.js +1 -1
- package/src/tools/agentDelayTool.js +1 -1
- package/src/tools/asyncToolManager.js +1 -1
- package/src/tools/baseTool.js +1 -1
- package/src/tools/browserTool.js +1 -1
- package/src/tools/cloneDetectionTool.js +1 -1
- package/src/tools/dependencyResolverTool.js +1 -1
- package/src/tools/fileContentReplaceTool.js +1 -1
- package/src/tools/fileSystemTool.js +1 -1
- package/src/tools/fileTreeTool.js +1 -1
- package/src/tools/imageTool.js +1 -1
- package/src/tools/importAnalyzerTool.js +1 -1
- package/src/tools/jobDoneTool.js +1 -1
- package/src/tools/seekTool.js +1 -1
- package/src/tools/staticAnalysisTool.js +1 -1
- package/src/tools/taskManagerTool.js +1 -1
- package/src/tools/terminalTool.js +1 -1
- package/src/tools/webTool.js +1 -1
- package/src/types/agent.js +1 -1
- package/src/types/contextReference.js +1 -1
- package/src/types/conversation.js +1 -1
- package/src/types/toolCommand.js +1 -1
- package/src/utilities/attachmentValidator.js +1 -1
- package/src/utilities/configManager.js +1 -1
- package/src/utilities/constants.js +1 -1
- package/src/utilities/directoryAccessManager.js +1 -1
- package/src/utilities/fileProcessor.js +1 -1
- package/src/utilities/logger.js +1 -1
- package/src/utilities/platformUtils.js +1 -1
- package/src/utilities/platformUtils.test.js +1 -1
- package/src/utilities/tagParser.js +1 -1
- package/src/utilities/toolConstants.js +1 -1
- package/src/utilities/userDataDir.js +1 -1
- package/web-ui/build/index.html +1 -1
- package/web-ui/build/static/{index-C_dPgZzH.js → index-B3kubbty.js} +1 -1
package/bin/cli.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const a0_0x35877a=a0_0x2faf;(function(_0x169fd6,_0x48618d){const _0x4bc2d3=a0_0x2faf,_0x29c7fc=_0x169fd6();while(!![]){try{const _0x3b9293=parseInt(_0x4bc2d3(0x184))/0x1*(parseInt(_0x4bc2d3(0x158))/0x2)+parseInt(_0x4bc2d3(0x16c))/0x3*(-parseInt(_0x4bc2d3(0x13c))/0x4)+-parseInt(_0x4bc2d3(0x146))/0x5*(-parseInt(_0x4bc2d3(0x13a))/0x6)+-parseInt(_0x4bc2d3(0x163))/0x7*(parseInt(_0x4bc2d3(0x16d))/0x8)+-parseInt(_0x4bc2d3(0x14c))/0x9+-parseInt(_0x4bc2d3(0x17b))/0xa+parseInt(_0x4bc2d3(0x14d))/0xb*(parseInt(_0x4bc2d3(0x169))/0xc);if(_0x3b9293===_0x48618d)break;else _0x29c7fc['push'](_0x29c7fc['shift']());}catch(_0x151d2){_0x29c7fc['push'](_0x29c7fc['shift']());}}}(a0_0x42bb,0xb6e59));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x526aa8 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x35877a(0x14a),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x35877a(0x174)][a0_0x35877a(0x17f)](0x2),command=args[0x0]&&!args[0x0][a0_0x35877a(0x183)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x35877a(0x147)]('--help')||args[a0_0x35877a(0x147)]('-h'),'version':args[a0_0x35877a(0x147)]('--version')||args[a0_0x35877a(0x147)]('-v')};for(let i=0x0;i<args[a0_0x35877a(0x15d)];i++){args[i]===a0_0x35877a(0x153)&&args[i+0x1]&&(flags[a0_0x35877a(0x143)]=parseInt(args[i+0x1],0xa)),args[i]===a0_0x35877a(0x166)&&args[i+0x1]&&(flags[a0_0x35877a(0x140)]=args[i+0x1]);}const port=flags[a0_0x35877a(0x143)]||DEFAULT_PORT,host=flags[a0_0x35877a(0x140)]||DEFAULT_HOST,serverUrl=a0_0x35877a(0x141)+host+':'+port;if(flags[a0_0x35877a(0x15e)]){const pkgPath=join(__dirname,'..',a0_0x35877a(0x17c)),pkg=JSON[a0_0x35877a(0x151)](readFileSync(pkgPath,a0_0x35877a(0x144)));console['log'](a0_0x35877a(0x13d)+pkg[a0_0x35877a(0x15e)]),process[a0_0x35877a(0x16b)](0x0);}if(flags[a0_0x35877a(0x15c)]||!command){const pkgPath=join(__dirname,'..',a0_0x35877a(0x17c)),pkg=JSON[a0_0x35877a(0x151)](readFileSync(pkgPath,'utf8'));console[a0_0x35877a(0x167)](a0_0x35877a(0x16e)+pkg[a0_0x35877a(0x15e)]+a0_0x35877a(0x17d)+DEFAULT_PORT+')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20'+DEFAULT_HOST+a0_0x35877a(0x13e)),process['exit'](0x0);}async function checkServerRunning(_0x32d91c,_0x265ad9,_0x176323=0x1){for(let _0x28cfc8=0x0;_0x28cfc8<_0x176323;_0x28cfc8++){const _0x100376=await new Promise(_0x2724d4=>{const _0x193bbf=a0_0x2faf,_0x3de881=a0_0x526aa8['get'](_0x193bbf(0x141)+_0x32d91c+':'+_0x265ad9+_0x193bbf(0x142),_0x227a83=>{_0x2724d4(_0x227a83['statusCode']===0xc8);});_0x3de881['on'](_0x193bbf(0x164),()=>_0x2724d4(![])),_0x3de881[_0x193bbf(0x162)](0x7d0,()=>{const _0x609ded=_0x193bbf;_0x3de881[_0x609ded(0x156)](),_0x2724d4(![]);});});if(_0x100376)return!![];_0x28cfc8<_0x176323-0x1&&await new Promise(_0x2d5095=>setTimeout(_0x2d5095,SERVER_CHECK_INTERVAL));}return![];}async function waitForServer(_0x869f5f,_0x2c2a3f,_0x4374d4=SERVER_STARTUP_TIMEOUT){const _0x3a4759=a0_0x35877a,_0x3cf708=Math[_0x3a4759(0x165)](_0x4374d4/SERVER_CHECK_INTERVAL);return checkServerRunning(_0x869f5f,_0x2c2a3f,_0x3cf708);}function a0_0x42bb(){const _0x4b5fd6=['Starting\x20Loxia\x20server...\x0a','\x0aServer\x20is\x20not\x20running\x20at\x20','Please\x20open\x20manually:\x20','startsWith','5492NvafTN','start','18ScPlHx','Unknown\x20command:\x20','12SOFviH','Loxia\x20Autopilot\x20One\x20v',')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20custom\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a','Starting\x20Terminal\x20UI...\x0a','host','http://','/api/health','port','utf8','node','1492175FybJtv','includes','index.js','ignore','localhost','Error:','5612076eAAlzm','209MzVXIg','web','\x0aServer\x20may\x20still\x20be\x20starting.\x20Open\x20','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','parse','kill','--port','SIGTERM','Server\x20is\x20running\x20at\x20','destroy','Waiting\x20for\x20server\x20to\x20start...','282MRDzHY','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','loxia-terminal.js','env','help','length','version','catch','cmd','Starting\x20Loxia\x20server\x20in\x20background...','setTimeout','161ZDCEbJ','error','ceil','--host','log','\x0aOpening\x20Web\x20UI\x20at\x20','1087608Caoyjh','\x0aShutting\x20down\x20server...','exit','465489kILlre','351752PXwjAA','\x0aLoxia\x20Autopilot\x20One\x20v','inherit','LOXIA_HOST','message','Checking\x20if\x20server\x20is\x20running...','open','argv','SIGINT','platform','toString','darwin','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','xdg-open','5422380isWjnb','package.json','\x20-\x20AI\x20Agent\x20System\x0a\x0aUsage:\x0a\x20\x20loxia\x20<command>\x20[options]\x0a\x0aCommands:\x0a\x20\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20open\x20Web\x20UI\x20in\x20browser\x0a\x20\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20Start\x20Terminal\x20UI\x20(server\x20must\x20be\x20running)\x0a\x20\x20plus-web\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20','pid','slice'];a0_0x42bb=function(){return _0x4b5fd6;};return a0_0x42bb();}function openBrowser(_0x5c41ca){const _0x3a156e=a0_0x35877a;let _0xea780c,_0x207851;if(process[_0x3a156e(0x176)]===_0x3a156e(0x178))_0xea780c=_0x3a156e(0x173),_0x207851=[_0x5c41ca];else process[_0x3a156e(0x176)]==='win32'?(_0xea780c=_0x3a156e(0x160),_0x207851=['/c',_0x3a156e(0x139),'\x22\x22',_0x5c41ca]):(_0xea780c=_0x3a156e(0x17a),_0x207851=[_0x5c41ca]);const _0x165b04=spawn(_0xea780c,_0x207851,{'detached':!![],'stdio':'ignore'});_0x165b04['unref'](),_0x165b04['on'](_0x3a156e(0x164),()=>{const _0x2b4264=_0x3a156e;console['log']('Could\x20not\x20open\x20browser\x20automatically.'),console['log'](_0x2b4264(0x182)+_0x5c41ca);});}function startServer(_0x34edfd=![]){const _0x39f83b=a0_0x35877a,_0x43b23a={...process[_0x39f83b(0x15b)],'LOXIA_PORT':port['toString'](),'PORT':port[_0x39f83b(0x177)]()};flags[_0x39f83b(0x140)]&&(_0x43b23a[_0x39f83b(0x170)]=flags[_0x39f83b(0x140)]);const _0x4a4acb=join(__dirname,'..','src',_0x39f83b(0x148)),_0x3a45a3=spawn(_0x39f83b(0x145),[_0x4a4acb],{'cwd':join(__dirname,'..'),'env':_0x43b23a,'stdio':_0x34edfd?[_0x39f83b(0x149),_0x39f83b(0x149),_0x39f83b(0x149)]:'inherit','detached':_0x34edfd});return _0x34edfd&&_0x3a45a3['unref'](),_0x3a45a3;}function startTerminalUI(){const _0xe25e53=a0_0x35877a,_0x5a888e=join(__dirname,_0xe25e53(0x15a)),_0x2a33e7={...process['env'],'LOXIA_PORT':port['toString'](),'LOXIA_HOST':host},_0x5510ba=spawn('node',[_0x5a888e],{'cwd':join(__dirname,'..'),'env':_0x2a33e7,'stdio':_0xe25e53(0x16f)});return _0x5510ba;}const commands={'web':async()=>{const _0x45836d=a0_0x35877a;console['log'](_0x45836d(0x180));const _0x32e421=startServer(![]);console[_0x45836d(0x167)](_0x45836d(0x157));const _0xf9e2da=await waitForServer(host,port);_0xf9e2da?(console[_0x45836d(0x167)](_0x45836d(0x168)+serverUrl),openBrowser(serverUrl)):console[_0x45836d(0x167)](_0x45836d(0x14f)+serverUrl+'\x20manually.'),process['on'](_0x45836d(0x175),()=>_0x32e421[_0x45836d(0x152)]('SIGINT')),process['on']('SIGTERM',()=>_0x32e421[_0x45836d(0x152)]('SIGTERM')),_0x32e421['on'](_0x45836d(0x16b),_0x1cf528=>process[_0x45836d(0x16b)](_0x1cf528||0x0));},'plus-web':async()=>{const _0x45f914=a0_0x35877a;await commands[_0x45f914(0x14e)]();},'terminal':async()=>{const _0x4aa99a=a0_0x35877a;console[_0x4aa99a(0x167)](_0x4aa99a(0x172));const _0x5cf2f9=await checkServerRunning(host,port);!_0x5cf2f9&&(console[_0x4aa99a(0x164)](_0x4aa99a(0x181)+serverUrl),console[_0x4aa99a(0x164)]('\x0aPlease\x20start\x20the\x20server\x20first:'),console[_0x4aa99a(0x164)]('\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI'),console[_0x4aa99a(0x164)](_0x4aa99a(0x179)),process['exit'](0x1));console[_0x4aa99a(0x167)](_0x4aa99a(0x155)+serverUrl),console[_0x4aa99a(0x167)](_0x4aa99a(0x13f));const _0x532f80=startTerminalUI();process['on'](_0x4aa99a(0x175),()=>_0x532f80[_0x4aa99a(0x152)]('SIGINT')),process['on'](_0x4aa99a(0x154),()=>_0x532f80[_0x4aa99a(0x152)]('SIGTERM')),_0x532f80['on']('exit',_0x1f2e48=>process[_0x4aa99a(0x16b)](_0x1f2e48||0x0));},'plus-terminal':async()=>{const _0x2c04e2=a0_0x35877a;console['log'](_0x2c04e2(0x161));const _0x4c8757=startServer(!![]),_0xdb646f=await waitForServer(host,port);!_0xdb646f&&(console['error'](_0x2c04e2(0x150)),process[_0x2c04e2(0x16b)](0x1));console[_0x2c04e2(0x167)]('Server\x20running\x20at\x20'+serverUrl),console[_0x2c04e2(0x167)](_0x2c04e2(0x13f));const _0x4ea758=startTerminalUI();_0x4ea758['on'](_0x2c04e2(0x16b),_0x199bf1=>{const _0x2d24d1=_0x2c04e2;console[_0x2d24d1(0x167)](_0x2d24d1(0x16a));try{process[_0x2d24d1(0x152)](_0x4c8757[_0x2d24d1(0x17e)],_0x2d24d1(0x154));}catch(_0x54dfaf){}process[_0x2d24d1(0x16b)](_0x199bf1||0x0);}),process['on'](_0x2c04e2(0x175),()=>{const _0x4bad0f=_0x2c04e2;_0x4ea758[_0x4bad0f(0x152)](_0x4bad0f(0x175));}),process['on'](_0x2c04e2(0x154),()=>{const _0x3408f8=_0x2c04e2;_0x4ea758[_0x3408f8(0x152)](_0x3408f8(0x154));});}};function a0_0x2faf(_0x5153de,_0x2d33e0){_0x5153de=_0x5153de-0x139;const _0x42bb30=a0_0x42bb();let _0x2faf74=_0x42bb30[_0x5153de];return _0x2faf74;}commands[command]?commands[command]()[a0_0x35877a(0x15f)](_0x2ede12=>{const _0x37a388=a0_0x35877a;console[_0x37a388(0x164)](_0x37a388(0x14b),_0x2ede12[_0x37a388(0x171)]),process['exit'](0x1);}):(console['error'](a0_0x35877a(0x13b)+command),console[a0_0x35877a(0x164)](a0_0x35877a(0x159)),process[a0_0x35877a(0x16b)](0x1));
|
|
3
|
+
const a0_0x213f28=a0_0xbeed;(function(_0x2dbed4,_0x4e6375){const _0x53518c=a0_0xbeed,_0x508149=_0x2dbed4();while(!![]){try{const _0x8ab861=-parseInt(_0x53518c(0x182))/0x1+-parseInt(_0x53518c(0x18a))/0x2*(parseInt(_0x53518c(0x177))/0x3)+parseInt(_0x53518c(0x17f))/0x4*(parseInt(_0x53518c(0x17e))/0x5)+-parseInt(_0x53518c(0x188))/0x6+-parseInt(_0x53518c(0x15f))/0x7+-parseInt(_0x53518c(0x18c))/0x8+parseInt(_0x53518c(0x17c))/0x9*(parseInt(_0x53518c(0x181))/0xa);if(_0x8ab861===_0x4e6375)break;else _0x508149['push'](_0x508149['shift']());}catch(_0x20f110){_0x508149['push'](_0x508149['shift']());}}}(a0_0x5bef,0x85f9a));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x460cfb from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x213f28(0x156),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x213f28(0x170)]['slice'](0x2),command=args[0x0]&&!args[0x0]['startsWith']('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x213f28(0x175)](a0_0x213f28(0x189))||args[a0_0x213f28(0x175)]('-h'),'version':args[a0_0x213f28(0x175)]('--version')||args[a0_0x213f28(0x175)]('-v')};for(let i=0x0;i<args['length'];i++){args[i]==='--port'&&args[i+0x1]&&(flags[a0_0x213f28(0x184)]=parseInt(args[i+0x1],0xa)),args[i]==='--host'&&args[i+0x1]&&(flags[a0_0x213f28(0x17a)]=args[i+0x1]);}const port=flags['port']||DEFAULT_PORT,host=flags[a0_0x213f28(0x17a)]||DEFAULT_HOST,serverUrl=a0_0x213f28(0x158)+host+':'+port;if(flags['version']){const pkgPath=join(__dirname,'..',a0_0x213f28(0x151)),pkg=JSON[a0_0x213f28(0x14c)](readFileSync(pkgPath,'utf8'));console[a0_0x213f28(0x17d)](a0_0x213f28(0x14f)+pkg[a0_0x213f28(0x16f)]),process[a0_0x213f28(0x16d)](0x0);}if(flags[a0_0x213f28(0x185)]||!command){const pkgPath=join(__dirname,'..','package.json'),pkg=JSON[a0_0x213f28(0x14c)](readFileSync(pkgPath,a0_0x213f28(0x179)));console[a0_0x213f28(0x17d)](a0_0x213f28(0x153)+pkg[a0_0x213f28(0x16f)]+a0_0x213f28(0x15c)+DEFAULT_PORT+a0_0x213f28(0x183)+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_0x213f28(0x16d)](0x0);}async function checkServerRunning(_0x392957,_0x175b93,_0x371a63=0x1){for(let _0x1ab4a3=0x0;_0x1ab4a3<_0x371a63;_0x1ab4a3++){const _0x3c6742=await new Promise(_0x403cbc=>{const _0x65b3c7=a0_0xbeed,_0x436f7f=a0_0x460cfb[_0x65b3c7(0x161)](_0x65b3c7(0x158)+_0x392957+':'+_0x175b93+_0x65b3c7(0x167),_0x35fd59=>{const _0x64b55b=_0x65b3c7;_0x403cbc(_0x35fd59[_0x64b55b(0x171)]===0xc8);});_0x436f7f['on']('error',()=>_0x403cbc(![])),_0x436f7f['setTimeout'](0x7d0,()=>{_0x436f7f['destroy'](),_0x403cbc(![]);});});if(_0x3c6742)return!![];_0x1ab4a3<_0x371a63-0x1&&await new Promise(_0x3ede21=>setTimeout(_0x3ede21,SERVER_CHECK_INTERVAL));}return![];}async function waitForServer(_0x5c45d1,_0x583b85,_0x39cb16=SERVER_STARTUP_TIMEOUT){const _0x1c1d4d=a0_0x213f28,_0x2be219=Math[_0x1c1d4d(0x187)](_0x39cb16/SERVER_CHECK_INTERVAL);return checkServerRunning(_0x5c45d1,_0x583b85,_0x2be219);}function openBrowser(_0x330ace){const _0x8a415c=a0_0x213f28;let _0x2f0cd1,_0x93a5b1;if(process[_0x8a415c(0x155)]==='darwin')_0x2f0cd1=_0x8a415c(0x15a),_0x93a5b1=[_0x330ace];else process['platform']===_0x8a415c(0x15b)?(_0x2f0cd1=_0x8a415c(0x168),_0x93a5b1=['/c',_0x8a415c(0x152),'\x22\x22',_0x330ace]):(_0x2f0cd1=_0x8a415c(0x157),_0x93a5b1=[_0x330ace]);const _0x7d6b60=spawn(_0x2f0cd1,_0x93a5b1,{'detached':!![],'stdio':_0x8a415c(0x164)});_0x7d6b60[_0x8a415c(0x16e)](),_0x7d6b60['on']('error',()=>{const _0x157b66=_0x8a415c;console[_0x157b66(0x17d)](_0x157b66(0x17b)),console[_0x157b66(0x17d)]('Please\x20open\x20manually:\x20'+_0x330ace);});}function startServer(_0x43d61e=![]){const _0x4be426=a0_0x213f28,_0x502c2d={...process[_0x4be426(0x15d)],'LOXIA_PORT':port['toString'](),'PORT':port[_0x4be426(0x186)]()};flags['host']&&(_0x502c2d[_0x4be426(0x14e)]=flags[_0x4be426(0x17a)]);const _0xf0d134=join(__dirname,'..',_0x4be426(0x14a),_0x4be426(0x180)),_0x271c6c=spawn('node',[_0xf0d134],{'cwd':join(__dirname,'..'),'env':_0x502c2d,'stdio':_0x43d61e?[_0x4be426(0x164),'ignore','ignore']:_0x4be426(0x159),'detached':_0x43d61e});return _0x43d61e&&_0x271c6c[_0x4be426(0x16e)](),_0x271c6c;}function a0_0x5bef(){const _0x55b28f=['web','get','message','Starting\x20Terminal\x20UI...\x0a','ignore','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','Server\x20is\x20running\x20at\x20','/api/health','cmd','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','SIGTERM','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','Waiting\x20for\x20server\x20to\x20start...','exit','unref','version','argv','statusCode','loxia-terminal.js','\x0aOpening\x20Web\x20UI\x20at\x20','kill','includes','Starting\x20Loxia\x20server...\x0a','18459ioOLeJ','node','utf8','host','Could\x20not\x20open\x20browser\x20automatically.','29158371Luiioh','log','1226285OfNIYp','12cPrtCN','index.js','10fUqrhX','78305yaKjxy',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','port','help','toString','ceil','6516192gzjDOs','--help','318xvTdgu','\x20manually.','5168176WgiFYB','pid','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','\x0aServer\x20may\x20still\x20be\x20starting.\x20Open\x20','error','\x0aShutting\x20down\x20server...','src','Server\x20running\x20at\x20','parse','SIGINT','LOXIA_HOST','Loxia\x20Autopilot\x20One\x20v','\x0aPlease\x20start\x20the\x20server\x20first:','package.json','start','\x0aLoxia\x20Autopilot\x20One\x20v','Starting\x20Loxia\x20server\x20in\x20background...','platform','localhost','xdg-open','http://','inherit','open','win32','\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','env','Error:','4466994dNZNLw'];a0_0x5bef=function(){return _0x55b28f;};return a0_0x5bef();}function startTerminalUI(){const _0x173325=a0_0x213f28,_0x3696dc=join(__dirname,_0x173325(0x172)),_0x5667b5={...process[_0x173325(0x15d)],'LOXIA_PORT':port[_0x173325(0x186)](),'LOXIA_HOST':host},_0x588f81=spawn(_0x173325(0x178),[_0x3696dc],{'cwd':join(__dirname,'..'),'env':_0x5667b5,'stdio':_0x173325(0x159)});return _0x588f81;}const commands={'web':async()=>{const _0x568380=a0_0x213f28;console['log'](_0x568380(0x176));const _0x53f499=startServer(![]);console[_0x568380(0x17d)](_0x568380(0x16c));const _0x488070=await waitForServer(host,port);_0x488070?(console[_0x568380(0x17d)](_0x568380(0x173)+serverUrl),openBrowser(serverUrl)):console[_0x568380(0x17d)](_0x568380(0x147)+serverUrl+_0x568380(0x18b)),process['on'](_0x568380(0x14d),()=>_0x53f499[_0x568380(0x174)](_0x568380(0x14d))),process['on'](_0x568380(0x16a),()=>_0x53f499[_0x568380(0x174)]('SIGTERM')),_0x53f499['on'](_0x568380(0x16d),_0x4496b7=>process[_0x568380(0x16d)](_0x4496b7||0x0));},'plus-web':async()=>{const _0x2306ff=a0_0x213f28;await commands[_0x2306ff(0x160)]();},'terminal':async()=>{const _0x211500=a0_0x213f28;console['log']('Checking\x20if\x20server\x20is\x20running...');const _0x2ac599=await checkServerRunning(host,port);!_0x2ac599&&(console[_0x211500(0x148)]('\x0aServer\x20is\x20not\x20running\x20at\x20'+serverUrl),console[_0x211500(0x148)](_0x211500(0x150)),console['error'](_0x211500(0x18e)),console[_0x211500(0x148)](_0x211500(0x165)),process[_0x211500(0x16d)](0x1));console['log'](_0x211500(0x166)+serverUrl),console[_0x211500(0x17d)]('Starting\x20Terminal\x20UI...\x0a');const _0x7be34f=startTerminalUI();process['on'](_0x211500(0x14d),()=>_0x7be34f[_0x211500(0x174)](_0x211500(0x14d))),process['on']('SIGTERM',()=>_0x7be34f[_0x211500(0x174)](_0x211500(0x16a))),_0x7be34f['on'](_0x211500(0x16d),_0x50ff3e=>process[_0x211500(0x16d)](_0x50ff3e||0x0));},'plus-terminal':async()=>{const _0x20a320=a0_0x213f28;console[_0x20a320(0x17d)](_0x20a320(0x154));const _0x5b6ce0=startServer(!![]),_0xb41dd5=await waitForServer(host,port);!_0xb41dd5&&(console[_0x20a320(0x148)](_0x20a320(0x16b)),process[_0x20a320(0x16d)](0x1));console[_0x20a320(0x17d)](_0x20a320(0x14b)+serverUrl),console[_0x20a320(0x17d)](_0x20a320(0x163));const _0x48ed44=startTerminalUI();_0x48ed44['on'](_0x20a320(0x16d),_0x216f07=>{const _0x51aef5=_0x20a320;console[_0x51aef5(0x17d)](_0x51aef5(0x149));try{process[_0x51aef5(0x174)](_0x5b6ce0[_0x51aef5(0x18d)],_0x51aef5(0x16a));}catch(_0x2f70ea){}process[_0x51aef5(0x16d)](_0x216f07||0x0);}),process['on'](_0x20a320(0x14d),()=>{const _0x425bd5=_0x20a320;_0x48ed44['kill'](_0x425bd5(0x14d));}),process['on']('SIGTERM',()=>{const _0x58270c=_0x20a320;_0x48ed44[_0x58270c(0x174)](_0x58270c(0x16a));});}};function a0_0xbeed(_0x45cfb2,_0x57b0a7){_0x45cfb2=_0x45cfb2-0x147;const _0x5bef3a=a0_0x5bef();let _0xbeedd1=_0x5bef3a[_0x45cfb2];return _0xbeedd1;}commands[command]?commands[command]()['catch'](_0x33d2d3=>{const _0x55ba44=a0_0x213f28;console['error'](_0x55ba44(0x15e),_0x33d2d3[_0x55ba44(0x162)]),process['exit'](0x1);}):(console[a0_0x213f28(0x148)]('Unknown\x20command:\x20'+command),console[a0_0x213f28(0x148)](a0_0x213f28(0x169)),process['exit'](0x1));
|
package/bin/loxia-terminal-v2.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
function
|
|
3
|
+
const a0_0x45604a=a0_0x2b87;function a0_0x2b87(_0x532cc1,_0x36c651){_0x532cc1=_0x532cc1-0x87;const _0x2cc215=a0_0x2cc2();let _0x2b87ba=_0x2cc215[_0x532cc1];return _0x2b87ba;}function a0_0x2cc2(){const _0x4ff92e=['env','slice','--port','✓\x20Server\x20is\x20already\x20running\x20at\x20','data','destroy','argv','Server\x20startup\x20timeout','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','✓\x20Server\x20started\x20at\x20','dirname','1378599TXBumH','189jrbcKr','2kkPEPf','timeout','1174765mlOwrc','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','log','connect','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','message','✗\x20Server\x20is\x20not\x20running','length','🚀\x20Starting\x20Loxia\x20server...','4026030rPBUku','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details','--ui','localhost','../src/interfaces/terminal/index.js','263944mGvTyk','error','LOXIA_PORT','--host','Failed\x20to\x20start\x20server:','25372StnPsf','...','stderr','toString','6787774osiDyP','now','setTimeout','10yjidSu','22636174PsMUml','exit','1030enqJEP','bin/cli.js','pipe','stdout','ignore','node'];a0_0x2cc2=function(){return _0x4ff92e;};return a0_0x2cc2();}(function(_0x32ee0d,_0x3b62ee){const _0x323e05=a0_0x2b87,_0xdf8d71=_0x32ee0d();while(!![]){try{const _0x206fa9=parseInt(_0x323e05(0xae))/0x1+-parseInt(_0x323e05(0xac))/0x2*(parseInt(_0x323e05(0xaa))/0x3)+-parseInt(_0x323e05(0x8f))/0x4*(-parseInt(_0x323e05(0x99))/0x5)+parseInt(_0x323e05(0xb7))/0x6+parseInt(_0x323e05(0x93))/0x7+-parseInt(_0x323e05(0x8a))/0x8*(parseInt(_0x323e05(0xab))/0x9)+-parseInt(_0x323e05(0x96))/0xa*(parseInt(_0x323e05(0x97))/0xb);if(_0x206fa9===_0x3b62ee)break;else _0xdf8d71['push'](_0xdf8d71['shift']());}catch(_0x34ca6c){_0xdf8d71['push'](_0xdf8d71['shift']());}}}(a0_0x2cc2,0xdea12));import{spawn}from'child_process';import a0_0x2db9ee from'net';import a0_0x45cc30 from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x45cc30[a0_0x45604a(0xa9)](__filename),projectRoot=a0_0x45cc30[a0_0x45604a(0xa9)](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x45604a(0x88),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x48427b,_0x5091e7){return new Promise(_0x596bcc=>{const _0x210192=a0_0x2b87,_0x17ae24=new a0_0x2db9ee['Socket']();_0x17ae24[_0x210192(0x95)](0x7d0),_0x17ae24['on'](_0x210192(0xb1),()=>{const _0x16a71d=_0x210192;_0x17ae24[_0x16a71d(0xa4)](),_0x596bcc(!![]);}),_0x17ae24['on'](_0x210192(0xad),()=>{const _0x3c4748=_0x210192;_0x17ae24[_0x3c4748(0xa4)](),_0x596bcc(![]);}),_0x17ae24['on'](_0x210192(0x8b),()=>{_0x17ae24['destroy'](),_0x596bcc(![]);}),_0x17ae24[_0x210192(0xb1)](_0x5091e7,_0x48427b);});}async function startServer(_0x2a693a,_0x3035fc){const _0x5eb17e=a0_0x45604a;return console['log'](_0x5eb17e(0xb6)),new Promise((_0x132925,_0x390a44)=>{const _0x2c9955=_0x5eb17e,_0x229e7f=spawn(_0x2c9955(0x9e),[a0_0x45cc30['join'](projectRoot,_0x2c9955(0x9a)),_0x2c9955(0x87),'web',_0x2c9955(0x8d),_0x2a693a,_0x2c9955(0xa1),_0x3035fc[_0x2c9955(0x92)]()],{'detached':![],'stdio':[_0x2c9955(0x9d),_0x2c9955(0x9b),'pipe']});_0x229e7f[_0x2c9955(0x9c)]['on'](_0x2c9955(0xa3),()=>{}),_0x229e7f[_0x2c9955(0x91)]['on'](_0x2c9955(0xa3),()=>{}),_0x229e7f['on'](_0x2c9955(0x8b),_0x1fc2ae=>{const _0x1a5f58=_0x2c9955;console[_0x1a5f58(0x8b)](_0x1a5f58(0x8e),_0x1fc2ae[_0x1a5f58(0xb3)]),_0x390a44(_0x1fc2ae);});const _0x3f0f04=Date[_0x2c9955(0x94)](),_0x452e07=setInterval(async()=>{const _0x27725b=_0x2c9955,_0x2e49af=await isServerRunning(_0x2a693a,_0x3035fc);if(_0x2e49af)clearInterval(_0x452e07),console[_0x27725b(0xb0)](_0x27725b(0xa8)+_0x2a693a+':'+_0x3035fc),_0x132925();else Date[_0x27725b(0x94)]()-_0x3f0f04>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x452e07),_0x229e7f['kill'](),_0x390a44(new Error(_0x27725b(0xa6))));},0x1f4);});}async function main(){const _0x16c9f2=a0_0x45604a;try{console['log'](_0x16c9f2(0xa7)),console[_0x16c9f2(0xb0)]('\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI'),console['log'](_0x16c9f2(0xa7)),console[_0x16c9f2(0xb0)]('');const _0x565320=process[_0x16c9f2(0xa5)][_0x16c9f2(0xa0)](0x2);let _0x4df28b=DEFAULT_HOST,_0x124c00=DEFAULT_PORT;for(let _0x379601=0x0;_0x379601<_0x565320[_0x16c9f2(0xb5)];_0x379601++){if(_0x565320[_0x379601]===_0x16c9f2(0x8d)&&_0x565320[_0x379601+0x1])_0x4df28b=_0x565320[_0x379601+0x1],_0x379601++;else _0x565320[_0x379601]===_0x16c9f2(0xa1)&&_0x565320[_0x379601+0x1]&&(_0x124c00=parseInt(_0x565320[_0x379601+0x1],0xa),_0x379601++);}console[_0x16c9f2(0xb0)](_0x16c9f2(0xaf)+_0x4df28b+':'+_0x124c00+_0x16c9f2(0x90));const _0x1707ff=await isServerRunning(_0x4df28b,_0x124c00);!_0x1707ff?(console['log'](_0x16c9f2(0xb4)),await startServer(_0x4df28b,_0x124c00)):console[_0x16c9f2(0xb0)](_0x16c9f2(0xa2)+_0x4df28b+':'+_0x124c00),console[_0x16c9f2(0xb0)](''),console[_0x16c9f2(0xb0)](_0x16c9f2(0xb2)),console[_0x16c9f2(0xb0)](''),await new Promise(_0x108cd1=>setTimeout(_0x108cd1,0x1f4)),process[_0x16c9f2(0x9f)]['LOXIA_HOST']=_0x4df28b,process['env'][_0x16c9f2(0x8c)]=_0x124c00['toString'](),await import(_0x16c9f2(0x89));}catch(_0x4573e1){console[_0x16c9f2(0x8b)](''),console['error'](_0x16c9f2(0xb8)),console[_0x16c9f2(0x8b)]('\x20\x20',_0x4573e1['message']),console[_0x16c9f2(0x8b)](''),console['error']('💡\x20Troubleshooting:'),console[_0x16c9f2(0x8b)]('\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080'),console['error']('\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js'),console[_0x16c9f2(0x8b)](_0x16c9f2(0xb9)),console['error'](''),process[_0x16c9f2(0x98)](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_0x1add2d=a0_0x569f;(function(_0xfd68aa,_0x4e7ce1){const _0x50b5b7=a0_0x569f,_0x321f6f=_0xfd68aa();while(!![]){try{const _0x174657=-parseInt(_0x50b5b7(0xab))/0x1+-parseInt(_0x50b5b7(0xb9))/0x2*(-parseInt(_0x50b5b7(0xae))/0x3)+parseInt(_0x50b5b7(0x9d))/0x4*(parseInt(_0x50b5b7(0xbb))/0x5)+-parseInt(_0x50b5b7(0xa3))/0x6*(parseInt(_0x50b5b7(0xa6))/0x7)+-parseInt(_0x50b5b7(0xa4))/0x8+parseInt(_0x50b5b7(0x9e))/0x9+-parseInt(_0x50b5b7(0x98))/0xa*(-parseInt(_0x50b5b7(0xa0))/0xb);if(_0x174657===_0x4e7ce1)break;else _0x321f6f['push'](_0x321f6f['shift']());}catch(_0x4e4186){_0x321f6f['push'](_0x321f6f['shift']());}}}(a0_0x50e6,0x9996f));import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0x1add2d(0xb1)][a0_0x1add2d(0xbc)](0x2),options={'host':a0_0x1add2d(0xb8),'port':0x1f90};for(let i=0x0;i<args['length'];i++){const arg=args[i];if(arg===a0_0x1add2d(0xa5)||arg==='-h')options[a0_0x1add2d(0x9b)]=args[++i];else{if(arg===a0_0x1add2d(0xb7)||arg==='-p')options[a0_0x1add2d(0xa9)]=parseInt(args[++i],0xa);else arg===a0_0x1add2d(0xa8)&&(console[a0_0x1add2d(0xb2)](a0_0x1add2d(0xaf)),process[a0_0x1add2d(0xbd)](0x0));}}process[a0_0x1add2d(0xad)][a0_0x1add2d(0x95)]&&(options[a0_0x1add2d(0x9b)]=process[a0_0x1add2d(0xad)][a0_0x1add2d(0x95)]);function a0_0x569f(_0x3658e2,_0x4d2635){_0x3658e2=_0x3658e2-0x95;const _0x50e615=a0_0x50e6();let _0x569fdf=_0x50e615[_0x3658e2];return _0x569fdf;}process[a0_0x1add2d(0xad)][a0_0x1add2d(0xaa)]&&(options[a0_0x1add2d(0xa9)]=parseInt(process[a0_0x1add2d(0xad)][a0_0x1add2d(0xaa)],0xa));function a0_0x50e6(){const _0x57337e=['--host','7PtlbJj','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','--help','port','LOXIA_PORT','285883zoBJDd','\x20\x20-\x20Some\x20CI/CD\x20environments','env','1922631nNntgJ','\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','catch','argv','log','\x20\x20npm\x20start','stdin','Press\x20Ctrl+C\x20to\x20exit\x0a','Or\x20use\x20the\x20web\x20UI\x20instead:','--port','localhost','2uJBODz','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','160KXsoNB','slice','exit','LOXIA_HOST','\x0aTerminal\x20UI\x20exited','waitUntilExit','3167030eaLuWq','\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)','Starting\x20Loxia\x20Terminal\x20UI...','host','Connecting\x20to:\x20','142708KvTlXC','6918849IqCEdL','ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).','22oPChUs','isTTY','error','6142494bmLdfH','9967784wEFzQC'];a0_0x50e6=function(){return _0x57337e;};return a0_0x50e6();}!process[a0_0x1add2d(0xb4)][a0_0x1add2d(0xa1)]&&(console[a0_0x1add2d(0xa2)](a0_0x1add2d(0x9f)),console['error'](''),console[a0_0x1add2d(0xa2)]('The\x20terminal\x20UI\x20cannot\x20run\x20in:'),console[a0_0x1add2d(0xa2)](a0_0x1add2d(0x99)),console[a0_0x1add2d(0xa2)](a0_0x1add2d(0xba)),console[a0_0x1add2d(0xa2)](a0_0x1add2d(0xa7)),console[a0_0x1add2d(0xa2)](a0_0x1add2d(0xac)),console['error'](''),console[a0_0x1add2d(0xa2)]('Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:'),console[a0_0x1add2d(0xa2)]('\x20\x20npm\x20run\x20terminal-ui'),console[a0_0x1add2d(0xa2)](''),console['error'](a0_0x1add2d(0xb6)),console[a0_0x1add2d(0xa2)](a0_0x1add2d(0xb3)),process[a0_0x1add2d(0xbd)](0x1));console[a0_0x1add2d(0xb2)](a0_0x1add2d(0x9a)),console[a0_0x1add2d(0xb2)](a0_0x1add2d(0x9c)+options[a0_0x1add2d(0x9b)]+':'+options[a0_0x1add2d(0xa9)]),console['log'](a0_0x1add2d(0xb5));const instance=startTerminalUI(options);instance[a0_0x1add2d(0x97)]()['then'](()=>{const _0x19db35=a0_0x1add2d;console[_0x19db35(0xb2)](_0x19db35(0x96)),process['exit'](0x0);})[a0_0x1add2d(0xb0)](_0x2b2cdd=>{const _0x3e3cd5=a0_0x1add2d;console[_0x3e3cd5(0xa2)]('\x0aTerminal\x20UI\x20error:',_0x2b2cdd),process['exit'](0x1);});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const a0_0x2639c3=a0_0x56b3;function a0_0x13ab(){const _0x471965=['data','message','PORT','SIGINT','Timeout','http://localhost:','104394BjYAmF','🛑\x20Stopping\x20server...','SIGKILL','[SERVER\x20ERROR]\x20','112orxiLs','10hjeHxl','29362293DvkzYm','║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║','Server\x20exited\x20with\x20code\x20','trim','Failed\x20to\x20start\x20server:','2195138hSRNLp','setTimeout','\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...','✅\x20Server\x20is\x20ready!','inherit','2187616FNaQDz','destroy','statusCode','stdout','\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...','log','index.js','Server\x20returned\x20','╚════════════════════════════════════════════════╝','node','ExperimentalWarning','1QSDlnn','bin','pipe','ignore','killed','8731653INYdlC','1355574gHYpsM','exit','🚀\x20Starting\x20Loxia\x20server...','SIGTERM','kill','/health','[SERVER]\x20','env','error','4806775RqXvTh','╔════════════════════════════════════════════════╗','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','Failed\x20to\x20start\x20Terminal\x20UI:'];a0_0x13ab=function(){return _0x471965;};return a0_0x13ab();}(function(_0x4513b5,_0x448916){const _0x1828e5=a0_0x56b3,_0x1003c8=_0x4513b5();while(!![]){try{const _0x36cd35=-parseInt(_0x1828e5(0x19c))/0x1*(-parseInt(_0x1828e5(0x18c))/0x2)+-parseInt(_0x1828e5(0x1b5))/0x3*(parseInt(_0x1828e5(0x1b9))/0x4)+-parseInt(_0x1828e5(0x1ab))/0x5+-parseInt(_0x1828e5(0x1a2))/0x6+-parseInt(_0x1828e5(0x1a1))/0x7+-parseInt(_0x1828e5(0x191))/0x8+-parseInt(_0x1828e5(0x187))/0x9*(-parseInt(_0x1828e5(0x1ba))/0xa);if(_0x36cd35===_0x448916)break;else _0x1003c8['push'](_0x1003c8['shift']());}catch(_0x1efcbc){_0x1003c8['push'](_0x1003c8['shift']());}}}(a0_0x13ab,0xa56d3));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x3deb59 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process[a0_0x2639c3(0x1a9)][a0_0x2639c3(0x1b1)]||0x1f90,STARTUP_WAIT=0x7d0;let serverProcess=null;async function checkServerReady(_0x36f7ff=0xa,_0x165853=0x1f4){const _0x24fa75=a0_0x2639c3;for(let _0x4c3e95=0x0;_0x4c3e95<_0x36f7ff;_0x4c3e95++){try{return await new Promise((_0x1dc7af,_0x405cd7)=>{const _0x1471f8=a0_0x56b3,_0xdeaa68=a0_0x3deb59['get'](_0x1471f8(0x1b4)+SERVER_PORT+_0x1471f8(0x1a7),_0x3b487c=>{const _0x1d95d4=_0x1471f8;_0x3b487c['statusCode']===0xc8?_0x1dc7af():_0x405cd7(new Error(_0x1d95d4(0x198)+_0x3b487c[_0x1d95d4(0x193)]));});_0xdeaa68['on']('error',_0x405cd7),_0xdeaa68[_0x1471f8(0x18d)](0x3e8,()=>{const _0x16006b=_0x1471f8;_0xdeaa68[_0x16006b(0x192)](),_0x405cd7(new Error(_0x16006b(0x1b3)));});}),console[_0x24fa75(0x196)](_0x24fa75(0x18f)),!![];}catch(_0xa4f290){_0x4c3e95<_0x36f7ff-0x1&&await new Promise(_0x4d6356=>setTimeout(_0x4d6356,_0x165853));}}return console['log'](_0x24fa75(0x1ad)),![];}async function startServer(){return new Promise(_0x4f4430=>{const _0x1ac2cf=a0_0x56b3;console[_0x1ac2cf(0x196)](_0x1ac2cf(0x1a4));const _0x3ab508=join(rootDir,'src',_0x1ac2cf(0x197));serverProcess=spawn('node',[_0x3ab508],{'cwd':rootDir,'env':{...process[_0x1ac2cf(0x1a9)]},'stdio':[_0x1ac2cf(0x19f),'pipe',_0x1ac2cf(0x19e)],'detached':![]}),serverProcess[_0x1ac2cf(0x194)]['on'](_0x1ac2cf(0x1af),_0x38bc1a=>{const _0x1ff7e4=_0x1ac2cf,_0x1347a7=_0x38bc1a['toString']()['trim']();_0x1347a7&&console['log'](_0x1ff7e4(0x1a8)+_0x1347a7);}),serverProcess['stderr']['on'](_0x1ac2cf(0x1af),_0x2e9de2=>{const _0x28fd04=_0x1ac2cf,_0xd58564=_0x2e9de2['toString']()[_0x28fd04(0x18a)]();_0xd58564&&!_0xd58564['includes'](_0x28fd04(0x19b))&&console[_0x28fd04(0x1aa)](_0x28fd04(0x1b8)+_0xd58564);}),serverProcess['on'](_0x1ac2cf(0x1aa),_0x268262=>{const _0x144b0d=_0x1ac2cf;console['error'](_0x144b0d(0x18b),_0x268262[_0x144b0d(0x1b0)]),process['exit'](0x1);}),serverProcess['on'](_0x1ac2cf(0x1a3),(_0x293f20,_0x33b9f6)=>{const _0x17bce2=_0x1ac2cf;_0x293f20!==null&&_0x293f20!==0x0&&(console[_0x17bce2(0x1aa)](_0x17bce2(0x189)+_0x293f20),process[_0x17bce2(0x1a3)](_0x293f20));}),setTimeout(_0x4f4430,STARTUP_WAIT);});}async function startTerminalUI(){const _0x41cc10=a0_0x2639c3;console['log']('🖥️\x20\x20Starting\x20Terminal\x20UI...'),console[_0x41cc10(0x196)]('');const _0x22b818=join(rootDir,_0x41cc10(0x19d),'loxia-terminal.js'),_0x551e21=spawn(_0x41cc10(0x19a),[_0x22b818],{'cwd':rootDir,'env':{...process[_0x41cc10(0x1a9)]},'stdio':_0x41cc10(0x190)});return _0x551e21['on'](_0x41cc10(0x1aa),_0x1410cd=>{const _0x34bf7c=_0x41cc10;console[_0x34bf7c(0x1aa)](_0x34bf7c(0x1ae),_0x1410cd['message']),cleanup(),process[_0x34bf7c(0x1a3)](0x1);}),_0x551e21['on'](_0x41cc10(0x1a3),_0x58b746=>{const _0x1a83c4=_0x41cc10;console[_0x1a83c4(0x196)]('\x0a👋\x20Terminal\x20UI\x20closed.'),cleanup(),process[_0x1a83c4(0x1a3)](_0x58b746||0x0);}),_0x551e21;}function a0_0x56b3(_0x534b12,_0x40253f){_0x534b12=_0x534b12-0x187;const _0x13ab64=a0_0x13ab();let _0x56b3b2=_0x13ab64[_0x534b12];return _0x56b3b2;}function cleanup(){const _0x289ccb=a0_0x2639c3;serverProcess&&!serverProcess[_0x289ccb(0x1a0)]&&(console[_0x289ccb(0x196)](_0x289ccb(0x1b6)),serverProcess[_0x289ccb(0x1a6)](_0x289ccb(0x1a5)),setTimeout(()=>{const _0x384711=_0x289ccb;!serverProcess[_0x384711(0x1a0)]&&serverProcess[_0x384711(0x1a6)](_0x384711(0x1b7));},0x1388));}process['on'](a0_0x2639c3(0x1b2),()=>{const _0x5ecf0b=a0_0x2639c3;console['log'](_0x5ecf0b(0x195)),cleanup(),process[_0x5ecf0b(0x1a3)](0x0);}),process['on']('SIGTERM',()=>{const _0x3127d=a0_0x2639c3;console[_0x3127d(0x196)](_0x3127d(0x18e)),cleanup(),process[_0x3127d(0x1a3)](0x0);}),process['on'](a0_0x2639c3(0x1a3),()=>{cleanup();});async function main(){const _0xe319d5=a0_0x2639c3;console[_0xe319d5(0x196)](_0xe319d5(0x1ac)),console[_0xe319d5(0x196)](_0xe319d5(0x188)),console['log'](_0xe319d5(0x199)),console[_0xe319d5(0x196)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x50f07f){console[_0xe319d5(0x1aa)]('Error\x20during\x20startup:',_0x50f07f[_0xe319d5(0x1b0)]),cleanup(),process[_0xe319d5(0x1a3)](0x1);}}main();
|
package/package.json
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
const a0_0x298bee=a0_0xf7bb;(function(_0x1b727a,_0x1763cc){const _0x7259fb=a0_0xf7bb,_0x2b8e5f=_0x1b727a();while(!![]){try{const _0x4c0e60=-parseInt(_0x7259fb(0xd7))/0x1+parseInt(_0x7259fb(0xed))/0x2*(-parseInt(_0x7259fb(0xfd))/0x3)+-parseInt(_0x7259fb(0x105))/0x4*(-parseInt(_0x7259fb(0xcc))/0x5)+parseInt(_0x7259fb(0xd1))/0x6*(parseInt(_0x7259fb(0x10f))/0x7)+-parseInt(_0x7259fb(0xdc))/0x8*(-parseInt(_0x7259fb(0x10c))/0x9)+-parseInt(_0x7259fb(0xf7))/0xa*(parseInt(_0x7259fb(0xde))/0xb)+parseInt(_0x7259fb(0x103))/0xc;if(_0x4c0e60===_0x1763cc)break;else _0x2b8e5f['push'](_0x2b8e5f['shift']());}catch(_0x804288){_0x2b8e5f['push'](_0x2b8e5f['shift']());}}}(a0_0x3822,0x60a7e));import{exec}from'child_process';import{promisify}from'util';import a0_0x3e4b33 from'https';import a0_0x16dc90 from'http';import a0_0x426b2d from'fs';import a0_0x386ab1 from'path';import{fileURLToPath}from'url';import{createWriteStream}from'fs';function a0_0x3822(){const _0x3d6b73=['\x0a═══════════════════════════════════════════════════════════','catch','72NVpTEv','\x20\x20Platform:\x20','yamllint','\x20\x20\x20✅\x20Python\x20found:\x20','\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:','═══════════════════════════════════════════════════════════\x0a','2976192DydDQB','bandit','405380obYoZc','\x20\x20Installing\x20Security\x20Scanners','unlink','═══════════════════════════════════════════════════════════','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','.scanners','mkdir','9exYnBu','eslint-plugin-security','statusCode','261317geBTAf','log','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','stdout','close','\x20\x20\x20✅\x20','\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:','arch','replace','\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a','headers','dirname','then','pip-audit','url','\x0aYou\x20can\x20manually\x20install\x20scanners:','/usr/local/Cellar','finish','25zwsKtO','python','checkov','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','48BbTAqt','error','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','semgrep','🐍\x20Checking\x20Python\x20scanners...','\x20\x20\x20pip\x20install\x20semgrep\x0a','122039XHXvzC','❌\x20Installation\x20failed:','semgrep\x20--version','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','\x20installed\x20successfully','2929040uLoMre','python\x20--version','16082yfmpxn','\x20-m\x20pip\x20install\x20','\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...','platform','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','🔍\x20Installing\x20Semgrep...','get','\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully','chmod','python3','exit','/opt/homebrew','join','\x20\x20\x20Location:\x20','promises','20672aaqRwL','pipe','\x20\x20Installation\x20Complete','message','startsWith','\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','\x20already\x20installed','\x20-m\x20pip\x20show\x20','v1.55.0','4470QhFIdd','trim','...','--user'];a0_0x3822=function(){return _0x3d6b73;};return a0_0x3822();}function a0_0xf7bb(_0x2864df,_0x4e8486){_0x2864df=_0x2864df-0xc9;const _0x382200=a0_0x3822();let _0xf7bbfc=_0x382200[_0x2864df];return _0xf7bbfc;}import{pipeline}from'stream/promises';const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x386ab1[a0_0x298bee(0x11a)](__filename),SCANNER_DIR=a0_0x386ab1[a0_0x298bee(0xea)](__dirname,'..','node_modules',a0_0x298bee(0x10a)),SEMGREP_VERSION=a0_0x298bee(0xf6);console[a0_0x298bee(0x110)](a0_0x298bee(0x108)),console['log'](a0_0x298bee(0x106)),console[a0_0x298bee(0x110)](a0_0x298bee(0xfe)+process[a0_0x298bee(0xe1)]+'\x20('+process['arch']+')'),console['log'](a0_0x298bee(0x102));async function installScanners(){const _0x43a0bd=a0_0x298bee;await a0_0x426b2d[_0x43a0bd(0xec)][_0x43a0bd(0x10b)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console[_0x43a0bd(0x110)](_0x43a0bd(0xfb)),console['log'](_0x43a0bd(0xef)),console['log']('═══════════════════════════════════════════════════════════\x0a');}async function checkESLintSecurity(){const _0x1a6e15=a0_0x298bee;console[_0x1a6e15(0x110)]('📦\x20Checking\x20ESLint\x20Security\x20Plugin...');try{await import(_0x1a6e15(0x10d)),console[_0x1a6e15(0x110)](_0x1a6e15(0x118));}catch(_0xcfa3c2){console[_0x1a6e15(0x110)](_0x1a6e15(0xf2)),console[_0x1a6e15(0x110)](_0x1a6e15(0xd3));}}async function installSemgrep(){const _0x13df90=a0_0x298bee;console['log'](_0x13df90(0xe3));const _0x2e8e39=process[_0x13df90(0xe1)],_0x5bc4a8=process[_0x13df90(0x116)];try{const _0x37b934=await execAsync(_0x13df90(0xd9),{'timeout':0x1388});console[_0x13df90(0x110)]('\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20'+_0x37b934[_0x13df90(0x112)][_0x13df90(0xf8)]()),console[_0x13df90(0x110)](_0x13df90(0x111));return;}catch(_0x150896){console[_0x13df90(0x110)](_0x13df90(0xe0));}const _0x3506fb=getSemgrepBinaryInfo(_0x2e8e39,_0x5bc4a8);if(!_0x3506fb){console[_0x13df90(0x110)](_0x13df90(0xd0)+_0x2e8e39+'-'+_0x5bc4a8),console[_0x13df90(0x110)]('\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a');return;}try{const _0x5ca25f=a0_0x386ab1[_0x13df90(0xea)](SCANNER_DIR,_0x13df90(0xd4));console[_0x13df90(0x110)]('\x20\x20\x20Downloading\x20from\x20'+_0x3506fb[_0x13df90(0x11d)]+_0x13df90(0xf9)),await downloadFile(_0x3506fb[_0x13df90(0x11d)],_0x5ca25f),await a0_0x426b2d['promises'][_0x13df90(0xe6)](_0x5ca25f,0x1ed),console[_0x13df90(0x110)](_0x13df90(0xe5)),console[_0x13df90(0x110)](_0x13df90(0xeb)+_0x5ca25f+'\x0a'),console[_0x13df90(0x110)](_0x13df90(0x115)),console[_0x13df90(0x110)](_0x13df90(0xd6));}catch(_0x344723){console[_0x13df90(0x110)](_0x13df90(0xda)+_0x344723[_0x13df90(0xf0)]),console[_0x13df90(0x110)](_0x13df90(0xcf));}}function getSemgrepBinaryInfo(_0x1d53a8,_0x4bc5b2){return null;}async function installPythonScanners(){const _0x50a1c3=a0_0x298bee;console[_0x50a1c3(0x110)](_0x50a1c3(0xd5));let _0x19284e=null;try{await execAsync('python3\x20--version',{'timeout':0x1388}),_0x19284e=_0x50a1c3(0xe7);}catch(_0x536582){try{await execAsync(_0x50a1c3(0xdd),{'timeout':0x1388}),_0x19284e=_0x50a1c3(0xcd);}catch(_0x423111){console[_0x50a1c3(0x110)]('\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners'),console[_0x50a1c3(0x110)](_0x50a1c3(0x101)),console[_0x50a1c3(0x110)](_0x50a1c3(0xe2));return;}}console[_0x50a1c3(0x110)](_0x50a1c3(0x100)+_0x19284e),await installViaPip(_0x50a1c3(0xd4),_0x19284e),await installViaPip(_0x50a1c3(0x104),_0x19284e),await installViaPip(_0x50a1c3(0x11c),_0x19284e),await installViaPip(_0x50a1c3(0xce),_0x19284e),await installViaPip(_0x50a1c3(0xff),_0x19284e),console[_0x50a1c3(0x110)]('');}async function isHomebrewPython(_0x10c40e){const _0xe2e39f=a0_0x298bee;try{const {stdout:_0x22769e}=await execAsync(_0x10c40e+'\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22',{'timeout':0x1388});return _0x22769e['includes'](_0xe2e39f(0xe9))||_0x22769e['includes'](_0xe2e39f(0xca));}catch{return![];}}async function installViaPip(_0xdb447c,_0x16a8e6){const _0x6af54c=a0_0x298bee;try{const _0x3518db=await execAsync(_0x16a8e6+_0x6af54c(0xf5)+_0xdb447c,{'timeout':0x1388});return console[_0x6af54c(0x110)](_0x6af54c(0x114)+_0xdb447c+_0x6af54c(0xf4)),!![];}catch(_0x4e5fba){console[_0x6af54c(0x110)]('\x20\x20\x20Installing\x20'+_0xdb447c+'...');try{const _0x534bd7=await isHomebrewPython(_0x16a8e6),_0x1e3583=_0x534bd7?'':_0x6af54c(0xfa),_0x4ffb71=(_0x16a8e6+_0x6af54c(0xdf)+_0x1e3583+'\x20'+_0xdb447c)[_0x6af54c(0x117)](/\s+/g,'\x20')[_0x6af54c(0xf8)]();return await execAsync(_0x4ffb71,{'timeout':0xea60}),console['log'](_0x6af54c(0x114)+_0xdb447c+_0x6af54c(0xdb)),!![];}catch(_0x3c8d18){return console[_0x6af54c(0x110)](_0x6af54c(0x109)+_0xdb447c+':\x20'+_0x3c8d18[_0x6af54c(0xf0)]),console[_0x6af54c(0x110)]('\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20'+_0xdb447c),![];}}}async function downloadFile(_0x4e3886,_0x4ec8da){return new Promise((_0x1bde96,_0x42b75f)=>{const _0x5cb2a7=a0_0xf7bb,_0x17283e=_0x4e3886[_0x5cb2a7(0xf1)]('https')?a0_0x3e4b33:a0_0x16dc90;_0x17283e[_0x5cb2a7(0xe4)](_0x4e3886,_0x894aba=>{const _0x1e2c53=_0x5cb2a7;if(_0x894aba['statusCode']===0x12e||_0x894aba[_0x1e2c53(0x10e)]===0x12d){downloadFile(_0x894aba[_0x1e2c53(0x119)]['location'],_0x4ec8da)[_0x1e2c53(0x11b)](_0x1bde96)[_0x1e2c53(0xfc)](_0x42b75f);return;}if(_0x894aba[_0x1e2c53(0x10e)]!==0xc8){_0x42b75f(new Error('Failed\x20to\x20download:\x20HTTP\x20'+_0x894aba[_0x1e2c53(0x10e)]));return;}const _0x1c78c6=createWriteStream(_0x4ec8da);_0x894aba[_0x1e2c53(0xee)](_0x1c78c6),_0x1c78c6['on'](_0x1e2c53(0xcb),()=>{const _0x14e4d1=_0x1e2c53;_0x1c78c6[_0x14e4d1(0x113)](),_0x1bde96();}),_0x1c78c6['on'](_0x1e2c53(0xd2),_0x38cb6a=>{const _0x3fe078=_0x1e2c53;a0_0x426b2d[_0x3fe078(0x107)](_0x4ec8da,()=>{}),_0x42b75f(_0x38cb6a);});})['on'](_0x5cb2a7(0xd2),_0x42b75f);});}installScanners()[a0_0x298bee(0xfc)](_0x34eba5=>{const _0x5ef6e7=a0_0x298bee;console[_0x5ef6e7(0xd2)](_0x5ef6e7(0xd8),_0x34eba5[_0x5ef6e7(0xf0)]),console['error'](_0x5ef6e7(0xc9)),console[_0x5ef6e7(0xd2)]('\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security'),console[_0x5ef6e7(0xd2)](_0x5ef6e7(0xf3)),process[_0x5ef6e7(0xe8)](0x0);});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
function a0_0x3f4f(){const _0x1040a4=['q1ntigfUywX5C2LZignVBxbSzxrLza','l15JDxn0B20TlW','lNnHC3m','mZqWndiWoffxDhjpra','mtu0mfvPuvvssa','Aw5JBhvKzxm','D2fYBG','CgX1z2LU','Cg9ZDgnZC0XLC3m','y2HLy2TtEw50yxG','q3nZu3LUDgf4rxjYB3i','mta1ndi4nZztz2XeAuS','u0vwrvjjvfK','mwnsD1nvuW','y3nZ','mZCWm1P0shb3qG','mtC2mdrxtxnjzvm','y29UDgvUDa','zMLSDgvY','Dgv4Da','BwvZC2fNzq','D2fYBMLUz3m','rvjst1i','CMvZDwX0CW','zgvIDwC','Bg9Nz2vY','nxj0EvrkDW','CgvYzM9YBwfUy2u','C3vWCg9YDhnbDxrVrML4','v0fstKLorW','Cg9ZDgnZC1nJC3m','Bg93zxi','BgvZCW','C3r5BgvSAw50','mZuXntqZmhrsy3vqAG','q0furuDpuLK','zxjYB3i','mta0ode2muz2zLLjvW','ntGYnZm3nLvxALPNsW','C2v2zxjPDhK','BgLUDa','BgLUzq','C3LUDgf4','BgLUDfn0EwXLCW','Dw5RBM93BG','C291CMnL','zM9YBwf0ug9ZDentu0vYCM9Y','C2nZCW','Dg9mB3DLCKnHC2u','Cg9ZDgnZCY1SzxnZ','uevsrK9stufoq0u','zxH0zw5K','u1rzteu','zgv0zwn0tgfUz3vHz2u','ChjVy2vZCW','mZn1ELDhzw0','ntG3ndnYANvgCuO','B3b0Aw1PEMu','zgvMyxvSDa','CNvSzq','y29SDw1U','ChvZAa','ug9ZDentuYbZEw50yxGGy2HLy2SGCgfZC2vK'];a0_0x3f4f=function(){return _0x1040a4;};return a0_0x3f4f();}const a0_0x349df1=a0_0x37bb;(function(_0x454c6e,_0x731b48){const _0x53170a=a0_0x37bb,_0x4af88b=_0x454c6e();while(!![]){try{const _0x49e8b2=-parseInt(_0x53170a(0x129))/0x1*(-parseInt(_0x53170a(0xff))/0x2)+-parseInt(_0x53170a(0x102))/0x3+parseInt(_0x53170a(0x11f))/0x4*(parseInt(_0x53170a(0xf7))/0x5)+-parseInt(_0x53170a(0x12c))/0x6*(-parseInt(_0x53170a(0x12b))/0x7)+parseInt(_0x53170a(0x103))/0x8+-parseInt(_0x53170a(0x115))/0x9*(parseInt(_0x53170a(0x120))/0xa)+parseInt(_0x53170a(0x114))/0xb*(-parseInt(_0x53170a(0x127))/0xc);if(_0x49e8b2===_0x731b48)break;else _0x4af88b['push'](_0x4af88b['shift']());}catch(_0x2290df){_0x4af88b['push'](_0x4af88b['shift']());}}}(a0_0x3f4f,0xdb7c3));import{STATIC_ANALYSIS}from'../utilities/constants.js';function a0_0x37bb(_0x3d63ba,_0xe8659c){_0x3d63ba=_0x3d63ba-0xf3;const _0x3f4f41=a0_0x3f4f();let _0x37bbaf=_0x3f4f41[_0x3d63ba];if(a0_0x37bb['mHOBhz']===undefined){var _0x9f94fb=function(_0x445418){const _0x3f5b11='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xb3f244='',_0x154eb3='';for(let _0x50a4b9=0x0,_0x2c2c48,_0x312d15,_0x192f3a=0x0;_0x312d15=_0x445418['charAt'](_0x192f3a++);~_0x312d15&&(_0x2c2c48=_0x50a4b9%0x4?_0x2c2c48*0x40+_0x312d15:_0x312d15,_0x50a4b9++%0x4)?_0xb3f244+=String['fromCharCode'](0xff&_0x2c2c48>>(-0x2*_0x50a4b9&0x6)):0x0){_0x312d15=_0x3f5b11['indexOf'](_0x312d15);}for(let _0x3ce91b=0x0,_0x7eabf9=_0xb3f244['length'];_0x3ce91b<_0x7eabf9;_0x3ce91b++){_0x154eb3+='%'+('00'+_0xb3f244['charCodeAt'](_0x3ce91b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x154eb3);};a0_0x37bb['LRZFzR']=_0x9f94fb,a0_0x37bb['ZvbSLn']={},a0_0x37bb['mHOBhz']=!![];}const _0xb3d1e2=_0x3f4f41[0x0],_0x3701f0=_0x3d63ba+_0xb3d1e2,_0x2719d8=a0_0x37bb['ZvbSLn'][_0x3701f0];return!_0x2719d8?(_0x37bbaf=a0_0x37bb['LRZFzR'](_0x37bbaf),a0_0x37bb['ZvbSLn'][_0x3701f0]=_0x37bbaf):_0x37bbaf=_0x2719d8,_0x37bbaf;}class CSSAnalyzer{constructor(_0xb3f244=null){const _0x3abd38=a0_0x37bb;this['logger']=_0xb3f244,this[_0x3abd38(0xfe)]=null,this['postcss']=null,this['postcssScss']=null,this['postcssLess']=null;}async['analyze'](_0x154eb3,_0x50a4b9,_0x2c2c48={}){const _0x5606b4=a0_0x37bb;try{const _0x312d15=[],_0x192f3a=this['detectLanguage'](_0x154eb3),_0x3ce91b=await this[_0x5606b4(0x125)](_0x154eb3,_0x50a4b9,_0x192f3a);_0x312d15['push'](..._0x3ce91b);if(_0x3ce91b['length']===0x0){const _0x7eabf9=await this['lintStyles'](_0x154eb3,_0x50a4b9,_0x192f3a);_0x312d15[_0x5606b4(0x11a)](..._0x7eabf9);}return this['logger']?.[_0x5606b4(0xf5)](_0x5606b4(0x11c),{'file':_0x154eb3,'language':_0x192f3a,'totalDiagnostics':_0x312d15['length'],'errors':_0x312d15['filter'](_0x43533a=>_0x43533a[_0x5606b4(0x104)]===STATIC_ANALYSIS['SEVERITY']['ERROR'])['length'],'warnings':_0x312d15[_0x5606b4(0x12e)](_0x575878=>_0x575878[_0x5606b4(0x104)]===STATIC_ANALYSIS['SEVERITY'][_0x5606b4(0xfa)])['length']}),_0x312d15;}catch(_0x296e70){return this['logger']?.['error']('CSS\x20analysis\x20failed',{'file':_0x154eb3,'error':_0x296e70[_0x5606b4(0x130)]}),[];}}async['checkSyntax'](_0x28b42d,_0x23be89,_0x423b82){const _0x42119a=a0_0x37bb,_0x59c320=[];try{if(!this['postcss']){const _0x589007=await import('postcss');this['postcss']=_0x589007[_0x42119a(0x117)];}let _0x51d2d3=null;if(_0x423b82==='scss'){if(!this[_0x42119a(0xfb)]){const _0x43bbf3=await import('postcss-scss');this[_0x42119a(0xfb)]=_0x43bbf3['default'];}_0x51d2d3=this['postcssScss'];}else{if(_0x423b82==='less'){if(!this[_0x42119a(0x124)]){const _0x674d47=await import(_0x42119a(0x10e));this['postcssLess']=_0x674d47['default'];}_0x51d2d3=this['postcssLess'];}}const _0x33b54b=this['postcss']()[_0x42119a(0x113)](_0x23be89,{'from':_0x28b42d,'syntax':_0x51d2d3}),_0x46ee17=_0x33b54b['root'];this[_0x42119a(0xf6)]?.['debug'](_0x42119a(0x11b),{'file':_0x28b42d});}catch(_0x1a0a08){const _0x47e4ea=this[_0x42119a(0x10b)](_0x1a0a08,_0x28b42d);_0x47e4ea&&_0x59c320['push'](_0x47e4ea);}return _0x59c320;}async[a0_0x349df1(0x108)](_0x1db8bd,_0x5f062a,_0x263cbf){const _0x295b13=a0_0x349df1,_0x521c40=[];try{if(!this[_0x295b13(0xfe)]){const _0x2fb459=await import(_0x295b13(0xfe));this['stylelint']=_0x2fb459['default'];}const _0x269c51={'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':[_0x295b13(0x11d),'ng-deep']}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x263cbf==='scss'?[!![],{'ignoreAtRules':['mixin','include',_0x295b13(0x110),'if','else','for','each','while','function','return',_0x295b13(0x12d),'use','forward']}]:_0x263cbf===_0x295b13(0xfd)?[!![],{'ignoreAtRules':[_0x295b13(0x123)]}]:!![],'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':_0x295b13(0xfc)},'customSyntax':_0x263cbf===_0x295b13(0x10c)?'postcss-scss':_0x263cbf==='less'?'postcss-less':undefined},_0x557ac1=await this['stylelint'][_0x295b13(0x105)]({'code':_0x5f062a,'codeFilename':_0x1db8bd,'config':_0x269c51});if(_0x557ac1[_0x295b13(0xf4)]&&_0x557ac1['results']['length']>0x0){const _0x16027d=_0x557ac1['results'][0x0];if(_0x16027d[_0x295b13(0x131)])for(const _0x5bb125 of _0x16027d['warnings']){_0x521c40[_0x295b13(0x11a)]({'file':_0x1db8bd,'line':_0x5bb125[_0x295b13(0x106)]||0x1,'column':_0x5bb125[_0x295b13(0x119)]||0x1,'severity':_0x5bb125[_0x295b13(0x104)]===_0x295b13(0x101)?STATIC_ANALYSIS[_0x295b13(0x128)][_0x295b13(0xf3)]:STATIC_ANALYSIS[_0x295b13(0x128)]['WARNING'],'rule':_0x5bb125[_0x295b13(0x118)]||_0x295b13(0x109),'message':_0x5bb125[_0x295b13(0x12f)],'category':this['categorizeStylelintRule'](_0x5bb125[_0x295b13(0x118)]),'fixable':![],'source':_0x295b13(0xfe)});}}}catch(_0x50a830){this[_0x295b13(0xf6)]?.[_0x295b13(0x122)]('Stylelint\x20analysis\x20failed',{'file':_0x1db8bd,'error':_0x50a830['message']});}return _0x521c40;}[a0_0x349df1(0x10b)](_0x3cde1a,_0x173937){const _0xea396d=a0_0x349df1;return{'file':_0x173937,'line':_0x3cde1a[_0xea396d(0x106)]||0x1,'column':_0x3cde1a['column']||0x1,'severity':STATIC_ANALYSIS[_0xea396d(0x128)][_0xea396d(0xf3)],'rule':_0x3cde1a['name']||_0xea396d(0x126),'message':_0x3cde1a['reason']||_0x3cde1a['message'],'category':STATIC_ANALYSIS[_0xea396d(0x100)]['SYNTAX'],'fixable':![],'source':'postcss','code':_0x3cde1a[_0xea396d(0x10a)]||undefined};}['categorizeStylelintRule'](_0x2e38a9){const _0x3142cb=a0_0x349df1;if(!_0x2e38a9)return STATIC_ANALYSIS['CATEGORY'][_0x3142cb(0x111)];const _0x4f4a35=_0x2e38a9[_0x3142cb(0x10d)]();if(_0x4f4a35['includes']('no-invalid')||_0x4f4a35[_0x3142cb(0x121)]('no-unknown')||_0x4f4a35['includes']('no-empty')||_0x4f4a35[_0x3142cb(0x121)](_0x3142cb(0x107)))return STATIC_ANALYSIS['CATEGORY']['SYNTAX'];if(_0x4f4a35['includes'](_0x3142cb(0xf8))||_0x4f4a35['includes'](_0x3142cb(0x116)))return STATIC_ANALYSIS['CATEGORY'][_0x3142cb(0x10f)];if(_0x4f4a35[_0x3142cb(0x121)]('best-practice')||_0x4f4a35[_0x3142cb(0x121)]('recommended'))return STATIC_ANALYSIS[_0x3142cb(0x100)]['BEST_PRACTICE'];return STATIC_ANALYSIS['CATEGORY']['STYLE'];}[a0_0x349df1(0x112)](_0x5df6d7){const _0x16b555=a0_0x349df1,_0x16f898=_0x5df6d7['toLowerCase']();if(_0x16f898['endsWith']('.scss')||_0x16f898['endsWith'](_0x16b555(0x11e)))return _0x16b555(0x10c);if(_0x16f898['endsWith']('.less'))return _0x16b555(0xfd);return _0x16b555(0x12a);}['getSupportedExtensions'](){const _0x2c4273=a0_0x349df1;return['.css','.scss',_0x2c4273(0x11e),'.less'];}[a0_0x349df1(0xf9)](){return![];}}export default CSSAnalyzer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a0_0x39853d=a0_0x1bdc;(function(_0x505ccd,_0xe0dc68){const _0x36c399=a0_0x1bdc,_0x130da3=_0x505ccd();while(!![]){try{const _0x2fc861=parseInt(_0x36c399(0x12d))/0x1*(parseInt(_0x36c399(0xe0))/0x2)+parseInt(_0x36c399(0x127))/0x3*(parseInt(_0x36c399(0x10f))/0x4)+-parseInt(_0x36c399(0x134))/0x5+parseInt(_0x36c399(0xfe))/0x6+-parseInt(_0x36c399(0x121))/0x7+parseInt(_0x36c399(0x13a))/0x8+-parseInt(_0x36c399(0xe5))/0x9*(parseInt(_0x36c399(0xd9))/0xa);if(_0x2fc861===_0xe0dc68)break;else _0x130da3['push'](_0x130da3['shift']());}catch(_0x152427){_0x130da3['push'](_0x130da3['shift']());}}}(a0_0x2f8c,0x73dfd));import{exec}from'child_process';function a0_0x2f8c(){const _0x14a25d=['zg9JA2vYlwnVBxbVC2uUEwfTBa','EwfTBgXPBNqGzgv0zwn0zwq','B2jQzwn0','yMvZDc1WCMfJDgLJzq','C3bSAxq','zMLSzv9SAw5Lx3jHBMDL','y29SDw1U','rvjst1i','qvDtignYzwrLBNrPywXZ','C3rKB3v0','CMvZDwX0CW','DMfSAwrHDg9Y','C2nHBM5LCKnHy2HL','DMfSAwrHDgvxAxrOq2HLy2TVDG','DgvYCMfMB3jT','CMvMzxjLBMnLCW','CgfZC3DVCMq','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','Aw5JBhvKzxm','mtbZugnmtve','EwfTBa','Dg9mB3DLCKnHC2u','DhjPBq','Bw9KDwXL','zg9JA2vYlwnVBxbVC2u','DhnJB25MAwCTDMfSAwrHDg9Y','nZuYmZrOCeTitfm','xIG/oKbBys16mc05lx5Dw2eTEJaTos0Ux35DkI8Pp1THlxOWltKTFL1Bys16mc05ls5FFL0Qja','EwfTBgXPBNqGBM90igf2ywLSywjSzq','BwvKAxvT','lNrMDMfYCW','ntG2otG2m2fkEK1NBa','DMfSAwrHDgvfBNzgAwXL','CgfYC2vzyw1SBgLUDfjLC3vSDhm','zw52','A3vIzxjUzxrLCW','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','igrLDgvJDgvKigLUic5LBNyGzMLSzq','wufntcbMAwXLihzHBgLKyxrPB24','ANnVBI1WyxjZzq','Bwf0y2G','zg9JA2vYx2nVBxbVC2u','y2HLy2TVDG','ANnVBLnJAgvTyq','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','AgfKB2XPBNqGls1MB3jTyxqGANnVBIaI','CgfJA2fNzs5QC29U','AZHZ','vMfSAwrHDgLUzYbJB25MAwCGzMLSzq','ywP2','zgvIDwC','y2HLy2TFy2XHC3m','CgfYyw1Z','y2HLy2TFBMfTzq','BMfTzq','mZe5mZi4nhrdseLltG','EwfTBgXPBNqGlwyGCgfYC2fIBguGiG','CNvSzq','z3vPzgvSAw5L','BgLUzq','y2HLy2TVDIaTlxzLCNnPB24','C3rYAwn0','BwfWsgfKB2XPBNrtzxzLCML0Eq','BgvUz3rO','AgLNAa','ANnVBI1Zy2HLBwe','C2vJDxjPDhK','ywP2icHku09oifnJAgvTysK','y29TCgLSzxjpChrPB25Z','CgfYC2viywrVBgLUDfjLC3vSDhm','EwfTBgXPBNq','BwfWq2HLy2TVDLnLDMvYAxr5','mtuXody4zNjHuKHZ','zxjYB3jZ','u0vwrvjjvfK','BM9jBxbSAwnPDefUEq','y2HLy2TVDIaTzIaI','sw52ywXPzcbku09ooIa','C2v2zxjPDhK','CgfJA2fNzs5QC29UihzHBgLKyxrPB24GzMfPBgvK','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','AgfKB2XPBNq','zxjYB3i','ANnVBG','qvbjigTLEq','DMfSAwrHDgvqywnRywDLsNnVBG','zg9JA2vYzMLSzq','zMfPBgvKx2nOzwnRCW','EwfTBgXPBNqGDMfSAwrHDgLVBIbMywLSzwq','Aw5ZDgfUy2vqyxrO','mJK2mJa1n3Ltq0rNCW','CMvHzezPBgu','C3rYAwn0lw1Vzgu','v0fstKLorW','z2L0AhvIlwfJDgLVBNm','lMvUDG','mZL1zLfTwfq','DMfSAwrHDgvzqu1m','BwvZC2fNzq','DhnJB25MAwCUANnVBIb2ywXPzgf0Aw9UigzHAwXLza','Ew91CI1RzxKTAgvYzq','BwfW','mtnovgnqz3G','CgfYC2u','zw52lxzHBgLKyxrVCG','BM8TAw1WBgLJAxqTyw55','C3rYAw5N','Bg9Nz2vY','DhnJB25MAwCUANnVBG','mZu4ndyZnxrQExfwAa','iIaTlwzYyw1LD29YAYa','y2HLy2TVDIb2ywXPzgf0Aw9UigzHAwXLza','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','y2HHBMDLBwu','AgfKB2XPBNqGls12zxjZAw9U','nJaXnJGWmgL4zhDWEq','ChvZAa','zgv0zwn0rMLSzvr5Cgu','DMvYC2LVBG','BwLZC2LUz1bYB3bLCNr5','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','Dw5RBM93BG','CgfYC2vdAgvJA292uMvZDwX0CW','lMPZB24','yxzHAwXHyMXLu2nHBM5LCNm','y29TBw9UANm','DMfSAwrHDgLVBG','DxrMltG','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','ug90zw50AwfSigHHCMrJB2rLzca','zM9YrwfJAa','D2fYBG','rMfPBgvKihrVihbHCNnLigHHzg9SAw50ig91Dhb1Da','y2HLy2TVDIbKzxrLy3rLza','C3LUDgf4'];a0_0x2f8c=function(){return _0x14a25d;};return a0_0x2f8c();}import{promisify}from'util';import a0_0xa27771 from'path';import a0_0x44df1d from'fs/promises';function a0_0x1bdc(_0x248f07,_0x2fd2b4){_0x248f07=_0x248f07-0xbc;const _0x2f8c39=a0_0x2f8c();let _0x1bdc0f=_0x2f8c39[_0x248f07];if(a0_0x1bdc['dGjqmP']===undefined){var _0x43bfb8=function(_0xd7f239){const _0x3c6cd1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xa27771='',_0x44df1d='';for(let _0x5d62f2=0x0,_0x4954a5,_0x1c170f,_0x318b28=0x0;_0x1c170f=_0xd7f239['charAt'](_0x318b28++);~_0x1c170f&&(_0x4954a5=_0x5d62f2%0x4?_0x4954a5*0x40+_0x1c170f:_0x1c170f,_0x5d62f2++%0x4)?_0xa27771+=String['fromCharCode'](0xff&_0x4954a5>>(-0x2*_0x5d62f2&0x6)):0x0){_0x1c170f=_0x3c6cd1['indexOf'](_0x1c170f);}for(let _0xb48428=0x0,_0x592bec=_0xa27771['length'];_0xb48428<_0x592bec;_0xb48428++){_0x44df1d+='%'+('00'+_0xa27771['charCodeAt'](_0xb48428)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x44df1d);};a0_0x1bdc['DCKPjf']=_0x43bfb8,a0_0x1bdc['bxUVSZ']={},a0_0x1bdc['dGjqmP']=!![];}const _0x59e668=_0x2f8c39[0x0],_0x11db98=_0x248f07+_0x59e668,_0x587689=a0_0x1bdc['bxUVSZ'][_0x11db98];return!_0x587689?(_0x1bdc0f=a0_0x1bdc['DCKPjf'](_0x1bdc0f),a0_0x1bdc['bxUVSZ'][_0x11db98]=_0x1bdc0f):_0x1bdc0f=_0x587689,_0x1bdc0f;}import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x5d62f2=null){const _0x5b2595=a0_0x1bdc;this[_0x5b2595(0x132)]=_0x5d62f2,this[_0x5b2595(0x143)]=null,this[_0x5b2595(0xd2)]=new Map();}async[a0_0x39853d(0xea)](){const _0xe2e1d8=a0_0x39853d;if(this['availableScanners']!==null)return this['availableScanners'];const _0x4954a5={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0xe2e1d8(0x103),{'timeout':0x1388}),_0x4954a5['checkov']=!![],this['logger']?.['debug'](_0xe2e1d8(0xc4));}catch(_0x1c170f){this['logger']?.[_0xe2e1d8(0xf9)](_0xe2e1d8(0xbf),{'error':_0x1c170f['message']});}try{await execAsync(_0xe2e1d8(0x139),{'timeout':0x1388}),_0x4954a5[_0xe2e1d8(0x118)]=!![],this['logger']?.[_0xe2e1d8(0xf9)]('hadolint\x20detected');}catch(_0x318b28){this['logger']?.[_0xe2e1d8(0xf9)]('hadolint\x20not\x20available',{'error':_0x318b28['message']});}try{await execAsync('yamllint\x20--version',{'timeout':0x1388}),_0x4954a5['yamllint']=!![],this[_0xe2e1d8(0x132)]?.['debug'](_0xe2e1d8(0xc7));}catch(_0xb48428){this[_0xe2e1d8(0x132)]?.['debug'](_0xe2e1d8(0xe2),{'error':_0xb48428[_0xe2e1d8(0x129)]});}try{await import(_0xe2e1d8(0xf8)),_0x4954a5[_0xe2e1d8(0xf2)]=!![],this['logger']?.['debug']('JSON\x20Schema\x20validation\x20available');}catch(_0x592bec){this['logger']?.['debug']('ajv\x20not\x20available',{'error':_0x592bec['message']});}return this[_0xe2e1d8(0x143)]=_0x4954a5,_0x4954a5;}async['validate'](_0x3ab63c,_0x2ae2a4={}){const _0x400878=a0_0x39853d,_0x4cca2a=[],_0x1c5b03=await this[_0x400878(0xea)](),_0x1de7f0=this[_0x400878(0x13c)](_0x3ab63c);this[_0x400878(0x132)]?.['debug'](_0x400878(0xf7),{'filePath':_0x3ab63c,'fileType':_0x1de7f0});switch(_0x1de7f0){case'dockerfile':if(_0x1c5b03[_0x400878(0x118)]){const _0x29c46b=await this['validateDockerfile'](_0x3ab63c,_0x2ae2a4);_0x4cca2a['push'](..._0x29c46b);}if(_0x1c5b03[_0x400878(0xf1)]){const _0x2fc9d0=await this['validateWithCheckov'](_0x3ab63c,'dockerfile',_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x2fc9d0);}break;case _0x400878(0xde):if(_0x1c5b03[_0x400878(0x10d)]){const _0xc14dfd=await this['validateYAML'](_0x3ab63c,_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0xc14dfd);}if(_0x1c5b03['checkov']){const _0x3f21b7=await this[_0x400878(0xd3)](_0x3ab63c,_0x400878(0xf0),_0x2ae2a4);_0x4cca2a['push'](..._0x3f21b7);}break;case _0x400878(0xe9):if(_0x1c5b03['yamllint']){const _0x2c970f=await this['validateYAML'](_0x3ab63c,_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x2c970f);}if(_0x1c5b03['checkov']){const _0x376269=await this[_0x400878(0xd3)](_0x3ab63c,'kubernetes',_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x376269);}break;case'terraform':if(_0x1c5b03['checkov']){const _0x32f72e=await this[_0x400878(0xd3)](_0x3ab63c,'terraform',_0x2ae2a4);_0x4cca2a['push'](..._0x32f72e);}break;case _0x400878(0xf5):if(_0x1c5b03['jsonSchema']){const _0x30d811=await this[_0x400878(0x11c)](_0x3ab63c,_0x2ae2a4);_0x4cca2a['push'](..._0x30d811);}break;case'tsconfig.json':if(_0x1c5b03['jsonSchema']){const _0x1fa817=await this['validateTsConfig'](_0x3ab63c,_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x1fa817);}break;case _0x400878(0x125):if(_0x1c5b03['yamllint']){const _0x334d93=await this['validateYAML'](_0x3ab63c,_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x334d93);}break;case _0x400878(0xe8):const _0x591ed7=await this[_0x400878(0xe6)](_0x3ab63c,_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x591ed7);break;case _0x400878(0xda):if(_0x1c5b03['yamllint']){const _0x61fb33=await this[_0x400878(0x128)](_0x3ab63c,_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x61fb33);}break;default:this[_0x400878(0x132)]?.[_0x400878(0xc2)]('Unknown\x20config\x20file\x20type',{'filePath':_0x3ab63c,'fileType':_0x1de7f0});return[];}return this['normalizeResults'](_0x4cca2a);}async['validateDockerfile'](_0x1cb937,_0x519d54={}){const _0x1d4d8e=a0_0x39853d;try{const _0x2c32d8=await execAsync(_0x1d4d8e(0xf4)+_0x1cb937+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x125b18=JSON['parse'](_0x2c32d8[_0x1d4d8e(0xcf)]);return this['parseHadolintResults'](_0x125b18,_0x1cb937);}catch(_0x1f0fd4){if(_0x1f0fd4[_0x1d4d8e(0xcf)])try{const _0x1adcb2=JSON[_0x1d4d8e(0x12e)](_0x1f0fd4['stdout']);return this['parseHadolintResults'](_0x1adcb2,_0x1cb937);}catch(_0x4f1c68){this[_0x1d4d8e(0x132)]?.[_0x1d4d8e(0x119)](_0x1d4d8e(0xc3),{'error':_0x4f1c68[_0x1d4d8e(0x129)]});}return this['logger']?.['error']('hadolint\x20validation\x20failed',{'error':_0x1f0fd4[_0x1d4d8e(0x129)]}),[];}}[a0_0x39853d(0x10c)](_0x433bbb,_0x191c45){const _0x2437ee=a0_0x39853d,_0x20f8a2=[];if(Array['isArray'](_0x433bbb))for(const _0x3ffca9 of _0x433bbb){_0x20f8a2['push']({'file':_0x191c45,'line':_0x3ffca9[_0x2437ee(0x102)]||0x1,'column':_0x3ffca9[_0x2437ee(0xcc)]||0x1,'severity':this[_0x2437ee(0x105)](_0x3ffca9['level']),'rule':_0x3ffca9['code'],'message':_0x3ffca9[_0x2437ee(0x129)],'category':_0x2437ee(0x11d),'validator':_0x2437ee(0x118)});}return _0x20f8a2;}async['validateYAML'](_0x5f0f81,_0x1f2308={}){const _0x456b12=a0_0x39853d;try{const _0x4f2383=await execAsync(_0x456b12(0xff)+_0x5f0f81+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x456b12(0xe7)](_0x4f2383[_0x456b12(0xcf)],_0x5f0f81);}catch(_0x3d9c04){if(_0x3d9c04['stdout'])return this[_0x456b12(0xe7)](_0x3d9c04['stdout'],_0x5f0f81);return this[_0x456b12(0x132)]?.['error'](_0x456b12(0x11f),{'error':_0x3d9c04['message']}),[];}}[a0_0x39853d(0xe7)](_0x5a3254,_0x37a766){const _0x39335a=a0_0x39853d,_0x3868cb=[],_0x3fe5f8=_0x5a3254[_0x39335a(0xca)]('\x0a')['filter'](_0x5a001c=>_0x5a001c[_0x39335a(0xdc)]());for(const _0x280ce7 of _0x3fe5f8){const _0x1780f4=_0x280ce7[_0x39335a(0xef)](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x1780f4){const [,_0x5b94f8,_0x3d9608,_0x4145ed,_0x24d11d,_0xd53a99,_0x38a074]=_0x1780f4;_0x3868cb[_0x39335a(0x13b)]({'file':_0x37a766,'line':parseInt(_0x3d9608,0xa),'column':parseInt(_0x4145ed,0xa),'severity':this['mapYamllintSeverity'](_0x24d11d),'rule':_0x38a074,'message':_0xd53a99,'category':_0x39335a(0xda),'validator':_0x39335a(0x10d)});}}return _0x3868cb;}async[a0_0x39853d(0xd3)](_0x5ad059,_0x2c1002,_0x5c64ff={}){const _0x5eace0=a0_0x39853d;try{const _0x5377cf=await execAsync(_0x5eace0(0x113)+_0x5ad059+_0x5eace0(0x135)+_0x2c1002+'\x20--output\x20json\x20--compact',{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x5dd31c=JSON[_0x5eace0(0x12e)](_0x5377cf['stdout']);return this[_0x5eace0(0x141)](_0x5dd31c,_0x5ad059);}catch(_0x138ede){if(_0x138ede['stdout'])try{const _0x23e0d7=JSON['parse'](_0x138ede['stdout']);return this[_0x5eace0(0x141)](_0x23e0d7,_0x5ad059);}catch(_0x9b7f38){this[_0x5eace0(0x132)]?.['error'](_0x5eace0(0xf3),{'error':_0x9b7f38['message']});}return this['logger']?.['error'](_0x5eace0(0x136),{'error':_0x138ede[_0x5eace0(0x129)]}),[];}}['parseCheckovResults'](_0x4e09e7,_0xf4ba35){const _0x47a05f=a0_0x39853d,_0x1f0aeb=[];if(_0x4e09e7['results']&&_0x4e09e7[_0x47a05f(0xd0)]['failed_checks'])for(const _0x2e0ffa of _0x4e09e7[_0x47a05f(0xd0)][_0x47a05f(0x11e)]){_0x1f0aeb['push']({'file':_0xf4ba35,'line':_0x2e0ffa[_0x47a05f(0xcb)]?_0x2e0ffa['file_line_range'][0x0]:0x1,'column':0x1,'severity':this[_0x47a05f(0x10e)](_0x2e0ffa[_0x47a05f(0xfa)]),'rule':_0x2e0ffa['check_id'],'message':_0x2e0ffa[_0x47a05f(0xfc)]||_0x2e0ffa['check_id'],'category':'security','validator':_0x47a05f(0xf1),'remediation':_0x2e0ffa[_0x47a05f(0x101)],'cwe':_0x2e0ffa['cwe'],'references':_0x2e0ffa[_0x47a05f(0x101)]?[_0x2e0ffa['guideline']]:[]});}return _0x1f0aeb;}async['validatePackageJson'](_0x1a1cef,_0x51a8ae={}){const _0x25727a=a0_0x39853d;try{const _0x3f3f34=(await import(_0x25727a(0xf8)))['default'],_0xd0836=(await import('ajv-formats'))['default'],_0x2edb1d=await a0_0x44df1d['readFile'](_0x1a1cef,_0x25727a(0xbd)),_0x1aa9a5=JSON[_0x25727a(0x12e)](_0x2edb1d),_0x239ac5=new _0x3f3f34({'allErrors':!![],'strict':![]});_0xd0836(_0x239ac5);const _0x200236={'type':_0x25727a(0xc8),'required':[_0x25727a(0xfd),_0x25727a(0x13d)],'properties':{'name':{'type':_0x25727a(0x131),'pattern':_0x25727a(0xe1)},'version':{'type':'string'},'description':{'type':_0x25727a(0x131)},'main':{'type':_0x25727a(0x131)},'type':{'type':'string','enum':[_0x25727a(0xdd),_0x25727a(0x144)]},'scripts':{'type':'object'},'dependencies':{'type':'object'},'devDependencies':{'type':'object'}},'additionalProperties':!![]},_0x34d21d=_0x239ac5['compile'](_0x200236),_0x3ea7f1=_0x34d21d(_0x1aa9a5);if(!_0x3ea7f1&&_0x34d21d['errors'])return _0x34d21d[_0x25727a(0x110)][_0x25727a(0x12c)](_0x47ec41=>({'file':_0x1a1cef,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x25727a(0xcd)],'rule':_0x25727a(0x108),'message':_0x47ec41[_0x25727a(0x120)]?_0x47ec41['instancePath']+'\x20'+_0x47ec41[_0x25727a(0x129)]:_0x25727a(0x137)+_0x47ec41[_0x25727a(0xfb)][_0x25727a(0x13e)]+'\x27','category':_0x25727a(0xbc),'validator':'json-schema'}));return[];}catch(_0x4ce307){return this['logger']?.[_0x25727a(0x119)](_0x25727a(0x116),{'error':_0x4ce307['message']}),[{'file':_0x1a1cef,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x25727a(0x111)][_0x25727a(0xcd)],'rule':_0x25727a(0xee),'message':'Invalid\x20JSON:\x20'+_0x4ce307[_0x25727a(0x129)],'category':_0x25727a(0xc5),'validator':'json-parse'}];}}async['validateTsConfig'](_0x4eb17e,_0x358904={}){const _0x221c14=a0_0x39853d;try{const _0x2ba509=await a0_0x44df1d[_0x221c14(0x122)](_0x4eb17e,'utf-8'),_0x458fdd=JSON['parse'](_0x2ba509),_0x5d0cd7=[];if(_0x458fdd['compilerOptions']){const _0x369ac6=_0x458fdd[_0x221c14(0x10b)];!_0x369ac6[_0x221c14(0x104)]&&_0x5d0cd7['push']({'file':_0x4eb17e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x221c14(0x111)][_0x221c14(0x124)],'rule':_0x221c14(0x123),'message':'Consider\x20enabling\x20\x22strict\x22\x20mode\x20for\x20better\x20type\x20safety','category':_0x221c14(0xc9),'validator':'tsconfig-validator'}),_0x369ac6[_0x221c14(0x112)]===![]&&_0x5d0cd7[_0x221c14(0x13b)]({'file':_0x4eb17e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x221c14(0x124)],'rule':_0x221c14(0x130),'message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':_0x221c14(0xc9),'validator':_0x221c14(0xdf)});}return _0x5d0cd7;}catch(_0x1e72ec){return this[_0x221c14(0x132)]?.['error'](_0x221c14(0x12a),{'error':_0x1e72ec[_0x221c14(0x129)]}),[{'file':_0x4eb17e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x221c14(0x111)]['ERROR'],'rule':_0x221c14(0xee),'message':_0x221c14(0x114)+_0x1e72ec['message'],'category':'syntax','validator':'json-parse'}];}}async['validateEnvFile'](_0x39b401,_0xa7cb1={}){const _0x5ab95e=a0_0x39853d;try{const _0x1b0afd=await a0_0x44df1d[_0x5ab95e(0x122)](_0x39b401,_0x5ab95e(0xbd)),_0x4baea7=[],_0x6525cf=_0x1b0afd['split']('\x0a'),_0x22fb6f=[{'pattern':/password|passwd|pwd/i,'name':_0x5ab95e(0xd6)},{'pattern':/api[_-]?key/i,'name':_0x5ab95e(0x11b)},{'pattern':/secret/i,'name':'secret'},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':'private\x20key'},{'pattern':/aws[_-]?access/i,'name':_0x5ab95e(0xce)}];return _0x6525cf[_0x5ab95e(0xc1)]((_0x33b8f3,_0x4b8dbf)=>{const _0x513495=_0x5ab95e,_0x23106e=_0x33b8f3[_0x513495(0xdc)]();if(!_0x23106e||_0x23106e['startsWith']('#'))return;if(_0x23106e['includes']('=')){const [_0xcdad84,_0x29b85b]=_0x23106e['split']('='),_0x365d5f=_0xcdad84[_0x513495(0xdb)](),_0x40ba44=_0x29b85b?.['trim']()||'',_0x9fcdea=_0x40ba44&&_0x40ba44!==''&&!_0x40ba44['startsWith']('$')&&_0x40ba44!==_0x513495(0x12b)&&_0x40ba44!==_0x513495(0x138)&&_0x40ba44[_0x513495(0x106)]>0x5;if(_0x9fcdea)for(const {pattern:_0x2e51ef,name:_0x21fc00}of _0x22fb6f){if(_0x2e51ef['test'](_0x365d5f)){_0x4baea7['push']({'file':_0x39b401,'line':_0x4b8dbf+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x513495(0x111)]['CRITICAL'],'rule':'hardcoded-secret','message':_0x513495(0xc0)+_0x21fc00+_0x513495(0xec),'category':_0x513495(0x109),'validator':_0x513495(0x12f),'remediation':'Use\x20environment-specific\x20.env\x20files\x20and\x20add\x20.env\x20to\x20.gitignore'});break;}}}}),_0x4baea7;}catch(_0x399a2d){return this[_0x5ab95e(0x132)]?.['error'](_0x5ab95e(0xd7),{'error':_0x399a2d[_0x5ab95e(0x129)]}),[];}}['detectFileType'](_0x9f81a4){const _0x8e0c35=a0_0x39853d,_0x6cdfa0=a0_0xa27771['basename'](_0x9f81a4)[_0x8e0c35(0xdb)](),_0x4e79d3=a0_0xa27771['dirname'](_0x9f81a4);if(_0x6cdfa0==='dockerfile')return _0x8e0c35(0x11d);if(_0x6cdfa0==='docker-compose.yml'||_0x6cdfa0===_0x8e0c35(0xc6))return _0x8e0c35(0xde);if(_0x6cdfa0===_0x8e0c35(0xf5))return _0x8e0c35(0xf5);if(_0x6cdfa0===_0x8e0c35(0x133))return _0x8e0c35(0x133);if(_0x6cdfa0==='.env'||_0x6cdfa0['endsWith'](_0x8e0c35(0x126)))return _0x8e0c35(0xe8);if(_0x4e79d3['includes']('.github/workflows'))return _0x8e0c35(0x125);if(_0x4e79d3['includes']('kubernetes')||_0x4e79d3[_0x8e0c35(0xd8)](_0x8e0c35(0xf6)))return _0x8e0c35(0xe9);const _0x5cc345=a0_0xa27771['extname'](_0x9f81a4)['toLowerCase']();if(_0x5cc345==='.tf'||_0x5cc345===_0x8e0c35(0xe4))return _0x8e0c35(0xd4);if(_0x5cc345==='.yml'||_0x5cc345==='.yaml')return _0x8e0c35(0xda);if(_0x5cc345===_0x8e0c35(0x142))return _0x8e0c35(0x11a);return _0x8e0c35(0x140);}['normalizeResults'](_0x15c40b){const _0x4b6ec6=a0_0x39853d;return _0x15c40b['map'](_0x568e7b=>({'file':_0x568e7b['file'],'line':_0x568e7b['line']||0x1,'column':_0x568e7b['column']||0x1,'severity':_0x568e7b[_0x4b6ec6(0x115)]||STATIC_ANALYSIS['SEVERITY'][_0x4b6ec6(0x124)],'rule':_0x568e7b[_0x4b6ec6(0x100)]||_0x4b6ec6(0x140),'message':_0x568e7b['message']||_0x4b6ec6(0xbe),'category':_0x568e7b['category']||_0x4b6ec6(0xbc),'validator':_0x568e7b[_0x4b6ec6(0xd1)],'cwe':_0x568e7b['cwe']||null,'remediation':_0x568e7b['remediation']||null,'references':_0x568e7b[_0x4b6ec6(0xd5)]||[]}));}['mapHadolintSeverity'](_0x588996){const _0x1cf4c0=a0_0x39853d,_0x2c486f={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS[_0x1cf4c0(0x111)]['WARNING'],'info':STATIC_ANALYSIS[_0x1cf4c0(0x111)]['INFO'],'style':STATIC_ANALYSIS[_0x1cf4c0(0x111)]['INFO']};return _0x2c486f[_0x588996?.[_0x1cf4c0(0xdb)]()]||STATIC_ANALYSIS['SEVERITY'][_0x1cf4c0(0x124)];}['mapYamllintSeverity'](_0x52e625){const _0x196a0e=a0_0x39853d,_0x38becf={'error':STATIC_ANALYSIS[_0x196a0e(0x111)][_0x196a0e(0xcd)],'warning':STATIC_ANALYSIS['SEVERITY']['WARNING']};return _0x38becf[_0x52e625?.[_0x196a0e(0xdb)]()]||STATIC_ANALYSIS['SEVERITY']['WARNING'];}['mapCheckovSeverity'](_0x31e4b1){const _0x22aa56=a0_0x39853d;return STATIC_ANALYSIS[_0x22aa56(0x111)]['ERROR'];}async['getValidatorStatus'](){const _0x5a0d90=a0_0x39853d,_0x36f2a3=await this[_0x5a0d90(0xea)]();return{'validators':_0x36f2a3,'recommendations':this[_0x5a0d90(0x13f)](_0x36f2a3)};}[a0_0x39853d(0x13f)](_0x1c25b7){const _0x174679=a0_0x39853d,_0x3d949d=[];return!_0x1c25b7['checkov']&&_0x3d949d['push']({'validator':_0x174679(0xf1),'reason':'Infrastructure\x20as\x20Code\x20security\x20scanning\x20(Docker,\x20Kubernetes,\x20Terraform)','install':'pip\x20install\x20checkov','priority':_0x174679(0x107)}),!_0x1c25b7['hadolint']&&_0x3d949d[_0x174679(0x13b)]({'validator':_0x174679(0x118),'reason':_0x174679(0xeb),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':_0x174679(0x107)}),!_0x1c25b7[_0x174679(0x10d)]&&_0x3d949d[_0x174679(0x13b)]({'validator':'yamllint','reason':_0x174679(0xed),'install':'pip\x20install\x20yamllint','priority':'medium'}),!_0x1c25b7[_0x174679(0xf2)]&&_0x3d949d[_0x174679(0x13b)]({'validator':_0x174679(0x10a),'reason':_0x174679(0x117),'install':'npm\x20install\x20ajv\x20ajv-formats','priority':_0x174679(0xe3)}),_0x3d949d;}}export default ConfigValidator;
|
|
1
|
+
const a0_0x329759=a0_0x28f2;(function(_0x30edc1,_0x3183d3){const _0x3fbf88=a0_0x28f2,_0xcc664=_0x30edc1();while(!![]){try{const _0x1e02cd=-parseInt(_0x3fbf88(0x1bc))/0x1*(parseInt(_0x3fbf88(0x1c1))/0x2)+parseInt(_0x3fbf88(0x213))/0x3+parseInt(_0x3fbf88(0x1e5))/0x4+parseInt(_0x3fbf88(0x1dd))/0x5*(-parseInt(_0x3fbf88(0x1e1))/0x6)+parseInt(_0x3fbf88(0x1be))/0x7*(-parseInt(_0x3fbf88(0x1ce))/0x8)+parseInt(_0x3fbf88(0x21a))/0x9+parseInt(_0x3fbf88(0x20f))/0xa*(parseInt(_0x3fbf88(0x20c))/0xb);if(_0x1e02cd===_0x3183d3)break;else _0xcc664['push'](_0xcc664['shift']());}catch(_0x18b231){_0xcc664['push'](_0xcc664['shift']());}}}(a0_0x4d8b,0xd5ebf));import{exec}from'child_process';import{promisify}from'util';function a0_0x4d8b(){const _0x244878=['CMvHzezPBgu','EwfTBa','Aw5ZDgfUy2vqyxrO','y29Kzq','mtm3nxLQwLHntG','AgfYzgnVzgvKlxnLy3jLDa','AZHZ','mtuZnJb1B3zHveO','ywP2icHku09oifnJAgvTysK','y2f0zwDVCNK','ANnVBLnJAgvTyq','mJm3mta3muznwurItG','BwfWsgfKB2XPBNrtzxzLCML0Eq','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','BgLUzq','zxjYB3jZ','z3vPzgvSAw5L','y2HLy2TFy2XHC3m','nJe2nZuXmwPTuuzMua','Ew91CI1RzxKTAgvYzq','zMfPBgvKx2nOzwnRCW','C3rYAw5N','y2HLy2TFAwq','BwvKAxvT','C3bSAxq','ywP2lwzVCM1HDhm','BM8TAw1WBgLJAxqTyw55','BM9YBwfSAxPLuMvZDwX0CW','B2jQzwn0','AgfKB2XPBNqGls1MB3jTyxqGANnVBIaI','DMfSAwrHDgvfBNzgAwXL','DhnJB25MAwCTDMfSAwrHDg9Y','ywP2','zMLSzv9SAw5Lx3jHBMDL','DMvYC2LVBG','C3rYAwn0','u0vwrvjjvfK','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','su5gtW','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','Dg9Rzw4','rvjst1i','v0fstKLorW','ANnVBI1Zy2HLBwe','igrLDgvJDgvKigLUic5LBNyGzMLSzq','AxnbCNjHEq','nJKWodi2svDoC2rR','CNvSzq','nJm5nZC5AwDhEw5b','Dw5RBM93BG','lNrMDMfYCW','mM1iqMfjqG','CMvZDwX0CW','y29TCgLSzxjpChrPB25Z','BMfTzq','AgfKB2XPBNqGls12zxjZAw9U','AgfKB2XPBNqGDMfSAwrHDgLVBIbMywLSzwq','CgfYC2viywrVBgLUDfjLC3vSDhm','CMvTzwrPyxrPB24','DMfSAwrHDgvzqu1m','ChjPDMf0zsbRzxK','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','DMfSAwrHDgveB2nRzxjMAwXL','C2vJCMv0','ohfIuMTPuG','CgfYC2vzyw1SBgLUDfjLC3vSDhm','EwfTBgXPBNqGzgv0zwn0zwq','DgvYCMfMB3jT','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','y29SDw1U','D2fYBG','lMvUDG','zg9JA2vYlwnVBxbVC2u','ANnVBI1WyxjZzq','y29TCgLSzq','BwvZC2fNzq','EwfTBgXPBNqGDMfSAwrHDgLVBIbMywLSzwq','sw52ywXPzcbku09ooIa','C3rKB3v0','mJy2oda1nuz4reTHvW','rgLZywjSAw5Nig5Vsw1WBgLJAxrbBNKGCMvKDwnLCYb0ExbLihnHzMv0Eq','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','AgfKB2XPBNq','mtH2BMH1EuS','BwfW','DxrMltG','AgLNAa','nJm2nJu3mMvuz0HoCG','EwfTBgXPBNq','y2HLy2TVDG','CgfYC2vdAgvJA292uMvZDwX0CW','zxjYB3i','z2L0AhvIlwfJDgLVBNm','y2HHBMDLBwu','qvDtignYzwrLBNrPywXZ','C3LUDgf4','DMfSAwrHDgvxAxrOq2HLy2TVDG','z2v0vMfSAwrHDg9Yu3rHDhvZ','BwfWq2HLy2TVDLnLDMvYAxr5','CgfYC2u','rMfPBgvKihrVihbHCNnLigHHzg9SAw50ig91Dhb1Da','CgLWigLUC3rHBgWGy2HLy2TVDG','CgfJA2fNzs5QC29U','zgvMyxvSDa','ChvZAa','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','zg9JA2vYzMLSzq','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','Dg9mB3DLCKnHC2u','zgvIDwC','CgLWigLUC3rHBgWGEwfTBgXPBNq','Bg9Nz2vY','q1jjveLdquW','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','DMfSAwrHDgLVBG','zw52lxzHBgLKyxrVCG','yxzHAwXHyMXLu2nHBM5LCNm','DhjPBq','EwfTBgXPBNqGBM90igf2ywLSywjSzq','DhnJB25MAwCUANnVBIb2ywXPzgf0Aw9UigzHAwXLza','iIaTlwzYyw1LD29YAYa','BM9jBxbSAwnPDefUEq'];a0_0x4d8b=function(){return _0x244878;};return a0_0x4d8b();}import a0_0x54bbf5 from'path';import a0_0x306c35 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';function a0_0x28f2(_0x5416f8,_0xa2d660){_0x5416f8=_0x5416f8-0x1af;const _0x4d8bb5=a0_0x4d8b();let _0x28f24b=_0x4d8bb5[_0x5416f8];if(a0_0x28f2['Ursstq']===undefined){var _0x415d8d=function(_0x3b25f6){const _0x33bc41='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x54bbf5='',_0x306c35='';for(let _0x4876f2=0x0,_0x296a5a,_0x2ded73,_0x50b9c0=0x0;_0x2ded73=_0x3b25f6['charAt'](_0x50b9c0++);~_0x2ded73&&(_0x296a5a=_0x4876f2%0x4?_0x296a5a*0x40+_0x2ded73:_0x2ded73,_0x4876f2++%0x4)?_0x54bbf5+=String['fromCharCode'](0xff&_0x296a5a>>(-0x2*_0x4876f2&0x6)):0x0){_0x2ded73=_0x33bc41['indexOf'](_0x2ded73);}for(let _0x392840=0x0,_0x1b264d=_0x54bbf5['length'];_0x392840<_0x1b264d;_0x392840++){_0x306c35+='%'+('00'+_0x54bbf5['charCodeAt'](_0x392840)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x306c35);};a0_0x28f2['OdDhBJ']=_0x415d8d,a0_0x28f2['pvQtpd']={},a0_0x28f2['Ursstq']=!![];}const _0xea376f=_0x4d8bb5[0x0],_0x2ba8ba=_0x5416f8+_0xea376f,_0x19b09e=a0_0x28f2['pvQtpd'][_0x2ba8ba];return!_0x19b09e?(_0x28f24b=a0_0x28f2['OdDhBJ'](_0x28f24b),a0_0x28f2['pvQtpd'][_0x2ba8ba]=_0x28f24b):_0x28f24b=_0x19b09e,_0x28f24b;}const execAsync=promisify(exec);class ConfigValidator{constructor(_0x4876f2=null){this['logger']=_0x4876f2,this['availableScanners']=null,this['scannerCache']=new Map();}async['detectAvailableValidators'](){const _0x47f3a2=a0_0x28f2;if(this[_0x47f3a2(0x202)]!==null)return this[_0x47f3a2(0x202)];const _0x296a5a={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync('checkov\x20--version',{'timeout':0x1388}),_0x296a5a[_0x47f3a2(0x1e7)]=!![],this[_0x47f3a2(0x1fd)]?.[_0x47f3a2(0x1fb)]('checkov\x20detected');}catch(_0x2ded73){this['logger']?.[_0x47f3a2(0x1fb)](_0x47f3a2(0x1f7),{'error':_0x2ded73['message']});}try{await execAsync(_0x47f3a2(0x1c5),{'timeout':0x1388}),_0x296a5a[_0x47f3a2(0x1e0)]=!![],this['logger']?.['debug']('hadolint\x20detected');}catch(_0x50b9c0){this[_0x47f3a2(0x1fd)]?.['debug']('hadolint\x20not\x20available',{'error':_0x50b9c0['message']});}try{await execAsync('yamllint\x20--version',{'timeout':0x1388}),_0x296a5a['yamllint']=!![],this[_0x47f3a2(0x1fd)]?.[_0x47f3a2(0x1fb)](_0x47f3a2(0x1d0));}catch(_0x392840){this[_0x47f3a2(0x1fd)]?.['debug'](_0x47f3a2(0x204),{'error':_0x392840['message']});}try{await import('ajv'),_0x296a5a['jsonSchema']=!![],this[_0x47f3a2(0x1fd)]?.[_0x47f3a2(0x1fb)]('JSON\x20Schema\x20validation\x20available');}catch(_0x1b264d){this['logger']?.['debug']('ajv\x20not\x20available',{'error':_0x1b264d['message']});}return this['availableScanners']=_0x296a5a,_0x296a5a;}async['validate'](_0x27bd8c,_0x3f8405={}){const _0x196c65=a0_0x28f2,_0x46ede6=[],_0x28afc6=await this[_0x196c65(0x1f9)](),_0x56be01=this['detectFileType'](_0x27bd8c);this['logger']?.['debug']('Validating\x20config\x20file',{'filePath':_0x27bd8c,'fileType':_0x56be01});switch(_0x56be01){case'dockerfile':if(_0x28afc6['hadolint']){const _0x27581a=await this[_0x196c65(0x1cc)](_0x27bd8c,_0x3f8405);_0x46ede6[_0x196c65(0x1f6)](..._0x27581a);}if(_0x28afc6['checkov']){const _0x154d1c=await this['validateWithCheckov'](_0x27bd8c,_0x196c65(0x1f8),_0x3f8405);_0x46ede6[_0x196c65(0x1f6)](..._0x154d1c);}break;case'docker-compose':if(_0x28afc6[_0x196c65(0x1e6)]){const _0x3d330d=await this['validateYAML'](_0x27bd8c,_0x3f8405);_0x46ede6['push'](..._0x3d330d);}if(_0x28afc6[_0x196c65(0x1e7)]){const _0x21327d=await this[_0x196c65(0x1ee)](_0x27bd8c,'docker_compose',_0x3f8405);_0x46ede6['push'](..._0x21327d);}break;case'kubernetes':if(_0x28afc6[_0x196c65(0x1e6)]){const _0x43ac79=await this[_0x196c65(0x1c9)](_0x27bd8c,_0x3f8405);_0x46ede6[_0x196c65(0x1f6)](..._0x43ac79);}if(_0x28afc6[_0x196c65(0x1e7)]){const _0x24ce0f=await this[_0x196c65(0x1ee)](_0x27bd8c,'kubernetes',_0x3f8405);_0x46ede6['push'](..._0x24ce0f);}break;case _0x196c65(0x1d1):if(_0x28afc6[_0x196c65(0x1e7)]){const _0x1e79be=await this[_0x196c65(0x1ee)](_0x27bd8c,_0x196c65(0x1d1),_0x3f8405);_0x46ede6['push'](..._0x1e79be);}break;case _0x196c65(0x1f4):if(_0x28afc6['jsonSchema']){const _0x121314=await this['validatePackageJson'](_0x27bd8c,_0x3f8405);_0x46ede6['push'](..._0x121314);}break;case'tsconfig.json':if(_0x28afc6[_0x196c65(0x212)]){const _0x4a5ff7=await this['validateTsConfig'](_0x27bd8c,_0x3f8405);_0x46ede6['push'](..._0x4a5ff7);}break;case'github-actions':if(_0x28afc6['yamllint']){const _0x163e0a=await this['validateYAML'](_0x27bd8c,_0x3f8405);_0x46ede6[_0x196c65(0x1f6)](..._0x163e0a);}break;case'env':const _0x1587f5=await this[_0x196c65(0x226)](_0x27bd8c,_0x3f8405);_0x46ede6[_0x196c65(0x1f6)](..._0x1587f5);break;case'yaml':if(_0x28afc6[_0x196c65(0x1e6)]){const _0x5adb4c=await this[_0x196c65(0x1c9)](_0x27bd8c,_0x3f8405);_0x46ede6['push'](..._0x5adb4c);}break;default:this['logger']?.[_0x196c65(0x1d4)](_0x196c65(0x1b3),{'filePath':_0x27bd8c,'fileType':_0x56be01});return[];}return this[_0x196c65(0x223)](_0x46ede6);}async['validateDockerfile'](_0x4e6fa6,_0x1b7138={}){const _0x3a2417=a0_0x28f2;try{const _0x4ee708=await execAsync(_0x3a2417(0x225)+_0x4e6fa6+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x418e44=JSON[_0x3a2417(0x1f1)](_0x4ee708['stdout']);return this[_0x3a2417(0x1c7)](_0x418e44,_0x4e6fa6);}catch(_0x37ae47){if(_0x37ae47[_0x3a2417(0x1dc)])try{const _0x44c821=JSON['parse'](_0x37ae47[_0x3a2417(0x1dc)]);return this['parseHadolintResults'](_0x44c821,_0x4e6fa6);}catch(_0x2d7d62){this['logger']?.[_0x3a2417(0x1e9)](_0x3a2417(0x1f2),{'error':_0x2d7d62[_0x3a2417(0x1d9)]});}return this['logger']?.['error'](_0x3a2417(0x1c6),{'error':_0x37ae47['message']}),[];}}[a0_0x329759(0x1c7)](_0x2d5643,_0x5b68f2){const _0x2e2d62=a0_0x329759,_0x2d422c=[];if(Array[_0x2e2d62(0x1bb)](_0x2d5643))for(const _0x84e892 of _0x2d5643){_0x2d422c['push']({'file':_0x5b68f2,'line':_0x84e892[_0x2e2d62(0x216)]||0x1,'column':_0x84e892[_0x2e2d62(0x1d3)]||0x1,'severity':this['mapHadolintSeverity'](_0x84e892['level']),'rule':_0x84e892[_0x2e2d62(0x20b)],'message':_0x84e892['message'],'category':'dockerfile','validator':_0x2e2d62(0x1e0)});}return _0x2d422c;}async[a0_0x329759(0x1c9)](_0x1265b8,_0x69e206={}){const _0x4a71be=a0_0x329759;try{const _0x441bce=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x1265b8+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x4a71be(0x1cf)](_0x441bce[_0x4a71be(0x1dc)],_0x1265b8);}catch(_0x29a26b){if(_0x29a26b[_0x4a71be(0x1dc)])return this[_0x4a71be(0x1cf)](_0x29a26b[_0x4a71be(0x1dc)],_0x1265b8);return this[_0x4a71be(0x1fd)]?.['error'](_0x4a71be(0x1da),{'error':_0x29a26b['message']}),[];}}[a0_0x329759(0x1cf)](_0x1661e9,_0x85b16c){const _0x4cc530=a0_0x329759,_0x264433=[],_0x29c542=_0x1661e9[_0x4cc530(0x220)]('\x0a')['filter'](_0x277436=>_0x277436[_0x4cc530(0x203)]());for(const _0x47beae of _0x29c542){const _0x5f2972=_0x47beae['match'](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x5f2972){const [,_0x2e3f58,_0x273fc7,_0x348a63,_0x3d46b9,_0x2cb5eb,_0x1890c0]=_0x5f2972;_0x264433[_0x4cc530(0x1f6)]({'file':_0x85b16c,'line':parseInt(_0x273fc7,0xa),'column':parseInt(_0x348a63,0xa),'severity':this['mapYamllintSeverity'](_0x3d46b9),'rule':_0x1890c0,'message':_0x2cb5eb,'category':_0x4cc530(0x209),'validator':'yamllint'});}}return _0x264433;}async['validateWithCheckov'](_0x1b402f,_0x50c03c,_0x16eda9={}){const _0x1624ef=a0_0x329759;try{const _0x32708c=await execAsync('checkov\x20-f\x20\x22'+_0x1b402f+_0x1624ef(0x206)+_0x50c03c+'\x20--output\x20json\x20--compact',{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x55338e=JSON['parse'](_0x32708c['stdout']);return this[_0x1624ef(0x1e8)](_0x55338e,_0x1b402f);}catch(_0x2c0049){if(_0x2c0049[_0x1624ef(0x1dc)])try{const _0x4e06c7=JSON[_0x1624ef(0x1f1)](_0x2c0049['stdout']);return this[_0x1624ef(0x1e8)](_0x4e06c7,_0x1b402f);}catch(_0x3c0508){this['logger']?.['error']('Failed\x20to\x20parse\x20checkov\x20output',{'error':_0x3c0508['message']});}return this[_0x1624ef(0x1fd)]?.[_0x1624ef(0x1e9)]('checkov\x20validation\x20failed',{'error':_0x2c0049['message']}),[];}}[a0_0x329759(0x1e8)](_0x10708b,_0x4a7ad6){const _0x140d93=a0_0x329759,_0x329daa=[];if(_0x10708b[_0x140d93(0x1c2)]&&_0x10708b[_0x140d93(0x1c2)][_0x140d93(0x21c)])for(const _0x8aa4d6 of _0x10708b['results'][_0x140d93(0x21c)]){_0x329daa['push']({'file':_0x4a7ad6,'line':_0x8aa4d6[_0x140d93(0x1af)]?_0x8aa4d6['file_line_range'][0x0]:0x1,'column':0x1,'severity':this['mapCheckovSeverity'](_0x8aa4d6[_0x140d93(0x219)]),'rule':_0x8aa4d6[_0x140d93(0x21e)],'message':_0x8aa4d6['check_name']||_0x8aa4d6[_0x140d93(0x21e)],'category':'security','validator':'checkov','remediation':_0x8aa4d6['guideline'],'cwe':_0x8aa4d6['cwe'],'references':_0x8aa4d6[_0x140d93(0x218)]?[_0x8aa4d6[_0x140d93(0x218)]]:[]});}return _0x329daa;}async['validatePackageJson'](_0x4841a8,_0x47b51e={}){const _0x12eb56=a0_0x329759;try{const _0x15c2a5=(await import(_0x12eb56(0x228)))['default'],_0x199c12=(await import(_0x12eb56(0x221)))[_0x12eb56(0x1f5)],_0x19b5e9=await a0_0x306c35[_0x12eb56(0x208)](_0x4841a8,_0x12eb56(0x1e3)),_0x44d595=JSON[_0x12eb56(0x1f1)](_0x19b5e9),_0x1b91d5=new _0x15c2a5({'allErrors':!![],'strict':![]});_0x199c12(_0x1b91d5);const _0x7b65ae={'type':'object','required':[_0x12eb56(0x1c4),_0x12eb56(0x1b0)],'properties':{'name':{'type':'string','pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':_0x12eb56(0x21d)},'description':{'type':_0x12eb56(0x21d)},'main':{'type':_0x12eb56(0x21d)},'type':{'type':_0x12eb56(0x21d),'enum':['module','commonjs']},'scripts':{'type':_0x12eb56(0x224)},'dependencies':{'type':_0x12eb56(0x224)},'devDependencies':{'type':'object'}},'additionalProperties':!![]},_0x5a1152=_0x1b91d5[_0x12eb56(0x1d8)](_0x7b65ae),_0x30e03e=_0x5a1152(_0x44d595);if(!_0x30e03e&&_0x5a1152['errors'])return _0x5a1152[_0x12eb56(0x217)][_0x12eb56(0x1e2)](_0x56d4b1=>({'file':_0x4841a8,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x12eb56(0x1b2)][_0x12eb56(0x1b7)],'rule':'json-schema','message':_0x56d4b1['instancePath']?_0x56d4b1[_0x12eb56(0x20a)]+'\x20'+_0x56d4b1['message']:_0x12eb56(0x1df)+_0x56d4b1['params']['missingProperty']+'\x27','category':_0x12eb56(0x200),'validator':_0x12eb56(0x1b9)}));return[];}catch(_0x1a18df){return this[_0x12eb56(0x1fd)]?.['error']('package.json\x20validation\x20failed',{'error':_0x1a18df[_0x12eb56(0x1d9)]}),[{'file':_0x4841a8,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x12eb56(0x1b2)]['ERROR'],'rule':_0x12eb56(0x1d7),'message':'Invalid\x20JSON:\x20'+_0x1a18df['message'],'category':_0x12eb56(0x1ed),'validator':'json-parse'}];}}async['validateTsConfig'](_0x3be73e,_0x2ccb65={}){const _0x2ad948=a0_0x329759;try{const _0x4652cb=await a0_0x306c35['readFile'](_0x3be73e,_0x2ad948(0x1e3)),_0x3804aa=JSON['parse'](_0x4652cb),_0x40aa5a=[];if(_0x3804aa[_0x2ad948(0x1c3)]){const _0x520918=_0x3804aa['compilerOptions'];!_0x520918[_0x2ad948(0x1b1)]&&_0x40aa5a[_0x2ad948(0x1f6)]({'file':_0x3be73e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x2ad948(0x1b8)],'rule':'strict-mode','message':_0x2ad948(0x1d2),'category':'best-practice','validator':'tsconfig-validator'}),_0x520918[_0x2ad948(0x207)]===![]&&_0x40aa5a[_0x2ad948(0x1f6)]({'file':_0x3be73e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x2ad948(0x1b8)],'rule':_0x2ad948(0x222),'message':_0x2ad948(0x1de),'category':'best-practice','validator':_0x2ad948(0x227)});}return _0x40aa5a;}catch(_0x335df3){return this[_0x2ad948(0x1fd)]?.[_0x2ad948(0x1e9)](_0x2ad948(0x205),{'error':_0x335df3[_0x2ad948(0x1d9)]}),[{'file':_0x3be73e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':'json-parse','message':_0x2ad948(0x1db)+_0x335df3[_0x2ad948(0x1d9)],'category':_0x2ad948(0x1ed),'validator':'json-parse'}];}}async['validateEnvFile'](_0x4b6f55,_0x1a3371={}){const _0x55e168=a0_0x329759;try{const _0x171a2d=await a0_0x306c35[_0x55e168(0x208)](_0x4b6f55,'utf-8'),_0x5bb257=[],_0x58ac05=_0x171a2d['split']('\x0a'),_0x548490=[{'pattern':/password|passwd|pwd/i,'name':'password'},{'pattern':/api[_-]?key/i,'name':'API\x20key'},{'pattern':/secret/i,'name':_0x55e168(0x1cd)},{'pattern':/token/i,'name':_0x55e168(0x1b6)},{'pattern':/private[_-]?key/i,'name':_0x55e168(0x1ca)},{'pattern':/aws[_-]?access/i,'name':_0x55e168(0x1ec)}];return _0x58ac05['forEach']((_0x9da3c5,_0xf146ac)=>{const _0x41674f=_0x55e168,_0x147f44=_0x9da3c5[_0x41674f(0x203)]();if(!_0x147f44||_0x147f44['startsWith']('#'))return;if(_0x147f44['includes']('=')){const [_0x50d498,_0x1f539c]=_0x147f44[_0x41674f(0x220)]('='),_0x1af8e0=_0x50d498['toLowerCase'](),_0x354513=_0x1f539c?.[_0x41674f(0x203)]()||'',_0x430cad=_0x354513&&_0x354513!==''&&!_0x354513['startsWith']('$')&&_0x354513!==_0x41674f(0x21b)&&_0x354513!==_0x41674f(0x1eb)&&_0x354513['length']>0x5;if(_0x430cad)for(const {pattern:_0x50db2c,name:_0x3e2660}of _0x548490){if(_0x50db2c['test'](_0x1af8e0)){_0x5bb257[_0x41674f(0x1f6)]({'file':_0x4b6f55,'line':_0xf146ac+0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x41674f(0x1fe)],'rule':_0x41674f(0x20d),'message':'Potential\x20hardcoded\x20'+_0x3e2660+_0x41674f(0x1ba),'category':'security','validator':_0x41674f(0x201),'remediation':_0x41674f(0x1b5)});break;}}}}),_0x5bb257;}catch(_0x27c6ea){return this['logger']?.[_0x55e168(0x1e9)](_0x55e168(0x215),{'error':_0x27c6ea['message']}),[];}}['detectFileType'](_0x359b61){const _0x9ebccb=a0_0x329759,_0x4577b5=a0_0x54bbf5['basename'](_0x359b61)[_0x9ebccb(0x1fa)](),_0xd815b2=a0_0x54bbf5['dirname'](_0x359b61);if(_0x4577b5==='dockerfile')return _0x9ebccb(0x1f8);if(_0x4577b5==='docker-compose.yml'||_0x4577b5==='docker-compose.yaml')return _0x9ebccb(0x1d6);if(_0x4577b5===_0x9ebccb(0x1f4))return _0x9ebccb(0x1f4);if(_0x4577b5==='tsconfig.json')return'tsconfig.json';if(_0x4577b5===_0x9ebccb(0x1d5)||_0x4577b5['endsWith'](_0x9ebccb(0x1d5)))return'env';if(_0xd815b2['includes']('.github/workflows'))return _0x9ebccb(0x1ea);if(_0xd815b2['includes']('kubernetes')||_0xd815b2['includes'](_0x9ebccb(0x20e)))return'kubernetes';const _0x2eb3d5=a0_0x54bbf5['extname'](_0x359b61)['toLowerCase']();if(_0x2eb3d5==='.tf'||_0x2eb3d5===_0x9ebccb(0x1c0))return _0x9ebccb(0x1d1);if(_0x2eb3d5==='.yml'||_0x2eb3d5==='.yaml')return _0x9ebccb(0x209);if(_0x2eb3d5==='.json')return'json';return _0x9ebccb(0x1bf);}['normalizeResults'](_0x9ac7dc){const _0x5eed79=a0_0x329759;return _0x9ac7dc['map'](_0x3eee31=>({'file':_0x3eee31['file'],'line':_0x3eee31[_0x5eed79(0x216)]||0x1,'column':_0x3eee31['column']||0x1,'severity':_0x3eee31['severity']||STATIC_ANALYSIS['SEVERITY'][_0x5eed79(0x1b8)],'rule':_0x3eee31[_0x5eed79(0x1bd)]||_0x5eed79(0x1bf),'message':_0x3eee31['message']||'Validation\x20issue\x20detected','category':_0x3eee31[_0x5eed79(0x211)]||'validation','validator':_0x3eee31['validator'],'cwe':_0x3eee31['cwe']||null,'remediation':_0x3eee31[_0x5eed79(0x1c8)]||null,'references':_0x3eee31['references']||[]}));}[a0_0x329759(0x214)](_0x4a99ce){const _0x34f504=a0_0x329759,_0x1bf8e9={'error':STATIC_ANALYSIS[_0x34f504(0x1b2)][_0x34f504(0x1b7)],'warning':STATIC_ANALYSIS[_0x34f504(0x1b2)]['WARNING'],'info':STATIC_ANALYSIS['SEVERITY'][_0x34f504(0x1b4)],'style':STATIC_ANALYSIS[_0x34f504(0x1b2)]['INFO']};return _0x1bf8e9[_0x4a99ce?.[_0x34f504(0x1fa)]()]||STATIC_ANALYSIS['SEVERITY']['WARNING'];}['mapYamllintSeverity'](_0x4f5f62){const _0x1f21b5=a0_0x329759,_0x518de6={'error':STATIC_ANALYSIS[_0x1f21b5(0x1b2)]['ERROR'],'warning':STATIC_ANALYSIS[_0x1f21b5(0x1b2)]['WARNING']};return _0x518de6[_0x4f5f62?.[_0x1f21b5(0x1fa)]()]||STATIC_ANALYSIS['SEVERITY'][_0x1f21b5(0x1b8)];}[a0_0x329759(0x1f0)](_0x4aba59){const _0x7504ea=a0_0x329759;return STATIC_ANALYSIS[_0x7504ea(0x1b2)][_0x7504ea(0x1b7)];}async[a0_0x329759(0x1ef)](){const _0x374faf=a0_0x329759,_0x1cfcdc=await this[_0x374faf(0x1f9)]();return{'validators':_0x1cfcdc,'recommendations':this['getInstallRecommendations'](_0x1cfcdc)};}['getInstallRecommendations'](_0x4c5de9){const _0x4766fe=a0_0x329759,_0x3fc82c=[];return!_0x4c5de9['checkov']&&_0x3fc82c['push']({'validator':_0x4766fe(0x1e7),'reason':_0x4766fe(0x1ff),'install':_0x4766fe(0x1f3),'priority':'high'}),!_0x4c5de9[_0x4766fe(0x1e0)]&&_0x3fc82c['push']({'validator':_0x4766fe(0x1e0),'reason':_0x4766fe(0x1cb),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':_0x4766fe(0x1e4)}),!_0x4c5de9['yamllint']&&_0x3fc82c['push']({'validator':_0x4766fe(0x1e6),'reason':'YAML\x20file\x20validation','install':_0x4766fe(0x1fc),'priority':_0x4766fe(0x21f)}),!_0x4c5de9[_0x4766fe(0x212)]&&_0x3fc82c['push']({'validator':_0x4766fe(0x210),'reason':'JSON\x20configuration\x20validation','install':'npm\x20install\x20ajv\x20ajv-formats','priority':'medium'}),_0x3fc82c;}}export default ConfigValidator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
const a0_0x1ac1a2=a0_0x4524;(function(_0x4172ad,_0x27996a){const _0x45872f=a0_0x4524,_0x1abc84=_0x4172ad();while(!![]){try{const _0x19fc7b=-parseInt(_0x45872f(0xc8))/0x1+-parseInt(_0x45872f(0xcd))/0x2+parseInt(_0x45872f(0xf8))/0x3+parseInt(_0x45872f(0xdd))/0x4+-parseInt(_0x45872f(0xee))/0x5+parseInt(_0x45872f(0xd3))/0x6*(-parseInt(_0x45872f(0xe7))/0x7)+-parseInt(_0x45872f(0xeb))/0x8*(-parseInt(_0x45872f(0xde))/0x9);if(_0x19fc7b===_0x27996a)break;else _0x1abc84['push'](_0x1abc84['shift']());}catch(_0x876938){_0x1abc84['push'](_0x1abc84['shift']());}}}(a0_0x24b5,0x40012));function a0_0x4524(_0x1bea47,_0x462b2a){_0x1bea47=_0x1bea47-0xc6;const _0x24b584=a0_0x24b5();let _0x452485=_0x24b584[_0x1bea47];if(a0_0x4524['JPlMVF']===undefined){var _0x325425=function(_0x35dac1){const _0x299115='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4401f0='',_0x2c2a86='';for(let _0x5450b5=0x0,_0x2e4828,_0x548e37,_0x309aea=0x0;_0x548e37=_0x35dac1['charAt'](_0x309aea++);~_0x548e37&&(_0x2e4828=_0x5450b5%0x4?_0x2e4828*0x40+_0x548e37:_0x548e37,_0x5450b5++%0x4)?_0x4401f0+=String['fromCharCode'](0xff&_0x2e4828>>(-0x2*_0x5450b5&0x6)):0x0){_0x548e37=_0x299115['indexOf'](_0x548e37);}for(let _0x1ee9e4=0x0,_0x17bc00=_0x4401f0['length'];_0x1ee9e4<_0x17bc00;_0x1ee9e4++){_0x2c2a86+='%'+('00'+_0x4401f0['charCodeAt'](_0x1ee9e4)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2c2a86);};a0_0x4524['wOXMYP']=_0x325425,a0_0x4524['sSxcUS']={},a0_0x4524['JPlMVF']=!![];}const _0x1c54e4=_0x24b584[0x0],_0x1e8b01=_0x1bea47+_0x1c54e4,_0x32e890=a0_0x4524['sSxcUS'][_0x1e8b01];return!_0x32e890?(_0x452485=a0_0x4524['wOXMYP'](_0x452485),a0_0x4524['sSxcUS'][_0x1e8b01]=_0x452485):_0x452485=_0x32e890,_0x452485;}import{ESLint}from'eslint';function a0_0x24b5(){const _0x1d2c3f=['zgvZy3jPyMvdAgfUz2vZ','B3v0Chv0','zxnSAw50oNjLy29TBwvUzgvK','zML4','zxnSAw50q2fJAgu','zxH0zw5KCW','BM8TDw5YzwfJAgfIBgu','mte4odu0mgHRBM1cvq','ntG4nZa2mLjjt1PmDG','ywrKzwq','su1qt1ju','zxjYB3i','zwnTyuzLyxr1CMvZ','CMvTB3zLza','C3bSAxq','yMvZDc1WCMfJDgLJzxm','ChvZAa','mJG3rgXiEfvS','rvnmAw50igfUywX5C2LZigzHAwXLza','CgfYC2vYt3b0Aw9UCW','B2zM','oev2BeHHrW','rM91BMqGrvnmAw50ignVBMzPzW','lMvZBgLUDhjJlMnQCW','mJa1mJu3mfDrDwfXvW','D2fYBG','C3vWCg9YDhnbDxrVrML4','q0furuDpuLK','BM8TDMfY','C2v2zxjPDhK','zML4ywjSzvDHCM5PBMDdB3vUDa','lMPZEa','rvjst1i','BwvZC2fNzq','mteWoduYneDkq0rRAW','CMvHy3q','u1rzteu','z2v0rvnmAw50sw5ZDgfUy2u','AM9PBG','BwvZC2fNzxm','Aw5JBhvKzxm','zxnSAw50','BgvUz3rO','u0vwrvjjvfK','lMPZ','qKvtvf9quKfdveLdrq','mta1mJuWDhrSrw1T','zxjYB3jdB3vUDa','EhnZ','zxnSAw50lMnVBMzPzY5QCW','Bg9Nz2vY','otGWntq2CKTOtwDI','yw5HBhL6zq','y2f0zwDVCML6zvj1Bgu','lMvZBgLUDhjJlMPZB24','z2v0rvnmAw50q29UzMLN','v0fstKLorW','nZy5mNHqqwHusq','zM9YBwf0twvZC2fNzq','ywX3yxLZ'];a0_0x24b5=function(){return _0x1d2c3f;};return a0_0x24b5();}import a0_0x4401f0 from'path';import a0_0x2c2a86 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';class ESLintAnalyzer{constructor(_0x5450b5=null){const _0x501273=a0_0x4524;this[_0x501273(0xcc)]=_0x5450b5,this[_0x501273(0xda)]=new Map();}async[a0_0x1ac1a2(0xce)](_0x2e4828,_0x548e37,_0x309aea={}){const _0x52a297=a0_0x1ac1a2;try{const _0x1ee9e4=await this[_0x52a297(0xfb)](_0x309aea),_0x17bc00=await _0x1ee9e4['lintText'](_0x548e37,{'filePath':_0x2e4828,'warnIgnored':![]}),_0x21b231=[];if(_0x17bc00&&_0x17bc00[_0x52a297(0x100)]>0x0){const _0x37b880=_0x17bc00[0x0];for(const _0xd18ffb of _0x37b880[_0x52a297(0xfd)]){_0x21b231[_0x52a297(0xe6)](this['formatMessage'](_0xd18ffb,_0x2e4828));}}return this[_0x52a297(0xcc)]?.['debug']('ESLint\x20analysis\x20completed',{'file':_0x2e4828,'totalDiagnostics':_0x21b231[_0x52a297(0x100)],'errors':_0x21b231['filter'](_0x3be33a=>_0x3be33a[_0x52a297(0xf3)]===STATIC_ANALYSIS[_0x52a297(0x101)][_0x52a297(0xf6)])['length'],'warnings':_0x21b231['filter'](_0x407b7f=>_0x407b7f['severity']===STATIC_ANALYSIS[_0x52a297(0x101)][_0x52a297(0xd2)])['length']}),_0x21b231;}catch(_0x274aef){return this[_0x52a297(0xcc)]?.[_0x52a297(0xe1)](_0x52a297(0xe8),{'file':_0x2e4828,'error':_0x274aef[_0x52a297(0xf7)]}),[];}}async[a0_0x1ac1a2(0xd9)](_0x1425b3,_0x367e80,_0x526f4a={}){const _0x3d4a0a=a0_0x1ac1a2;try{const _0x1d3c37=await this[_0x3d4a0a(0xfb)]({..._0x526f4a,'fix':!![]}),_0x42b716=await _0x1d3c37['lintText'](_0x367e80,{'filePath':_0x1425b3,'warnIgnored':![]});if(_0x42b716&&_0x42b716['length']>0x0){const _0x1f6f84=_0x42b716[0x0];return{'fixed':_0x1f6f84[_0x3d4a0a(0xd7)]!==undefined,'content':_0x1f6f84['output']||_0x367e80,'fixedCount':_0x1f6f84['fixableErrorCount']+_0x1f6f84[_0x3d4a0a(0xf4)],'remainingErrors':_0x1f6f84[_0x3d4a0a(0xc9)]-_0x1f6f84['fixableErrorCount'],'remainingWarnings':_0x1f6f84['warningCount']-_0x1f6f84['fixableWarningCount'],'changes':_0x1f6f84[_0x3d4a0a(0xd7)]?this[_0x3d4a0a(0xd6)](_0x367e80,_0x1f6f84[_0x3d4a0a(0xd7)]):[]};}return{'fixed':![],'content':_0x367e80,'fixedCount':0x0,'remainingErrors':0x0,'remainingWarnings':0x0,'changes':[]};}catch(_0x1ed9d1){this['logger']?.['error']('ESLint\x20fix\x20failed',{'file':_0x1425b3,'error':_0x1ed9d1['message']});throw new Error('ESLint\x20fix\x20failed:\x20'+_0x1ed9d1['message']);}}async['getESLintInstance'](_0x3a7565={}){const _0x569149=a0_0x1ac1a2,{workingDir:_0x45befd,fix:fix=![],framework:_0x857598}=_0x3a7565,_0x51b9aa=await this[_0x569149(0xd1)](_0x45befd,_0x857598),_0x123cf1=new ESLint({'fix':fix,'useEslintrc':!![],'overrideConfig':_0x51b9aa,'errorOnUnmatchedPattern':![]});return _0x123cf1;}async['getESLintConfig'](_0x45eec5,_0x3e2a44){const _0x12c6e7=a0_0x1ac1a2,_0x26f21c={'env':{'browser':!![],'es2021':!![],'node':!![]},'parserOptions':{'ecmaVersion':'latest','sourceType':'module'},'rules':{'no-unused-vars':_0x12c6e7(0xef),'no-undef':_0x12c6e7(0xe1),'no-console':_0x12c6e7(0xea),'semi':['warn',_0x12c6e7(0xd5)],'quotes':['warn','single',{'avoidEscape':!![]}]}};if(_0x3e2a44===_0x12c6e7(0xf9))_0x26f21c['extends']=[_0x12c6e7(0xd8)],_0x26f21c[_0x12c6e7(0xe9)][_0x12c6e7(0xe2)]={'jsx':!![]},_0x26f21c['settings']={'react':{'version':'detect'}};else _0x3e2a44==='vue'?_0x26f21c[_0x12c6e7(0xdb)]=['eslint:recommended']:_0x26f21c['extends']=[_0x12c6e7(0xd8)];if(_0x45eec5){const _0x45dd24=['.eslintrc.js',_0x12c6e7(0xed),_0x12c6e7(0xd0),_0x12c6e7(0xcb)];for(const _0x5942d9 of _0x45dd24){try{const _0x409c04=a0_0x4401f0[_0x12c6e7(0xfc)](_0x45eec5,_0x5942d9);return await a0_0x2c2a86['access'](_0x409c04),this[_0x12c6e7(0xcc)]?.['debug'](_0x12c6e7(0xec),{'configFile':_0x5942d9}),{};}catch{}}}return _0x26f21c;}[a0_0x1ac1a2(0xd4)](_0x2de06a,_0x1d6631){const _0x137493=a0_0x1ac1a2;return{'file':_0x1d6631,'line':_0x2de06a['line']||0x1,'column':_0x2de06a['column']||0x1,'endLine':_0x2de06a['endLine'],'endColumn':_0x2de06a['endColumn'],'severity':_0x2de06a[_0x137493(0xf3)]===0x2?STATIC_ANALYSIS[_0x137493(0x101)][_0x137493(0xf6)]:STATIC_ANALYSIS[_0x137493(0x101)]['WARNING'],'rule':_0x2de06a['ruleId']||_0x137493(0xff),'message':_0x2de06a['message'],'category':this[_0x137493(0xcf)](_0x2de06a['ruleId']),'fixable':_0x2de06a[_0x137493(0xd9)]!==undefined,'source':_0x137493(0xff)};}[a0_0x1ac1a2(0xcf)](_0x2848ba){const _0x2e160d=a0_0x1ac1a2;if(!_0x2848ba)return STATIC_ANALYSIS['CATEGORY'][_0x2e160d(0xfa)];if(_0x2848ba['includes']('security')||_0x2848ba[_0x2e160d(0xfe)](_0x2e160d(0xca))||_0x2848ba==='no-eval'||_0x2848ba==='no-implied-eval')return STATIC_ANALYSIS[_0x2e160d(0xf1)]['SECURITY'];if(_0x2848ba['includes']('performance')||_0x2848ba==='no-await-in-loop'||_0x2848ba==='prefer-promise-reject-errors')return STATIC_ANALYSIS['CATEGORY']['PERFORMANCE'];if(_0x2848ba['includes']('import')||_0x2848ba==='no-undef')return STATIC_ANALYSIS['CATEGORY'][_0x2e160d(0xe0)];if(_0x2848ba['includes'](_0x2e160d(0xe5))||_0x2848ba==='no-unused-vars'||_0x2848ba===_0x2e160d(0xdc)||_0x2848ba===_0x2e160d(0xf2))return STATIC_ANALYSIS['CATEGORY'][_0x2e160d(0xc7)];return STATIC_ANALYSIS[_0x2e160d(0xf1)]['STYLE'];}[a0_0x1ac1a2(0xd6)](_0x22fdde,_0x4e9141){const _0x316087=a0_0x1ac1a2,_0x4b5390=[],_0x5b6ff1=_0x22fdde[_0x316087(0xe4)]('\x0a'),_0x3657e2=_0x4e9141[_0x316087(0xe4)]('\x0a'),_0x5b140e=Math['max'](_0x5b6ff1['length'],_0x3657e2[_0x316087(0x100)]);for(let _0x7b6219=0x0;_0x7b6219<_0x5b140e;_0x7b6219++){const _0x2d03ec=_0x5b6ff1[_0x7b6219]||'',_0x29034c=_0x3657e2[_0x7b6219]||'';_0x2d03ec!==_0x29034c&&_0x4b5390['push']({'line':_0x7b6219+0x1,'type':_0x2d03ec&&_0x29034c?'modified':_0x2d03ec?_0x316087(0xe3):_0x316087(0xdf),'original':_0x2d03ec,'fixed':_0x29034c});}return _0x4b5390;}['getSupportedExtensions'](){const _0x32ae9d=a0_0x1ac1a2;return[_0x32ae9d(0xc6),_0x32ae9d(0xf5),'.mjs','.cjs'];}[a0_0x1ac1a2(0xf0)](){return!![];}}export default ESLintAnalyzer;
|