{"_id":"@alint-js/plugin-simplicity","_rev":"31-e721ff0a2571df3e9e5cd19b59cc7d49","name":"@alint-js/plugin-simplicity","dist-tags":{"latest":"0.7.1"},"versions":{"0.0.22":{"name":"@alint-js/plugin-simplicity","version":"0.0.22","_id":"@alint-js/plugin-simplicity@0.0.22","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"7622cb71200abfe9af80121eea1894978a1e89d7","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.22.tgz","fileCount":4,"integrity":"sha512-1hEa/gOgQzaLSn92GfHE7X9QUyBsbW2G585EqE0k9WajEVxz7fkaKpLmOeJC0GkEO2oJtNvhezJE/LdIR/Ax3w==","signatures":[{"sig":"MEUCIE4HYePpM1bTNPSSLWTWqQViIkGyurpdTQfjofVtZRjQAiEA15uMC0CemzqRfSo/Yig7Z4ltTPDyquvwDZuRWgcuVYM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77452},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"pathe":"^2.0.3","valibot":"^1.4.1","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.18","@alint-js/core":"0.0.22","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.22"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.3","typescript":"^6.0.3","@alint-js/agent-apeira":"0.0.22"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.22_1783963142093_0.14000024004387157","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"@alint-js/plugin-simplicity","version":"0.0.23","_id":"@alint-js/plugin-simplicity@0.0.23","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"675ab48fbb26edc65cb913b5060fb2e1eededac1","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.23.tgz","fileCount":4,"integrity":"sha512-f8MLmlXCnqs7L/PwaNHnLet7t/qBKy04nSN4+B6M6mtfDW071Pxr9FYc2B2XvOqnR3jsCj5qXLIJZHfTvgjMBg==","signatures":[{"sig":"MEYCIQDmhDTXL9BGE2DXxaVchFM3MXn/+lp56dyPDk6lkMmAIgIhAI/O6Y3VU+ODmAIdaq6hvEYa6SRhDeki3HXAMJLrGTgF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77408},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"pathe":"^2.0.3","valibot":"^1.4.1","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.18","@alint-js/core":"0.0.23","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.23"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.3","typescript":"^6.0.3","@alint-js/agent-apeira":"0.0.23"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.23_1784038884595_0.9181523817895758","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"@alint-js/plugin-simplicity","version":"0.0.24","_id":"@alint-js/plugin-simplicity@0.0.24","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"b6f8cf06b1bd8306042f01f6bb0041c4e9637104","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.24.tgz","fileCount":4,"integrity":"sha512-78Du5qLgrVoL0/Q2BGx3elEwVWYM0o6moVj/os32NC1qJEiaX+jlrxocOK4LqWdS/8MWmGalw5Oyr1lf1hxDrQ==","signatures":[{"sig":"MEYCIQC1Lw3PLe86hqRchOF22jbPwca8l3sEFLJapoXfLcmGCQIhAJh3px/YEfQgVMCLwR2V4v5TYtd21YM7+Eg6lgUEh8f3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77408},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"pathe":"^2.0.3","valibot":"^1.4.1","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.18","@alint-js/core":"0.0.24","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.24"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.3","typescript":"^6.0.3","@alint-js/agent-apeira":"0.0.24"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.24_1784039793449_0.8605282088220436","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"@alint-js/plugin-simplicity","version":"0.0.25","_id":"@alint-js/plugin-simplicity@0.0.25","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"12a23ffc724435f557303225b930fc5e4d81d10e","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.25.tgz","fileCount":4,"integrity":"sha512-9L25g6ybI4lIZq5uBA3qGXA+RcipzwwgPyCklJQdzZ0tjNhzlLc9B2J58HUI0CVPhDq6TiR/ceINqFIsakFOvQ==","signatures":[{"sig":"MEUCIAzwmlTqA02K3rDjCmKFosCHJlxjODnAgOXWrzlDdbN0AiEA1k12Ujve1cvcfJ+L2Zt/7wU6CbfMrgNdZ6jq2Fzb464=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77408},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"pathe":"^2.0.3","valibot":"^1.4.1","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.18","@alint-js/core":"0.0.25","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.3","typescript":"^6.0.3","@alint-js/agent-apeira":"0.0.25"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.25_1784043617926_0.7862877305762084","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"@alint-js/plugin-simplicity","version":"0.0.27","_id":"@alint-js/plugin-simplicity@0.0.27","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"6429e0297adb407f95dc12b13606d95509192e39","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.27.tgz","fileCount":4,"integrity":"sha512-WJK15R8vluiOGOlFQPsLV8TYUm5BKhaqaTOyOpob9/gukvOAjB82r57AAo7RPobRC1vyrcuENX7s0lHOsllPCw==","signatures":[{"sig":"MEUCIQDFEIGZi4gQDAs07Aft+vOoL5FbQ/BUWGWiSCCGXsTjwgIgWqQ2boF8/8p1t1O1s43Vk2GT2OmIHpPXn0B8niZipgs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77432},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"pathe":"^2.0.3","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.18","@alint-js/core":"0.0.27","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.27"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.8","typescript":"^6.0.3","@alint-js/agent-apeira":"0.0.27"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.27_1784146892526_0.44126276192977865","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"@alint-js/plugin-simplicity","version":"0.0.28","_id":"@alint-js/plugin-simplicity@0.0.28","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"1a32adc2c2eee32e014473e9361835b156bf73b4","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.28.tgz","fileCount":4,"integrity":"sha512-R+MiJkPFTG1pwFQDZKZHDTRffRT3ssqcgGK5r1JQfaRse3f9Fuv3GzKlLO4ttU48bO6L5pG9tj3eDFPbdz9ORg==","signatures":[{"sig":"MEUCIQC20gcQwawPqoBBmnO1Wvqky1nVtZg35AYIu4xULRSKGQIgHP8jdiO9BcWoGlXqLavU+h9EQyxdJShcL90KlVj8yt8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77432},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","dependencies":{"pathe":"^2.0.3","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.18","@alint-js/core":"0.0.28","web-tree-sitter":"^0.24.7","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.28"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.8","typescript":"^6.0.3","@alint-js/agent-apeira":"0.0.28"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.28_1784147258727_0.7581775935226429","host":"s3://npm-registry-packages-npm-production"}},"0.0.29":{"name":"@alint-js/plugin-simplicity","version":"0.0.29","_id":"@alint-js/plugin-simplicity@0.0.29","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"71d6c45c9cec3e48e75af6cf277539664fe25664","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.29.tgz","fileCount":14,"integrity":"sha512-RmaMpp29OnmjCiNCl58Ekq3mi1J5m5/ezNgsDj87c4jV1B26Ou3VG6BDf52mCM8VhdtEpzk56ZEnnYRmgJ4ozg==","signatures":[{"sig":"MEQCICPxA385q53WHq5M7s/5Cz/aNmON4ePOrVPyjLa8LpyrAiBeoNxb8sQ0jeA0pCQ7PrdaNju4dkw+DwpgOfFQsz5KFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4241432},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.18","typescript":"^6.0.3","@alint-js/core":"0.0.29","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.0.29","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.29","@alint-js/agent-apeira":"0.0.29"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.29_1784149228559_0.09493912538356497","host":"s3://npm-registry-packages-npm-production"}},"0.0.30":{"name":"@alint-js/plugin-simplicity","version":"0.0.30","_id":"@alint-js/plugin-simplicity@0.0.30","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"078acdbd00bceecd3b9fdff0bcd7e6085e10cfbf","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.30.tgz","fileCount":14,"integrity":"sha512-sm4NE13QZXHqun6jQVmebBY/McKl/IfEiadrLLFbROZExK7zUDOk2rllKtPP5ZwrLlKDZbOtV//dn2+8TYYUow==","signatures":[{"sig":"MEQCIEJs2OIx7YePotDqx8E404MTXtHGjiA39uClR/kN99TvAiAkLxXDOdRr0wE+ZagCWa/wmSSzMHc2F1M/nPZF2YuoOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4242125},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.0.30","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.0.30","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.30","@alint-js/agent-apeira":"0.0.30"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.30_1784197322741_0.6759969823651246","host":"s3://npm-registry-packages-npm-production"}},"0.0.31":{"name":"@alint-js/plugin-simplicity","version":"0.0.31","_id":"@alint-js/plugin-simplicity@0.0.31","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"1093a71ef3e3d2adc9195f1b2b2cbbc877532c42","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.31.tgz","fileCount":14,"integrity":"sha512-ARwTpY9Hu2xE5AR/NvlnVKo8qQmAGbB/hYtd8sytt7bgz0c6SV0ss/2t6iLTc6ZpLqs1PnRk5IHBLSY5unNv+g==","signatures":[{"sig":"MEYCIQCn/grlZ3OLaouAGKaRiFjjlcC/jDvZtUl+EQ3sgjdUJwIhAL9qYFmLBqjvZqhevCG7w7zmHCDzQXic9FKKJpONiD/s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4242125},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.0.31","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.0.31","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.31","@alint-js/agent-apeira":"0.0.31"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.31_1784197842584_0.27564699600960796","host":"s3://npm-registry-packages-npm-production"}},"0.0.32":{"name":"@alint-js/plugin-simplicity","version":"0.0.32","_id":"@alint-js/plugin-simplicity@0.0.32","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"0f245ed52390d12739460bd1c65f104cd286a988","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.32.tgz","fileCount":14,"integrity":"sha512-Zm85UDmrnOnkLd4OonU6yhLT0xKVcZdrcX4iWU1F1sAOc7SF29C6qaZzWhz0FpLcDclk7K+N9AoY6UGBMhHHEg==","signatures":[{"sig":"MEQCIAo4Ch6Pfbke3ev34apEMVj4J7GO7VLJRR8DoYP08wjQAiBiPV8xtJkUcVrSfYNksesNtL+SKK+kHzYQRdJoLIR6ZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4242125},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.0.32","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.0.32","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.32","@alint-js/agent-apeira":"0.0.32"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.32_1784200739017_0.5852622299307333","host":"s3://npm-registry-packages-npm-production"}},"0.0.33":{"name":"@alint-js/plugin-simplicity","version":"0.0.33","_id":"@alint-js/plugin-simplicity@0.0.33","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"f9b22b23f9c435132388acf5b52ada4aad393f45","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.33.tgz","fileCount":14,"integrity":"sha512-xkmE3N6LqRRtpcE2ustOB5CykAJSWE0o0xAVjr7m5YDNkidMVEr/O7Y5jtukVBmo4wINfUZqAW2PYo07BW7kAg==","signatures":[{"sig":"MEYCIQCOkqA8tsC5CxeMycdHNYrS/VC9KGAhtXWN/Ht9ZKn3nQIhANujq8yR42UFAmHiwdnR18gAgX09kN1kxswXKHfSPZ3F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4242125},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.0.33","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.0.33","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.33","@alint-js/agent-apeira":"0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.33_1784210141867_0.6477662858662985","host":"s3://npm-registry-packages-npm-production"}},"0.0.34":{"name":"@alint-js/plugin-simplicity","version":"0.0.34","_id":"@alint-js/plugin-simplicity@0.0.34","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"a59d698c5538165481ce4d3dc1d0dfa495aaa4fc","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.34.tgz","fileCount":14,"integrity":"sha512-Ke6oMeBq/a2LfxBIwC5qsGiuMql7D9XOYqGek2xp/1NhpWJnYEkjFZdLHJ1HmRuoX79LtmKoVOm6MYurEuFzpA==","signatures":[{"sig":"MEUCIQCOAwNykHDPqYaPXvc1j9IN46E3MxFr61lJm9pxiDph2gIgbIeCuRHEdQ7sR8IFt/ZdBIW/LXQ9iJcPK1lJjJBSfMk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4257075},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.0.34","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.0.34","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.34","@alint-js/agent-apeira":"0.0.34"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.34_1784269139348_0.014970754869926495","host":"s3://npm-registry-packages-npm-production"}},"0.0.35":{"name":"@alint-js/plugin-simplicity","version":"0.0.35","_id":"@alint-js/plugin-simplicity@0.0.35","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"b32d8f218af4d3dbda1da7127d5d4daa93605ea9","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.35.tgz","fileCount":14,"integrity":"sha512-oNMvU+mwzXJ9eOnoFhtq8uKpZAr2R2MmO4XM+J/jl+ENnjJ6Jb80BKhIl+v+K+gJ15FyyTdyxLKTzWoEiPqh/w==","signatures":[{"sig":"MEQCIGaLrCCUdCwKUNQ/L/NMK34SE/7QZx5AsUgetoEPIYe+AiAQsBlHTXEJfVGlaGNTGrRpOXyudg1YjSFKMb7NQuK7zA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4257075},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.0.35","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.0.35","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.35","@alint-js/agent-apeira":"0.0.35"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.35_1784308001473_0.6886057213745826","host":"s3://npm-registry-packages-npm-production"}},"0.0.36":{"name":"@alint-js/plugin-simplicity","version":"0.0.36","_id":"@alint-js/plugin-simplicity@0.0.36","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"b90a535f8daab036df2c43426a6410764c32ddeb","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.36.tgz","fileCount":14,"integrity":"sha512-RGQgzkVBUb8qVJuVfcrCoOmfiXWbwCIT8O7ZytPQLcRuguDqL6hdFhW4RvfxB8ZrNNcz9pIUmcjRRy80OLElZA==","signatures":[{"sig":"MEUCIBgjYU6P/iHzxWvtCuZrHpfZZeZQjJOqWpbCF+MMs608AiEA5a/THBy0ahrsz2P3+Bdj4FdK/8+zxpo1mDbIAMPVKi4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4257075},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.0.36","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.0.36","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.36","@alint-js/agent-apeira":"0.0.36"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.36_1784342574107_0.20110307295904906","host":"s3://npm-registry-packages-npm-production"}},"0.0.37":{"name":"@alint-js/plugin-simplicity","version":"0.0.37","_id":"@alint-js/plugin-simplicity@0.0.37","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"fb1ec50ef1ce61cfebe01808c7e52302e7dfc204","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.37.tgz","fileCount":14,"integrity":"sha512-y1B3O5Ppoa/wIHdnbIP90qrI4r1eIwzXnlczmOcActFi4ejw33pUPzP9s/90Xd4hNY142EbRWCIxqDEOUZgsEw==","signatures":[{"sig":"MEQCIB0Gl2A0fOLhhhRrT4l3PBqL8lqvtFYh0iVETCRMhjbmAiBqLxH4CYRv5q0qSrQPLlKmjFjM6hvdb4gL2bC79StIpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4257075},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.0.37","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.0.37","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.37","@alint-js/agent-apeira":"0.0.37"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.37_1784483755563_0.17413026060105974","host":"s3://npm-registry-packages-npm-production"}},"0.0.38":{"name":"@alint-js/plugin-simplicity","version":"0.0.38","_id":"@alint-js/plugin-simplicity@0.0.38","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"fe9317ae154f30dbad05211f456020ac66830758","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.0.38.tgz","fileCount":14,"integrity":"sha512-CiiURM4cZhQxXagcfuyRoJ2Xz3HznJ8X2V/KSA48GlJIv1cHhi3eWGh3SkPkYLacdlwhC3AeaAv+1j4YhgZA7w==","signatures":[{"sig":"MEUCICVOBaHq00sVHVHfTqzkelT611jbRDXxogZ3PCsQX94VAiEApF6gHzgdZkJwJmdp4Kvpebl4qMxoE6CQ0xhSMXAWO4A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4257075},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.0.38","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.0.38","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.0.38","@alint-js/agent-apeira":"0.0.38"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.0.38_1784533623611_0.8213226885024538","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@alint-js/plugin-simplicity","version":"0.1.0","_id":"@alint-js/plugin-simplicity@0.1.0","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"2dffc223ed1bcd2e8396d2644c420e55694f60ac","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.1.0.tgz","fileCount":14,"integrity":"sha512-ySJ6ZurzlFOa6HivlBrX/x6a3fkcg5PwnL4rbw+B9W4PJMd5+mqi9xVn0pVPlHiVQpanJ83sGJXdyaw9tnghtA==","signatures":[{"sig":"MEQCICDCWq+MJGBb5whBWLZpxuZqLfiPo0/6DC9DDHJ8XTdCAiAuYuinpTYWQfxXardCRoMjYKnDNiApGCd90Mfxa2D94A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4278824},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.1.0","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.1.0","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.1.0","@alint-js/agent-apeira":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.1.0_1784739318093_0.9548425070148492","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alint-js/plugin-simplicity","version":"0.1.1","_id":"@alint-js/plugin-simplicity@0.1.1","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"3f84318fe5f7d91a5032bde6136955de097b1c6c","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.1.1.tgz","fileCount":14,"integrity":"sha512-IH+Gb06G8qJ/ia+QYGkwg/8w0j1UXziGnUv/cHNbRexpvzV/ODSP62l7xxcyTvlEKWGWffHmbuFuCT4V6dcjnw==","signatures":[{"sig":"MEUCIG+cp56TP2goYrRXJ+02YzPBXDcjr8/YUmPyibSaUrpQAiEA6L4Op13R201BXo7QmA9lAX+HrkasLGDK9d2GB9WjVRs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4279096},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.1.1","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.1.1","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.1.1","@alint-js/agent-apeira":"0.1.1"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.1.1_1784779362108_0.571017564476235","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@alint-js/plugin-simplicity","version":"0.1.2","_id":"@alint-js/plugin-simplicity@0.1.2","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"ba8392e9980f6bbcc2bb39a8bc9e5c9807d1d3ef","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.1.2.tgz","fileCount":14,"integrity":"sha512-K+Z9yWO5v59wRkMnx6rHwr4FSIVEySdM9j9FzIsHGjk96T6BFGuJZUO3m+dJH3YY5/eMj/YdI3ZkEmr2Y7II0g==","signatures":[{"sig":"MEUCIGTFwFfWGHYa+2rvbyjwy0qtIGlRBeiKkEBPRk7/gxEsAiEApKrxRbfkpV4BbRNAA+Z8OY9SfTHZPOE5k7nLtGXM2V8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4279096},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.1.2","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.1.2","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.1.2","@alint-js/agent-apeira":"0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.1.2_1784783181447_0.12512171847463183","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@alint-js/plugin-simplicity","version":"0.1.3","_id":"@alint-js/plugin-simplicity@0.1.3","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"dc5c1f6d8f67ecf8d4d0ee8b589bdef363333e90","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.1.3.tgz","fileCount":14,"integrity":"sha512-FdMDk3Gw66uxyoPubwbRI+HI/9e5ABxz9Xc6+LwYM24JT1txvq+fDJQoXy9/oHVEugXjtA+hXwJko3FSR4C/DA==","signatures":[{"sig":"MEUCIQCZPbPn/FOb90tUGU5b0SXSnYyX5lziY2lDNmKMGrNk7gIgJE0Z7evKAUL4NrjfEjLVniX+RnDMv+9YlA/7I8RMeos=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4279096},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.1.3","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.1.3","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.1.3","@alint-js/agent-apeira":"0.1.3"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.1.3_1784784549492_0.7123197290187897","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@alint-js/plugin-simplicity","version":"0.1.4","_id":"@alint-js/plugin-simplicity@0.1.4","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"e17ba79fb19ef329194201170fe656bed6db1a1a","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.1.4.tgz","fileCount":15,"integrity":"sha512-joRIA1Dhp0QGLj9ZiH435dFinA2iXz796ANayDX3d4WZZMx88FRuxXhSFGb3mlH6LxBA5H4WWoyY4DOW2WVJ2A==","signatures":[{"sig":"MEQCIH8LHV5O8sFutoKY91kicX4PZNfaW4hIGJztQhBfKbrFAiA4V8rkLVQfJM2U+pHjHmTB72dwYwaayxDumAYTtLhTPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4280171},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.1.4","web-tree-sitter":"^0.24.7","@alint-js/plugin":"0.1.4","tree-sitter-wasms":"^0.1.13","@alint-js/tools-fs":"0.1.4","@alint-js/agent-apeira":"0.1.4"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.1.4_1784818714122_0.6164629312114436","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@alint-js/plugin-simplicity","version":"0.1.5","_id":"@alint-js/plugin-simplicity@0.1.5","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"8e2f919da22b9f72b6d9da4fb200ecb83bebefc3","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.1.5.tgz","fileCount":15,"integrity":"sha512-yL74G2LX1XqHPQZy8TyIxK2y2D5cm0YcvWtD16txwo1WK+CC+6dwtLNPI9KGK6sBuxoF2ffs1wJ8ICVSExW7Ug==","signatures":[{"sig":"MEUCIQCm8c3+NPkmyoiUVn2v6qotMBNCBC1p0b6fGev9/btYagIgfTABmNQHYpDFRHjU/OWWsQ4orRtJ5fCkzbhItmNd2vc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4150669},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.1.5","@alint-js/plugin":"0.1.5","@alint-js/tools-fs":"0.1.5","@alint-js/languages":"0.1.5","@alint-js/agent-apeira":"0.1.5"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.1.5_1785237065695_0.06772467524370862","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alint-js/plugin-simplicity","version":"0.2.0","_id":"@alint-js/plugin-simplicity@0.2.0","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"9d28c714c86a0082d985ac1f0cf8863b52d0f224","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.2.0.tgz","fileCount":15,"integrity":"sha512-PZrCcx5JQ1XE5/im5+8mYCafbmQ2dv3UXXNrhQpKik74tNN4hcpFG0znaxbmvI5rcyLngJwwDO4Hox1tUc6GSQ==","signatures":[{"sig":"MEUCIQD0kCMiXcX8USzj8+iRASGY8fKklChykeBw9Ad20vYPoAIgb7CJmTRtHq8TMcIzATe0oT/X+IyJ1khveRM9imxsZNk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4150669},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.8","valibot":"^1.4.2","minimatch":"^10.2.5","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.2.0","@alint-js/plugin":"0.2.0","@alint-js/tools-fs":"0.2.0","@alint-js/languages":"0.2.0","@alint-js/agent-apeira":"0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.2.0_1785410240921_0.40695541394884716","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@alint-js/plugin-simplicity","version":"0.3.0","_id":"@alint-js/plugin-simplicity@0.3.0","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"cf87f8f6db5239ababdd3956d1c5f4a467126d45","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.3.0.tgz","fileCount":15,"integrity":"sha512-Bunb7odOfHZGC7SJeNSmy+RKrKcli3E5bP9Rin9kXHuC9llPIy2ZYqH+Jibme82JgiLgJB/59A2+9YxZHRqKcw==","signatures":[{"sig":"MEYCIQCDoPU+sAkIXxgvDnaRkGjOfkhEAXiiqjW+tjhogdS2EgIhAOl0qZwkAfjFURGCwSsJ8pWFJ0/BaSlPj7AHgyEDTFbv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4169062},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.14","valibot":"^1.4.2","minimatch":"^10.2.6","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.3.0","@alint-js/plugin":"0.3.0","@alint-js/tools-fs":"0.3.0","@alint-js/languages":"0.3.0","@alint-js/agent-apeira":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.3.0_1785760987811_0.6087986264414578","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@alint-js/plugin-simplicity","version":"0.3.1","_id":"@alint-js/plugin-simplicity@0.3.1","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"8bcc7d81c5d2fd55c716ee0d2b64412b1589a3f3","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.3.1.tgz","fileCount":15,"integrity":"sha512-GGrAX9N2RCz/J2hBCKtdGMRQbHsRmktSMuO57nGGnCq/3rWY7peswPw8EgWQ4KiyOei0MpeYn4ZW2pezfNgfPA==","signatures":[{"sig":"MEUCIFzcQo8dKK14k/A/QZbLCpTHyptwuH9C7Oa3dTWBLWXKAiEApe7lDIfswguiw0Y7Uc0ZljMc9LfJbQ/vwY83ZdhiV/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4169062},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.14","valibot":"^1.4.2","minimatch":"^10.2.6","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.3.1","@alint-js/plugin":"0.3.1","@alint-js/tools-fs":"0.3.1","@alint-js/languages":"0.3.1","@alint-js/agent-apeira":"0.3.1"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.3.1_1785775117065_0.8342667002002939","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@alint-js/plugin-simplicity","version":"0.3.2","_id":"@alint-js/plugin-simplicity@0.3.2","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"7eba939533c180f02a716655cce94c12ed976834","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.3.2.tgz","fileCount":15,"integrity":"sha512-/bf9E7RfEfGKQe/55aHiZm7JgNDGDPQZlqrBB5NEog+Qmpylszg+G5Mtse6K66EyVD1sBQIZ0VFzZJxTGCVs/A==","signatures":[{"sig":"MEUCIFWBTAFgi8zr1mU7j+554xxnRWrFl6JVVn4XDB1q2qDyAiEA3CN/qxlrhyBMzRQeGsIH9/3Wvt34H+gbrza1E3U4Ux0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4169062},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.14","valibot":"^1.4.2","minimatch":"^10.2.6","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.3.2","@alint-js/plugin":"0.3.2","@alint-js/tools-fs":"0.3.2","@alint-js/languages":"0.3.2","@alint-js/agent-apeira":"0.3.2"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.3.2_1785863533376_0.09480427755800491","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@alint-js/plugin-simplicity","version":"0.4.0","_id":"@alint-js/plugin-simplicity@0.4.0","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"fe9cde1ac1e59f56de7eb92b4a6377380b6a9c74","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.4.0.tgz","fileCount":15,"integrity":"sha512-WtnurMPNXadROgfGAzDg3PXpTwagrbu3u6PT+BCeUkGdjK6beB1z+PCXue+gX3xXopIR+x9kXxUBpQfTv2OAWw==","signatures":[{"sig":"MEUCIQD1Af3MHxXGj56ebphr0Q3JcyMmPWXHVM7mdC7CYLlPKAIgJJIYhVkFemSJpJW39C76QFXQnQjqJbFaao6fIoLz2bM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4169062},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.14","valibot":"^1.4.2","minimatch":"^10.2.6","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.4.0","@alint-js/plugin":"0.4.0","@alint-js/tools-fs":"0.4.0","@alint-js/languages":"0.4.0","@alint-js/agent-apeira":"0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.4.0_1786127608129_0.23319677263418526","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@alint-js/plugin-simplicity","version":"0.5.0","_id":"@alint-js/plugin-simplicity@0.5.0","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"a31b69246d89bc5e0a67550181d2430e5840c4a1","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.5.0.tgz","fileCount":20,"integrity":"sha512-kj0gChecUiIFt1nl9Ba66LqCcNQD9Tx6Ki+8iRhysoWLGcRrlD/OvHx9jdxyCRQlGKK0qZ7boSkRGBjVKZ81yQ==","signatures":[{"sig":"MEUCIQChCApGGZc+kgW70a7uUz5xE//Xe5lRaA67YCWPkzwW+AIgGAil5lr0xGbcCiHLf0U9eZgJ6RC0IUfKBgRq798ypRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4183982},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.14","valibot":"^1.4.2","minimatch":"^10.2.6","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.5.0","@alint-js/plugin":"0.5.0","@alint-js/tools-fs":"0.5.0","@alint-js/languages":"0.5.0","@alint-js/agent-apeira":"0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.5.0_1786864102155_0.7955290302191416","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@alint-js/plugin-simplicity","version":"0.6.0","keywords":["alint","lint","plugin","code-analysis","duplication","ai"],"license":"MIT","_id":"@alint-js/plugin-simplicity@0.6.0","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"a6fc607e9e79ddc72f1a356934878560563215ea","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.6.0.tgz","fileCount":20,"integrity":"sha512-tacbi9mx75oIT4zDVVdgjeyjg8cm97R4Q+Z0yZBJlNVgiZQwOW4jnIaPOPm8tPQ5tp1Fdh/25OckF9SwHuZYGw==","signatures":[{"sig":"MEUCIC22uy/lPQ6MtwOqHP8dK0zDn8zNCZwSBS2ykCwUwjsdAiEA+a+yaKLHN6K28dhsQz+aPHxqXzAHSoPAVlMHrImrids=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4184588},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"repository":{"url":"git+https://github.com/moeru-ai/alint.git","type":"git","directory":"packages/plugin-simplicity"},"description":"Model-backed alint rules for duplicated and needless helper functions","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.14","valibot":"^1.4.2","minimatch":"^10.2.6","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.6.0","@alint-js/plugin":"0.6.0","@alint-js/tools-fs":"0.6.0","@alint-js/languages":"0.6.0","@alint-js/agent-apeira":"0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.6.0_1787133864413_0.6396531633985874","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@alint-js/plugin-simplicity","version":"0.7.0","keywords":["alint","lint","plugin","code-analysis","duplication","ai"],"license":"MIT","_id":"@alint-js/plugin-simplicity@0.7.0","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"dist":{"shasum":"32199be03bfa2325a120054a9e8ec0c6f0e4acde","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.7.0.tgz","fileCount":20,"integrity":"sha512-j2eo6+yTpZs+xekMrIdIyG6mm4XzxI8W+dbSRu1fPhnjRp6cp2u8KPuheoAU0iO1frOJzVQAEMdg45jzX3N7BQ==","signatures":[{"sig":"MEYCIQCLaxcLHufI+s1HjB8t6CZcr/6ZkKCHQQ2ysE+pt6DP/wIhAP/ror7Cs4dfMU9KW2odHoLx1dPCRjMzP13u26TJYK+r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4184588},"type":"module","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"repository":{"url":"git+https://github.com/moeru-ai/alint.git","type":"git","directory":"packages/plugin-simplicity"},"description":"Model-backed alint rules for duplicated and needless helper functions","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"pathe":"^2.0.3","tsdown":"^0.22.14","valibot":"^1.4.2","minimatch":"^10.2.6","@moeru/std":"^0.1.0-beta.20","typescript":"^6.0.3","@alint-js/core":"0.7.0","@alint-js/plugin":"0.7.0","@alint-js/tools-fs":"0.7.0","@alint-js/languages":"0.7.0","@alint-js/agent-apeira":"0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-simplicity_0.7.0_1787937700044_0.31059728897260963","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@alint-js/plugin-simplicity","type":"module","version":"0.7.1","description":"Model-backed alint rules for duplicated and needless helper functions","license":"MIT","repository":{"type":"git","url":"git+https://github.com/moeru-ai/alint.git","directory":"packages/plugin-simplicity"},"keywords":["alint","lint","plugin","code-analysis","duplication","ai"],"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./package.json":"./package.json"},"devDependencies":{"@moeru/std":"^0.1.0-beta.20","minimatch":"^10.2.6","pathe":"^2.0.3","tsdown":"^0.22.14","typescript":"^6.0.3","valibot":"^1.4.2","@alint-js/agent-apeira":"0.7.1","@alint-js/core":"0.7.1","@alint-js/languages":"0.7.1","@alint-js/plugin":"0.7.1","@alint-js/tools-fs":"0.7.1"},"scripts":{"build":"tsdown","typecheck":"tsc -p tsconfig.json --noEmit"},"_nodeVersion":"24.19.0","_id":"@alint-js/plugin-simplicity@0.7.1","dist":{"integrity":"sha512-/+VFvC5slNcBeRRz1wWQUI/R8knL6U+CUk/ymR5lnN8Vyu6vQeWb4VM4TRIU8x80brmQGyv/JM8a07M3WiMmAw==","shasum":"2f1018cd1a93e716db188292178e2e283a9e6aef","tarball":"https://registry.npmjs.org/@alint-js/plugin-simplicity/-/plugin-simplicity-0.7.1.tgz","fileCount":20,"unpackedSize":4184588,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIExFaNx055Vkly709TOe2Oh0NCivbhThNeHQ4Ucph62ZAiEA1Co5a5XuDgLF4K3FMbDR1bYvJuHFkQD2rUHD6ObOt2E="}]},"_npmUser":{"name":"nekomeowww","email":"neko@ayaka.moe"},"directories":{},"maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/plugin-simplicity_0.7.1_1788006413313_0.3109234735338626"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-13T17:19:01.894Z","modified":"2026-08-29T12:26:53.642Z","0.0.22":"2026-07-13T17:19:02.219Z","0.0.23":"2026-07-14T14:21:24.748Z","0.0.24":"2026-07-14T14:36:33.625Z","0.0.25":"2026-07-14T15:40:18.068Z","0.0.27":"2026-07-15T20:21:32.669Z","0.0.28":"2026-07-15T20:27:38.915Z","0.0.29":"2026-07-15T21:00:28.757Z","0.0.30":"2026-07-16T10:22:02.925Z","0.0.31":"2026-07-16T10:30:42.755Z","0.0.32":"2026-07-16T11:18:59.198Z","0.0.33":"2026-07-16T13:55:42.059Z","0.0.34":"2026-07-17T06:18:59.535Z","0.0.35":"2026-07-17T17:06:41.640Z","0.0.36":"2026-07-18T02:42:54.304Z","0.0.37":"2026-07-19T17:55:55.726Z","0.0.38":"2026-07-20T07:47:03.791Z","0.1.0":"2026-07-22T16:55:18.259Z","0.1.1":"2026-07-23T04:02:42.275Z","0.1.2":"2026-07-23T05:06:21.647Z","0.1.3":"2026-07-23T05:29:09.659Z","0.1.4":"2026-07-23T14:58:34.306Z","0.1.5":"2026-07-28T11:11:05.890Z","0.2.0":"2026-07-30T11:17:21.090Z","0.3.0":"2026-08-03T12:43:08.001Z","0.3.1":"2026-08-03T16:38:37.265Z","0.3.2":"2026-08-04T17:12:13.621Z","0.4.0":"2026-08-07T18:33:28.324Z","0.5.0":"2026-08-16T07:08:22.319Z","0.6.0":"2026-08-19T10:04:24.654Z","0.7.0":"2026-08-28T17:21:40.255Z","0.7.1":"2026-08-29T12:26:53.487Z"},"license":"MIT","keywords":["alint","lint","plugin","code-analysis","duplication","ai"],"repository":{"type":"git","url":"git+https://github.com/moeru-ai/alint.git","directory":"packages/plugin-simplicity"},"description":"Model-backed alint rules for duplicated and needless helper functions","maintainers":[{"name":"nekomeowww","email":"neko@ayaka.moe"}],"readme":"# `@alint-js/plugin-simplicity`\n\nTell your code to **DRY — Don't Repeat Yourself**.  \nFinds small helper functions that are defined twice, or that should not exist at all.\n\nBoth rules work on **helpers**: anything with a name and a body. A function declaration,\na method, and, in TypeScript, TSX and JavaScript, an arrow function or function\nexpression bound to a name (`const parse = (text: string) => JSON.parse(text)`). That\nlast shape is how most tiny helpers are actually written, so leaving it out would hide\nexactly the code these rules look for.\n\nLanguages: TypeScript, TSX, JavaScript, Rust, Go and Python.\n\n## How it works\n\nOne index of the whole workspace, built once per run and shared by both rules. Everything\na hash can settle is settled by code. Only what is left reaches a model.\n\n```mermaid\nflowchart TB\n  subgraph idx [\"Repo index — Once per run, no token cost\"]\n    direction TB\n    files[\"Every parseable file in the workspace\"]\n    files --> parse[\"Function targets from each language\"]\n    parse --> keep{\"Small helper?<br/>within maxLines, at least minTokens\"}\n    keep -->|no| skip[\"Not indexed\"]\n    keep -->|yes| helpers[\"Indexed with its facts:<br/>exact fingerprint, alpha fingerprint,<br/>usage count, whether exported\"]\n  end\n\n  helpers --> lint[\"Files to lint\"]\n  lint --> dup\n  lint --> needless\n\n  subgraph dup [\"no-duplicated-helper\"]\n    direction TB\n    d1{\"Identical body<br/>somewhere else?\"}\n    d1 -->|yes| dr1[\"Report: also defined at ...\"]\n    d1 -->|no| d2{\"Same body, renamed?<br/>alpha-equivalent\"}\n    d2 -->|yes| dr2[\"Report: renamed copy of ...\"]\n    d2 -->|no| d3[\"Agent, holding the index as tools:<br/>search bodies, rank similar, read in full\"]\n    d3 --> dr3[\"Report: duplicates ..., and why\"]\n  end\n\n  subgraph needless [\"no-needless-helper\"]\n    direction TB\n    n1{\"Whole body is<br/>one expression?\"}\n    n1 -->|no| nx[\"Never asked about\"]\n    n1 -->|yes| n2[\"One model call per file.<br/>Usage count and exported go in<br/>as facts, not filters\"]\n    n2 --> nr[\"Report: does not earn its existence\"]\n  end\n\n  cache[(\"Cache in .alint/simplicity/<br/>a run that changed nothing costs nothing\")]\n  d3 <--> cache\n  n2 <--> cache\n\n  classDef free fill:#e8f5e9,stroke:#43a047,color:#1b5e20\n  classDef paid fill:#fff3e0,stroke:#fb8c00,color:#e65100\n  class files,parse,keep,skip,helpers,d1,d2,dr1,dr2,n1,nx free\n  class d3,dr3,n2,nr paid\n```\n\nGreen spends nothing. Orange spends model tokens, and only ever sees the helpers the\ngreen half could not settle.\n\n### The two fingerprints\n\nEvery indexed helper is hashed twice. Both hashes drop comments and collapse whitespace\nfirst, so reformatting a copy or rewording its documentation changes neither.\n\n**The exact fingerprint** hashes what is left, verbatim. Two helpers that share it are the\nsame code, character for character, once layout and comments are set aside.\n\n**The alpha fingerprint** goes one step further: every name the helper *declares* — its own\nname, its parameters, its locals — is replaced by a placeholder, in order of first\nappearance. Everything the helper merely *refers to* stays as written: the functions it\ncalls, the types it names, the properties it reads.\n\nThat split is the whole design. A copy can rename what it declares; it cannot rename what\nit refers to and still be a copy. So these two match:\n\n```ts\nfunction hasErrorCode(failure: unknown): failure is NodeJS.ErrnoException {\n  return failure instanceof Error && 'code' in failure\n}\n\nfunction isNodeError(error: unknown): error is NodeJS.ErrnoException {\n  return error instanceof Error && 'code' in error\n}\n```\n\nBoth normalize to the same thing, so the second is reported as a renamed copy of the first:\n\n```\nfunction $0($1: unknown): $1 is NodeJS.ErrnoException { return $1 instanceof Error && 'code' in $1 }\n```\n\n`Error` and `NodeJS.ErrnoException` survive, because the helper only refers to them. And\nthese two do **not** match:\n\n```ts\nexport function readName(entry: Entry): string {\n  return entry.name\n}\n\nexport function readSize(entry: Entry): number {\n  return entry.size\n}\n```\n\n`entry` is declared, so it is blinded; `name` and `size` are properties the helpers read,\nso they survive the hash and tell the two apart. A detector that blinded every identifier\ninstead — NiCad's blind renaming, PMD's `--ignore-identifiers` — collapses this pair and\nreports two unrelated accessors as copies.\n\nMatching alpha fingerprints mean the helpers are **alpha-equivalent**: identical up to\nrenaming. It is an equivalence, not a similarity score, so there is no threshold to tune\nand no false-positive rate to trade off. Everything it cannot decide is the agent's\nquestion.\n\n## Rules\n\n- **`simplicity/no-duplicated-helper`**: a small helper is defined in two or more places.\n- **`simplicity/no-needless-helper`**: a one-line helper that does not earn its existence.\n\nRule ids carry the prefix you give the plugin in `plugins`, which is `simplicity/` in\nevery example here.\n\n## `no-duplicated-helper`\n\nTwo approaches, and the AST one spends nothing.\n\nThe **AST approach** hashes. An **identical** helper is reported by code alone, and so is a\n**renamed** one: a copy that changed its own name, its parameters and its locals, but not the\nfunctions it calls, the types it names or the properties it reads. Those are the names a copy\ncannot change and stay a copy, so they are left in the hash, and they are also what keeps\n`return this.name` and `return this.size` from being mistaken for each other. This is\nalpha-equivalence, and because it is an equivalence rather than a score there is no\nthreshold to tune.\n\nEverything a hash cannot settle goes to the **agentic approach**. The agent is not handed a\nshortlist: it gets the index as tools and searches the way a reviewer would, saying what a\nhelper does, searching other bodies for that behaviour (`search_helper_bodies` looks for\n`instanceof Error`, not for names), reading the candidates in full, and deciding.\n\nA finding names the twin and the responsibility they share, and stops there:\n\n```\nHelper \"isNodeErrorCode\" duplicates \"isNodeError\" at ts/store.ts:16:\n  Both ask whether an error has a specific Node error code.\n```\n\nIt does not suggest where the shared copy should live. That decision depends on\nownership, layering and dependency direction, none of which this rule looks at; see\n`docs/simplicity-architecture.md` for the version that tried and what it produced.\n\n## `no-needless-helper`\n\nA helper earns its existence when its interface is simpler than its implementation, when\nthe name tells a reader something the body would not. This rule reports the ones that do\nnot: a body of a single expression that says what the name says, so a reader jumps to the\ndeclaration to learn nothing.\n\n```\nHelper \"parse\" does not earn its existence: Forwards to JSON.parse unchanged.\n```\n\n**It has no AST approach, and cannot have one.** A hash can prove a duplicate, because two\nidentical bodies are a fact. Nothing can prove a helper *should not exist*, because that\nis a judgement about a reader. So the deterministic half finds the helpers worth asking\nabout (one expression, no more) and gathers the facts a judgement needs: how often the\nhelper is called, and whether it is somebody's public API. Those go to the model as\n**facts, not filters**. A helper called forty times is not disqualified by code; the model\nis told the number and left to weigh it.\n\nWhat it must *not* report matters as much as what it must:\n\n- **`clamp(value, low, high)`** is short, and earns it. The name is the documentation;\n  `Math.min(Math.max(x, 0), 1)` is not.\n- **`isNodeError(error): error is ErrnoException`** is a one-line type guard. Inlined, the\n  check still runs but the call site loses the type it narrowed to.\n\nThat second case is the sharpest in the plugin: `no-duplicated-helper` must report\n`isNodeError`, because it is copied, and `no-needless-helper` must not, because it earns\nits keep. The same three lines, two rules, opposite decisions.\n\nIt costs one model call per file rather than an agent loop, because everything the\njudgement needs is already in hand and there is nothing to search for.\n\n## Usage\n\nThe rules read whole files and parse them internally, so they take plain-text targets:\n\n```js\nimport languagesPlugin from '@alint-js/languages'\nimport simplicityPlugin from '@alint-js/plugin-simplicity'\n\nimport { createApeiraAdapter } from '@alint-js/agent-apeira'\nimport { defineConfig } from '@alint-js/cli'\n\nexport default defineConfig([\n  {\n    // `no-duplicated-helper`'s agentic approach needs this. Without it, the AST approach\n    // still runs.\n    agent: createApeiraAdapter(),\n    files: ['**/*.{js,jsx,ts,tsx,mjs,cjs,mts,cts,rs,go,py}'],\n    plugins: {\n      languages: languagesPlugin,\n      simplicity: simplicityPlugin,\n    },\n    rules: {\n      'simplicity/no-duplicated-helper': 'warn',\n      'simplicity/no-needless-helper': 'warn',\n    },\n    settings: {\n      simplicity: {\n        // Test and fixture globs to leave alone.\n        ignores: ['**/*.test.ts'],\n        // False keeps the AST approach and spends no tokens at all.\n        judge: true,\n        // The small-helper threshold, in lines. Note that it *selects* small functions;\n        // every copy-paste detector uses its threshold to exclude them.\n        maxLines: 10,\n        // Content tokens a helper needs before it is worth a word. An empty function is\n        // 3 in any language; the smallest real helper is 6.\n        minTokens: 5,\n      },\n    },\n  },\n])\n```\n\n`simplicityPlugin.configs.recommended` ships the same rules and file globs, if you would\nrather not spell them out.\n\nalint rule entries carry a severity and nothing else, which is why the options live under\n`settings.simplicity` rather than beside the rule.\n\n### Cost\n\nThe agentic approach is **on by default and spends model tokens**. Identical and renamed\ncopies never reach it, and a file whose helpers were all settled by a hash costs nothing at\nall, because no agent is started for it. `settings.simplicity.judge: false` turns the plugin\ninto a deterministic, zero-token duplicate detector for small helpers.\n\nTwo things keep the agentic approach affordable.\n\n**A review is cached under a fingerprint of every helper in the workspace**, so a run that\nchanged nothing costs nothing. A helper added, edited, moved or deleted anywhere throws\nthe whole cache away, because a helper added anywhere could be the twin of a helper here,\nand a decision decided against one workspace means nothing against another. The\ninvalidation is coarse on purpose and cheap in practice: the index holds only helpers of\nten lines or fewer, and most commits do not touch one. Turn it off with\n`settings.simplicity.cache: false`.\n\nThe cache is written to `.alint/simplicity/`. Add it to your `.gitignore`: what a model\ndecided is not project configuration.\n\n**Only the files you lint are reviewed.** The index always covers the whole workspace, so\na twin is found wherever it lives, but only the files you pass are handed to an agent.\nThat makes the cost proportional to your diff rather than to the repository:\n\n```sh\nalint $(git diff --name-only origin/main...)\n```\n\nAgent tokens are metered and reported, so a run says what it cost.\n\n### Evaluating a change to a prompt\n\n`fixtures/` is a graded corpus: every helper in it is either a finding a run must produce\nor one it must not. The unit tests assert the parts a fingerprint decides, which cost\nnothing. The parts a model decides are measured by a harness that spends real tokens, so\nit is kept outside this repository and CI never runs it. See\n[the architecture notes](./docs/simplicity-architecture.md) for what it measures and why a\nprompt cannot be changed without it.\n\n## When to use\n\n- A codebase where several people, or several agents, open branches in parallel and the\n  same tiny helper keeps being re-invented in each of them. This is the case the plugin\n  was built from: the duplication in #28 and #31 entered through parallel branches and was\n  found by a human afterwards.\n- Reviews where \"search for an existing implementation first\" is written down as guidance\n  and is not, on its own, working.\n- Codebases that already run a copy-paste detector and want the band it cannot see:\n  helpers below its minimum-token floor.\n\n## When not to use\n\n- **Not a general code-quality plugin.** The scope is function-level simplification smells\n  and nothing more. If a check does not answer \"does this helper exist twice\" or \"should\n  this helper exist at all\", it belongs elsewhere.\n- **Not a cross-language dedupe tool.** Helpers are compared within one language only. A\n  Go twin of a TypeScript helper is not shareable code, so reporting it would be advice\n  nobody could take, and the tool that records findings refuses a cross-language pair\n  outright.\n- **Not a replacement for token-based copy-paste detectors.** jscpd, PMD's CPD and their\n  peers cover large duplicated blocks (roughly 50 tokens and up) well, cheaply, and across\n  150+ languages. Keep using them, and run this plugin for the small helpers they are\n  configured to ignore.\n- **Not free, unless you ask it to be.** The judge spends tokens. `judge: false` keeps the\n  AST approach and costs nothing.\n","readmeFilename":""}