@thecryptodonkey/toll-booth 1.1.2 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +71 -23
  2. package/dist/adapters/express.d.ts +15 -2
  3. package/dist/adapters/express.d.ts.map +1 -1
  4. package/dist/adapters/express.js +62 -16
  5. package/dist/adapters/express.js.map +1 -1
  6. package/dist/adapters/hono.d.ts +62 -0
  7. package/dist/adapters/hono.d.ts.map +1 -0
  8. package/dist/adapters/hono.js +202 -0
  9. package/dist/adapters/hono.js.map +1 -0
  10. package/dist/adapters/proxy-headers.d.ts.map +1 -1
  11. package/dist/adapters/proxy-headers.js +1 -0
  12. package/dist/adapters/proxy-headers.js.map +1 -1
  13. package/dist/adapters/web-standard.d.ts +9 -1
  14. package/dist/adapters/web-standard.d.ts.map +1 -1
  15. package/dist/adapters/web-standard.js +44 -9
  16. package/dist/adapters/web-standard.js.map +1 -1
  17. package/dist/backends/cln.d.ts.map +1 -1
  18. package/dist/backends/cln.js +5 -2
  19. package/dist/backends/cln.js.map +1 -1
  20. package/dist/backends/lnbits.d.ts.map +1 -1
  21. package/dist/backends/lnbits.js +5 -2
  22. package/dist/backends/lnbits.js.map +1 -1
  23. package/dist/backends/lnd.d.ts.map +1 -1
  24. package/dist/backends/lnd.js +4 -1
  25. package/dist/backends/lnd.js.map +1 -1
  26. package/dist/backends/phoenixd.d.ts.map +1 -1
  27. package/dist/backends/phoenixd.js +5 -2
  28. package/dist/backends/phoenixd.js.map +1 -1
  29. package/dist/booth.d.ts.map +1 -1
  30. package/dist/booth.js +36 -6
  31. package/dist/booth.js.map +1 -1
  32. package/dist/core/cashu-redeem.d.ts.map +1 -1
  33. package/dist/core/cashu-redeem.js +15 -5
  34. package/dist/core/cashu-redeem.js.map +1 -1
  35. package/dist/core/create-invoice.d.ts +1 -0
  36. package/dist/core/create-invoice.d.ts.map +1 -1
  37. package/dist/core/create-invoice.js +29 -3
  38. package/dist/core/create-invoice.js.map +1 -1
  39. package/dist/core/invoice-status.d.ts.map +1 -1
  40. package/dist/core/invoice-status.js +24 -11
  41. package/dist/core/invoice-status.js.map +1 -1
  42. package/dist/core/l402-rail.d.ts +11 -0
  43. package/dist/core/l402-rail.d.ts.map +1 -0
  44. package/dist/core/l402-rail.js +94 -0
  45. package/dist/core/l402-rail.js.map +1 -0
  46. package/dist/core/nwc-pay.d.ts.map +1 -1
  47. package/dist/core/nwc-pay.js +8 -4
  48. package/dist/core/nwc-pay.js.map +1 -1
  49. package/dist/core/payment-rail.d.ts +40 -0
  50. package/dist/core/payment-rail.d.ts.map +1 -0
  51. package/dist/core/payment-rail.js +13 -0
  52. package/dist/core/payment-rail.js.map +1 -0
  53. package/dist/core/toll-booth.d.ts +2 -1
  54. package/dist/core/toll-booth.d.ts.map +1 -1
  55. package/dist/core/toll-booth.js +143 -120
  56. package/dist/core/toll-booth.js.map +1 -1
  57. package/dist/core/types.d.ts +17 -2
  58. package/dist/core/types.d.ts.map +1 -1
  59. package/dist/core/types.js.map +1 -1
  60. package/dist/core/x402-rail.d.ts +4 -0
  61. package/dist/core/x402-rail.d.ts.map +1 -0
  62. package/dist/core/x402-rail.js +65 -0
  63. package/dist/core/x402-rail.js.map +1 -0
  64. package/dist/core/x402-types.d.ts +29 -0
  65. package/dist/core/x402-types.d.ts.map +1 -0
  66. package/dist/core/x402-types.js +7 -0
  67. package/dist/core/x402-types.js.map +1 -0
  68. package/dist/demo.js +6 -6
  69. package/dist/demo.js.map +1 -1
  70. package/dist/index.d.ts +10 -1
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +4 -0
  73. package/dist/index.js.map +1 -1
  74. package/dist/macaroon.d.ts +18 -2
  75. package/dist/macaroon.d.ts.map +1 -1
  76. package/dist/macaroon.js +61 -8
  77. package/dist/macaroon.js.map +1 -1
  78. package/dist/payment-page.d.ts.map +1 -1
  79. package/dist/payment-page.js +8 -1
  80. package/dist/payment-page.js.map +1 -1
  81. package/dist/stats.d.ts.map +1 -1
  82. package/dist/stats.js +4 -2
  83. package/dist/stats.js.map +1 -1
  84. package/dist/storage/interface.d.ts +10 -5
  85. package/dist/storage/interface.d.ts.map +1 -1
  86. package/dist/storage/interface.js +0 -1
  87. package/dist/storage/interface.js.map +1 -1
  88. package/dist/storage/memory.d.ts.map +1 -1
  89. package/dist/storage/memory.js +52 -15
  90. package/dist/storage/memory.js.map +1 -1
  91. package/dist/storage/sqlite.d.ts.map +1 -1
  92. package/dist/storage/sqlite.js +138 -28
  93. package/dist/storage/sqlite.js.map +1 -1
  94. package/dist/types.d.ts +23 -4
  95. package/dist/types.d.ts.map +1 -1
  96. package/package.json +22 -5
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAA4C,MAAM,gBAAgB,CAAA;AAI9F,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,cAAc,CAgV1E"}
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAA4C,MAAM,gBAAgB,CAAA;AAI9F,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,cAAc,CAkc1E"}
@@ -1,4 +1,5 @@
1
1
  // src/storage/sqlite.ts
2
+ import { timingSafeEqual } from 'node:crypto';
2
3
  import Database from 'better-sqlite3';
3
4
  const DEFAULT_LEASE_MS = 30_000;
4
5
  export function sqliteStorage(config) {
@@ -8,6 +9,8 @@ export function sqliteStorage(config) {
8
9
  CREATE TABLE IF NOT EXISTS credits (
9
10
  payment_hash TEXT PRIMARY KEY,
10
11
  balance INTEGER NOT NULL DEFAULT 0,
12
+ balance_sats INTEGER NOT NULL DEFAULT 0,
13
+ balance_usd INTEGER NOT NULL DEFAULT 0,
11
14
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
12
15
  updated_at TEXT NOT NULL DEFAULT (datetime('now'))
13
16
  )
@@ -63,26 +66,69 @@ export function sqliteStorage(config) {
63
66
  catch {
64
67
  // Column already exists — ignore
65
68
  }
66
- const stmtCredit = db.prepare(`
67
- INSERT INTO credits (payment_hash, balance)
68
- VALUES (?, ?)
69
+ // Migration: add client_ip column to invoices table.
70
+ try {
71
+ db.exec('ALTER TABLE invoices ADD COLUMN client_ip TEXT');
72
+ }
73
+ catch {
74
+ // Column already exists — ignore
75
+ }
76
+ // Migration: add dual-currency balance columns to credits table.
77
+ try {
78
+ db.exec('ALTER TABLE credits ADD COLUMN balance_sats INTEGER NOT NULL DEFAULT 0');
79
+ }
80
+ catch {
81
+ // Column already exists — ignore
82
+ }
83
+ try {
84
+ db.exec('ALTER TABLE credits ADD COLUMN balance_usd INTEGER NOT NULL DEFAULT 0');
85
+ }
86
+ catch {
87
+ // Column already exists — ignore
88
+ }
89
+ // Copy legacy balance into balance_sats for existing rows.
90
+ db.exec('UPDATE credits SET balance_sats = balance WHERE balance > 0 AND balance_sats = 0');
91
+ // Per-currency prepared statements for credit operations
92
+ const stmtCreditSat = db.prepare(`
93
+ INSERT INTO credits (payment_hash, balance, balance_sats)
94
+ VALUES (?, ?, ?)
69
95
  ON CONFLICT(payment_hash) DO UPDATE SET
70
96
  balance = balance + excluded.balance,
97
+ balance_sats = balance_sats + excluded.balance_sats,
98
+ updated_at = datetime('now')
99
+ `);
100
+ const stmtCreditUsd = db.prepare(`
101
+ INSERT INTO credits (payment_hash, balance_usd)
102
+ VALUES (?, ?)
103
+ ON CONFLICT(payment_hash) DO UPDATE SET
104
+ balance_usd = balance_usd + excluded.balance_usd,
71
105
  updated_at = datetime('now')
72
106
  `);
73
- const stmtDebit = db.prepare(`
74
- UPDATE credits SET balance = balance - ?, updated_at = datetime('now')
75
- WHERE payment_hash = ? AND balance >= ?
107
+ const stmtDebitSat = db.prepare(`
108
+ UPDATE credits SET balance = balance - ?, balance_sats = balance_sats - ?, updated_at = datetime('now')
109
+ WHERE payment_hash = ? AND balance_sats >= ?
76
110
  `);
77
- const stmtBalance = db.prepare('SELECT balance FROM credits WHERE payment_hash = ?');
111
+ const stmtDebitUsd = db.prepare(`
112
+ UPDATE credits SET balance_usd = balance_usd - ?, updated_at = datetime('now')
113
+ WHERE payment_hash = ? AND balance_usd >= ?
114
+ `);
115
+ const stmtBalanceSat = db.prepare('SELECT balance_sats AS balance FROM credits WHERE payment_hash = ?');
116
+ const stmtBalanceUsd = db.prepare('SELECT balance_usd AS balance FROM credits WHERE payment_hash = ?');
117
+ function debitFor(currency) { return currency === 'usd' ? stmtDebitUsd : stmtDebitSat; }
118
+ function balanceFor(currency) { return currency === 'usd' ? stmtBalanceUsd : stmtBalanceSat; }
78
119
  const stmtStoreInvoice = db.prepare(`
79
- INSERT OR IGNORE INTO invoices (payment_hash, bolt11, amount_sats, macaroon, status_token)
80
- VALUES (?, ?, ?, ?, ?)
120
+ INSERT OR IGNORE INTO invoices (payment_hash, bolt11, amount_sats, macaroon, status_token, client_ip)
121
+ VALUES (?, ?, ?, ?, ?, ?)
122
+ `);
123
+ const stmtPendingInvoiceCount = db.prepare(`
124
+ SELECT COUNT(*) as count FROM invoices i
125
+ LEFT JOIN settlements s ON i.payment_hash = s.payment_hash
126
+ WHERE i.client_ip = ? AND s.payment_hash IS NULL
81
127
  `);
82
128
  const stmtGetInvoice = db.prepare('SELECT payment_hash, bolt11, amount_sats, macaroon, created_at FROM invoices WHERE payment_hash = ?');
83
- const stmtGetInvoiceForStatus = db.prepare(`SELECT payment_hash, bolt11, amount_sats, macaroon, created_at
129
+ const stmtGetInvoiceWithToken = db.prepare(`SELECT payment_hash, bolt11, amount_sats, macaroon, status_token, created_at
84
130
  FROM invoices
85
- WHERE payment_hash = ? AND status_token = ?`);
131
+ WHERE payment_hash = ?`);
86
132
  const stmtSettle = db.prepare('INSERT OR IGNORE INTO settlements (payment_hash, settlement_secret) VALUES (?, ?)');
87
133
  const stmtIsSettled = db.prepare('SELECT 1 FROM settlements WHERE payment_hash = ?');
88
134
  const stmtGetSettlementSecret = db.prepare('SELECT settlement_secret FROM settlements WHERE payment_hash = ?');
@@ -112,10 +158,11 @@ export function sqliteStorage(config) {
112
158
  const stmtPruneInvoices = db.prepare(`
113
159
  DELETE FROM invoices
114
160
  WHERE datetime(created_at) <= datetime('now', '-' || ? || ' seconds')
161
+ AND payment_hash NOT IN (SELECT payment_hash FROM claims)
115
162
  `);
116
163
  const stmtPruneZeroCredits = db.prepare(`
117
164
  DELETE FROM credits
118
- WHERE balance <= 0
165
+ WHERE balance_sats <= 0 AND balance_usd <= 0
119
166
  AND datetime(updated_at) <= datetime('now', '-' || ? || ' seconds')
120
167
  `);
121
168
  const stmtPruneSettlements = db.prepare(`
@@ -135,10 +182,17 @@ export function sqliteStorage(config) {
135
182
  const r = stmtClaim.run(paymentHash, token, leaseExpiresAt);
136
183
  return r.changes > 0;
137
184
  });
138
- const txnSettleWithCredit = db.transaction((paymentHash, amount, settlementSecret) => {
185
+ const txnSettleWithCredit = db.transaction((paymentHash, amount, settlementSecret, currency = 'sat') => {
186
+ if (amount < 0)
187
+ throw new RangeError('settleWithCredit amount must not be negative');
139
188
  const r = stmtSettle.run(paymentHash, settlementSecret ?? null);
140
189
  if (r.changes > 0) {
141
- stmtCredit.run(paymentHash, amount);
190
+ if (currency === 'usd') {
191
+ stmtCreditUsd.run(paymentHash, amount);
192
+ }
193
+ else {
194
+ stmtCreditSat.run(paymentHash, amount, amount);
195
+ }
142
196
  stmtDeleteClaim.run(paymentHash);
143
197
  return true;
144
198
  }
@@ -157,27 +211,74 @@ export function sqliteStorage(config) {
157
211
  claimedAt: row.claimed_at,
158
212
  };
159
213
  });
160
- const txnDebit = db.transaction((paymentHash, amount) => {
161
- const row = stmtBalance.get(paymentHash);
214
+ const stmtAdjustCreditsSat = db.prepare(`
215
+ UPDATE credits SET
216
+ balance_sats = MAX(0, balance_sats + ?),
217
+ balance = MAX(0, balance + ?),
218
+ updated_at = datetime('now')
219
+ WHERE payment_hash = ?
220
+ `);
221
+ const stmtAdjustCreditsUsd = db.prepare(`
222
+ UPDATE credits SET balance_usd = MAX(0, balance_usd + ?), updated_at = datetime('now')
223
+ WHERE payment_hash = ?
224
+ `);
225
+ const txnAdjustCredits = db.transaction((paymentHash, delta, currency = 'sat') => {
226
+ const stmtBal = balanceFor(currency);
227
+ const row = stmtBal.get(paymentHash);
228
+ if (!row) {
229
+ const newBalance = Math.max(0, delta);
230
+ if (currency === 'usd') {
231
+ stmtCreditUsd.run(paymentHash, newBalance);
232
+ }
233
+ else {
234
+ stmtCreditSat.run(paymentHash, newBalance, newBalance);
235
+ }
236
+ return newBalance;
237
+ }
238
+ if (currency === 'usd') {
239
+ stmtAdjustCreditsUsd.run(delta, paymentHash);
240
+ }
241
+ else {
242
+ stmtAdjustCreditsSat.run(delta, delta, paymentHash);
243
+ }
244
+ const updated = stmtBal.get(paymentHash);
245
+ return updated.balance;
246
+ });
247
+ const txnDebit = db.transaction((paymentHash, amount, currency = 'sat') => {
248
+ const stmtBal = balanceFor(currency);
249
+ const row = stmtBal.get(paymentHash);
162
250
  const current = row?.balance ?? 0;
163
251
  if (current < amount) {
164
252
  return { success: false, remaining: current };
165
253
  }
166
- const result = stmtDebit.run(amount, paymentHash, amount);
254
+ const stmtDeb = debitFor(currency);
255
+ const result = currency === 'sat'
256
+ ? stmtDeb.run(amount, amount, paymentHash, amount)
257
+ : stmtDeb.run(amount, paymentHash, amount);
167
258
  if (result.changes === 0) {
168
259
  return { success: false, remaining: current };
169
260
  }
170
261
  return { success: true, remaining: current - amount };
171
262
  });
172
263
  return {
173
- credit(paymentHash, amount) {
174
- stmtCredit.run(paymentHash, amount);
264
+ credit(paymentHash, amount, currency = 'sat') {
265
+ if (amount <= 0)
266
+ throw new RangeError('credit amount must be positive');
267
+ if (currency === 'usd') {
268
+ stmtCreditUsd.run(paymentHash, amount);
269
+ }
270
+ else {
271
+ stmtCreditSat.run(paymentHash, amount, amount);
272
+ }
273
+ },
274
+ debit(paymentHash, amount, currency = 'sat') {
275
+ return txnDebit(paymentHash, amount, currency);
175
276
  },
176
- debit(paymentHash, amount) {
177
- return txnDebit(paymentHash, amount);
277
+ adjustCredits(paymentHash, delta, currency = 'sat') {
278
+ return txnAdjustCredits(paymentHash, delta, currency);
178
279
  },
179
- balance(paymentHash) {
180
- const row = stmtBalance.get(paymentHash);
280
+ balance(paymentHash, currency = 'sat') {
281
+ const row = balanceFor(currency).get(paymentHash);
181
282
  return row?.balance ?? 0;
182
283
  },
183
284
  settle(paymentHash) {
@@ -187,8 +288,8 @@ export function sqliteStorage(config) {
187
288
  isSettled(paymentHash) {
188
289
  return !!stmtIsSettled.get(paymentHash);
189
290
  },
190
- settleWithCredit(paymentHash, amount, settlementSecret) {
191
- return txnSettleWithCredit(paymentHash, amount, settlementSecret);
291
+ settleWithCredit(paymentHash, amount, settlementSecret, currency = 'sat') {
292
+ return txnSettleWithCredit(paymentHash, amount, settlementSecret, currency);
192
293
  },
193
294
  getSettlementSecret(paymentHash) {
194
295
  const row = stmtGetSettlementSecret.get(paymentHash);
@@ -216,8 +317,12 @@ export function sqliteStorage(config) {
216
317
  const result = stmtExtendRecoveryLease.run(leaseExpiresAt, paymentHash);
217
318
  return result.changes > 0;
218
319
  },
219
- storeInvoice(paymentHash, bolt11, amountSats, macaroon, statusToken) {
220
- stmtStoreInvoice.run(paymentHash, bolt11, amountSats, macaroon, statusToken);
320
+ storeInvoice(paymentHash, bolt11, amountSats, macaroon, statusToken, clientIp) {
321
+ stmtStoreInvoice.run(paymentHash, bolt11, amountSats, macaroon, statusToken, clientIp ?? null);
322
+ },
323
+ pendingInvoiceCount(clientIp) {
324
+ const row = stmtPendingInvoiceCount.get(clientIp);
325
+ return row.count;
221
326
  },
222
327
  getInvoice(paymentHash) {
223
328
  const row = stmtGetInvoice.get(paymentHash);
@@ -232,9 +337,14 @@ export function sqliteStorage(config) {
232
337
  };
233
338
  },
234
339
  getInvoiceForStatus(paymentHash, statusToken) {
235
- const row = stmtGetInvoiceForStatus.get(paymentHash, statusToken);
340
+ const row = stmtGetInvoiceWithToken.get(paymentHash);
236
341
  if (!row)
237
342
  return undefined;
343
+ // Timing-safe comparison to prevent token enumeration via timing side-channel
344
+ const storedBuf = Buffer.from(row.status_token);
345
+ const providedBuf = Buffer.from(statusToken);
346
+ if (storedBuf.length !== providedBuf.length || !timingSafeEqual(storedBuf, providedBuf))
347
+ return undefined;
238
348
  return {
239
349
  paymentHash: row.payment_hash,
240
350
  bolt11: row.bolt11,
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -43,13 +43,16 @@ export interface LightningBackend {
43
43
  */
44
44
  checkInvoice(paymentHash: string): Promise<InvoiceStatus>;
45
45
  }
46
+ import type { Currency, PricingEntry } from './core/payment-rail.js';
47
+ import type { X402RailConfig } from './core/x402-types.js';
46
48
  /**
47
- * Pricing table mapping route patterns to amounts in satoshis.
49
+ * Pricing table mapping route patterns to amounts.
48
50
  *
49
- * Keys are route patterns (e.g. `"/route"`) and values are the
50
- * required payment amount in satoshis.
51
+ * Keys are route patterns (e.g. `"/route"`). Values are either a number
52
+ * (satoshis, backward-compatible) or a PriceInfo object for dual-currency
53
+ * pricing (e.g. `{ sats: 10, usd: 1 }`).
51
54
  */
52
- export type PricingTable = Record<string, number>;
55
+ export type PricingTable = Record<string, PricingEntry>;
53
56
  /**
54
57
  * A credit tier offering volume discounts.
55
58
  *
@@ -63,6 +66,10 @@ export interface CreditTier {
63
66
  creditSats: number;
64
67
  /** Human-readable label for this tier. */
65
68
  label: string;
69
+ /** x402 tier amount in cents (USD). */
70
+ amountUsd?: number;
71
+ /** x402 tier credit in cents (USD). */
72
+ creditUsd?: number;
66
73
  }
67
74
  /**
68
75
  * Configuration for a toll-booth instance.
@@ -145,6 +152,8 @@ export interface BoothConfig {
145
152
  * When provided, the payment page shows a Cashu option.
146
153
  */
147
154
  redeemCashu?: (token: string, paymentHash: string) => Promise<number>;
155
+ /** x402 stablecoin payment rail configuration. */
156
+ x402?: X402RailConfig;
148
157
  /**
149
158
  * Timeout in milliseconds for upstream proxy requests.
150
159
  * Defaults to 30000 (30 seconds).
@@ -156,6 +165,13 @@ export interface BoothConfig {
156
165
  * Default: 86400000 (24 hours).
157
166
  */
158
167
  invoiceMaxAgeMs?: number;
168
+ /**
169
+ * Rate limit for invoice creation. When configured, limits the number of
170
+ * pending (unpaid) invoices per client IP.
171
+ */
172
+ invoiceRateLimit?: {
173
+ maxPendingPerIp: number;
174
+ };
159
175
  }
160
176
  /**
161
177
  * A record of a payment event stored for audit and idempotency purposes.
@@ -164,6 +180,8 @@ export interface PaymentEvent {
164
180
  timestamp: string;
165
181
  paymentHash: string;
166
182
  amountSats: number;
183
+ currency?: Currency;
184
+ rail?: string;
167
185
  }
168
186
  /**
169
187
  * A record of an incoming HTTP request, used for analytics and
@@ -177,6 +195,7 @@ export interface RequestEvent {
177
195
  latencyMs: number;
178
196
  authenticated: boolean;
179
197
  clientIp: string;
198
+ currency?: Currency;
180
199
  }
181
200
  /**
182
201
  * A record of a 402 challenge issued to a client.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@thecryptodonkey/toll-booth",
3
- "version": "1.1.2",
3
+ "version": "1.2.1",
4
4
  "type": "module",
5
- "description": "Any API becomes a Lightning toll booth in one line. L402 middleware for Express, Deno, Bun, and Workers.",
5
+ "description": "Monetise any API with HTTP 402 payments. Payment-rail agnostic middleware for Express, Hono, Deno, Bun, and Workers.",
6
6
  "license": "MIT",
7
7
  "keywords": [
8
8
  "l402",
@@ -16,20 +16,25 @@
16
16
  "nwc",
17
17
  "bitcoin",
18
18
  "express",
19
+ "hono",
19
20
  "deno",
20
21
  "bun",
21
22
  "cloudflare-workers",
22
23
  "serverless",
24
+ "typescript",
23
25
  "macaroon",
24
26
  "http-402",
25
27
  "api-monetisation",
26
- "payment-gateway"
28
+ "payment-gateway",
29
+ "ai-agents",
30
+ "machine-payments"
27
31
  ],
28
32
  "repository": {
29
33
  "type": "git",
30
34
  "url": "git+https://github.com/TheCryptoDonkey/toll-booth.git"
31
35
  },
32
36
  "homepage": "https://github.com/TheCryptoDonkey/toll-booth#readme",
37
+ "funding": "https://github.com/TheCryptoDonkey/toll-booth#support",
33
38
  "bin": {
34
39
  "toll-booth": "dist/cli.js"
35
40
  },
@@ -73,6 +78,10 @@
73
78
  "./adapters/web-standard": {
74
79
  "import": "./dist/adapters/web-standard.js",
75
80
  "types": "./dist/adapters/web-standard.d.ts"
81
+ },
82
+ "./hono": {
83
+ "import": "./dist/adapters/hono.js",
84
+ "types": "./dist/adapters/hono.d.ts"
76
85
  }
77
86
  },
78
87
  "files": [
@@ -86,7 +95,8 @@
86
95
  "test:integration:ln": "bash scripts/test-integration.sh --ln-only",
87
96
  "test:integration:cashu": "bash scripts/test-integration.sh --cashu-only",
88
97
  "typecheck": "tsc --noEmit",
89
- "prepublishOnly": "npm run build && npm test"
98
+ "prepublishOnly": "npm run build && npm test",
99
+ "prepare": "patch-package"
90
100
  },
91
101
  "dependencies": {
92
102
  "better-sqlite3": "^11.8.0",
@@ -94,20 +104,27 @@
94
104
  "qrcode": "^1.5.4"
95
105
  },
96
106
  "peerDependencies": {
97
- "express": "^4.0.0 || ^5.0.0"
107
+ "express": "^4.0.0 || ^5.0.0",
108
+ "hono": "^4.0.0"
98
109
  },
99
110
  "peerDependenciesMeta": {
100
111
  "express": {
101
112
  "optional": true
113
+ },
114
+ "hono": {
115
+ "optional": true
102
116
  }
103
117
  },
104
118
  "devDependencies": {
105
119
  "@cashu/cashu-ts": "^3.5.0",
120
+ "@hono/node-server": "^1.19.11",
106
121
  "@types/better-sqlite3": "^7.6.0",
107
122
  "@types/express": "^5.0.6",
108
123
  "@types/qrcode": "^1.5.6",
109
124
  "@types/ws": "^8.18.1",
110
125
  "express": "^5.2.1",
126
+ "hono": "^4.12.7",
127
+ "patch-package": "^8.0.1",
111
128
  "tsx": "^4.21.0",
112
129
  "typescript": "^5.7.0",
113
130
  "vitest": "^3.0.0"