{"_id":"55ab-loach","_rev":"10-f43a44593c9818cc87e0478469fa17c5","name":"55ab-loach","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.3":{"name":"55ab-loach","version":"1.0.3","keywords":["loach","patterns"],"author":{"name":"55ab"},"license":"ISC","_id":"55ab-loach@1.0.3","maintainers":[{"name":"canc55ab","email":"40780083@qq.com"}],"homepage":"https://github.com/Canc55Ab/loach#readme","bugs":{"url":"https://github.com/Canc55Ab/loach/issues"},"dist":{"shasum":"9a32f1a554ed3752fa988d8493165beb4040fb43","tarball":"https://registry.npmjs.org/55ab-loach/-/55ab-loach-1.0.3.tgz","fileCount":7,"integrity":"sha512-y9ZniXOzkxbykKLgBFNyiJ+JvrpQzvjN9MbvAMJl8nS+dmOiWGUH1Z88Ky4JfvOqxFsCE5K4SvbMN6mR+oDw5Q==","signatures":[{"sig":"MEUCIFKj5CRTNoZuaTpTMbqzAaRdDOOrexxfA7BEGvgc9+PPAiEArooILMKQbHsLQSvZnYuQq4DGMMbovAf2jZ1cRq+yqOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6186},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"b5a481c3ada648874eb224744c9b0086db1155ae","scripts":{"build":"rollup -c rollup.config.ts --configPlugin typescript","prepublishOnly":"npm run build"},"_npmUser":{"name":"canc55ab","email":"40780083@qq.com"},"repository":{"url":"git+https://github.com/Canc55Ab/loach.git","type":"git"},"_npmVersion":"11.5.1","description":"typescript pattern project","directories":{},"_nodeVersion":"24.5.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.1","rollup":"^4.46.4","typescript":"^5.9.2","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/55ab-loach_1.0.3_1755681815800_0.2666170707973059","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"55ab-loach","version":"1.0.4","keywords":["loach","patterns"],"author":{"name":"55ab"},"license":"ISC","_id":"55ab-loach@1.0.4","maintainers":[{"name":"canc55ab","email":"40780083@qq.com"}],"homepage":"https://github.com/Canc55Ab/loach#readme","bugs":{"url":"https://github.com/Canc55Ab/loach/issues"},"dist":{"shasum":"e83e833df6b492b5f33b20e403b853d5e2f27cad","tarball":"https://registry.npmjs.org/55ab-loach/-/55ab-loach-1.0.4.tgz","fileCount":6,"integrity":"sha512-AGqZgi3Ndzx5Nf4we8+uZZFuKAuBqi/qUlengcxqcvwwWXpgCT3QQIQoUNQ3ThNNmvFMEIsOi8H6v9LAVUmmGA==","signatures":[{"sig":"MEUCIQDVupJ5K8mbYmPotJLTdwMC+Wj2qYzxVRWLz9+thUQG8QIgIXOcWdgPdl5iVi7HHCkEivsnYpx0K1gaIEE4Xs4aYjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4670},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"f269ce0f44b77f4341161f3b6fc1d817db6cd155","scripts":{"build":"rollup -c rollup.config.ts --configPlugin typescript","publishMajor":"npm version major && npm publish","publishMinor":"npm version minor && npm publish","publishPatch":"npm version patch && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"canc55ab","email":"40780083@qq.com"},"repository":{"url":"git+https://github.com/Canc55Ab/loach.git","type":"git"},"_npmVersion":"11.5.1","description":"typescript pattern project","directories":{},"_nodeVersion":"24.5.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.1","rollup":"^4.46.4","typescript":"^5.9.2","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.0.4","rollup-plugin-delete":"^3.0.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/55ab-loach_1.0.4_1755758401994_0.5369191756579381","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"55ab-loach","version":"1.0.5","keywords":["loach","patterns"],"author":{"name":"55ab"},"license":"ISC","_id":"55ab-loach@1.0.5","maintainers":[{"name":"canc55ab","email":"40780083@qq.com"}],"homepage":"https://github.com/Canc55Ab/loach#readme","bugs":{"url":"https://github.com/Canc55Ab/loach/issues"},"dist":{"shasum":"e644c21e70ff3e7b2c100d443158a1bffecd1c5a","tarball":"https://registry.npmjs.org/55ab-loach/-/55ab-loach-1.0.5.tgz","fileCount":6,"integrity":"sha512-aMvkl2toshw+G1o2W+sJgYnp/H1GYkV1rQHia0zSBGjCvAWC4kCzln923Ysgl9NX3uje4v+DfXjpzrtGYvX4og==","signatures":[{"sig":"MEUCIAJ3Cj3muNCy3IgYWaWrbUrIGj7WuOPKrrJJR4VPrD/qAiEAtPBv2ZZA7cMgYfetejjhPpT1L7tJ8O/QqXQMvZ9y/zY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6705},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"bd5d9ea04253267448eaa1a323d193a1394ca824","scripts":{"build":"rollup -c rollup.config.ts --configPlugin typescript","publishMajor":"npm version major && npm publish","publishMinor":"npm version minor && npm publish","publishPatch":"npm version patch && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"canc55ab","email":"40780083@qq.com"},"repository":{"url":"git+https://github.com/Canc55Ab/loach.git","type":"git"},"_npmVersion":"11.5.1","description":"typescript pattern project","directories":{},"_nodeVersion":"24.5.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.1","rollup":"^4.46.4","typescript":"^5.9.2","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.0.4","rollup-plugin-delete":"^3.0.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/55ab-loach_1.0.5_1755764438308_0.2661468659756123","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"55ab-loach","version":"1.0.6","keywords":["loach","patterns"],"author":{"name":"55ab"},"license":"ISC","_id":"55ab-loach@1.0.6","maintainers":[{"name":"canc55ab","email":"40780083@qq.com"}],"homepage":"https://github.com/Canc55Ab/loach#readme","bugs":{"url":"https://github.com/Canc55Ab/loach/issues"},"dist":{"shasum":"b47f4d1f7833dd8e23668f7436b35c958817db2b","tarball":"https://registry.npmjs.org/55ab-loach/-/55ab-loach-1.0.6.tgz","fileCount":8,"integrity":"sha512-iHkGS5aX3/pCNOPdIR4zIf606A0wFXgZRSNKIN2lwXzVg91aev1grPt2x9woP3Tr9T3x0WpYwJEtiIISYLLKVA==","signatures":[{"sig":"MEYCIQCvz6DQEgS4bRoE4A5GVSxJDbXGm5HtMgE/YcLIUgtmUAIhAOKYroSoHEvjybHX2s+m9K//d6hPjdosx72JcQx5U8ju","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9365},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"bd1575b29be7161ef9290f5cf95bb90250f18e08","scripts":{"build":"rollup -c rollup.config.ts --configPlugin typescript","publishMajor":"npm version major && npm publish","publishMinor":"npm version minor && npm publish","publishPatch":"npm version patch && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"canc55ab","email":"40780083@qq.com"},"repository":{"url":"git+https://github.com/Canc55Ab/loach.git","type":"git"},"_npmVersion":"11.5.1","description":"typescript pattern project","directories":{},"_nodeVersion":"24.5.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.1","rollup":"^4.46.4","typescript":"^5.9.2","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.0.4","rollup-plugin-delete":"^3.0.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/55ab-loach_1.0.6_1755766117851_0.46887780412370583","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"55ab-loach","version":"1.0.7","keywords":["loach","patterns"],"author":{"name":"55ab"},"license":"ISC","_id":"55ab-loach@1.0.7","maintainers":[{"name":"canc55ab","email":"40780083@qq.com"}],"homepage":"https://github.com/Canc55Ab/loach#readme","bugs":{"url":"https://github.com/Canc55Ab/loach/issues"},"dist":{"shasum":"b07ecc406d4819d2d09f1d8183cb1e7a7f2b9f2d","tarball":"https://registry.npmjs.org/55ab-loach/-/55ab-loach-1.0.7.tgz","fileCount":8,"integrity":"sha512-np5Pz3lVS7rqhSWCMBVYu+GN4Uhfb0rV3bzMQFP1LyayF2VkLr41fEuqyBkPGrR8UC0ZYAMeV17E8tZAR3iVSQ==","signatures":[{"sig":"MEYCIQDHbAHk3LschhbuejQg8IO7TpEx5bhL/OjH2b3UXENitwIhAKr8fItDLxlI1Xaj5EoEezZs8wZI79v8M8AmVudqJNaa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10204},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"16c7c26643621a0de3f2697f2bf1c19a822591da","scripts":{"build":"rollup -c rollup.config.ts --configPlugin typescript","publishMajor":"npm version major && npm publish","publishMinor":"npm version minor && npm publish","publishPatch":"npm version patch && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"canc55ab","email":"40780083@qq.com"},"repository":{"url":"git+https://github.com/Canc55Ab/loach.git","type":"git"},"_npmVersion":"11.5.1","description":"typescript pattern project","directories":{},"_nodeVersion":"24.6.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.1","rollup":"^4.46.4","typescript":"^5.9.2","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.0.4","rollup-plugin-delete":"^3.0.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/55ab-loach_1.0.7_1756802788715_0.07741581724005142","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"55ab-loach","version":"1.0.8","keywords":["loach","patterns"],"author":{"name":"55ab"},"license":"ISC","_id":"55ab-loach@1.0.8","maintainers":[{"name":"canc55ab","email":"40780083@qq.com"}],"homepage":"https://github.com/Canc55Ab/loach#readme","bugs":{"url":"https://github.com/Canc55Ab/loach/issues"},"dist":{"shasum":"cab51481ccca616cf239de2c0a1aa402d8f823ca","tarball":"https://registry.npmjs.org/55ab-loach/-/55ab-loach-1.0.8.tgz","fileCount":8,"integrity":"sha512-IoeFWK6/dCZ101FCEZpncQYJOw4WPneEeC3SAfo0MLmWAMB85xKUjP/BNyIYX9PST9JJt7tNRS+bxoWcnHYjhg==","signatures":[{"sig":"MEUCIEaw2z+HMHw+bd9pcnvT89q4uxAa8AmNSf3R81xTdESEAiEA+Vjri7oOGBMfQYlnd4M8+n/Ds7Fnr8JU4BG+PS2EEWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10356},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"62765694447ef8f7d78950ff21b878a06794dc14","scripts":{"build":"rollup -c rollup.config.ts --configPlugin typescript","publishMajor":"npm version major && npm publish","publishMinor":"npm version minor && npm publish","publishPatch":"npm version patch && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"canc55ab","email":"40780083@qq.com"},"repository":{"url":"git+https://github.com/Canc55Ab/loach.git","type":"git"},"_npmVersion":"11.5.1","description":"typescript pattern project","directories":{},"_nodeVersion":"24.6.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.1","rollup":"^4.46.4","typescript":"^5.9.2","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.0.4","rollup-plugin-delete":"^3.0.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/55ab-loach_1.0.8_1757055291242_0.8316372128772733","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"55ab-loach","version":"1.0.9","keywords":["loach","patterns"],"author":{"name":"55ab"},"license":"ISC","_id":"55ab-loach@1.0.9","maintainers":[{"name":"canc55ab","email":"40780083@qq.com"}],"homepage":"https://github.com/Canc55Ab/loach#readme","bugs":{"url":"https://github.com/Canc55Ab/loach/issues"},"dist":{"shasum":"5b1eb7e2175a2219fcb71bd02443600499fbf707","tarball":"https://registry.npmjs.org/55ab-loach/-/55ab-loach-1.0.9.tgz","fileCount":8,"integrity":"sha512-pzifEUEsuX8mJRUBzSbFq30j2iXL2FGxv54Ji/0Ft3eUoDjUryzDwir42SrgDZSN+wR/OJJTCQLoRVesqJQR7A==","signatures":[{"sig":"MEUCIQCdKZNZsnArlHszHna5+ULLphn8+BsAlhk3fkMqBBgXOwIgUsXoOMj0n4AkkUHmUU9MkFDkP6N6hwd1iSKEehiotgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11469},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"dc7f60ebd3d3569f24b661d44b861deaba617e82","scripts":{"build":"rollup -c rollup.config.ts --configPlugin typescript","publishMajor":"npm version major && npm publish","publishMinor":"npm version minor && npm publish","publishPatch":"npm version patch && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"canc55ab","email":"40780083@qq.com"},"repository":{"url":"git+https://github.com/Canc55Ab/loach.git","type":"git"},"_npmVersion":"11.6.0","description":"typescript pattern project","directories":{},"_nodeVersion":"24.10.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.1","rollup":"^4.46.4","typescript":"^5.9.2","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.0.4","rollup-plugin-delete":"^3.0.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/55ab-loach_1.0.9_1761114786427_0.15912201471301035","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"55ab-loach","version":"1.1.0","keywords":["loach","patterns"],"author":{"name":"55ab"},"license":"ISC","_id":"55ab-loach@1.1.0","maintainers":[{"name":"canc55ab","email":"40780083@qq.com"}],"homepage":"https://github.com/Canc55Ab/loach#readme","bugs":{"url":"https://github.com/Canc55Ab/loach/issues"},"dist":{"shasum":"56470b820f432dbb754b817b9e3c5afc21fd3886","tarball":"https://registry.npmjs.org/55ab-loach/-/55ab-loach-1.1.0.tgz","fileCount":9,"integrity":"sha512-/PxnbDU/qAt1zQE2Oz97NQZAYs6k6yOKUQ1kW4uAc5QA0UNqu/oWk2T0risA7CSvhklfbxWX5rXEoANiScZAjg==","signatures":[{"sig":"MEUCIQDnX7rfIshxRXqLe8SBzua8A3UQ7DqpaEoWbXoJIVPvyQIgcqhVZu5uHOGw0Z3hnNmzjzkK1wgQmPW/4wTpGr4pWG8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19566},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"238519df37c893b51b4605ba4a9a5b1cba2dc1e9","scripts":{"test":"vitest run","build":"rollup -c rollup.config.ts --configPlugin typescript","test:watch":"vitest","publishMajor":"npm version major && npm publish","publishMinor":"npm version minor && npm publish","publishPatch":"npm version patch && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"canc55ab","email":"40780083@qq.com"},"repository":{"url":"git+https://github.com/Canc55Ab/loach.git","type":"git"},"_npmVersion":"10.9.4","description":"typescript pattern project","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.1","rollup":"^4.46.4","vitest":"^4.1.4","typescript":"^5.9.2","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.0.4","rollup-plugin-delete":"^3.0.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/55ab-loach_1.1.0_1775808392365_0.4540695763964884","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"55ab-loach","version":"1.1.2","keywords":["loach","patterns"],"author":{"name":"55ab"},"license":"ISC","_id":"55ab-loach@1.1.2","maintainers":[{"name":"canc55ab","email":"40780083@qq.com"}],"homepage":"https://github.com/Canc55Ab/loach#readme","bugs":{"url":"https://github.com/Canc55Ab/loach/issues"},"dist":{"shasum":"ae8b2b958ffcad4d568d5442965cb5943571abe3","tarball":"https://registry.npmjs.org/55ab-loach/-/55ab-loach-1.1.2.tgz","fileCount":9,"integrity":"sha512-v12xwU1fH/65VKRN5gKajeU9Ct8HRZ6WyIKVCNkPkg5S5maaV17IrT9UTC58AM9uxMZrA/xHpQ/GlUdSHhUl3A==","signatures":[{"sig":"MEQCIBl/uF/3zOpOnVwHPHB6majr07ROJ0Lcz+v4foVfcE1OAiBoSw1LUOf7TPgSramKUNgzeUO93ccKtZoRksqpfoYNOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24895},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"27817049ad53a3bd791e11862e1753f45b40a267","scripts":{"test":"vitest run","build":"rollup -c rollup.config.ts --configPlugin typescript","test:watch":"vitest","publishMajor":"npm version major && npm publish","publishMinor":"npm version minor && npm publish","publishPatch":"npm version patch && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"canc55ab","email":"40780083@qq.com"},"repository":{"url":"git+https://github.com/Canc55Ab/loach.git","type":"git"},"_npmVersion":"10.9.4","description":"typescript pattern project","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.1","rollup":"^4.46.4","vitest":"^4.1.4","typescript":"^5.9.2","rollup-plugin-dts":"^6.2.3","@rollup/plugin-babel":"^6.0.4","rollup-plugin-delete":"^3.0.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/55ab-loach_1.1.2_1776690189445_0.04217182130128183","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"55ab-loach","version":"1.2.0","description":"typescript pattern project","main":"dist/index.cjs.js","module":"dist/index.esm.js","types":"dist/index.d.ts","scripts":{"build":"rollup -c rollup.config.ts --configPlugin typescript","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build","publishPatch":"npm login && npm version patch && npm publish","publishMinor":"npm login && npm version minor && npm publish","publishMajor":"npm login && npm version major && npm publish"},"repository":{"type":"git","url":"git+https://github.com/Canc55Ab/loach.git"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"keywords":["loach","patterns"],"author":{"name":"55ab"},"license":"ISC","type":"module","devDependencies":{"@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-node-resolve":"^16.0.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^12.1.4","rollup":"^4.46.4","rollup-plugin-delete":"^3.0.1","rollup-plugin-dts":"^6.2.3","tslib":"^2.8.1","typescript":"^5.9.2","vitest":"^4.1.4"},"_id":"55ab-loach@1.2.0","gitHead":"8b81f0af3a8acd23eb1f3df5f0cdada8a5928dea","bugs":{"url":"https://github.com/Canc55Ab/loach/issues"},"homepage":"https://github.com/Canc55Ab/loach#readme","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-nA3zuPzfHaQuxWZv9/yL2NnRWXhnPfPlExXe7mgBQ8BnmXtlX9dl0AM0GdmlmIzMfiyoCTTtbbxbNpBQP9D3Zg==","shasum":"18dc874a5e81b03395cda77abbf7115d6f7c0864","tarball":"https://registry.npmjs.org/55ab-loach/-/55ab-loach-1.2.0.tgz","fileCount":14,"unpackedSize":46890,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDwVjRg0NnwHwgAeeuZs+zJydkv8Xj3Kugd6vKDP/LKpwIhAKonw7fw7c5L0G/+hkgdlERk6LNuSMrZ4RJURneEY7QW"}]},"_npmUser":{"name":"canc55ab","email":"40780083@qq.com"},"directories":{},"maintainers":[{"name":"canc55ab","email":"40780083@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/55ab-loach_1.2.0_1776911154389_0.9920443459877408"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-20T09:23:35.704Z","modified":"2026-04-23T02:25:54.673Z","1.0.3":"2025-08-20T09:23:35.990Z","1.0.4":"2025-08-21T06:40:02.185Z","1.0.5":"2025-08-21T08:20:38.552Z","1.0.6":"2025-08-21T08:48:38.022Z","1.0.7":"2025-09-02T08:46:28.899Z","1.0.8":"2025-09-05T06:54:51.422Z","1.0.9":"2025-10-22T06:33:06.636Z","1.1.0":"2026-04-10T08:06:32.655Z","1.1.2":"2026-04-20T13:03:09.611Z","1.2.0":"2026-04-23T02:25:54.567Z"},"bugs":{"url":"https://github.com/Canc55Ab/loach/issues"},"author":{"name":"55ab"},"license":"ISC","homepage":"https://github.com/Canc55Ab/loach#readme","keywords":["loach","patterns"],"repository":{"type":"git","url":"git+https://github.com/Canc55Ab/loach.git"},"description":"typescript pattern project","maintainers":[{"name":"canc55ab","email":"40780083@qq.com"}],"readme":"# loach\n\nTypeScript 数据结构与算法工具库。\n\n## 安装\n\n```bash\nnpm install 55ab-loach\n```\n\n## 使用\n\n```typescript\nimport { Stack, Queue, QuadTree, AsyncQueue, math } from \"55ab-loach\";\n```\n\n---\n\n## Stack 栈\n\n后进先出（LIFO）数据结构。\n\n### 构造\n\n```typescript\nconst stack = new Stack<number>();\nconst stack = new Stack<number>({ maxCount: 100, items: [1, 2, 3] });\n```\n\n### API\n\n| 方法                | 说明                       |\n| ------------------- | -------------------------- |\n| `push(item)`        | 入栈                       |\n| `pushs(items)`      | 批量入栈                   |\n| `pop()`             | 出栈，空栈返回 `undefined` |\n| `pops(count)`       | 批量出栈                   |\n| `peek()`            | 返回栈顶元素               |\n| `isEmpty()`         | 栈是否为空                 |\n| `isFull()`          | 栈是否已满                 |\n| `size()`            | 栈长度                     |\n| `clear()`           | 清空栈                     |\n| `includes(item)`    | 是否包含元素               |\n| `indexOf(item)`     | 查找元素索引               |\n| `remove(item)`      | 移除指定元素               |\n| `toArray()`         | 转为数组                   |\n| `forEach(callback)` | 遍历                       |\n| `toString()`        | 字符串表示                 |\n\n**属性**：`maxCount`（可读写，默认 1000）\n\n---\n\n## Queue 队列\n\n先进先出（FIFO）数据结构。\n\n### 构造\n\n```typescript\nconst queue = new Queue<number>();\nconst queue = new Queue<number>({ maxCount: 100, items: [1, 2, 3] });\n```\n\n### API\n\n| 方法                | 说明                         |\n| ------------------- | ---------------------------- |\n| `enQueue(item)`     | 入队                         |\n| `enQueues(items)`   | 批量入队                     |\n| `deQueue()`         | 出队，空队列返回 `undefined` |\n| `deQueues(count)`   | 批量出队                     |\n| `front()`           | 返回队首元素                 |\n| `back()`            | 返回队尾元素                 |\n| `isEmpty()`         | 队列是否为空                 |\n| `isFull()`          | 队列是否已满                 |\n| `size()`            | 队列长度                     |\n| `clear()`           | 清空队列                     |\n| `includes(item)`    | 是否包含元素                 |\n| `indexOf(item)`     | 查找元素索引                 |\n| `remove(item)`      | 移除指定元素                 |\n| `toArray()`         | 转为数组                     |\n| `forEach(callback)` | 遍历                         |\n| `toString()`        | 字符串表示                   |\n\n**属性**：`maxCount`（可读写，默认 1000）\n\n---\n\n## QuadTree 四叉树\n\n空间分区数据结构，适用于碰撞检测、空间查询等场景。支持矩形和圆形两种形状。\n\n### 构造\n\n```typescript\nconst qt = new QuadTree<IQuadItemObject>({\n  x: 0,\n  y: 0,\n  width: 800,\n  height: 600,\n  maxObjects: 10, // 每个节点最大对象数，默认 10\n  maxLevels: 4, // 最大分割层级，默认 4\n});\n```\n\n### 数据类型\n\n```typescript\n// 矩形对象\nconst rect: IQuadItemObject = {\n  shape: \"rect\",\n  x: 10,\n  y: 10,\n  width: 20,\n  height: 20,\n};\n\n// 圆形对象\nconst circle: IQuadItemObject = { shape: \"circle\", x: 50, y: 50, radius: 10 };\n```\n\n### API\n\n| 方法                     | 说明                         |\n| ------------------------ | ---------------------------- |\n| `insert(item)`           | 插入对象，超出阈值自动分割   |\n| `inserts(items)`         | 批量插入                     |\n| `remove(item)`           | 移除对象，返回是否成功       |\n| `query(item)`            | 查询对象所在象限中的所有对象 |\n| `queryRange(range)`      | 查询矩形范围内的所有对象     |\n| `contains(item)`         | 是否包含指定对象             |\n| `getAllObjects()`        | 获取所有对象                 |\n| `getSize()`              | 获取对象总数                 |\n| `getDepth()`             | 获取四叉树深度               |\n| `clear()`                | 清除所有对象和子节点         |\n| `isPointInBounds(point)` | 判断点是否在范围内           |\n| `subdivide()`            | 手动分割为四个子节点         |\n\n**属性**：`x`, `y`, `width`, `height`, `level`, `maxObjects`（可读写）, `maxLevels`（可读写）, `nodes`, `objects`\n\n### 碰撞检测示例\n\n```typescript\nconst qt = new QuadTree<IQuadItemObject>({\n  x: 0,\n  y: 0,\n  width: 800,\n  height: 600,\n  maxObjects: 4,\n});\n\nconst player = { shape: \"rect\", x: 100, y: 100, width: 20, height: 20 };\nqt.insert(player);\n\n// 查询与 player 同象限的候选对象\nconst candidates = qt.query(player);\n\n// 查询指定矩形范围内的对象\nconst nearby = qt.queryRange({\n  shape: \"rect\",\n  x: 90,\n  y: 90,\n  width: 40,\n  height: 40,\n});\n```\n\n---\n\n## AsyncQueue 异步队列\n\n并发控制的异步函数执行队列，支持任务调度、暂停/恢复、优先级和事件订阅。\n\n### 构造\n\n```typescript\nconst queue = new AsyncQueue<number, number>({\n  concurrency: 3,       // 最大并发数，默认 1\n  timeout: 5000,        // 任务超时时间（ms），默认 0（不超时）\n  retryCount: 2,        // 失败重试次数，默认 0\n  retryDelay: 1000,     // 重试间隔（ms），默认 1000\n  autoStart: true,      // 是否自动开始，默认 true\n});\n```\n\n### API\n\n| 方法                | 说明                         |\n| ------------------- | ---------------------------- |\n| `enqueue(task, priority?)` | 添加任务，支持优先级       |\n| `start()`           | 开始执行队列                 |\n| `pause()`           | 暂停执行                     |\n| `resume()`          | 恢复执行                     |\n| `clear()`           | 清空队列                     |\n| `abort()`           | 中止所有任务                 |\n| `getStats()`        | 获取队列统计信息             |\n| `on(event, handler)` | 订阅事件                   |\n| `off(event, handler)` | 取消订阅                   |\n\n### 事件\n\n| 事件             | 说明                           |\n| ---------------- | ------------------------------ |\n| `taskStart`      | 任务开始                       |\n| `taskEnd`        | 任务完成                       |\n| `taskError`      | 任务错误                       |\n| `taskRetry`      | 任务重试                       |\n| `queueEmpty`     | 队列空                         |\n| `queueFull`      | 队列满                         |\n| `pause`          | 暂停                           |\n| `resume`         | 恢复                           |\n| `statsUpdate`    | 统计更新                       |\n\n### 示例\n\n```typescript\nconst queue = new AsyncQueue<string, number>({ concurrency: 2 });\n\nqueue.on(\"taskEnd\", ({ result }) => {\n  console.log(\"任务完成:\", result);\n});\n\nqueue.enqueue(async () => {\n  const response = await fetch(\"https://api.example.com/data\");\n  return response.json();\n});\n\nqueue.enqueue(async () => \"second task\", 1); // 高优先级\n\nqueue.start();\n```\n\n---\n\n## math 数学工具\n\n```typescript\nimport { math } from \"55ab-loach\";\n\nmath.distance(x1, y1, x2, y2); // 两点距离\nmath.rad(v1, v2); // 两点角度（弧度）\nmath.abs(a); // 绝对值\nmath.random(from, to, fixed); // 随机数\nmath.randomUint(from, to, fixed); // 随机正数\n```\n\n---\n\n## 开发\n\n```bash\nnpm run build       # 构建\nnpm run test        # 运行测试\nnpm run test:watch  # 监听模式运行测试\n```\n","readmeFilename":"README.md"}