@thecryptodonkey/toll-booth 1.1.2 → 1.2.0
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.
- package/README.md +71 -23
- package/dist/adapters/express.d.ts +15 -2
- package/dist/adapters/express.d.ts.map +1 -1
- package/dist/adapters/express.js +62 -16
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/hono.d.ts +62 -0
- package/dist/adapters/hono.d.ts.map +1 -0
- package/dist/adapters/hono.js +202 -0
- package/dist/adapters/hono.js.map +1 -0
- package/dist/adapters/proxy-headers.d.ts.map +1 -1
- package/dist/adapters/proxy-headers.js +1 -0
- package/dist/adapters/proxy-headers.js.map +1 -1
- package/dist/adapters/web-standard.d.ts +9 -1
- package/dist/adapters/web-standard.d.ts.map +1 -1
- package/dist/adapters/web-standard.js +44 -9
- package/dist/adapters/web-standard.js.map +1 -1
- package/dist/backends/cln.d.ts.map +1 -1
- package/dist/backends/cln.js +5 -2
- package/dist/backends/cln.js.map +1 -1
- package/dist/backends/lnbits.d.ts.map +1 -1
- package/dist/backends/lnbits.js +5 -2
- package/dist/backends/lnbits.js.map +1 -1
- package/dist/backends/lnd.d.ts.map +1 -1
- package/dist/backends/lnd.js +4 -1
- package/dist/backends/lnd.js.map +1 -1
- package/dist/backends/phoenixd.d.ts.map +1 -1
- package/dist/backends/phoenixd.js +5 -2
- package/dist/backends/phoenixd.js.map +1 -1
- package/dist/booth.d.ts.map +1 -1
- package/dist/booth.js +36 -6
- package/dist/booth.js.map +1 -1
- package/dist/core/cashu-redeem.d.ts.map +1 -1
- package/dist/core/cashu-redeem.js +15 -5
- package/dist/core/cashu-redeem.js.map +1 -1
- package/dist/core/create-invoice.d.ts +1 -0
- package/dist/core/create-invoice.d.ts.map +1 -1
- package/dist/core/create-invoice.js +29 -3
- package/dist/core/create-invoice.js.map +1 -1
- package/dist/core/invoice-status.d.ts.map +1 -1
- package/dist/core/invoice-status.js +24 -11
- package/dist/core/invoice-status.js.map +1 -1
- package/dist/core/l402-rail.d.ts +11 -0
- package/dist/core/l402-rail.d.ts.map +1 -0
- package/dist/core/l402-rail.js +94 -0
- package/dist/core/l402-rail.js.map +1 -0
- package/dist/core/nwc-pay.d.ts.map +1 -1
- package/dist/core/nwc-pay.js +8 -4
- package/dist/core/nwc-pay.js.map +1 -1
- package/dist/core/payment-rail.d.ts +40 -0
- package/dist/core/payment-rail.d.ts.map +1 -0
- package/dist/core/payment-rail.js +13 -0
- package/dist/core/payment-rail.js.map +1 -0
- package/dist/core/toll-booth.d.ts +2 -1
- package/dist/core/toll-booth.d.ts.map +1 -1
- package/dist/core/toll-booth.js +143 -120
- package/dist/core/toll-booth.js.map +1 -1
- package/dist/core/types.d.ts +17 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/x402-rail.d.ts +4 -0
- package/dist/core/x402-rail.d.ts.map +1 -0
- package/dist/core/x402-rail.js +65 -0
- package/dist/core/x402-rail.js.map +1 -0
- package/dist/core/x402-types.d.ts +29 -0
- package/dist/core/x402-types.d.ts.map +1 -0
- package/dist/core/x402-types.js +7 -0
- package/dist/core/x402-types.js.map +1 -0
- package/dist/demo.js +6 -6
- package/dist/demo.js.map +1 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/macaroon.d.ts +18 -2
- package/dist/macaroon.d.ts.map +1 -1
- package/dist/macaroon.js +61 -8
- package/dist/macaroon.js.map +1 -1
- package/dist/payment-page.d.ts.map +1 -1
- package/dist/payment-page.js +8 -1
- package/dist/payment-page.js.map +1 -1
- package/dist/stats.d.ts.map +1 -1
- package/dist/stats.js +4 -2
- package/dist/stats.js.map +1 -1
- package/dist/storage/interface.d.ts +10 -5
- package/dist/storage/interface.d.ts.map +1 -1
- package/dist/storage/interface.js +0 -1
- package/dist/storage/interface.js.map +1 -1
- package/dist/storage/memory.d.ts.map +1 -1
- package/dist/storage/memory.js +52 -15
- package/dist/storage/memory.js.map +1 -1
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +138 -28
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/types.d.ts +23 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +22 -5
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
// src/adapters/hono.ts
|
|
2
|
+
import { Hono } from 'hono';
|
|
3
|
+
import { PAYMENT_HASH_RE } from '../core/types.js';
|
|
4
|
+
import { handleCreateInvoice } from '../core/create-invoice.js';
|
|
5
|
+
import { handleInvoiceStatus, renderInvoiceStatusHtml } from '../core/invoice-status.js';
|
|
6
|
+
import { handleNwcPay } from '../core/nwc-pay.js';
|
|
7
|
+
import { handleCashuRedeem } from '../core/cashu-redeem.js';
|
|
8
|
+
import { applyNoStoreHeaders, appendVary } from './proxy-headers.js';
|
|
9
|
+
const MAX_BODY_BYTES = 65_536;
|
|
10
|
+
/**
|
|
11
|
+
* Parses request body as JSON with a size limit.
|
|
12
|
+
* Returns undefined on oversized, empty, or malformed bodies.
|
|
13
|
+
*/
|
|
14
|
+
async function safeParseJson(c, maxBytes = MAX_BODY_BYTES) {
|
|
15
|
+
const contentLength = c.req.header('content-length');
|
|
16
|
+
if (contentLength !== undefined) {
|
|
17
|
+
const len = parseInt(contentLength, 10);
|
|
18
|
+
if (!Number.isFinite(len) || len < 0 || len > maxBytes)
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const text = await c.req.text();
|
|
23
|
+
if (new TextEncoder().encode(text).byteLength > maxBytes)
|
|
24
|
+
return undefined;
|
|
25
|
+
if (!text.trim())
|
|
26
|
+
return {};
|
|
27
|
+
return JSON.parse(text);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a Hono middleware that enforces L402 payment gating.
|
|
35
|
+
*
|
|
36
|
+
* On `challenge` results a 402 response is returned with invoice details.
|
|
37
|
+
* On `pass` or `proxy` results, context variables are set and the next
|
|
38
|
+
* handler is called:
|
|
39
|
+
* - `tollBoothAction`: `'proxy'` or `'pass'`
|
|
40
|
+
* - `tollBoothPaymentHash`: payment hash (proxy only)
|
|
41
|
+
* - `tollBoothEstimatedCost`: estimated cost in credits (proxy only)
|
|
42
|
+
* - `tollBoothCreditBalance`: remaining balance (proxy only)
|
|
43
|
+
* - `tollBoothFreeRemaining`: remaining free-tier requests (proxy only)
|
|
44
|
+
*/
|
|
45
|
+
export function createHonoTollBooth(config) {
|
|
46
|
+
const { engine } = config;
|
|
47
|
+
const authMiddleware = async (c, next) => {
|
|
48
|
+
const req = c.req.raw;
|
|
49
|
+
const ip = config.getClientIp?.(c)
|
|
50
|
+
?? c.req.header('x-forwarded-for')?.split(',')[0]?.trim()
|
|
51
|
+
?? '0.0.0.0';
|
|
52
|
+
const tollReq = {
|
|
53
|
+
method: req.method,
|
|
54
|
+
path: new URL(req.url).pathname,
|
|
55
|
+
headers: Object.fromEntries(req.headers.entries()),
|
|
56
|
+
ip,
|
|
57
|
+
body: req.body,
|
|
58
|
+
};
|
|
59
|
+
const result = await engine.handle(tollReq);
|
|
60
|
+
if (result.action === 'challenge') {
|
|
61
|
+
c.header('Cache-Control', 'no-store');
|
|
62
|
+
c.header('Pragma', 'no-cache');
|
|
63
|
+
c.header('X-Content-Type-Options', 'nosniff');
|
|
64
|
+
return c.json(result.body, result.status, result.headers);
|
|
65
|
+
}
|
|
66
|
+
// 'proxy' or 'pass' — set context variables and continue
|
|
67
|
+
if (result.action === 'proxy') {
|
|
68
|
+
c.set('tollBoothPaymentHash', result.paymentHash);
|
|
69
|
+
c.set('tollBoothEstimatedCost', result.estimatedCost);
|
|
70
|
+
c.set('tollBoothCreditBalance', result.creditBalance);
|
|
71
|
+
c.set('tollBoothFreeRemaining', result.freeRemaining);
|
|
72
|
+
}
|
|
73
|
+
c.set('tollBoothAction', result.action);
|
|
74
|
+
await next();
|
|
75
|
+
};
|
|
76
|
+
function createPaymentApp(paymentConfig) {
|
|
77
|
+
const app = new Hono();
|
|
78
|
+
const createInvoiceDeps = {
|
|
79
|
+
backend: paymentConfig.backend,
|
|
80
|
+
storage: paymentConfig.storage,
|
|
81
|
+
rootKey: paymentConfig.rootKey,
|
|
82
|
+
tiers: paymentConfig.tiers,
|
|
83
|
+
defaultAmount: paymentConfig.defaultAmount,
|
|
84
|
+
maxPendingPerIp: paymentConfig.maxPendingPerIp,
|
|
85
|
+
};
|
|
86
|
+
const invoiceStatusDeps = {
|
|
87
|
+
backend: paymentConfig.backend,
|
|
88
|
+
storage: paymentConfig.storage,
|
|
89
|
+
tiers: paymentConfig.tiers,
|
|
90
|
+
nwcEnabled: paymentConfig.nwcPay !== undefined,
|
|
91
|
+
cashuEnabled: paymentConfig.cashuRedeem !== undefined,
|
|
92
|
+
};
|
|
93
|
+
const noStore = (c) => {
|
|
94
|
+
c.header('Cache-Control', 'no-store');
|
|
95
|
+
c.header('Pragma', 'no-cache');
|
|
96
|
+
c.header('X-Content-Type-Options', 'nosniff');
|
|
97
|
+
};
|
|
98
|
+
// POST /create-invoice
|
|
99
|
+
app.post('/create-invoice', async (c) => {
|
|
100
|
+
const ip = paymentConfig.getClientIp?.(c)
|
|
101
|
+
?? config.getClientIp?.(c)
|
|
102
|
+
?? c.req.header('x-forwarded-for')?.split(',')[0]?.trim()
|
|
103
|
+
?? '0.0.0.0';
|
|
104
|
+
const body = await safeParseJson(c);
|
|
105
|
+
if (body === undefined) {
|
|
106
|
+
noStore(c);
|
|
107
|
+
return c.json({ error: 'Invalid JSON body' }, 400);
|
|
108
|
+
}
|
|
109
|
+
const result = await handleCreateInvoice(createInvoiceDeps, { ...body, clientIp: ip });
|
|
110
|
+
noStore(c);
|
|
111
|
+
if (!result.success) {
|
|
112
|
+
return c.json({ error: result.error, tiers: result.tiers }, (result.status ?? 400));
|
|
113
|
+
}
|
|
114
|
+
const d = result.data;
|
|
115
|
+
return c.json({
|
|
116
|
+
bolt11: d.bolt11,
|
|
117
|
+
payment_hash: d.paymentHash,
|
|
118
|
+
payment_url: d.paymentUrl,
|
|
119
|
+
amount_sats: d.amountSats,
|
|
120
|
+
credit_sats: d.creditSats,
|
|
121
|
+
macaroon: d.macaroon,
|
|
122
|
+
qr_svg: d.qrSvg,
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
// GET /invoice-status/:paymentHash
|
|
126
|
+
app.get('/invoice-status/:paymentHash', async (c) => {
|
|
127
|
+
const paymentHash = c.req.param('paymentHash');
|
|
128
|
+
if (!PAYMENT_HASH_RE.test(paymentHash)) {
|
|
129
|
+
return c.json({ error: 'Invalid payment hash' }, 400);
|
|
130
|
+
}
|
|
131
|
+
const token = c.req.query('token');
|
|
132
|
+
const statusToken = token && token.length <= 128 ? token : undefined;
|
|
133
|
+
const accept = c.req.header('accept') ?? '';
|
|
134
|
+
try {
|
|
135
|
+
if (accept.includes('text/html')) {
|
|
136
|
+
const { html, status } = await renderInvoiceStatusHtml(invoiceStatusDeps, paymentHash, statusToken);
|
|
137
|
+
const headers = appendVary(applyNoStoreHeaders(new Headers()), 'Accept');
|
|
138
|
+
headers.set('Content-Type', 'text/html; charset=utf-8');
|
|
139
|
+
return new Response(html, { status, headers });
|
|
140
|
+
}
|
|
141
|
+
const result = await handleInvoiceStatus(invoiceStatusDeps, paymentHash, statusToken);
|
|
142
|
+
if (!result.found) {
|
|
143
|
+
return c.json({ error: 'Invoice not found' }, 404);
|
|
144
|
+
}
|
|
145
|
+
c.header('Cache-Control', 'no-store');
|
|
146
|
+
c.header('Pragma', 'no-cache');
|
|
147
|
+
c.header('X-Content-Type-Options', 'nosniff');
|
|
148
|
+
c.header('Vary', 'Accept');
|
|
149
|
+
return c.json({ paid: result.paid, preimage: result.preimage, token_suffix: result.tokenSuffix });
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return c.json({ error: 'Failed to check invoice status' }, 502);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
// POST /nwc-pay (optional)
|
|
156
|
+
if (paymentConfig.nwcPay) {
|
|
157
|
+
const nwcDeps = {
|
|
158
|
+
nwcPay: paymentConfig.nwcPay,
|
|
159
|
+
storage: paymentConfig.storage,
|
|
160
|
+
};
|
|
161
|
+
app.post('/nwc-pay', async (c) => {
|
|
162
|
+
const body = await safeParseJson(c);
|
|
163
|
+
if (body === undefined) {
|
|
164
|
+
noStore(c);
|
|
165
|
+
return c.json({ error: 'Invalid JSON body' }, 400);
|
|
166
|
+
}
|
|
167
|
+
const result = await handleNwcPay(nwcDeps, body);
|
|
168
|
+
noStore(c);
|
|
169
|
+
if (result.success) {
|
|
170
|
+
return c.json({ preimage: result.preimage });
|
|
171
|
+
}
|
|
172
|
+
return c.json({ error: result.error }, result.status);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
// POST /cashu-redeem (optional)
|
|
176
|
+
if (paymentConfig.cashuRedeem) {
|
|
177
|
+
const cashuDeps = {
|
|
178
|
+
redeem: paymentConfig.cashuRedeem,
|
|
179
|
+
storage: paymentConfig.storage,
|
|
180
|
+
};
|
|
181
|
+
app.post('/cashu-redeem', async (c) => {
|
|
182
|
+
const body = await safeParseJson(c);
|
|
183
|
+
if (body === undefined) {
|
|
184
|
+
noStore(c);
|
|
185
|
+
return c.json({ error: 'Invalid JSON body' }, 400);
|
|
186
|
+
}
|
|
187
|
+
const result = await handleCashuRedeem(cashuDeps, body);
|
|
188
|
+
noStore(c);
|
|
189
|
+
if (result.success) {
|
|
190
|
+
return c.json({ credited: result.credited, token_suffix: result.tokenSuffix });
|
|
191
|
+
}
|
|
192
|
+
if ('state' in result) {
|
|
193
|
+
return c.json({ state: result.state, retryAfterMs: result.retryAfterMs }, 202);
|
|
194
|
+
}
|
|
195
|
+
return c.json({ error: result.error }, result.status);
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
return app;
|
|
199
|
+
}
|
|
200
|
+
return { authMiddleware, engine, createPaymentApp };
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=hono.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono.js","sourceRoot":"","sources":["../../src/adapters/hono.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-headers.d.ts","sourceRoot":"","sources":["../../src/adapters/proxy-headers.ts"],"names":[],"mappings":"AAYA,KAAK,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAE9E,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAWtE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CASvE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"proxy-headers.d.ts","sourceRoot":"","sources":["../../src/adapters/proxy-headers.ts"],"names":[],"mappings":"AAYA,KAAK,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAE9E,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAWtE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CASvE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAK7D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAWnE"}
|
|
@@ -30,6 +30,7 @@ export function stripProxyResponseHeaders(source) {
|
|
|
30
30
|
export function applyNoStoreHeaders(headers) {
|
|
31
31
|
headers.set('Cache-Control', 'no-store');
|
|
32
32
|
headers.set('Pragma', 'no-cache');
|
|
33
|
+
headers.set('X-Content-Type-Options', 'nosniff');
|
|
33
34
|
return headers;
|
|
34
35
|
}
|
|
35
36
|
export function appendVary(headers, value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-headers.js","sourceRoot":"","sources":["../../src/adapters/proxy-headers.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,oBAAoB;IACpB,qBAAqB;IACrB,IAAI;IACJ,SAAS;IACT,mBAAmB;IACnB,SAAS;CACV,CAAC,CAAA;AAIF,MAAM,UAAU,wBAAwB,CAAC,MAAoB;IAC3D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;IACpD,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAC/B,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAEtB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAoB;IAC5D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;IAEpD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IACjC,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,KAAa;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC1B,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7E,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAClD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAgB;IAChD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAE5C,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YACvC,IAAI,IAAI;gBAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"proxy-headers.js","sourceRoot":"","sources":["../../src/adapters/proxy-headers.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,oBAAoB;IACpB,qBAAqB;IACrB,IAAI;IACJ,SAAS;IACT,mBAAmB;IACnB,SAAS;CACV,CAAC,CAAA;AAIF,MAAM,UAAU,wBAAwB,CAAC,MAAoB;IAC3D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;IACpD,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAC/B,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAEtB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAoB;IAC5D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;IAEpD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IACjC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAA;IAChD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,KAAa;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC1B,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7E,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAClD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAgB;IAChD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAE5C,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YACvC,IAAI,IAAI;gBAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -36,13 +36,21 @@ export declare function createWebStandardMiddleware(engineOrConfig: TollBoothEng
|
|
|
36
36
|
* `{ paid, preimage }`.
|
|
37
37
|
*/
|
|
38
38
|
export declare function createWebStandardInvoiceStatusHandler(deps: InvoiceStatusDeps): WebStandardHandler;
|
|
39
|
+
export interface WebStandardCreateInvoiceConfig {
|
|
40
|
+
deps: CreateInvoiceDeps;
|
|
41
|
+
trustProxy?: boolean;
|
|
42
|
+
getClientIp?: (req: Request) => string;
|
|
43
|
+
}
|
|
39
44
|
/**
|
|
40
45
|
* Returns a `WebStandardHandler` that creates a new Lightning invoice.
|
|
41
46
|
*
|
|
42
47
|
* Parses the JSON body for an optional `amountSats` field, delegates
|
|
43
48
|
* to the core `handleCreateInvoice`, and returns the result.
|
|
49
|
+
*
|
|
50
|
+
* Accepts either a bare `CreateInvoiceDeps` object (backwards-compatible) or
|
|
51
|
+
* a `WebStandardCreateInvoiceConfig` for IP-aware rate limiting.
|
|
44
52
|
*/
|
|
45
|
-
export declare function createWebStandardCreateInvoiceHandler(
|
|
53
|
+
export declare function createWebStandardCreateInvoiceHandler(depsOrConfig: CreateInvoiceDeps | WebStandardCreateInvoiceConfig): WebStandardHandler;
|
|
46
54
|
/**
|
|
47
55
|
* Returns a `WebStandardHandler` that pays a Lightning invoice via NWC.
|
|
48
56
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-standard.d.ts","sourceRoot":"","sources":["../../src/adapters/web-standard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAIlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAS9D,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"web-standard.d.ts","sourceRoot":"","sources":["../../src/adapters/web-standard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAIlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAS9D,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAuFpE;;;;;GAKG;AACH,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;CACvC;AAED,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,eAAe,GAAG,2BAA2B,EAC7D,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB,CA8FpB;AAID;;;;;;;GAOG;AACH,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,iBAAiB,GACtB,kBAAkB,CAyCpB;AAID,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,iBAAiB,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;CACvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,qCAAqC,CACnD,YAAY,EAAE,iBAAiB,GAAG,8BAA8B,GAC/D,kBAAkB,CA0CpB;AAID;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,kBAAkB,CAmBhF;AAID;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,eAAe,GAAG,kBAAkB,CA4BvF"}
|
|
@@ -21,9 +21,11 @@ class BodyTooLargeError extends Error {
|
|
|
21
21
|
async function safeParseJson(req, maxBytes = 65_536) {
|
|
22
22
|
// Quick rejection via Content-Length header — avoids reading the body at all
|
|
23
23
|
const contentLength = req.headers.get('content-length');
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
if (contentLength !== null) {
|
|
25
|
+
const parsedLength = parseInt(contentLength, 10);
|
|
26
|
+
if (!Number.isFinite(parsedLength) || parsedLength < 0 || parsedLength > maxBytes) {
|
|
27
|
+
return { ok: false };
|
|
28
|
+
}
|
|
27
29
|
}
|
|
28
30
|
try {
|
|
29
31
|
const text = await readBodyTextWithinLimit(req, maxBytes);
|
|
@@ -115,13 +117,36 @@ export function createWebStandardMiddleware(engineOrConfig, upstreamArg) {
|
|
|
115
117
|
for (const [key, value] of Object.entries(extraHeaders)) {
|
|
116
118
|
responseHeaders.set(key, value);
|
|
117
119
|
}
|
|
120
|
+
// Reconcile estimated cost against actual cost reported by the upstream
|
|
121
|
+
if (result.action === 'proxy' && result.paymentHash) {
|
|
122
|
+
const tollCostHeader = res.headers.get('x-toll-cost');
|
|
123
|
+
if (tollCostHeader !== null && /^\d+$/.test(tollCostHeader)) {
|
|
124
|
+
const actualCost = parseInt(tollCostHeader, 10);
|
|
125
|
+
if (Number.isSafeInteger(actualCost) && actualCost >= 0) {
|
|
126
|
+
const reconciled = engine.reconcile(result.paymentHash, actualCost);
|
|
127
|
+
if (reconciled.adjusted) {
|
|
128
|
+
responseHeaders.set('X-Credit-Balance', String(reconciled.newBalance));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
console.warn('[toll-booth] Invalid X-Toll-Cost value:', tollCostHeader?.slice(0, 32));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
118
136
|
return new Response(res.body, {
|
|
119
137
|
status: res.status,
|
|
120
138
|
statusText: res.statusText,
|
|
121
139
|
headers: responseHeaders,
|
|
122
140
|
});
|
|
123
141
|
}
|
|
124
|
-
catch {
|
|
142
|
+
catch (err) {
|
|
143
|
+
// Distinguish upstream network errors from timeouts
|
|
144
|
+
if (err instanceof DOMException && (err.name === 'TimeoutError' || err.name === 'AbortError')) {
|
|
145
|
+
return Response.json({ error: 'Upstream timeout' }, { status: 504, headers: new Headers(extraHeaders) });
|
|
146
|
+
}
|
|
147
|
+
if (!(err instanceof TypeError)) {
|
|
148
|
+
console.error('[toll-booth] Unexpected error in middleware:', err instanceof Error ? err.message : err);
|
|
149
|
+
}
|
|
125
150
|
return Response.json({ error: 'Upstream unavailable' }, { status: 502, headers: new Headers(extraHeaders) });
|
|
126
151
|
}
|
|
127
152
|
}
|
|
@@ -154,7 +179,8 @@ export function createWebStandardInvoiceStatusHandler(deps) {
|
|
|
154
179
|
if (!PAYMENT_HASH_RE.test(paymentHash)) {
|
|
155
180
|
return Response.json({ error: 'Invalid payment hash' }, { status: 400 });
|
|
156
181
|
}
|
|
157
|
-
const
|
|
182
|
+
const rawToken = url.searchParams.get('token') ?? undefined;
|
|
183
|
+
const statusToken = rawToken && rawToken.length <= 128 ? rawToken : undefined;
|
|
158
184
|
const accept = req.headers.get('accept') ?? '';
|
|
159
185
|
try {
|
|
160
186
|
if (accept.includes('text/html')) {
|
|
@@ -177,22 +203,31 @@ export function createWebStandardInvoiceStatusHandler(deps) {
|
|
|
177
203
|
}
|
|
178
204
|
};
|
|
179
205
|
}
|
|
180
|
-
// -- Create invoice handler ---------------------------------------------------
|
|
181
206
|
/**
|
|
182
207
|
* Returns a `WebStandardHandler` that creates a new Lightning invoice.
|
|
183
208
|
*
|
|
184
209
|
* Parses the JSON body for an optional `amountSats` field, delegates
|
|
185
210
|
* to the core `handleCreateInvoice`, and returns the result.
|
|
211
|
+
*
|
|
212
|
+
* Accepts either a bare `CreateInvoiceDeps` object (backwards-compatible) or
|
|
213
|
+
* a `WebStandardCreateInvoiceConfig` for IP-aware rate limiting.
|
|
186
214
|
*/
|
|
187
|
-
export function createWebStandardCreateInvoiceHandler(
|
|
215
|
+
export function createWebStandardCreateInvoiceHandler(depsOrConfig) {
|
|
216
|
+
const config = 'deps' in depsOrConfig ? depsOrConfig : { deps: depsOrConfig };
|
|
217
|
+
const deps = config.deps;
|
|
188
218
|
return async (req) => {
|
|
189
219
|
const parsed = await safeParseJson(req);
|
|
190
220
|
if (!parsed.ok) {
|
|
191
221
|
return Response.json({ error: 'Invalid JSON body' }, { status: 400, headers: applyNoStoreHeaders(new Headers()) });
|
|
192
222
|
}
|
|
193
|
-
const
|
|
223
|
+
const ip = config.getClientIp
|
|
224
|
+
? config.getClientIp(req)
|
|
225
|
+
: config.trustProxy
|
|
226
|
+
? req.headers.get('x-forwarded-for')?.split(',')[0]?.trim() ?? req.headers.get('x-real-ip') ?? 'unknown'
|
|
227
|
+
: 'unknown';
|
|
228
|
+
const result = await handleCreateInvoice(deps, { ...parsed.value, clientIp: ip });
|
|
194
229
|
if (!result.success) {
|
|
195
|
-
return Response.json({ error: result.error, tiers: result.tiers }, { status: 400, headers: applyNoStoreHeaders(new Headers()) });
|
|
230
|
+
return Response.json({ error: result.error, tiers: result.tiers }, { status: result.status ?? 400, headers: applyNoStoreHeaders(new Headers()) });
|
|
196
231
|
}
|
|
197
232
|
const d = result.data;
|
|
198
233
|
return Response.json({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-standard.js","sourceRoot":"","sources":["../../src/adapters/web-standard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-standard.js","sourceRoot":"","sources":["../../src/adapters/web-standard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cln.d.ts","sourceRoot":"","sources":["../../src/backends/cln.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA0B,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"cln.d.ts","sourceRoot":"","sources":["../../src/backends/cln.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA0B,MAAM,aAAa,CAAA;AAG3E,MAAM,WAAW,SAAS;IACxB,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,CA2D9D"}
|
package/dist/backends/cln.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PAYMENT_HASH_RE } from '../core/types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Lightning backend adapter for Core Lightning's REST API (clnrest).
|
|
3
4
|
*
|
|
@@ -30,16 +31,18 @@ export function clnBackend(config) {
|
|
|
30
31
|
});
|
|
31
32
|
if (!res.ok) {
|
|
32
33
|
const text = await res.text().catch(() => '');
|
|
33
|
-
throw new Error(`CLN createInvoice failed (${res.status}): ${text}`);
|
|
34
|
+
throw new Error(`CLN createInvoice failed (${res.status}): ${text.slice(0, 200)}`);
|
|
34
35
|
}
|
|
35
36
|
const data = await res.json();
|
|
36
37
|
return { bolt11: data.bolt11, paymentHash: data.payment_hash };
|
|
37
38
|
},
|
|
38
39
|
async checkInvoice(paymentHash) {
|
|
40
|
+
if (!PAYMENT_HASH_RE.test(paymentHash))
|
|
41
|
+
throw new Error('Invalid payment hash');
|
|
39
42
|
const res = await fetch(`${baseUrl}/v1/listinvoices?payment_hash=${paymentHash}`, { headers, signal: AbortSignal.timeout(timeoutMs) });
|
|
40
43
|
if (!res.ok) {
|
|
41
44
|
const text = await res.text().catch(() => '');
|
|
42
|
-
throw new Error(`CLN checkInvoice failed (${res.status}): ${text}`);
|
|
45
|
+
throw new Error(`CLN checkInvoice failed (${res.status}): ${text.slice(0, 200)}`);
|
|
43
46
|
}
|
|
44
47
|
const data = await res.json();
|
|
45
48
|
const inv = data.invoices[0];
|
package/dist/backends/cln.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cln.js","sourceRoot":"","sources":["../../src/backends/cln.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cln.js","sourceRoot":"","sources":["../../src/backends/cln.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lnbits.d.ts","sourceRoot":"","sources":["../../src/backends/lnbits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA0B,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"lnbits.d.ts","sourceRoot":"","sources":["../../src/backends/lnbits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA0B,MAAM,aAAa,CAAA;AAG3E,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAA;IACX,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAA;IACd,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAmDpE"}
|
package/dist/backends/lnbits.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PAYMENT_HASH_RE } from '../core/types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Lightning backend adapter for LNbits.
|
|
3
4
|
*
|
|
@@ -31,12 +32,14 @@ export function lnbitsBackend(config) {
|
|
|
31
32
|
});
|
|
32
33
|
if (!res.ok) {
|
|
33
34
|
const text = await res.text().catch(() => '');
|
|
34
|
-
throw new Error(`LNbits createInvoice failed (${res.status}): ${text}`);
|
|
35
|
+
throw new Error(`LNbits createInvoice failed (${res.status}): ${text.slice(0, 200)}`);
|
|
35
36
|
}
|
|
36
37
|
const data = await res.json();
|
|
37
38
|
return { bolt11: data.payment_request, paymentHash: data.payment_hash };
|
|
38
39
|
},
|
|
39
40
|
async checkInvoice(paymentHash) {
|
|
41
|
+
if (!PAYMENT_HASH_RE.test(paymentHash))
|
|
42
|
+
throw new Error('Invalid payment hash');
|
|
40
43
|
const res = await fetch(`${baseUrl}/api/v1/payments/${paymentHash}`, {
|
|
41
44
|
headers: { 'X-Api-Key': config.apiKey },
|
|
42
45
|
signal: AbortSignal.timeout(timeoutMs),
|
|
@@ -45,7 +48,7 @@ export function lnbitsBackend(config) {
|
|
|
45
48
|
return { paid: false };
|
|
46
49
|
if (!res.ok) {
|
|
47
50
|
const text = await res.text().catch(() => '');
|
|
48
|
-
throw new Error(`LNbits checkInvoice failed (${res.status}): ${text}`);
|
|
51
|
+
throw new Error(`LNbits checkInvoice failed (${res.status}): ${text.slice(0, 200)}`);
|
|
49
52
|
}
|
|
50
53
|
const data = await res.json();
|
|
51
54
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lnbits.js","sourceRoot":"","sources":["../../src/backends/lnbits.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lnbits.js","sourceRoot":"","sources":["../../src/backends/lnbits.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAWlD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,MAAoB;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAA;IAC1C,MAAM,OAAO,GAA2B;QACtC,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,cAAc,EAAE,kBAAkB;KACnC,CAAA;IAED,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,UAAkB,EAAE,IAAa;YACnD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,kBAAkB,EAAE;gBACpD,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,GAAG,EAAE,KAAK;oBACV,MAAM,EAAE,UAAU;oBAClB,IAAI,EAAE,IAAI,IAAI,oBAAoB;iBACnC,CAAC;gBACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;aACvC,CAAC,CAAA;YAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC7C,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YACvF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAuD,CAAA;YAClF,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAA;QACzE,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,WAAmB;YACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;YAC/E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,oBAAoB,WAAW,EAAE,EAAE;gBACnE,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;gBACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;aACvC,CAAC,CAAA;YAEF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;YAE9C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC7C,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YACtF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA0C,CAAA;YACrE,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;aAChD,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lnd.d.ts","sourceRoot":"","sources":["../../src/backends/lnd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA0B,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"lnd.d.ts","sourceRoot":"","sources":["../../src/backends/lnd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA0B,MAAM,aAAa,CAAA;AAI3E,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAA;IACX,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,CAuD9D"}
|
package/dist/backends/lnd.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PAYMENT_HASH_RE } from '../core/types.js';
|
|
1
2
|
import { readFileSync } from 'node:fs';
|
|
2
3
|
/**
|
|
3
4
|
* Lightning backend adapter for LND's REST API.
|
|
@@ -33,13 +34,15 @@ export function lndBackend(config) {
|
|
|
33
34
|
});
|
|
34
35
|
if (!res.ok) {
|
|
35
36
|
const text = await res.text().catch(() => '');
|
|
36
|
-
throw new Error(`LND createinvoice failed (${res.status}): ${text}`);
|
|
37
|
+
throw new Error(`LND createinvoice failed (${res.status}): ${text.slice(0, 200)}`);
|
|
37
38
|
}
|
|
38
39
|
const data = await res.json();
|
|
39
40
|
const paymentHash = Buffer.from(data.r_hash, 'base64').toString('hex');
|
|
40
41
|
return { bolt11: data.payment_request, paymentHash };
|
|
41
42
|
},
|
|
42
43
|
async checkInvoice(paymentHash) {
|
|
44
|
+
if (!PAYMENT_HASH_RE.test(paymentHash))
|
|
45
|
+
throw new Error('Invalid payment hash');
|
|
43
46
|
const res = await fetch(`${baseUrl}/v1/invoice/${paymentHash}`, {
|
|
44
47
|
headers: { 'Grpc-Metadata-macaroon': macaroonHex },
|
|
45
48
|
signal: AbortSignal.timeout(timeoutMs),
|
package/dist/backends/lnd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lnd.js","sourceRoot":"","sources":["../../src/backends/lnd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAatC;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAA;IAE1C,IAAI,WAAmB,CAAA;IACvB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAA;IAC/B,CAAC;SAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC/B,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IAC/E,CAAC;IAED,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,UAAkB,EAAE,IAAa;YACnD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,EAAE;gBAChD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,wBAAwB,EAAE,WAAW;oBACrC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;gBACrE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;aACvC,CAAC,CAAA;YAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC7C,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"lnd.js","sourceRoot":"","sources":["../../src/backends/lnd.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phoenixd.d.ts","sourceRoot":"","sources":["../../src/backends/phoenixd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA0B,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"phoenixd.d.ts","sourceRoot":"","sources":["../../src/backends/phoenixd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA0B,MAAM,aAAa,CAAA;AAG3E,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAsDxE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PAYMENT_HASH_RE } from '../core/types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Lightning backend adapter for Phoenixd's HTTP API.
|
|
3
4
|
*
|
|
@@ -30,12 +31,14 @@ export function phoenixdBackend(config) {
|
|
|
30
31
|
});
|
|
31
32
|
if (!res.ok) {
|
|
32
33
|
const text = await res.text().catch(() => '');
|
|
33
|
-
throw new Error(`Phoenixd createinvoice failed (${res.status}): ${text}`);
|
|
34
|
+
throw new Error(`Phoenixd createinvoice failed (${res.status}): ${text.slice(0, 200)}`);
|
|
34
35
|
}
|
|
35
36
|
const data = await res.json();
|
|
36
37
|
return { bolt11: data.serialized, paymentHash: data.paymentHash };
|
|
37
38
|
},
|
|
38
39
|
async checkInvoice(paymentHash) {
|
|
40
|
+
if (!PAYMENT_HASH_RE.test(paymentHash))
|
|
41
|
+
throw new Error('Invalid payment hash');
|
|
39
42
|
const res = await fetch(`${baseUrl}/payments/incoming/${paymentHash}`, {
|
|
40
43
|
headers: { 'Authorization': authHeader },
|
|
41
44
|
signal: AbortSignal.timeout(timeoutMs),
|
|
@@ -46,7 +49,7 @@ export function phoenixdBackend(config) {
|
|
|
46
49
|
// Auth failures and server errors must propagate so health checks detect them
|
|
47
50
|
if (!res.ok) {
|
|
48
51
|
const text = await res.text().catch(() => '');
|
|
49
|
-
throw new Error(`Phoenixd checkInvoice failed (${res.status}): ${text}`);
|
|
52
|
+
throw new Error(`Phoenixd checkInvoice failed (${res.status}): ${text.slice(0, 200)}`);
|
|
50
53
|
}
|
|
51
54
|
const data = await res.json();
|
|
52
55
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phoenixd.js","sourceRoot":"","sources":["../../src/backends/phoenixd.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"phoenixd.js","sourceRoot":"","sources":["../../src/backends/phoenixd.ts"],"names":[],"mappings":"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"}
|
package/dist/booth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"booth.d.ts","sourceRoot":"","sources":["../src/booth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"booth.d.ts","sourceRoot":"","sources":["../src/booth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAG3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAQ5D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAmB3C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,cAAc,CAAA;AAEpD,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,KAAK;IAChB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAErC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;IAE9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAyD;IACtF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAgC;gBAEhD,MAAM,EAAE,YAAY,GAAG,YAAY;IAgK/C,4CAA4C;IAC5C,aAAa,IAAI,IAAI;IAIrB;;;;;;;;;;OAUG;IACG,oBAAoB,CACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAChE,OAAO,CAAC,MAAM,CAAC;IA6BlB,KAAK,IAAI,IAAI;CAId"}
|