{"_id":"@chahuadev/junk-sweeper-app","_rev":"20-7ac9a18c75f3abc280403282e097d649","name":"@chahuadev/junk-sweeper-app","dist-tags":{"latest":"8.1.1"},"versions":{"1.0.0":{"name":"@chahuadev/junk-sweeper-app","version":"1.0.0","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"MIT","_id":"@chahuadev/junk-sweeper-app@1.0.0","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"4089a0cb279ff319a8868630abb55fc3a97c8afa","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-1.0.0.tgz","fileCount":4,"integrity":"sha512-yfmbWa21I/OcD8xDoHAPgS0MX1xUjIikchH/yc4h0FjQTC3viOHbqvyR9Ro0EPRlu4UzkyN2leeifh7Nh4tsmw==","signatures":[{"sig":"MEYCIQD3zywvWcqh7jGcMDMkdX75ZRNbnNJt3Zt3pYkNp3u9wgIhAK3FUKKMui5BvH6KrmSEPUPZoohbCEOm+S6IysH9QDL1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8951},"main":"index.js","gitHead":"e7ece6e46748effc41cb4c731d8cb16e0e7583c9","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"10.9.3","description":"Chahuadev Junk Sweeper — AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_1.0.0_1773037685718_0.8240447732309426","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@chahuadev/junk-sweeper-app","version":"1.0.1","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"MIT","_id":"@chahuadev/junk-sweeper-app@1.0.1","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"ccd98df030037210a783d05f1ba7d3f073843a88","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-1.0.1.tgz","fileCount":4,"integrity":"sha512-K/FB4Cgg6i1Wa+msek25mHHw3F2Dpgk0F0TRtEnsC0vbUXibfRYr5nfdqwkhEj8Pskj8NtuPo5klIoOsnfgTlw==","signatures":[{"sig":"MEQCIDa30DoQO7m39iIELZszO+og8W6LFb86s+vSAlAGQ2neAiBjeVV+tt59JPCIj/2ozkm9DOagfZ+S7jW9A1ayvfRWoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10322},"main":"index.js","gitHead":"8d0a64319adb394bee06f6502146853a971dcf6c","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"10.9.3","description":"Chahuadev Junk Sweeper — AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_1.0.1_1773114336803_0.5406580036899804","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@chahuadev/junk-sweeper-app","version":"1.0.2","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"MIT","_id":"@chahuadev/junk-sweeper-app@1.0.2","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"4c63c77afc4b21427e2e277c52bf557a44c2d4ae","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-1.0.2.tgz","fileCount":4,"integrity":"sha512-bobIIi4YvqCttzCJmfEVzX+jS+nhdOppT/PdC3T3SBdJxA+UD28Mh9bVO36NtVnmiKZuB5dXNGlMxsVbaLUKlQ==","signatures":[{"sig":"MEQCICwclAO+Kv79YyLKMfUUUt/JloLF7LCCs6iYtfE5O6RCAiB8Vc7zyxA4johojw80MagfpIHirq6doBfgiFkMU2kHbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13380},"main":"index.js","gitHead":"2714ca4a4b971dfa7840d23ecc00ee0ee96a6a3d","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"10.9.3","description":"Chahuadev Junk Sweeper — AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_1.0.2_1773123002943_0.8741261769569584","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@chahuadev/junk-sweeper-app","version":"1.1.0","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"MIT","_id":"@chahuadev/junk-sweeper-app@1.1.0","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"cb527fb3923381d01312e18f24cb218adcdd0c4a","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-1.1.0.tgz","fileCount":4,"integrity":"sha512-ye40XDoD08uHNOiD5b8lxXHHqMINYC60BXcylEgBQ823o/S1p6uuwjz/cg0MCg9Fuyh12zSAkQFGeVVzq6P6VQ==","signatures":[{"sig":"MEQCIGth6cHA2cywZZGqpjgwh3Nr1qw9aJSWMxF6C+MJ5oMfAiBIpiD/icWzMoB5IU+Cd8vquIihQgZ9H+FlEu+SRrI7UA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15998},"main":"index.js","gitHead":"277f1d622371039f0ac197ef1b1cee4c2204eb40","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"10.9.3","description":"Chahuadev Junk Sweeper — AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_1.1.0_1773292207158_0.7157614225564843","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@chahuadev/junk-sweeper-app","version":"1.1.1","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"MIT","_id":"@chahuadev/junk-sweeper-app@1.1.1","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"f8e670efe77ad75d4d7d5b358dfdc8647dd25e81","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-1.1.1.tgz","fileCount":4,"integrity":"sha512-UxyF2aetMPouHXNbFqv6iYqTaYt+RqlQO0EkXrpaNDugTd26069tYPiirafbBzwLiaRAzZIPjIM5+9R5D6PyAQ==","signatures":[{"sig":"MEUCID4k+0wWsRbBwr3Yo8Jff6cwAx/bqWuwGDYz11zwLXoVAiEA6KjyqN3FOffdVQ81Jd+KVR0n/Yi63WHpWTKWhyXxDhE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16122},"main":"index.js","gitHead":"039cd69841978777f531c519763a092bbbc9a893","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"10.9.3","description":"Chahuadev Junk Sweeper — AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_1.1.1_1773295783563_0.8883188000744857","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@chahuadev/junk-sweeper-app","version":"2.0.0","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@2.0.0","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"16b4e2e131c2d9abe7160341e8746f6bd36d515f","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-2.0.0.tgz","fileCount":5,"integrity":"sha512-dWd7E27v5Bg1gBOmRn9YD/Rt7rSYURxOxn/hp6ZPYyMkH7yimdEh8jgIiF2rVHJWE7q0sOB7izOD9EpIzhrMSQ==","signatures":[{"sig":"MEYCIQC0ZyOlJ59wnaTgyu8j7Oe9T9kQVVhz96uF+VJPTtJeAgIhAOgP5Fbdkpt5AxCQqVTuHgFwgrRS1CoXFfffeKw8V9re","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17969},"main":"index.js","gitHead":"5aa99c432c24f8eb6a3eb7373da01ffea16f2b81","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk Sweeper — AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_2.0.0_1773704384602_0.5049731439060021","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@chahuadev/junk-sweeper-app","version":"2.0.1","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@2.0.1","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"efee6c21d10940424545df21bdece6dc01127464","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-2.0.1.tgz","fileCount":5,"integrity":"sha512-23jpNyIT5MDLuh+qVRrpwRi2fGYTGydKq2tGnVP3dwGaD50MyQDsA8O/2v17BwUs8OBrDaithZmIYKA+G5Bb1A==","signatures":[{"sig":"MEQCIDAfSv86PFSQGRJZ/NqJK+z1omQhguCsYg1vV06jh5ClAiBBuMadVJlOdpSPXtL4Cj7D1JqHlW6VsdHJ74OsbDH1vA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17939},"main":"index.js","gitHead":"5aa99c432c24f8eb6a3eb7373da01ffea16f2b81","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk Sweeper — AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_2.0.1_1773705157808_0.7501190357860255","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@chahuadev/junk-sweeper-app","version":"2.0.2","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@2.0.2","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"537ebb8c90e79ebdad474abebe95645a7ec49807","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-2.0.2.tgz","fileCount":5,"integrity":"sha512-b8uFsAR1xy3L4g96E5Qix4YgdehXZI658gKYeH44oYd0fNN23EmpZtwq/nB7qNpNdpEbQTjfxzGq8gmZ7XtyTA==","signatures":[{"sig":"MEUCID0ca5x1m3aIF8KKGUvlo3qgHVDJnqM2xsqjoedC+SxuAiEAsOdRzLV9HB/cBtjrOikDsFqH4YzjR/A/Esnyc5XDhVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18775},"main":"index.js","gitHead":"5a41a8576c91a627780a52a7e8396e4350cdafec","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk Sweeper — AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_2.0.2_1773743203485_0.10368448874092406","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@chahuadev/junk-sweeper-app","version":"2.0.3","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@2.0.3","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"ed8178bea6e9714bbfbce8a4c75accb3c2a512dc","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-2.0.3.tgz","fileCount":5,"integrity":"sha512-JgU8P+pUCZgEj1bsNG/Axg9cOw28X0rOknaKHs5rqgqeLxWzUorOdsnWczVmrAYq3FyFwhBDFm1X6GNeMPGoYw==","signatures":[{"sig":"MEUCIQCkMnt4prFIY+iZY+VIn2ivPh4+qRCU+oOqmarYtdYoIgIgBd/2GONxkDrvh0O6996BjYZrzpbXmoYvKfCJfhz4WA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19027},"main":"index.js","gitHead":"12ea355d49e786131ce28740d07e8c086e500ac5","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk Sweeper — AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_2.0.3_1773744335321_0.06613804836522097","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@chahuadev/junk-sweeper-app","version":"3.0.1","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@3.0.1","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"9b5d1010a43a0e29046e1c18f700f8cfba717b80","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-3.0.1.tgz","fileCount":5,"integrity":"sha512-AmBGDPH2/tRKLnVo5vESZ4C0UNcuNXExbtxxjVeJTjwUbIn5YHn7CMqQJmCUhqk+4y/G/oaeEbyNUO2D/9PT4Q==","signatures":[{"sig":"MEUCIC3PiM9Km2JeVRnUjCg8nNYa0m0QWpS9C8O29Lr7sT7zAiEA8Fbq1PdFeydl2BwG8RfkGf+YDkGWGXRewaBQJibNIDA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20812},"main":"index.js","gitHead":"90c7ce1b16f3c0396cf35d1538a0409e11215f63","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk Sweeper — AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_3.0.1_1773829653157_0.5706433589155091","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@chahuadev/junk-sweeper-app","version":"3.1.0","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@3.1.0","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"d77afbcad2f0b548b4f52afc465be333b12cf83b","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-3.1.0.tgz","fileCount":5,"integrity":"sha512-RcQllEdYMpLmGVBRmBK0JgAxk/jFkR/Y2z/k+UxybWOAlyUJlOHWtT9992+54YunbcOzXxbtoLgB2IQbxZiDhw==","signatures":[{"sig":"MEUCIQCH9PD7aVhLYAS8SuhFxaYg08BEsSNrGMCzmGj9N7zGqAIgev3JrtvNUzWFbTFpbcI5r3MxjuHqsz9iyJnclld9PUU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39024},"main":"index.js","gitHead":"8f0461e87e655e9da006a7bd47c3e99fa6f820a8","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk Sweeper — AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_3.1.0_1773887233977_0.992773524894216","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"@chahuadev/junk-sweeper-app","version":"7.0.0","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@7.0.0","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"31c7342cdbd48fd3c1a5e06187c6a4d6c85fed68","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-7.0.0.tgz","fileCount":5,"integrity":"sha512-pnqGqhPdMcyKSTuNVIjOpWJuhsUWHJYKSGiQuPpWWqxAWpQPr6P6eBAbKlHr7IK+VO+LmURy9f+CTTCgMhTs7w==","signatures":[{"sig":"MEQCIAJ0O266z3P/MIXyfb/l8kGzn8RQ16+1vA5mYX+xfOLsAiB716s3bC6sblsQCNiGYRdbR/0rush/oG7RkiNQAVMPpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39654},"main":"index.js","gitHead":"584f0ef98ba5d3fb0a2aa4c83e5d6f1c6bda7b5c","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk Sweeper โ€” AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_7.0.0_1774077590820_0.1705165079341049","host":"s3://npm-registry-packages-npm-production"}},"7.0.1":{"name":"@chahuadev/junk-sweeper-app","version":"7.0.1","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@7.0.1","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"36ebf1e1d78fb33cfee83130ca92714f33473bd1","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-7.0.1.tgz","fileCount":5,"integrity":"sha512-lF+e3sqWxABzfgKHdKfmoEW+w+UAmP9EOU5CBeQ9K+wDv43EVHJQptYhjCmooQUiNltycIlGjUkZtxGfk2oscw==","signatures":[{"sig":"MEUCIFuI+Ozbwh4Wd71U2/dy0ibOUwJBDa3cvcJ9Kyb4kj83AiEAnmh0b8XkZc/jrUuwPq1XoiLfRzoma0if0+5Ico0NDQk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39233},"main":"index.js","gitHead":"5122fd3365295dec06cb3fc8828daf2103803cde","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk-Sweeper - AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_7.0.1_1774269835039_0.30269897937814916","host":"s3://npm-registry-packages-npm-production"}},"7.0.2":{"name":"@chahuadev/junk-sweeper-app","version":"7.0.2","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@7.0.2","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"b2b50e42a36227e29e681897fd15e9e99f57b84b","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-7.0.2.tgz","fileCount":5,"integrity":"sha512-hPdjaTRDjxKf7dBxMF5j3HVcxtv3koIaJIpHUHF3Xu/px45Yqmnr92N6YNIX2tGO8Ig/SXZjEW8uln55IhzGOg==","signatures":[{"sig":"MEYCIQCF+q0fcwQuM9t+uc5zfqCfs5jjrPdtl8eAQZz7FHJ2IAIhAItDXHSZgHA69zkBWSrDJahfYCncDMcm/nmM4ErLRH8J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39206},"main":"index.js","gitHead":"5122fd3365295dec06cb3fc8828daf2103803cde","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk-Sweeper - AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_7.0.2_1774273827852_0.12999212259020076","host":"s3://npm-registry-packages-npm-production"}},"7.0.3":{"name":"@chahuadev/junk-sweeper-app","version":"7.0.3","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@7.0.3","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"56091342c0581f13ff94eabca6ee60680809735f","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-7.0.3.tgz","fileCount":5,"integrity":"sha512-lP9IA8r/JOuBPQd3HIM2CcfZXI2e6N3jG4PaDXdGhgCgqnUT9OegZPNM4PZl6QBoTI71xwlAmaqwOS6piSwyZA==","signatures":[{"sig":"MEQCIGQOcT+yx8F3YwQI4PxNlGtYxAFwxAcZTaXQ/jT5iDBFAiAopl8iT0rKoCUC1hYqcCMsZd1ElLvsvjP9pRKd7xUzkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39080},"main":"index.js","gitHead":"bf8b9ac9ce33b3a6a4b9dc81808136e7896bf973","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk-Sweeper - AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_7.0.3_1774324101447_0.0024698897909818385","host":"s3://npm-registry-packages-npm-production"}},"8.0.0":{"name":"@chahuadev/junk-sweeper-app","version":"8.0.0","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@8.0.0","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"6a9072c6b2db0f1a5df47d46aba572de8c8a971e","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-8.0.0.tgz","fileCount":5,"integrity":"sha512-1OOrgprfMxVKHOQAP44+tc0ZEKMwJzbhtabuC9Te5k9faqWial/J/5eFDIjZgp2GiGh6RPOqtO+Gn1Op4PLgTA==","signatures":[{"sig":"MEQCIAgg78YpqlLMuNTrrHBVNQIstBUnFBCKR4Qn/dE+k0azAiBetBLVIGOaWVnVUu+oVWImhw1vRXXs5leExY437S9R2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39080},"main":"index.js","gitHead":"7511a43e5c6d671df10bc0aae503b6e4ccf0225a","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk-Sweeper - AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_8.0.0_1774601478699_0.14431136180464188","host":"s3://npm-registry-packages-npm-production"}},"8.0.1":{"name":"@chahuadev/junk-sweeper-app","version":"8.0.1","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@8.0.1","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"2ce68ff8316abfa0255e45a193ac9ff5b53b59c8","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-8.0.1.tgz","fileCount":5,"integrity":"sha512-kxR90zQ5G25n9DSglYxkfQgN8KsNSeZvpqzcc34eEWLyG9oGLUYgsk1OvcQbXrkfojwkJXjx3ZdYhFhimQPTlw==","signatures":[{"sig":"MEUCIQC848LiHL2Lqirso7dnSGW6HDUix4T8tWRUHbcy5xBDOQIgErKW76CUbaZFBDyzMXdg5S7G+0jbeHma56U8dthPK6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39080},"main":"index.js","gitHead":"75b18618bf01b94c92be22fa44010ccbbcab4ec5","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk-Sweeper - AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_8.0.1_1774748253989_0.7490232992660231","host":"s3://npm-registry-packages-npm-production"}},"8.0.2":{"name":"@chahuadev/junk-sweeper-app","version":"8.0.2","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@8.0.2","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"bdea330a81be81fea39a6af4a84ab3546d28315c","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-8.0.2.tgz","fileCount":5,"integrity":"sha512-+ODrI7ObcAVBcZ5PhSymCpHN9EjtLCfnIL31OfliMP4ezRwFIZBf0sdH6HbgtbQAu9na5rv5YDIhWQ0qVOeu6A==","signatures":[{"sig":"MEUCIQCYCB1k06bVOXuyDnEDY2UuqQkv/WpEuwZaVqaKBrTpLAIgW4R3L36nfATgjWD4Occ4p+yEpGK7QPnLqUI2M8VEeJo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39061},"main":"index.js","gitHead":"916049959edde076a4a21fe13689cbaf8b05506f","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk-Sweeper - AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_8.0.2_1774761069230_0.26370996959842485","host":"s3://npm-registry-packages-npm-production"}},"8.1.0":{"name":"@chahuadev/junk-sweeper-app","version":"8.1.0","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"url":"https://chahuadev.com","name":"Chahuadev","email":"chahuadev@gmail.com"},"license":"SEE LICENSE IN LICENSE.md","_id":"@chahuadev/junk-sweeper-app@8.1.0","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","bin":{"junk-sweeper":"index.js"},"dist":{"shasum":"01e4d5a5ecf080cb9c26523eddc5d520aac11a62","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-8.1.0.tgz","fileCount":5,"integrity":"sha512-H4K9PVklDqaMiRuohur45nR2NMW0n2NwXebSHgkca3kORRKSGZiA0ik9u0rxQVIefHYwRxZnFQBlx2vj7ytocw==","signatures":[{"sig":"MEUCIDyZ9MbtvIwEDz1MAJtwL8dYRUtkcs2g3SznwVwYsNg8AiEA4bMjuZ6/9FtiiQb38x8UeinZA8R4Tn8MCmWSnTF2i+w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39061},"main":"index.js","gitHead":"30dd6a581b4f77ac3149df1e82f55724eb0f8140","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"repository":{"url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","type":"git"},"_npmVersion":"11.11.1","description":"Chahuadev Junk-Sweeper - AST-based dead code & silent bug detector with interactive architecture map","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/junk-sweeper-app_8.1.0_1774956654385_0.6278200259381628","host":"s3://npm-registry-packages-npm-production"}},"8.1.1":{"name":"@chahuadev/junk-sweeper-app","version":"8.1.1","description":"Chahuadev Junk-Sweeper - AST-based dead code & silent bug detector with interactive architecture map","main":"index.js","bin":{"junk-sweeper":"index.js"},"scripts":{"postinstall":"node install.js"},"keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"author":{"name":"Chahuadev","email":"chahuadev@gmail.com","url":"https://chahuadev.com"},"license":"SEE LICENSE IN LICENSE.md","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper"},"homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","_id":"@chahuadev/junk-sweeper-app@8.1.1","gitHead":"3de2129dbdd33a6fd4d444f0533bac3bc9473662","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-6Eh3+VPLf8oBIimHEoNeS7hXiAVTOB9EMbbY5NmfWn2gEytGnYNLdO35fJoPg8JqQS5wVP5JySSIHYNanuXmCg==","shasum":"a6a77781cbe610164693f8de0d58a62623fc9caf","tarball":"https://registry.npmjs.org/@chahuadev/junk-sweeper-app/-/junk-sweeper-app-8.1.1.tgz","fileCount":5,"unpackedSize":39061,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDTcUaV/wCfhOj1ehyf86NZDUZNJXyCoPqBtI/mV2HRqAiEArE1Ql6joP92H38ZF9T/dDm0acpwz5NpmzMp08vIaS4E="}]},"_npmUser":{"name":"chahuadevth","email":"chahuadev@gmail.com"},"directories":{},"maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/junk-sweeper-app_8.1.1_1776174505917_0.759212943499429"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-09T06:28:05.611Z","modified":"2026-04-14T13:48:26.235Z","1.0.0":"2026-03-09T06:28:05.857Z","1.0.1":"2026-03-10T03:45:36.937Z","1.0.2":"2026-03-10T06:10:03.100Z","1.1.0":"2026-03-12T05:10:07.301Z","1.1.1":"2026-03-12T06:09:43.701Z","2.0.0":"2026-03-16T23:39:44.754Z","2.0.1":"2026-03-16T23:52:37.944Z","2.0.2":"2026-03-17T10:26:43.628Z","2.0.3":"2026-03-17T10:45:35.491Z","3.0.1":"2026-03-18T10:27:33.293Z","3.1.0":"2026-03-19T02:27:14.131Z","7.0.0":"2026-03-21T07:19:50.972Z","7.0.1":"2026-03-23T12:43:55.190Z","7.0.2":"2026-03-23T13:50:28.027Z","7.0.3":"2026-03-24T03:48:21.605Z","8.0.0":"2026-03-27T08:51:18.851Z","8.0.1":"2026-03-29T01:37:34.138Z","8.0.2":"2026-03-29T05:11:09.375Z","8.1.0":"2026-03-31T11:30:54.597Z","8.1.1":"2026-04-14T13:48:26.098Z"},"author":{"name":"Chahuadev","email":"chahuadev@gmail.com","url":"https://chahuadev.com"},"license":"SEE LICENSE IN LICENSE.md","homepage":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper","keywords":["junk-sweeper","code-analysis","dead-code","unused-variables","silent-bugs","ast","electron","chahuadev"],"repository":{"type":"git","url":"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper"},"description":"Chahuadev Junk-Sweeper - AST-based dead code & silent bug detector with interactive architecture map","maintainers":[{"name":"chahuadevth","email":"chahuadev@gmail.com"}],"readme":"---\nlicense: other\nlanguage:\n  - en\ntags:\n  - code-analysis\n  - static-analysis\n  - javascript\n  - electron\n---\n<div align=\"center\">\n\n# Chahuadev Junk Sweeper\n\n**Ultimate Diagnostic Code Analysis Tool**  \nDetect junk code with **95%+ accuracy** in read-only, non-destructive analysis mode.\n\n<p align=\"center\">\n  <img src=\"https://huggingface.co/datasets/chahuadev/chahuadev-png/resolve/main/chahuadev-junk-sweeper.png\" width=\"700\" alt=\"Junk Sweeper — Main Dashboard\">\n</p>\n\n<p align=\"center\">\n <a href=\"https://www.npmjs.com/package/@chahuadev/junk-sweeper-app\"><img src=\"https://img.shields.io/npm/v/@chahuadev/junk-sweeper-app?style=for-the-badge&color=blue\" alt=\"NPM Version\"></a>\n  <a href=\"https://www.npmjs.com/package/@chahuadev/junk-sweeper-app\"><img src=\"https://img.shields.io/npm/dt/@chahuadev/junk-sweeper-app?style=for-the-badge&color=success\" alt=\"NPM Downloads\"></a>\n  <a href=\"https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper\"><img src=\"https://img.shields.io/badge/%20HuggingFace-Dataset-yellow?style=for-the-badge\" alt=\"HuggingFace Dataset\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/License-Non--Commercial-blue?style=for-the-badge\" alt=\"Non-Commercial License\"></a>\n  <img src=\"https://img.shields.io/badge/Electron-40+-47848F?style=for-the-badge&logo=electron&logoColor=white\" alt=\"Electron 40+\">\n  <img src=\"https://img.shields.io/badge/Node.js-%E2%89%A522.0.0-339933?style=for-the-badge&logo=node.js&logoColor=white\" alt=\"Node.js 22\">\n  <img src=\"https://img.shields.io/badge/Python-3.8+-3776AB?style=for-the-badge&logo=python&logoColor=white\" alt=\"Python 3.8+\">\n  <img src=\"https://img.shields.io/badge/.NET-10.0-512BD4?style=for-the-badge&logo=dotnet&logoColor=white\" alt=\".NET 10\">\n  <img src=\"https://img.shields.io/badge/Platform-Windows-0078D4?style=for-the-badge&logo=windows&logoColor=white\" alt=\"Windows\">\n  <img src=\"https://img.shields.io/badge/Analysis-Read--Only%20%E2%9C%93-blue?style=for-the-badge\" alt=\"Read-Only Analysis\">\n  <img src=\"https://img.shields.io/badge/Security-7--Layer%20Gateway-red?style=for-the-badge&logo=shield&logoColor=white\" alt=\"7-Layer Security\">\n</p>\n\n>  **Built for developers who care about clean code.** Junk Sweeper scans your entire project using **native AST engines per language** — JavaScript/TypeScript (Babel), Python (stdlib ast), and C# (Microsoft Roslyn) — and surfaces unused variables, dead imports, duplicate functions, security vulnerabilities, and silent bugs through a live interactive dashboard and a draggable dependency graph. **Java scanner is in active development.** **Zero code modifications. Diagnostic-only. Always safe.**\n\n</div>\n\n---\n### npm Package (Windows)\n\n```bash\nnpm install -g @chahuadev/junk-sweeper-app --foreground-scripts --force\n```\n\n> The installer auto-downloads the correct binary for your platform. Use `--foreground-scripts` to see the download progress bar.\n\n---\n\n## 🐧 Running on Linux / WSL2 (Ubuntu)\n\nFirst install the required system libraries (one-time setup):\n\n```bash\nsudo apt-get update && sudo apt-get install -y \\\n  libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 \\\n  libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 \\\n  libxrandr2 libgbm1 libasound2\n```\n\nThen run the AppImage:\n\n```bash\nchmod +x \"Junk Sweeper.AppImage\"\nDISPLAY=:0 WAYLAND_DISPLAY=wayland-0 \\\n  ./\"Junk Sweeper.AppImage\" \\\n  --appimage-extract-and-run --no-sandbox --disable-gpu\n```\n\n **WSL2 tip:** Copy to WSL native filesystem first:\n\n # Path after: npm install -g @chahuadev/junk-sweeper-app\n # (no sudo)\n\n ```bash\n cp ~/.npm-global/lib/node_modules/@chahuadev/junk-sweeper-app/bin/\"Junk Sweeper.AppImage\" /tmp/JunkSweeper.AppImage\n ```\n # (with sudo)\n # cp /usr/lib/node_modules/@chahuadev/junk-sweeper-app/bin/\"Junk Sweeper.AppImage\" /tmp/JunkSweeper.AppImage\n\n```bash\n chmod +x /tmp/JunkSweeper.AppImage\n DISPLAY=:0 WAYLAND_DISPLAY=wayland-0 /tmp/JunkSweeper.AppImage \\\n   --appimage-extract-and-run --no-sandbox --disable-gpu\n```\n\n---\n## Security Guarantee\n\nJunk Sweeper is **read-only by design** — verified at the code level, not just by policy.\n\n| Guarantee | How It Works |\n|---|---|\n| **Never modifies user files** | All detectors use `fs.readFileSync()` only — no `writeFileSync()` anywhere near your code |\n| **Never touches the OS** | No registry writes, no admin privilege requests, no system calls outside the app's own data folder |\n| **Path Traversal Protection** | Every scan path is validated against `../` traversal, symlinks, and forbidden OS directories (`System32`, `/etc`, `/sys`, `/proc`) |\n| **Executable Injection Prevention** | Strict file-type whitelist — `.exe`, `.dll`, `.bat`, `.sh` and all binary formats are blocked before analysis |\n| **App Integrity on Every Launch** | SHA-256 checksums of `main.js`, `preload.js`, and all detectors are verified before the app starts — tampered builds are rejected |\n| **Sandboxed Renderer** | Electron runs with `contextIsolation: true`, `sandbox: true`, `nodeIntegration: false` — the UI has zero direct Node.js access |\n| **Audit Log** | Every file access and security event is logged to `~/.chahuadev/logs/` for full traceability |\n\nThe only files the app ever writes are its **own** layout cache (`%APPDATA%\\Junk Sweeper\\layouts\\`) and its own security audit log — nothing inside your project.\n\n---\n\n## Key Features That Set Us Apart\n\nWhile standard linters look for syntax errors, **Chahuadev Junk Sweeper** uses deep AST (Abstract Syntax Tree) analysis to understand the *context* and *architecture* of your entire project.\n\n###  Silent Bug Catcher\nDetects logical flaws that won't crash your app but **will** silently break your business logic:\n\n| Pattern | What It Catches |\n|---|---|\n| **Empty Catch Blocks** | Errors swallowed with `catch(e) {}` — bugs disappear without a trace |\n| **Zombie Event Listeners** | `.addEventListener()` without a matching `.removeEventListener()` — memory leaks that grow over time |\n| **Scope Shadowing** | Inner variable re-declaring an outer name — logic in the outer scope runs on the wrong value |\n| **Floating Promises** | `async` functions called without `await` inside `try/catch` — rejections go unhandled |\n\nThis is what separates Junk Sweeper from a plain linter. Your code compiles fine, your tests pass — and the bug ships anyway.\n\n###  Interactive Architecture Map \nNot just a static graph. A **fully interactive dependency diagram** that maps every cross-file connection in your project:\n\n- **Left-to-Right auto-layout** powered by ELK Layered (Sugiyama) — instantly see architecture flow with better crossing minimization\n- **Drag nodes freely** to group related files your way\n- **Save / Load / Copy Layout JSON** — positions persist across sessions, so your team always sees the same organised view\n- **Bidirectional issue linking** — click a file node to filter the Issues list; click the pin icon on any issue to fly to that node on the map\n- **Color-coded severity** — Green (clean) / Amber (1–2 issues) / Red (3+ issues)\n- **Standalone map mode** — open map window without scan data and import a previously exported workflow JSON\n- **Portable workflow export** — exported JSON embeds graph data, issue structures, layout/view state, and render assets for future mobile import\n- Detects `require()`, `import`, `<script src>`, `loadFile()`, IPC channels, and `preload:` edges\n\n###  One-Click VS Code Integration\nFound an issue? Click the **filename** in the report and Junk Sweeper opens VS Code directly at the **exact problematic line** — no searching, no scrolling. The moment you see the issue, you're already in position to fix it.\n\n###  Multi-Threaded Performance\nHeavy AST analysis runs in **Node.js Worker Threads** — your UI stays smooth and responsive while scanning 1,000+ file projects in the background.\n\n---\n\n> **Dataset & Model Hub:** [huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper](https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper)\n\n---\n\n## What It Detects\n\n| Issue Type | Accuracy | Method | Language |\n|---|---|---|---|\n| Unused Imports | 99% | AST (`@babel/parser` + `@babel/traverse`) | JS/TS/JSX/TSX |\n| Unused Variables | 85–90% | AST + cross-file scope analysis | JS/TS/JSX/TSX |\n| Dead Code | 90–98% | AST control-flow / reachability | JS/TS/JSX/TSX |\n| Duplicate Functions | 88–94% | AST structural hash + semantic similarity | JS/TS/JSX/TSX |\n| Silent Bugs (8 patterns) | 85–95% | AST pattern matching | JS/TS/JSX/TSX |\n| Code Quality (10 patterns) | 80–100% | AST — debugger, eval, NaN, var, console, prototype… | JS/TS/JSX/TSX |\n| SAST Security (6 levels L1–L6) | 85–95% | AST — injection, path traversal, hardcoded secrets, unsafe eval… | JS/TS/JSX/TSX |\n| Python Security | 85–95% | Python stdlib ast subprocess | Python |\n| Python Dead Code | 88–94% | Python stdlib ast subprocess | Python |\n| Python Unused Imports | 90–97% | Python stdlib ast subprocess | Python |\n| Python Duplicates | 80–90% | Python stdlib ast subprocess | Python |\n| Python Complexity | 80–90% | Python stdlib ast subprocess | Python |\n| Python Type Hints | 85–95% | Python stdlib ast subprocess | Python |\n| C# Security | 85–95% | Roslyn `CSharpSyntaxTree` | C# |\n| C# Dead Code | 88–94% | Roslyn `CSharpSyntaxTree` | C# |\n| C# Unused Usings | 90–97% | Roslyn `CSharpSyntaxTree` | C# |\n| C# Code Quality | 80–92% | Roslyn `CSharpSyntaxTree` | C# |\n| C# Silent Bugs | 82–92% | Roslyn `CSharpSyntaxTree` | C# |\n| Java (structural) | [IN DEV] กำลังพัฒนา | `--source 11` subprocess | Java |\n\n> Every finding now includes a **live recommendation** generated from your actual code — real variable names, the exact problematic line, and a concrete fix example. No hardcoded templates.\n\nSupports (full AST): **JavaScript, TypeScript, JSX, TSX, Python, C#**  \nSupports (in development): **Java**\n\n---\n\n## Core Features\n\n### Static Code Analysis\n- **Multi-language AST engines** — each language uses its own dedicated native parser:\n  - **JS/TS/JSX/TSX** — `@babel/parser` + `@babel/traverse` (in-process, Worker Thread)\n  - **Python** — stdlib `ast` module via subprocess (`main_json.py`); 7 detectors\n  - **C#** — Microsoft Roslyn (`CSharpSyntaxTree`) via subprocess (`Program.cs`, .NET 10); 5 detectors\n  - **Java** — subprocess via `--source 11` [IN DEV] *กำลังพัฒนา*\n- **6 active detectors** — unused variables, unused imports, dead code, duplicate functions, silent bugs, code quality\n- **Silent Bugs — 8 patterns:** empty catch, floating promises, zombie listeners, orphaned timers, uncaught promise chains, scope shadowing, naked JSON.parse, await-in-loop\n- **Code Quality — 10 patterns:** debugger statements, eval/new Function, NaN comparison, assignment-in-condition, parseInt without radix, var declaration, console.* debug logging, prototype mutation, overly long functions, TODO/FIXME markers\n- **Live AST recommendations** — every finding shows real variable names, the actual code line, and a concrete fix example extracted from the AST at scan time — no hardcoded templates\n- **Common-sense filtering** — permanent Node.js/Electron lifecycle events not flagged; stdlib module names and error callback names excluded from shadow warnings\n- **Confidence scoring** — every finding includes an accuracy percentage and severity level\n- **Read-only analysis** — safe diagnostic mode, zero code modification\n\n### SAST Security Scanner\n- **Dedicated SCAN SECURITY button** — independent scan from junk analysis; runs in a separate Worker Thread\n- **6-level severity (L1–L6)** — from critical injection flaws to low-risk style-security issues\n- **Detects:** SQL/NoSQL injection, command injection, path traversal, hardcoded secrets/tokens/passwords, unsafe `eval` / `new Function`, prototype pollution, insecure `Math.random`, unvalidated redirects, and more\n- **Security tab severity chips** — ALL / CRITICAL / HIGH / MEDIUM / LOW filter chips sync with sidebar badge clicks\n- **Security Statistics Sidebar** — severity breakdown with clickable severity badges (toggle mode) — syncs with security chips\n- **Map Monitor integration** — security issue count + WARN-N badge shown on every affected file card\n- **Mutual exclusion** — switching between Junk Scan and Security Scan automatically clears the previous result\n\n### Project Map Monitor\n- **Interactive n8n-style dependency graph** — not a static image; every node is draggable, zoomable, and clickable\n- **SVG card nodes** — color-coded by file type and issue severity; file-type badge (JS / TS / HT / JSON / etc.) on every node\n- **ELK LR auto-layout** — left-to-right layered layout on first open; re-run anytime via the Auto-Layout button\n- **Layout Memory** — positions saved to `%APPDATA%\\Junk Sweeper\\layouts\\<project>.json` automatically; close and reopen the app and every node is exactly where you left it; share the JSON with your team via the Copy button\n- **IPC channel edges** — visualises Electron `ipcRenderer`/`ipcMain` connections\n- **Dependency detection** across JS, TS, HTML (`<script src>`, `<link href>`), and Electron patterns (`loadFile()`, `preload:`)\n- **Per-file issue badges** — each node shows issue count with Green / Amber / Red status; WARN-N security badge appears above the role badge (non-overlapping)\n- **Node Status legend** — Clean (green) / Minor (amber) / Critical (red) / npm (purple) / Gateway Box (orange pill) — collapsible, state persists\n- **Electron Role badges** — MAIN / BR / UI / SEC / ENG role labels on key Electron files\n- **Bidirectional Issues ↔ Map linking** — click the PIN icon on any issue card to fly to that node on the map; click a node on the map to filter the Issues list to that file\n- **One-Click VS Code Integration** — click any filename in the issue report to open VS Code at the exact problematic line\n- **Workflow JSON Export / Import** — one-click save/load of map state as Junk Sweeper workflow JSON\n- **Mobile-ready portable payload** — workflow JSON contains full map payload (nodes, edges, issueLinesByFile, positions, zoom/pan, edge style, node SVG data URIs, tooltips)\n- **Free-drag** — 8-direction resize + drag-anywhere code panel; nodes freely repositionable\n\n### Security-First Architecture\n- **7-Layer Security Gateway**: path validation, file-type whitelist, authentication, permission checks, audit logging, rate limiting, sandbox IPC isolation\n- **Path Traversal Protection** — prevents directory traversal attacks\n- **Checksum Validation** — file integrity verification on startup (production mode)\n- **Context Isolation** — Electron `contextBridge` / `contextIsolation: true`, no direct Node.js access in renderer\n\n### Report Export Formats\n- **JSON** — machine-readable analysis data\n- **HTML** — premium dark-theme interactive report with embedded CSS, Project Health Score, and all findings — shareable as a single file\n- **CSV** — spreadsheet-compatible data export\n- **PDF** — professional A4 PDF generated via native Electron `printToPDF` — no printer required, works without a print dialog\n- **SARIF 2.1.0** — Static Analysis Results Interchange Format; import directly into GitHub Code Scanning, Azure DevOps, VS Code SARIF Viewer, and CI/CD pipelines\n\nAll formats trigger the native OS **Save File dialog** via Electron IPC — no browser download workarounds.\n\n### Project Health Score\nAfter every scan the sidebar displays a live **Health Score** ring: **A** (90–100) → **B** (75–89) → **C** (55–74) → **D** (35–54) → **F** (<35). Score is calculated from issue penalty points weighted by severity and confidence — gives an instant at-a-glance quality grade for the entire project.\n\n### Mark as False Positive\nEvery issue card has a **\"Mark as False Positive\"** button. Clicking it copies the exact suppress comment for that line to the clipboard — paste it above the flagged code to silence the finding in future scans. Works for all 6 detectors.\n\n### Per-Project Config — `.junksweeper.json`\nDrop a `.junksweeper.json` file in your project root to override scan behaviour without touching the app:\n```json\n{\n  \"minConfidence\": 0.5,\n  \"ignorePatterns\": [\"node_modules/**\", \"dist/**\"],\n  \"detectors\": { \"code_quality\": false },\n  \"excludePatterns\": [\"*.test.js\"]\n}\n```\n\n### Severity Filter Chips — Issues & Security Tabs\nBoth the **Code Issues** tab and the **Security Issues** tab have filter chips (ALL / HIGH / MEDIUM / LOW for junk; ALL / CRITICAL / HIGH / MEDIUM / LOW for security) that instantly narrow the visible findings.\n\n### Dual Interface\n- **Desktop App (Electron)** — split-layout dashboard with live terminal, issue browser, code snippets, and project map\n- **CLI Tool** — `junk-sweeper-cli` for CI/CD pipelines\n\n---\n## Installation\n\n\n\n---\n\n## Usage\n\n### Desktop Application\n\n#### Scan for Junk & Code Quality Issues\n1. App launches with animated **Splash Screen** (security gateway initialisation)\n2. Click **SELECT FOLDER** → choose target directory\n3. Click **START SCAN** → monitor Live Terminal for real-time progress\n4. Browse detected issues in the **Code Issues** tab\n\n#### Scan for Security Vulnerabilities (SAST)\n1. Select a folder (same or different project)\n2. Click **SCAN SECURITY** → dedicated SAST Worker Thread runs independently\n3. Security findings appear in the **Security Issues** tab with level, severity, and code snippet\n4. Use the **sidebar severity badges** (L1–L6) to filter findings — click the same badge again to clear the filter\n\n#### View Analysis Results\n- **Live Terminal** — real-time scan progress and status messages\n- **Code Issues** — searchable, filterable list of all detected problems with file, line, confidence score, and inline code snippet\n\n#### Project Map Monitor\n1. Click **PROJECT MAP** to open the map window any time (even before scanning)\n2. Nodes represent files; edges represent `require()`, `import`, `<script src>`, `loadFile()`, IPC channels, etc.\n3. Node color: **Green** = clean, **Amber** = 1–2 issues, **Red** = 3+ issues, **Purple** = npm package, **Cyan** = IPC/bridge\n4. **Layout Memory**: node positions save automatically on drag; use the hamburger menu (☰) to Save / Copy / Paste / Reset layout\n5. **Bidirectional linking**: click the PIN icon on any issue card -> map focuses that node; click a node in the map -> Issues list filters to that file\n6. Hover a node to see full path and issue count; click to open its source code in the side panel\n7. Use **Export → Save as JSON** to produce a portable workflow file that includes full render context\n8. Use **Import** in map window to load workflow JSON back (desktop) or into future mobile map clients\n\n#### Export Report\n1. Click **EXPORT REPORT** → select **JSON**, **HTML**, **CSV**, or **PDF**\n2. The native OS Save dialog opens — choose your location and filename\n3. File is written directly by the Electron main process (no browser sandbox limitations)\n\n---\n\n## Security Architecture\n\n### 7-Layer Protection Stack\n1. **Path Validation** — prevents directory traversal attacks (`../` etc.)\n2. **File Type Whitelist** — only approved code file extensions are analysed\n3. **Authentication Layer** — validates user access before operations\n4. **Permission System** — checks read rights before file access\n5. **Operation Audit Logging** — complete trail of all IPC actions\n6. **Rate Limiting** — prevents scan-loop / DoS abuse\n7. **Sandbox Isolation** — Electron `contextIsolation: true`, `sandbox: true`, `nodeIntegration: false`\n\n### Confidence Levels\n- **High (95%+)** — highly reliable, recommended for automated pipelines\n- **Medium (50–95%)** — requires manual verification\n- **Low (<50%)** — likely false positives, informational only\n\n---\n\n## Example Output\n\n### Live Terminal\n```\n[init] System initialized. Awaiting scan command...\n[info] Scan started for directory: C:\\projects\\myapp\n[info] Analyzing files (5 of 247)...\n[success] Scan complete. Found 47 issues.\n[success] High confidence: 34\n[success] Medium confidence: 10\n[success] Low confidence: 3\n```\n\n### Analysis Report (JSON)\n```json\n{\n  \"scanDate\": \"2026-03-08T10:30:00Z\",\n  \"targetPath\": \"./src\",\n  \"totalIssuesFound\": 47,\n  \"confidenceBreakdown\": { \"high\": 34, \"medium\": 10, \"low\": 3 },\n  \"issues\": [\n    {\n      \"file\": \"src/app.js\",\n      \"line\": 42,\n      \"type\": \"unused_variable\",\n      \"message\": \"Variable 'tempVar' is declared but never used\",\n      \"confidence\": 0.96,\n      \"codeSnippet\": \"const tempVar = calculateValue();\"\n    }\n  ]\n}\n```\n\n---\n\n## Configuration\n\n### `.junksweeper.json` (optional, place in project root)\n```json\n{\n  \"minConfidence\": 0.5,\n  \"languages\": [\"js\", \"ts\", \"py\"],\n  \"ignorePatterns\": [\n    \"node_modules/**\",\n    \"dist/**\",\n    \".git/**\",\n    \"test/**\"\n  ],\n  \"maxScanDepth\": 50,\n  \"maxPathLength\": 260\n}\n```\n\n---\n\n## Project Structure\n\n```\nchahuadev-junk-sweeper/\n├── main.js                      # Electron main process — IPC handlers, window management, startup watchdog\n├── preload.js                   # Secure contextBridge IPC gateway for all windows\n├── index.html                   # Main UI — split-layout dashboard (Terminal / Issues / Project Map tabs)\n├── splash.html                  # Animated splash screen with preload bridge retry loop\n├── map-monitor.html             # Interactive dependency graph (ELK layered, n8n-style, Layout Memory)\n├── junk-sweeper-cli.js          # CLI entry point\n├── checksums.json               # Integrity checksums (production)\n├── backend/\n│   └── utils/\n│       ├── project-inspector.js          # Dependency graph engine (AST + HTML/CSS/IPC)\n│       ├── project-inspector-ipc.js      # IPC bridge for inspector\n│       ├── inspector-worker.js           # Worker thread for dependency graph\n│       ├── junk-scanner-worker.js        # Worker thread for junk/code-quality scan\n│       └── security-scanner-worker.js   # Worker thread for SAST security scan\n├── engines/\n│   ├── engine-dispatcher.js          # Orchestrates all scan engines (JS + subprocess engines)\n│   ├── engine-registry.js            # Discovers engines via manifest.json scan\n│   ├── subprocess-bridge.js          # Generic OS-aware subprocess runner\n│   ├── project-mapper.js             # Polyglot import extractor (Python, C#, HTML)\n│   ├── js_scanner/\n│   │   ├── junk-detector.js              # Main JS/TS detection orchestrator (6 detectors)\n│   │   └── js-ts/\n│   │       ├── ast-unused-variables-detector.js\n│   │       ├── ast-unused-imports-detector.js\n│   │       ├── ast-dead-code-detector.js\n│   │       ├── ast-duplicate-functions-detector.js\n│   │       ├── ast-silent-bug-detector.js       # 8 silent-bug patterns\n│   │       ├── ast-code-quality-detector.js     # 10 code-quality patterns\n│   │       └── ast-security-detector.js         # SAST L1–L6\n│   ├── py_scanner/\n│   │   ├── manifest.json                 # runtime: python\n│   │   ├── main_json.py                  # Python coordinator (subprocess entry)\n│   │   ├── engine.py\n│   │   ├── models.py\n│   │   ├── ast_map.py\n│   │   └── detector_*.py                 # 7 Python detectors\n│   ├── cs_scanner/\n│   │   ├── manifest.json                 # runtime: dotnet, entry: Program.cs\n│   │   ├── cs_scanner.csproj             # .NET 10 + Microsoft.CodeAnalysis.CSharp\n│   │   ├── Program.cs                    # C# coordinator (Roslyn AST)\n│   │   └── cs/\n│   │       ├── AstSecurityDetector.cs\n│   │       ├── AstDeadCodeDetector.cs\n│   │       ├── AstUnusedUsingsDetector.cs\n│   │       ├── AstCodeQualityDetector.cs\n│   │       ├── AstSilentBugDetector.cs\n│   │       └── Issue.cs\n│   └── java_scanner/\n│       ├── manifest.json                 # runtime: java, --source 11\n│       └── Main.java                     # [IN DEV] กำลังพัฒนา — basic structural scanner\n├── security/\n│   └── security-validator.js        # Unified security gateway + runtime validation\n├── icons/\n└── vendor/\n    ├── elkjs/                       # Bundled ELK layered graph layout\n    └── vis-network.min.js           # Bundled offline vis-network\n```\n\n---\n\n## Key Technologies\n\n| Technology | Role |\n|---|---|\n| Electron 40 | Desktop app framework |\n| vis-network 9 | Interactive dependency graph |\n| elkjs | ELK layered graph layout (replaced dagre) |\n| @babel/parser + @babel/traverse | JS/TS/JSX/TSX AST parsing and traversal (6 detectors) |\n| Python 3.8+ stdlib ast | Python AST via subprocess (7 detectors) |\n| Microsoft.CodeAnalysis.CSharp 4.12 | Roslyn C# AST via subprocess (5 detectors) |\n| Java --source 11 | Java structural scanner ([IN DEV] กำลังพัฒนา) |\n| @swc/core | High-speed JS/TS compilation & analysis |\n| parse5 | HTML parser (script/link dependency extraction) |\n| esquery | AST query engine |\n| estraverse | AST traversal utility |\n| jscpd | Duplicate code detection support |\n| typescript | TypeScript compiler API |\n\n---\n\n## Changelog\n\n### v1.0.0 — Initial Release\n- Read-only AST analysis, JSON/HTML/CSV export, Project Map Monitor, animated splash screen\n- IPC dependency graph, Layout Memory (save/load/copy/reset)\n- 5 detectors: Unused Variables, Unused Imports, Dead Code, Duplicate Functions, Silent Bugs\n- 7-Layer Security Gateway: path validation, file-type whitelist, auth, permissions, audit log, rate limiter, sandbox\n- SHA-256 checksum integrity verification on every launch\n- One-Click VS Code Go-to-Line integration\n- Worker Thread architecture — UI remains responsive during large scans\n\n### v1.0.1 — AST Recommendations & Code Quality\n- **6th detector activated:** `ast-code-quality-detector.js` — 10 patterns including `debugger`, `eval`, NaN comparison, assignment-in-condition, `parseInt` without radix, `var` declarations, `console.*`, prototype mutation, overly long functions, and TODO/FIXME markers\n- **Live AST-driven recommendations** across all 6 detectors — every finding now shows the actual code line and real variable/function names extracted from the AST, plus a concrete before/after fix example. No more hardcoded template strings.\n- **Silent Bugs expanded to 8 patterns:** added Naked `JSON.parse` (no try/catch) and Await-in-Loop (serial awaits inside `for`/`forEach`)\n- **Collapsible Node Status legend** in Project Map — click to collapse/expand; state persists in `localStorage`\n- Terminal boot sequence now shows all 7 security layers and 6 active detectors on startup\n\n### v1.0.2 — SAST Security Scanner & Premium Export\n- **SAST Security Scanner** — dedicated **SCAN SECURITY** button; runs `ast-security-detector.js` (6-level L1–L6) in a separate Worker Thread independent of junk analysis\n- **Security Issues Tab** — severity-tagged findings (L1 Critical → L6 Low) with code snippet, file, and line; searchable list\n- **Security Statistics Sidebar** — per-severity issue count with toggleable severity filter (click badge to filter, click again to clear)\n- **Map Monitor security count** — total security findings shown in the stats bar of the dependency graph\n- **Mutual-exclusion scans** — switching between Junk Scan and Security Scan automatically clears the previous result and UI\n- **PDF Export** — premium A4 PDF via Electron `webContents.printToPDF` with dark-theme embedded CSS; no printer needed\n- **Premium HTML Export** — single-file shareable dark-theme report with all findings and embedded styles\n- **Native Save Dialog** — all 4 export formats (JSON/HTML/CSV/PDF) use `dialog.showSaveDialog` via IPC — bypasses Electron renderer sandbox limitations\n- **Security findings export** — Export Report works after either Junk Scan or Security Scan\n\n### v1.0.3 — Health Score, SARIF, Config & QoL\n- **Project Health Score** — A–F grade ring displayed in the sidebar after every scan; penalty-weighted by severity and confidence\n- **SARIF 2.1.0 Export** — import into GitHub Code Scanning, Azure DevOps, VS Code SARIF Viewer, and any SARIF-compatible CI tool\n- **HTML Report includes Health Score** — exported HTML report embeds the current grade alongside all findings\n- **Mark as False Positive** — one-click button on each issue card copies the exact suppress comment to clipboard; paste above the flagged code to silence it in future scans\n- **`.junksweeper.json` per-project config** — drop a config file in project root to override `minConfidence`, `ignorePatterns`, `detectors` toggles, and `excludePatterns` without touching the app\n- **Issues tab severity chips** — ALL / HIGH / MEDIUM / LOW filter chips for instant narrowing of the junk issues list\n\n### v1.0.4 — Security UX, Node Status Legend & Graph Export\n- **Security tab severity chips** — ALL / CRITICAL / HIGH / MEDIUM / LOW chips in the Security Issues tab; sync with sidebar badge filter clicks\n- **Security WARN-N badge repositioned** — security badge on map cards moved to mid-right above the Electron role badge; no longer obstructs role label\n- **Node Status legend** — legend section renamed and reorganised: Clean / Minor / Critical / npm / Gateway Box with accurate colour coding\n- **`execFile` shell injection fix** in `main.js` — VS Code Go-to-Line now uses `execFile` with array args instead of `exec()` with shell string\n\n### v1.0.5 — Standalone Map Import + Portable Workflow Payload\n- **Map window launch without scan** — open Project Map in import-only mode and load a workflow JSON directly\n- **Fresh scan map window behavior** — after scan, map opens as a fresh scan window while import window remains usable\n- **Portable workflow JSON schema v2** — export now embeds complete map payload for cross-platform rendering:\n  - raw graph (`nodes`, `edges`, `issueLinesByFile`, scan metadata)\n  - layout state (`positions`, collapsed folder state)\n  - view state (`zoom`, `pan`, edge routing style)\n  - render payload (node SVG data URIs, ghost variants, tooltip HTML, accent colors)\n- **Backward compatible import** — map importer supports both new portable payload and legacy workflow JSON\n---\n## License\n\nNon-Commercial & Acceptable Use — See [LICENSE](LICENSE)\n\n---\n\n## Support\n\n- Email: chahuadev@gmail.com\n- Website: https://chahuadev.com\n- GitHub Issues: Report bugs and feature requests\n- Documentation: See [./docs/](docs/)\n- Dataset / Model Hub: [huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper](https://huggingface.co/datasets/chahuadev/chahuadev-junk-sweeper)\n\n---\n\n*Made by Chahuadev | Security-First Code Analysis Tools*\n## 💖 Support the Project\nChahuadev tools are 100% free and open-source. If this project helped you save time, please consider buying me a coffee to help keep the servers running!\n\n<a href=\"https://www.buymeacoffee.com/chahuadevm\" target=\"_blank\"><img src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" style=\"height: 60px !important;width: 217px !important;\" ></a>\n","readmeFilename":"README.md"}