vendure-plugin-bitcoin-lightning-via-clink 0.1.0 → 0.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/CHANGELOG.md +16 -0
- package/README.md +3 -1
- package/dist/api/clink-webhook.controller.d.ts +12 -2
- package/dist/api/clink-webhook.controller.d.ts.map +1 -1
- package/dist/api/clink-webhook.controller.js +105 -42
- package/dist/api/clink-webhook.controller.js.map +1 -1
- package/dist/clink.plugin.d.ts +2 -1
- package/dist/clink.plugin.d.ts.map +1 -1
- package/dist/clink.plugin.js +3 -0
- package/dist/clink.plugin.js.map +1 -1
- package/dist/config/clink-config.d.ts +12 -1
- package/dist/config/clink-config.d.ts.map +1 -1
- package/dist/config/clink-config.js +1 -0
- package/dist/config/clink-config.js.map +1 -1
- package/dist/services/payment-monitor.service.d.ts.map +1 -1
- package/dist/services/payment-monitor.service.js +12 -0
- package/dist/services/payment-monitor.service.js.map +1 -1
- package/dist/utils/crypto.d.ts +34 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +165 -0
- package/dist/utils/crypto.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.0 (2026-07-23)
|
|
4
|
+
|
|
5
|
+
### Security
|
|
6
|
+
|
|
7
|
+
- **CRITICAL**: Added HMAC-SHA256 signature verification for all webhook endpoints (`x-clink-signature` header)
|
|
8
|
+
- **CRITICAL**: Added preimage verification — `sha256(preimage) === payment_hash` is now enforced before settling
|
|
9
|
+
- Added BOLT11 invoice decoding to extract payment hash and amount for verification
|
|
10
|
+
- Added amount validation — bolt11 invoice amount must match offer amount
|
|
11
|
+
- Added Nostr event signature verification (`verifyEvent`) for relay payments
|
|
12
|
+
- Added `webhookSecret` config option — **required when `httpFallback` is enabled**
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Webhook endpoints now reject all requests without valid HMAC signature
|
|
17
|
+
- Webhook endpoints now reject requests without preimage verification
|
|
18
|
+
|
|
3
19
|
## 0.1.0 (2026-07-23)
|
|
4
20
|
|
|
5
21
|
### Features
|
package/README.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# vendure-plugin-bitcoin-lightning-via-clink
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/vendure-plugin-bitcoin-lightning-via-clink)
|
|
3
4
|
[](https://www.vendure.io/)
|
|
4
5
|
[](https://www.typescriptlang.org/)
|
|
5
|
-
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
7
|
+
[](https://clinkme.dev)
|
|
6
8
|
|
|
7
9
|
**Bitcoin Lightning payments for [Vendure](https://www.vendure.io/) via the [CLINK](https://clinkme.dev) protocol — Nostr-native static payment codes.**
|
|
8
10
|
|
|
@@ -7,18 +7,28 @@ interface PaymentNotification {
|
|
|
7
7
|
preimage: string;
|
|
8
8
|
amount_sats?: number;
|
|
9
9
|
timestamp?: number;
|
|
10
|
+
signature?: string;
|
|
10
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Webhook controller for receiving CLINK payment notifications.
|
|
14
|
+
*
|
|
15
|
+
* @description
|
|
16
|
+
* All endpoints require HMAC-SHA256 signature verification using the plugin's webhookSecret.
|
|
17
|
+
* Preimage verification (sha256(preimage) === payment_hash) is enforced before settling.
|
|
18
|
+
*
|
|
19
|
+
* @category Plugin
|
|
20
|
+
*/
|
|
11
21
|
export declare class ClinkWebhookController {
|
|
12
22
|
private connection;
|
|
13
23
|
private clinkService;
|
|
14
24
|
private paymentMonitor;
|
|
15
25
|
private readonly logger;
|
|
16
26
|
constructor(connection: TransactionalConnection, clinkService: ClinkService, paymentMonitor: PaymentMonitorService);
|
|
17
|
-
handlePaymentNotification(body: PaymentNotification): Promise<{
|
|
27
|
+
handlePaymentNotification(body: PaymentNotification, signatureHeader: string | undefined): Promise<{
|
|
18
28
|
success: boolean;
|
|
19
29
|
message?: string;
|
|
20
30
|
}>;
|
|
21
|
-
handleWebhook(body: any): Promise<{
|
|
31
|
+
handleWebhook(body: any, signatureHeader: string | undefined): Promise<{
|
|
22
32
|
received: boolean;
|
|
23
33
|
}>;
|
|
24
34
|
private createSystemContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink-webhook.controller.d.ts","sourceRoot":"","sources":["../../src/api/clink-webhook.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAA2B,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"clink-webhook.controller.d.ts","sourceRoot":"","sources":["../../src/api/clink-webhook.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAA2B,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAM5E,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBACa,sBAAsB;IAI/B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IALxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;gBAG5C,UAAU,EAAE,uBAAuB,EACnC,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,qBAAqB;IAKzC,yBAAyB,CACrB,IAAI,EAAE,mBAAmB,EACH,eAAe,EAAE,MAAM,GAAG,SAAS,GAChE,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA0F5C,aAAa,CACT,IAAI,EAAE,GAAG,EACa,eAAe,EAAE,MAAM,GAAG,SAAS,GAChE,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;YAsDnB,mBAAmB;CAYlC"}
|
|
@@ -17,7 +17,18 @@ const common_1 = require("@nestjs/common");
|
|
|
17
17
|
const core_1 = require("@vendure/core");
|
|
18
18
|
const clink_service_1 = require("../services/clink.service");
|
|
19
19
|
const payment_monitor_service_1 = require("../services/payment-monitor.service");
|
|
20
|
+
const clink_plugin_1 = require("../clink.plugin");
|
|
21
|
+
const crypto_1 = require("../utils/crypto");
|
|
20
22
|
const CONTROLLER_NAME = 'ClinkWebhookController';
|
|
23
|
+
/**
|
|
24
|
+
* Webhook controller for receiving CLINK payment notifications.
|
|
25
|
+
*
|
|
26
|
+
* @description
|
|
27
|
+
* All endpoints require HMAC-SHA256 signature verification using the plugin's webhookSecret.
|
|
28
|
+
* Preimage verification (sha256(preimage) === payment_hash) is enforced before settling.
|
|
29
|
+
*
|
|
30
|
+
* @category Plugin
|
|
31
|
+
*/
|
|
21
32
|
let ClinkWebhookController = class ClinkWebhookController {
|
|
22
33
|
constructor(connection, clinkService, paymentMonitor) {
|
|
23
34
|
this.connection = connection;
|
|
@@ -25,61 +36,111 @@ let ClinkWebhookController = class ClinkWebhookController {
|
|
|
25
36
|
this.paymentMonitor = paymentMonitor;
|
|
26
37
|
this.logger = new common_1.Logger(CONTROLLER_NAME);
|
|
27
38
|
}
|
|
28
|
-
async handlePaymentNotification(body) {
|
|
39
|
+
async handlePaymentNotification(body, signatureHeader) {
|
|
40
|
+
const config = clink_plugin_1.ClinkPlugin.getInitOptions();
|
|
41
|
+
if (!config.webhookSecret) {
|
|
42
|
+
this.logger.error('webhookSecret not configured — rejecting all webhook requests');
|
|
43
|
+
return { success: false, message: 'Webhook endpoint not configured' };
|
|
44
|
+
}
|
|
45
|
+
if (!signatureHeader) {
|
|
46
|
+
this.logger.warn('Missing x-clink-signature header');
|
|
47
|
+
return { success: false, message: 'Missing signature header' };
|
|
48
|
+
}
|
|
29
49
|
try {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return {
|
|
35
|
-
success: false,
|
|
36
|
-
message: 'Missing required fields: offerId, bolt11, preimage',
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
const ctx = await this.createSystemContext();
|
|
40
|
-
const offer = await this.clinkService.getOfferById(ctx, offerId);
|
|
41
|
-
if (!offer) {
|
|
42
|
-
this.logger.warn(`Offer not found: ${offerId}`);
|
|
43
|
-
return {
|
|
44
|
-
success: false,
|
|
45
|
-
message: `Offer ${offerId} not found`,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
if (offer.status === 'paid') {
|
|
49
|
-
this.logger.log(`Offer ${offerId} already settled`);
|
|
50
|
-
return {
|
|
51
|
-
success: true,
|
|
52
|
-
message: 'Payment already settled',
|
|
53
|
-
};
|
|
50
|
+
const payloadStr = JSON.stringify(body);
|
|
51
|
+
if (!(0, crypto_1.verifyHmac)(config.webhookSecret, payloadStr, signatureHeader)) {
|
|
52
|
+
this.logger.warn(`Invalid HMAC signature for offer: ${body.offerId}`);
|
|
53
|
+
return { success: false, message: 'Invalid signature' };
|
|
54
54
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this.logger.log(`Payment settled for offer ${offerId}`);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
this.logger.warn(`Signature verification failed: ${err.message}`);
|
|
58
|
+
return { success: false, message: 'Signature verification failed' };
|
|
59
|
+
}
|
|
60
|
+
const { offerId, bolt11, preimage } = body;
|
|
61
|
+
if (!offerId || !bolt11 || !preimage) {
|
|
62
|
+
this.logger.warn('Invalid payment notification: missing required fields');
|
|
64
63
|
return {
|
|
65
|
-
success:
|
|
66
|
-
message: '
|
|
64
|
+
success: false,
|
|
65
|
+
message: 'Missing required fields: offerId, bolt11, preimage',
|
|
67
66
|
};
|
|
68
67
|
}
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
const paymentHash = (0, crypto_1.extractPaymentHashFromBolt11)(bolt11);
|
|
69
|
+
if (!paymentHash) {
|
|
70
|
+
this.logger.warn(`Failed to extract payment hash from bolt11 for offer: ${offerId}`);
|
|
71
|
+
return { success: false, message: 'Invalid bolt11 invoice' };
|
|
72
|
+
}
|
|
73
|
+
if (!(0, crypto_1.verifyPreimage)(preimage, paymentHash)) {
|
|
74
|
+
this.logger.warn(`Preimage verification failed for offer: ${offerId} — sha256(preimage) !== payment_hash`);
|
|
75
|
+
return { success: false, message: 'Preimage verification failed' };
|
|
76
|
+
}
|
|
77
|
+
const ctx = await this.createSystemContext();
|
|
78
|
+
const offer = await this.clinkService.getOfferById(ctx, offerId);
|
|
79
|
+
if (!offer) {
|
|
80
|
+
this.logger.warn(`Offer not found: ${offerId}`);
|
|
81
|
+
return { success: false, message: `Offer ${offerId} not found` };
|
|
82
|
+
}
|
|
83
|
+
if (offer.status === 'paid') {
|
|
84
|
+
this.logger.log(`Offer ${offerId} already settled`);
|
|
85
|
+
return { success: true, message: 'Payment already settled' };
|
|
86
|
+
}
|
|
87
|
+
if (offer.status !== 'pending') {
|
|
88
|
+
this.logger.warn(`Offer ${offerId} is in unexpected state: ${offer.status}`);
|
|
71
89
|
return {
|
|
72
90
|
success: false,
|
|
73
|
-
message:
|
|
91
|
+
message: `Offer is in state ${offer.status}, expected pending`,
|
|
74
92
|
};
|
|
75
93
|
}
|
|
94
|
+
const claimedMsat = (0, crypto_1.extractAmountMsatFromBolt11)(bolt11);
|
|
95
|
+
if (claimedMsat !== null && offer.amountSats > 0) {
|
|
96
|
+
const expectedMsat = offer.amountSats * 1000;
|
|
97
|
+
if (claimedMsat !== expectedMsat) {
|
|
98
|
+
this.logger.warn(`Amount mismatch for offer ${offerId}: expected ${expectedMsat} msat, got ${claimedMsat} msat`);
|
|
99
|
+
return { success: false, message: 'Amount mismatch' };
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
await this.paymentMonitor.handlePaymentReceipt(ctx, offerId, preimage, bolt11);
|
|
103
|
+
this.logger.log(`Payment settled for offer ${offerId}`);
|
|
104
|
+
return {
|
|
105
|
+
success: true,
|
|
106
|
+
message: 'Payment settled successfully',
|
|
107
|
+
};
|
|
76
108
|
}
|
|
77
|
-
async handleWebhook(body) {
|
|
109
|
+
async handleWebhook(body, signatureHeader) {
|
|
110
|
+
const config = clink_plugin_1.ClinkPlugin.getInitOptions();
|
|
111
|
+
if (!config.webhookSecret) {
|
|
112
|
+
this.logger.error('webhookSecret not configured — rejecting all webhook requests');
|
|
113
|
+
return { received: false };
|
|
114
|
+
}
|
|
115
|
+
if (!signatureHeader) {
|
|
116
|
+
this.logger.warn('Missing x-clink-signature header on webhook');
|
|
117
|
+
return { received: false };
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const payloadStr = JSON.stringify(body);
|
|
121
|
+
if (!(0, crypto_1.verifyHmac)(config.webhookSecret, payloadStr, signatureHeader)) {
|
|
122
|
+
this.logger.warn('Invalid HMAC signature on webhook');
|
|
123
|
+
return { received: false };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
this.logger.warn(`Webhook signature verification failed: ${err.message}`);
|
|
128
|
+
return { received: false };
|
|
129
|
+
}
|
|
78
130
|
try {
|
|
79
131
|
this.logger.log('Received webhook notification');
|
|
80
132
|
if (body.type === 'payment_confirmed' && body.data) {
|
|
81
133
|
const { offerId, bolt11, preimage } = body.data;
|
|
82
134
|
if (offerId && bolt11 && preimage) {
|
|
135
|
+
const paymentHash = (0, crypto_1.extractPaymentHashFromBolt11)(bolt11);
|
|
136
|
+
if (!paymentHash) {
|
|
137
|
+
this.logger.warn(`Failed to extract payment hash from bolt11 for offer: ${offerId}`);
|
|
138
|
+
return { received: false };
|
|
139
|
+
}
|
|
140
|
+
if (!(0, crypto_1.verifyPreimage)(preimage, paymentHash)) {
|
|
141
|
+
this.logger.warn(`Preimage verification failed for offer: ${offerId}`);
|
|
142
|
+
return { received: false };
|
|
143
|
+
}
|
|
83
144
|
const ctx = await this.createSystemContext();
|
|
84
145
|
await this.paymentMonitor.handlePaymentReceipt(ctx, offerId, preimage, bolt11);
|
|
85
146
|
}
|
|
@@ -109,16 +170,18 @@ __decorate([
|
|
|
109
170
|
(0, common_1.Post)(),
|
|
110
171
|
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
111
172
|
__param(0, (0, common_1.Body)()),
|
|
173
|
+
__param(1, (0, common_1.Headers)('x-clink-signature')),
|
|
112
174
|
__metadata("design:type", Function),
|
|
113
|
-
__metadata("design:paramtypes", [Object]),
|
|
175
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
114
176
|
__metadata("design:returntype", Promise)
|
|
115
177
|
], ClinkWebhookController.prototype, "handlePaymentNotification", null);
|
|
116
178
|
__decorate([
|
|
117
179
|
(0, common_1.Post)('webhook'),
|
|
118
180
|
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
119
181
|
__param(0, (0, common_1.Body)()),
|
|
182
|
+
__param(1, (0, common_1.Headers)('x-clink-signature')),
|
|
120
183
|
__metadata("design:type", Function),
|
|
121
|
-
__metadata("design:paramtypes", [Object]),
|
|
184
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
122
185
|
__metadata("design:returntype", Promise)
|
|
123
186
|
], ClinkWebhookController.prototype, "handleWebhook", null);
|
|
124
187
|
exports.ClinkWebhookController = ClinkWebhookController = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink-webhook.controller.js","sourceRoot":"","sources":["../../src/api/clink-webhook.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"clink-webhook.controller.js","sourceRoot":"","sources":["../../src/api/clink-webhook.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAsH;AACtH,wCAAiF;AACjF,6DAAyD;AACzD,iFAA4E;AAC5E,kDAA8C;AAC9C,4CAAwH;AAExH,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAWjD;;;;;;;;GAQG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAGjC,YACU,UAAmC,EACnC,YAA0B,EAC1B,cAAqC;QAFrC,eAAU,GAAV,UAAU,CAAyB;QACnC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,mBAAc,GAAd,cAAc,CAAuB;QAL9B,WAAM,GAAG,IAAI,eAAM,CAAC,eAAe,CAAC,CAAC;IAMnD,CAAC;IAIE,AAAN,KAAK,CAAC,yBAAyB,CACrB,IAAyB,EACH,eAAmC;QAEjE,MAAM,MAAM,GAAG,0BAAW,CAAC,cAAc,EAAE,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACnF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACrD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;QACjE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,IAAA,mBAAU,EAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBACtE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;QACtE,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAE3C,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAC1E,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,oDAAoD;aAC9D,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,IAAA,qCAA4B,EAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yDAAyD,OAAO,EAAE,CAAC,CAAC;YACrF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,IAAA,uBAAc,EAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,OAAO,sCAAsC,CAAC,CAAC;YAC3G,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;QACrE,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE7C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEjE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAChD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,OAAO,YAAY,EAAE,CAAC;QACnE,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,OAAO,kBAAkB,CAAC,CAAC;YACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;QAC/D,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,OAAO,4BAA4B,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7E,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,qBAAqB,KAAK,CAAC,MAAM,oBAAoB;aAC/D,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,IAAA,oCAA2B,EAAC,MAAM,CAAC,CAAC;QACxD,IAAI,WAAW,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;YAC7C,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,6BAA6B,OAAO,cAAc,YAAY,cAAc,WAAW,OAAO,CAC/F,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;YACxD,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE/E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;QAExD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,8BAA8B;SACxC,CAAC;IACJ,CAAC;IAIK,AAAN,KAAK,CAAC,aAAa,CACT,IAAS,EACa,eAAmC;QAEjE,MAAM,MAAM,GAAG,0BAAW,CAAC,cAAc,EAAE,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACnF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAChE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,IAAA,mBAAU,EAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;gBACtD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;gBAEhD,IAAI,OAAO,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;oBAClC,MAAM,WAAW,GAAG,IAAA,qCAA4B,EAAC,MAAM,CAAC,CAAC;oBACzD,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yDAAyD,OAAO,EAAE,CAAC,CAAC;wBACrF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;oBAC7B,CAAC;oBAED,IAAI,CAAC,IAAA,uBAAc,EAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;wBAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,OAAO,EAAE,CAAC,CAAC;wBACvE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;oBAC7B,CAAC;oBAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC7C,MAAM,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC;YAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,MAAM,GAAG,GAAG,IAAI,qBAAc,CAAC;YAC7B,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,IAAI;YAClB,qBAAqB,EAAE,KAAK;SACtB,CAAC,CAAC;QACV,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,EAAE,cAAO,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAChG,IAAI,OAAO,EAAE,CAAC;YACX,GAAW,CAAC,OAAO,GAAG,OAAO,CAAC;QACjC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AA7KY,wDAAsB;AAW3B;IAFL,IAAA,aAAI,GAAE;IACN,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IAErB,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,gBAAO,EAAC,mBAAmB,CAAC,CAAA;;;;uEAuF9B;AAIK;IAFL,IAAA,aAAI,EAAC,SAAS,CAAC;IACf,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IAErB,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,gBAAO,EAAC,mBAAmB,CAAC,CAAA;;;;2DAqD9B;iCA/JU,sBAAsB;IADlC,IAAA,mBAAU,EAAC,gBAAgB,CAAC;qCAKL,8BAAuB;QACrB,4BAAY;QACV,+CAAqB;GANpC,sBAAsB,CA6KlC"}
|
package/dist/clink.plugin.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OnApplicationBootstrap } from '@nestjs/common';
|
|
2
2
|
import { ModuleRef } from '@nestjs/core';
|
|
3
3
|
import { OracleService } from './oracle';
|
|
4
|
-
import { ClinkPluginInitOptions } from './config/clink-config';
|
|
4
|
+
import { ClinkPluginInitOptions, DEFAULT_CLINK_OPTIONS } from './config/clink-config';
|
|
5
5
|
/**
|
|
6
6
|
* Vendure plugin for accepting Bitcoin Lightning payments via the CLINK protocol.
|
|
7
7
|
*
|
|
@@ -39,6 +39,7 @@ export declare class ClinkPlugin implements OnApplicationBootstrap {
|
|
|
39
39
|
*/
|
|
40
40
|
static init(options: ClinkPluginInitOptions): typeof ClinkPlugin;
|
|
41
41
|
static getOracleService(): OracleService;
|
|
42
|
+
static getInitOptions(): typeof DEFAULT_CLINK_OPTIONS;
|
|
42
43
|
onApplicationBootstrap(): Promise<void>;
|
|
43
44
|
}
|
|
44
45
|
//# sourceMappingURL=clink.plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink.plugin.d.ts","sourceRoot":"","sources":["../src/clink.plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAazC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"clink.plugin.d.ts","sourceRoot":"","sources":["../src/clink.plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAazC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAKtF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAuBa,WAAY,YAAW,sBAAsB;IAI5C,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,MAAM,CAAC,WAAW,CAAuD;IACjF,OAAO,CAAC,MAAM,CAAC,aAAa,CAAgB;gBAExB,SAAS,EAAE,SAAS;IAExC;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB;IAQ3C,MAAM,CAAC,gBAAgB,IAAI,aAAa;IAIxC,MAAM,CAAC,cAAc,IAAI,OAAO,qBAAqB;IAI/C,sBAAsB;CAoB7B"}
|
package/dist/clink.plugin.js
CHANGED
|
@@ -74,6 +74,9 @@ let ClinkPlugin = ClinkPlugin_1 = class ClinkPlugin {
|
|
|
74
74
|
static getOracleService() {
|
|
75
75
|
return ClinkPlugin_1.oracleService;
|
|
76
76
|
}
|
|
77
|
+
static getInitOptions() {
|
|
78
|
+
return ClinkPlugin_1.initOptions;
|
|
79
|
+
}
|
|
77
80
|
async onApplicationBootstrap() {
|
|
78
81
|
const clinkService = this.moduleRef.get(clink_service_1.ClinkService, { strict: false });
|
|
79
82
|
const nostrKeyService = this.moduleRef.get(nostr_key_service_1.NostrKeyService, { strict: false });
|
package/dist/clink.plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink.plugin.js","sourceRoot":"","sources":["../src/clink.plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,wCAAkE;AAClE,2CAAgE;AAChE,uCAAyC;AACzC,sEAA2D;AAC3D,wFAA4E;AAC5E,4DAAwD;AACxD,oEAA+D;AAC/D,gFAA2E;AAC3E,uDAAwD;AACxD,yDAA0D;AAC1D,6EAAwE;AACxE,mEAA8D;AAC9D,qEAAgE;AAChE,uDAA0E;AAC1E,uDAAwD;AACxD,qCAAyC;AACzC,wDAAsF;AAEtF,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,WAAW,CAAC,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAwBI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAItB,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE5C;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,OAA+B;QACzC,aAAW,CAAC,WAAW,GAAG,EAAE,GAAG,oCAAqB,EAAE,GAAG,OAAO,EAAE,CAAC;QACnE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,aAAW,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,oCAAqB,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAS,CAAC;QACjG,CAAC;QACD,OAAO,aAAW,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,gBAAgB;QACrB,OAAO,aAAW,CAAC,aAAa,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,4BAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mCAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,IAAA,kCAAgB,EAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAEhD,aAAW,CAAC,aAAa,GAAG,IAAI,sBAAa,CAAC,aAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE9E,MAAM,CAAC,GAAG,CACR,gDAAgD;YAChD,WAAW,aAAW,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACxD,WAAW,aAAW,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CACrD,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,aAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzD,MAAM,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;;
|
|
1
|
+
{"version":3,"file":"clink.plugin.js","sourceRoot":"","sources":["../src/clink.plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,wCAAkE;AAClE,2CAAgE;AAChE,uCAAyC;AACzC,sEAA2D;AAC3D,wFAA4E;AAC5E,4DAAwD;AACxD,oEAA+D;AAC/D,gFAA2E;AAC3E,uDAAwD;AACxD,yDAA0D;AAC1D,6EAAwE;AACxE,mEAA8D;AAC9D,qEAAgE;AAChE,uDAA0E;AAC1E,uDAAwD;AACxD,qCAAyC;AACzC,wDAAsF;AAEtF,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,WAAW,CAAC,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAwBI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAItB,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE5C;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,OAA+B;QACzC,aAAW,CAAC,WAAW,GAAG,EAAE,GAAG,oCAAqB,EAAE,GAAG,OAAO,EAAE,CAAC;QACnE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,aAAW,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,oCAAqB,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAS,CAAC;QACjG,CAAC;QACD,OAAO,aAAW,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,gBAAgB;QACrB,OAAO,aAAW,CAAC,aAAa,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,cAAc;QACnB,OAAO,aAAW,CAAC,WAAW,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,4BAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mCAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,IAAA,kCAAgB,EAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAEhD,aAAW,CAAC,aAAa,GAAG,IAAI,sBAAa,CAAC,aAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE9E,MAAM,CAAC,GAAG,CACR,gDAAgD;YAChD,WAAW,aAAW,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACxD,WAAW,aAAW,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CACrD,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,aAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzD,MAAM,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;;AAhDU,kCAAW;AACP,uBAAW,GAAiC,oCAAqB,AAAtD,CAAuD;sBADtE,WAAW;IAvBvB,IAAA,oBAAa,EAAC;QACb,OAAO,EAAE,CAAC,yBAAkB,CAAC;QAC7B,QAAQ,EAAE,CAAC,+BAAU,EAAE,gDAAkB,CAAC;QAC1C,SAAS,EAAE,CAAC,4BAAY,EAAE,mCAAe,EAAE,+CAAqB,CAAC;QACjE,WAAW,EAAE,CAAC,iDAAsB,CAAC;QACrC,iBAAiB,EAAE;YACjB,MAAM,EAAE,uCAAiB;YACzB,SAAS,EAAE,CAAC,iCAAiB,CAAC;SAC/B;QACD,kBAAkB,EAAE;YAClB,MAAM,EAAE,yCAAkB;YAC1B,SAAS,EAAE,CAAC,mCAAkB,CAAC;SAChC;QACD,aAAa,EAAE,MAAM,CAAC,EAAE;YACtB,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,qCAAmB,CAAC,CAAC;YACtE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;YACrC,CAAC;YACD,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,qCAAmB,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,aAAa,EAAE,QAAQ;KACxB,CAAC;qCAK+B,gBAAS;GAJ7B,WAAW,CAiDvB"}
|
|
@@ -15,11 +15,22 @@ export interface ClinkPluginInitOptions {
|
|
|
15
15
|
httpFallback?: boolean;
|
|
16
16
|
/** Static Nostr secret key for the plugin (auto-generated if not provided). */
|
|
17
17
|
nostrSecretKey?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Secret key for HMAC-SHA256 verification of webhook payloads.
|
|
20
|
+
* Required when httpFallback is enabled. Generate with: openssl rand -hex 32
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* ClinkPlugin.init({
|
|
24
|
+
* webhookSecret: 'your-secret-key-here',
|
|
25
|
+
* })
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
webhookSecret?: string;
|
|
18
29
|
/** BTC price oracle configuration (default: CoinGecko with Kraken fallback). */
|
|
19
30
|
oracle?: OracleConfig;
|
|
20
31
|
}
|
|
21
32
|
export declare const DEFAULT_ORACLE_OPTIONS: OracleConfig;
|
|
22
|
-
export declare const DEFAULT_CLINK_OPTIONS: Required<Pick<ClinkPluginInitOptions, 'relays' | 'autoSettle' | 'offerExpiryMinutes' | 'httpFallback' | 'nostrSecretKey'>> & {
|
|
33
|
+
export declare const DEFAULT_CLINK_OPTIONS: Required<Pick<ClinkPluginInitOptions, 'relays' | 'autoSettle' | 'offerExpiryMinutes' | 'httpFallback' | 'nostrSecretKey' | 'webhookSecret'>> & {
|
|
23
34
|
oracle: OracleConfig;
|
|
24
35
|
};
|
|
25
36
|
//# sourceMappingURL=clink-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink-config.d.ts","sourceRoot":"","sources":["../../src/config/clink-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwC,MAAM,wBAAwB,CAAC;AAE5F;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,sBAAsB,EAAE,YAIpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAC1C,IAAI,CAAC,sBAAsB,EAAE,QAAQ,GAAG,YAAY,GAAG,oBAAoB,GAAG,cAAc,GAAG,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"clink-config.d.ts","sourceRoot":"","sources":["../../src/config/clink-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwC,MAAM,wBAAwB,CAAC;AAE5F;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,sBAAsB,EAAE,YAIpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAC1C,IAAI,CAAC,sBAAsB,EAAE,QAAQ,GAAG,YAAY,GAAG,oBAAoB,GAAG,cAAc,GAAG,gBAAgB,GAAG,eAAe,CAAC,CACnI,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAQzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink-config.js","sourceRoot":"","sources":["../../src/config/clink-config.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"clink-config.js","sourceRoot":"","sources":["../../src/config/clink-config.ts"],"names":[],"mappings":";;;AAiCa,QAAA,sBAAsB,GAAiB;IAClD,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,MAAM;IAClB,iBAAiB,EAAE,CAAC,QAAQ,CAAC;CAC9B,CAAC;AAEW,QAAA,qBAAqB,GAEH;IAC7B,MAAM,EAAE,CAAC,8BAA8B,CAAC;IACxC,UAAU,EAAE,IAAI;IAChB,kBAAkB,EAAE,EAAE;IACtB,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,EAAE;IACjB,MAAM,EAAE,8BAAsB;CAC/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-monitor.service.d.ts","sourceRoot":"","sources":["../../src/services/payment-monitor.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,sBAAsB,EAAE,qBAAqB,EAAU,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,QAAQ,EAAW,MAAM,eAAe,CAAC;AAI3G,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"payment-monitor.service.d.ts","sourceRoot":"","sources":["../../src/services/payment-monitor.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,sBAAsB,EAAE,qBAAqB,EAAU,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,QAAQ,EAAW,MAAM,eAAe,CAAC;AAI3G,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAM7E,qBACa,qBAAsB,YAAW,sBAAsB,EAAE,qBAAqB;IAOvF,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IARlB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,kBAAkB,CAA+C;gBAG/D,UAAU,EAAE,uBAAuB,EACnC,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ;IAGtB,sBAAsB;IAQ5B,qBAAqB;YAKP,cAAc;IAe5B,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,oBAAoB;IAyBtB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB;YA2BpC,gBAAgB;YAkChB,mBAAmB;YAiBnB,6BAA6B;YAkD7B,kBAAkB;IA2ChC,OAAO,CAAC,uBAAuB;IAUzB,oBAAoB,CACxB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IA0BV,kBAAkB,CACtB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;YAcF,mBAAmB;CAiBlC"}
|
|
@@ -15,6 +15,7 @@ const core_1 = require("@vendure/core");
|
|
|
15
15
|
const nostr_tools_1 = require("nostr-tools");
|
|
16
16
|
const nip44_1 = require("./nip44");
|
|
17
17
|
const clink_offer_entity_1 = require("../entities/clink-offer.entity");
|
|
18
|
+
const crypto_1 = require("../utils/crypto");
|
|
18
19
|
const SERVICE_NAME = 'PaymentMonitorService';
|
|
19
20
|
let PaymentMonitorService = class PaymentMonitorService {
|
|
20
21
|
constructor(connection, processContext, eventBus) {
|
|
@@ -113,6 +114,10 @@ let PaymentMonitorService = class PaymentMonitorService {
|
|
|
113
114
|
if (!event || !event.content)
|
|
114
115
|
return;
|
|
115
116
|
try {
|
|
117
|
+
if (!(0, nostr_tools_1.verifyEvent)(event)) {
|
|
118
|
+
this.logger.warn(`Invalid Nostr event signature: ${event.id?.substring(0, 8)}...`);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
116
121
|
const secretKey = config.nostrSecretKey
|
|
117
122
|
? new Uint8Array(Buffer.from(config.nostrSecretKey, 'hex'))
|
|
118
123
|
: null;
|
|
@@ -167,6 +172,13 @@ let PaymentMonitorService = class PaymentMonitorService {
|
|
|
167
172
|
this.logger.log(`Offer ${offerId} already settled, ignoring receipt`);
|
|
168
173
|
return;
|
|
169
174
|
}
|
|
175
|
+
if (payload.preimage && payload.bolt11) {
|
|
176
|
+
const paymentHash = (0, crypto_1.extractPaymentHashFromBolt11)(payload.bolt11);
|
|
177
|
+
if (paymentHash && !(0, crypto_1.verifyPreimage)(payload.preimage, paymentHash)) {
|
|
178
|
+
this.logger.warn(`Preimage verification failed for offer ${offerId} — sha256(preimage) !== payment_hash`);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
170
182
|
offer.status = 'paid';
|
|
171
183
|
offer.preimage = payload.preimage;
|
|
172
184
|
offer.bolt11Invoice = payload.bolt11;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-monitor.service.js","sourceRoot":"","sources":["../../src/services/payment-monitor.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAmG;AACnG,wCAA2G;AAE3G,
|
|
1
|
+
{"version":3,"file":"payment-monitor.service.js","sourceRoot":"","sources":["../../src/services/payment-monitor.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verifies that sha256(preimage) === paymentHash.
|
|
3
|
+
* Uses constant-time comparison to prevent timing attacks.
|
|
4
|
+
*
|
|
5
|
+
* @category Utilities
|
|
6
|
+
*/
|
|
7
|
+
export declare function verifyPreimage(preimage: string, paymentHash: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Computes HMAC-SHA256 signature of a payload using a shared secret.
|
|
10
|
+
*
|
|
11
|
+
* @category Utilities
|
|
12
|
+
*/
|
|
13
|
+
export declare function computeHmac(secret: string, payload: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Verifies that an HMAC-SHA256 signature matches the expected value.
|
|
16
|
+
* Uses constant-time comparison to prevent timing attacks.
|
|
17
|
+
*
|
|
18
|
+
* @category Utilities
|
|
19
|
+
*/
|
|
20
|
+
export declare function verifyHmac(secret: string, payload: string, signature: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Extracts the payment hash (tag `p`) from a BOLT11 invoice.
|
|
23
|
+
* Minimal decoder — only extracts tagged fields, does not validate signature.
|
|
24
|
+
*
|
|
25
|
+
* @category Utilities
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractPaymentHashFromBolt11(bolt11: string): string | null;
|
|
28
|
+
/**
|
|
29
|
+
* Extracts the payment amount in millisatoshis from a BOLT11 invoice.
|
|
30
|
+
*
|
|
31
|
+
* @category Utilities
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractAmountMsatFromBolt11(bolt11: string): number | null;
|
|
34
|
+
//# sourceMappingURL=crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/utils/crypto.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAc7E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAUtF;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA6D1E;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgCzE"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifyPreimage = verifyPreimage;
|
|
4
|
+
exports.computeHmac = computeHmac;
|
|
5
|
+
exports.verifyHmac = verifyHmac;
|
|
6
|
+
exports.extractPaymentHashFromBolt11 = extractPaymentHashFromBolt11;
|
|
7
|
+
exports.extractAmountMsatFromBolt11 = extractAmountMsatFromBolt11;
|
|
8
|
+
const crypto_1 = require("crypto");
|
|
9
|
+
/**
|
|
10
|
+
* Verifies that sha256(preimage) === paymentHash.
|
|
11
|
+
* Uses constant-time comparison to prevent timing attacks.
|
|
12
|
+
*
|
|
13
|
+
* @category Utilities
|
|
14
|
+
*/
|
|
15
|
+
function verifyPreimage(preimage, paymentHash) {
|
|
16
|
+
try {
|
|
17
|
+
const preimageBuf = Buffer.from(preimage, 'hex');
|
|
18
|
+
if (preimageBuf.length !== 32)
|
|
19
|
+
return false;
|
|
20
|
+
const computedHash = (0, crypto_1.createHash)('sha256').update(preimageBuf).digest('hex');
|
|
21
|
+
const expectedBuf = Buffer.from(paymentHash, 'hex');
|
|
22
|
+
const computedBuf = Buffer.from(computedHash, 'hex');
|
|
23
|
+
if (expectedBuf.length !== computedBuf.length)
|
|
24
|
+
return false;
|
|
25
|
+
return (0, crypto_1.timingSafeEqual)(expectedBuf, computedBuf);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Computes HMAC-SHA256 signature of a payload using a shared secret.
|
|
33
|
+
*
|
|
34
|
+
* @category Utilities
|
|
35
|
+
*/
|
|
36
|
+
function computeHmac(secret, payload) {
|
|
37
|
+
return (0, crypto_1.createHmac)('sha256', secret).update(payload, 'utf8').digest('hex');
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Verifies that an HMAC-SHA256 signature matches the expected value.
|
|
41
|
+
* Uses constant-time comparison to prevent timing attacks.
|
|
42
|
+
*
|
|
43
|
+
* @category Utilities
|
|
44
|
+
*/
|
|
45
|
+
function verifyHmac(secret, payload, signature) {
|
|
46
|
+
const expected = computeHmac(secret, payload);
|
|
47
|
+
try {
|
|
48
|
+
const expectedBuf = Buffer.from(expected, 'hex');
|
|
49
|
+
const sigBuf = Buffer.from(signature, 'hex');
|
|
50
|
+
if (expectedBuf.length !== sigBuf.length)
|
|
51
|
+
return false;
|
|
52
|
+
return (0, crypto_1.timingSafeEqual)(expectedBuf, sigBuf);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Extracts the payment hash (tag `p`) from a BOLT11 invoice.
|
|
60
|
+
* Minimal decoder — only extracts tagged fields, does not validate signature.
|
|
61
|
+
*
|
|
62
|
+
* @category Utilities
|
|
63
|
+
*/
|
|
64
|
+
function extractPaymentHashFromBolt11(bolt11) {
|
|
65
|
+
try {
|
|
66
|
+
const lower = bolt11.toLowerCase();
|
|
67
|
+
const prefix = lower.startsWith('lnbc') ? 'lnbc' : lower.startsWith('lntb') ? 'lntb' : lower.startsWith('lnbcrt') ? 'lnbcrt' : null;
|
|
68
|
+
if (!prefix)
|
|
69
|
+
return null;
|
|
70
|
+
const dataWithSig = lower.slice(prefix.length);
|
|
71
|
+
const multipliers = { p: 1e-12, n: 1e-9, u: 1e-6, m: 1e-3, '': 1 };
|
|
72
|
+
let pos = 0;
|
|
73
|
+
while (pos < dataWithSig.length && '0123456789'.includes(dataWithSig[pos]))
|
|
74
|
+
pos++;
|
|
75
|
+
pos++;
|
|
76
|
+
const CHARSET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
|
|
77
|
+
const dataChars = dataWithSig.slice(pos);
|
|
78
|
+
const data = [];
|
|
79
|
+
for (const ch of dataChars) {
|
|
80
|
+
const idx = CHARSET.indexOf(ch);
|
|
81
|
+
if (idx === -1)
|
|
82
|
+
break;
|
|
83
|
+
data.push(idx);
|
|
84
|
+
}
|
|
85
|
+
const type5bits = data.slice(0, 7);
|
|
86
|
+
let value = 0;
|
|
87
|
+
for (const b of type5bits) {
|
|
88
|
+
value = (value << 5) | b;
|
|
89
|
+
}
|
|
90
|
+
const type = value >> 5;
|
|
91
|
+
const len5bits = ((value & 0x1f) << 2) | (data[7] >> 3);
|
|
92
|
+
const dataStart = 7 + 1;
|
|
93
|
+
if (type === 1 && len5bits >= 52) {
|
|
94
|
+
const hashData = data.slice(dataStart, dataStart + 52);
|
|
95
|
+
const bytes = [];
|
|
96
|
+
for (let i = 0; i < 52; i += 8) {
|
|
97
|
+
let byte = 0;
|
|
98
|
+
for (let j = 0; j < 8 && i + j < 52; j++) {
|
|
99
|
+
byte = (byte << 5) | (hashData[i + j] || 0);
|
|
100
|
+
}
|
|
101
|
+
bytes.push((byte >> 3) & 0xff);
|
|
102
|
+
if (i + 8 <= 52) {
|
|
103
|
+
const nextByte = ((hashData[i + 7] || 0) & 0x07) << 5;
|
|
104
|
+
if (i + 8 < 52) {
|
|
105
|
+
bytes[bytes.length - 1] = bytes[bytes.length - 1];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const hexChars = '0123456789abcdef';
|
|
110
|
+
let hex = '';
|
|
111
|
+
for (let i = 0; i < 32 && i < bytes.length; i++) {
|
|
112
|
+
hex += hexChars[(bytes[i] >> 4) & 0xf] + hexChars[bytes[i] & 0xf];
|
|
113
|
+
}
|
|
114
|
+
if (hex.length === 64)
|
|
115
|
+
return hex;
|
|
116
|
+
}
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Extracts the payment amount in millisatoshis from a BOLT11 invoice.
|
|
125
|
+
*
|
|
126
|
+
* @category Utilities
|
|
127
|
+
*/
|
|
128
|
+
function extractAmountMsatFromBolt11(bolt11) {
|
|
129
|
+
try {
|
|
130
|
+
const lower = bolt11.toLowerCase();
|
|
131
|
+
let prefix = null;
|
|
132
|
+
if (lower.startsWith('lnbcrt'))
|
|
133
|
+
prefix = 'lnbcrt';
|
|
134
|
+
else if (lower.startsWith('lnbc'))
|
|
135
|
+
prefix = 'lnbc';
|
|
136
|
+
else if (lower.startsWith('lntb'))
|
|
137
|
+
prefix = 'lntb';
|
|
138
|
+
if (!prefix)
|
|
139
|
+
return null;
|
|
140
|
+
const afterPrefix = lower.slice(prefix.length);
|
|
141
|
+
let amountStr = '';
|
|
142
|
+
let pos = 0;
|
|
143
|
+
while (pos < afterPrefix.length && '0123456789'.includes(afterPrefix[pos])) {
|
|
144
|
+
amountStr += afterPrefix[pos];
|
|
145
|
+
pos++;
|
|
146
|
+
}
|
|
147
|
+
if (!amountStr)
|
|
148
|
+
return 0;
|
|
149
|
+
const multiplierChar = afterPrefix[pos] || '';
|
|
150
|
+
const multipliers = {
|
|
151
|
+
p: 1e-12,
|
|
152
|
+
n: 1e-9,
|
|
153
|
+
u: 1e-6,
|
|
154
|
+
m: 1e-3,
|
|
155
|
+
'': 1,
|
|
156
|
+
};
|
|
157
|
+
const multiplier = multipliers[multiplierChar] ?? 1;
|
|
158
|
+
const amountBtc = parseFloat(amountStr) * multiplier;
|
|
159
|
+
return Math.round(amountBtc * 1e11);
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/utils/crypto.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vendure-plugin-bitcoin-lightning-via-clink",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Bitcoin Lightning payments for Vendure via the CLINK protocol (Nostr-native static payment codes)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|