{"_id":"@eggermarc/better-auth-usage","_rev":"20-01d3026435b4b467925dd9a970a3d8e5","name":"@eggermarc/better-auth-usage","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@eggermarc/better-auth-usage","version":"0.1.0","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.0","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"48d0f5db769a853669a889b76501afb351e303b8","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.0.tgz","fileCount":2,"integrity":"sha512-N+BjPIy5jsQhiikT74cuL+4SuV8KQWhjRMwzPX4uArQ+IZfntrRFfM0UdrOhZtxciH/xRW1egmaTc2asMkAgPw==","signatures":[{"sig":"MEYCIQCLMdqHCMOF42D9jdcABvfQPt5BNJdBPYvJ8Y7I0h50EAIhAJg0zIEjG8rveoDUK+NiOzn+RChmNeAqALlCqBXSk5ZK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3948},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"fc8763df90873760d35f3217ff8789fc216f6d3c","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"Feature and usage-based authorization plugin for [BetterAuth](https://www.better-auth.com/). Provides a way to define **features**, **track usage**, apply **per-plan limits**, and integrate with external systems (Stripe, custom hooks, etc).","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.0_1758278876312_0.3873064924824452","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@eggermarc/better-auth-usage","version":"0.1.1","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.1","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"68bb1efa077e50bd5f50be3afbce1a06c68f5724","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.1.tgz","fileCount":27,"integrity":"sha512-sSKdAKq8TCU5Ctn9iuFRIas/wbxceBBTDpldwDlbGAPoaimUpBR62oZqiSWHpQ9e8jL1yjcCj4L842kkgGj/+g==","signatures":[{"sig":"MEUCIGN0swp6f43p5RvakbmdFSDzeOISMDNt8Fs0ephYC5DbAiEA1o2oIJvSJZZovPmwOvzNzmRW/UtO0vzGH5sBA0hTACs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80901},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"9ccfd15d75367ffac894f2c75fb49d67e5dc8f60","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.1_1758283575925_0.16977572058500234","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@eggermarc/better-auth-usage","version":"0.1.2","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.2","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"b6aa5e9fe1cf611722ff294f0507c66ab5eb5a86","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.2.tgz","fileCount":7,"integrity":"sha512-3HJtHTT3mIHpDPK5gyI9h072qQTE0/6SGbMKJEoLAZfLKgshMRgJ67LhxotusgconGKuBfEIJzFC97JFPb50zw==","signatures":[{"sig":"MEUCIQCeBC4G6Nc4cOsGS1rY+k5smnMteeqyLr6Q6oUjwZVCwgIgLl8XFinhpvp4UOj/y29UO8mg7PvaSVJKMuAIjhh7xd8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43208},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"75683f5de6cdfe2c7cb2f401c0957119561e77aa","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.2_1758286859507_0.41004372253966404","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@eggermarc/better-auth-usage","version":"0.1.3","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.3","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"1ac5688005acd17ae090f9a2758a20695e7aa1c4","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.3.tgz","fileCount":7,"integrity":"sha512-B/Or+DfPNZa2Ai8Xsq2BA19SkB6Isaa1fAUvJiXX4I+L2KiQfXnchdVS4EC+NTq6PGyulEe7aXcoxnzGoe+4HQ==","signatures":[{"sig":"MEQCICa8VDT02GBpXisMJ5uJPdGcpVlDW7eSOfuIYfmgkkcgAiAUtEDScWxB7+pKpJmlSR0Gk+hrCMwgJyKuv4FjBwIYvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43208},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"2e8214e27cbc75e9af603174d4122be9e52c3928","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.3_1758288492635_0.3995861611071212","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@eggermarc/better-auth-usage","version":"0.1.4","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.4","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"ab4308c0648f4e099a7c85c495d7c1bd26e7f57d","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.4.tgz","fileCount":7,"integrity":"sha512-GPBVtMRRy+LxU9ydA67pomWd0kiRg1PmCEE6dWyLiKsdnuuqubQSlIkwkqZ/s4hXCQwezYZI/XFXkFWTuMyMlQ==","signatures":[{"sig":"MEUCIQCauTC8dWfSBpwAItpMYV16usXQn5zDrSZKFL9FBOso3wIgSGJ5D5Lgq0hignhF7OHbyHFuWfsUc4kJxX2v6/BYRNo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43208},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"2e8214e27cbc75e9af603174d4122be9e52c3928","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.4_1758288589092_0.46601402449059237","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@eggermarc/better-auth-usage","version":"0.1.5","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.5","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"c5c9d2e8331e028bad9b95bb8d12007049b1daff","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.5.tgz","fileCount":7,"integrity":"sha512-D5RWVTnCEQTW+txzvR2vN/clm7U6M0JJ+jYMOIJ1EyRXrAhNQQy3ysrQD3G/lFCCQSBf+AyST9Ro2oEvMhBNqA==","signatures":[{"sig":"MEQCIAhcWZAV2jJC7jPoWVB9QipVQ1HQOH5NIPp96Hl0AYcqAiBj1lybaue2xEr3a230vKNfnCTBjvxC0VmbJleTow360A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43212},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"2e8214e27cbc75e9af603174d4122be9e52c3928","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.5_1758289621601_0.1561829364757512","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@eggermarc/better-auth-usage","version":"0.1.6","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.6","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"60d73d3d5159567744e15a13c2a0c45a3af409e2","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.6.tgz","fileCount":7,"integrity":"sha512-h7DC33bAApa6sOD3EYa3Ek1QUbmvDHrv/ulLxzLU+XPSOrP++aSBPdKDnOcTHaZkU/Cdz7R7y6DfUz1m+u1XGg==","signatures":[{"sig":"MEUCICptW6Pbm7v1pNSqGKTDD2hMO9zZnCpGSnc0u2+LR1ddAiEAmeLMmeCiEHnaFg1nYlg6qzOOnYzzADhMN1Xtf3jQ00Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50673},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"7a8b6b58a1e7d096df30ce2fe8d9a257093d8b5d","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.6_1758291928239_0.6655745285066774","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@eggermarc/better-auth-usage","version":"0.1.7","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.7","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"dfbf764ab835db743a4fe4bfcad199980413775c","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.7.tgz","fileCount":7,"integrity":"sha512-j7EvZk0kuBIw1STMHlfKq5MiGKfRXg/CTxJNUt261d7z0XeXRuv7Pibpmb513T6D7WrbzaNe57yjMS0FFjQ0vg==","signatures":[{"sig":"MEQCIFIgAc2yc7uq2gOB+mkQAK7ldX3HmCjwsOLtflNvJ+UJAiAKNd+ep0DAOcZI8vWKPHYqpjQ7PqgxAPTBB1vKwT3Ing==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50670},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"1f5cbeeed55e00e94cd92631c93cc635a05b82c3","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.7_1758292432448_0.586626267565894","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@eggermarc/better-auth-usage","version":"0.1.8","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.8","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"18b7c9dd27156132c0ca94658c586e56c5a5f0c3","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.8.tgz","fileCount":7,"integrity":"sha512-Vq61QVeROHy2SKmBpQOxjIxhClAgCYJqUUY5kScPxd0H9gJrpX9u5/ShAI65tKE4MxnZwS29H/DdoEEMi4Sqxw==","signatures":[{"sig":"MEYCIQCKx0/rdPjyyCnYZb4XByHEhoi4bfyByDbqDKGeBDWsTgIhAJD5I2bcgys+OBQN83bA8vcpPZIG+0ItOPcmEm906EUS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50816},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"1f5cbeeed55e00e94cd92631c93cc635a05b82c3","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.8_1758293259395_0.6675276174413771","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@eggermarc/better-auth-usage","version":"0.1.9","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.9","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"ca98f71dd277a789e3a2d0f15f33b838db43d9c8","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.9.tgz","fileCount":7,"integrity":"sha512-sq3vpCae5KVzx04RGOp4VPIIndKwYs6dizThJgJMn8CH8x3Whm/H+ye2/UYC6Zp/fxbnB+s5QYAqDUvm9FV60w==","signatures":[{"sig":"MEUCIDI7mP1+S4dv7/Kb54DRce4L5Dr9be0TMf78hLhnIHZSAiEAx2SIA8AGoXMFh34FLeDQm8NBFg/ib5gY5dUZtDARGJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51274},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"a6fc63dd8eab8275018c50225a4844b5dc095f28","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.9_1758900356020_0.9104529107864474","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@eggermarc/better-auth-usage","version":"0.1.10","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.10","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"301f029629d2a421b21f919218daaee94fa568ed","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.10.tgz","fileCount":7,"integrity":"sha512-z9OVShr87tK/MyvDEft5q1bAhLxfF/eLZcJ04tUEbFXdupFTWeZOESKjXenAYcRVrKyheRNuwmITChImXsGzsA==","signatures":[{"sig":"MEUCIEYgko5AlDasrIqoviA6H8agzg+CpIRVX2RSdoE2eHDyAiEA4X1vWGj2bubEm+SdTFJ+JytNx4yOuX+HpSPa+5eLWC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44587},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"a6fc63dd8eab8275018c50225a4844b5dc095f28","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.10_1758905751781_0.5524806354601668","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@eggermarc/better-auth-usage","version":"0.1.11","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.11","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"517bcb58d83f872279917d428575f385969a511c","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.11.tgz","fileCount":7,"integrity":"sha512-XS+n0O7TpRUZRk5uALGirPX8GOSCC6IxLTABT9Jdt4RmOwslprKNQtAR1g9X6//ywQxrDeSUi1dyJuanfqjBnA==","signatures":[{"sig":"MEUCIQCNHF7D8NY/4sC1BMrneJuADhScnzfiy30E1THXHdmMjAIgKyurHB8H9gB85YLi0JrpyCw2ipzaFiMt4zEKzjNp9eo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52624},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"7c4a9305e82f0c785d243d65e30434d1f13b51c8","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.11_1758915910475_0.03893821943489684","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@eggermarc/better-auth-usage","version":"0.1.12","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.12","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"9d1e8e185908e4b84fdef28e2fa6b49d02517668","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.12.tgz","fileCount":7,"integrity":"sha512-huJuGrxNojPE1Oa9WTxa95dOEp/sVwEexGYOvom9Sn8BHm1MtympaeXATgQwYTC6egek8S7k+IaRwSPhFmmlEw==","signatures":[{"sig":"MEQCIF6XdHx/2fh4COT/4yPpYMR2YAe6EQzR5AuZYsnxmvwVAiA4HgT8cFXySEJehQ4Wk8JdYHPJAlxb0WoJHK8DJ0FBpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53548},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"db80fd973204f626d36098be2de1341b524c19d0","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.12_1758918265515_0.26080067012061114","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@eggermarc/better-auth-usage","version":"0.1.13","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.13","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"ef79f0d8172bd4dd186dd59dac56eea6782c2037","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.13.tgz","fileCount":3,"integrity":"sha512-n4DmBkhd0OY0GknbMElurEv2e9KOL7t37RtIeDxoCaHhysFrCh/kx4Rx34zONWIWxU37m8vnyXXbnBJaVHkXXg==","signatures":[{"sig":"MEUCIFpo1Q43c2TbXgDiXVDmRHi2OTWbkPesMtQrmWT2Qj2WAiEA7XYAmhRf67JItvE1eISGb4HRt79hwqaQiTvRyFH9jeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6883},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"01ff396b37931f342f3775f85a40a3dd78efd21b","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.2.0","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.13_1759783172299_0.7042645387090756","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@eggermarc/better-auth-usage","version":"0.1.14","keywords":["better-auth","plugin","auth","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.14","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"3c96dc24051fea01651cde72de3bbb60c26acf91","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.14.tgz","fileCount":7,"integrity":"sha512-45//L+21gWCPna3L67H6sFT2P0tyiCLsbCqTMnUGDqptSabTFjwpIEpDAQ2DLEgBQBF/4D7JQ2ZMRtKpPEqkjQ==","signatures":[{"sig":"MEYCIQCVoa0aq8m3h0PDo3mGI0hVRebf9aOX58Lhb3hQUcKnkQIhAOfZ7KneeETBr1bMnhRxJ+uOaVSBmxt9/od0I/SskW05","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53334},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"01ff396b37931f342f3775f85a40a3dd78efd21b","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.2.0","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.14_1759783354356_0.7418562259761701","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@eggermarc/better-auth-usage","version":"0.1.15","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.15","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"09286912279336ce0ea709a0cb3ee11752c19a2f","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.15.tgz","fileCount":7,"integrity":"sha512-9NpS+vqa3eF2eZ8imtsKz64BHUfv5Je/WMoPRaQLs5wTfK+SXpl3FJHdeqQfz58hnRGg4A6B9DwvKo+b8xWFZg==","signatures":[{"sig":"MEYCIQDBJYWeM0xEXoCd8BcfD6kJI0YmmB4byc2coCPufrob5wIhAJ2xGG/k0/uxz929f2mtJlB4GvU0jXnNmDA86tlJm3ZC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53365},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"4414fa64e33e32e45f9de53b0af72ad3172dfa48","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.15_1760885773175_0.9277047470103243","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@eggermarc/better-auth-usage","version":"0.1.16","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.16","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"a3c7be2b4859dd824494e1cc03d8e34e05253a6c","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.16.tgz","fileCount":7,"integrity":"sha512-7o0yV/gD5f6DCw2REunD0Yu1KCP9OQhMdx5xZYNngh5WLiXlMnQArzIVnc3XBEAM6mV+GwvDKyRdZKtbOc2Pdw==","signatures":[{"sig":"MEYCIQC2orZNcuE1hNHjXgA44vuBmsj3gOnjiZPYxL3dz819DgIhAKh4LibSo64Q+LMI8dlPYararR7NuN5C9V67olxqUs9X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53366},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"41b9fc6dae5883a6355b4245779a4b6a390f30a6","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.16_1760886438212_0.057950815520880994","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@eggermarc/better-auth-usage","version":"0.1.17","keywords":["better-auth","plugin","auth","better","usage","typescript"],"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.17","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"b5fb74fdec3cea3087d56254ddb5aa9b963093e1","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.17.tgz","fileCount":7,"integrity":"sha512-ESVVKe08IRjsrBKP0xXaaVuqimmqDtBHFSoEsAwvnS9LgVzGN427IcGGzfU7AqGGEJdf46eddagcsJewk2XtBA==","signatures":[{"sig":"MEQCICAf4jABikZylsLMdYCj9ijGnTmxWSjXin06u+e0+qh7AiBWW3RtUonYr2dv7sk+dDRtqiTHRzFTVEmb/CfzqcEU9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53373},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"41b9fc6dae5883a6355b4245779a4b6a390f30a6","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.4.1","description":"**⚠️ Warning!** This package is a **work in progress**! Expect breaking changes and functionality changes.","directories":{},"_nodeVersion":"23.11.1","dependencies":{"zod":"^4.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/bun":"^1.1.14","typescript":"^5.7.2"},"peerDependencies":{"better-auth":"^1.2.0"},"peerDependenciesMeta":{"better-auth":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.17_1760888900522_0.2922064269503195","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@eggermarc/better-auth-usage","version":"0.1.18","keywords":["better-auth","plugin","auth","better","usage","consumption","consumption-tracking","credits","better-auth-plugin","credits-tracking"],"author":{"name":"Marc Egger"},"license":"MIT","_id":"@eggermarc/better-auth-usage@0.1.18","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"homepage":"https://github.com/EggerMarc/better-auth-usage#readme","bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"dist":{"shasum":"5a2aadeb1cf2bf393214e1ecab6cb04b2f943321","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.1.18.tgz","fileCount":7,"integrity":"sha512-cDEmWoZAfXLSfqiWkdi6xcvWJIUab5iRQFaBSPYopgoaXuhz+BryU8N764jPVLy3907FKvc7uRCmc1TBGzWXFQ==","signatures":[{"sig":"MEUCIQCmKeXdGxgQPyZopQa9yUGr62JRD7K2NYMgABON/kp0mgIgRDDLPGoJfXKLa0eb9GG1OP90uS7ysOiuKlAIuE/4q2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41305},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"},"./package.json":"./package.json"},"gitHead":"438a86c65c50d22730971dcc8b1d7cd6a12eae72","scripts":{"dev":"tsup --watch","test":"bun test","build":"tsup","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"repository":{"url":"git+https://github.com/EggerMarc/better-auth-usage.git","type":"git"},"_npmVersion":"11.2.0","description":"better auth usage plugin","directories":{},"_nodeVersion":"22.12.0","dependencies":{"zod":"^4.1.12","events":"^3.3.0","ioredis":"^5.8.2","socket.io":"^4.8.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","@types/bun":"^1.3.1","typescript":"^5.9.3","ioredis-mock":"^8.13.1","testcontainers":"^11.13.0"},"peerDependencies":{"better-auth":"^1.3.12"},"_npmOperationalInternal":{"tmp":"tmp/better-auth-usage_0.1.18_1774205747999_0.35058787708489203","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@eggermarc/better-auth-usage","version":"0.2.0","repository":{"type":"git","url":"git+https://github.com/EggerMarc/better-auth-usage.git"},"description":"better auth usage plugin","main":"./dist/index.js","author":{"name":"Marc Egger"},"license":"MIT","homepage":"https://github.com/EggerMarc/better-auth-usage#readme","scripts":{"build":"tsup","build:example":"tsup && cd examples/nextjs && bun install && bun run build","dev":"tsup --watch","dev:example":"tsup && cd examples/nextjs && bun install && bun run dev","test":"bun test tests/ package/","test:watch":"bun test --watch","test:coverage":"bun test --coverage","test:redis":"bun test tests-infra/redis.test.ts","test:perf":"bun test tests/performance.test.ts tests/performance-comparison.test.ts"},"type":"module","types":"./dist/index.d.ts","dependencies":{"@effect/schema":"^0.75.5","effect":"^3.21.0","events":"^3.3.0","ioredis":"^5.8.2","socket.io":"^4.8.1","socket.io-client":"^4.8.3","zod":"^4.1.12"},"devDependencies":{"@types/bun":"^1.3.1","ioredis-mock":"^8.13.1","testcontainers":"^11.13.0","tsup":"^8.5.0","typescript":"^5.9.3"},"peerDependencies":{"better-auth":"^1.3.12","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./client":{"import":"./dist/client.js","types":"./dist/client.d.ts"},"./react":{"import":"./dist/react.js","types":"./dist/react.d.ts"},"./package.json":"./package.json"},"bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"keywords":["better-auth","plugin","auth","better","usage","consumption","consumption-tracking","credits","better-auth-plugin","credits-tracking"],"_id":"@eggermarc/better-auth-usage@0.2.0","gitHead":"2430cd7bad2621d0873f5d3dd4315e3146684172","_nodeVersion":"22.12.0","_npmVersion":"11.2.0","dist":{"integrity":"sha512-W73w+1d85oAdrvRXn4atcUdgcZKTkCdFD0AAWMzaqyuKDcQzTNe8u1Zi6/EabmiuqI1NqLVslwi9dv7FYCAOQw==","shasum":"d4dacbcd89beb64fc34c6a1c71fe2dd602e253fc","tarball":"https://registry.npmjs.org/@eggermarc/better-auth-usage/-/better-auth-usage-0.2.0.tgz","fileCount":9,"unpackedSize":113624,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFGWWkJvOXcFXN5jkUZ7iKNTTBk9vCa0WYxsoTjFCXmHAiEA7FFPOVX4JwCAPebiyA+K7c0N76GFif32RUyejbOymFM="}]},"_npmUser":{"name":"eggermarc","email":"eggermarc@gmail.com"},"directories":{},"maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/better-auth-usage_0.2.0_1774474580131_0.18769580695006005"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-19T10:47:56.219Z","modified":"2026-03-25T21:36:20.458Z","0.1.0":"2025-09-19T10:47:56.496Z","0.1.1":"2025-09-19T12:06:16.105Z","0.1.2":"2025-09-19T13:00:59.754Z","0.1.3":"2025-09-19T13:28:12.819Z","0.1.4":"2025-09-19T13:29:49.291Z","0.1.5":"2025-09-19T13:47:01.800Z","0.1.6":"2025-09-19T14:25:28.449Z","0.1.7":"2025-09-19T14:33:52.624Z","0.1.8":"2025-09-19T14:47:39.595Z","0.1.9":"2025-09-26T15:25:56.211Z","0.1.10":"2025-09-26T16:55:52.048Z","0.1.11":"2025-09-26T19:45:10.724Z","0.1.12":"2025-09-26T20:24:25.724Z","0.1.13":"2025-10-06T20:39:32.483Z","0.1.14":"2025-10-06T20:42:34.543Z","0.1.15":"2025-10-19T14:56:13.399Z","0.1.16":"2025-10-19T15:07:18.373Z","0.1.17":"2025-10-19T15:48:20.707Z","0.1.18":"2026-03-22T18:55:48.161Z","0.2.0":"2026-03-25T21:36:20.346Z"},"bugs":{"url":"https://github.com/EggerMarc/better-auth-plugin/issues"},"author":{"name":"Marc Egger"},"license":"MIT","homepage":"https://github.com/EggerMarc/better-auth-usage#readme","keywords":["better-auth","plugin","auth","better","usage","consumption","consumption-tracking","credits","better-auth-plugin","credits-tracking"],"repository":{"type":"git","url":"git+https://github.com/EggerMarc/better-auth-usage.git"},"description":"better auth usage plugin","maintainers":[{"name":"eggermarc","email":"eggermarc@gmail.com"}],"readme":"<p align=\"center\">\n  <h1 align=\"center\">@eggermarc/better-auth-usage</h1>\n  <p align=\"center\">Usage tracking, feature gating & real-time metering for <a href=\"https://www.better-auth.com/\">BetterAuth</a></p>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@eggermarc/better-auth-usage\"><img src=\"https://img.shields.io/npm/v/@eggermarc/better-auth-usage?style=flat-square&color=blue\" alt=\"npm version\" /></a>\n  <a href=\"https://github.com/EggerMarc/better-auth-usage/actions\"><img src=\"https://img.shields.io/badge/tests-135%20passing-brightgreen?style=flat-square\" alt=\"tests\" /></a>\n  <a href=\"https://github.com/EggerMarc/better-auth-usage/blob/main/LICENSE\"><img src=\"https://img.shields.io/npm/l/@eggermarc/better-auth-usage?style=flat-square\" alt=\"license\" /></a>\n</p>\n\n---\n\n> **v0.2.0** — WebSocket-first transport, React hooks, global auth (`authorizeUser`), auto-discovery, event logging with timing. See [what changed](#whats-new-in-v02).\n\n---\n\n## Architecture\n\n```\nClient ──WebSocket──→ Socket.IO Server ──→ Effect Pipeline ──→ Redis (Lua, <10ms)\n  │                                                              ↓\n  └──REST fallback──→ BetterAuth Endpoint ──→ Same Pipeline    WAL Stream (XADD)\n                                                                 ↓\n                                                          WAL Worker (subscribe/poll)\n                                                                 ↓\n                                                          DB: usage + usage_event\n```\n\n- **Redis-primary**: Atomic Lua script handles increment, reset check, WAL append, and pub/sub in a single `EVAL`\n- **WAL durability**: Redis Stream write-ahead log, drained to DB by a serialized background worker\n- **WebSocket-first**: Full API over Socket.IO (check, consume, use-feature) with REST fallback\n- **Auto-discovery**: Client discovers WS URL from server via `/usage/ws` endpoint\n- **DB fallback**: Works without Redis — just slower\n- **Effect runtime**: Typed errors, composable pipelines, structured concurrency via [Effect](https://effect.website/)\n\n## Installation\n\n```bash\nbun add @eggermarc/better-auth-usage\n# or\nnpm add @eggermarc/better-auth-usage\n```\n\n## Quick Start\n\n### Server (`auth.ts`)\n\n```typescript\nimport { betterAuth } from \"better-auth\"\nimport { usage } from \"@eggermarc/better-auth-usage\"\n\nexport const auth = betterAuth({\n    plugins: [usage({\n        features: {\n            \"api-calls\": { reset: \"monthly\", resetValue: 0 },\n            \"storage\": {},                    // limits defined per plan\n            \"credits\": { minLimit: -10 },     // global min, plan-specific max\n        },\n        overrides: {\n            \"starter\": {\n                features: {\n                    \"api-calls\": { maxLimit: 1_000 },\n                    \"storage\": { maxLimit: 500 },\n                    \"credits\": { maxLimit: 50 },\n                },\n            },\n            \"pro\": {\n                features: {\n                    \"api-calls\": { maxLimit: 100_000 },\n                    \"storage\": { maxLimit: 5_000 },\n                    \"credits\": { maxLimit: 500 },\n                },\n            },\n        },\n        // Optional: authorize user→referenceId access\n        authorizeUser: async ({ userId, referenceId }) => {\n            return userId === referenceId // or check org membership, etc.\n        },\n        // Optional: Redis for sub-10ms writes + real-time WS\n        cacheOptions: {\n            redisUrl: process.env.REDIS_URL!,\n            enableRealtime: true,\n            port: 3178,\n            wal: { enabled: true, drainStrategy: \"subscribe\" },\n        },\n    })]\n})\n```\n\n> Features no longer need a `key` field — it's derived from the object key automatically. Empty features (`{}`) are valid; define limits per plan in `overrides`.\n\n### Client (`auth-client.ts`)\n\n```ts\nimport { createAuthClient } from \"better-auth/react\"\nimport { usageClient } from \"@eggermarc/better-auth-usage/client\"\n\nexport const authClient = createAuthClient({\n    plugins: [usageClient()],\n})\n```\n\n### React (`providers.tsx`)\n\n```tsx\nimport { createUsageProvider } from \"@eggermarc/better-auth-usage/react\"\nimport type { auth } from \"./auth\"\n\n// Type-safe hooks — feature keys autocomplete from your server config\nexport const { UsageProvider, useFeature, useSetReference, useAllEvents } =\n    createUsageProvider<typeof auth>()\n```\n\n```tsx\n// Wrap your app\n<UsageProvider referenceId={session.user.id}>\n    <App />\n</UsageProvider>\n```\n\n```tsx\n// Use in any component\nconst { usage, consume, events } = useFeature(\"api-calls\")\n\nusage?.status   // \"in-limit\" | \"above-max-limit\" | \"below-min-limit\"\nusage?.current  // 42\nusage?.max      // 1000\nusage?.percent  // 4\n\nawait consume(1)         // atomic check + consume via WS (REST fallback)\nawait consume(10)        // consume 10\nawait consume(-5)        // refund 5\n\nevents           // [{ type: \"consume\", data: {...}, duration: 2.3, ts: ... }]\n```\n\n```tsx\n// Switch reference context (e.g., org → personal)\nconst setReference = useSetReference()\nsetReference(\"org-456\", \"org\")\n```\n\n## Authentication\n\nAll endpoints and WebSocket connections require authentication. The plugin works with every BetterAuth auth method:\n\n| Method | How it works |\n|--------|-------------|\n| **Session cookies** | Standard browser auth — works automatically |\n| **Bearer tokens** | `Authorization: Bearer <token>` via bearer plugin |\n| **API keys** | `x-api-key: <key>` via API key plugin |\n| **JWTs** | Via bearer plugin, JWT plugin issues tokens |\n| **Anonymous** | Via anonymous plugin — real sessions, no login required |\n\nAll methods produce the same `ctx.context.session.user.id` — the `authorizeUser` callback works identically regardless of auth method.\n\n### WebSocket Auth\n\nThe client auto-fetches a session token via `GET /get-session` and passes it in the Socket.IO handshake. No manual token management needed.\n\n### Anonymous Usage\n\nFor free-tier / unauthenticated usage, enable BetterAuth's `anonymous()` plugin. Anonymous users get real sessions with real user IDs — same auth pipeline, no special endpoints, no spoofable referenceIds.\n\n```ts\n// Server\nimport { anonymous } from \"better-auth/plugins/anonymous\"\nplugins: [anonymous(), usage({ ... })]\n\n// Client — auto sign-in\nawait authClient.signIn.anonymous()\n```\n\n## Authorization\n\nThe optional `authorizeUser` callback validates that an authenticated user can act on a given referenceId:\n\n```ts\nusage({\n    authorizeUser: async ({ userId, referenceId, referenceType, feature }) => {\n        // e.g., check if user belongs to org\n        return db.orgMembers.exists({ userId, orgId: referenceId })\n    },\n})\n```\n\nIf not provided, all authenticated users can act on any referenceId. Returns `false` → 403 Forbidden. Throws → 500 Internal Server Error.\n\n## Hooks\n\nFeatures support `before` and `after` hooks for custom business logic:\n\n```ts\nfeatures: {\n    \"storage\": {\n        hooks: {\n            before: ({ usage, feature }) => {\n                // Block consumption beyond limit\n                if (usage.afterAmount > (feature.maxLimit ?? Infinity)) {\n                    throw new Error(\"Storage limit exceeded — upgrade your plan\")\n                }\n            },\n            after: ({ usage, feature }) => {\n                // Send notification, log analytics, etc.\n            },\n        },\n    },\n}\n```\n\n> The plugin does **not** block on over-limit by default. Consumption always succeeds and returns the `status`. Use a `before` hook to enforce hard limits.\n\n## REST Endpoints\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `/usage/use-feature` | POST | Consume usage (atomic) |\n| `/usage/consume` | POST | Raw consume (no limit check) |\n| `/usage/check` | POST | Check current usage vs limits |\n| `/usage/can-use` | POST | Entitlement check (read-only) |\n| `/usage/upsert-customer` | POST | Create or update customer + plan |\n| `/usage/check-customer` | POST | Get customer by referenceId |\n| `/usage/features` | GET | List all features |\n| `/usage/features/:key` | GET | Get single feature (query: `?overrideKey=pro`) |\n| `/usage/sync` | POST | Trigger reset if due |\n| `/usage/ws` | GET | WebSocket server URL discovery |\n\n## WebSocket API\n\nAll operations available over WebSocket with request-response correlation:\n\n| Client Event | Server Response | Description |\n|---|---|---|\n| `use-feature` | `use-feature:result` | Consume usage |\n| `consume` | `consume:result` | Raw consume |\n| `check` | `check:result` | Check usage |\n| `can-use` | `can-use:result` | Entitlement check |\n| `subscribe:usage` | `subscribed` | Subscribe to live updates |\n| — | `usage:updated` | Real-time push on any change |\n\n## Plan Transitions\n\nWhen a customer's `overrideKey` changes (including removal):\n\n```ts\nfeatures: {\n    \"api-calls\": { onPlanChange: \"carry-over\" },  // default — usage stays, limits change\n    \"credits\": { onPlanChange: \"reset\" },          // usage resets to resetValue\n}\n```\n\n## Reset Strategies\n\nAll boundaries computed in **UTC**.\n\n| Reset | Boundary |\n|-------|----------|\n| `hourly` | Start of next UTC hour |\n| `6-hourly` | Next 6-hour block |\n| `daily` | Tomorrow 00:00 UTC |\n| `weekly` | Next Monday 00:00 UTC |\n| `monthly` | 1st of next month |\n| `quarterly` | 1st of next quarter |\n| `yearly` | January 1st next year |\n| `never` | Never resets |\n\n## Redis\n\nOptional. Without it, the plugin works in DB-only mode.\n\nWith Redis:\n- **Lua scripts** for atomic increment + reset (<1ms)\n- **Redis Streams** as WAL for durable DB sync\n- **Pub/sub** for real-time WebSocket broadcasts\n- **Socket.IO** server for full WS API\n\n```ts\ncacheOptions: {\n    redisUrl: \"redis://localhost:6379\",\n    enableRealtime: true,    // Socket.IO server\n    port: 3178,              // WS server port (auto-discovered by client)\n    wal: {\n        enabled: true,\n        drainStrategy: \"subscribe\",  // zero idle cost (default)\n    },\n}\n```\n\n## DB Schema\n\nRegistered via BetterAuth's schema system:\n\n- **`usage`** — one row per (referenceId, feature): current total, last reset, WAL stream ID\n- **`usage_event`** — append-only history: deltas, events, overrideKey for billing\n- **`customer`** — referenceId → plan mapping with optional metadata\n\n## What's New in v0.2\n\n- **WebSocket-first transport** — full API over Socket.IO with REST fallback\n- **React hooks** — `useFeature`, `useSetReference`, `useAllEvents` with typed feature keys from server config\n- **Global auth** — `authorizeUser` callback replaces per-feature `authorizeReference`\n- **WS auto-discovery** — client discovers WS URL from server, fetches session token automatically\n- **Event logging** — per-feature event log with round-trip timing\n- **Request correlation** — concurrent WS operations don't cross-resolve\n- **No more `key`** — feature key derived from config object key\n- **No more thresholds/blocked** — userland responsibility, not ours\n- **Monotonic WAL guard** — `walStreamId` prevents stale overwrites on replay\n- **Serialized WAL drain** — no more overlapping drains from pub/sub\n- **Session middleware fix** — `middleware:` → `use:` (was silently ignored)\n\n## Development\n\n```bash\nbun run build              # Build (tsup — index, client, react)\nbun run test               # 135 tests (no Docker needed)\nbun run test:redis         # 11 Redis integration tests (needs Redis on port 6399)\nbun run test:perf          # Performance benchmarks\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}