@paynodelabs/sdk-js 2.4.0 → 2.5.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/dist/merchant/types.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export interface ApiManifest {
|
|
|
12
12
|
network?: 'mainnet' | 'testnet';
|
|
13
13
|
input_schema?: Record<string, any>;
|
|
14
14
|
sample_response?: Record<string, any>;
|
|
15
|
+
headers_template?: Record<string, string>;
|
|
15
16
|
}
|
|
16
17
|
export interface PayNodeRequestContext {
|
|
17
18
|
orderId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/merchant/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/merchant/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACjC"}
|
package/dist/utils/webhook.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export interface WebhookConfig {
|
|
|
20
20
|
onError?: (error: Error, event: PaymentEvent) => void;
|
|
21
21
|
/** Optional: callback when a webhook delivery succeeds */
|
|
22
22
|
onSuccess?: (event: PaymentEvent) => void;
|
|
23
|
+
/** Optional: suppress logging (default: false) */
|
|
24
|
+
quiet?: boolean;
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
27
|
* Parsed PaymentReceived event data.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/utils/webhook.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,uDAAuD;IACvD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACtD,0DAA0D;IAC1D,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/utils/webhook.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,uDAAuD;IACvD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACtD,0DAA0D;IAC1D,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAAoG;IAClH,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,YAAY,CAAkB;gBAE1B,MAAM,EAAE,aAAa;IAgBjC;;;OAGG;IACG,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9C;;OAEG;IACH,IAAI,IAAI,IAAI;YAQE,IAAI;IAgClB,OAAO,CAAC,UAAU;IAmBlB;;OAEG;YACW,OAAO;CA8CtB"}
|
package/dist/utils/webhook.js
CHANGED
|
@@ -92,11 +92,13 @@ class PayNodeWebhookNotifier {
|
|
|
92
92
|
*/
|
|
93
93
|
async start(fromBlock) {
|
|
94
94
|
if (this.timer) {
|
|
95
|
-
|
|
95
|
+
if (!this.config.quiet)
|
|
96
|
+
console.warn('[PayNode Webhook] Already running.');
|
|
96
97
|
return;
|
|
97
98
|
}
|
|
98
99
|
this.lastBlock = fromBlock ?? (await this.provider.getBlockNumber());
|
|
99
|
-
|
|
100
|
+
if (!this.config.quiet)
|
|
101
|
+
console.log(`🔔 [PayNode Webhook] Listening from block ${this.lastBlock} on ${this.config.contractAddress}`);
|
|
100
102
|
this.timer = setInterval(() => this.poll(), this.pollInterval);
|
|
101
103
|
}
|
|
102
104
|
/**
|
|
@@ -106,7 +108,8 @@ class PayNodeWebhookNotifier {
|
|
|
106
108
|
if (this.timer) {
|
|
107
109
|
clearInterval(this.timer);
|
|
108
110
|
this.timer = null;
|
|
109
|
-
|
|
111
|
+
if (!this.config.quiet)
|
|
112
|
+
console.log('🔕 [PayNode Webhook] Stopped.');
|
|
110
113
|
}
|
|
111
114
|
}
|
|
112
115
|
async poll() {
|
|
@@ -129,7 +132,8 @@ class PayNodeWebhookNotifier {
|
|
|
129
132
|
this.lastBlock = currentBlock;
|
|
130
133
|
}
|
|
131
134
|
catch (error) {
|
|
132
|
-
|
|
135
|
+
if (!this.config.quiet)
|
|
136
|
+
console.error(`❌ [PayNode Webhook] Poll error: ${error.message}`);
|
|
133
137
|
}
|
|
134
138
|
finally {
|
|
135
139
|
this.isProcessing = false;
|
|
@@ -183,17 +187,20 @@ class PayNodeWebhookNotifier {
|
|
|
183
187
|
if (!response.ok) {
|
|
184
188
|
throw new Error(`Webhook returned ${response.status}: ${response.statusText}`);
|
|
185
189
|
}
|
|
186
|
-
|
|
190
|
+
if (!this.config.quiet)
|
|
191
|
+
console.log(`✅ [PayNode Webhook] Delivered tx ${event.txHash.slice(0, 10)}... → ${response.status}`);
|
|
187
192
|
this.config.onSuccess?.(event);
|
|
188
193
|
}
|
|
189
194
|
catch (error) {
|
|
190
|
-
|
|
195
|
+
if (!this.config.quiet)
|
|
196
|
+
console.error(`⚠️ [PayNode Webhook] Delivery failed (attempt ${attempt}/${MAX_RETRIES}): ${error.message}`);
|
|
191
197
|
if (attempt < MAX_RETRIES) {
|
|
192
198
|
const backoffMs = Math.pow(2, attempt) * 1000; // 2s, 4s, 8s
|
|
193
199
|
await new Promise(resolve => setTimeout(resolve, backoffMs));
|
|
194
200
|
return this.deliver(event, attempt + 1);
|
|
195
201
|
}
|
|
196
|
-
|
|
202
|
+
if (!this.config.quiet)
|
|
203
|
+
console.error(`❌ [PayNode Webhook] Gave up on tx ${event.txHash} after ${MAX_RETRIES} attempts.`);
|
|
197
204
|
this.config.onError?.(error, event);
|
|
198
205
|
}
|
|
199
206
|
}
|