@loxia-labs/loxia-autopilot-one 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +2 -2
  2. package/bin/cli.js +1 -1
  3. package/bin/loxia-terminal-v2.js +1 -1
  4. package/bin/loxia-terminal.js +1 -1
  5. package/bin/start-with-terminal.js +1 -1
  6. package/package.json +1 -1
  7. package/scripts/install-scanners.js +1 -1
  8. package/src/analyzers/CSSAnalyzer.js +1 -1
  9. package/src/analyzers/ConfigValidator.js +1 -1
  10. package/src/analyzers/ESLintAnalyzer.js +1 -1
  11. package/src/analyzers/JavaScriptAnalyzer.js +1 -1
  12. package/src/analyzers/PrettierFormatter.js +1 -1
  13. package/src/analyzers/PythonAnalyzer.js +1 -1
  14. package/src/analyzers/SecurityAnalyzer.js +1 -1
  15. package/src/analyzers/SparrowAnalyzer.js +1 -1
  16. package/src/analyzers/TypeScriptAnalyzer.js +1 -1
  17. package/src/analyzers/codeCloneDetector/analyzer.js +1 -1
  18. package/src/analyzers/codeCloneDetector/detector.js +1 -1
  19. package/src/analyzers/codeCloneDetector/index.js +1 -1
  20. package/src/analyzers/codeCloneDetector/parser.js +1 -1
  21. package/src/analyzers/codeCloneDetector/reporter.js +1 -1
  22. package/src/analyzers/codeCloneDetector/scanner.js +1 -1
  23. package/src/core/agentPool.js +1 -1
  24. package/src/core/agentScheduler.js +1 -1
  25. package/src/core/contextManager.js +1 -1
  26. package/src/core/messageProcessor.js +1 -1
  27. package/src/core/orchestrator.js +1 -1
  28. package/src/core/stateManager.js +1 -1
  29. package/src/index.js +1 -1
  30. package/src/interfaces/cli.js +1 -1
  31. package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +1 -1
  32. package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +1 -1
  33. package/src/interfaces/terminal/__tests__/smoke/agents.test.js +1 -1
  34. package/src/interfaces/terminal/__tests__/smoke/components.test.js +1 -1
  35. package/src/interfaces/terminal/__tests__/smoke/connection.test.js +1 -1
  36. package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +1 -1
  37. package/src/interfaces/terminal/__tests__/smoke/imports.test.js +1 -1
  38. package/src/interfaces/terminal/__tests__/smoke/messages.test.js +1 -1
  39. package/src/interfaces/terminal/__tests__/smoke/tools.test.js +1 -1
  40. package/src/interfaces/terminal/api/apiClient.js +1 -1
  41. package/src/interfaces/terminal/api/messageRouter.js +1 -1
  42. package/src/interfaces/terminal/api/session.js +1 -1
  43. package/src/interfaces/terminal/api/websocket.js +1 -1
  44. package/src/interfaces/terminal/components/AgentCreator.js +1 -1
  45. package/src/interfaces/terminal/components/AgentEditor.js +1 -1
  46. package/src/interfaces/terminal/components/AgentSwitcher.js +1 -1
  47. package/src/interfaces/terminal/components/ErrorBoundary.js +1 -1
  48. package/src/interfaces/terminal/components/ErrorPanel.js +1 -1
  49. package/src/interfaces/terminal/components/Header.js +1 -1
  50. package/src/interfaces/terminal/components/HelpPanel.js +1 -1
  51. package/src/interfaces/terminal/components/InputBox.js +1 -1
  52. package/src/interfaces/terminal/components/Layout.js +1 -1
  53. package/src/interfaces/terminal/components/LoadingSpinner.js +1 -1
  54. package/src/interfaces/terminal/components/MessageList.js +1 -1
  55. package/src/interfaces/terminal/components/MultilineTextInput.js +1 -1
  56. package/src/interfaces/terminal/components/SearchPanel.js +1 -1
  57. package/src/interfaces/terminal/components/SettingsPanel.js +1 -1
  58. package/src/interfaces/terminal/components/StatusBar.js +1 -1
  59. package/src/interfaces/terminal/components/TextInput.js +1 -1
  60. package/src/interfaces/terminal/config/agentEditorConstants.js +1 -1
  61. package/src/interfaces/terminal/config/constants.js +1 -1
  62. package/src/interfaces/terminal/index.js +1 -1
  63. package/src/interfaces/terminal/state/useAgentControl.js +1 -1
  64. package/src/interfaces/terminal/state/useAgents.js +1 -1
  65. package/src/interfaces/terminal/state/useConnection.js +1 -1
  66. package/src/interfaces/terminal/state/useMessages.js +1 -1
  67. package/src/interfaces/terminal/state/useTools.js +1 -1
  68. package/src/interfaces/terminal/utils/debugLogger.js +1 -1
  69. package/src/interfaces/terminal/utils/settingsStorage.js +1 -1
  70. package/src/interfaces/terminal/utils/theme.js +1 -1
  71. package/src/interfaces/webServer.js +1 -1
  72. package/src/modules/fileExplorer/controller.js +1 -1
  73. package/src/modules/fileExplorer/index.js +1 -1
  74. package/src/modules/fileExplorer/middleware.js +1 -1
  75. package/src/modules/fileExplorer/routes.js +1 -1
  76. package/src/services/agentActivityService.js +1 -1
  77. package/src/services/aiService.js +1 -1
  78. package/src/services/apiKeyManager.js +1 -1
  79. package/src/services/benchmarkService.js +1 -1
  80. package/src/services/budgetService.js +1 -1
  81. package/src/services/contextInjectionService.js +1 -1
  82. package/src/services/conversationCompactionService.js +1 -1
  83. package/src/services/errorHandler.js +1 -1
  84. package/src/services/fileAttachmentService.js +1 -1
  85. package/src/services/modelRouterService.js +1 -1
  86. package/src/services/modelsService.js +1 -1
  87. package/src/services/qualityInspector.js +1 -1
  88. package/src/services/tokenCountingService.js +1 -1
  89. package/src/tools/agentCommunicationTool.js +1 -1
  90. package/src/tools/agentDelayTool.js +1 -1
  91. package/src/tools/asyncToolManager.js +1 -1
  92. package/src/tools/baseTool.js +1 -1
  93. package/src/tools/browserTool.js +1 -1
  94. package/src/tools/cloneDetectionTool.js +1 -1
  95. package/src/tools/dependencyResolverTool.js +1 -1
  96. package/src/tools/fileContentReplaceTool.js +1 -1
  97. package/src/tools/fileSystemTool.js +1 -1
  98. package/src/tools/fileTreeTool.js +1 -1
  99. package/src/tools/imageTool.js +1 -1
  100. package/src/tools/importAnalyzerTool.js +1 -1
  101. package/src/tools/jobDoneTool.js +1 -1
  102. package/src/tools/seekTool.js +1 -1
  103. package/src/tools/staticAnalysisTool.js +1 -1
  104. package/src/tools/taskManagerTool.js +1 -1
  105. package/src/tools/terminalTool.js +1 -1
  106. package/src/tools/webTool.js +1 -1
  107. package/src/types/agent.js +1 -1
  108. package/src/types/contextReference.js +1 -1
  109. package/src/types/conversation.js +1 -1
  110. package/src/types/toolCommand.js +1 -1
  111. package/src/utilities/attachmentValidator.js +1 -1
  112. package/src/utilities/configManager.js +1 -1
  113. package/src/utilities/constants.js +1 -1
  114. package/src/utilities/directoryAccessManager.js +1 -1
  115. package/src/utilities/fileProcessor.js +1 -1
  116. package/src/utilities/logger.js +1 -1
  117. package/src/utilities/platformUtils.js +1 -1
  118. package/src/utilities/platformUtils.test.js +1 -1
  119. package/src/utilities/tagParser.js +1 -1
  120. package/src/utilities/toolConstants.js +1 -1
  121. package/src/utilities/userDataDir.js +1 -1
  122. package/web-ui/build/index.html +2 -2
  123. package/web-ui/build/static/index-DX8T11BQ.css +1 -0
  124. package/web-ui/build/static/{index-182AyFH0.js → index-zjK91IDI.js} +79 -79
  125. package/web-ui/build/static/index-uh8zYROP.css +0 -1
package/README.md CHANGED
@@ -99,7 +99,7 @@ npm install -g @loxia-labs/loxia-autopilot-one
99
99
 
100
100
  ```bash
101
101
  loxia --version
102
- # Should display: Loxia Autopilot One v1.2.0
102
+ # Should display: Loxia Autopilot One v1.2.2
103
103
  ```
104
104
 
105
105
  ### 4. Create an API Key
@@ -371,7 +371,7 @@ Loxia automatically compacts long conversations to stay within token limits:
371
371
 
372
372
  ## 🛣️ Roadmap
373
373
 
374
- ### Current Version (1.2.0)
374
+ ### Current Version (1.2.2)
375
375
 
376
376
  - ✅ Multi-agent orchestration
377
377
  - ✅ 18+ specialized tools
package/bin/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x4f43c1=a0_0x2d98;(function(_0x5a2c8e,_0x4a16c7){const _0x4309e8=a0_0x2d98,_0x21e37d=_0x5a2c8e();while(!![]){try{const _0x583952=-parseInt(_0x4309e8(0x1a0))/0x1*(-parseInt(_0x4309e8(0x191))/0x2)+-parseInt(_0x4309e8(0x163))/0x3*(-parseInt(_0x4309e8(0x183))/0x4)+-parseInt(_0x4309e8(0x162))/0x5+parseInt(_0x4309e8(0x16a))/0x6+-parseInt(_0x4309e8(0x179))/0x7+parseInt(_0x4309e8(0x187))/0x8+-parseInt(_0x4309e8(0x1a6))/0x9;if(_0x583952===_0x4a16c7)break;else _0x21e37d['push'](_0x21e37d['shift']());}catch(_0xbed8e2){_0x21e37d['push'](_0x21e37d['shift']());}}}(a0_0x2fd7,0x7fb41));import{fileURLToPath}from'url';function a0_0x2fd7(){const _0x8f4579=['help','SIGTERM','localhost','argv','Error:','Loxia\x20Autopilot\x20One\x20v','3gksbjI','xdg-open','length','parse','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','--version','11181888rRwVNx','Starting\x20Loxia\x20server...\x0a','platform','host','startsWith','31575lDQyDE','133677mRpbea','version','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','start','node','Unknown\x20command:\x20','Could\x20not\x20open\x20browser\x20automatically.','634026yBRnwr','/api/health','Server\x20running\x20at\x20','--host','Starting\x20Terminal\x20UI...\x0a',')\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','ceil','win32','\x0aLoxia\x20Autopilot\x20One\x20v','Starting\x20Loxia\x20server\x20in\x20background...','error','catch','ignore','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','index.js','4725000AtOauN','src','toString','package.json','unref','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','--port','slice','\x0aPlease\x20start\x20the\x20server\x20first:','http://','56vDkXsJ','statusCode','Checking\x20if\x20server\x20is\x20running...','utf8','5457768VjEgGL','exit','env','loxia-terminal.js','\x0aServer\x20may\x20still\x20be\x20starting.\x20Open\x20','LOXIA_HOST','kill','log','cmd','\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','690068xzvFPm','Server\x20is\x20running\x20at\x20','\x20manually.','get','SIGINT',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','port','includes','Waiting\x20for\x20server\x20to\x20start...'];a0_0x2fd7=function(){return _0x8f4579;};return a0_0x2fd7();}import{dirname,join}from'path';import{spawn}from'child_process';function a0_0x2d98(_0x333826,_0x38b1f8){_0x333826=_0x333826-0x160;const _0x2fd779=a0_0x2fd7();let _0x2d9868=_0x2fd779[_0x333826];return _0x2d9868;}import{readFileSync}from'fs';import a0_0x57ef4b from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x4f43c1(0x19c),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x4f43c1(0x19d)][a0_0x4f43c1(0x180)](0x2),command=args[0x0]&&!args[0x0][a0_0x4f43c1(0x161)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x4f43c1(0x198)]('--help')||args[a0_0x4f43c1(0x198)]('-h'),'version':args[a0_0x4f43c1(0x198)](a0_0x4f43c1(0x1a5))||args['includes']('-v')};for(let i=0x0;i<args[a0_0x4f43c1(0x1a2)];i++){args[i]===a0_0x4f43c1(0x17f)&&args[i+0x1]&&(flags[a0_0x4f43c1(0x197)]=parseInt(args[i+0x1],0xa)),args[i]===a0_0x4f43c1(0x16d)&&args[i+0x1]&&(flags[a0_0x4f43c1(0x160)]=args[i+0x1]);}const port=flags[a0_0x4f43c1(0x197)]||DEFAULT_PORT,host=flags[a0_0x4f43c1(0x160)]||DEFAULT_HOST,serverUrl='http://'+host+':'+port;if(flags[a0_0x4f43c1(0x164)]){const pkgPath=join(__dirname,'..',a0_0x4f43c1(0x17c)),pkg=JSON[a0_0x4f43c1(0x1a3)](readFileSync(pkgPath,a0_0x4f43c1(0x186)));console[a0_0x4f43c1(0x18e)](a0_0x4f43c1(0x19f)+pkg[a0_0x4f43c1(0x164)]),process[a0_0x4f43c1(0x188)](0x0);}if(flags[a0_0x4f43c1(0x19a)]||!command){const pkgPath=join(__dirname,'..','package.json'),pkg=JSON[a0_0x4f43c1(0x1a3)](readFileSync(pkgPath,a0_0x4f43c1(0x186)));console[a0_0x4f43c1(0x18e)](a0_0x4f43c1(0x172)+pkg['version']+a0_0x4f43c1(0x190)+DEFAULT_PORT+a0_0x4f43c1(0x196)+DEFAULT_HOST+a0_0x4f43c1(0x16f)),process['exit'](0x0);}async function checkServerRunning(_0x3e0878,_0x25bd15,_0x4714bd=0x1){for(let _0x586c0a=0x0;_0x586c0a<_0x4714bd;_0x586c0a++){const _0x4fce70=await new Promise(_0x13a0ce=>{const _0xa3997a=a0_0x2d98,_0x4a0fa6=a0_0x57ef4b[_0xa3997a(0x194)](_0xa3997a(0x182)+_0x3e0878+':'+_0x25bd15+_0xa3997a(0x16b),_0x27c74=>{const _0xcbcac8=_0xa3997a;_0x13a0ce(_0x27c74[_0xcbcac8(0x184)]===0xc8);});_0x4a0fa6['on'](_0xa3997a(0x174),()=>_0x13a0ce(![])),_0x4a0fa6['setTimeout'](0x7d0,()=>{_0x4a0fa6['destroy'](),_0x13a0ce(![]);});});if(_0x4fce70)return!![];_0x586c0a<_0x4714bd-0x1&&await new Promise(_0x28a7d3=>setTimeout(_0x28a7d3,SERVER_CHECK_INTERVAL));}return![];}async function waitForServer(_0x43f9a8,_0x26d487,_0x106063=SERVER_STARTUP_TIMEOUT){const _0x1d98d7=a0_0x4f43c1,_0x43c0e0=Math[_0x1d98d7(0x170)](_0x106063/SERVER_CHECK_INTERVAL);return checkServerRunning(_0x43f9a8,_0x26d487,_0x43c0e0);}function openBrowser(_0x3288d2){const _0x20c64b=a0_0x4f43c1;let _0x259e7a,_0x5728d2;if(process[_0x20c64b(0x1a8)]==='darwin')_0x259e7a='open',_0x5728d2=[_0x3288d2];else process['platform']===_0x20c64b(0x171)?(_0x259e7a=_0x20c64b(0x18f),_0x5728d2=['/c',_0x20c64b(0x166),'\x22\x22',_0x3288d2]):(_0x259e7a=_0x20c64b(0x1a1),_0x5728d2=[_0x3288d2]);const _0x125138=spawn(_0x259e7a,_0x5728d2,{'detached':!![],'stdio':'ignore'});_0x125138['unref'](),_0x125138['on'](_0x20c64b(0x174),()=>{const _0x5110e8=_0x20c64b;console['log'](_0x5110e8(0x169)),console[_0x5110e8(0x18e)]('Please\x20open\x20manually:\x20'+_0x3288d2);});}function startServer(_0x396883=![]){const _0x2e2ed6=a0_0x4f43c1,_0x3eb5c0={...process[_0x2e2ed6(0x189)],'LOXIA_PORT':port[_0x2e2ed6(0x17b)](),'PORT':port['toString']()};flags['host']&&(_0x3eb5c0[_0x2e2ed6(0x18c)]=flags[_0x2e2ed6(0x160)]);const _0x4545c7=join(__dirname,'..',_0x2e2ed6(0x17a),_0x2e2ed6(0x178)),_0x2567c7=spawn(_0x2e2ed6(0x167),[_0x4545c7],{'cwd':join(__dirname,'..'),'env':_0x3eb5c0,'stdio':_0x396883?[_0x2e2ed6(0x176),_0x2e2ed6(0x176),_0x2e2ed6(0x176)]:'inherit','detached':_0x396883});return _0x396883&&_0x2567c7[_0x2e2ed6(0x17d)](),_0x2567c7;}function startTerminalUI(){const _0x42ea0d=a0_0x4f43c1,_0x1619a4=join(__dirname,_0x42ea0d(0x18a)),_0x45d74e={...process[_0x42ea0d(0x189)],'LOXIA_PORT':port[_0x42ea0d(0x17b)](),'LOXIA_HOST':host},_0x38cada=spawn(_0x42ea0d(0x167),[_0x1619a4],{'cwd':join(__dirname,'..'),'env':_0x45d74e,'stdio':'inherit'});return _0x38cada;}const commands={'web':async()=>{const _0x46de74=a0_0x4f43c1;console[_0x46de74(0x18e)](_0x46de74(0x1a7));const _0x346ac4=startServer(![]);console[_0x46de74(0x18e)](_0x46de74(0x199));const _0x1c0bd5=await waitForServer(host,port);_0x1c0bd5?(console['log']('\x0aOpening\x20Web\x20UI\x20at\x20'+serverUrl),openBrowser(serverUrl)):console[_0x46de74(0x18e)](_0x46de74(0x18b)+serverUrl+_0x46de74(0x193)),process['on'](_0x46de74(0x195),()=>_0x346ac4[_0x46de74(0x18d)](_0x46de74(0x195))),process['on']('SIGTERM',()=>_0x346ac4['kill'](_0x46de74(0x19b))),_0x346ac4['on']('exit',_0x862132=>process['exit'](_0x862132||0x0));},'plus-web':async()=>{await commands['web']();},'terminal':async()=>{const _0x3be09b=a0_0x4f43c1;console[_0x3be09b(0x18e)](_0x3be09b(0x185));const _0x3aaadd=await checkServerRunning(host,port);!_0x3aaadd&&(console[_0x3be09b(0x174)]('\x0aServer\x20is\x20not\x20running\x20at\x20'+serverUrl),console['error'](_0x3be09b(0x181)),console[_0x3be09b(0x174)](_0x3be09b(0x177)),console['error'](_0x3be09b(0x165)),process[_0x3be09b(0x188)](0x1));console[_0x3be09b(0x18e)](_0x3be09b(0x192)+serverUrl),console[_0x3be09b(0x18e)]('Starting\x20Terminal\x20UI...\x0a');const _0x2d037d=startTerminalUI();process['on'](_0x3be09b(0x195),()=>_0x2d037d[_0x3be09b(0x18d)](_0x3be09b(0x195))),process['on']('SIGTERM',()=>_0x2d037d[_0x3be09b(0x18d)]('SIGTERM')),_0x2d037d['on'](_0x3be09b(0x188),_0xb05570=>process['exit'](_0xb05570||0x0));},'plus-terminal':async()=>{const _0x13d748=a0_0x4f43c1;console[_0x13d748(0x18e)](_0x13d748(0x173));const _0x276b6c=startServer(!![]),_0x2de550=await waitForServer(host,port);!_0x2de550&&(console[_0x13d748(0x174)](_0x13d748(0x17e)),process[_0x13d748(0x188)](0x1));console[_0x13d748(0x18e)](_0x13d748(0x16c)+serverUrl),console['log'](_0x13d748(0x16e));const _0xecdbf3=startTerminalUI();_0xecdbf3['on']('exit',_0x48b04f=>{const _0x3e3ed7=_0x13d748;console['log']('\x0aShutting\x20down\x20server...');try{process['kill'](_0x276b6c['pid'],'SIGTERM');}catch(_0x2fe608){}process[_0x3e3ed7(0x188)](_0x48b04f||0x0);}),process['on'](_0x13d748(0x195),()=>{const _0x41a52d=_0x13d748;_0xecdbf3[_0x41a52d(0x18d)]('SIGINT');}),process['on'](_0x13d748(0x19b),()=>{const _0x5d03e1=_0x13d748;_0xecdbf3[_0x5d03e1(0x18d)]('SIGTERM');});}};commands[command]?commands[command]()[a0_0x4f43c1(0x175)](_0xdb2d48=>{const _0x2057b0=a0_0x4f43c1;console[_0x2057b0(0x174)](_0x2057b0(0x19e),_0xdb2d48['message']),process[_0x2057b0(0x188)](0x1);}):(console[a0_0x4f43c1(0x174)](a0_0x4f43c1(0x168)+command),console[a0_0x4f43c1(0x174)](a0_0x4f43c1(0x1a4)),process['exit'](0x1));
3
+ const a0_0x210c35=a0_0x40cb;(function(_0x3cc8a6,_0x25aab9){const _0x3aa1fb=a0_0x40cb,_0x13a935=_0x3cc8a6();while(!![]){try{const _0x9b283b=-parseInt(_0x3aa1fb(0x18d))/0x1*(parseInt(_0x3aa1fb(0x186))/0x2)+-parseInt(_0x3aa1fb(0x182))/0x3*(parseInt(_0x3aa1fb(0x18f))/0x4)+parseInt(_0x3aa1fb(0x1a3))/0x5*(parseInt(_0x3aa1fb(0x17e))/0x6)+parseInt(_0x3aa1fb(0x1ad))/0x7*(-parseInt(_0x3aa1fb(0x187))/0x8)+parseInt(_0x3aa1fb(0x17f))/0x9+-parseInt(_0x3aa1fb(0x192))/0xa+-parseInt(_0x3aa1fb(0x179))/0xb*(-parseInt(_0x3aa1fb(0x19a))/0xc);if(_0x9b283b===_0x25aab9)break;else _0x13a935['push'](_0x13a935['shift']());}catch(_0x3d723f){_0x13a935['push'](_0x13a935['shift']());}}}(a0_0x57ec,0x88856));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';function a0_0x57ec(){const _0x267065=['http://','ignore','startsWith','pid','SIGINT','help','parse','35GaDaGY','env','statusCode','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','port','\x0aServer\x20is\x20not\x20running\x20at\x20','\x0aPlease\x20start\x20the\x20server\x20first:','toString','win32','setTimeout','3124231TNtecX','version','includes','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','\x0aShutting\x20down\x20server...','1596aujplf','3157326SsgGDA','Starting\x20Loxia\x20server...\x0a','\x20manually.','12pRgruV','xdg-open','utf8','src','10YvLNid','887584UXOrTd','darwin','\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','node','Starting\x20Loxia\x20server\x20in\x20background...','\x0aOpening\x20Web\x20UI\x20at\x20','96226mfvIeV','kill','990352ASRznl','host','exit','6983810xNGqGw','index.js','unref','Server\x20is\x20running\x20at\x20','web','error','log','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','84mGBHVm','SIGTERM','package.json','Loxia\x20Autopilot\x20One\x20v','\x0aLoxia\x20Autopilot\x20One\x20v','--help','catch','slice','Please\x20open\x20manually:\x20','17760MbXUEC','Starting\x20Terminal\x20UI...\x0a','--version'];a0_0x57ec=function(){return _0x267065;};return a0_0x57ec();}import a0_0x302ac4 from'http';function a0_0x40cb(_0x465f7f,_0x2870bb){_0x465f7f=_0x465f7f-0x171;const _0x57ec74=a0_0x57ec();let _0x40cb65=_0x57ec74[_0x465f7f];return _0x40cb65;}const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST='localhost',SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process['argv'][a0_0x210c35(0x1a1)](0x2),command=args[0x0]&&!args[0x0][a0_0x210c35(0x1a8)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x210c35(0x17b)](a0_0x210c35(0x19f))||args[a0_0x210c35(0x17b)]('-h'),'version':args['includes'](a0_0x210c35(0x1a5))||args[a0_0x210c35(0x17b)]('-v')};for(let i=0x0;i<args['length'];i++){args[i]==='--port'&&args[i+0x1]&&(flags[a0_0x210c35(0x173)]=parseInt(args[i+0x1],0xa)),args[i]==='--host'&&args[i+0x1]&&(flags[a0_0x210c35(0x190)]=args[i+0x1]);}const port=flags['port']||DEFAULT_PORT,host=flags[a0_0x210c35(0x190)]||DEFAULT_HOST,serverUrl='http://'+host+':'+port;if(flags[a0_0x210c35(0x17a)]){const pkgPath=join(__dirname,'..','package.json'),pkg=JSON[a0_0x210c35(0x1ac)](readFileSync(pkgPath,a0_0x210c35(0x184)));console['log'](a0_0x210c35(0x19d)+pkg[a0_0x210c35(0x17a)]),process[a0_0x210c35(0x191)](0x0);}if(flags[a0_0x210c35(0x1ab)]||!command){const pkgPath=join(__dirname,'..',a0_0x210c35(0x19c)),pkg=JSON['parse'](readFileSync(pkgPath,a0_0x210c35(0x184)));console[a0_0x210c35(0x198)](a0_0x210c35(0x19e)+pkg['version']+a0_0x210c35(0x189)+DEFAULT_PORT+')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20'+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_0x210c35(0x191)](0x0);}async function checkServerRunning(_0x48ffcb,_0x8105e7,_0x2163a6=0x1){for(let _0x2d0ffc=0x0;_0x2d0ffc<_0x2163a6;_0x2d0ffc++){const _0x398f5f=await new Promise(_0x42295f=>{const _0x30ed84=a0_0x40cb,_0x1d4497=a0_0x302ac4['get'](_0x30ed84(0x1a6)+_0x48ffcb+':'+_0x8105e7+'/api/health',_0x577a4b=>{const _0x5b3590=_0x30ed84;_0x42295f(_0x577a4b[_0x5b3590(0x171)]===0xc8);});_0x1d4497['on'](_0x30ed84(0x197),()=>_0x42295f(![])),_0x1d4497[_0x30ed84(0x178)](0x7d0,()=>{_0x1d4497['destroy'](),_0x42295f(![]);});});if(_0x398f5f)return!![];_0x2d0ffc<_0x2163a6-0x1&&await new Promise(_0x1e8958=>setTimeout(_0x1e8958,SERVER_CHECK_INTERVAL));}return![];}async function waitForServer(_0x4bab3e,_0x5847ef,_0x234e9a=SERVER_STARTUP_TIMEOUT){const _0x990d9b=Math['ceil'](_0x234e9a/SERVER_CHECK_INTERVAL);return checkServerRunning(_0x4bab3e,_0x5847ef,_0x990d9b);}function openBrowser(_0x4f6f23){const _0x3b1989=a0_0x210c35;let _0xa2d0c6,_0x36130c;if(process['platform']===_0x3b1989(0x188))_0xa2d0c6='open',_0x36130c=[_0x4f6f23];else process['platform']===_0x3b1989(0x177)?(_0xa2d0c6='cmd',_0x36130c=['/c','start','\x22\x22',_0x4f6f23]):(_0xa2d0c6=_0x3b1989(0x183),_0x36130c=[_0x4f6f23]);const _0x3f9f65=spawn(_0xa2d0c6,_0x36130c,{'detached':!![],'stdio':_0x3b1989(0x1a7)});_0x3f9f65[_0x3b1989(0x194)](),_0x3f9f65['on'](_0x3b1989(0x197),()=>{const _0x132af3=_0x3b1989;console[_0x132af3(0x198)]('Could\x20not\x20open\x20browser\x20automatically.'),console[_0x132af3(0x198)](_0x132af3(0x1a2)+_0x4f6f23);});}function startServer(_0x2becb8=![]){const _0x5bc8dd=a0_0x210c35,_0x14c652={...process[_0x5bc8dd(0x1ae)],'LOXIA_PORT':port[_0x5bc8dd(0x176)](),'PORT':port['toString']()};flags[_0x5bc8dd(0x190)]&&(_0x14c652['LOXIA_HOST']=flags[_0x5bc8dd(0x190)]);const _0x1b80b4=join(__dirname,'..',_0x5bc8dd(0x185),_0x5bc8dd(0x193)),_0x22aed2=spawn(_0x5bc8dd(0x18a),[_0x1b80b4],{'cwd':join(__dirname,'..'),'env':_0x14c652,'stdio':_0x2becb8?[_0x5bc8dd(0x1a7),_0x5bc8dd(0x1a7),_0x5bc8dd(0x1a7)]:'inherit','detached':_0x2becb8});return _0x2becb8&&_0x22aed2[_0x5bc8dd(0x194)](),_0x22aed2;}function startTerminalUI(){const _0x184959=a0_0x210c35,_0x277ec9=join(__dirname,'loxia-terminal.js'),_0x28e4cc={...process['env'],'LOXIA_PORT':port[_0x184959(0x176)](),'LOXIA_HOST':host},_0xb4fe4b=spawn('node',[_0x277ec9],{'cwd':join(__dirname,'..'),'env':_0x28e4cc,'stdio':'inherit'});return _0xb4fe4b;}const commands={'web':async()=>{const _0x5a41b6=a0_0x210c35;console['log'](_0x5a41b6(0x180));const _0x2563cf=startServer(![]);console[_0x5a41b6(0x198)]('Waiting\x20for\x20server\x20to\x20start...');const _0x14f455=await waitForServer(host,port);_0x14f455?(console[_0x5a41b6(0x198)](_0x5a41b6(0x18c)+serverUrl),openBrowser(serverUrl)):console['log']('\x0aServer\x20may\x20still\x20be\x20starting.\x20Open\x20'+serverUrl+_0x5a41b6(0x181)),process['on']('SIGINT',()=>_0x2563cf[_0x5a41b6(0x18e)]('SIGINT')),process['on'](_0x5a41b6(0x19b),()=>_0x2563cf['kill']('SIGTERM')),_0x2563cf['on'](_0x5a41b6(0x191),_0x3b2dba=>process[_0x5a41b6(0x191)](_0x3b2dba||0x0));},'plus-web':async()=>{const _0x2af484=a0_0x210c35;await commands[_0x2af484(0x196)]();},'terminal':async()=>{const _0x5280f1=a0_0x210c35;console['log']('Checking\x20if\x20server\x20is\x20running...');const _0x2ac358=await checkServerRunning(host,port);!_0x2ac358&&(console['error'](_0x5280f1(0x174)+serverUrl),console[_0x5280f1(0x197)](_0x5280f1(0x175)),console[_0x5280f1(0x197)](_0x5280f1(0x172)),console[_0x5280f1(0x197)](_0x5280f1(0x17c)),process[_0x5280f1(0x191)](0x1));console[_0x5280f1(0x198)](_0x5280f1(0x195)+serverUrl),console[_0x5280f1(0x198)](_0x5280f1(0x1a4));const _0x53c88a=startTerminalUI();process['on'](_0x5280f1(0x1aa),()=>_0x53c88a['kill']('SIGINT')),process['on'](_0x5280f1(0x19b),()=>_0x53c88a[_0x5280f1(0x18e)](_0x5280f1(0x19b))),_0x53c88a['on']('exit',_0x263339=>process[_0x5280f1(0x191)](_0x263339||0x0));},'plus-terminal':async()=>{const _0x26f1c0=a0_0x210c35;console['log'](_0x26f1c0(0x18b));const _0x1ef33c=startServer(!![]),_0x57fae0=await waitForServer(host,port);!_0x57fae0&&(console[_0x26f1c0(0x197)](_0x26f1c0(0x199)),process[_0x26f1c0(0x191)](0x1));console[_0x26f1c0(0x198)]('Server\x20running\x20at\x20'+serverUrl),console['log']('Starting\x20Terminal\x20UI...\x0a');const _0x4778d0=startTerminalUI();_0x4778d0['on'](_0x26f1c0(0x191),_0x8ad77f=>{const _0x5b07f0=_0x26f1c0;console[_0x5b07f0(0x198)](_0x5b07f0(0x17d));try{process[_0x5b07f0(0x18e)](_0x1ef33c[_0x5b07f0(0x1a9)],_0x5b07f0(0x19b));}catch(_0x5c264f){}process[_0x5b07f0(0x191)](_0x8ad77f||0x0);}),process['on'](_0x26f1c0(0x1aa),()=>{const _0x268d88=_0x26f1c0;_0x4778d0[_0x268d88(0x18e)](_0x268d88(0x1aa));}),process['on'](_0x26f1c0(0x19b),()=>{const _0x960493=_0x26f1c0;_0x4778d0['kill'](_0x960493(0x19b));});}};commands[command]?commands[command]()[a0_0x210c35(0x1a0)](_0x460ddc=>{const _0x544ac2=a0_0x210c35;console[_0x544ac2(0x197)]('Error:',_0x460ddc['message']),process[_0x544ac2(0x191)](0x1);}):(console[a0_0x210c35(0x197)]('Unknown\x20command:\x20'+command),console[a0_0x210c35(0x197)]('Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.'),process[a0_0x210c35(0x191)](0x1));
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- function a0_0x59a5(){const _0x5ccd5d=['145128miZMQK','timeout','../src/interfaces/terminal/index.js','\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details','stderr','argv','message','exit','env','setTimeout','14UXsIDD','Socket','stdout','kill','web','now','pipe','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','Server\x20startup\x20timeout','toString','💡\x20Troubleshooting:','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','10134iDedlH','3300470olAUzq','localhost','log','destroy','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','592710qFJApG','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','dirname','🚀\x20Starting\x20Loxia\x20server...','✓\x20Server\x20is\x20already\x20running\x20at\x20','648wFHCEn','join','connect','33kBxEfn','LOXIA_PORT','2337828itBYXe','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','112emWwcF','✓\x20Server\x20started\x20at\x20','--port','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','error','935616agIDVu','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','Failed\x20to\x20start\x20server:','LOXIA_HOST','slice','data','node','3882aYAjWX'];a0_0x59a5=function(){return _0x5ccd5d;};return a0_0x59a5();}function a0_0x5ba8(_0x590ecf,_0x2abf74){_0x590ecf=_0x590ecf-0x1cd;const _0x59a504=a0_0x59a5();let _0x5ba81c=_0x59a504[_0x590ecf];return _0x5ba81c;}const a0_0x1ebf1e=a0_0x5ba8;(function(_0x396940,_0x4468ac){const _0x5d2b8e=a0_0x5ba8,_0x205113=_0x396940();while(!![]){try{const _0x56c0e7=parseInt(_0x5d2b8e(0x1dd))/0x1+-parseInt(_0x5d2b8e(0x1dc))/0x2*(-parseInt(_0x5d2b8e(0x1fe))/0x3)+-parseInt(_0x5d2b8e(0x1d5))/0x4+-parseInt(_0x5d2b8e(0x1f9))/0x5+parseInt(_0x5d2b8e(0x1ce))/0x6*(-parseInt(_0x5d2b8e(0x1e7))/0x7)+-parseInt(_0x5d2b8e(0x1d0))/0x8*(parseInt(_0x5d2b8e(0x1f3))/0x9)+parseInt(_0x5d2b8e(0x1f4))/0xa*(parseInt(_0x5d2b8e(0x201))/0xb);if(_0x56c0e7===_0x4468ac)break;else _0x205113['push'](_0x205113['shift']());}catch(_0x28c477){_0x205113['push'](_0x205113['shift']());}}}(a0_0x59a5,0x635ff));import{spawn}from'child_process';import a0_0x433c7b from'net';import a0_0x59fcb5 from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x59fcb5[a0_0x1ebf1e(0x1fb)](__filename),projectRoot=a0_0x59fcb5[a0_0x1ebf1e(0x1fb)](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x1ebf1e(0x1f5),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x33de9b,_0x2a4603){return new Promise(_0x56b2b1=>{const _0x4f3934=a0_0x5ba8,_0x4da566=new a0_0x433c7b[(_0x4f3934(0x1e8))]();_0x4da566[_0x4f3934(0x1e6)](0x7d0),_0x4da566['on'](_0x4f3934(0x200),()=>{_0x4da566['destroy'](),_0x56b2b1(!![]);}),_0x4da566['on'](_0x4f3934(0x1de),()=>{const _0xcf90ad=_0x4f3934;_0x4da566[_0xcf90ad(0x1f7)](),_0x56b2b1(![]);}),_0x4da566['on']('error',()=>{const _0x973c29=_0x4f3934;_0x4da566[_0x973c29(0x1f7)](),_0x56b2b1(![]);}),_0x4da566[_0x4f3934(0x200)](_0x2a4603,_0x33de9b);});}async function startServer(_0x68f4af,_0x4952b9){const _0x44fd00=a0_0x1ebf1e;return console[_0x44fd00(0x1f6)](_0x44fd00(0x1fc)),new Promise((_0x19d07d,_0x3cca8d)=>{const _0x2e63b8=_0x44fd00,_0x1898ca=spawn(_0x2e63b8(0x1db),[a0_0x59fcb5[_0x2e63b8(0x1ff)](projectRoot,'bin/cli.js'),'--ui',_0x2e63b8(0x1eb),'--host',_0x68f4af,_0x2e63b8(0x1d2),_0x4952b9[_0x2e63b8(0x1f0)]()],{'detached':![],'stdio':['ignore',_0x2e63b8(0x1ed),_0x2e63b8(0x1ed)]});_0x1898ca[_0x2e63b8(0x1e9)]['on'](_0x2e63b8(0x1da),()=>{}),_0x1898ca[_0x2e63b8(0x1e1)]['on'](_0x2e63b8(0x1da),()=>{}),_0x1898ca['on'](_0x2e63b8(0x1d4),_0x324ad5=>{const _0x57d7f6=_0x2e63b8;console[_0x57d7f6(0x1d4)](_0x57d7f6(0x1d7),_0x324ad5[_0x57d7f6(0x1e3)]),_0x3cca8d(_0x324ad5);});const _0x51ee61=Date[_0x2e63b8(0x1ec)](),_0x3e4f6b=setInterval(async()=>{const _0x392ffc=_0x2e63b8,_0x262a24=await isServerRunning(_0x68f4af,_0x4952b9);if(_0x262a24)clearInterval(_0x3e4f6b),console[_0x392ffc(0x1f6)](_0x392ffc(0x1d1)+_0x68f4af+':'+_0x4952b9),_0x19d07d();else Date[_0x392ffc(0x1ec)]()-_0x51ee61>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x3e4f6b),_0x1898ca[_0x392ffc(0x1ea)](),_0x3cca8d(new Error(_0x392ffc(0x1ef))));},0x1f4);});}async function main(){const _0x210c88=a0_0x1ebf1e;try{console['log'](_0x210c88(0x1f2)),console[_0x210c88(0x1f6)](_0x210c88(0x1cf)),console[_0x210c88(0x1f6)](_0x210c88(0x1f2)),console[_0x210c88(0x1f6)]('');const _0x198e9f=process[_0x210c88(0x1e2)][_0x210c88(0x1d9)](0x2);let _0x3df98e=DEFAULT_HOST,_0x1f53c7=DEFAULT_PORT;for(let _0x4aa5ea=0x0;_0x4aa5ea<_0x198e9f['length'];_0x4aa5ea++){if(_0x198e9f[_0x4aa5ea]==='--host'&&_0x198e9f[_0x4aa5ea+0x1])_0x3df98e=_0x198e9f[_0x4aa5ea+0x1],_0x4aa5ea++;else _0x198e9f[_0x4aa5ea]===_0x210c88(0x1d2)&&_0x198e9f[_0x4aa5ea+0x1]&&(_0x1f53c7=parseInt(_0x198e9f[_0x4aa5ea+0x1],0xa),_0x4aa5ea++);}console[_0x210c88(0x1f6)](_0x210c88(0x1fa)+_0x3df98e+':'+_0x1f53c7+'...');const _0x37cff9=await isServerRunning(_0x3df98e,_0x1f53c7);!_0x37cff9?(console[_0x210c88(0x1f6)]('✗\x20Server\x20is\x20not\x20running'),await startServer(_0x3df98e,_0x1f53c7)):console[_0x210c88(0x1f6)](_0x210c88(0x1fd)+_0x3df98e+':'+_0x1f53c7),console[_0x210c88(0x1f6)](''),console[_0x210c88(0x1f6)](_0x210c88(0x1f8)),console['log'](''),await new Promise(_0x13ee5a=>setTimeout(_0x13ee5a,0x1f4)),process[_0x210c88(0x1e5)][_0x210c88(0x1d8)]=_0x3df98e,process[_0x210c88(0x1e5)][_0x210c88(0x1cd)]=_0x1f53c7[_0x210c88(0x1f0)](),await import(_0x210c88(0x1df));}catch(_0x248b77){console[_0x210c88(0x1d4)](''),console[_0x210c88(0x1d4)](_0x210c88(0x1d3)),console[_0x210c88(0x1d4)]('\x20\x20',_0x248b77[_0x210c88(0x1e3)]),console[_0x210c88(0x1d4)](''),console['error'](_0x210c88(0x1f1)),console[_0x210c88(0x1d4)](_0x210c88(0x1d6)),console[_0x210c88(0x1d4)](_0x210c88(0x1ee)),console[_0x210c88(0x1d4)](_0x210c88(0x1e0)),console[_0x210c88(0x1d4)](''),process[_0x210c88(0x1e4)](0x1);}}main();
3
+ const a0_0x28a5e2=a0_0x1f66;(function(_0x28e867,_0x1db0f3){const _0x42113d=a0_0x1f66,_0x4fc113=_0x28e867();while(!![]){try{const _0x25cf00=-parseInt(_0x42113d(0x78))/0x1*(parseInt(_0x42113d(0x6d))/0x2)+-parseInt(_0x42113d(0x8e))/0x3*(-parseInt(_0x42113d(0x95))/0x4)+parseInt(_0x42113d(0x87))/0x5*(parseInt(_0x42113d(0x6c))/0x6)+-parseInt(_0x42113d(0x70))/0x7*(-parseInt(_0x42113d(0x81))/0x8)+parseInt(_0x42113d(0x85))/0x9+parseInt(_0x42113d(0x76))/0xa*(parseInt(_0x42113d(0x6f))/0xb)+-parseInt(_0x42113d(0x6a))/0xc;if(_0x25cf00===_0x1db0f3)break;else _0x4fc113['push'](_0x4fc113['shift']());}catch(_0x38dee0){_0x4fc113['push'](_0x4fc113['shift']());}}}(a0_0x3b23,0xa658a));import{spawn}from'child_process';function a0_0x1f66(_0x2f7cbc,_0x1de8f4){_0x2f7cbc=_0x2f7cbc-0x65;const _0x3b23b1=a0_0x3b23();let _0x1f662d=_0x3b23b1[_0x2f7cbc];return _0x1f662d;}import a0_0x31b17c from'net';import a0_0x52e10b from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x52e10b[a0_0x28a5e2(0x7c)](__filename),projectRoot=a0_0x52e10b['dirname'](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x28a5e2(0x77),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x503fc8,_0x47a5a7){return new Promise(_0x147030=>{const _0x514ff1=a0_0x1f66,_0xd3de87=new a0_0x31b17c[(_0x514ff1(0x82))]();_0xd3de87[_0x514ff1(0x96)](0x7d0),_0xd3de87['on'](_0x514ff1(0x93),()=>{_0xd3de87['destroy'](),_0x147030(!![]);}),_0xd3de87['on'](_0x514ff1(0x8d),()=>{const _0x279e67=_0x514ff1;_0xd3de87[_0x279e67(0x7d)](),_0x147030(![]);}),_0xd3de87['on'](_0x514ff1(0x8f),()=>{const _0xba4119=_0x514ff1;_0xd3de87[_0xba4119(0x7d)](),_0x147030(![]);}),_0xd3de87[_0x514ff1(0x93)](_0x47a5a7,_0x503fc8);});}function a0_0x3b23(){const _0x11dafc=['🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','--ui','data','message','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','kill','✓\x20Server\x20is\x20already\x20running\x20at\x20','21468684qpzFQR','toString','17814DJvLQa','22rcidlj','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','2794OpMWUV','7LhvKKN','💡\x20Troubleshooting:','...','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','✗\x20Server\x20is\x20not\x20running','now','48560cGiySR','localhost','61908ZyFXHN','exit','join','✓\x20Server\x20started\x20at\x20','dirname','destroy','--port','🚀\x20Starting\x20Loxia\x20server...','argv','3665152vYwogd','Socket','Failed\x20to\x20start\x20server:','../src/interfaces/terminal/index.js','1496457Vvmxkt','env','20swYssR','ignore','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','log','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','stderr','timeout','6KkTHGo','error','pipe','\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details','stdout','connect','LOXIA_HOST','2563364yPpByb','setTimeout','--host'];a0_0x3b23=function(){return _0x11dafc;};return a0_0x3b23();}async function startServer(_0x15b407,_0x510a84){const _0x57088b=a0_0x28a5e2;return console['log'](_0x57088b(0x7f)),new Promise((_0x342984,_0xeaaa6a)=>{const _0x231cfe=_0x57088b,_0x366788=spawn('node',[a0_0x52e10b[_0x231cfe(0x7a)](projectRoot,'bin/cli.js'),_0x231cfe(0x99),'web',_0x231cfe(0x97),_0x15b407,_0x231cfe(0x7e),_0x510a84[_0x231cfe(0x6b)]()],{'detached':![],'stdio':[_0x231cfe(0x88),'pipe',_0x231cfe(0x90)]});_0x366788[_0x231cfe(0x92)]['on'](_0x231cfe(0x65),()=>{}),_0x366788[_0x231cfe(0x8c)]['on'](_0x231cfe(0x65),()=>{}),_0x366788['on'](_0x231cfe(0x8f),_0x3e17df=>{const _0x20acb3=_0x231cfe;console['error'](_0x20acb3(0x83),_0x3e17df['message']),_0xeaaa6a(_0x3e17df);});const _0x1d5466=Date[_0x231cfe(0x75)](),_0x19eacf=setInterval(async()=>{const _0xf11808=_0x231cfe,_0x24a474=await isServerRunning(_0x15b407,_0x510a84);if(_0x24a474)clearInterval(_0x19eacf),console[_0xf11808(0x8a)](_0xf11808(0x7b)+_0x15b407+':'+_0x510a84),_0x342984();else Date[_0xf11808(0x75)]()-_0x1d5466>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x19eacf),_0x366788[_0xf11808(0x68)](),_0xeaaa6a(new Error('Server\x20startup\x20timeout')));},0x1f4);});}async function main(){const _0x2297fd=a0_0x28a5e2;try{console[_0x2297fd(0x8a)](_0x2297fd(0x6e)),console[_0x2297fd(0x8a)](_0x2297fd(0x8b)),console[_0x2297fd(0x8a)]('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console[_0x2297fd(0x8a)]('');const _0x58db81=process[_0x2297fd(0x80)]['slice'](0x2);let _0x348c8d=DEFAULT_HOST,_0x55566b=DEFAULT_PORT;for(let _0x203a4c=0x0;_0x203a4c<_0x58db81['length'];_0x203a4c++){if(_0x58db81[_0x203a4c]===_0x2297fd(0x97)&&_0x58db81[_0x203a4c+0x1])_0x348c8d=_0x58db81[_0x203a4c+0x1],_0x203a4c++;else _0x58db81[_0x203a4c]===_0x2297fd(0x7e)&&_0x58db81[_0x203a4c+0x1]&&(_0x55566b=parseInt(_0x58db81[_0x203a4c+0x1],0xa),_0x203a4c++);}console[_0x2297fd(0x8a)](_0x2297fd(0x89)+_0x348c8d+':'+_0x55566b+_0x2297fd(0x72));const _0x453d5d=await isServerRunning(_0x348c8d,_0x55566b);!_0x453d5d?(console[_0x2297fd(0x8a)](_0x2297fd(0x74)),await startServer(_0x348c8d,_0x55566b)):console['log'](_0x2297fd(0x69)+_0x348c8d+':'+_0x55566b),console[_0x2297fd(0x8a)](''),console[_0x2297fd(0x8a)](_0x2297fd(0x98)),console[_0x2297fd(0x8a)](''),await new Promise(_0x584f40=>setTimeout(_0x584f40,0x1f4)),process[_0x2297fd(0x86)][_0x2297fd(0x94)]=_0x348c8d,process[_0x2297fd(0x86)]['LOXIA_PORT']=_0x55566b['toString'](),await import(_0x2297fd(0x84));}catch(_0x34b0a6){console[_0x2297fd(0x8f)](''),console['error'](_0x2297fd(0x73)),console['error']('\x20\x20',_0x34b0a6[_0x2297fd(0x66)]),console['error'](''),console[_0x2297fd(0x8f)](_0x2297fd(0x71)),console[_0x2297fd(0x8f)](_0x2297fd(0x67)),console['error']('\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js'),console['error'](_0x2297fd(0x91)),console['error'](''),process[_0x2297fd(0x79)](0x1);}}main();
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x1e7b67=a0_0x1ef2;function a0_0x1ef2(_0x489cc0,_0x2eae7e){_0x489cc0=_0x489cc0-0xfd;const _0xd3fcc4=a0_0xd3fc();let _0x1ef25f=_0xd3fcc4[_0x489cc0];return _0x1ef25f;}(function(_0x2979fe,_0x376c05){const _0x4fd1ee=a0_0x1ef2,_0x3520c6=_0x2979fe();while(!![]){try{const _0x50c7ad=parseInt(_0x4fd1ee(0x11b))/0x1+parseInt(_0x4fd1ee(0x108))/0x2*(parseInt(_0x4fd1ee(0xfd))/0x3)+-parseInt(_0x4fd1ee(0x10d))/0x4+-parseInt(_0x4fd1ee(0x104))/0x5*(parseInt(_0x4fd1ee(0x10a))/0x6)+-parseInt(_0x4fd1ee(0x111))/0x7+-parseInt(_0x4fd1ee(0x118))/0x8+parseInt(_0x4fd1ee(0x11d))/0x9;if(_0x50c7ad===_0x376c05)break;else _0x3520c6['push'](_0x3520c6['shift']());}catch(_0x16c928){_0x3520c6['push'](_0x3520c6['shift']());}}}(a0_0xd3fc,0x60b0e));import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0x1e7b67(0x112)][a0_0x1e7b67(0x117)](0x2),options={'host':'localhost','port':0x1f90};for(let i=0x0;i<args[a0_0x1e7b67(0x113)];i++){const arg=args[i];if(arg===a0_0x1e7b67(0x120)||arg==='-h')options['host']=args[++i];else{if(arg==='--port'||arg==='-p')options[a0_0x1e7b67(0x103)]=parseInt(args[++i],0xa);else arg==='--help'&&(console['log'](a0_0x1e7b67(0x11e)),process[a0_0x1e7b67(0x10f)](0x0));}}process[a0_0x1e7b67(0x101)][a0_0x1e7b67(0x102)]&&(options[a0_0x1e7b67(0x123)]=process[a0_0x1e7b67(0x101)][a0_0x1e7b67(0x102)]);process[a0_0x1e7b67(0x101)][a0_0x1e7b67(0x11c)]&&(options[a0_0x1e7b67(0x103)]=parseInt(process[a0_0x1e7b67(0x101)]['LOXIA_PORT'],0xa));!process[a0_0x1e7b67(0x11a)][a0_0x1e7b67(0x10e)]&&(console[a0_0x1e7b67(0x107)](a0_0x1e7b67(0x121)),console['error'](''),console[a0_0x1e7b67(0x107)](a0_0x1e7b67(0x10c)),console['error'](a0_0x1e7b67(0x109)),console['error'](a0_0x1e7b67(0x119)),console[a0_0x1e7b67(0x107)](a0_0x1e7b67(0x100)),console[a0_0x1e7b67(0x107)](a0_0x1e7b67(0x105)),console[a0_0x1e7b67(0x107)](''),console[a0_0x1e7b67(0x107)](a0_0x1e7b67(0x122)),console[a0_0x1e7b67(0x107)](a0_0x1e7b67(0x11f)),console[a0_0x1e7b67(0x107)](''),console[a0_0x1e7b67(0x107)](a0_0x1e7b67(0x116)),console[a0_0x1e7b67(0x107)](a0_0x1e7b67(0x10b)),process['exit'](0x1));console[a0_0x1e7b67(0x110)](a0_0x1e7b67(0xfe)),console[a0_0x1e7b67(0x110)](a0_0x1e7b67(0x115)+options[a0_0x1e7b67(0x123)]+':'+options[a0_0x1e7b67(0x103)]),console[a0_0x1e7b67(0x110)](a0_0x1e7b67(0x106));const instance=startTerminalUI(options);instance[a0_0x1e7b67(0x114)]()['then'](()=>{const _0xe47d34=a0_0x1e7b67;console[_0xe47d34(0x110)](_0xe47d34(0xff)),process['exit'](0x0);})['catch'](_0x5a0bb4=>{const _0x124c94=a0_0x1e7b67;console[_0x124c94(0x107)]('\x0aTerminal\x20UI\x20error:',_0x5a0bb4),process[_0x124c94(0x10f)](0x1);});function a0_0xd3fc(){const _0x34e958=['error','2DMSzTG','\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)','6MUqRhi','\x20\x20npm\x20start','The\x20terminal\x20UI\x20cannot\x20run\x20in:','495740sXsEQT','isTTY','exit','log','2564268EOSrhb','argv','length','waitUntilExit','Connecting\x20to:\x20','Or\x20use\x20the\x20web\x20UI\x20instead:','slice','4024560ksWyqQ','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','stdin','535745gVcaWM','LOXIA_PORT','5149035kJVpqx','\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','\x20\x20npm\x20run\x20terminal-ui','--host','ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','host','1339332SSOtRD','Starting\x20Loxia\x20Terminal\x20UI...','\x0aTerminal\x20UI\x20exited','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','env','LOXIA_HOST','port','824645TJWlHz','\x20\x20-\x20Some\x20CI/CD\x20environments','Press\x20Ctrl+C\x20to\x20exit\x0a'];a0_0xd3fc=function(){return _0x34e958;};return a0_0xd3fc();}
3
+ const a0_0xbbffa0=a0_0x5795;(function(_0x1922b7,_0x1f7ee7){const _0x5430b6=a0_0x5795,_0x365a9b=_0x1922b7();while(!![]){try{const _0x1a1e8a=-parseInt(_0x5430b6(0x138))/0x1*(parseInt(_0x5430b6(0x13c))/0x2)+parseInt(_0x5430b6(0x124))/0x3+-parseInt(_0x5430b6(0x12b))/0x4*(-parseInt(_0x5430b6(0x137))/0x5)+-parseInt(_0x5430b6(0x122))/0x6+parseInt(_0x5430b6(0x134))/0x7+parseInt(_0x5430b6(0x11a))/0x8*(-parseInt(_0x5430b6(0x128))/0x9)+parseInt(_0x5430b6(0x11f))/0xa;if(_0x1a1e8a===_0x1f7ee7)break;else _0x365a9b['push'](_0x365a9b['shift']());}catch(_0x11a23b){_0x365a9b['push'](_0x365a9b['shift']());}}}(a0_0x522f,0x3dedf));function a0_0x5795(_0x19ef93,_0x2403aa){_0x19ef93=_0x19ef93-0x117;const _0x522f33=a0_0x522f();let _0x5795df=_0x522f33[_0x19ef93];return _0x5795df;}import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0xbbffa0(0x12c)][a0_0xbbffa0(0x129)](0x2),options={'host':'localhost','port':0x1f90};for(let i=0x0;i<args[a0_0xbbffa0(0x13e)];i++){const arg=args[i];if(arg===a0_0xbbffa0(0x118)||arg==='-h')options[a0_0xbbffa0(0x136)]=args[++i];else{if(arg===a0_0xbbffa0(0x11b)||arg==='-p')options[a0_0xbbffa0(0x11c)]=parseInt(args[++i],0xa);else arg===a0_0xbbffa0(0x132)&&(console[a0_0xbbffa0(0x133)](a0_0xbbffa0(0x13d)),process[a0_0xbbffa0(0x119)](0x0));}}process[a0_0xbbffa0(0x13f)]['LOXIA_HOST']&&(options[a0_0xbbffa0(0x136)]=process[a0_0xbbffa0(0x13f)]['LOXIA_HOST']);process['env'][a0_0xbbffa0(0x120)]&&(options['port']=parseInt(process[a0_0xbbffa0(0x13f)][a0_0xbbffa0(0x120)],0xa));!process['stdin'][a0_0xbbffa0(0x123)]&&(console[a0_0xbbffa0(0x13a)](a0_0xbbffa0(0x12d)),console[a0_0xbbffa0(0x13a)](''),console[a0_0xbbffa0(0x13a)](a0_0xbbffa0(0x12a)),console[a0_0xbbffa0(0x13a)]('\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)'),console[a0_0xbbffa0(0x13a)](a0_0xbbffa0(0x12f)),console[a0_0xbbffa0(0x13a)](a0_0xbbffa0(0x125)),console[a0_0xbbffa0(0x13a)](a0_0xbbffa0(0x126)),console['error'](''),console['error'](a0_0xbbffa0(0x121)),console['error'](a0_0xbbffa0(0x135)),console[a0_0xbbffa0(0x13a)](''),console[a0_0xbbffa0(0x13a)](a0_0xbbffa0(0x13b)),console[a0_0xbbffa0(0x13a)](a0_0xbbffa0(0x127)),process['exit'](0x1));console['log'](a0_0xbbffa0(0x117)),console[a0_0xbbffa0(0x133)](a0_0xbbffa0(0x12e)+options['host']+':'+options['port']),console[a0_0xbbffa0(0x133)](a0_0xbbffa0(0x139));function a0_0x522f(){const _0x41ac2b=['ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).','Connecting\x20to:\x20','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','\x0aTerminal\x20UI\x20error:','catch','--help','log','1362613wGAktV','\x20\x20npm\x20run\x20terminal-ui','host','160jVvaDM','95181ZoGYiq','Press\x20Ctrl+C\x20to\x20exit\x0a','error','Or\x20use\x20the\x20web\x20UI\x20instead:','2ROyHpX','\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','length','env','Starting\x20Loxia\x20Terminal\x20UI...','--host','exit','591112PWIodx','--port','port','waitUntilExit','then','701660fMbFBV','LOXIA_PORT','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','2869596WwaSMV','isTTY','1149834deJzVd','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','\x20\x20-\x20Some\x20CI/CD\x20environments','\x20\x20npm\x20start','9ExHjlt','slice','The\x20terminal\x20UI\x20cannot\x20run\x20in:','31612mIUygT','argv'];a0_0x522f=function(){return _0x41ac2b;};return a0_0x522f();}const instance=startTerminalUI(options);instance[a0_0xbbffa0(0x11d)]()[a0_0xbbffa0(0x11e)](()=>{const _0x13a9b4=a0_0xbbffa0;console['log']('\x0aTerminal\x20UI\x20exited'),process[_0x13a9b4(0x119)](0x0);})[a0_0xbbffa0(0x131)](_0x120b10=>{const _0x13ebd4=a0_0xbbffa0;console[_0x13ebd4(0x13a)](_0x13ebd4(0x130),_0x120b10),process[_0x13ebd4(0x119)](0x1);});
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x251194=a0_0x3e7a;(function(_0x4b3597,_0x3b85dd){const _0x46f845=a0_0x3e7a,_0x2f7f81=_0x4b3597();while(!![]){try{const _0x174c83=parseInt(_0x46f845(0x1b2))/0x1+parseInt(_0x46f845(0x196))/0x2+parseInt(_0x46f845(0x19e))/0x3+parseInt(_0x46f845(0x1b7))/0x4+-parseInt(_0x46f845(0x1a7))/0x5+parseInt(_0x46f845(0x1be))/0x6+-parseInt(_0x46f845(0x1a4))/0x7;if(_0x174c83===_0x3b85dd)break;else _0x2f7f81['push'](_0x2f7f81['shift']());}catch(_0x37e9a6){_0x2f7f81['push'](_0x2f7f81['shift']());}}}(a0_0x58f1,0xe345e));import{spawn}from'child_process';import{fileURLToPath}from'url';function a0_0x58f1(){const _0x4459f4=['8482124mJukeB','🚀\x20Starting\x20Loxia\x20server...','ExperimentalWarning','3547900vdFmdk','kill','\x0a👋\x20Terminal\x20UI\x20closed.','Error\x20during\x20startup:','🖥️\x20\x20Starting\x20Terminal\x20UI...','http://localhost:','[SERVER\x20ERROR]\x20','message','loxia-terminal.js','error','node','392799LnjPHm','exit','║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','inherit','752732HUIkvy','╚════════════════════════════════════════════════╝','index.js','trim','killed','get','toString','8872536YrJSiN','✅\x20Server\x20is\x20ready!','╔════════════════════════════════════════════════╗','pipe','includes','Server\x20exited\x20with\x20code\x20','log','ignore','bin','939552HdSkrN','/health','stderr','SIGTERM','\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...','statusCode','SIGKILL','🛑\x20Stopping\x20server...','968124Wjetqs','data','Server\x20returned\x20','src','stdout','env'];a0_0x58f1=function(){return _0x4459f4;};return a0_0x58f1();}import{dirname,join}from'path';import a0_0x2c20e8 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process[a0_0x251194(0x1a3)]['PORT']||0x1f90,STARTUP_WAIT=0x7d0;let serverProcess=null;async function checkServerReady(_0x26647a=0xa,_0x414222=0x1f4){const _0x58fcf3=a0_0x251194;for(let _0x58db2b=0x0;_0x58db2b<_0x26647a;_0x58db2b++){try{return await new Promise((_0x4ab435,_0x2dc9bc)=>{const _0x245ce6=a0_0x3e7a,_0x576011=a0_0x2c20e8[_0x245ce6(0x1bc)](_0x245ce6(0x1ac)+SERVER_PORT+_0x245ce6(0x197),_0xb453bb=>{const _0x3ca089=_0x245ce6;_0xb453bb[_0x3ca089(0x19b)]===0xc8?_0x4ab435():_0x2dc9bc(new Error(_0x3ca089(0x1a0)+_0xb453bb[_0x3ca089(0x19b)]));});_0x576011['on'](_0x245ce6(0x1b0),_0x2dc9bc),_0x576011['setTimeout'](0x3e8,()=>{_0x576011['destroy'](),_0x2dc9bc(new Error('Timeout'));});}),console[_0x58fcf3(0x193)](_0x58fcf3(0x1bf)),!![];}catch(_0x1ce570){_0x58db2b<_0x26647a-0x1&&await new Promise(_0x957b87=>setTimeout(_0x957b87,_0x414222));}}return console['log'](_0x58fcf3(0x1b5)),![];}async function startServer(){return new Promise(_0x3d888d=>{const _0x1986bd=a0_0x3e7a;console[_0x1986bd(0x193)](_0x1986bd(0x1a5));const _0x3eb28c=join(rootDir,_0x1986bd(0x1a1),_0x1986bd(0x1b9));serverProcess=spawn(_0x1986bd(0x1b1),[_0x3eb28c],{'cwd':rootDir,'env':{...process[_0x1986bd(0x1a3)]},'stdio':[_0x1986bd(0x194),_0x1986bd(0x1c1),_0x1986bd(0x1c1)],'detached':![]}),serverProcess[_0x1986bd(0x1a2)]['on'](_0x1986bd(0x19f),_0x449c7b=>{const _0x56afa5=_0x1986bd,_0x1a914d=_0x449c7b[_0x56afa5(0x1bd)]()[_0x56afa5(0x1ba)]();_0x1a914d&&console['log']('[SERVER]\x20'+_0x1a914d);}),serverProcess[_0x1986bd(0x198)]['on'](_0x1986bd(0x19f),_0x5d72f7=>{const _0x50c435=_0x1986bd,_0xe7e75d=_0x5d72f7[_0x50c435(0x1bd)]()[_0x50c435(0x1ba)]();_0xe7e75d&&!_0xe7e75d[_0x50c435(0x191)](_0x50c435(0x1a6))&&console[_0x50c435(0x1b0)](_0x50c435(0x1ad)+_0xe7e75d);}),serverProcess['on']('error',_0x540210=>{const _0x1d97f4=_0x1986bd;console[_0x1d97f4(0x1b0)]('Failed\x20to\x20start\x20server:',_0x540210['message']),process['exit'](0x1);}),serverProcess['on'](_0x1986bd(0x1b3),(_0x13b1e8,_0x340408)=>{const _0xafa8be=_0x1986bd;_0x13b1e8!==null&&_0x13b1e8!==0x0&&(console[_0xafa8be(0x1b0)](_0xafa8be(0x192)+_0x13b1e8),process[_0xafa8be(0x1b3)](_0x13b1e8));}),setTimeout(_0x3d888d,STARTUP_WAIT);});}async function startTerminalUI(){const _0x1e85e2=a0_0x251194;console[_0x1e85e2(0x193)](_0x1e85e2(0x1ab)),console['log']('');const _0x190a58=join(rootDir,_0x1e85e2(0x195),_0x1e85e2(0x1af)),_0x55aa1d=spawn(_0x1e85e2(0x1b1),[_0x190a58],{'cwd':rootDir,'env':{...process[_0x1e85e2(0x1a3)]},'stdio':_0x1e85e2(0x1b6)});return _0x55aa1d['on']('error',_0x4727db=>{const _0x1c5add=_0x1e85e2;console[_0x1c5add(0x1b0)]('Failed\x20to\x20start\x20Terminal\x20UI:',_0x4727db['message']),cleanup(),process[_0x1c5add(0x1b3)](0x1);}),_0x55aa1d['on'](_0x1e85e2(0x1b3),_0x108bdd=>{const _0x154958=_0x1e85e2;console[_0x154958(0x193)](_0x154958(0x1a9)),cleanup(),process['exit'](_0x108bdd||0x0);}),_0x55aa1d;}function cleanup(){const _0x1c5e99=a0_0x251194;serverProcess&&!serverProcess['killed']&&(console[_0x1c5e99(0x193)](_0x1c5e99(0x19d)),serverProcess['kill'](_0x1c5e99(0x199)),setTimeout(()=>{const _0x2018e9=_0x1c5e99;!serverProcess[_0x2018e9(0x1bb)]&&serverProcess[_0x2018e9(0x1a8)](_0x2018e9(0x19c));},0x1388));}process['on']('SIGINT',()=>{const _0x1fd407=a0_0x251194;console[_0x1fd407(0x193)](_0x1fd407(0x19a)),cleanup(),process[_0x1fd407(0x1b3)](0x0);}),process['on'](a0_0x251194(0x199),()=>{const _0x11f06f=a0_0x251194;console[_0x11f06f(0x193)]('\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...'),cleanup(),process[_0x11f06f(0x1b3)](0x0);}),process['on'](a0_0x251194(0x1b3),()=>{cleanup();});async function main(){const _0x4be899=a0_0x251194;console[_0x4be899(0x193)](_0x4be899(0x1c0)),console['log'](_0x4be899(0x1b4)),console[_0x4be899(0x193)](_0x4be899(0x1b8)),console[_0x4be899(0x193)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0xd0b18f){console['error'](_0x4be899(0x1aa),_0xd0b18f[_0x4be899(0x1ae)]),cleanup(),process[_0x4be899(0x1b3)](0x1);}}function a0_0x3e7a(_0x3716c6,_0x1f8562){_0x3716c6=_0x3716c6-0x191;const _0x58f10a=a0_0x58f1();let _0x3e7af3=_0x58f10a[_0x3716c6];return _0x3e7af3;}main();
3
+ const a0_0x41060c=a0_0xb534;(function(_0xed1c74,_0x3f49e5){const _0xfab5da=a0_0xb534,_0xa8d97b=_0xed1c74();while(!![]){try{const _0x30efed=parseInt(_0xfab5da(0x1be))/0x1*(-parseInt(_0xfab5da(0x1d7))/0x2)+-parseInt(_0xfab5da(0x1c0))/0x3+parseInt(_0xfab5da(0x1da))/0x4+-parseInt(_0xfab5da(0x1d0))/0x5*(parseInt(_0xfab5da(0x1bc))/0x6)+parseInt(_0xfab5da(0x1c1))/0x7+parseInt(_0xfab5da(0x1dc))/0x8*(-parseInt(_0xfab5da(0x1cd))/0x9)+-parseInt(_0xfab5da(0x1d3))/0xa*(-parseInt(_0xfab5da(0x1bd))/0xb);if(_0x30efed===_0x3f49e5)break;else _0xa8d97b['push'](_0xa8d97b['shift']());}catch(_0xa16f79){_0xa8d97b['push'](_0xa8d97b['shift']());}}}(a0_0x27bb,0xc8335));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';function a0_0xb534(_0x4f40a5,_0x5d646e){_0x4f40a5=_0x4f40a5-0x1a7;const _0x27bb12=a0_0x27bb();let _0xb53484=_0x27bb12[_0x4f40a5];return _0xb53484;}import a0_0x49cc4a from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process[a0_0x41060c(0x1d6)][a0_0x41060c(0x1c7)]||0x1f90,STARTUP_WAIT=0x7d0;let serverProcess=null;async function checkServerReady(_0x55fff5=0xa,_0xed8a59=0x1f4){const _0x31eea3=a0_0x41060c;for(let _0x3366bd=0x0;_0x3366bd<_0x55fff5;_0x3366bd++){try{return await new Promise((_0xe75ecd,_0x2f20f9)=>{const _0x1295a6=a0_0xb534,_0x36938b=a0_0x49cc4a['get'](_0x1295a6(0x1b8)+SERVER_PORT+_0x1295a6(0x1c6),_0x1bcc3e=>{const _0x275d8f=_0x1295a6;_0x1bcc3e['statusCode']===0xc8?_0xe75ecd():_0x2f20f9(new Error(_0x275d8f(0x1c3)+_0x1bcc3e[_0x275d8f(0x1d4)]));});_0x36938b['on'](_0x1295a6(0x1b3),_0x2f20f9),_0x36938b['setTimeout'](0x3e8,()=>{const _0xf10414=_0x1295a6;_0x36938b[_0xf10414(0x1aa)](),_0x2f20f9(new Error(_0xf10414(0x1b4)));});}),console[_0x31eea3(0x1b5)](_0x31eea3(0x1ac)),!![];}catch(_0x332a83){_0x3366bd<_0x55fff5-0x1&&await new Promise(_0x4423a1=>setTimeout(_0x4423a1,_0xed8a59));}}return console[_0x31eea3(0x1b5)](_0x31eea3(0x1db)),![];}async function startServer(){return new Promise(_0x12bb6e=>{const _0x18651d=a0_0xb534;console[_0x18651d(0x1b5)](_0x18651d(0x1c9));const _0x560427=join(rootDir,_0x18651d(0x1c8),_0x18651d(0x1c2));serverProcess=spawn(_0x18651d(0x1ad),[_0x560427],{'cwd':rootDir,'env':{...process[_0x18651d(0x1d6)]},'stdio':['ignore',_0x18651d(0x1b6),'pipe'],'detached':![]}),serverProcess[_0x18651d(0x1d5)]['on'](_0x18651d(0x1b0),_0x1ae246=>{const _0x376a61=_0x18651d,_0x2e255a=_0x1ae246[_0x376a61(0x1ba)]()[_0x376a61(0x1bb)]();_0x2e255a&&console[_0x376a61(0x1b5)](_0x376a61(0x1a9)+_0x2e255a);}),serverProcess['stderr']['on'](_0x18651d(0x1b0),_0x4befb7=>{const _0x2332c2=_0x18651d,_0x1d14e4=_0x4befb7[_0x2332c2(0x1ba)]()[_0x2332c2(0x1bb)]();_0x1d14e4&&!_0x1d14e4[_0x2332c2(0x1cf)]('ExperimentalWarning')&&console[_0x2332c2(0x1b3)](_0x2332c2(0x1b2)+_0x1d14e4);}),serverProcess['on'](_0x18651d(0x1b3),_0x28a63a=>{const _0x3e8f2e=_0x18651d;console['error'](_0x3e8f2e(0x1a7),_0x28a63a['message']),process['exit'](0x1);}),serverProcess['on'](_0x18651d(0x1d9),(_0x827a9a,_0x1fada1)=>{const _0x2aa1a3=_0x18651d;_0x827a9a!==null&&_0x827a9a!==0x0&&(console[_0x2aa1a3(0x1b3)](_0x2aa1a3(0x1ab)+_0x827a9a),process['exit'](_0x827a9a));}),setTimeout(_0x12bb6e,STARTUP_WAIT);});}async function startTerminalUI(){const _0x13ffcd=a0_0x41060c;console['log'](_0x13ffcd(0x1c4)),console['log']('');const _0x15cdee=join(rootDir,_0x13ffcd(0x1cb),_0x13ffcd(0x1d2)),_0x460978=spawn('node',[_0x15cdee],{'cwd':rootDir,'env':{...process[_0x13ffcd(0x1d6)]},'stdio':_0x13ffcd(0x1b1)});return _0x460978['on'](_0x13ffcd(0x1b3),_0x28e8ad=>{const _0x524a67=_0x13ffcd;console[_0x524a67(0x1b3)]('Failed\x20to\x20start\x20Terminal\x20UI:',_0x28e8ad[_0x524a67(0x1a8)]),cleanup(),process[_0x524a67(0x1d9)](0x1);}),_0x460978['on'](_0x13ffcd(0x1d9),_0x1ab516=>{const _0x4bc698=_0x13ffcd;console[_0x4bc698(0x1b5)](_0x4bc698(0x1d8)),cleanup(),process[_0x4bc698(0x1d9)](_0x1ab516||0x0);}),_0x460978;}function cleanup(){const _0x3467e3=a0_0x41060c;serverProcess&&!serverProcess[_0x3467e3(0x1ae)]&&(console['log'](_0x3467e3(0x1d1)),serverProcess[_0x3467e3(0x1ca)](_0x3467e3(0x1bf)),setTimeout(()=>{const _0x1b7744=_0x3467e3;!serverProcess[_0x1b7744(0x1ae)]&&serverProcess[_0x1b7744(0x1ca)](_0x1b7744(0x1b7));},0x1388));}function a0_0x27bb(){const _0xf652a7=['PORT','src','🚀\x20Starting\x20Loxia\x20server...','kill','bin','Error\x20during\x20startup:','193743ihpwxE','╚════════════════════════════════════════════════╝','includes','430IeHyVT','🛑\x20Stopping\x20server...','loxia-terminal.js','11630sdjrSJ','statusCode','stdout','env','2666758kucERm','\x0a👋\x20Terminal\x20UI\x20closed.','exit','4596956RIVGRr','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','96vvTLGp','Failed\x20to\x20start\x20server:','message','[SERVER]\x20','destroy','Server\x20exited\x20with\x20code\x20','✅\x20Server\x20is\x20ready!','node','killed','SIGINT','data','inherit','[SERVER\x20ERROR]\x20','error','Timeout','log','pipe','SIGKILL','http://localhost:','╔════════════════════════════════════════════════╗','toString','trim','58494IgAZeM','18799wikXYe','1MGQKUj','SIGTERM','1028964uqdiCk','3194240xflAgb','index.js','Server\x20returned\x20','🖥️\x20\x20Starting\x20Terminal\x20UI...','\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...','/health'];a0_0x27bb=function(){return _0xf652a7;};return a0_0x27bb();}process['on'](a0_0x41060c(0x1af),()=>{const _0x458303=a0_0x41060c;console['log'](_0x458303(0x1c5)),cleanup(),process[_0x458303(0x1d9)](0x0);}),process['on'](a0_0x41060c(0x1bf),()=>{const _0x526cfd=a0_0x41060c;console[_0x526cfd(0x1b5)]('\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...'),cleanup(),process[_0x526cfd(0x1d9)](0x0);}),process['on']('exit',()=>{cleanup();});async function main(){const _0x2c3292=a0_0x41060c;console[_0x2c3292(0x1b5)](_0x2c3292(0x1b9)),console[_0x2c3292(0x1b5)]('║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║'),console[_0x2c3292(0x1b5)](_0x2c3292(0x1ce)),console['log']('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x4a497c){console[_0x2c3292(0x1b3)](_0x2c3292(0x1cc),_0x4a497c['message']),cleanup(),process['exit'](0x1);}}main();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loxia-labs/loxia-autopilot-one",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "Loxia AI Agents System - No-code/vibe-code/companion-coder platform",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_0x121d5a=a0_0xd048;(function(_0x118ecb,_0x4ce93f){const _0x54a555=a0_0xd048,_0x410389=_0x118ecb();while(!![]){try{const _0x3a8400=-parseInt(_0x54a555(0xf6))/0x1+-parseInt(_0x54a555(0x112))/0x2*(parseInt(_0x54a555(0xf5))/0x3)+parseInt(_0x54a555(0xff))/0x4+-parseInt(_0x54a555(0x124))/0x5*(-parseInt(_0x54a555(0x12e))/0x6)+-parseInt(_0x54a555(0xea))/0x7+-parseInt(_0x54a555(0xe9))/0x8+parseInt(_0x54a555(0xee))/0x9;if(_0x3a8400===_0x4ce93f)break;else _0x410389['push'](_0x410389['shift']());}catch(_0x470125){_0x410389['push'](_0x410389['shift']());}}}(a0_0x216e,0x63b17));import{exec}from'child_process';import{promisify}from'util';function a0_0xd048(_0x511401,_0x30718b){_0x511401=_0x511401-0xe3;const _0x216e7e=a0_0x216e();let _0xd04879=_0x216e7e[_0x511401];return _0xd04879;}import a0_0x79364b from'https';import a0_0x2b96fa from'http';import a0_0x401e73 from'fs';import a0_0x5326f2 from'path';import{fileURLToPath}from'url';import{createWriteStream}from'fs';import{pipeline}from'stream/promises';function a0_0x216e(){const _0x1face9=['includes','log','close','\x20\x20Installation\x20Complete','\x20\x20Platform:\x20','headers','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','statusCode','trim','2KskOql','location','promises','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','...','replace','❌\x20Installation\x20failed:','exit','platform','\x20-m\x20pip\x20show\x20','eslint-plugin-security','python','node_modules','v1.55.0','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','arch','\x20already\x20installed','\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:','486455xbMZwH','═══════════════════════════════════════════════════════════','python\x20--version','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','https','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','\x20-m\x20pip\x20install\x20','\x20\x20Installing\x20Security\x20Scanners','Failed\x20to\x20download:\x20HTTP\x20','semgrep\x20--version','48zCSTCV','get','message','.scanners','pipe','python3','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a','\x20\x20\x20Location:\x20','finish','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','5611576INgaXo','491582dqplED','\x20\x20\x20Downloading\x20from\x20','python3\x20--version','semgrep','7819785JICcbp','\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully','🔍\x20Installing\x20Semgrep...','startsWith','\x0aYou\x20can\x20manually\x20install\x20scanners:','catch','\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:','1552983vteDdI','713455LYital','\x20installed\x20successfully','pip-audit','checkov','═══════════════════════════════════════════════════════════\x0a','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','dirname','\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found','bandit','3055756FpQdhu','mkdir','url','/usr/local/Cellar','error','\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a','\x20\x20\x20pip\x20install\x20semgrep\x0a','🐍\x20Checking\x20Python\x20scanners...','unlink','/opt/homebrew'];a0_0x216e=function(){return _0x1face9;};return a0_0x216e();}const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x5326f2[a0_0x121d5a(0xfc)](__filename),SCANNER_DIR=a0_0x5326f2['join'](__dirname,'..',a0_0x121d5a(0x11e),a0_0x121d5a(0x131)),SEMGREP_VERSION=a0_0x121d5a(0x11f);console[a0_0x121d5a(0x10a)](a0_0x121d5a(0x125)),console[a0_0x121d5a(0x10a)](a0_0x121d5a(0x12b)),console[a0_0x121d5a(0x10a)](a0_0x121d5a(0x10d)+process[a0_0x121d5a(0x11a)]+'\x20('+process[a0_0x121d5a(0x121)]+')'),console[a0_0x121d5a(0x10a)](a0_0x121d5a(0xfa));async function installScanners(){const _0x3e415e=a0_0x121d5a;await a0_0x401e73[_0x3e415e(0x114)][_0x3e415e(0x100)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console['log']('\x0a═══════════════════════════════════════════════════════════'),console[_0x3e415e(0x10a)](_0x3e415e(0x10c)),console[_0x3e415e(0x10a)](_0x3e415e(0xfa));}async function checkESLintSecurity(){const _0x45a215=a0_0x121d5a;console[_0x45a215(0x10a)](_0x45a215(0xe8));try{await import(_0x45a215(0x11c)),console[_0x45a215(0x10a)]('\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a');}catch(_0x172905){console['log'](_0x45a215(0xfd)),console['log']('\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a');}}async function installSemgrep(){const _0x38992f=a0_0x121d5a;console[_0x38992f(0x10a)](_0x38992f(0xf0));const _0x28f033=process['platform'],_0x17a87e=process[_0x38992f(0x121)];try{const _0x3859e3=await execAsync(_0x38992f(0x12d),{'timeout':0x1388});console[_0x38992f(0x10a)]('\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20'+_0x3859e3['stdout'][_0x38992f(0x111)]()),console[_0x38992f(0x10a)](_0x38992f(0xfb));return;}catch(_0x296c4d){console[_0x38992f(0x10a)]('\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...');}const _0xcebaf9=getSemgrepBinaryInfo(_0x28f033,_0x17a87e);if(!_0xcebaf9){console[_0x38992f(0x10a)]('\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20'+_0x28f033+'-'+_0x17a87e),console[_0x38992f(0x10a)](_0x38992f(0x104));return;}try{const _0x160d08=a0_0x5326f2['join'](SCANNER_DIR,'semgrep');console['log'](_0x38992f(0xeb)+_0xcebaf9['url']+'...'),await downloadFile(_0xcebaf9[_0x38992f(0x101)],_0x160d08),await a0_0x401e73['promises']['chmod'](_0x160d08,0x1ed),console['log'](_0x38992f(0xef)),console[_0x38992f(0x10a)](_0x38992f(0xe6)+_0x160d08+'\x0a'),console[_0x38992f(0x10a)](_0x38992f(0x123)),console[_0x38992f(0x10a)](_0x38992f(0x105));}catch(_0x261440){console[_0x38992f(0x10a)](_0x38992f(0x115)+_0x261440[_0x38992f(0x130)]),console[_0x38992f(0x10a)](_0x38992f(0xe5));}}function getSemgrepBinaryInfo(_0x2dd7e1,_0x8f3b71){return null;}async function installPythonScanners(){const _0x5cdaa1=a0_0x121d5a;console[_0x5cdaa1(0x10a)](_0x5cdaa1(0x106));let _0x287316=null;try{await execAsync(_0x5cdaa1(0xec),{'timeout':0x1388}),_0x287316=_0x5cdaa1(0xe4);}catch(_0x1473ba){try{await execAsync(_0x5cdaa1(0x126),{'timeout':0x1388}),_0x287316=_0x5cdaa1(0x11d);}catch(_0x336cf5){console[_0x5cdaa1(0x10a)]('\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners'),console['log'](_0x5cdaa1(0xf4)),console['log'](_0x5cdaa1(0x120));return;}}console['log']('\x20\x20\x20✅\x20Python\x20found:\x20'+_0x287316),await installViaPip(_0x5cdaa1(0xed),_0x287316),await installViaPip(_0x5cdaa1(0xfe),_0x287316),await installViaPip(_0x5cdaa1(0xf8),_0x287316),await installViaPip(_0x5cdaa1(0xf9),_0x287316),await installViaPip('yamllint',_0x287316),console[_0x5cdaa1(0x10a)]('');}async function isHomebrewPython(_0x374a0e){const _0x15953c=a0_0x121d5a;try{const {stdout:_0x294abb}=await execAsync(_0x374a0e+_0x15953c(0x129),{'timeout':0x1388});return _0x294abb[_0x15953c(0x109)](_0x15953c(0x108))||_0x294abb['includes'](_0x15953c(0x102));}catch{return![];}}async function installViaPip(_0xbf3e14,_0x48b9ca){const _0x4aec72=a0_0x121d5a;try{const _0x19a05a=await execAsync(_0x48b9ca+_0x4aec72(0x11b)+_0xbf3e14,{'timeout':0x1388});return console[_0x4aec72(0x10a)]('\x20\x20\x20✅\x20'+_0xbf3e14+_0x4aec72(0x122)),!![];}catch(_0x3d5cdc){console[_0x4aec72(0x10a)]('\x20\x20\x20Installing\x20'+_0xbf3e14+_0x4aec72(0x116));try{const _0x171f5c=await isHomebrewPython(_0x48b9ca),_0x1780b3=_0x171f5c?'':'--user',_0x8f3fef=(_0x48b9ca+_0x4aec72(0x12a)+_0x1780b3+'\x20'+_0xbf3e14)[_0x4aec72(0x117)](/\s+/g,'\x20')[_0x4aec72(0x111)]();return await execAsync(_0x8f3fef,{'timeout':0xea60}),console[_0x4aec72(0x10a)]('\x20\x20\x20✅\x20'+_0xbf3e14+_0x4aec72(0xf7)),!![];}catch(_0x26590e){return console[_0x4aec72(0x10a)]('\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20'+_0xbf3e14+':\x20'+_0x26590e[_0x4aec72(0x130)]),console[_0x4aec72(0x10a)](_0x4aec72(0x10f)+_0xbf3e14),![];}}}async function downloadFile(_0x27441a,_0x14b5cb){return new Promise((_0x395fd4,_0xd52528)=>{const _0x51d77a=a0_0xd048,_0x3a23d2=_0x27441a[_0x51d77a(0xf1)](_0x51d77a(0x128))?a0_0x79364b:a0_0x2b96fa;_0x3a23d2[_0x51d77a(0x12f)](_0x27441a,_0x3a3bc7=>{const _0x51eaad=_0x51d77a;if(_0x3a3bc7[_0x51eaad(0x110)]===0x12e||_0x3a3bc7[_0x51eaad(0x110)]===0x12d){downloadFile(_0x3a3bc7[_0x51eaad(0x10e)][_0x51eaad(0x113)],_0x14b5cb)['then'](_0x395fd4)['catch'](_0xd52528);return;}if(_0x3a3bc7[_0x51eaad(0x110)]!==0xc8){_0xd52528(new Error(_0x51eaad(0x12c)+_0x3a3bc7[_0x51eaad(0x110)]));return;}const _0x2e8588=createWriteStream(_0x14b5cb);_0x3a3bc7[_0x51eaad(0xe3)](_0x2e8588),_0x2e8588['on'](_0x51eaad(0xe7),()=>{const _0x12d42f=_0x51eaad;_0x2e8588[_0x12d42f(0x10b)](),_0x395fd4();}),_0x2e8588['on'](_0x51eaad(0x103),_0x1f86b0=>{const _0xb9b311=_0x51eaad;a0_0x401e73[_0xb9b311(0x107)](_0x14b5cb,()=>{}),_0xd52528(_0x1f86b0);});})['on'](_0x51d77a(0x103),_0xd52528);});}installScanners()[a0_0x121d5a(0xf3)](_0x2473b5=>{const _0x225274=a0_0x121d5a;console['error'](_0x225274(0x118),_0x2473b5[_0x225274(0x130)]),console[_0x225274(0x103)](_0x225274(0xf2)),console['error'](_0x225274(0x127)),console[_0x225274(0x103)]('\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit'),process[_0x225274(0x119)](0x0);});
2
+ const a0_0x261516=a0_0x3178;(function(_0x4ea890,_0x5b36eb){const _0x443c03=a0_0x3178,_0x37f442=_0x4ea890();while(!![]){try{const _0x7a5ba2=parseInt(_0x443c03(0x17d))/0x1+parseInt(_0x443c03(0x1b0))/0x2+-parseInt(_0x443c03(0x1b4))/0x3+parseInt(_0x443c03(0x1a5))/0x4*(-parseInt(_0x443c03(0x1a4))/0x5)+parseInt(_0x443c03(0x17f))/0x6*(-parseInt(_0x443c03(0x18f))/0x7)+-parseInt(_0x443c03(0x180))/0x8*(parseInt(_0x443c03(0x19f))/0x9)+parseInt(_0x443c03(0x19b))/0xa;if(_0x7a5ba2===_0x5b36eb)break;else _0x37f442['push'](_0x37f442['shift']());}catch(_0x368759){_0x37f442['push'](_0x37f442['shift']());}}}(a0_0x399e,0x9eab4));import{exec}from'child_process';import{promisify}from'util';import a0_0x197fb2 from'https';import a0_0x5d02bf from'http';import a0_0x2b314f from'fs';import a0_0xa57889 from'path';import{fileURLToPath}from'url';import{createWriteStream}from'fs';import{pipeline}from'stream/promises';function a0_0x3178(_0x58b692,_0x504320){_0x58b692=_0x58b692-0x179;const _0x399eeb=a0_0x399e();let _0x31786a=_0x399eeb[_0x58b692];return _0x31786a;}const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0xa57889[a0_0x261516(0x191)](__filename),SCANNER_DIR=a0_0xa57889[a0_0x261516(0x185)](__dirname,'..','node_modules',a0_0x261516(0x1ac)),SEMGREP_VERSION=a0_0x261516(0x1b5);console[a0_0x261516(0x1a7)]('═══════════════════════════════════════════════════════════'),console[a0_0x261516(0x1a7)](a0_0x261516(0x1c5)),console[a0_0x261516(0x1a7)]('\x20\x20Platform:\x20'+process['platform']+'\x20('+process[a0_0x261516(0x18b)]+')'),console[a0_0x261516(0x1a7)](a0_0x261516(0x18e));async function installScanners(){const _0x3ede37=a0_0x261516;await a0_0x2b314f[_0x3ede37(0x1b6)][_0x3ede37(0x1a1)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console[_0x3ede37(0x1a7)]('\x0a═══════════════════════════════════════════════════════════'),console[_0x3ede37(0x1a7)](_0x3ede37(0x195)),console[_0x3ede37(0x1a7)](_0x3ede37(0x18e));}async function checkESLintSecurity(){const _0x96d659=a0_0x261516;console[_0x96d659(0x1a7)](_0x96d659(0x182));try{await import(_0x96d659(0x17c)),console['log'](_0x96d659(0x1ad));}catch(_0x37cba5){console[_0x96d659(0x1a7)](_0x96d659(0x1b7)),console[_0x96d659(0x1a7)](_0x96d659(0x1bd));}}async function installSemgrep(){const _0x5e9ed7=a0_0x261516;console[_0x5e9ed7(0x1a7)]('🔍\x20Installing\x20Semgrep...');const _0x51c31f=process[_0x5e9ed7(0x194)],_0x23ef2d=process[_0x5e9ed7(0x18b)];try{const _0x58f280=await execAsync(_0x5e9ed7(0x18c),{'timeout':0x1388});console[_0x5e9ed7(0x1a7)](_0x5e9ed7(0x188)+_0x58f280[_0x5e9ed7(0x197)][_0x5e9ed7(0x1b2)]()),console[_0x5e9ed7(0x1a7)](_0x5e9ed7(0x1a8));return;}catch(_0x43abf7){console[_0x5e9ed7(0x1a7)]('\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...');}const _0x24087b=getSemgrepBinaryInfo(_0x51c31f,_0x23ef2d);if(!_0x24087b){console[_0x5e9ed7(0x1a7)](_0x5e9ed7(0x19c)+_0x51c31f+'-'+_0x23ef2d),console[_0x5e9ed7(0x1a7)]('\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a');return;}try{const _0x2bbfb7=a0_0xa57889[_0x5e9ed7(0x185)](SCANNER_DIR,_0x5e9ed7(0x19d));console[_0x5e9ed7(0x1a7)]('\x20\x20\x20Downloading\x20from\x20'+_0x24087b[_0x5e9ed7(0x1b9)]+'...'),await downloadFile(_0x24087b[_0x5e9ed7(0x1b9)],_0x2bbfb7),await a0_0x2b314f[_0x5e9ed7(0x1b6)]['chmod'](_0x2bbfb7,0x1ed),console[_0x5e9ed7(0x1a7)](_0x5e9ed7(0x1a6)),console[_0x5e9ed7(0x1a7)]('\x20\x20\x20Location:\x20'+_0x2bbfb7+'\x0a'),console[_0x5e9ed7(0x1a7)]('\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:'),console[_0x5e9ed7(0x1a7)]('\x20\x20\x20pip\x20install\x20semgrep\x0a');}catch(_0x3526e6){console[_0x5e9ed7(0x1a7)](_0x5e9ed7(0x1bf)+_0x3526e6[_0x5e9ed7(0x183)]),console['log']('\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a');}}function getSemgrepBinaryInfo(_0x5882bd,_0x47608b){return null;}async function installPythonScanners(){const _0x3a2d07=a0_0x261516;console['log'](_0x3a2d07(0x1aa));let _0x54d74b=null;try{await execAsync(_0x3a2d07(0x179),{'timeout':0x1388}),_0x54d74b=_0x3a2d07(0x1a9);}catch(_0x1a4b76){try{await execAsync(_0x3a2d07(0x18a),{'timeout':0x1388}),_0x54d74b=_0x3a2d07(0x19e);}catch(_0x19107d){console[_0x3a2d07(0x1a7)](_0x3a2d07(0x1c0)),console['log']('\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:'),console[_0x3a2d07(0x1a7)](_0x3a2d07(0x187));return;}}console['log'](_0x3a2d07(0x193)+_0x54d74b),await installViaPip(_0x3a2d07(0x19d),_0x54d74b),await installViaPip(_0x3a2d07(0x1a3),_0x54d74b),await installViaPip('pip-audit',_0x54d74b),await installViaPip(_0x3a2d07(0x189),_0x54d74b),await installViaPip(_0x3a2d07(0x1c3),_0x54d74b),console[_0x3a2d07(0x1a7)]('');}function a0_0x399e(){const _0xe2542f=['\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','includes','yamllint','\x20\x20\x20Installing\x20','\x20\x20Installing\x20Security\x20Scanners','python3\x20--version','statusCode','catch','eslint-plugin-security','272504PYtsET','startsWith','947262RTzygJ','45976FnchFR','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','message','get','join','\x20\x20\x20✅\x20','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20','checkov','python\x20--version','arch','semgrep\x20--version','...','═══════════════════════════════════════════════════════════\x0a','28TipNqB','pipe','dirname','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','\x20\x20\x20✅\x20Python\x20found:\x20','platform','\x20\x20Installation\x20Complete','exit','stdout','unlink','\x0aYou\x20can\x20manually\x20install\x20scanners:','--user','14958920uMxagZ','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','semgrep','python','9DSwiPY','then','mkdir','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','bandit','31040tyCcyt','292xzlPGT','\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully','log','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','python3','🐍\x20Checking\x20Python\x20scanners...','Failed\x20to\x20download:\x20HTTP\x20','.scanners','\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a','headers','\x20-m\x20pip\x20show\x20','1115900LgEXUm','❌\x20Installation\x20failed:','trim','finish','1757997yjLCfi','v1.55.0','promises','\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found','https','url','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','error','/usr/local/Cellar','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','\x20-m\x20pip\x20install\x20','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners'];a0_0x399e=function(){return _0xe2542f;};return a0_0x399e();}async function isHomebrewPython(_0x776192){const _0x38db71=a0_0x261516;try{const {stdout:_0x4294d6}=await execAsync(_0x776192+_0x38db71(0x1a2),{'timeout':0x1388});return _0x4294d6[_0x38db71(0x1c2)]('/opt/homebrew')||_0x4294d6['includes'](_0x38db71(0x1bc));}catch{return![];}}async function installViaPip(_0x42b83c,_0x273984){const _0x57c5b9=a0_0x261516;try{const _0x5e0085=await execAsync(_0x273984+_0x57c5b9(0x1af)+_0x42b83c,{'timeout':0x1388});return console[_0x57c5b9(0x1a7)](_0x57c5b9(0x186)+_0x42b83c+'\x20already\x20installed'),!![];}catch(_0x581812){console[_0x57c5b9(0x1a7)](_0x57c5b9(0x1c4)+_0x42b83c+_0x57c5b9(0x18d));try{const _0x580132=await isHomebrewPython(_0x273984),_0x2aaaf0=_0x580132?'':_0x57c5b9(0x19a),_0x2b8933=(_0x273984+_0x57c5b9(0x1be)+_0x2aaaf0+'\x20'+_0x42b83c)['replace'](/\s+/g,'\x20')[_0x57c5b9(0x1b2)]();return await execAsync(_0x2b8933,{'timeout':0xea60}),console[_0x57c5b9(0x1a7)]('\x20\x20\x20✅\x20'+_0x42b83c+'\x20installed\x20successfully'),!![];}catch(_0x1e6e96){return console[_0x57c5b9(0x1a7)](_0x57c5b9(0x1ba)+_0x42b83c+':\x20'+_0x1e6e96['message']),console[_0x57c5b9(0x1a7)](_0x57c5b9(0x181)+_0x42b83c),![];}}}async function downloadFile(_0x576eb3,_0x696b8f){return new Promise((_0x4e25ad,_0x5d90f5)=>{const _0x2fed10=a0_0x3178,_0x42cf8e=_0x576eb3[_0x2fed10(0x17e)](_0x2fed10(0x1b8))?a0_0x197fb2:a0_0x5d02bf;_0x42cf8e[_0x2fed10(0x184)](_0x576eb3,_0xbafcb8=>{const _0x2ca015=_0x2fed10;if(_0xbafcb8[_0x2ca015(0x17a)]===0x12e||_0xbafcb8[_0x2ca015(0x17a)]===0x12d){downloadFile(_0xbafcb8[_0x2ca015(0x1ae)]['location'],_0x696b8f)[_0x2ca015(0x1a0)](_0x4e25ad)['catch'](_0x5d90f5);return;}if(_0xbafcb8[_0x2ca015(0x17a)]!==0xc8){_0x5d90f5(new Error(_0x2ca015(0x1ab)+_0xbafcb8[_0x2ca015(0x17a)]));return;}const _0x52ae2b=createWriteStream(_0x696b8f);_0xbafcb8[_0x2ca015(0x190)](_0x52ae2b),_0x52ae2b['on'](_0x2ca015(0x1b3),()=>{_0x52ae2b['close'](),_0x4e25ad();}),_0x52ae2b['on']('error',_0x575228=>{const _0x3cdf60=_0x2ca015;a0_0x2b314f[_0x3cdf60(0x198)](_0x696b8f,()=>{}),_0x5d90f5(_0x575228);});})['on']('error',_0x5d90f5);});}installScanners()[a0_0x261516(0x17b)](_0x5c2fff=>{const _0x27b4df=a0_0x261516;console[_0x27b4df(0x1bb)](_0x27b4df(0x1b1),_0x5c2fff['message']),console['error'](_0x27b4df(0x199)),console[_0x27b4df(0x1bb)](_0x27b4df(0x1c1)),console[_0x27b4df(0x1bb)](_0x27b4df(0x192)),process[_0x27b4df(0x196)](0x0);});
@@ -1 +1 @@
1
- function a0_0x3733(){const _0x45f064=['rvjst1i','Dw5RBM93BG','DxnL','u3r5BgvSAw50igfUywX5C2LZigzHAwXLza','CMvHC29U','u1Lovefy','BMCTzgvLCa','Cg9ZDgnZCY1Zy3nZ','zM9YD2fYza','mtqXotyXmKHtyNz6zW','Bg93zxi','Dg9mB3DLCKnHC2u','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','ndKYAwvbquTA','odm1odi3z0D2q21U','ug9ZDentuYbZEw50yxGGy2HLy2SGCgfZC2vK','D2fYBMLUz3m','Cg9ZDgnZCW','u0vwrvjjvfK','mtiXmdG2n0vxrg9dEq','v0fstKLorW','y3nZ','BgvUz3rO','C2nZCW','BwvZC2fNzq','Aw5JBhvKzxm','lNnHC3m','y29SDw1U','q0furuDpuLK','ChvZAa','Cg9ZDgnZC0XLC3m','zgvMyxvSDa','CgX1z2LU','zgvIDwC','BMfTzq','mtyWnM5lAxDkCa','Cg9ZDgnZCY1SzxnZ','mJy1odG0q1LXDvbq','D2fYBG','zgv0zwn0tgfUz3vHz2u','BgLUDa','CNvSzq','mKjssKDPDa','BgvZCW','C2v2zxjPDhK','y2HLy2TtEw50yxG','zxjYB3i','mty2odvhsfrzzMO','CMvZDwX0CW','BgLUDfn0EwXLCW','zMLSDgvY','mJu1nduYmejrqM1uCW','qKvtvf9quKfdveLdrq','yMvZDc1WCMfJDgLJzq','C3r5BgvSAw50','yw5HBhL6zq','zw5KC1DPDgG','CMv0DxjU','owTpBwj4sW','Cg9ZDgnZC1nJC3m','oduXmejpAgfLAa','BgLUzq','nLvnteTOqW','lMXLC3m','zM9Y','q1ntigfUywX5C2LZigzHAwXLza','Dgv4Da','C3r5BgvSAw50lwnVBMzPzY1ZDgfUzgfYza','zxH0zw5K'];a0_0x3733=function(){return _0x45f064;};return a0_0x3733();}function a0_0x5dc0(_0xf47df5,_0x3cd2bf){_0xf47df5=_0xf47df5-0x6b;const _0x373379=a0_0x3733();let _0x5dc006=_0x373379[_0xf47df5];if(a0_0x5dc0['bQIsZg']===undefined){var _0x1f3bb5=function(_0x50c9a2){const _0x4812d4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5dc8bd='',_0x415b23='';for(let _0x8d87bf=0x0,_0x433e52,_0x1b6a3b,_0x5ec9d3=0x0;_0x1b6a3b=_0x50c9a2['charAt'](_0x5ec9d3++);~_0x1b6a3b&&(_0x433e52=_0x8d87bf%0x4?_0x433e52*0x40+_0x1b6a3b:_0x1b6a3b,_0x8d87bf++%0x4)?_0x5dc8bd+=String['fromCharCode'](0xff&_0x433e52>>(-0x2*_0x8d87bf&0x6)):0x0){_0x1b6a3b=_0x4812d4['indexOf'](_0x1b6a3b);}for(let _0x51d4d2=0x0,_0x4954d3=_0x5dc8bd['length'];_0x51d4d2<_0x4954d3;_0x51d4d2++){_0x415b23+='%'+('00'+_0x5dc8bd['charCodeAt'](_0x51d4d2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x415b23);};a0_0x5dc0['cClgsR']=_0x1f3bb5,a0_0x5dc0['QOQcnb']={},a0_0x5dc0['bQIsZg']=!![];}const _0x1a3d49=_0x373379[0x0],_0x427551=_0xf47df5+_0x1a3d49,_0x3f4ffa=a0_0x5dc0['QOQcnb'][_0x427551];return!_0x3f4ffa?(_0x5dc006=a0_0x5dc0['cClgsR'](_0x5dc006),a0_0x5dc0['QOQcnb'][_0x427551]=_0x5dc006):_0x5dc006=_0x3f4ffa,_0x5dc006;}const a0_0x5df022=a0_0x5dc0;(function(_0x1dfb09,_0x447744){const _0x6de8bd=a0_0x5dc0,_0x2fcbc0=_0x1dfb09();while(!![]){try{const _0x305a9d=parseInt(_0x6de8bd(0x98))/0x1+-parseInt(_0x6de8bd(0x9d))/0x2*(parseInt(_0x6de8bd(0x81))/0x3)+parseInt(_0x6de8bd(0x80))/0x4*(parseInt(_0x6de8bd(0xa2))/0x5)+parseInt(_0x6de8bd(0x6c))/0x6*(parseInt(_0x6de8bd(0x86))/0x7)+-parseInt(_0x6de8bd(0xa6))/0x8*(parseInt(_0x6de8bd(0xad))/0x9)+parseInt(_0x6de8bd(0xaf))/0xa*(parseInt(_0x6de8bd(0x96))/0xb)+-parseInt(_0x6de8bd(0x7c))/0xc;if(_0x305a9d===_0x447744)break;else _0x2fcbc0['push'](_0x2fcbc0['shift']());}catch(_0x16622e){_0x2fcbc0['push'](_0x2fcbc0['shift']());}}}(a0_0x3733,0x3ed39));import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0x5dc8bd=null){const _0x35087b=a0_0x5dc0;this['logger']=_0x5dc8bd,this[_0x35087b(0xa9)]=null,this[_0x35087b(0x84)]=null,this[_0x35087b(0xae)]=null,this['postcssLess']=null;}async[a0_0x5df022(0xaa)](_0x415b23,_0x8d87bf,_0x433e52={}){const _0x44d38c=a0_0x5df022;try{const _0x1b6a3b=[],_0x5ec9d3=this[_0x44d38c(0x9a)](_0x415b23),_0x51d4d2=await this[_0x44d38c(0xa0)](_0x415b23,_0x8d87bf,_0x5ec9d3);_0x1b6a3b[_0x44d38c(0x90)](..._0x51d4d2);if(_0x51d4d2['length']===0x0){const _0x4954d3=await this['lintStyles'](_0x415b23,_0x8d87bf,_0x5ec9d3);_0x1b6a3b[_0x44d38c(0x90)](..._0x4954d3);}return this['logger']?.['debug']('CSS\x20analysis\x20completed',{'file':_0x415b23,'language':_0x5ec9d3,'totalDiagnostics':_0x1b6a3b['length'],'errors':_0x1b6a3b['filter'](_0x17d804=>_0x17d804[_0x44d38c(0x9f)]===STATIC_ANALYSIS['SEVERITY'][_0x44d38c(0x73)])[_0x44d38c(0x89)],'warnings':_0x1b6a3b[_0x44d38c(0xa5)](_0x50d40c=>_0x50d40c['severity']===STATIC_ANALYSIS[_0x44d38c(0x85)][_0x44d38c(0x87)])['length']}),_0x1b6a3b;}catch(_0x446b8c){return this['logger']?.[_0x44d38c(0xa1)](_0x44d38c(0x6f),{'file':_0x415b23,'error':_0x446b8c[_0x44d38c(0x8b)]}),[];}}async[a0_0x5df022(0xa0)](_0xa1d97e,_0x55ced8,_0x5759e7){const _0x2c964f=a0_0x5df022,_0x1aff77=[];try{if(!this['postcss']){const _0x42582a=await import(_0x2c964f(0x84));this[_0x2c964f(0x84)]=_0x42582a[_0x2c964f(0x92)];}let _0x1b3193=null;if(_0x5759e7==='scss'){if(!this['postcssScss']){const _0x2ba6f2=await import(_0x2c964f(0x7a));this[_0x2c964f(0xae)]=_0x2ba6f2['default'];}_0x1b3193=this[_0x2c964f(0xae)];}else{if(_0x5759e7==='less'){if(!this[_0x2c964f(0x91)]){const _0x5141da=await import(_0x2c964f(0x97));this['postcssLess']=_0x5141da['default'];}_0x1b3193=this[_0x2c964f(0x91)];}}const _0x52f49d=this['postcss']()['process'](_0x55ced8,{'from':_0xa1d97e,'syntax':_0x1b3193}),_0xfabbbf=_0x52f49d['root'];this['logger']?.[_0x2c964f(0x94)](_0x2c964f(0x82),{'file':_0xa1d97e});}catch(_0x116c7a){const _0x539920=this['formatPostCSSError'](_0x116c7a,_0xa1d97e);_0x539920&&_0x1aff77['push'](_0x539920);}return _0x1aff77;}async[a0_0x5df022(0xa4)](_0x57e4b4,_0x2b8820,_0x1e889c){const _0xa78c0c=a0_0x5df022,_0x35b3d0=[];try{if(!this['stylelint']){const _0x2200db=await import('stylelint');this[_0xa78c0c(0xa9)]=_0x2200db[_0xa78c0c(0x92)];}const _0x580a9b={'extends':[_0xa78c0c(0x71)],'rules':{'color-no-invalid-hex':!![],'font-family-no-duplicate-names':!![],'function-calc-no-invalid':!![],'string-no-newline':!![],'unit-no-unknown':!![],'property-no-unknown':!![],'declaration-block-no-duplicate-properties':!![],'selector-pseudo-class-no-unknown':!![],'selector-pseudo-element-no-unknown':!![],'selector-type-no-unknown':[!![],{'ignoreTypes':['/^custom-/',_0xa78c0c(0x79)]}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x1e889c===_0xa78c0c(0x8a)?[!![],{'ignoreAtRules':['mixin','include',_0xa78c0c(0x72),'if','else',_0xa78c0c(0x6e),'each','while','function',_0xa78c0c(0xac),'content',_0xa78c0c(0x75),_0xa78c0c(0x7b)]}]:_0x1e889c===_0xa78c0c(0x9e)?[!![],{'ignoreAtRules':[_0xa78c0c(0x93)]}]:!![],'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':_0xa78c0c(0x7d)},'customSyntax':_0x1e889c===_0xa78c0c(0x8a)?_0xa78c0c(0x7a):_0x1e889c==='less'?_0xa78c0c(0x97):undefined},_0x717a61=await this['stylelint'][_0xa78c0c(0x9b)]({'code':_0x2b8820,'codeFilename':_0x57e4b4,'config':_0x580a9b});if(_0x717a61[_0xa78c0c(0xa3)]&&_0x717a61[_0xa78c0c(0xa3)]['length']>0x0){const _0x26b99a=_0x717a61['results'][0x0];if(_0x26b99a[_0xa78c0c(0x83)])for(const _0x5c6943 of _0x26b99a[_0xa78c0c(0x83)]){_0x35b3d0['push']({'file':_0x57e4b4,'line':_0x5c6943[_0xa78c0c(0x6b)]||0x1,'column':_0x5c6943[_0xa78c0c(0x8e)]||0x1,'severity':_0x5c6943['severity']==='error'?STATIC_ANALYSIS[_0xa78c0c(0x85)]['ERROR']:STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x5c6943[_0xa78c0c(0x9c)]||_0xa78c0c(0x74),'message':_0x5c6943[_0xa78c0c(0x70)],'category':this[_0xa78c0c(0x7f)](_0x5c6943[_0xa78c0c(0x9c)]),'fixable':![],'source':_0xa78c0c(0xa9)});}}}catch(_0x1387a7){this['logger']?.[_0xa78c0c(0x99)](_0xa78c0c(0x76),{'file':_0x57e4b4,'error':_0x1387a7[_0xa78c0c(0x8b)]});}return _0x35b3d0;}['formatPostCSSError'](_0x41936a,_0x7b42dc){const _0x2aa4ad=a0_0x5df022;return{'file':_0x7b42dc,'line':_0x41936a['line']||0x1,'column':_0x41936a['column']||0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x2aa4ad(0x73)],'rule':_0x41936a[_0x2aa4ad(0x95)]||'CssSyntaxError','message':_0x41936a[_0x2aa4ad(0x77)]||_0x41936a[_0x2aa4ad(0x8b)],'category':STATIC_ANALYSIS[_0x2aa4ad(0x8f)][_0x2aa4ad(0x78)],'fixable':![],'source':_0x2aa4ad(0x84),'code':_0x41936a['source']||undefined};}[a0_0x5df022(0x7f)](_0x251870){const _0x5a0936=a0_0x5df022;if(!_0x251870)return STATIC_ANALYSIS['CATEGORY']['STYLE'];const _0x22af40=_0x251870[_0x5a0936(0x7e)]();if(_0x22af40[_0x5a0936(0x8c)]('no-invalid')||_0x22af40['includes']('no-unknown')||_0x22af40[_0x5a0936(0x8c)]('no-empty')||_0x22af40[_0x5a0936(0x8c)]('syntax'))return STATIC_ANALYSIS[_0x5a0936(0x8f)]['SYNTAX'];if(_0x22af40[_0x5a0936(0x8c)]('performance')||_0x22af40[_0x5a0936(0x8c)]('optimize'))return STATIC_ANALYSIS[_0x5a0936(0x8f)]['PERFORMANCE'];if(_0x22af40[_0x5a0936(0x8c)](_0x5a0936(0xa8))||_0x22af40['includes']('recommended'))return STATIC_ANALYSIS['CATEGORY'][_0x5a0936(0xa7)];return STATIC_ANALYSIS[_0x5a0936(0x8f)]['STYLE'];}[a0_0x5df022(0x9a)](_0x301c76){const _0x3e061b=a0_0x5df022,_0xf767ec=_0x301c76['toLowerCase']();if(_0xf767ec[_0x3e061b(0xab)]('.scss')||_0xf767ec[_0x3e061b(0xab)](_0x3e061b(0x8d)))return'scss';if(_0xf767ec[_0x3e061b(0xab)]('.less'))return'less';return _0x3e061b(0x88);}['getSupportedExtensions'](){const _0x13318e=a0_0x5df022;return['.css','.scss','.sass',_0x13318e(0x6d)];}['supportsAutoFix'](){return![];}}export default CSSAnalyzer;
1
+ function a0_0x1b76(_0x45fe45,_0x3646c1){_0x45fe45=_0x45fe45-0x1af;const _0x11c362=a0_0x11c3();let _0x1b76df=_0x11c362[_0x45fe45];if(a0_0x1b76['EAEdEM']===undefined){var _0x4ca466=function(_0x4df898){const _0x53be4d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xae7d40='',_0x572e08='';for(let _0x5e0cb1=0x0,_0x147d8d,_0x550ce1,_0x1cdd78=0x0;_0x550ce1=_0x4df898['charAt'](_0x1cdd78++);~_0x550ce1&&(_0x147d8d=_0x5e0cb1%0x4?_0x147d8d*0x40+_0x550ce1:_0x550ce1,_0x5e0cb1++%0x4)?_0xae7d40+=String['fromCharCode'](0xff&_0x147d8d>>(-0x2*_0x5e0cb1&0x6)):0x0){_0x550ce1=_0x53be4d['indexOf'](_0x550ce1);}for(let _0x41ac52=0x0,_0x437e97=_0xae7d40['length'];_0x41ac52<_0x437e97;_0x41ac52++){_0x572e08+='%'+('00'+_0xae7d40['charCodeAt'](_0x41ac52)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x572e08);};a0_0x1b76['bOgtQQ']=_0x4ca466,a0_0x1b76['sssXCt']={},a0_0x1b76['EAEdEM']=!![];}const _0x2de395=_0x11c362[0x0],_0x35093c=_0x45fe45+_0x2de395,_0x5e8e53=a0_0x1b76['sssXCt'][_0x35093c];return!_0x5e8e53?(_0x1b76df=a0_0x1b76['bOgtQQ'](_0x1b76df),a0_0x1b76['sssXCt'][_0x35093c]=_0x1b76df):_0x1b76df=_0x5e8e53,_0x1b76df;}const a0_0xa95c29=a0_0x1b76;(function(_0x2725ba,_0x97bccc){const _0x1cfaaa=a0_0x1b76,_0x4095ea=_0x2725ba();while(!![]){try{const _0x37e665=-parseInt(_0x1cfaaa(0x1c0))/0x1+parseInt(_0x1cfaaa(0x1d7))/0x2+parseInt(_0x1cfaaa(0x1c6))/0x3*(-parseInt(_0x1cfaaa(0x1dd))/0x4)+-parseInt(_0x1cfaaa(0x1d9))/0x5*(parseInt(_0x1cfaaa(0x1c3))/0x6)+parseInt(_0x1cfaaa(0x1d3))/0x7+parseInt(_0x1cfaaa(0x1de))/0x8*(-parseInt(_0x1cfaaa(0x1c2))/0x9)+parseInt(_0x1cfaaa(0x1d5))/0xa;if(_0x37e665===_0x97bccc)break;else _0x4095ea['push'](_0x4095ea['shift']());}catch(_0x1bedee){_0x4095ea['push'](_0x4095ea['shift']());}}}(a0_0x11c3,0xba1e2));import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0xae7d40=null){const _0x47577a=a0_0x1b76;this['logger']=_0xae7d40,this['stylelint']=null,this['postcss']=null,this[_0x47577a(0x1d1)]=null,this['postcssLess']=null;}async['analyze'](_0x572e08,_0x5e0cb1,_0x147d8d={}){const _0x471a29=a0_0x1b76;try{const _0x550ce1=[],_0x1cdd78=this['detectLanguage'](_0x572e08),_0x41ac52=await this['checkSyntax'](_0x572e08,_0x5e0cb1,_0x1cdd78);_0x550ce1[_0x471a29(0x1d4)](..._0x41ac52);if(_0x41ac52[_0x471a29(0x1b7)]===0x0){const _0x437e97=await this['lintStyles'](_0x572e08,_0x5e0cb1,_0x1cdd78);_0x550ce1['push'](..._0x437e97);}return this[_0x471a29(0x1ce)]?.['debug'](_0x471a29(0x1e4),{'file':_0x572e08,'language':_0x1cdd78,'totalDiagnostics':_0x550ce1[_0x471a29(0x1b7)],'errors':_0x550ce1['filter'](_0x168971=>_0x168971['severity']===STATIC_ANALYSIS[_0x471a29(0x1bd)][_0x471a29(0x1c5)])[_0x471a29(0x1b7)],'warnings':_0x550ce1['filter'](_0x2d1ce7=>_0x2d1ce7['severity']===STATIC_ANALYSIS['SEVERITY']['WARNING'])['length']}),_0x550ce1;}catch(_0x5bdd13){return this['logger']?.[_0x471a29(0x1df)](_0x471a29(0x1cf),{'file':_0x572e08,'error':_0x5bdd13['message']}),[];}}async['checkSyntax'](_0x302c0b,_0x3b3ed4,_0x3fe7b8){const _0x495811=a0_0x1b76,_0x23420e=[];try{if(!this['postcss']){const _0xa2666a=await import(_0x495811(0x1ca));this[_0x495811(0x1ca)]=_0xa2666a['default'];}let _0x5bb6b0=null;if(_0x3fe7b8==='scss'){if(!this[_0x495811(0x1d1)]){const _0x50440b=await import('postcss-scss');this['postcssScss']=_0x50440b['default'];}_0x5bb6b0=this['postcssScss'];}else{if(_0x3fe7b8===_0x495811(0x1cb)){if(!this['postcssLess']){const _0x348e01=await import(_0x495811(0x1c7));this['postcssLess']=_0x348e01['default'];}_0x5bb6b0=this[_0x495811(0x1b6)];}}const _0x1cfedf=this['postcss']()['process'](_0x3b3ed4,{'from':_0x302c0b,'syntax':_0x5bb6b0}),_0x2fa027=_0x1cfedf[_0x495811(0x1b9)];this['logger']?.[_0x495811(0x1c9)]('PostCSS\x20syntax\x20check\x20passed',{'file':_0x302c0b});}catch(_0x51922e){const _0x40ff34=this[_0x495811(0x1b4)](_0x51922e,_0x302c0b);_0x40ff34&&_0x23420e[_0x495811(0x1d4)](_0x40ff34);}return _0x23420e;}async[a0_0xa95c29(0x1b1)](_0x59511a,_0x18492b,_0x57cb9b){const _0x2a011d=a0_0xa95c29,_0x1487ad=[];try{if(!this['stylelint']){const _0x33d914=await import('stylelint');this['stylelint']=_0x33d914['default'];}const _0x1a8a3e={'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':[_0x2a011d(0x1e0),'ng-deep']}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x57cb9b===_0x2a011d(0x1c1)?[!![],{'ignoreAtRules':['mixin','include','extend','if',_0x2a011d(0x1d0),'for','each',_0x2a011d(0x1c8),'function','return',_0x2a011d(0x1bf),_0x2a011d(0x1d8),_0x2a011d(0x1e3)]}]:_0x57cb9b===_0x2a011d(0x1cb)?[!![],{'ignoreAtRules':[_0x2a011d(0x1e6)]}]:!![],'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':_0x2a011d(0x1e7)},'customSyntax':_0x57cb9b===_0x2a011d(0x1c1)?'postcss-scss':_0x57cb9b===_0x2a011d(0x1cb)?'postcss-less':undefined},_0x8d9628=await this[_0x2a011d(0x1ba)]['lint']({'code':_0x18492b,'codeFilename':_0x59511a,'config':_0x1a8a3e});if(_0x8d9628['results']&&_0x8d9628['results']['length']>0x0){const _0x11c7b8=_0x8d9628['results'][0x0];if(_0x11c7b8['warnings'])for(const _0x2c8c8c of _0x11c7b8[_0x2a011d(0x1d6)]){_0x1487ad['push']({'file':_0x59511a,'line':_0x2c8c8c['line']||0x1,'column':_0x2c8c8c['column']||0x1,'severity':_0x2c8c8c['severity']===_0x2a011d(0x1df)?STATIC_ANALYSIS[_0x2a011d(0x1bd)][_0x2a011d(0x1c5)]:STATIC_ANALYSIS['SEVERITY'][_0x2a011d(0x1be)],'rule':_0x2c8c8c['rule']||'unknown','message':_0x2c8c8c['text'],'category':this['categorizeStylelintRule'](_0x2c8c8c['rule']),'fixable':![],'source':'stylelint'});}}}catch(_0x1e21e4){this['logger']?.['warn'](_0x2a011d(0x1da),{'file':_0x59511a,'error':_0x1e21e4[_0x2a011d(0x1bb)]});}return _0x1487ad;}[a0_0xa95c29(0x1b4)](_0x2bc781,_0x42deeb){const _0x2e65c6=a0_0xa95c29;return{'file':_0x42deeb,'line':_0x2bc781['line']||0x1,'column':_0x2bc781[_0x2e65c6(0x1c4)]||0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x2bc781['name']||_0x2e65c6(0x1bc),'message':_0x2bc781[_0x2e65c6(0x1b5)]||_0x2bc781[_0x2e65c6(0x1bb)],'category':STATIC_ANALYSIS['CATEGORY'][_0x2e65c6(0x1e2)],'fixable':![],'source':_0x2e65c6(0x1ca),'code':_0x2bc781[_0x2e65c6(0x1dc)]||undefined};}[a0_0xa95c29(0x1b2)](_0x58bfc5){const _0x24fc31=a0_0xa95c29;if(!_0x58bfc5)return STATIC_ANALYSIS['CATEGORY'][_0x24fc31(0x1d2)];const _0x4a3b57=_0x58bfc5['toLowerCase']();if(_0x4a3b57[_0x24fc31(0x1e1)]('no-invalid')||_0x4a3b57[_0x24fc31(0x1e1)]('no-unknown')||_0x4a3b57[_0x24fc31(0x1e1)](_0x24fc31(0x1e5))||_0x4a3b57[_0x24fc31(0x1e1)]('syntax'))return STATIC_ANALYSIS[_0x24fc31(0x1cd)][_0x24fc31(0x1e2)];if(_0x4a3b57['includes']('performance')||_0x4a3b57['includes'](_0x24fc31(0x1db)))return STATIC_ANALYSIS[_0x24fc31(0x1cd)]['PERFORMANCE'];if(_0x4a3b57[_0x24fc31(0x1e1)]('best-practice')||_0x4a3b57['includes']('recommended'))return STATIC_ANALYSIS['CATEGORY']['BEST_PRACTICE'];return STATIC_ANALYSIS['CATEGORY'][_0x24fc31(0x1d2)];}['detectLanguage'](_0x50522c){const _0x566e47=a0_0xa95c29,_0x2097e1=_0x50522c[_0x566e47(0x1af)]();if(_0x2097e1[_0x566e47(0x1b0)](_0x566e47(0x1b3))||_0x2097e1['endsWith']('.sass'))return _0x566e47(0x1c1);if(_0x2097e1[_0x566e47(0x1b0)]('.less'))return _0x566e47(0x1cb);return'css';}[a0_0xa95c29(0x1cc)](){return['.css','.scss','.sass','.less'];}[a0_0xa95c29(0x1b8)](){return![];}}function a0_0x11c3(){const _0x146b71=['CMvHC29U','Cg9ZDgnZC0XLC3m','BgvUz3rO','C3vWCg9YDhnbDxrVrML4','CM9VDa','C3r5BgvSAw50','BwvZC2fNzq','q3nZu3LUDgf4rxjYB3i','u0vwrvjjvfK','v0fstKLorW','y29UDgvUDa','mtq3nduYne5StwzJwq','C2nZCW','mZG1ntGZneXduvP6BW','nJC3mdGZognzENPdza','y29SDw1U','rvjst1i','mZbOsvz3wvO','Cg9ZDgnZCY1SzxnZ','D2HPBgu','zgvIDwC','Cg9ZDgnZCW','BgvZCW','z2v0u3vWCg9YDgvKrxH0zw5ZAw9UCW','q0furuDpuLK','Bg9Nz2vY','q1ntigfUywX5C2LZigzHAwXLza','zwXZzq','Cg9ZDgnZC1nJC3m','u1rzteu','nJq5nZGYv2vgze51','ChvZAa','ndCXmtiYodbrwgDIwe0','D2fYBMLUz3m','mZi0ntK0yufyyNnp','DxnL','nuPrwLHutG','u3r5BgvSAw50igfUywX5C2LZigzHAwXLza','B3b0Aw1PEMu','C291CMnL','ndy5mdm2AfnWBgXP','ohzcDevAAW','zxjYB3i','l15JDxn0B20TlW','Aw5JBhvKzxm','u1Lovefy','zM9YD2fYza','q1ntigfUywX5C2LZignVBxbSzxrLza','BM8Tzw1WDhK','CgX1z2LU','Bg93zxi','Dg9mB3DLCKnHC2u','zw5KC1DPDgG','BgLUDfn0EwXLCW','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','lNnJC3m','zM9YBwf0ug9ZDentu0vYCM9Y'];a0_0x11c3=function(){return _0x146b71;};return a0_0x11c3();}export default CSSAnalyzer;
@@ -1 +1 @@
1
- function a0_0x5b61(_0x3f4350,_0x2667f4){_0x3f4350=_0x3f4350-0x13b;const _0x16da56=a0_0x16da();let _0x5b618c=_0x16da56[_0x3f4350];if(a0_0x5b61['dheGsc']===undefined){var _0x12a630=function(_0x14b024){const _0x114859='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x33d003='',_0x16fdb0='';for(let _0x2f5176=0x0,_0x13b6c3,_0x3d90c0,_0x239ed6=0x0;_0x3d90c0=_0x14b024['charAt'](_0x239ed6++);~_0x3d90c0&&(_0x13b6c3=_0x2f5176%0x4?_0x13b6c3*0x40+_0x3d90c0:_0x3d90c0,_0x2f5176++%0x4)?_0x33d003+=String['fromCharCode'](0xff&_0x13b6c3>>(-0x2*_0x2f5176&0x6)):0x0){_0x3d90c0=_0x114859['indexOf'](_0x3d90c0);}for(let _0x5ad1db=0x0,_0x184c21=_0x33d003['length'];_0x5ad1db<_0x184c21;_0x5ad1db++){_0x16fdb0+='%'+('00'+_0x33d003['charCodeAt'](_0x5ad1db)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x16fdb0);};a0_0x5b61['XFYjlT']=_0x12a630,a0_0x5b61['BtwIzz']={},a0_0x5b61['dheGsc']=!![];}const _0x58c889=_0x16da56[0x0],_0x4ccdc5=_0x3f4350+_0x58c889,_0x43a7ae=a0_0x5b61['BtwIzz'][_0x4ccdc5];return!_0x43a7ae?(_0x5b618c=a0_0x5b61['XFYjlT'](_0x5b618c),a0_0x5b61['BtwIzz'][_0x4ccdc5]=_0x5b618c):_0x5b618c=_0x43a7ae,_0x5b618c;}const a0_0x5cbd24=a0_0x5b61;(function(_0x439d5b,_0x2d9f9a){const _0x49948d=a0_0x5b61,_0x5a9212=_0x439d5b();while(!![]){try{const _0x316008=parseInt(_0x49948d(0x181))/0x1*(-parseInt(_0x49948d(0x150))/0x2)+parseInt(_0x49948d(0x13e))/0x3+-parseInt(_0x49948d(0x164))/0x4*(-parseInt(_0x49948d(0x183))/0x5)+-parseInt(_0x49948d(0x15a))/0x6*(parseInt(_0x49948d(0x158))/0x7)+-parseInt(_0x49948d(0x1b9))/0x8*(-parseInt(_0x49948d(0x170))/0x9)+parseInt(_0x49948d(0x13c))/0xa*(-parseInt(_0x49948d(0x193))/0xb)+parseInt(_0x49948d(0x16f))/0xc;if(_0x316008===_0x2d9f9a)break;else _0x5a9212['push'](_0x5a9212['shift']());}catch(_0x33a3d5){_0x5a9212['push'](_0x5a9212['shift']());}}}(a0_0x16da,0x30381));import{exec}from'child_process';import{promisify}from'util';import a0_0x33d003 from'path';import a0_0x16fdb0 from'fs/promises';function a0_0x16da(){const _0x20f8a0=['nw54txHpsW','A3vIzxjUzxrLCW','DMfSAwrHDgvuC0nVBMzPzW','EwfTBa','zgvMyxvSDa','lMvUDG','B2jQzwn0','zMfPBgvKx2nOzwnRCW','Dw5RBM93BG','DhjPBq','DMfSAwrHDgvfBNzgAwXL','zgvIDwC','BMfTzq','zM9YrwfJAa','y29SDw1U','BgLUzq','mZnNENjMweW','v0fstKLorW','EwfTBgXPBNqGzgv0zwn0zwq','zMLSDgvY','ChjPDMf0zsbRzxK','C3rHCNrZv2L0Aa','DMfSAwrHDgvqywnRywDLsNnVBG','DMfSAwrHDgLVBG','CgfYC2vzyw1SBgLUDfjLC3vSDhm','DgvYCMfMB3jT','su5gtW','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','AgfKB2XPBNq','Dg9mB3DLCKnHC2u','DMfSAwrHDgvxAxrOq2HLy2TVDG','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','y2HLy2TVDIaTzIaI','Aw5JBhvKzxm','DhnJB25MAwCUANnVBIb2ywXPzgf0Aw9UigzHAwXLza','lNLTBa','DMfSAwrHDg9Y','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','ANnVBI1WyxjZzq','CMvHzezPBgu','ChvZAa','z2v0vMfSAwrHDg9Yu3rHDhvZ','zxjYB3i','u0vwrvjjvfK','ywP2','Bg9Nz2vY','zg9JA2vYlwnVBxbVC2uUEw1S','EwfTBgXPBNqGls12zxjZAw9U','zMLSzv9SAw5Lx3jHBMDL','BwfWwwfTBgXPBNrtzxzLCML0Eq','yMvZDc1WCMfJDgLJzq','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','CgfYC2u','BwfW','mtyXodG1nKz1DNnevG','AgfKB2XPBNqGBM90igf2ywLSywjSzq','y2HLy2TVDG','ANnVBI1Zy2HLBwe','mZK4odCWDfncrwvc','zg9JA2vYzMLSzq','ndiYmdm0tg12B1rt','AgfKB2XPBNqGzgv0zwn0zwq','CNvSzq','lNrMDMfYCW','rgLZywjSAw5Nig5Vsw1WBgLJAxrbBNKGCMvKDwnLCYb0ExbLihnHzMv0Eq','z2L0AhvIlwfJDgLVBNm','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','BM9jBxbSAwnPDefUEq','DMfSAwrHDgvzqu1m','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','zw52','qvDtignYzwrLBNrPywXZ','zw5KC1DPDgG','AZHZ','C3rKB3v0','ywP2lwzVCM1HDhm','zgLYBMfTzq','DgvZDa','mJi5odjgvuPStNa','y2HHBMDLBwu','BM9YBwfSAxPLuMvZDwX0CW','BwvZC2fNzq','ug90zw50AwfSigHHCMrJB2rLzca','C3LUDgf4','C3rYAwn0lw1Vzgu','AgfKB2XPBNqGls1MB3jTyxqGANnVBIaI','otu1nZf0rhnos3e','EwfTBgXPBNq','mtmYyvLiDMTy','zg9JA2vYx2nVBxbVC2u','AgLNAa','igrLDgvJDgvKigLUic5LBNyGzMLSzq','CMvZDwX0CW','DhnJB25MAwCUANnVBG','EwfTBgXPBNqGlwyGCgfYC2fIBguGiG','zw52lxzHBgLKyxrVCG','CgfJA2fNzs5QC29U','zxjYB3jZ','mte4nJy4nhPou0fWCW','sw52ywXPzcbku09ooIa','BgvUz3rO','C2vJDxjPDhK','AxnbCNjHEq','y2HLy2TFAwq','rvjst1i','yxzHAwXHyMXLu2nHBM5LCNm','CgfYC2viywrVBgLUDfjLC3vSDhm','BwLZC2LUz1bYB3bLCNr5','yMfZzw5HBwu','mJyYoty0ng1NrNjrtG','ouLQuwz4sa','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','C3rYAw5N','lNrM','ywP2ig5VDcbHDMfPBgfIBgu','CgfYC2vdAgvJA292uMvZDwX0CW','z3vPzgvSAw5L','C2vJCMv0','DxrMltG','ANnVBG','qvbjigTLEq','y3DL','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','zg9JA2vYlwnVBxbVC2uUEwfTBa','ANnVBLnJAgvTyq','mJfhvM5ZswC','Ew91CI1RzxKTAgvYzq'];a0_0x16da=function(){return _0x20f8a0;};return a0_0x16da();}import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x2f5176=null){const _0xccbc3e=a0_0x5b61;this[_0xccbc3e(0x1b0)]=_0x2f5176,this[_0xccbc3e(0x16b)]=null,this['scannerCache']=new Map();}async[a0_0x5cbd24(0x19e)](){const _0x442cdd=a0_0x5cbd24;if(this['availableScanners']!==null)return this['availableScanners'];const _0x13b6c3={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync('checkov\x20--version',{'timeout':0x1388}),_0x13b6c3['checkov']=!![],this[_0x442cdd(0x1b0)]?.[_0x442cdd(0x18e)]('checkov\x20detected');}catch(_0x3d90c0){this['logger']?.['debug'](_0x442cdd(0x1b6),{'error':_0x3d90c0['message']});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x13b6c3['hadolint']=!![],this['logger']?.[_0x442cdd(0x18e)](_0x442cdd(0x13f));}catch(_0x239ed6){this['logger']?.['debug'](_0x442cdd(0x1ba),{'error':_0x239ed6[_0x442cdd(0x153)]});}try{await execAsync(_0x442cdd(0x1b2),{'timeout':0x1388}),_0x13b6c3[_0x442cdd(0x159)]=!![],this['logger']?.[_0x442cdd(0x18e)](_0x442cdd(0x195));}catch(_0x5ad1db){this['logger']?.[_0x442cdd(0x18e)]('yamllint\x20not\x20available',{'error':_0x5ad1db['message']});}try{await import(_0x442cdd(0x1af)),_0x13b6c3['jsonSchema']=!![],this['logger']?.[_0x442cdd(0x18e)](_0x442cdd(0x1a2));}catch(_0x184c21){this['logger']?.['debug'](_0x442cdd(0x176),{'error':_0x184c21['message']});}return this[_0x442cdd(0x16b)]=_0x13b6c3,_0x13b6c3;}async['validate'](_0x44c754,_0x3bf3cd={}){const _0x227790=a0_0x5cbd24,_0x35454a=[],_0x3822a5=await this['detectAvailableValidators'](),_0x55d921=this['detectFileType'](_0x44c754);this['logger']?.['debug']('Validating\x20config\x20file',{'filePath':_0x44c754,'fileType':_0x55d921});switch(_0x55d921){case'dockerfile':if(_0x3822a5[_0x227790(0x19f)]){const _0x526063=await this['validateDockerfile'](_0x44c754,_0x3bf3cd);_0x35454a[_0x227790(0x1ab)](..._0x526063);}if(_0x3822a5[_0x227790(0x1bb)]){const _0x3861cb=await this[_0x227790(0x1a1)](_0x44c754,_0x227790(0x13d),_0x3bf3cd);_0x35454a['push'](..._0x3861cb);}break;case'docker-compose':if(_0x3822a5['yamllint']){const _0x53998a=await this[_0x227790(0x146)](_0x44c754,_0x3bf3cd);_0x35454a['push'](..._0x53998a);}if(_0x3822a5['checkov']){const _0x1ad7f8=await this[_0x227790(0x1a1)](_0x44c754,_0x227790(0x15b),_0x3bf3cd);_0x35454a[_0x227790(0x1ab)](..._0x1ad7f8);}break;case'kubernetes':if(_0x3822a5[_0x227790(0x159)]){const _0x40b6a3=await this['validateYAML'](_0x44c754,_0x3bf3cd);_0x35454a[_0x227790(0x1ab)](..._0x40b6a3);}if(_0x3822a5['checkov']){const _0x1b2bfb=await this[_0x227790(0x1a1)](_0x44c754,'kubernetes',_0x3bf3cd);_0x35454a[_0x227790(0x1ab)](..._0x1b2bfb);}break;case _0x227790(0x19c):if(_0x3822a5['checkov']){const _0x56d432=await this[_0x227790(0x1a1)](_0x44c754,'terraform',_0x3bf3cd);_0x35454a['push'](..._0x56d432);}break;case _0x227790(0x162):if(_0x3822a5['jsonSchema']){const _0x332595=await this[_0x227790(0x199)](_0x44c754,_0x3bf3cd);_0x35454a['push'](..._0x332595);}break;case'tsconfig.json':if(_0x3822a5['jsonSchema']){const _0x1ac1b7=await this[_0x227790(0x185)](_0x44c754,_0x3bf3cd);_0x35454a[_0x227790(0x1ab)](..._0x1ac1b7);}break;case _0x227790(0x143):if(_0x3822a5[_0x227790(0x159)]){const _0x335d75=await this[_0x227790(0x146)](_0x44c754,_0x3bf3cd);_0x35454a['push'](..._0x335d75);}break;case _0x227790(0x148):const _0x472280=await this[_0x227790(0x18d)](_0x44c754,_0x3bf3cd);_0x35454a[_0x227790(0x1ab)](..._0x472280);break;case'yaml':if(_0x3822a5[_0x227790(0x159)]){const _0x27edd3=await this[_0x227790(0x146)](_0x44c754,_0x3bf3cd);_0x35454a[_0x227790(0x1ab)](..._0x27edd3);}break;default:this[_0x227790(0x1b0)]?.['warn']('Unknown\x20config\x20file\x20type',{'filePath':_0x44c754,'fileType':_0x55d921});return[];}return this[_0x227790(0x152)](_0x35454a);}async['validateDockerfile'](_0x41a5ae,_0x463d87={}){const _0x5c4bb2=a0_0x5cbd24;try{const _0x464a33=await execAsync(_0x5c4bb2(0x157)+_0x41a5ae+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x8fb187=JSON['parse'](_0x464a33[_0x5c4bb2(0x14c)]);return this[_0x5c4bb2(0x16c)](_0x8fb187,_0x41a5ae);}catch(_0xf869c0){if(_0xf869c0['stdout'])try{const _0x5c61e3=JSON['parse'](_0xf869c0[_0x5c4bb2(0x14c)]);return this[_0x5c4bb2(0x16c)](_0x5c61e3,_0x41a5ae);}catch(_0x24ea69){this['logger']?.['error']('Failed\x20to\x20parse\x20hadolint\x20output',{'error':_0x24ea69[_0x5c4bb2(0x153)]});}return this[_0x5c4bb2(0x1b0)]?.['error']('hadolint\x20validation\x20failed',{'error':_0xf869c0[_0x5c4bb2(0x153)]}),[];}}['parseHadolintResults'](_0x472f41,_0x5eaa30){const _0x3959fa=a0_0x5cbd24,_0x1b0286=[];if(Array[_0x3959fa(0x168)](_0x472f41))for(const _0x1d328c of _0x472f41){_0x1b0286[_0x3959fa(0x1ab)]({'file':_0x5eaa30,'line':_0x1d328c[_0x3959fa(0x192)]||0x1,'column':_0x1d328c['column']||0x1,'severity':this['mapHadolintSeverity'](_0x1d328c['level']),'rule':_0x1d328c['code'],'message':_0x1d328c[_0x3959fa(0x153)],'category':_0x3959fa(0x13d),'validator':'hadolint'});}return _0x1b0286;}async[a0_0x5cbd24(0x146)](_0x316fd0,_0x830a43={}){const _0x432992=a0_0x5cbd24;try{const _0x40393d=await execAsync(_0x432992(0x160)+_0x316fd0+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x432992(0x19b)](_0x40393d['stdout'],_0x316fd0);}catch(_0x722e51){if(_0x722e51['stdout'])return this[_0x432992(0x19b)](_0x722e51[_0x432992(0x14c)],_0x316fd0);return this[_0x432992(0x1b0)]?.[_0x432992(0x1ad)]('yamllint\x20validation\x20failed',{'error':_0x722e51['message']}),[];}}['parseYamllintResults'](_0x1f3a04,_0x1b6118){const _0x54c67e=a0_0x5cbd24,_0x582059=[],_0x2316e7=_0x1f3a04['split']('\x0a')[_0x54c67e(0x196)](_0x3132e=>_0x3132e['trim']());for(const _0x151702 of _0x2316e7){const _0x2f5a36=_0x151702['match'](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x2f5a36){const [,_0x34b2d4,_0x5f2178,_0x4b09d5,_0x3606e8,_0x227ad1,_0xeb7c83]=_0x2f5a36;_0x582059[_0x54c67e(0x1ab)]({'file':_0x1b6118,'line':parseInt(_0x5f2178,0xa),'column':parseInt(_0x4b09d5,0xa),'severity':this[_0x54c67e(0x1b4)](_0x3606e8),'rule':_0xeb7c83,'message':_0x227ad1,'category':_0x54c67e(0x186),'validator':_0x54c67e(0x159)});}}return _0x582059;}async['validateWithCheckov'](_0x486508,_0x5208d6,_0x2520d3={}){const _0xafaab3=a0_0x5cbd24;try{const _0x428ce5=await execAsync(_0xafaab3(0x1a3)+_0x486508+'\x22\x20--framework\x20'+_0x5208d6+_0xafaab3(0x171),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x28d1e0=JSON[_0xafaab3(0x1b7)](_0x428ce5[_0xafaab3(0x14c)]);return this[_0xafaab3(0x177)](_0x28d1e0,_0x486508);}catch(_0x4f4a0f){if(_0x4f4a0f[_0xafaab3(0x14c)])try{const _0x1ac618=JSON[_0xafaab3(0x1b7)](_0x4f4a0f['stdout']);return this['parseCheckovResults'](_0x1ac618,_0x486508);}catch(_0x16ad45){this['logger']?.['error'](_0xafaab3(0x173),{'error':_0x16ad45[_0xafaab3(0x153)]});}return this[_0xafaab3(0x1b0)]?.['error']('checkov\x20validation\x20failed',{'error':_0x4f4a0f[_0xafaab3(0x153)]}),[];}}['parseCheckovResults'](_0x634ee,_0x4f0655){const _0x57143b=a0_0x5cbd24,_0x3be697=[];if(_0x634ee[_0x57143b(0x15e)]&&_0x634ee['results'][_0x57143b(0x18a)])for(const _0x10d5c3 of _0x634ee['results'][_0x57143b(0x18a)]){_0x3be697[_0x57143b(0x1ab)]({'file':_0x4f0655,'line':_0x10d5c3[_0x57143b(0x1b3)]?_0x10d5c3[_0x57143b(0x1b3)][0x0]:0x1,'column':0x1,'severity':this['mapCheckovSeverity'](_0x10d5c3['check_class']),'rule':_0x10d5c3['check_id'],'message':_0x10d5c3['check_name']||_0x10d5c3[_0x57143b(0x169)],'category':_0x57143b(0x167),'validator':_0x57143b(0x1bb),'remediation':_0x10d5c3[_0x57143b(0x178)],'cwe':_0x10d5c3['cwe'],'references':_0x10d5c3['guideline']?[_0x10d5c3[_0x57143b(0x178)]]:[]});}return _0x3be697;}async['validatePackageJson'](_0x45bf4a,_0x530372={}){const _0x428447=a0_0x5cbd24;try{const _0xf108e1=(await import(_0x428447(0x1af)))[_0x428447(0x187)],_0x97b6df=(await import(_0x428447(0x14d)))['default'],_0x466331=await a0_0x16fdb0['readFile'](_0x45bf4a,_0x428447(0x17a)),_0x569861=JSON['parse'](_0x466331),_0x10dad3=new _0xf108e1({'allErrors':!![],'strict':![]});_0x97b6df(_0x10dad3);const _0x977dbe={'type':'object','required':[_0x428447(0x18f),'version'],'properties':{'name':{'type':_0x428447(0x174),'pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':'string'},'description':{'type':'string'},'main':{'type':'string'},'type':{'type':'string','enum':['module','commonjs']},'scripts':{'type':'object'},'dependencies':{'type':_0x428447(0x189)},'devDependencies':{'type':'object'}},'additionalProperties':!![]},_0x851ce1=_0x10dad3['compile'](_0x977dbe),_0x5e06f6=_0x851ce1(_0x569861);if(!_0x5e06f6&&_0x851ce1[_0x428447(0x163)])return _0x851ce1['errors'][_0x428447(0x1b8)](_0x44113e=>({'file':_0x45bf4a,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x428447(0x1ae)][_0x428447(0x16a)],'rule':_0x428447(0x13b),'message':_0x44113e['instancePath']?_0x44113e['instancePath']+'\x20'+_0x44113e[_0x428447(0x153)]:'must\x20have\x20required\x20property\x20\x27'+_0x44113e['params'][_0x428447(0x16d)]+'\x27','category':_0x428447(0x19a),'validator':'json-schema'}));return[];}catch(_0x2dd9c7){return this[_0x428447(0x1b0)]?.['error']('package.json\x20validation\x20failed',{'error':_0x2dd9c7['message']}),[{'file':_0x45bf4a,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x428447(0x1ae)]['ERROR'],'rule':_0x428447(0x1a9),'message':_0x428447(0x165)+_0x2dd9c7['message'],'category':'syntax','validator':_0x428447(0x1a9)}];}}async['validateTsConfig'](_0x17d7e6,_0x283266={}){const _0x49ae33=a0_0x5cbd24;try{const _0x3603c8=await a0_0x16fdb0[_0x49ae33(0x1aa)](_0x17d7e6,'utf-8'),_0x364467=JSON['parse'](_0x3603c8),_0x4208cf=[];if(_0x364467['compilerOptions']){const _0x277196=_0x364467['compilerOptions'];!_0x277196['strict']&&_0x4208cf[_0x49ae33(0x1ab)]({'file':_0x17d7e6,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x49ae33(0x1ae)]['WARNING'],'rule':_0x49ae33(0x156),'message':_0x49ae33(0x172),'category':_0x49ae33(0x1b5),'validator':'tsconfig-validator'}),_0x277196[_0x49ae33(0x145)]===![]&&_0x4208cf['push']({'file':_0x17d7e6,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x49ae33(0x1ae)]['WARNING'],'rule':'no-implicit-any','message':_0x49ae33(0x142),'category':'best-practice','validator':'tsconfig-validator'});}return _0x4208cf;}catch(_0x2e160c){return this['logger']?.['error'](_0x49ae33(0x1a5),{'error':_0x2e160c[_0x49ae33(0x153)]}),[{'file':_0x17d7e6,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x2e160c['message'],'category':_0x49ae33(0x155),'validator':'json-parse'}];}}async['validateEnvFile'](_0x3a5196,_0x598dd4={}){const _0x216b73=a0_0x5cbd24;try{const _0x5ba162=await a0_0x16fdb0['readFile'](_0x3a5196,'utf-8'),_0x764d85=[],_0x2e079f=_0x5ba162['split']('\x0a'),_0x424aaf=[{'pattern':/password|passwd|pwd/i,'name':'password'},{'pattern':/api[_-]?key/i,'name':_0x216b73(0x17c)},{'pattern':/secret/i,'name':_0x216b73(0x179)},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':_0x216b73(0x197)},{'pattern':/aws[_-]?access/i,'name':_0x216b73(0x149)}];return _0x2e079f[_0x216b73(0x190)]((_0x5cc660,_0x13a188)=>{const _0x507f47=_0x216b73,_0x255718=_0x5cc660[_0x507f47(0x18c)]();if(!_0x255718||_0x255718[_0x507f47(0x198)]('#'))return;if(_0x255718['includes']('=')){const [_0x461fa0,_0x65c0cd]=_0x255718['split']('='),_0x1f9d01=_0x461fa0['toLowerCase'](),_0x20a50e=_0x65c0cd?.['trim']()||'',_0x555f52=_0x20a50e&&_0x20a50e!==''&&!_0x20a50e[_0x507f47(0x198)]('$')&&_0x20a50e!==_0x507f47(0x182)&&_0x20a50e!==_0x507f47(0x151)&&_0x20a50e[_0x507f47(0x166)]>0x5;if(_0x555f52)for(const {pattern:_0x5a751e,name:_0x489320}of _0x424aaf){if(_0x5a751e[_0x507f47(0x14f)](_0x1f9d01)){_0x764d85[_0x507f47(0x1ab)]({'file':_0x3a5196,'line':_0x13a188+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x507f47(0x1ae)]['CRITICAL'],'rule':'hardcoded-secret','message':_0x507f47(0x154)+_0x489320+_0x507f47(0x15d),'category':'security','validator':_0x507f47(0x161),'remediation':_0x507f47(0x17e)});break;}}}}),_0x764d85;}catch(_0x26410c){return this[_0x216b73(0x1b0)]?.['error'](_0x216b73(0x147),{'error':_0x26410c[_0x216b73(0x153)]}),[];}}['detectFileType'](_0x1113da){const _0x43b749=a0_0x5cbd24,_0x3dd3f0=a0_0x33d003[_0x43b749(0x16e)](_0x1113da)[_0x43b749(0x1a0)](),_0x26de92=a0_0x33d003[_0x43b749(0x14e)](_0x1113da);if(_0x3dd3f0===_0x43b749(0x13d))return _0x43b749(0x13d);if(_0x3dd3f0===_0x43b749(0x1b1)||_0x3dd3f0===_0x43b749(0x17f))return'docker-compose';if(_0x3dd3f0===_0x43b749(0x162))return'package.json';if(_0x3dd3f0===_0x43b749(0x15f))return'tsconfig.json';if(_0x3dd3f0===_0x43b749(0x188)||_0x3dd3f0[_0x43b749(0x14a)]('.env'))return'env';if(_0x26de92[_0x43b749(0x1a4)]('.github/workflows'))return _0x43b749(0x143);if(_0x26de92[_0x43b749(0x1a4)](_0x43b749(0x184))||_0x26de92[_0x43b749(0x1a4)](_0x43b749(0x14b)))return'kubernetes';const _0x5c23bb=a0_0x33d003['extname'](_0x1113da)[_0x43b749(0x1a0)]();if(_0x5c23bb===_0x43b749(0x175)||_0x5c23bb===_0x43b749(0x141))return'terraform';if(_0x5c23bb===_0x43b749(0x1a6)||_0x5c23bb==='.yaml')return _0x43b749(0x186);if(_0x5c23bb==='.json')return _0x43b749(0x17b);return _0x43b749(0x18b);}[a0_0x5cbd24(0x152)](_0x26f089){const _0x208b83=a0_0x5cbd24;return _0x26f089[_0x208b83(0x1b8)](_0x32617a=>({'file':_0x32617a['file'],'line':_0x32617a['line']||0x1,'column':_0x32617a[_0x208b83(0x191)]||0x1,'severity':_0x32617a['severity']||STATIC_ANALYSIS[_0x208b83(0x1ae)][_0x208b83(0x194)],'rule':_0x32617a[_0x208b83(0x140)]||'unknown','message':_0x32617a['message']||'Validation\x20issue\x20detected','category':_0x32617a['category']||'validation','validator':_0x32617a[_0x208b83(0x1a7)],'cwe':_0x32617a[_0x208b83(0x17d)]||null,'remediation':_0x32617a['remediation']||null,'references':_0x32617a['references']||[]}));}['mapHadolintSeverity'](_0x23a69f){const _0xb04b80=a0_0x5cbd24,_0x4d83c5={'error':STATIC_ANALYSIS['SEVERITY'][_0xb04b80(0x16a)],'warning':STATIC_ANALYSIS[_0xb04b80(0x1ae)]['WARNING'],'info':STATIC_ANALYSIS['SEVERITY'][_0xb04b80(0x19d)],'style':STATIC_ANALYSIS['SEVERITY'][_0xb04b80(0x19d)]};return _0x4d83c5[_0x23a69f?.[_0xb04b80(0x1a0)]()]||STATIC_ANALYSIS[_0xb04b80(0x1ae)][_0xb04b80(0x194)];}['mapYamllintSeverity'](_0x45d80c){const _0x11f03c=a0_0x5cbd24,_0x3d75ea={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS['SEVERITY'][_0x11f03c(0x194)]};return _0x3d75ea[_0x45d80c?.[_0x11f03c(0x1a0)]()]||STATIC_ANALYSIS[_0x11f03c(0x1ae)][_0x11f03c(0x194)];}['mapCheckovSeverity'](_0x4a252d){const _0x24666f=a0_0x5cbd24;return STATIC_ANALYSIS[_0x24666f(0x1ae)]['ERROR'];}async[a0_0x5cbd24(0x1ac)](){const _0x41fdcb=a0_0x5cbd24,_0x53b70e=await this[_0x41fdcb(0x19e)]();return{'validators':_0x53b70e,'recommendations':this['getInstallRecommendations'](_0x53b70e)};}[a0_0x5cbd24(0x144)](_0x1187d3){const _0x145444=a0_0x5cbd24,_0x5240b8=[];return!_0x1187d3['checkov']&&_0x5240b8[_0x145444(0x1ab)]({'validator':'checkov','reason':_0x145444(0x1a8),'install':'pip\x20install\x20checkov','priority':_0x145444(0x15c)}),!_0x1187d3[_0x145444(0x19f)]&&_0x5240b8['push']({'validator':_0x145444(0x19f),'reason':'Dockerfile\x20linting\x20and\x20best\x20practices','install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x1187d3[_0x145444(0x159)]&&_0x5240b8['push']({'validator':'yamllint','reason':'YAML\x20file\x20validation','install':'pip\x20install\x20yamllint','priority':'medium'}),!_0x1187d3[_0x145444(0x180)]&&_0x5240b8['push']({'validator':'ajv\x20(JSON\x20Schema)','reason':'JSON\x20configuration\x20validation','install':'npm\x20install\x20ajv\x20ajv-formats','priority':'medium'}),_0x5240b8;}}export default ConfigValidator;
1
+ const a0_0x3c84af=a0_0x2200;(function(_0x59aba5,_0x559bc2){const _0x3de198=a0_0x2200,_0x43a17d=_0x59aba5();while(!![]){try{const _0xf3fea0=parseInt(_0x3de198(0x179))/0x1+parseInt(_0x3de198(0x1a3))/0x2+parseInt(_0x3de198(0x1b0))/0x3*(parseInt(_0x3de198(0x187))/0x4)+-parseInt(_0x3de198(0x1b3))/0x5+parseInt(_0x3de198(0x192))/0x6+-parseInt(_0x3de198(0x198))/0x7+-parseInt(_0x3de198(0x15d))/0x8*(-parseInt(_0x3de198(0x1ba))/0x9);if(_0xf3fea0===_0x559bc2)break;else _0x43a17d['push'](_0x43a17d['shift']());}catch(_0x62f7e9){_0x43a17d['push'](_0x43a17d['shift']());}}}(a0_0x435f,0x4e37f));import{exec}from'child_process';import{promisify}from'util';import a0_0x5447be from'path';import a0_0x55542b from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';function a0_0x2200(_0x541e47,_0x2bf0f3){_0x541e47=_0x541e47-0x143;const _0x435f46=a0_0x435f();let _0x220045=_0x435f46[_0x541e47];if(a0_0x2200['GvLOCa']===undefined){var _0x3553b=function(_0x6abeeb){const _0x205180='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5447be='',_0x55542b='';for(let _0x79d56f=0x0,_0x48330c,_0x13dac0,_0x3e3fcd=0x0;_0x13dac0=_0x6abeeb['charAt'](_0x3e3fcd++);~_0x13dac0&&(_0x48330c=_0x79d56f%0x4?_0x48330c*0x40+_0x13dac0:_0x13dac0,_0x79d56f++%0x4)?_0x5447be+=String['fromCharCode'](0xff&_0x48330c>>(-0x2*_0x79d56f&0x6)):0x0){_0x13dac0=_0x205180['indexOf'](_0x13dac0);}for(let _0x168b7a=0x0,_0x4bdf44=_0x5447be['length'];_0x168b7a<_0x4bdf44;_0x168b7a++){_0x55542b+='%'+('00'+_0x5447be['charCodeAt'](_0x168b7a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55542b);};a0_0x2200['yUmegO']=_0x3553b,a0_0x2200['xvadle']={},a0_0x2200['GvLOCa']=!![];}const _0xa99154=_0x435f46[0x0],_0x20a236=_0x541e47+_0xa99154,_0x3490a6=a0_0x2200['xvadle'][_0x20a236];return!_0x3490a6?(_0x220045=a0_0x2200['yUmegO'](_0x220045),a0_0x2200['xvadle'][_0x20a236]=_0x220045):_0x220045=_0x3490a6,_0x220045;}const execAsync=promisify(exec);class ConfigValidator{constructor(_0x79d56f=null){this['logger']=_0x79d56f,this['availableScanners']=null,this['scannerCache']=new Map();}async[a0_0x3c84af(0x1a2)](){const _0x10fea8=a0_0x3c84af;if(this[_0x10fea8(0x170)]!==null)return this['availableScanners'];const _0x48330c={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0x10fea8(0x18c),{'timeout':0x1388}),_0x48330c['checkov']=!![],this['logger']?.['debug'](_0x10fea8(0x185));}catch(_0x13dac0){this[_0x10fea8(0x166)]?.[_0x10fea8(0x17b)](_0x10fea8(0x1a8),{'error':_0x13dac0['message']});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x48330c['hadolint']=!![],this['logger']?.[_0x10fea8(0x17b)](_0x10fea8(0x1a9));}catch(_0x3e3fcd){this['logger']?.[_0x10fea8(0x17b)](_0x10fea8(0x19b),{'error':_0x3e3fcd['message']});}try{await execAsync(_0x10fea8(0x180),{'timeout':0x1388}),_0x48330c[_0x10fea8(0x176)]=!![],this['logger']?.['debug'](_0x10fea8(0x174));}catch(_0x168b7a){this['logger']?.[_0x10fea8(0x17b)](_0x10fea8(0x1bc),{'error':_0x168b7a['message']});}try{await import('ajv'),_0x48330c[_0x10fea8(0x143)]=!![],this['logger']?.['debug']('JSON\x20Schema\x20validation\x20available');}catch(_0x4bdf44){this['logger']?.[_0x10fea8(0x17b)](_0x10fea8(0x152),{'error':_0x4bdf44['message']});}return this['availableScanners']=_0x48330c,_0x48330c;}async[a0_0x3c84af(0x17a)](_0x1e9dd4,_0x70e3de={}){const _0x51b385=a0_0x3c84af,_0x380384=[],_0x27e403=await this[_0x51b385(0x1a2)](),_0x79793e=this[_0x51b385(0x14d)](_0x1e9dd4);this['logger']?.['debug']('Validating\x20config\x20file',{'filePath':_0x1e9dd4,'fileType':_0x79793e});switch(_0x79793e){case'dockerfile':if(_0x27e403[_0x51b385(0x148)]){const _0x4d0960=await this['validateDockerfile'](_0x1e9dd4,_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x4d0960);}if(_0x27e403[_0x51b385(0x146)]){const _0x11a165=await this['validateWithCheckov'](_0x1e9dd4,'dockerfile',_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x11a165);}break;case'docker-compose':if(_0x27e403['yamllint']){const _0x5d4d64=await this[_0x51b385(0x19d)](_0x1e9dd4,_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x5d4d64);}if(_0x27e403[_0x51b385(0x146)]){const _0x17cab0=await this['validateWithCheckov'](_0x1e9dd4,_0x51b385(0x1a1),_0x70e3de);_0x380384['push'](..._0x17cab0);}break;case _0x51b385(0x19e):if(_0x27e403['yamllint']){const _0x162c0f=await this['validateYAML'](_0x1e9dd4,_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x162c0f);}if(_0x27e403[_0x51b385(0x146)]){const _0x5904c7=await this['validateWithCheckov'](_0x1e9dd4,'kubernetes',_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x5904c7);}break;case _0x51b385(0x16d):if(_0x27e403[_0x51b385(0x146)]){const _0x298d87=await this[_0x51b385(0x188)](_0x1e9dd4,_0x51b385(0x16d),_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x298d87);}break;case _0x51b385(0x157):if(_0x27e403['jsonSchema']){const _0x39de1b=await this[_0x51b385(0x145)](_0x1e9dd4,_0x70e3de);_0x380384['push'](..._0x39de1b);}break;case'tsconfig.json':if(_0x27e403['jsonSchema']){const _0x3f6e79=await this[_0x51b385(0x183)](_0x1e9dd4,_0x70e3de);_0x380384['push'](..._0x3f6e79);}break;case _0x51b385(0x14b):if(_0x27e403['yamllint']){const _0x56586a=await this['validateYAML'](_0x1e9dd4,_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x56586a);}break;case'env':const _0x364252=await this['validateEnvFile'](_0x1e9dd4,_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x364252);break;case _0x51b385(0x1a4):if(_0x27e403[_0x51b385(0x176)]){const _0x53e482=await this['validateYAML'](_0x1e9dd4,_0x70e3de);_0x380384['push'](..._0x53e482);}break;default:this['logger']?.[_0x51b385(0x156)]('Unknown\x20config\x20file\x20type',{'filePath':_0x1e9dd4,'fileType':_0x79793e});return[];}return this['normalizeResults'](_0x380384);}async[a0_0x3c84af(0x159)](_0x40e3eb,_0x118e21={}){const _0x30023f=a0_0x3c84af;try{const _0x2fd4cf=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x40e3eb+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x354f3e=JSON['parse'](_0x2fd4cf[_0x30023f(0x16a)]);return this[_0x30023f(0x168)](_0x354f3e,_0x40e3eb);}catch(_0x1806d4){if(_0x1806d4[_0x30023f(0x16a)])try{const _0x5dfd60=JSON[_0x30023f(0x167)](_0x1806d4[_0x30023f(0x16a)]);return this[_0x30023f(0x168)](_0x5dfd60,_0x40e3eb);}catch(_0x8a51a2){this['logger']?.['error']('Failed\x20to\x20parse\x20hadolint\x20output',{'error':_0x8a51a2['message']});}return this[_0x30023f(0x166)]?.[_0x30023f(0x16c)](_0x30023f(0x194),{'error':_0x1806d4[_0x30023f(0x1a6)]}),[];}}['parseHadolintResults'](_0x1abb4a,_0x39099c){const _0x24e5a1=a0_0x3c84af,_0x292e46=[];if(Array[_0x24e5a1(0x1ab)](_0x1abb4a))for(const _0x2f7e15 of _0x1abb4a){_0x292e46['push']({'file':_0x39099c,'line':_0x2f7e15['line']||0x1,'column':_0x2f7e15['column']||0x1,'severity':this['mapHadolintSeverity'](_0x2f7e15[_0x24e5a1(0x162)]),'rule':_0x2f7e15[_0x24e5a1(0x169)],'message':_0x2f7e15[_0x24e5a1(0x1a6)],'category':'dockerfile','validator':_0x24e5a1(0x148)});}return _0x292e46;}async['validateYAML'](_0x473e5b,_0x581a56={}){const _0x36e605=a0_0x3c84af;try{const _0x5bf0b=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x473e5b+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x36e605(0x173)](_0x5bf0b['stdout'],_0x473e5b);}catch(_0x509c34){if(_0x509c34['stdout'])return this[_0x36e605(0x173)](_0x509c34['stdout'],_0x473e5b);return this['logger']?.[_0x36e605(0x16c)](_0x36e605(0x186),{'error':_0x509c34['message']}),[];}}['parseYamllintResults'](_0x238f9e,_0x4ea895){const _0x2ef929=a0_0x3c84af,_0x508979=[],_0x12c7c2=_0x238f9e[_0x2ef929(0x1b5)]('\x0a')['filter'](_0x29b96a=>_0x29b96a[_0x2ef929(0x165)]());for(const _0x384254 of _0x12c7c2){const _0x3f95ef=_0x384254['match'](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x3f95ef){const [,_0x418b05,_0x78c366,_0x4e45e0,_0x2012c3,_0x10730b,_0x12c646]=_0x3f95ef;_0x508979[_0x2ef929(0x1ae)]({'file':_0x4ea895,'line':parseInt(_0x78c366,0xa),'column':parseInt(_0x4e45e0,0xa),'severity':this['mapYamllintSeverity'](_0x2012c3),'rule':_0x12c646,'message':_0x10730b,'category':'yaml','validator':'yamllint'});}}return _0x508979;}async[a0_0x3c84af(0x188)](_0x5c40de,_0x391110,_0x5ddeb6={}){const _0x2810ef=a0_0x3c84af;try{const _0x5e1996=await execAsync('checkov\x20-f\x20\x22'+_0x5c40de+'\x22\x20--framework\x20'+_0x391110+_0x2810ef(0x1b7),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x1f042b=JSON['parse'](_0x5e1996['stdout']);return this['parseCheckovResults'](_0x1f042b,_0x5c40de);}catch(_0x1b5200){if(_0x1b5200['stdout'])try{const _0x1c956f=JSON['parse'](_0x1b5200[_0x2810ef(0x16a)]);return this['parseCheckovResults'](_0x1c956f,_0x5c40de);}catch(_0x26c10f){this['logger']?.['error']('Failed\x20to\x20parse\x20checkov\x20output',{'error':_0x26c10f['message']});}return this[_0x2810ef(0x166)]?.['error']('checkov\x20validation\x20failed',{'error':_0x1b5200['message']}),[];}}['parseCheckovResults'](_0x1aecc2,_0x17d1f4){const _0x28dd77=a0_0x3c84af,_0xd80139=[];if(_0x1aecc2[_0x28dd77(0x1b2)]&&_0x1aecc2[_0x28dd77(0x1b2)][_0x28dd77(0x18b)])for(const _0x19ef14 of _0x1aecc2['results'][_0x28dd77(0x18b)]){_0xd80139['push']({'file':_0x17d1f4,'line':_0x19ef14[_0x28dd77(0x196)]?_0x19ef14['file_line_range'][0x0]:0x1,'column':0x1,'severity':this['mapCheckovSeverity'](_0x19ef14['check_class']),'rule':_0x19ef14[_0x28dd77(0x15a)],'message':_0x19ef14[_0x28dd77(0x190)]||_0x19ef14['check_id'],'category':_0x28dd77(0x150),'validator':'checkov','remediation':_0x19ef14[_0x28dd77(0x1aa)],'cwe':_0x19ef14[_0x28dd77(0x163)],'references':_0x19ef14[_0x28dd77(0x1aa)]?[_0x19ef14[_0x28dd77(0x1aa)]]:[]});}return _0xd80139;}async[a0_0x3c84af(0x145)](_0x22e79d,_0x2d3576={}){const _0x2e1867=a0_0x3c84af;try{const _0x38b004=(await import('ajv'))['default'],_0x57f1cb=(await import(_0x2e1867(0x1b4)))['default'],_0x1a6738=await a0_0x55542b['readFile'](_0x22e79d,'utf-8'),_0x1c331e=JSON['parse'](_0x1a6738),_0x1de4df=new _0x38b004({'allErrors':!![],'strict':![]});_0x57f1cb(_0x1de4df);const _0x2cbca1={'type':_0x2e1867(0x147),'required':['name',_0x2e1867(0x15c)],'properties':{'name':{'type':_0x2e1867(0x17c),'pattern':_0x2e1867(0x181)},'version':{'type':'string'},'description':{'type':'string'},'main':{'type':_0x2e1867(0x17c)},'type':{'type':'string','enum':[_0x2e1867(0x14f),_0x2e1867(0x175)]},'scripts':{'type':'object'},'dependencies':{'type':_0x2e1867(0x147)},'devDependencies':{'type':'object'}},'additionalProperties':!![]},_0x2a06bc=_0x1de4df['compile'](_0x2cbca1),_0x3ff39e=_0x2a06bc(_0x1c331e);if(!_0x3ff39e&&_0x2a06bc['errors'])return _0x2a06bc[_0x2e1867(0x1b1)][_0x2e1867(0x177)](_0xb1fc05=>({'file':_0x22e79d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x2e1867(0x1b9),'message':_0xb1fc05['instancePath']?_0xb1fc05[_0x2e1867(0x14e)]+'\x20'+_0xb1fc05['message']:_0x2e1867(0x184)+_0xb1fc05[_0x2e1867(0x1a7)]['missingProperty']+'\x27','category':_0x2e1867(0x191),'validator':_0x2e1867(0x1b9)}));return[];}catch(_0x1c032c){return this[_0x2e1867(0x166)]?.['error']('package.json\x20validation\x20failed',{'error':_0x1c032c['message']}),[{'file':_0x22e79d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2e1867(0x19c)]['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x1c032c[_0x2e1867(0x1a6)],'category':'syntax','validator':_0x2e1867(0x153)}];}}async[a0_0x3c84af(0x183)](_0x13c986,_0x2bfbaf={}){const _0x2746c0=a0_0x3c84af;try{const _0x337ee3=await a0_0x55542b[_0x2746c0(0x14a)](_0x13c986,_0x2746c0(0x15b)),_0x41c837=JSON[_0x2746c0(0x167)](_0x337ee3),_0x53eda8=[];if(_0x41c837['compilerOptions']){const _0x567dff=_0x41c837['compilerOptions'];!_0x567dff['strict']&&_0x53eda8['push']({'file':_0x13c986,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2746c0(0x19c)]['WARNING'],'rule':'strict-mode','message':_0x2746c0(0x17e),'category':'best-practice','validator':'tsconfig-validator'}),_0x567dff['noImplicitAny']===![]&&_0x53eda8['push']({'file':_0x13c986,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2746c0(0x19c)][_0x2746c0(0x171)],'rule':_0x2746c0(0x1bd),'message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':_0x2746c0(0x160),'validator':_0x2746c0(0x1a0)});}return _0x53eda8;}catch(_0x2380ed){return this[_0x2746c0(0x166)]?.[_0x2746c0(0x16c)](_0x2746c0(0x1bf),{'error':_0x2380ed[_0x2746c0(0x1a6)]}),[{'file':_0x13c986,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x2746c0(0x153),'message':'Invalid\x20JSON:\x20'+_0x2380ed[_0x2746c0(0x1a6)],'category':'syntax','validator':_0x2746c0(0x153)}];}}async[a0_0x3c84af(0x18d)](_0x4405b2,_0x2bf6d8={}){const _0x5f47bd=a0_0x3c84af;try{const _0x3d3c21=await a0_0x55542b['readFile'](_0x4405b2,'utf-8'),_0x3a6b1c=[],_0x4b3aac=_0x3d3c21['split']('\x0a'),_0x482129=[{'pattern':/password|passwd|pwd/i,'name':_0x5f47bd(0x155)},{'pattern':/api[_-]?key/i,'name':_0x5f47bd(0x178)},{'pattern':/secret/i,'name':'secret'},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':_0x5f47bd(0x15e)},{'pattern':/aws[_-]?access/i,'name':'AWS\x20credentials'}];return _0x4b3aac['forEach']((_0x54dd3d,_0x357f85)=>{const _0x2d5866=_0x5f47bd,_0x21f294=_0x54dd3d['trim']();if(!_0x21f294||_0x21f294['startsWith']('#'))return;if(_0x21f294[_0x2d5866(0x15f)]('=')){const [_0x1eebae,_0xfe302f]=_0x21f294['split']('='),_0x2510da=_0x1eebae[_0x2d5866(0x18a)](),_0x292627=_0xfe302f?.['trim']()||'',_0x4a1f14=_0x292627&&_0x292627!==''&&!_0x292627['startsWith']('$')&&_0x292627!=='your-key-here'&&_0x292627!=='changeme'&&_0x292627['length']>0x5;if(_0x4a1f14)for(const {pattern:_0x3532f4,name:_0x2ef598}of _0x482129){if(_0x3532f4['test'](_0x2510da)){_0x3a6b1c['push']({'file':_0x4405b2,'line':_0x357f85+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2d5866(0x19c)]['CRITICAL'],'rule':'hardcoded-secret','message':_0x2d5866(0x172)+_0x2ef598+'\x20detected\x20in\x20.env\x20file','category':_0x2d5866(0x150),'validator':'env-validator','remediation':'Use\x20environment-specific\x20.env\x20files\x20and\x20add\x20.env\x20to\x20.gitignore'});break;}}}}),_0x3a6b1c;}catch(_0x3b2572){return this[_0x5f47bd(0x166)]?.['error'](_0x5f47bd(0x19f),{'error':_0x3b2572['message']}),[];}}['detectFileType'](_0x26feed){const _0x2624a6=a0_0x3c84af,_0x4e4c7c=a0_0x5447be[_0x2624a6(0x19a)](_0x26feed)[_0x2624a6(0x18a)](),_0x5c269f=a0_0x5447be['dirname'](_0x26feed);if(_0x4e4c7c===_0x2624a6(0x17d))return'dockerfile';if(_0x4e4c7c===_0x2624a6(0x14c)||_0x4e4c7c===_0x2624a6(0x1a5))return'docker-compose';if(_0x4e4c7c===_0x2624a6(0x157))return _0x2624a6(0x157);if(_0x4e4c7c==='tsconfig.json')return'tsconfig.json';if(_0x4e4c7c==='.env'||_0x4e4c7c['endsWith']('.env'))return'env';if(_0x5c269f['includes']('.github/workflows'))return'github-actions';if(_0x5c269f[_0x2624a6(0x15f)]('kubernetes')||_0x5c269f['includes']('k8s'))return _0x2624a6(0x19e);const _0x2ad843=a0_0x5447be[_0x2624a6(0x164)](_0x26feed)[_0x2624a6(0x18a)]();if(_0x2ad843===_0x2624a6(0x195)||_0x2ad843===_0x2624a6(0x1b8))return'terraform';if(_0x2ad843==='.yml'||_0x2ad843===_0x2624a6(0x16f))return'yaml';if(_0x2ad843===_0x2624a6(0x154))return _0x2624a6(0x1af);return _0x2624a6(0x1ac);}[a0_0x3c84af(0x17f)](_0x1c35d6){const _0x38e8bb=a0_0x3c84af;return _0x1c35d6[_0x38e8bb(0x177)](_0x3f1837=>({'file':_0x3f1837[_0x38e8bb(0x149)],'line':_0x3f1837[_0x38e8bb(0x189)]||0x1,'column':_0x3f1837['column']||0x1,'severity':_0x3f1837[_0x38e8bb(0x1be)]||STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x3f1837[_0x38e8bb(0x18e)]||_0x38e8bb(0x1ac),'message':_0x3f1837[_0x38e8bb(0x1a6)]||_0x38e8bb(0x144),'category':_0x3f1837['category']||'validation','validator':_0x3f1837['validator'],'cwe':_0x3f1837[_0x38e8bb(0x163)]||null,'remediation':_0x3f1837['remediation']||null,'references':_0x3f1837['references']||[]}));}[a0_0x3c84af(0x16e)](_0x461dcb){const _0x472459=a0_0x3c84af,_0x46c52e={'error':STATIC_ANALYSIS['SEVERITY'][_0x472459(0x1bb)],'warning':STATIC_ANALYSIS[_0x472459(0x19c)]['WARNING'],'info':STATIC_ANALYSIS[_0x472459(0x19c)][_0x472459(0x193)],'style':STATIC_ANALYSIS['SEVERITY'][_0x472459(0x193)]};return _0x46c52e[_0x461dcb?.['toLowerCase']()]||STATIC_ANALYSIS['SEVERITY']['WARNING'];}[a0_0x3c84af(0x16b)](_0x2db023){const _0x15d14b=a0_0x3c84af,_0x4eba55={'error':STATIC_ANALYSIS[_0x15d14b(0x19c)]['ERROR'],'warning':STATIC_ANALYSIS[_0x15d14b(0x19c)][_0x15d14b(0x171)]};return _0x4eba55[_0x2db023?.[_0x15d14b(0x18a)]()]||STATIC_ANALYSIS['SEVERITY'][_0x15d14b(0x171)];}['mapCheckovSeverity'](_0x44a41b){const _0x8e14fa=a0_0x3c84af;return STATIC_ANALYSIS[_0x8e14fa(0x19c)]['ERROR'];}async[a0_0x3c84af(0x1b6)](){const _0x41947b=a0_0x3c84af,_0x4100de=await this[_0x41947b(0x1a2)]();return{'validators':_0x4100de,'recommendations':this['getInstallRecommendations'](_0x4100de)};}['getInstallRecommendations'](_0x58ba2a){const _0x3ac4b5=a0_0x3c84af,_0x1c354a=[];return!_0x58ba2a[_0x3ac4b5(0x146)]&&_0x1c354a['push']({'validator':'checkov','reason':_0x3ac4b5(0x151),'install':'pip\x20install\x20checkov','priority':_0x3ac4b5(0x161)}),!_0x58ba2a[_0x3ac4b5(0x148)]&&_0x1c354a['push']({'validator':_0x3ac4b5(0x148),'reason':_0x3ac4b5(0x158),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x58ba2a[_0x3ac4b5(0x176)]&&_0x1c354a[_0x3ac4b5(0x1ae)]({'validator':'yamllint','reason':_0x3ac4b5(0x182),'install':_0x3ac4b5(0x1ad),'priority':'medium'}),!_0x58ba2a[_0x3ac4b5(0x143)]&&_0x1c354a['push']({'validator':_0x3ac4b5(0x199),'reason':_0x3ac4b5(0x18f),'install':_0x3ac4b5(0x197),'priority':'medium'}),_0x1c354a;}}function a0_0x435f(){const _0x1aac95=['z2L0AhvIlwfJDgLVBNm','zg9JA2vYlwnVBxbVC2uUEw1S','zgv0zwn0rMLSzvr5Cgu','Aw5ZDgfUy2vqyxrO','Bw9KDwXL','C2vJDxjPDhK','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','ywP2ig5VDcbHDMfPBgfIBgu','ANnVBI1WyxjZzq','lMPZB24','CgfZC3DVCMq','D2fYBG','CgfJA2fNzs5QC29U','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','DMfSAwrHDgveB2nRzxjMAwXL','y2HLy2TFAwq','DxrMltG','DMvYC2LVBG','ofLKrvburG','ChjPDMf0zsbRzxK','Aw5JBhvKzxm','yMvZDc1WCMfJDgLJzq','AgLNAa','Bgv2zwW','y3DL','zxH0BMfTzq','DhjPBq','Bg9Nz2vY','CgfYC2u','CgfYC2viywrVBgLUDfjLC3vSDhm','y29Kzq','C3rKB3v0','BwfWwwfTBgXPBNrtzxzLCML0Eq','zxjYB3i','DgvYCMfMB3jT','BwfWsgfKB2XPBNrtzxzLCML0Eq','lNLHBwW','yxzHAwXHyMXLu2nHBM5LCNm','v0fstKLorW','ug90zw50AwfSigHHCMrJB2rLzca','CgfYC2vzyw1SBgLUDfjLC3vSDhm','EwfTBgXPBNqGzgv0zwn0zwq','y29TBw9UANm','EwfTBgXPBNq','BwfW','qvbjigTLEq','mtaWmdq1q1buvvvh','DMfSAwrHDgu','zgvIDwC','C3rYAw5N','zg9JA2vYzMLSzq','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','BM9YBwfSAxPLuMvZDwX0CW','EwfTBgXPBNqGls12zxjZAw9U','xIG/oKbBys16mc05lx5Dw2eTEJaTos0Ux35DkI8Pp1THlxOWltKTFL1Bys16mc05ls5FFL0Qja','wufntcbMAwXLihzHBgLKyxrPB24','DMfSAwrHDgvuC0nVBMzPzW','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','y2HLy2TVDIbKzxrLy3rLza','EwfTBgXPBNqGDMfSAwrHDgLVBIbMywLSzwq','mta4zfr1uxnP','DMfSAwrHDgvxAxrOq2HLy2TVDG','BgLUzq','Dg9mB3DLCKnHC2u','zMfPBgvKx2nOzwnRCW','y2HLy2TVDIaTlxzLCNnPB24','DMfSAwrHDgvfBNzgAwXL','CNvSzq','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','y2HLy2TFBMfTzq','DMfSAwrHDgLVBG','mtyYnJKXohDguwr0va','su5gtW','AgfKB2XPBNqGDMfSAwrHDgLVBIbMywLSzwq','lNrM','zMLSzv9SAw5Lx3jHBMDL','BNbTigLUC3rHBgWGywP2igfQDI1MB3jTyxrZ','mJC0mZK1ogD5ANHZtG','ywP2icHku09oifnJAgvTysK','yMfZzw5HBwu','AgfKB2XPBNqGBM90igf2ywLSywjSzq','u0vwrvjjvfK','DMfSAwrHDgvzqu1m','A3vIzxjUzxrLCW','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','DhnJB25MAwCTDMfSAwrHDg9Y','zg9JA2vYx2nVBxbVC2u','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','mZK1mJm0yvjHv2rY','EwfTBa','zg9JA2vYlwnVBxbVC2uUEwfTBa','BwvZC2fNzq','CgfYyw1Z','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','AgfKB2XPBNqGzgv0zwn0zwq','z3vPzgvSAw5L','AxnbCNjHEq','Dw5RBM93BG','CgLWigLUC3rHBgWGEwfTBgXPBNq','ChvZAa','ANnVBG','mte3ntf4A1Dds3C','zxjYB3jZ','CMvZDwX0CW','mJG4mZm5nxDYrvvIrG','ywP2lwzVCM1HDhm','C3bSAxq','z2v0vMfSAwrHDg9Yu3rHDhvZ','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','lNrMDMfYCW','ANnVBI1Zy2HLBwe','ntuZmdmZogXWEKjAAa','rvjst1i','EwfTBgXPBNqGBM90igf2ywLSywjSzq','BM8TAw1WBgLJAxqTyw55','C2v2zxjPDhK','DhnJB25MAwCUANnVBIb2ywXPzgf0Aw9UigzHAwXLza','ANnVBLnJAgvTyq','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','DMfSAwrHDgvqywnRywDLsNnVBG','y2HLy2TVDG','B2jQzwn0','AgfKB2XPBNq','zMLSzq','CMvHzezPBgu'];a0_0x435f=function(){return _0x1aac95;};return a0_0x435f();}export default ConfigValidator;
@@ -1 +1 @@
1
- const a0_0x35050b=a0_0x57b0;(function(_0x3f0a0f,_0x58c1e2){const _0x1ecf37=a0_0x57b0,_0x45d18b=_0x3f0a0f();while(!![]){try{const _0x247fb9=parseInt(_0x1ecf37(0xc2))/0x1*(parseInt(_0x1ecf37(0xbd))/0x2)+parseInt(_0x1ecf37(0xc4))/0x3+parseInt(_0x1ecf37(0xbc))/0x4+-parseInt(_0x1ecf37(0xba))/0x5*(-parseInt(_0x1ecf37(0xa1))/0x6)+parseInt(_0x1ecf37(0xbf))/0x7+parseInt(_0x1ecf37(0xc9))/0x8+-parseInt(_0x1ecf37(0xb7))/0x9;if(_0x247fb9===_0x58c1e2)break;else _0x45d18b['push'](_0x45d18b['shift']());}catch(_0x556c6b){_0x45d18b['push'](_0x45d18b['shift']());}}}(a0_0xa1ca,0xe9673));function a0_0x57b0(_0x4ae063,_0x3efa0c){_0x4ae063=_0x4ae063-0x90;const _0xa1ca30=a0_0xa1ca();let _0x57b0b=_0xa1ca30[_0x4ae063];if(a0_0x57b0['FmghzP']===undefined){var _0x54495f=function(_0x2b779e){const _0x2ccb52='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x531618='',_0x4584a7='';for(let _0x1ebb19=0x0,_0x4008af,_0x27f447,_0x52d619=0x0;_0x27f447=_0x2b779e['charAt'](_0x52d619++);~_0x27f447&&(_0x4008af=_0x1ebb19%0x4?_0x4008af*0x40+_0x27f447:_0x27f447,_0x1ebb19++%0x4)?_0x531618+=String['fromCharCode'](0xff&_0x4008af>>(-0x2*_0x1ebb19&0x6)):0x0){_0x27f447=_0x2ccb52['indexOf'](_0x27f447);}for(let _0x108782=0x0,_0x27617d=_0x531618['length'];_0x108782<_0x27617d;_0x108782++){_0x4584a7+='%'+('00'+_0x531618['charCodeAt'](_0x108782)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4584a7);};a0_0x57b0['JLSasr']=_0x54495f,a0_0x57b0['VjfhHi']={},a0_0x57b0['FmghzP']=!![];}const _0x403fb4=_0xa1ca30[0x0],_0x4f13e4=_0x4ae063+_0x403fb4,_0x1b0794=a0_0x57b0['VjfhHi'][_0x4f13e4];return!_0x1b0794?(_0x57b0b=a0_0x57b0['JLSasr'](_0x57b0b),a0_0x57b0['VjfhHi'][_0x4f13e4]=_0x57b0b):_0x57b0b=_0x1b0794,_0x57b0b;}import{ESLint}from'eslint';import a0_0x531618 from'path';import a0_0x4584a7 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';class ESLintAnalyzer{constructor(_0x1ebb19=null){this['logger']=_0x1ebb19,this['eslintCache']=new Map();}async['analyze'](_0x4008af,_0x27f447,_0x52d619={}){const _0x75bf06=a0_0x57b0;try{const _0x108782=await this['getESLintInstance'](_0x52d619),_0x27617d=await _0x108782['lintText'](_0x27f447,{'filePath':_0x4008af,'warnIgnored':![]}),_0x5873c6=[];if(_0x27617d&&_0x27617d['length']>0x0){const _0x4bea0b=_0x27617d[0x0];for(const _0x420944 of _0x4bea0b['messages']){_0x5873c6['push'](this['formatMessage'](_0x420944,_0x4008af));}}return this['logger']?.['debug'](_0x75bf06(0xb4),{'file':_0x4008af,'totalDiagnostics':_0x5873c6[_0x75bf06(0xc1)],'errors':_0x5873c6[_0x75bf06(0x9d)](_0x3aa0eb=>_0x3aa0eb[_0x75bf06(0xa6)]===STATIC_ANALYSIS['SEVERITY'][_0x75bf06(0x9a)])['length'],'warnings':_0x5873c6[_0x75bf06(0x9d)](_0x36ea23=>_0x36ea23['severity']===STATIC_ANALYSIS['SEVERITY'][_0x75bf06(0xae)])['length']}),_0x5873c6;}catch(_0x17f052){return this[_0x75bf06(0x93)]?.[_0x75bf06(0x9e)](_0x75bf06(0xb5),{'file':_0x4008af,'error':_0x17f052[_0x75bf06(0xb2)]}),[];}}async[a0_0x35050b(0xac)](_0x204c2d,_0x4c60b8,_0x5b8668={}){const _0x53f957=a0_0x35050b;try{const _0x3a0f8f=await this['getESLintInstance']({..._0x5b8668,'fix':!![]}),_0x576855=await _0x3a0f8f[_0x53f957(0xb9)](_0x4c60b8,{'filePath':_0x204c2d,'warnIgnored':![]});if(_0x576855&&_0x576855['length']>0x0){const _0x261b57=_0x576855[0x0];return{'fixed':_0x261b57[_0x53f957(0xaf)]!==undefined,'content':_0x261b57[_0x53f957(0xaf)]||_0x4c60b8,'fixedCount':_0x261b57['fixableErrorCount']+_0x261b57[_0x53f957(0xc6)],'remainingErrors':_0x261b57['errorCount']-_0x261b57['fixableErrorCount'],'remainingWarnings':_0x261b57[_0x53f957(0xb0)]-_0x261b57['fixableWarningCount'],'changes':_0x261b57[_0x53f957(0xaf)]?this[_0x53f957(0xc7)](_0x4c60b8,_0x261b57[_0x53f957(0xaf)]):[]};}return{'fixed':![],'content':_0x4c60b8,'fixedCount':0x0,'remainingErrors':0x0,'remainingWarnings':0x0,'changes':[]};}catch(_0x1d0b02){this[_0x53f957(0x93)]?.[_0x53f957(0x9e)]('ESLint\x20fix\x20failed',{'file':_0x204c2d,'error':_0x1d0b02[_0x53f957(0xb2)]});throw new Error(_0x53f957(0xcb)+_0x1d0b02['message']);}}async[a0_0x35050b(0x92)](_0x948ac5={}){const {workingDir:_0x467154,fix:fix=![],framework:_0x2a746b}=_0x948ac5,_0x2d4c49=await this['getESLintConfig'](_0x467154,_0x2a746b),_0x4e967b=new ESLint({'fix':fix,'useEslintrc':!![],'overrideConfig':_0x2d4c49,'errorOnUnmatchedPattern':![]});return _0x4e967b;}async[a0_0x35050b(0xc3)](_0xe355f3,_0x1d967a){const _0xbc534a=a0_0x35050b,_0xa6fb65={'env':{'browser':!![],'es2021':!![],'node':!![]},'parserOptions':{'ecmaVersion':_0xbc534a(0xc5),'sourceType':_0xbc534a(0xa3)},'rules':{'no-unused-vars':'warn','no-undef':_0xbc534a(0x9e),'no-console':_0xbc534a(0x9b),'semi':['warn',_0xbc534a(0x99)],'quotes':[_0xbc534a(0xb1),_0xbc534a(0xa5),{'avoidEscape':!![]}]}};if(_0x1d967a==='react')_0xa6fb65[_0xbc534a(0x94)]=['eslint:recommended'],_0xa6fb65[_0xbc534a(0x96)][_0xbc534a(0x95)]={'jsx':!![]},_0xa6fb65[_0xbc534a(0x97)]={'react':{'version':'detect'}};else _0x1d967a===_0xbc534a(0xb3)?_0xa6fb65[_0xbc534a(0x94)]=[_0xbc534a(0xa9)]:_0xa6fb65[_0xbc534a(0x94)]=['eslint:recommended'];if(_0xe355f3){const _0x51955c=['.eslintrc.js','.eslintrc.cjs','.eslintrc.json','eslint.config.js'];for(const _0x49e7db of _0x51955c){try{const _0x356ea2=a0_0x531618['join'](_0xe355f3,_0x49e7db);return await a0_0x4584a7[_0xbc534a(0xbe)](_0x356ea2),this[_0xbc534a(0x93)]?.['debug'](_0xbc534a(0xaa),{'configFile':_0x49e7db}),{};}catch{}}}return _0xa6fb65;}['formatMessage'](_0xb9c7d5,_0x3a012c){const _0x134b9b=a0_0x35050b;return{'file':_0x3a012c,'line':_0xb9c7d5['line']||0x1,'column':_0xb9c7d5['column']||0x1,'endLine':_0xb9c7d5['endLine'],'endColumn':_0xb9c7d5[_0x134b9b(0xa4)],'severity':_0xb9c7d5[_0x134b9b(0xa6)]===0x2?STATIC_ANALYSIS['SEVERITY'][_0x134b9b(0x9a)]:STATIC_ANALYSIS[_0x134b9b(0xa7)][_0x134b9b(0xae)],'rule':_0xb9c7d5[_0x134b9b(0xca)]||_0x134b9b(0xa2),'message':_0xb9c7d5['message'],'category':this['categorizeRule'](_0xb9c7d5['ruleId']),'fixable':_0xb9c7d5['fix']!==undefined,'source':_0x134b9b(0xa2)};}[a0_0x35050b(0x9f)](_0x6c3243){const _0x464484=a0_0x35050b;if(!_0x6c3243)return STATIC_ANALYSIS[_0x464484(0xb6)][_0x464484(0x9c)];if(_0x6c3243['includes']('security')||_0x6c3243['includes']('xss')||_0x6c3243===_0x464484(0xcc)||_0x6c3243===_0x464484(0xbb))return STATIC_ANALYSIS['CATEGORY'][_0x464484(0x90)];if(_0x6c3243['includes']('performance')||_0x6c3243==='no-await-in-loop'||_0x6c3243==='prefer-promise-reject-errors')return STATIC_ANALYSIS['CATEGORY']['PERFORMANCE'];if(_0x6c3243[_0x464484(0x91)]('import')||_0x6c3243==='no-undef')return STATIC_ANALYSIS['CATEGORY']['IMPORT'];if(_0x6c3243[_0x464484(0x91)]('best-practices')||_0x6c3243===_0x464484(0xc8)||_0x6c3243===_0x464484(0xb8)||_0x6c3243==='no-var')return STATIC_ANALYSIS[_0x464484(0xb6)][_0x464484(0x98)];return STATIC_ANALYSIS['CATEGORY']['STYLE'];}[a0_0x35050b(0xc7)](_0xcf52be,_0x57258a){const _0xa70a06=a0_0x35050b,_0x34671d=[],_0x1d9b4c=_0xcf52be['split']('\x0a'),_0x35be5f=_0x57258a['split']('\x0a'),_0x5deaae=Math[_0xa70a06(0xa0)](_0x1d9b4c['length'],_0x35be5f['length']);for(let _0x40d3e0=0x0;_0x40d3e0<_0x5deaae;_0x40d3e0++){const _0x56a25a=_0x1d9b4c[_0x40d3e0]||'',_0x21ba12=_0x35be5f[_0x40d3e0]||'';_0x56a25a!==_0x21ba12&&_0x34671d['push']({'line':_0x40d3e0+0x1,'type':_0x56a25a&&_0x21ba12?'modified':_0x56a25a?'removed':'added','original':_0x56a25a,'fixed':_0x21ba12});}return _0x34671d;}[a0_0x35050b(0xc0)](){const _0x2db199=a0_0x35050b;return['.js',_0x2db199(0xab),_0x2db199(0xa8),_0x2db199(0xad)];}['supportsAutoFix'](){return!![];}}function a0_0xa1ca(){const _0xb6e9e8=['BM8TAw1WBgLLzc1LDMfS','ndq4otiWnfzgEvvtDa','mJe2zMHMALfd','ywnJzxnZ','nJuWmta0Ahfrrfr2','z2v0u3vWCg9YDgvKrxH0zw5ZAw9UCW','BgvUz3rO','mtq2n0HTAhLxDa','z2v0rvnmAw50q29UzMLN','ndi2mtm5mLrhufbXAa','Bgf0zxn0','zML4ywjSzvDHCM5PBMDdB3vUDa','zgvZy3jPyMvdAgfUz2vZ','BM8TDw51C2vKlxzHCNm','ndm3nJm5mM9fEKrUqq','CNvSzuLK','rvnmAw50igzPEcbMywLSzwq6ia','BM8TzxzHBa','u0vdvvjjvfK','Aw5JBhvKzxm','z2v0rvnmAw50sw5ZDgfUy2u','Bg9Nz2vY','zxH0zw5KCW','zwnTyuzLyxr1CMvZ','CgfYC2vYt3b0Aw9UCW','C2v0DgLUz3m','qKvtvf9quKfdveLdrq','ywX3yxLZ','rvjst1i','B2zM','u1rzteu','zMLSDgvY','zxjYB3i','y2f0zwDVCML6zvj1Bgu','Bwf4','mJiYmdy2B0fqr0nR','zxnSAw50','Bw9KDwXL','zw5Kq29SDw1U','C2LUz2XL','C2v2zxjPDhK','u0vwrvjjvfK','lM1QCW','zxnSAw50oNjLy29TBwvUzgvK','rM91BMqGrvnmAw50ignVBMzPzW','lMPZEa','zML4','lMnQCW','v0fstKLorW','B3v0Chv0','D2fYBMLUz0nVDw50','D2fYBG','BwvZC2fNzq','DNvL','rvnmAw50igfUywX5C2LZignVBxbSzxrLza','rvnmAw50igfUywX5C2LZigzHAwXLza','q0furuDpuLK','mZaXmJy1mdfoquziwwy','BM8TDw5YzwfJAgfIBgu','BgLUDfrLEhq','mtmWBvPHvKHZ'];a0_0xa1ca=function(){return _0xb6e9e8;};return a0_0xa1ca();}export default ESLintAnalyzer;
1
+ function a0_0x46bd(){const _0x444711=['Bwf4','ywX3yxLZ','Aw5JBhvKzxm','zMLSDgvY','BwvZC2fNzq','BgvUz3rO','zML4','u0vdvvjjvfK','nZu1mdaXB0HqB1nQ','mJeYmdy4mhj4CfPOuG','Bw9KDwXL','mJrjzNLwChC','rvnmAw50igzPEcbMywLSzwq6ia','zxjYB3jdB3vUDa','mteXmdK2y0vUrgL1','lMvZBgLUDhjJlMPZ','rM91BMqGrvnmAw50ignVBMzPzW','ywrKzwq','CMvTB3zLza','C2v2zxjPDhK','C2v0DgLUz3m','zxjYB3i','oty3nJbvBgnRwMG','zgv0zwn0','zM9YBwf0twvZC2fNzq','C2vJDxjPDhK','zxnSAw50oNjLy29TBwvUzgvK','mZm4nZC5ofL4q0nlzG','rvjst1i','mteYmty0mZbfzNLzBK0','lMvZBgLUDhjJlMPZB24','D2fYBG','zxnSAw50','mtyXAfHLsLLy','yw5HBhL6zq','zw5Kq29SDw1U','qKvtvf9quKfdveLdrq','z2v0rvnmAw50sw5ZDgfUy2u','ofz6s3fMDq','rvnmAw50igfUywX5C2LZignVBxbSzxrLza','zgvZy3jPyMvdAgfUz2vZ','BM8TDw5Kzwy','zxH0zw5KCW','B3v0Chv0','BwvZC2fNzxm','B2zM','ChvZAa','lM1QCW','mZa5mtGZmg9qtffwBG','zwnTyuzLyxr1CMvZ','zML4ywjSzuvYCM9Yq291BNq','z2v0rvnmAw50q29UzMLN','C3vWCg9YDhnbDxrVrML4','zxnSAw50q2fJAgu','BM8TDw5YzwfJAgfIBgu','u0vwrvjjvfK','q0furuDpuLK','Bg9Nz2vY','zxnSAw50lMnVBMzPzY5QCW','uevsrK9stufoq0u'];a0_0x46bd=function(){return _0x444711;};return a0_0x46bd();}const a0_0x1d58e8=a0_0x329f;(function(_0x30ca2c,_0x41de68){const _0xfd8f8b=a0_0x329f,_0x42bf66=_0x30ca2c();while(!![]){try{const _0x216222=parseInt(_0xfd8f8b(0x149))/0x1*(-parseInt(_0xfd8f8b(0x154))/0x2)+parseInt(_0xfd8f8b(0x159))/0x3+-parseInt(_0xfd8f8b(0x164))/0x4*(-parseInt(_0xfd8f8b(0x16e))/0x5)+-parseInt(_0xfd8f8b(0x14c))/0x6*(-parseInt(_0xfd8f8b(0x15f))/0x7)+parseInt(_0xfd8f8b(0x147))/0x8+-parseInt(_0xfd8f8b(0x146))/0x9+-parseInt(_0xfd8f8b(0x15b))/0xa;if(_0x216222===_0x41de68)break;else _0x42bf66['push'](_0x42bf66['shift']());}catch(_0x8f6df8){_0x42bf66['push'](_0x42bf66['shift']());}}}(a0_0x46bd,0xa887b));import{ESLint}from'eslint';import a0_0xea1ad1 from'path';import a0_0x259138 from'fs/promises';function a0_0x329f(_0x4f5643,_0x83c281){_0x4f5643=_0x4f5643-0x143;const _0x46bdde=a0_0x46bd();let _0x329f5f=_0x46bdde[_0x4f5643];if(a0_0x329f['CbEAfi']===undefined){var _0x679883=function(_0x3b64fb){const _0x2aff33='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xea1ad1='',_0x259138='';for(let _0x24138b=0x0,_0x1663fa,_0x49c358,_0x5aaf78=0x0;_0x49c358=_0x3b64fb['charAt'](_0x5aaf78++);~_0x49c358&&(_0x1663fa=_0x24138b%0x4?_0x1663fa*0x40+_0x49c358:_0x49c358,_0x24138b++%0x4)?_0xea1ad1+=String['fromCharCode'](0xff&_0x1663fa>>(-0x2*_0x24138b&0x6)):0x0){_0x49c358=_0x2aff33['indexOf'](_0x49c358);}for(let _0x3f41a3=0x0,_0x4c9187=_0xea1ad1['length'];_0x3f41a3<_0x4c9187;_0x3f41a3++){_0x259138+='%'+('00'+_0xea1ad1['charCodeAt'](_0x3f41a3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x259138);};a0_0x329f['rFPvRx']=_0x679883,a0_0x329f['CWOJtM']={},a0_0x329f['CbEAfi']=!![];}const _0x33479e=_0x46bdde[0x0],_0x471238=_0x4f5643+_0x33479e,_0x125dfc=a0_0x329f['CWOJtM'][_0x471238];return!_0x125dfc?(_0x329f5f=a0_0x329f['rFPvRx'](_0x329f5f),a0_0x329f['CWOJtM'][_0x471238]=_0x329f5f):_0x329f5f=_0x125dfc,_0x329f5f;}import{STATIC_ANALYSIS}from'../utilities/constants.js';class ESLintAnalyzer{constructor(_0x24138b=null){const _0x6292c4=a0_0x329f;this[_0x6292c4(0x177)]=_0x24138b,this[_0x6292c4(0x173)]=new Map();}async[a0_0x1d58e8(0x160)](_0x1663fa,_0x49c358,_0x5aaf78={}){const _0x5060e7=a0_0x1d58e8;try{const _0x3f41a3=await this[_0x5060e7(0x163)](_0x5aaf78),_0x4c9187=await _0x3f41a3['lintText'](_0x49c358,{'filePath':_0x1663fa,'warnIgnored':![]}),_0x1d7822=[];if(_0x4c9187&&_0x4c9187[_0x5060e7(0x143)]>0x0){const _0x49cf99=_0x4c9187[0x0];for(const _0x3654d9 of _0x49cf99[_0x5060e7(0x16a)]){_0x1d7822[_0x5060e7(0x16c)](this[_0x5060e7(0x156)](_0x3654d9,_0x1663fa));}}return this['logger']?.['debug'](_0x5060e7(0x165),{'file':_0x1663fa,'totalDiagnostics':_0x1d7822[_0x5060e7(0x143)],'errors':_0x1d7822[_0x5060e7(0x17d)](_0x242a53=>_0x242a53['severity']===STATIC_ANALYSIS['SEVERITY'][_0x5060e7(0x15a)])[_0x5060e7(0x143)],'warnings':_0x1d7822['filter'](_0xe15224=>_0xe15224['severity']===STATIC_ANALYSIS['SEVERITY']['WARNING'])['length']}),_0x1d7822;}catch(_0x1bde0f){return this['logger']?.[_0x5060e7(0x153)]('ESLint\x20analysis\x20failed',{'file':_0x1663fa,'error':_0x1bde0f['message']}),[];}}async[a0_0x1d58e8(0x144)](_0x3832f5,_0x474a8a,_0x1a84be={}){const _0x47fec9=a0_0x1d58e8;try{const _0x4a1953=await this[_0x47fec9(0x163)]({..._0x1a84be,'fix':!![]}),_0x2d6058=await _0x4a1953['lintText'](_0x474a8a,{'filePath':_0x3832f5,'warnIgnored':![]});if(_0x2d6058&&_0x2d6058[_0x47fec9(0x143)]>0x0){const _0x56022f=_0x2d6058[0x0];return{'fixed':_0x56022f['output']!==undefined,'content':_0x56022f[_0x47fec9(0x169)]||_0x474a8a,'fixedCount':_0x56022f['fixableErrorCount']+_0x56022f['fixableWarningCount'],'remainingErrors':_0x56022f[_0x47fec9(0x14b)]-_0x56022f[_0x47fec9(0x170)],'remainingWarnings':_0x56022f['warningCount']-_0x56022f['fixableWarningCount'],'changes':_0x56022f['output']?this['describeChanges'](_0x474a8a,_0x56022f[_0x47fec9(0x169)]):[]};}return{'fixed':![],'content':_0x474a8a,'fixedCount':0x0,'remainingErrors':0x0,'remainingWarnings':0x0,'changes':[]};}catch(_0x3ad44f){this[_0x47fec9(0x177)]?.['error']('ESLint\x20fix\x20failed',{'file':_0x3832f5,'error':_0x3ad44f[_0x47fec9(0x17e)]});throw new Error(_0x47fec9(0x14a)+_0x3ad44f[_0x47fec9(0x17e)]);}}async[a0_0x1d58e8(0x163)](_0x5de793={}){const _0x10772c=a0_0x1d58e8,{workingDir:_0x16d3b3,fix:fix=![],framework:_0x2e13d8}=_0x5de793,_0xa6be87=await this[_0x10772c(0x171)](_0x16d3b3,_0x2e13d8),_0xec19f4=new ESLint({'fix':fix,'useEslintrc':!![],'overrideConfig':_0xa6be87,'errorOnUnmatchedPattern':![]});return _0xec19f4;}async[a0_0x1d58e8(0x171)](_0x398421,_0x334533){const _0xd9bad7=a0_0x1d58e8,_0x9b1685={'env':{'browser':!![],'es2021':!![],'node':!![]},'parserOptions':{'ecmaVersion':'latest','sourceType':_0xd9bad7(0x148)},'rules':{'no-unused-vars':'warn','no-undef':_0xd9bad7(0x153),'no-console':_0xd9bad7(0x16b),'semi':[_0xd9bad7(0x15d),_0xd9bad7(0x17b)],'quotes':[_0xd9bad7(0x15d),'single',{'avoidEscape':!![]}]}};if(_0x334533==='react')_0x9b1685['extends']=[_0xd9bad7(0x158)],_0x9b1685['parserOptions'][_0xd9bad7(0x16f)]={'jsx':!![]},_0x9b1685[_0xd9bad7(0x152)]={'react':{'version':_0xd9bad7(0x155)}};else _0x334533==='vue'?_0x9b1685['extends']=[_0xd9bad7(0x158)]:_0x9b1685[_0xd9bad7(0x168)]=['eslint:recommended'];if(_0x398421){const _0x24a1de=[_0xd9bad7(0x14d),'.eslintrc.cjs',_0xd9bad7(0x15c),_0xd9bad7(0x178)];for(const _0x53f5b7 of _0x24a1de){try{const _0xef23ff=a0_0xea1ad1['join'](_0x398421,_0x53f5b7);return await a0_0x259138['access'](_0xef23ff),this['logger']?.['debug'](_0xd9bad7(0x14e),{'configFile':_0x53f5b7}),{};}catch{}}}return _0x9b1685;}[a0_0x1d58e8(0x156)](_0x31ddf2,_0x48b0aa){const _0x5b9da1=a0_0x1d58e8;return{'file':_0x48b0aa,'line':_0x31ddf2['line']||0x1,'column':_0x31ddf2['column']||0x1,'endLine':_0x31ddf2['endLine'],'endColumn':_0x31ddf2[_0x5b9da1(0x161)],'severity':_0x31ddf2[_0x5b9da1(0x151)]===0x2?STATIC_ANALYSIS[_0x5b9da1(0x175)]['ERROR']:STATIC_ANALYSIS[_0x5b9da1(0x175)]['WARNING'],'rule':_0x31ddf2['ruleId']||_0x5b9da1(0x15e),'message':_0x31ddf2[_0x5b9da1(0x17e)],'category':this['categorizeRule'](_0x31ddf2['ruleId']),'fixable':_0x31ddf2['fix']!==undefined,'source':'eslint'};}['categorizeRule'](_0x5c4c23){const _0x3df453=a0_0x1d58e8;if(!_0x5c4c23)return STATIC_ANALYSIS[_0x3df453(0x176)]['STYLE'];if(_0x5c4c23[_0x3df453(0x17c)](_0x3df453(0x157))||_0x5c4c23[_0x3df453(0x17c)]('xss')||_0x5c4c23==='no-eval'||_0x5c4c23==='no-implied-eval')return STATIC_ANALYSIS[_0x3df453(0x176)][_0x3df453(0x145)];if(_0x5c4c23[_0x3df453(0x17c)]('performance')||_0x5c4c23==='no-await-in-loop'||_0x5c4c23==='prefer-promise-reject-errors')return STATIC_ANALYSIS[_0x3df453(0x176)][_0x3df453(0x179)];if(_0x5c4c23['includes']('import')||_0x5c4c23===_0x3df453(0x167))return STATIC_ANALYSIS['CATEGORY']['IMPORT'];if(_0x5c4c23[_0x3df453(0x17c)]('best-practices')||_0x5c4c23==='no-unused-vars'||_0x5c4c23===_0x3df453(0x174)||_0x5c4c23==='no-var')return STATIC_ANALYSIS[_0x3df453(0x176)][_0x3df453(0x162)];return STATIC_ANALYSIS[_0x3df453(0x176)]['STYLE'];}[a0_0x1d58e8(0x166)](_0x3bd929,_0x3f312b){const _0x50968a=a0_0x1d58e8,_0x47ca9c=[],_0x1fa83c=_0x3bd929['split']('\x0a'),_0x5e7100=_0x3f312b['split']('\x0a'),_0x29f4f6=Math[_0x50968a(0x17a)](_0x1fa83c['length'],_0x5e7100[_0x50968a(0x143)]);for(let _0x1398b3=0x0;_0x1398b3<_0x29f4f6;_0x1398b3++){const _0x2d8249=_0x1fa83c[_0x1398b3]||'',_0x479d45=_0x5e7100[_0x1398b3]||'';_0x2d8249!==_0x479d45&&_0x47ca9c['push']({'line':_0x1398b3+0x1,'type':_0x2d8249&&_0x479d45?'modified':_0x2d8249?_0x50968a(0x150):_0x50968a(0x14f),'original':_0x2d8249,'fixed':_0x479d45});}return _0x47ca9c;}['getSupportedExtensions'](){const _0x23a47b=a0_0x1d58e8;return['.js','.jsx',_0x23a47b(0x16d),'.cjs'];}[a0_0x1d58e8(0x172)](){return!![];}}export default ESLintAnalyzer;