{"_id":"@thecryptodonkey/toll-booth","_rev":"28-f569ea72cb7b53f4d7a27f1a155e2b3d","name":"@thecryptodonkey/toll-booth","dist-tags":{"latest":"3.8.0"},"versions":{"1.0.0":{"name":"@thecryptodonkey/toll-booth","version":"1.0.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","deno","bun","cloudflare-workers","serverless","macaroon","http-402","api-monetisation","payment-gateway"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@1.0.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"dist":{"shasum":"add6b072f14ac56beb04da2107dddbc449ad639c","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-1.0.0.tgz","fileCount":100,"integrity":"sha512-FX2i+wrVqftM60OigXWQEK9nWbjebEZTycE+kE1rCs5mrqc1rD+7OqYrcmqdY3Xel7pgb9xOwV+iqZnE5vQ29g==","signatures":[{"sig":"MEUCICQ0TUT9a2YS9LVsRGvCNZD0lWk9XWqNduzPGuwBbRi+AiEAymTDdw6To5V18DJjpX6zeygpwOJCpP4ncrQKZ85I4rU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260057},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/alby":{"types":"./dist/backends/alby.d.ts","import":"./dist/backends/alby.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"gitHead":"04624c1694e2e4dbd900a58f1cae9f4bac96f799","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"10.9.4","description":"L402 Lightning payment middleware for any Node.js framework — Express, Deno, Bun","directories":{},"_nodeVersion":"22.22.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","express":"^5.2.1","@types/ws":"^8.18.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{"ws":"^8.19.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_1.0.0_1773265539377_0.9354568381231572","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@thecryptodonkey/toll-booth","version":"1.0.3","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","deno","bun","cloudflare-workers","serverless","macaroon","http-402","api-monetisation","payment-gateway"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@1.0.3","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"dist":{"shasum":"bd9caf2dd725549a7e7672734f88fefe5d42a89e","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-1.0.3.tgz","fileCount":100,"integrity":"sha512-XxNo+hkHDQYixOWFLLAQCiX5xVKotathFislAH6ShxZ8hqxTrg0xkmEka3YoyqMSoYkPCUUqhvfIPrbbWFtDbA==","signatures":[{"sig":"MEUCIQD6yIDJFIQEWRRcdTz0SJunl+43eAcj4GhCQGr/UZuyPAIgMNs7OeV+gWVVJzLA888YPZ/Qmgym1OJrLfMwmKB5U+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":260752},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/alby":{"types":"./dist/backends/alby.d.ts","import":"./dist/backends/alby.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"gitHead":"842a2eaee737f6508ada12049b4e2bf3a1ce2842","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d255524a-fe08-4632-ba82-54c84bb14516"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.9.0","description":"L402 Lightning payment middleware for any Node.js framework — Express, Deno, Bun","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","express":"^5.2.1","@types/ws":"^8.18.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{"ws":"^8.19.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_1.0.3_1773267668145_0.07859370020317225","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@thecryptodonkey/toll-booth","version":"1.1.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","deno","bun","cloudflare-workers","serverless","macaroon","http-402","api-monetisation","payment-gateway"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@1.1.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"d0f2dbc342f3817765c18de540e6ac1ad1c2b01f","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-1.1.0.tgz","fileCount":108,"integrity":"sha512-YfikrCdsJhOoB2wT6WbiFHqZqtGCt2iTB5y6I7o9Kl07l4H0p56PJAiLp3irDzynbhqzisFYHPe/U7Vw3lIYPA==","signatures":[{"sig":"MEUCIEZ9DMMNAlQt/IG0MOJnE+I/8a4wsJGijj7qlNRK0kL4AiEArOZ5ffBEcYE6gvbJLplD+zNlRpqYDtOdo/ZI0fMmgq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":286850},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/alby":{"types":"./dist/backends/alby.d.ts","import":"./dist/backends/alby.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"gitHead":"d2e964dba3a0716c5df1d32d6aa546acba449853","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d255524a-fe08-4632-ba82-54c84bb14516"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.9.0","description":"Any API becomes a Lightning toll booth in one line. L402 middleware for Express, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","express":"^5.2.1","@types/ws":"^8.18.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{"ws":"^8.19.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_1.1.0_1773314247316_0.05317739831574242","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@thecryptodonkey/toll-booth","version":"1.1.1","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","deno","bun","cloudflare-workers","serverless","macaroon","http-402","api-monetisation","payment-gateway"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@1.1.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"fb33eb88c3b21860477ade96605ad00931a9614a","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-1.1.1.tgz","fileCount":108,"integrity":"sha512-KVDRsRq4YUwdbkGbyuAtEQaoVQhXZk+062F9Wy3ZzOFpxknyqvgYWgNiUwXHP/4NbBmb2dLr24vjM6xUKfYjEA==","signatures":[{"sig":"MEUCIQDMBHeM8drgot9UvyWHfLi8V4O7y1sBLAcUXv+dzXjduAIgPel8xM0g7I8QRSrM2fEEO2WvPCvMC7LuZIopau6b1qc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":288267},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/alby":{"types":"./dist/backends/alby.d.ts","import":"./dist/backends/alby.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"gitHead":"fa486ee3a5ea15df3bf4faf9204891160a23fb1e","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d255524a-fe08-4632-ba82-54c84bb14516"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.9.0","description":"Any API becomes a Lightning toll booth in one line. L402 middleware for Express, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","express":"^5.2.1","@types/ws":"^8.18.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{"ws":"^8.19.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_1.1.1_1773314962632_0.5324114954395007","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@thecryptodonkey/toll-booth","version":"1.1.2","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","deno","bun","cloudflare-workers","serverless","macaroon","http-402","api-monetisation","payment-gateway"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@1.1.2","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"45aece0a19102979e9cf63a39dcd6869263b4e7c","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-1.1.2.tgz","fileCount":108,"integrity":"sha512-RFGZlYtl/MP8ZKJQcmOMGihH594OTDoEfXxO/OYGzA7TJX1aYixIg4HOmhnW4U5r+rxnzuotleIYGd8bM7oP1w==","signatures":[{"sig":"MEUCIQDH+w7RzaUeOlRk0UPVxeNSJlMTiW5wpJm6ROuU6i+6jgIgH7/HczgVOP6XMyk/bk5U6dxa1p/zRf32DcKOQEApiOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":287614},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/alby":{"types":"./dist/backends/alby.d.ts","import":"./dist/backends/alby.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"gitHead":"662e038fa967a9925c514d41f0f301c8d8e5855e","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d255524a-fe08-4632-ba82-54c84bb14516"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.9.0","description":"Any API becomes a Lightning toll booth in one line. L402 middleware for Express, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","express":"^5.2.1","@types/ws":"^8.18.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{"ws":"^8.19.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_1.1.2_1773315575224_0.31214800862509495","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@thecryptodonkey/toll-booth","version":"1.2.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@1.2.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"e578b1b2255b0e06b7c7300e43791d385cc289a8","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-1.2.0.tgz","fileCount":128,"integrity":"sha512-Yao3I8ohpNz3XWn5CL09OJ56UZ6iARgbjKXgcNKraXQmdwhreU/RCv9QMs8YpyOSMpsZYrdr2mDYU04t3VvUTA==","signatures":[{"sig":"MEQCIAdu6og3QlyRnPgFhaYgzjyw8daoIJeaI7FPomn5MVzWAiAp+YLmnBgdtCuHiqTlXobr2ZAGD1OGX6Vtedi0q0fflQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":374888},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/alby":{"types":"./dist/backends/alby.d.ts","import":"./dist/backends/alby.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"845c63ddfa011b55d74f298ce99aa9972a8a9e4e","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","typecheck":"tsc --noEmit","postinstall":"patch-package","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","@types/ws":"^8.18.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","@hono/node-server":"^1.19.11","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{"ws":"^8.19.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_1.2.0_1773393604020_0.568573025252888","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@thecryptodonkey/toll-booth","version":"1.2.1","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@1.2.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"cc164ec0057c3d1127fbfb7ba73286adade15a1b","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-1.2.1.tgz","fileCount":128,"integrity":"sha512-iHLX1PvVQPZdzUBqlK0hesdcN9JUJqJmpuxSnpztcayKQVU/4Mz1weprcLK9RgXLaxg8/5NQuQAZeeGb7KFv6Q==","signatures":[{"sig":"MEUCIQCS8Bw6Fy9NCCUp1c3UXWjmEooG0c7sHDvcYfeQMYK8igIgcM+02f/nOsUTVrpctSJqQSIm2l84D6DOONjO9qq3zbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":374884},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/alby":{"types":"./dist/backends/alby.d.ts","import":"./dist/backends/alby.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"a6352a9ce353a0531ec8b46ecbc76869e39c1de2","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","@types/ws":"^8.18.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","@hono/node-server":"^1.19.11","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{"ws":"^8.19.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_1.2.1_1773393765344_0.4991975674935576","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@thecryptodonkey/toll-booth","version":"1.3.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@1.3.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"ab77ce31a80cc69d2254643d514d256cd81fb926","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-1.3.0.tgz","fileCount":128,"integrity":"sha512-wGdy8jxYvpW/ZLx/dH093jphoynBunzEhjiHiqS6b5TXoueYmeYUs4khrw6tQqeij5e4TyZWrw1lNk7y4Z3pOA==","signatures":[{"sig":"MEYCIQDEI8NEbqct/zMSNUbLqei2tJgviMNt5M5w79y+b/J2sgIhAPeM46yMPiOD4RJSrWWTtNR/R4WENTHcSmFZywNCjDvs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":384086},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/alby":{"types":"./dist/backends/alby.d.ts","import":"./dist/backends/alby.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"e93f67542b9c808a43ec5094c51a151c0ee0e1c2","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","@types/ws":"^8.18.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","@hono/node-server":"^1.19.11","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{"ws":"^8.19.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_1.3.0_1773440529388_0.059936906613258234","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@thecryptodonkey/toll-booth","version":"1.3.1","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@1.3.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"cb04b3f75f03c6b8b9985ff6646e045889d3abdd","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-1.3.1.tgz","fileCount":128,"integrity":"sha512-ec/OcOzzkTxfbr3cMjyCcGzuUqJjw6KihP9CAWeq2YlcHqJ9dQ6+bnhom0h57DSO5LuGfG2UrzaYUPLbbgSvwQ==","signatures":[{"sig":"MEYCIQDyWDlunrOKnobts+TA9j0nnrvuQue1Rk3a8hVq51CL9gIhAOPzEGNbbVIbg6vuEihNqOt/pX6p0N3uUyAqiHGWVGUh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":390360},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/alby":{"types":"./dist/backends/alby.d.ts","import":"./dist/backends/alby.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"e85d03a79b3985ef852dd177584e0a57c75822b5","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","@types/ws":"^8.18.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","@hono/node-server":"^1.19.11","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{"ws":"^8.19.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_1.3.1_1773442001632_0.8494650602784892","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@thecryptodonkey/toll-booth","version":"1.4.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@1.4.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"d1f341f72f66bfffa31da0935d07472fb4d8c079","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-1.4.0.tgz","fileCount":128,"integrity":"sha512-2QUhLou0hiPh35OS2wAAhuI5+PPRYUnhdYYGadp+zamOO/9E/pT39kiPGQRCn/fDcQcQrS9PFxZb6IhKP8xNhA==","signatures":[{"sig":"MEQCIC2XcZvHINbJuPfQJAaflnPgI4N1LJFD0cCokoryPxJQAiAZesJ29QMOERd9rv9mlpw4aw8+8bDv22VO0Veq4WE/vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":397240},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/alby":{"types":"./dist/backends/alby.d.ts","import":"./dist/backends/alby.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"f36397be535f3ea33442289209c8fb2b9f48ef0c","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","@types/ws":"^8.18.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{"ws":"^8.19.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_1.4.0_1773480059808_0.5312156929330218","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@thecryptodonkey/toll-booth","version":"2.0.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@2.0.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"cd73c5ed901eb5d458b7638e29f801a4c9174fc3","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-2.0.0.tgz","fileCount":128,"integrity":"sha512-AP/u6bSH0NkNlFKZDEusjTPuxlkBXi/K+xzA5qD/BvHbtoyWQJBwB0xhiQXYtELaGotRxHhy9YKZttE17a8qrw==","signatures":[{"sig":"MEUCIQDe8hUBLJju7FcrItt94bkRISSpj7bGitaebfTSYtYHmQIgdlnZDRM74MUYx5pxVq7t26eZAbB/E0+C6cSORvWSWPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":390465},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"874f87067c9a80b33bb0f46f3dfb48773048ab78","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_2.0.0_1773494491316_0.030050658563572696","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@thecryptodonkey/toll-booth","version":"3.0.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.0.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"33ca86acf7bbd561f08abbbd919c6d52b21bad9b","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.0.0.tgz","fileCount":128,"integrity":"sha512-M1Y6P069oQ1y8jTwhu20wEjsOBVcuf4QB0x3VFtg9k8+4x2HB6hzLn2+t+w0ybsMuIT1J89CRd9HtDJ9lBGcfg==","signatures":[{"sig":"MEQCIEncEmssjE5yrNRO9IojlXxAC0Uftet7Ekn53L4BarIVAiBsWn0RD4NhGoNtnmc5qhU8Ps9rYFyiIumY7YUuZxCxjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":391730},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"e946d09eda38a42ec25491bfbab9d298541e0b47","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.0.0_1773508936862_0.5476891398321455","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@thecryptodonkey/toll-booth","version":"3.0.1","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.0.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"4cf129eaac085f1e71f504c2c80dfd3ba4c29672","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.0.1.tgz","fileCount":128,"integrity":"sha512-HM2vEWWKymCq0h0RpYG7g1ksQqc1iMl03/1hueGdQjscNFysRLAfivtrE2rJs5+VjXtXvlF3rvgC2+tt4XufIg==","signatures":[{"sig":"MEQCIFUKWF15lKh9D2adhf6sOZ1W2gS3j66pRk93jvAGAkUcAiBaAsS3NiPXDvkBL2xBwNpOCXZn8L7XamyKxuLO2iyMUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":391730},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"43fdbb948e24b0d70ff9951e958b1f5879421c39","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.0.1_1773515041126_0.43347238195400317","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@thecryptodonkey/toll-booth","version":"3.1.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.1.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"562cb70b64bb8571b6d6516b6a3514657739ed10","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.1.0.tgz","fileCount":128,"integrity":"sha512-gmly2JhUb1+CygmK3BCRLGCziEjDLza3MaElHG+Vupoh9erU1MwgMdDJt6PVDz1gP2sBnJ1xf6Lg0HD2RdDG1w==","signatures":[{"sig":"MEMCIGYB+fvXo6x7uUcQYOwler5FRartC9BFVPgfq0nn81x6Ah9j06ujjBmk1aRjaQR5jdBpbXckqtI3LhkWunbPszc9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":392612},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"080acb9552a936db769df14c79429fa605caf6b2","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.1.0_1773528196860_0.5857102378828896","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"@thecryptodonkey/toll-booth","version":"3.2.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.2.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"fe60d2e953386298e1010217fba150fd90821492","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.2.0.tgz","fileCount":128,"integrity":"sha512-+clY452xMtbGFnfgQ6neb3RtxSu3ha6eM8hvVF9wnm44QzlAs2yiAdB5f6d+7nDJ0VKXzd12DaQG+yKCHTDouw==","signatures":[{"sig":"MEQCID3yS+b0RRdLfOMdAIAn1IYxSAmWTSAwb0AgNHFT1b1OAiALUXYClf0onz7RBXplNdtNHAdLKyWvYN+e/Ep9xLYq7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":392612},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"784f0f8a82d6acaf1c588f7413f16a225a5901e4","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.2.0_1773528883014_0.8031564247786624","host":"s3://npm-registry-packages-npm-production"}},"3.2.1":{"name":"@thecryptodonkey/toll-booth","version":"3.2.1","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.2.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"fd2fe6978ba47e84322f749306f1b1ee17b5e0d4","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.2.1.tgz","fileCount":66,"integrity":"sha512-aFQ5Ru2y2HBcYUMU/T2NaMfjBh1wRXmRODocd11iD0zNN0GfAR9v0M1B4vF41ob/ofuut3JQIiQXSnRa/5hw/g==","signatures":[{"sig":"MEUCIElPCsvmZb8Dmrp3HOYoJO8YpYSWsna1QFbgz2u1RBXzAiEA4qdmld3Q0D84sezUwbuuBx6anIo91HTa7Fz2Zs1Jd2I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":241317},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"b7b337830af3e61a7d8b059733d1657b28f25a95","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.2.1_1773531515541_0.6374341466963316","host":"s3://npm-registry-packages-npm-production"}},"3.2.2":{"name":"@thecryptodonkey/toll-booth","version":"3.2.2","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.2.2","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"6df6f0e07670ab6dbd8e054f64c58e596925a1c5","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.2.2.tgz","fileCount":66,"integrity":"sha512-TOpO9Wn8i4BpG5ccKBdWlZeem3uzqM86W1bqMSBlb/m/VM/bRH+DPX1Q4Ninh0TncMWo5jQf2hFP1IMgsvdiVQ==","signatures":[{"sig":"MEYCIQCbdRf2sx3h/Qq9Ikme++OfvIcUTzHqmVqhsL6DBUX0RAIhAPZF67zays8TcL8TIqRxT6f5YSozsuuWVm96b9Uo6RVz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":244260},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"d245d2db4398bba73dc44e3d401013322a5441af","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.2.2_1773532968348_0.523135522793271","host":"s3://npm-registry-packages-npm-production"}},"3.2.4":{"name":"@thecryptodonkey/toll-booth","version":"3.2.4","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments","api-monetization","x402"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.2.4","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"14b99745b30052352c97434d87f51441bb8a7747","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.2.4.tgz","fileCount":66,"integrity":"sha512-Q2DrdrBRabVPVKOOAyv5i7VFL60msR1vdvQMoXLX0PioQHsuXsXCiSYfjMzuECMATh/P7xst6tAFbn6kUMBWIQ==","signatures":[{"sig":"MEUCIGobA58UWoYm3T/5TnQBeTn+E6ZiN5pTUTsO9H/vOY8XAiEA4uN12250EqH9PA6P0Hvj90qnWDUvVbC5tqWJWWPX/OY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":247903},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"c52b3196d5d97c38e952f46f11540b372a3ba084","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.2.4_1773536074994_0.17924934546227167","host":"s3://npm-registry-packages-npm-production"}},"3.2.5":{"name":"@thecryptodonkey/toll-booth","version":"3.2.5","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments","api-monetization","x402"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.2.5","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"bfd16171138ea8f29f7f13eaecdc224fe6b869d6","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.2.5.tgz","fileCount":66,"integrity":"sha512-FhtQ1YCgowqQ5ld1jkk9RUzPgSnkDJMSjqc4c090fF4VIhKQ2TtwUsT+gjkmqGlZEcDdGE4kTLmToQuaDXukTw==","signatures":[{"sig":"MEYCIQDPbizkzXbGZ8FfcbHNOgYmScDpPbAnkxmcOiNsFbvdVAIhAIaH+4/uFZgOIQC4FfEN+3VKZABB2Vrqp3etyJe/l+My","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":248399},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"bee0265b512969886e63d59bd6772e16f3997d5d","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.2.5_1773536452019_0.16306802694086375","host":"s3://npm-registry-packages-npm-production"}},"3.2.6":{"name":"@thecryptodonkey/toll-booth","version":"3.2.6","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments","api-monetization","x402"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.2.6","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"597041d35d606a0f0ec6150e114b00767ba8c4a7","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.2.6.tgz","fileCount":66,"integrity":"sha512-PChX5vwRhq28Jdlruyswfu/UeY7fBvXdoUxRSw9J/QtYrtGeu1Id1FlZls4feRexKkAbEJjQ5lLVRAioKmzwBQ==","signatures":[{"sig":"MEYCIQCiwwpXhifaeZr7a4CyiCXRlNE5rAJe4TrnO5jfYOUVswIhANp7CVa+ou7u5G2stoaj7SppqOFq5lr6buOtsxrQOqjY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":248399},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"e9c9d545b8313ebf1331ccbee5613d09a8cac972","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.2.6_1773539054181_0.7305364113851465","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"@thecryptodonkey/toll-booth","version":"3.3.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments","api-monetization","x402"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.3.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"1f907e137ec37c2e0068aa360b4f5f66ec46e7de","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.3.0.tgz","fileCount":66,"integrity":"sha512-6Tlu+mwDikbV6DmoShXNBHg/dDjbhJftUnQ53EcsHJpkC9nZbFI/roSFsciNRkn/+88W91O5bRUqpvyF7ZXmag==","signatures":[{"sig":"MEUCIQDp0AyVhctZX5Qm+eUCdYn1KI07WdTiV/hb46Yx8FQrzQIgKss1Ar0ze82ZSHAvlyyk61QtOjTLc4iLPCeA7kUq+1c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":248399},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"c57eaff83744432de29f647e1d3f37454abdf838","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.3.0_1773539723391_0.19910253561406321","host":"s3://npm-registry-packages-npm-production"}},"3.3.1":{"name":"@thecryptodonkey/toll-booth","version":"3.3.1","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments","api-monetization","x402"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.3.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"ee6f71e788ca48843296aba994bc425e10cdf5d8","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.3.1.tgz","fileCount":66,"integrity":"sha512-8541qTZ7X9+1jMimPKLF9tHOa9Ms3HGfPJqy/kEOLnr7xBNsoRH3P6ESWyAYEmwVpT0l1i500X3IfYo3Ocv2Sg==","signatures":[{"sig":"MEQCIHf+68fwNk0sy/bla3b31+qY+G/uSL1Wc7wV7C90RTcXAiBnOq3bIru7FvahWroo16tgByrBGXqu3fRmtnEGaFbpTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":248399},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"6b0f680e6b5c5ca1ff9d5f9965473df76738f180","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.3.1_1773541986969_0.035075541787401354","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"@thecryptodonkey/toll-booth","version":"3.4.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments","api-monetization","x402"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.4.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"47edad0864cedeaa183f9056645965e6450f3623","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.4.0.tgz","fileCount":66,"integrity":"sha512-iUsaoBt5dtp9WhXGfIg9ZM8YQSjl8AIqZv2DnPlp99ELOFKhWaBYgDzoOpzEfbIEmqG+V8W4ZU/zuPYGSnzV7A==","signatures":[{"sig":"MEQCIHZl4ZTYlJeX2WFwW9WS12bvFnoYzLULTaGYfY6nupadAiBEiwV6lT9HcDZno25YmRDeH34GeK3rnbgiqrwt93PxMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":248566},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"47f6edb50c478dfb3d34db6fda9ef339721b189b","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","@cashu/cashu-ts":"^3.5.0","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"optionalDependencies":{},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.4.0_1773567838431_0.30616372228579314","host":"s3://npm-registry-packages-npm-production"}},"3.5.0":{"name":"@thecryptodonkey/toll-booth","version":"3.5.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments","api-monetization","x402"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.5.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"37ea3e0002708dff80f0872b9db3b9d5ca6b99d8","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.5.0.tgz","fileCount":68,"integrity":"sha512-fxU2jd7dWBDf/UgIqWLz/Y7DBTN8j3lK8zWoiaFqfstfn1rfJ4L0R0VYcD9uSOF8R4OcJEFUTI5DrHoxEn2p9Q==","signatures":[{"sig":"MEQCIHBewKRxFnUyGDKIH/9A4heyYf7jfCTtbE+/kAUraQ42AiBw70ylhNhBi9JFEdUc1osbQOQcn8XBkf/vK2P7Fue0DQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":255621},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"3d100350505c1cd82b6512a99bb50dd4702698b9","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0","@cashu/cashu-ts":"^3.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.5.0_1773748732214_0.8176651822556344","host":"s3://npm-registry-packages-npm-production"}},"3.6.0":{"name":"@thecryptodonkey/toll-booth","version":"3.6.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments","api-monetization","x402"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.6.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"f470706e8864423b602a3640509a0bc4924b9280","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.6.0.tgz","fileCount":70,"integrity":"sha512-WQJ0AnvTxjxsxFme61yIGIGPFZoV63rQHYUrwSjzPKamNoPPS7C1rBuKGLul4qgiapfRF78hEpS4B+YmYnfwfQ==","signatures":[{"sig":"MEUCIQCoOLVbbmVu6lKZfXl41wQmt+/pPLVK7uXTmQ+Bzt6rVwIgSTI7ySNBn1M2JjJLAyTQy0/RGhiSK+egbF6p10WaWS4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":259537},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"ea7e3ed10464bc6e62973c3dbb3b347b94cbd01b","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0","@cashu/cashu-ts":"^3.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.6.0_1773758280301_0.7971763521948414","host":"s3://npm-registry-packages-npm-production"}},"3.7.0":{"name":"@thecryptodonkey/toll-booth","version":"3.7.0","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments","api-monetization","x402"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.7.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"7f8c0ee6345a127f3118677cdd2b6abfd0d2f1f4","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.7.0.tgz","fileCount":70,"integrity":"sha512-sS9UkmE3Og8vBHfwCCYpTL8cFnq7XYXRoFfx8s0lbgiQ29Bw/1W2p/Ta+k4h/1ihD/LdCpA3zeqyBPVaLtAzLg==","signatures":[{"sig":"MEQCIAcK6ggRz/0wFtCllXE2kAFnt0uiN54+4kuRNWnhYAgkAiBT2okZ8LQUy5aaOTYFzInyAsxrQ+XZ3zxeLmmN7uvktw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":260379},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"f01457589956edff5b469b92bab787caa643eb36","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0","@cashu/cashu-ts":"^3.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.7.0_1773819544625_0.482950346064706","host":"s3://npm-registry-packages-npm-production"}},"3.7.1":{"name":"@thecryptodonkey/toll-booth","version":"3.7.1","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments","api-monetization","x402"],"license":"MIT","_id":"@thecryptodonkey/toll-booth@3.7.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"bin":{"toll-booth":"dist/cli.js"},"dist":{"shasum":"3a46698dca17449cce21b8f9933726153ba31fa1","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.7.1.tgz","fileCount":70,"integrity":"sha512-aBxB4MCuniPQClE3NlzXFQPENRs9wd9LLDzBSP05sngGM+u5o9fB4ImylmTkl0Fysvis/YzrBNfW+oaYMwoXIQ==","signatures":[{"sig":"MEUCIHPhEnZe0eaiMqm7cBb8wlO1U1cfT/EZswIGu2mQJ9KxAiEA2KQvfJH9UQpLMKsrCRyqggDH5lfRghpQJ5l1efenuYw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":261404},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/adapters/hono.d.ts","import":"./dist/adapters/hono.js"},"./backends/cln":{"types":"./dist/backends/cln.d.ts","import":"./dist/backends/cln.js"},"./backends/lnd":{"types":"./dist/backends/lnd.d.ts","import":"./dist/backends/lnd.js"},"./backends/nwc":{"types":"./dist/backends/nwc.d.ts","import":"./dist/backends/nwc.js"},"./storage/memory":{"types":"./dist/storage/memory.d.ts","import":"./dist/storage/memory.js"},"./storage/sqlite":{"types":"./dist/storage/sqlite.d.ts","import":"./dist/storage/sqlite.js"},"./backends/lnbits":{"types":"./dist/backends/lnbits.d.ts","import":"./dist/backends/lnbits.js"},"./adapters/express":{"types":"./dist/adapters/express.d.ts","import":"./dist/adapters/express.js"},"./backends/phoenixd":{"types":"./dist/backends/phoenixd.d.ts","import":"./dist/backends/phoenixd.js"},"./adapters/web-standard":{"types":"./dist/adapters/web-standard.d.ts","import":"./dist/adapters/web-standard.js"}},"funding":"https://github.com/TheCryptoDonkey/toll-booth#support","gitHead":"3b718bfa4c6da8d04c64544f61de4c9788f11f8e","scripts":{"test":"vitest run","build":"rm -rf dist && tsc","prepare":"patch-package","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/toll-booth.git","type":"git"},"_npmVersion":"11.11.1","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"qrcode":"^1.5.4","macaroon":"^3.0.4","nostr-core":"^0.4.0","better-sqlite3":"^11.8.0","@cashu/cashu-ts":"^3.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","hono":"^4.12.7","vitest":"^3.0.0","express":"^5.2.1","typescript":"^5.7.0","@types/qrcode":"^1.5.6","patch-package":"^8.0.1","@types/express":"^5.0.6","semantic-release":"^25.0.3","@hono/node-server":"^1.19.11","@semantic-release/git":"^10.0.1","@types/better-sqlite3":"^7.6.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toll-booth_3.7.1_1773822848540_0.43148789646812347","host":"s3://npm-registry-packages-npm-production"}},"3.8.0":{"name":"@thecryptodonkey/toll-booth","version":"3.8.0","type":"module","description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","license":"MIT","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments","api-monetization","x402"],"repository":{"type":"git","url":"git+https://github.com/TheCryptoDonkey/toll-booth.git"},"homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","funding":"https://github.com/TheCryptoDonkey/toll-booth#support","bin":{"toll-booth":"dist/cli.js"},"exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./backends/phoenixd":{"import":"./dist/backends/phoenixd.js","types":"./dist/backends/phoenixd.d.ts"},"./backends/lnd":{"import":"./dist/backends/lnd.js","types":"./dist/backends/lnd.d.ts"},"./backends/cln":{"import":"./dist/backends/cln.js","types":"./dist/backends/cln.d.ts"},"./backends/nwc":{"import":"./dist/backends/nwc.js","types":"./dist/backends/nwc.d.ts"},"./backends/lnbits":{"import":"./dist/backends/lnbits.js","types":"./dist/backends/lnbits.d.ts"},"./storage/sqlite":{"import":"./dist/storage/sqlite.js","types":"./dist/storage/sqlite.d.ts"},"./storage/memory":{"import":"./dist/storage/memory.js","types":"./dist/storage/memory.d.ts"},"./adapters/express":{"import":"./dist/adapters/express.js","types":"./dist/adapters/express.d.ts"},"./adapters/web-standard":{"import":"./dist/adapters/web-standard.js","types":"./dist/adapters/web-standard.d.ts"},"./hono":{"import":"./dist/adapters/hono.js","types":"./dist/adapters/hono.d.ts"}},"scripts":{"build":"rm -rf dist && tsc","test":"vitest run","test:integration":"bash scripts/test-integration.sh","test:integration:ln":"bash scripts/test-integration.sh --ln-only","test:integration:cashu":"bash scripts/test-integration.sh --cashu-only","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test","prepare":"patch-package"},"dependencies":{"@cashu/cashu-ts":"^3.6.0","better-sqlite3":"^11.8.0","macaroon":"^3.0.4","nostr-core":"^0.4.0","qrcode":"^1.5.4"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0","hono":"^4.0.0"},"peerDependenciesMeta":{"express":{"optional":true},"hono":{"optional":true}},"devDependencies":{"@hono/node-server":"^1.19.11","@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@types/better-sqlite3":"^7.6.0","@types/express":"^5.0.6","@types/qrcode":"^1.5.6","express":"^5.2.1","hono":"^4.12.7","patch-package":"^8.0.1","semantic-release":"^25.0.3","tsx":"^4.21.0","typescript":"^5.7.0","vitest":"^3.0.0"},"gitHead":"978690d6027443e1e3dece1ce377605c7683b738","_id":"@thecryptodonkey/toll-booth@3.8.0","bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"_nodeVersion":"24.14.0","_npmVersion":"11.11.1","dist":{"integrity":"sha512-rj5dMMfQ6Xek7wluKbOQlVSVzMTyilhnv2EGeqigeuSlXNW4RQE8nhgBNsG4R/ZXnsopY9sPZ8O/Hc0eoBCJbQ==","shasum":"421a900d7091f83648ec17f9201b04fc67b19514","tarball":"https://registry.npmjs.org/@thecryptodonkey/toll-booth/-/toll-booth-3.8.0.tgz","fileCount":70,"unpackedSize":264737,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@thecryptodonkey%2ftoll-booth@3.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCRniUWDWOl8M0YP/6RumobOLb6Z3GXWHf+mljZs5hbiwIgHwrbLagWEoR7AIv7MQT+yL1KuONCr3jjlMcTscpjH4w="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4271af1-a6a9-4770-b713-645807b16c54"}},"directories":{},"maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/toll-booth_3.8.0_1773823699515_0.2239735377040568"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-11T21:45:39.321Z","modified":"2026-03-18T08:48:19.945Z","1.0.0":"2026-03-11T21:45:39.527Z","1.0.3":"2026-03-11T22:21:08.316Z","1.1.0":"2026-03-12T11:17:27.463Z","1.1.1":"2026-03-12T11:29:22.785Z","1.1.2":"2026-03-12T11:39:35.371Z","1.2.0":"2026-03-13T09:20:04.170Z","1.2.1":"2026-03-13T09:22:45.499Z","1.3.0":"2026-03-13T22:22:09.530Z","1.3.1":"2026-03-13T22:46:41.793Z","1.4.0":"2026-03-14T09:20:59.960Z","2.0.0":"2026-03-14T13:21:31.591Z","3.0.0":"2026-03-14T17:22:17.013Z","3.0.1":"2026-03-14T19:04:01.298Z","3.1.0":"2026-03-14T22:43:17.001Z","3.2.0":"2026-03-14T22:54:43.177Z","3.2.1":"2026-03-14T23:38:35.683Z","3.2.2":"2026-03-15T00:02:48.530Z","3.2.4":"2026-03-15T00:54:35.136Z","3.2.5":"2026-03-15T01:00:52.179Z","3.2.6":"2026-03-15T01:44:14.327Z","3.3.0":"2026-03-15T01:55:23.549Z","3.3.1":"2026-03-15T02:33:07.124Z","3.4.0":"2026-03-15T09:43:58.570Z","3.5.0":"2026-03-17T11:58:52.355Z","3.6.0":"2026-03-17T14:38:00.464Z","3.7.0":"2026-03-18T07:39:04.825Z","3.7.1":"2026-03-18T08:34:08.701Z","3.8.0":"2026-03-18T08:48:19.664Z"},"bugs":{"url":"https://github.com/TheCryptoDonkey/toll-booth/issues"},"license":"MIT","homepage":"https://github.com/TheCryptoDonkey/toll-booth#readme","keywords":["l402","lightning","paywall","micropayments","middleware","cashu","ecash","nostr","nwc","bitcoin","express","hono","deno","bun","cloudflare-workers","serverless","typescript","macaroon","http-402","api-monetisation","payment-gateway","ai-agents","machine-payments","api-monetization","x402"],"repository":{"type":"git","url":"git+https://github.com/TheCryptoDonkey/toll-booth.git"},"description":"Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"readme":"# toll-booth\n\n[![CI](https://github.com/TheCryptoDonkey/toll-booth/actions/workflows/ci.yml/badge.svg)](https://github.com/TheCryptoDonkey/toll-booth/actions/workflows/ci.yml)\n[![MIT licence](https://img.shields.io/badge/licence-MIT-blue.svg)](./LICENSE)\n[![Nostr](https://img.shields.io/badge/Nostr-Zap%20me-purple)](https://primal.net/p/npub1mgvlrnf5hm9yf0n5mf9nqmvarhvxkc6remu5ec3vf8r0txqkuk7su0e7q2)\n[![npm](https://img.shields.io/npm/v/@thecryptodonkey/toll-booth)](https://www.npmjs.com/package/@thecryptodonkey/toll-booth)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.8-blue)](https://www.typescriptlang.org/)\n[![Node](https://img.shields.io/badge/Node-%3E%3D18-green)](https://nodejs.org/)\n\n**Monetise any API with one line of code.**\n\n![toll-booth demo](demo/toll-booth-demo.gif)\n\n[Live demo](https://jokes.trotters.dev/) - pay 21 sats, get a joke. No account. No sign-up. ([API](https://jokes.trotters.dev/api/joke))\n\n### Try it now\n\n```bash\nnpx @thecryptodonkey/toll-booth demo\n```\n\nSpins up a fully working L402-gated joke API on localhost. Mock Lightning backend, in-memory storage, zero configuration. Scan the QR code from your terminal when the free tier runs out.\n\n---\n\n## Minimal example\n\n```typescript\nimport express from 'express'\nimport { Booth } from '@thecryptodonkey/toll-booth'\nimport { phoenixdBackend } from '@thecryptodonkey/toll-booth/backends/phoenixd'\n\nconst app = express()\nconst booth = new Booth({\n  adapter: 'express',\n  backend: phoenixdBackend({ url: 'http://localhost:9740', password: process.env.PHOENIXD_PASSWORD! }),\n  pricing: { '/api': 10 },           // 10 sats per request\n  upstream: 'http://localhost:8080',  // your existing API\n})\n\napp.get('/invoice-status/:paymentHash', booth.invoiceStatusHandler as express.RequestHandler)\napp.post('/create-invoice', booth.createInvoiceHandler as express.RequestHandler)\napp.use('/', booth.middleware as express.RequestHandler)\n\napp.listen(3000)\n```\n\n---\n\n## The old way vs toll-booth\n\n| | The old way | With toll-booth |\n|---|---|---|\n| **Step 1** | Create a Stripe account | `npm install @thecryptodonkey/toll-booth` |\n| **Step 2** | Verify your identity (KYC) | Set your pricing: `{ '/api': 10 }` |\n| **Step 3** | Integrate billing SDK | `app.use(booth.middleware)` |\n| **Step 4** | Build a sign-up page | Done. No sign-up page needed. |\n| **Step 5** | Handle webhooks, refunds, chargebacks | Done. Payments are final. |\n\n---\n\n## Five zeroes\n\nZero accounts. Zero API keys. Zero chargebacks. Zero KYC. Zero vendor lock-in.\n\nYour API earns money the moment it receives a request. Clients pay with Lightning, Cashu ecash, or NWC — no relationship with you required. Payments settle instantly and are cryptographically final — no disputes, no reversals, no Stripe risk reviews.\n\n---\n\n## See it in production\n\n[**satgate**](https://github.com/TheCryptoDonkey/satgate) is a pay-per-token AI inference proxy built on toll-booth. It monetises any OpenAI-compatible endpoint — Ollama, vLLM, llama.cpp — with one command. Token counting, model pricing, streaming reconciliation, capacity management. Everything else — payments, credits, free tier, macaroon auth — is toll-booth.\n\n~400 lines of product logic on top of the middleware. That's what \"monetise any API with one line of code\" looks like in practice.\n\n---\n\n## Let AI agents pay for your API\n\ntoll-booth is the **server side** of a two-part stack for machine-to-machine payments.\n[402-mcp](https://github.com/TheCryptoDonkey/402-mcp) is the **client side** - an MCP server that gives AI agents the ability to discover, pay, and consume L402-gated APIs autonomously.\n\n```\nAI Agent -> 402-mcp -> toll-booth -> Your API\n```\n\nAn agent using Claude, GPT, or any MCP-capable model can call your API, receive a 402 payment challenge, pay the Lightning invoice from its wallet, and retry - all without human intervention. No OAuth dance, no API key rotation, no billing portal.\n\n---\n\n## Live demo\n\nVisit [jokes.trotters.dev](https://jokes.trotters.dev/) in a browser to try it - get a free joke, hit the paywall, scan the QR code or pay with a browser wallet extension.\n\nOr use the API directly:\n\n```bash\n# Get a free joke (1 free per day per IP)\ncurl https://jokes.trotters.dev/api/joke\n\n# Free tier exhausted - request a Lightning invoice for 21 sats\ncurl -X POST https://jokes.trotters.dev/create-invoice\n\n# Pay the invoice with any Lightning wallet, then authenticate\ncurl -H \"Authorization: L402 <macaroon>:<preimage>\" https://jokes.trotters.dev/api/joke\n```\n\n---\n\n## Features\n\n- **L402 protocol** - industry-standard HTTP 402 payment flow with macaroon credentials\n- **Multiple Lightning backends** - Phoenixd, LND, CLN, LNbits, NWC (any Nostr Wallet Connect wallet)\n- **Alternative payment methods** - Cashu ecash tokens and xcashu (NUT-24) direct-header payments\n- **Cashu-only mode** - no Lightning node required; ideal for serverless and edge deployments\n- **Credit system** - pre-paid balance with volume discount tiers\n- **Free tier** - configurable daily allowance (IP-hashed, no PII stored)\n- **Privacy by design** - no personal data collected or stored; IP addresses are one-way hashed with a daily-rotating salt before any processing\n- **Self-service payment page** - QR codes, tier selector, wallet adapter buttons\n- **SQLite persistence** - WAL mode, automatic invoice expiry pruning\n- **Three framework adapters** - Express, Web Standard (Deno/Bun/Workers), and Hono\n- **Framework-agnostic core** - use the `Booth` facade or wire handlers directly\n\n---\n\n## Quick start\n\n```bash\nnpm install @thecryptodonkey/toll-booth\n```\n\n### Express\n\n```typescript\nimport express from 'express'\nimport { Booth } from '@thecryptodonkey/toll-booth'\nimport { phoenixdBackend } from '@thecryptodonkey/toll-booth/backends/phoenixd'\n\nconst app = express()\napp.use(express.json())\n\nconst booth = new Booth({\n  adapter: 'express',\n  backend: phoenixdBackend({\n    url: 'http://localhost:9740',\n    password: process.env.PHOENIXD_PASSWORD!,\n  }),\n  pricing: { '/api': 10 },           // 10 sats per request\n  upstream: 'http://localhost:8080',  // your API\n  rootKey: process.env.ROOT_KEY,      // 64 hex chars, required for production\n})\n\napp.get('/invoice-status/:paymentHash', booth.invoiceStatusHandler as express.RequestHandler)\napp.post('/create-invoice', booth.createInvoiceHandler as express.RequestHandler)\napp.use('/', booth.middleware as express.RequestHandler)\n\napp.listen(3000)\n```\n\n### Web Standard (Deno / Bun / Workers)\n\n```typescript\nimport { Booth } from '@thecryptodonkey/toll-booth'\nimport { lndBackend } from '@thecryptodonkey/toll-booth/backends/lnd'\n\nconst booth = new Booth({\n  adapter: 'web-standard',\n  backend: lndBackend({\n    url: 'https://localhost:8080',\n    macaroon: process.env.LND_MACAROON!,\n  }),\n  pricing: { '/api': 5 },\n  upstream: 'http://localhost:8080',\n})\n\n// Deno example\nDeno.serve({ port: 3000 }, async (req: Request) => {\n  const url = new URL(req.url)\n  if (url.pathname.startsWith('/invoice-status/'))\n    return booth.invoiceStatusHandler(req)\n  if (url.pathname === '/create-invoice' && req.method === 'POST')\n    return booth.createInvoiceHandler(req)\n  return booth.middleware(req)\n})\n```\n\n### Hono\n\n```typescript\nimport { Hono } from 'hono'\nimport { createHonoTollBooth, type TollBoothEnv } from '@thecryptodonkey/toll-booth/hono'\nimport { phoenixdBackend } from '@thecryptodonkey/toll-booth/backends/phoenixd'\nimport { createTollBooth } from '@thecryptodonkey/toll-booth'\nimport { sqliteStorage } from '@thecryptodonkey/toll-booth/storage/sqlite'\n\nconst storage = sqliteStorage({ path: './toll-booth.db' })\nconst engine = createTollBooth({\n  backend: phoenixdBackend({ url: 'http://localhost:9740', password: process.env.PHOENIXD_PASSWORD! }),\n  storage,\n  pricing: { '/api': 10 },\n  upstream: 'http://localhost:8080',\n  rootKey: process.env.ROOT_KEY!,\n})\n\nconst tollBooth = createHonoTollBooth({ engine })\nconst app = new Hono<TollBoothEnv>()\n\n// Mount payment routes\napp.route('/', tollBooth.createPaymentApp({\n  storage,\n  rootKey: process.env.ROOT_KEY!,\n  tiers: [],\n  defaultAmount: 1000,\n}))\n\n// Gate your API\napp.use('/api/*', tollBooth.authMiddleware)\napp.get('/api/resource', (c) => {\n  const balance = c.get('tollBoothCreditBalance')\n  return c.json({ message: 'Paid content', balance })\n})\n\nexport default app\n```\n\n### Cashu-only (no Lightning node)\n\n```typescript\nimport { Booth } from '@thecryptodonkey/toll-booth'\n\nconst booth = new Booth({\n  adapter: 'web-standard',\n  redeemCashu: async (token, paymentHash) => {\n    // Verify and redeem the ecash token with your Cashu mint\n    // Return the amount redeemed in satoshis\n    return amountRedeemed\n  },\n  pricing: { '/api': 5 },\n  upstream: 'http://localhost:8080',\n})\n```\n\nNo Lightning node, no channels, no liquidity management. Ideal for serverless and edge deployments.\n\n### xcashu (Cashu ecash via NUT-24)\n\n```typescript\nimport { Booth } from '@thecryptodonkey/toll-booth'\n\nconst booth = new Booth({\n  adapter: 'web-standard',\n  xcashu: {\n    mints: ['https://mint.minibits.cash'],\n    unit: 'sat',\n  },\n  pricing: { '/api': 10 },\n  upstream: 'http://localhost:3000',\n})\n```\n\nClients pay by sending `X-Cashu: cashuB...` tokens in the request header. Proofs are verified and swapped at the configured mint(s) using cashu-ts.\n\nUnlike the `redeemCashu` callback (which integrates Cashu into the L402 payment-and-redeem flow), `xcashu` is a self-contained payment rail: the client attaches a token directly to the API request and gets access in one step — no separate redeem endpoint required. Both rails can run simultaneously; the 402 challenge will include both `WWW-Authenticate` (L402) and `X-Cashu` headers.\n\n---\n\n## Lightning backends\n\n```typescript\nimport { phoenixdBackend } from '@thecryptodonkey/toll-booth/backends/phoenixd'\nimport { lndBackend } from '@thecryptodonkey/toll-booth/backends/lnd'\nimport { clnBackend } from '@thecryptodonkey/toll-booth/backends/cln'\nimport { lnbitsBackend } from '@thecryptodonkey/toll-booth/backends/lnbits'\nimport { nwcBackend } from '@thecryptodonkey/toll-booth/backends/nwc'\n```\n\nEach backend implements the `LightningBackend` interface (`createInvoice` + `checkInvoice`).\n\n| Backend | Status | Notes |\n|---------|--------|-------|\n| Phoenixd | Stable | Simplest self-hosted option |\n| LND | Stable | Industry standard |\n| CLN | Stable | Core Lightning REST API |\n| LNbits | Stable | Any LNbits instance - self-hosted or hosted |\n| NWC | Stable | Any Nostr Wallet Connect wallet (Alby Hub, Mutiny, Umbrel, Phoenix, etc.) — E2E encrypted via NIP-44 |\n\n---\n\n## Why not Aperture?\n\n[Aperture](https://github.com/lightninglabs/aperture) is Lightning Labs' production L402 reverse proxy. It's battle-tested and feature-rich. Use it if you can.\n\n| | Aperture | toll-booth |\n|---|---|---|\n| **Language** | Go binary | TypeScript middleware |\n| **Deployment** | Standalone reverse proxy | Embeds in your app, or runs as a gateway in front of any HTTP service |\n| **Lightning node** | Requires LND | Phoenixd, LND, CLN, LNbits, or none (Cashu-only) |\n| **Serverless** | No - long-running process | Yes - Web Standard adapter runs on Cloudflare Workers, Deno, Bun |\n| **Configuration** | YAML file | Programmatic (code) |\n\n---\n\n## What about x402?\n\n[x402](https://x402.org) is Coinbase's HTTP 402 payment protocol for on-chain stablecoins. Great — the more protocols normalising HTTP 402 as a payment primitive, the better for everyone.\n\ntoll-booth is **payment-rail agnostic**. It already supports Lightning (five backends), Cashu ecash, and Nostr Wallet Connect. x402 is on the roadmap as another pluggable backend. When it lands, a single toll-booth deployment will accept Lightning **and** x402 stablecoins **and** Cashu — simultaneously. The seller doesn't care how they get paid. They just want paid.\n\nThe unique value of toll-booth isn't any single payment rail. It's the **middleware layer**: gating, credit accounting, free tiers, volume discounts, upstream proxying, and macaroon credentials — all framework-agnostic, all runtime-agnostic, all payment-rail agnostic. Payment protocols are pluggable backends. toll-booth is the booth.\n\n---\n\n## Using toll-booth with any API\n\ntoll-booth works as a **reverse proxy gateway**, so the upstream API can be written in any language - C#, Go, Python, Ruby, Java, or anything else that speaks HTTP. The upstream service doesn't need to know about L402 or Lightning; it just receives normal requests.\n\n```\nClient ---> toll-booth (Node.js) ---> Your API (any language)\n                |                          |\n          L402 payment gating        Plain HTTP requests\n          Macaroon verification      X-Credit-Balance header added\n```\n\nPoint `upstream` at your existing service:\n\n```typescript\nconst booth = new Booth({\n  adapter: 'express',\n  backend: phoenixdBackend({ url: '...', password: '...' }),\n  pricing: { '/api/search': 5, '/api/generate': 20 },\n  upstream: 'http://my-dotnet-api:5000',  // ASP.NET, FastAPI, Gin, Rails...\n})\n```\n\nDeploy toll-booth as a sidecar (Docker Compose, Kubernetes) or as a standalone gateway in front of multiple services. See [`examples/valhalla-proxy/`](examples/valhalla-proxy/) for a complete Docker Compose reference - the Valhalla routing engine it gates is a C++ service.\n\n---\n\n## Production checklist\n\n- **Set a persistent `rootKey`** (64 hex chars / 32 bytes). Without it, a random key is generated per restart and all existing macaroons become invalid. Generate one with: `node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"`\n- Use a persistent `dbPath` (default: `./toll-booth.db`).\n- Enable `strictPricing: true` to prevent unpriced routes from bypassing billing.\n- Ensure your `pricing` keys match the paths the middleware actually sees (after mounting).\n- Set `trustProxy: true` when behind a reverse proxy, or provide a `getClientIp` callback for per-client free-tier isolation.\n- If you implement `redeemCashu`, make it idempotent for the same `paymentHash` - crash recovery depends on it.\n- Rate-limit `/create-invoice` at your reverse proxy - each call creates a real Lightning invoice.\n\n---\n\n## Example deployments\n\n### sats-for-laughs - build your own paid API\n\n[`examples/sats-for-laughs/`](examples/sats-for-laughs/) is the fastest path from \"I have an API\" to \"my API earns sats\". It's the same code that runs the [live demo](https://jokes.trotters.dev/). Includes a web frontend with QR codes and wallet adapter buttons, plus a JSON API for programmatic access. Clone it, change three env vars, deploy.\n\n```bash\ncd examples/sats-for-laughs\ncp .env.example .env          # add your Phoenixd credentials\ndocker compose up -d          # or: MOCK=true npm start\n```\n\nIncludes mock mode for local development (auto-settles invoices, no Lightning node needed), Docker Compose with Phoenixd, and a pre-generated pool of 100+ jokes across six topics.\n\n### valhalla-proxy - production reference\n\n[`examples/valhalla-proxy/`](examples/valhalla-proxy/) gates the [Valhalla](https://github.com/valhalla/valhalla) routing engine (a C++ service) behind Lightning payments. Full Docker Compose setup demonstrating toll-booth as a sidecar proxy in front of non-JavaScript infrastructure.\n\n---\n\n## Payment flow\n\n```mermaid\nsequenceDiagram\n    participant C as Client\n    participant T as toll-booth\n    participant U as Upstream API\n\n    C->>T: GET /api/resource\n    T->>T: Check free tier\n    alt Free tier available\n        T->>U: Proxy request\n        U-->>T: Response\n        T-->>C: 200 + X-Free-Remaining header\n    else Free tier exhausted\n        T-->>C: 402 + Invoice + Macaroon\n        C->>C: Pay via Lightning / Cashu / NWC\n        C->>T: GET /api/resource<br/>Authorization: L402 macaroon:preimage\n        T->>T: Verify macaroon + preimage\n        T->>T: Settle credit + debit cost\n        T->>U: Proxy request\n        U-->>T: Response\n        T-->>C: 200 + X-Credit-Balance header\n    end\n```\n\n1. Client requests a priced endpoint without credentials\n2. Free tier checked - if allowance remains, request passes through\n3. If exhausted - **402** response with BOLT-11 invoice + macaroon\n4. Client pays via Lightning, NWC, or Cashu\n5. Client sends `Authorization: L402 <macaroon>:<preimage>`\n6. Macaroon verified, credit deducted, request proxied upstream\n\n---\n\n## Configuration\n\nThe five most common options:\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `adapter` | `'express' \\| 'web-standard' \\| 'hono'` | Framework integration to use |\n| `backend` | `LightningBackend` | Lightning node (optional if using Cashu-only) |\n| `pricing` | `Record<string, number>` | Route pattern to cost in sats |\n| `upstream` | `string` | URL to proxy authorised requests to |\n| `freeTier` | `{ requestsPerDay: number }` or `{ creditsPerDay: number }` | Daily free allowance per IP (request-count or sats-budget) |\n\nSee [docs/configuration.md](docs/configuration.md) for the full reference including `rootKey`, `creditTiers`, `trustProxy`, `nwcPayInvoice`, `redeemCashu`, and all other options.\n\n---\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| **[Why L402?](docs/vision.md)** | The case for permissionless, machine-to-machine payments |\n| **[Architecture](docs/architecture.md)** | How toll-booth, satgate, and 402-mcp fit together |\n| **[Configuration](docs/configuration.md)** | Full reference for all Booth options |\n| **[Deployment](docs/deployment.md)** | Docker, nginx, Cloudflare Workers, Deno, Bun, Hono |\n| **[Security](docs/security.md)** | Threat model, macaroon security, hardening measures |\n| **[Migration](docs/migration.md)** | Upgrading from v1 to v2, and v2 to v3 |\n| **[Contributing](CONTRIBUTING.md)** | Development setup, conventions, adding backends |\n\n---\n\n## Ecosystem\n\n| Project | Role |\n|---------|------|\n| **[toll-booth](https://github.com/TheCryptoDonkey/toll-booth)** | **Payment-rail agnostic HTTP 402 middleware** |\n| [satgate](https://github.com/TheCryptoDonkey/satgate) | Production showcase — pay-per-token AI inference proxy (~400 lines on toll-booth) |\n| [402-mcp](https://github.com/TheCryptoDonkey/402-mcp) | Client side — AI agents discover, pay, and consume L402 APIs |\n\n---\n\n## Support\n\nIf you find toll-booth useful, consider sending a tip:\n\n- **Lightning:** `thedonkey@strike.me`\n- **Nostr zaps:** `npub1mgvlrnf5hm9yf0n5mf9nqmvarhvxkc6remu5ec3vf8r0txqkuk7su0e7q2`\n\n## Licence\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}