@pagci/node 0.1.0 → 0.1.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.
package/README.md ADDED
@@ -0,0 +1,224 @@
1
+ <div align="center">
2
+
3
+ <br/>
4
+
5
+ <h1>@pagci/node</h1>
6
+
7
+ <p>SDK oficial para integração com a plataforma de pagamentos PIX PAGCI.</p>
8
+
9
+ <a href="https://docs.pagci.com">Documentação</a> · <a href="https://docs.pagci.com/webhooks">Webhooks</a> · <a href="https://docs.pagci.com/errors">Errors</a> · <a href="https://github.com/pagci/sdk-node/issues">Issues</a>
10
+
11
+ <br/>
12
+ <br/>
13
+
14
+ <a href="https://www.npmjs.com/package/@pagci/node"><img src="https://img.shields.io/npm/v/@pagci/node?style=flat-square&color=06B6D4" alt="npm" /></a>&nbsp;&nbsp;<a href="https://www.npmjs.com/package/@pagci/node"><img src="https://img.shields.io/npm/dm/@pagci/node?style=flat-square&color=06B6D4" alt="downloads" /></a>&nbsp;&nbsp;<a href="https://github.com/pagci/sdk-node/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@pagci/node?style=flat-square&color=06B6D4" alt="license" /></a>&nbsp;&nbsp;<img src="https://img.shields.io/badge/deps-0-06B6D4?style=flat-square" alt="zero deps" />
15
+
16
+ <br/>
17
+ <br/>
18
+
19
+ </div>
20
+
21
+ ```bash
22
+ npm install @pagci/node
23
+ ```
24
+
25
+ ```typescript
26
+ import { Pagci } from '@pagci/node';
27
+
28
+ const pagci = new Pagci('sua_api_key');
29
+
30
+ const payment = await pagci.payments.create({
31
+ owner: { wallet_id: 'wallet_main' },
32
+ customer: { id: 'cust_1', document: '12345678900' },
33
+ items: [{ name: 'Assinatura mensal', id: 'sub_1', value: 4990 }],
34
+ recipients: [{ wallet_id: 'wallet_main', amount: 4990 }],
35
+ });
36
+
37
+ console.log(payment.liquidator.pix_qr); // PIX copia e cola
38
+ ```
39
+
40
+ > Todos os valores são `number` em **centavos**. `4990` = R$ 49,90.
41
+
42
+ ---
43
+
44
+ ### Paginar resultados
45
+
46
+ ```typescript
47
+ for await (const p of pagci.payments.list({ status: 'confirmed' })) {
48
+ console.log(p.id, p.pix_total);
49
+ }
50
+
51
+ // ou colete com limite
52
+ const batch = await pagci.payments.list().autoPagingToArray({ limit: 100 });
53
+ ```
54
+
55
+ ---
56
+
57
+ ### Saques
58
+
59
+ ```typescript
60
+ const w = await pagci.withdrawals.create({
61
+ wallet_id: 'wallet_main',
62
+ amount: 10000,
63
+ pix_key: 'email@example.com',
64
+ pix_key_type: 'email',
65
+ });
66
+ ```
67
+
68
+ ---
69
+
70
+ ### Testar webhooks localmente
71
+
72
+ ```bash
73
+ npx @pagci/node listen --port 3000
74
+ ```
75
+
76
+ ```
77
+ ⚡ PAGCI Webhook Listener
78
+ ────────────────────────────────────────────────────
79
+ Tunnel https://xyz.trycloudflare.com
80
+ Forward http://localhost:3000
81
+ Provider cloudflared
82
+ Status ● Ready
83
+ ────────────────────────────────────────────────────
84
+
85
+ 14:32:01 → payment.confirmed pay_01jx... 200 23ms
86
+ 14:32:05 → withdrawal.settled wdrl_01jx... 200 12ms
87
+ ```
88
+
89
+ O SDK detecta automaticamente qual tunnel usar. Instale um:
90
+
91
+ <details>
92
+ <summary>Opções de tunnel (por ordem de facilidade)</summary>
93
+ <br/>
94
+
95
+ **1. localtunnel** — mais fácil, só npm
96
+
97
+ ```bash
98
+ npm install localtunnel
99
+ ```
100
+
101
+ **2. cloudflared** — mais estável, sem conta
102
+
103
+ ```bash
104
+ # macOS
105
+ brew install cloudflared
106
+
107
+ # Windows
108
+ choco install cloudflared
109
+
110
+ # Linux (Debian/Ubuntu)
111
+ sudo apt install cloudflared
112
+ ```
113
+
114
+ **3. ngrok** — requer conta gratuita
115
+
116
+ ```bash
117
+ # macOS
118
+ brew install ngrok
119
+
120
+ # Windows
121
+ choco install ngrok
122
+
123
+ # Linux
124
+ snap install ngrok
125
+
126
+ # Setup (uma vez)
127
+ ngrok config add-authtoken <seu_token> # pegar em dashboard.ngrok.com
128
+ ```
129
+
130
+ </details>
131
+
132
+ Use a URL do tunnel como `overwrite_webhook_url` ao criar pagamentos:
133
+
134
+ ```typescript
135
+ const session = await listen('sua_api_key', { port: 3000 });
136
+
137
+ await pagci.payments.create({
138
+ // ...
139
+ config: { overwrite_webhook_url: session.url },
140
+ });
141
+ ```
142
+
143
+ ---
144
+
145
+ ### Verificar assinatura de webhooks
146
+
147
+ ```typescript
148
+ app.post('/webhooks', express.raw({ type: 'application/json' }), (req, res) => {
149
+ const event = pagci.webhooks.constructEvent(
150
+ req.body.toString(),
151
+ req.headers['x-webhook-signature'],
152
+ 'whsec_...',
153
+ );
154
+
155
+ if (event.payload.event === 'payment.confirmed') {
156
+ const payment = event.payload.data;
157
+ // payment é tipado como Payment
158
+ }
159
+
160
+ res.sendStatus(200);
161
+ });
162
+ ```
163
+
164
+ <details>
165
+ <summary>Eventos disponíveis</summary>
166
+ <br/>
167
+
168
+ `payment.confirmed` · `payment.failed` · `payment.cancelled` · `payment.expired` · `withdrawal.settled` · `withdrawal.failed` · `refund.completed`
169
+
170
+ </details>
171
+
172
+ ---
173
+
174
+ ### Erros tipados
175
+
176
+ ```typescript
177
+ import { ValidationError, InsufficientBalanceError } from '@pagci/node';
178
+
179
+ try {
180
+ await pagci.payments.create({ /* ... */ });
181
+ } catch (err) {
182
+ if (err instanceof ValidationError) {
183
+ console.log(err.code, err.field);
184
+ }
185
+ }
186
+ ```
187
+
188
+ <details>
189
+ <summary>Hierarquia de erros</summary>
190
+ <br/>
191
+
192
+ `AuthenticationError` · `ForbiddenError` · `NotFoundError` · `ValidationError` · `ConflictError` · `InsufficientBalanceError` · `RateLimitError` · `ApiError` · `ConnectionError` · `TimeoutError` · `SignatureVerificationError`
193
+
194
+ Todos seguem [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457.html) — `type`, `title`, `status`, `code`, `detail`, `field`.
195
+
196
+ </details>
197
+
198
+ ---
199
+
200
+ ### Configuração
201
+
202
+ ```typescript
203
+ const pagci = new Pagci('sua_api_key', {
204
+ maxRetries: 2, // backoff exponencial + jitter
205
+ timeout: 30_000, // ms
206
+ });
207
+ ```
208
+
209
+ Retry automático em erros de rede, 429 e 5xx. POST financeiro só faz retry com `Idempotency-Key` — gerada automaticamente em `payments.create()` e `withdrawals.create()`.
210
+
211
+ ---
212
+
213
+ <div align="center">
214
+
215
+ Node.js 18+ · Zero dependências · 86 testes · TCP keep-alive
216
+
217
+ <br/>
218
+
219
+ <a href="https://docs.pagci.com">Documentação →</a>
220
+
221
+ <br/>
222
+ <br/>
223
+
224
+ </div>
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PAGCI CLI — Local webhook testing.
4
+ *
5
+ * Usage:
6
+ * npx @pagci/node listen Listen for webhooks
7
+ * npx @pagci/node listen --test + create test payment + QR code
8
+ * npx @pagci/node listen --test --verbose + full headers & JSON
9
+ * npx @pagci/node listen --port 3000 --test --verbose Custom port
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG"}
@@ -0,0 +1,131 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * PAGCI CLI — Local webhook testing.
5
+ *
6
+ * Usage:
7
+ * npx @pagci/node listen Listen for webhooks
8
+ * npx @pagci/node listen --test + create test payment + QR code
9
+ * npx @pagci/node listen --test --verbose + full headers & JSON
10
+ * npx @pagci/node listen --port 3000 --test --verbose Custom port
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ const client_js_1 = require("./client.js");
14
+ const listen_js_1 = require("./listen.js");
15
+ const c = {
16
+ reset: '\x1b[0m',
17
+ bold: '\x1b[1m',
18
+ dim: '\x1b[2m',
19
+ cyan: '\x1b[36m',
20
+ green: '\x1b[32m',
21
+ red: '\x1b[31m',
22
+ gray: '\x1b[90m',
23
+ };
24
+ function printHelp() {
25
+ console.log();
26
+ console.log(` ${c.cyan}${c.bold}⚡ PAGCI CLI${c.reset}`);
27
+ console.log();
28
+ console.log(` ${c.bold}Usage${c.reset}`);
29
+ console.log(` ${c.dim}npx @pagci/node listen${c.reset} Listen for webhooks`);
30
+ console.log(` ${c.dim}npx @pagci/node listen --test${c.reset} + create payment + QR`);
31
+ console.log(` ${c.dim}npx @pagci/node listen --test --verbose${c.reset} + headers & JSON`);
32
+ console.log(` ${c.dim}npx @pagci/node listen --port 3000 --test${c.reset} Custom port`);
33
+ console.log();
34
+ console.log(` ${c.bold}Options${c.reset}`);
35
+ console.log(` --port <n> Port to listen on (default: 4400)`);
36
+ console.log(` --key <key> API key (or set PAGCI_API_KEY)`);
37
+ console.log(` --test Create a test payment and show PIX QR code`);
38
+ console.log(` --verbose Show full webhook headers and JSON body`);
39
+ console.log(` --wallet <id> Wallet ID for test payment (default: first available)`);
40
+ console.log();
41
+ }
42
+ const FLAGS_WITHOUT_VALUE = new Set(['verbose', 'test']);
43
+ function parseArgs(args) {
44
+ const result = {};
45
+ for (let i = 0; i < args.length; i++) {
46
+ const arg = args[i];
47
+ if (arg.startsWith('--')) {
48
+ const key = arg.slice(2);
49
+ if (FLAGS_WITHOUT_VALUE.has(key)) {
50
+ result[key] = 'true';
51
+ }
52
+ else if (i + 1 < args.length) {
53
+ result[key] = args[++i];
54
+ }
55
+ }
56
+ else {
57
+ result['_command'] = arg;
58
+ }
59
+ }
60
+ return result;
61
+ }
62
+ async function main() {
63
+ const args = parseArgs(process.argv.slice(2));
64
+ if (!args['_command'] || args['_command'] === 'help') {
65
+ printHelp();
66
+ return;
67
+ }
68
+ if (args['_command'] !== 'listen') {
69
+ console.log(` ${c.red}Unknown command: ${args['_command']}${c.reset}`);
70
+ printHelp();
71
+ process.exit(1);
72
+ }
73
+ const apiKey = args['key'] ?? process.env['PAGCI_API_KEY'] ?? '';
74
+ if (!apiKey) {
75
+ console.log();
76
+ console.log(` ${c.red}${c.bold}✗${c.reset} ${c.red}Missing API key.${c.reset}`);
77
+ console.log(` ${c.dim}Set PAGCI_API_KEY env or use --key <key>${c.reset}`);
78
+ console.log();
79
+ process.exit(1);
80
+ }
81
+ const port = args['port'] ? parseInt(args['port'], 10) : undefined;
82
+ const verbose = 'verbose' in args;
83
+ const testMode = 'test' in args;
84
+ // Start listener
85
+ const session = await (0, listen_js_1.listen)(apiKey, { port, verbose });
86
+ // If --test, create a payment and show QR
87
+ if (testMode) {
88
+ const pagci = new client_js_1.Pagci(apiKey);
89
+ const walletId = args['wallet'] ?? 'icaro';
90
+ console.log(` ${c.dim}Creating test payment (R$ 0,01)...${c.reset}`);
91
+ console.log();
92
+ try {
93
+ const payment = await pagci.payments.create({
94
+ owner: { wallet_id: walletId },
95
+ customer: { id: 'cli_test', document: '12345678900' },
96
+ items: [{ name: 'CLI Test', id: 'cli_1', value: 1 }],
97
+ recipients: [{ wallet_id: walletId, amount: 1 }],
98
+ config: { overwrite_webhook_url: session.url },
99
+ });
100
+ console.log(` ${c.green}${c.bold}✓${c.reset} Payment ${c.bold}${payment.id}${c.reset} R$ ${(payment.pix_total / 100).toFixed(2)}`);
101
+ console.log();
102
+ const pixQR = payment.liquidator?.pix_qr;
103
+ if (pixQR) {
104
+ await (0, listen_js_1.printQR)(pixQR);
105
+ console.log(` ${c.gray}PIX copia e cola:${c.reset}`);
106
+ console.log(` ${c.dim}${pixQR}${c.reset}`);
107
+ console.log();
108
+ }
109
+ console.log(` ${c.dim}Pay the PIX above. Webhook will appear here when confirmed.${c.reset}`);
110
+ console.log();
111
+ }
112
+ catch (err) {
113
+ const msg = err instanceof Error ? err.message : String(err);
114
+ console.log(` ${c.red}✗ Failed to create payment: ${msg}${c.reset}`);
115
+ console.log(` ${c.dim}Listener is still running — send webhooks to ${session.url}${c.reset}`);
116
+ console.log();
117
+ }
118
+ }
119
+ // Keep alive until Ctrl+C
120
+ const shutdown = async () => {
121
+ await session.close();
122
+ process.exit(0);
123
+ };
124
+ process.on('SIGINT', () => void shutdown());
125
+ process.on('SIGTERM', () => void shutdown());
126
+ }
127
+ main().catch((err) => {
128
+ console.error(` ${c.red}${err.message}${c.reset}`);
129
+ process.exit(1);
130
+ });
131
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -14,14 +14,53 @@ export interface PagciConfig {
14
14
  /** Custom HTTP agent (e.g. for proxies or custom TLS). */
15
15
  httpAgent?: unknown;
16
16
  }
17
- export interface WebhookEvent {
18
- /** Verified, parsed webhook payload. */
19
- payload: unknown;
20
- /** Signature header value. */
17
+ import type { Payment } from './types/payment.js';
18
+ import type { Withdrawal } from './types/withdrawal.js';
19
+ import type { Balance } from './types/balance.js';
20
+ interface WebhookEventBase {
21
+ /** HMAC signature that was verified. */
21
22
  signature: string;
22
- /** Timestamp from the webhook header. */
23
+ /** Unix timestamp from the webhook header. */
23
24
  timestamp: string;
25
+ /** Per-wallet balances at time of event. */
26
+ balances?: Record<string, Balance>;
27
+ /** Account-level total balance. */
28
+ account_balance?: Balance;
24
29
  }
30
+ export interface PaymentConfirmedEvent extends WebhookEventBase {
31
+ type: 'payment.confirmed';
32
+ data: Payment;
33
+ }
34
+ export interface PaymentFailedEvent extends WebhookEventBase {
35
+ type: 'payment.failed';
36
+ data: Payment;
37
+ }
38
+ export interface PaymentCancelledEvent extends WebhookEventBase {
39
+ type: 'payment.cancelled';
40
+ data: Payment;
41
+ }
42
+ export interface PaymentExpiredEvent extends WebhookEventBase {
43
+ type: 'payment.expired';
44
+ data: Payment;
45
+ }
46
+ export interface PaymentDisputeEvent extends WebhookEventBase {
47
+ type: 'payment.dispute';
48
+ data: Payment;
49
+ }
50
+ export interface WithdrawalSettledEvent extends WebhookEventBase {
51
+ type: 'withdrawal.settled';
52
+ data: Withdrawal;
53
+ }
54
+ export interface WithdrawalFailedEvent extends WebhookEventBase {
55
+ type: 'withdrawal.failed';
56
+ data: Withdrawal;
57
+ }
58
+ export interface RefundCompletedEvent extends WebhookEventBase {
59
+ type: 'refund.completed';
60
+ data: unknown;
61
+ }
62
+ /** Discriminated union of all webhook events. Switch on `event.type` for type narrowing. */
63
+ export type WebhookEvent = PaymentConfirmedEvent | PaymentFailedEvent | PaymentCancelledEvent | PaymentExpiredEvent | PaymentDisputeEvent | WithdrawalSettledEvent | WithdrawalFailedEvent | RefundCompletedEvent;
25
64
  /**
26
65
  * Main entry point for the PAGCI Node.js SDK.
27
66
  *
@@ -62,4 +101,5 @@ export declare class Pagci {
62
101
  };
63
102
  constructor(apiKey: string, config?: PagciConfig);
64
103
  }
104
+ export {};
65
105
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIvD,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD;;;;;;;GAOG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAIzC,OAAO,CAAC,SAAS,CAAC,CAAmB;IACrC,IAAI,QAAQ,IAAI,gBAAgB,CAE/B;IAED,OAAO,CAAC,YAAY,CAAC,CAAsB;IAC3C,IAAI,WAAW,IAAI,mBAAmB,CAErC;IAED,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,IAAI,KAAK,IAAI,aAAa,CAEzB;IAED,OAAO,CAAC,QAAQ,CAAC,CAAkB;IACnC,IAAI,OAAO,IAAI,eAAe,CAE7B;IAED,OAAO,CAAC,iBAAiB,CAAC,CAA2B;IACrD,IAAI,gBAAgB,IAAI,wBAAwB,CAI/C;IAED,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,IAAI,MAAM,IAAI,cAAc,CAE3B;IAID,IAAI,QAAQ;QAIR;;;;;;;WAOG;gCAEQ,MAAM,aACJ,MAAM,UACT,MAAM,uBAEb,YAAY;QAIf;;WAEG;qCAEQ,MAAM,aACJ,MAAM,UACT,MAAM,uBAEb,OAAO,CAAC,YAAY,CAAC;MA0B3B;gBAIW,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;CAwBjD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -80,8 +80,12 @@ class Pagci {
80
80
  if (!crypto.timingSafeEqual(sig, expectedSig)) {
81
81
  throw new errors_js_1.SignatureVerificationError('Webhook signature verification failed');
82
82
  }
83
+ const envelope = JSON.parse(rawBody);
83
84
  return {
84
- payload: JSON.parse(rawBody),
85
+ type: envelope.event,
86
+ data: envelope.data,
87
+ balances: envelope.balances,
88
+ account_balance: envelope.account_balance,
85
89
  signature: sig,
86
90
  timestamp,
87
91
  };
@@ -140,8 +144,12 @@ function verifyAndParse(crypto, rawBody, signatureHeader, secret, tolerance) {
140
144
  if (!crypto.timingSafeEqual(sig, expectedSig)) {
141
145
  throw new errors_js_1.SignatureVerificationError('Webhook signature verification failed');
142
146
  }
147
+ const envelope = JSON.parse(rawBody);
143
148
  return {
144
- payload: JSON.parse(rawBody),
149
+ type: envelope.event,
150
+ data: envelope.data,
151
+ balances: envelope.balances,
152
+ account_balance: envelope.account_balance,
145
153
  signature: sig,
146
154
  timestamp,
147
155
  };
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { Pagci } from './client.js';
2
- export type { PagciConfig, WebhookEvent } from './client.js';
2
+ export type { PagciConfig, WebhookEvent, PaymentConfirmedEvent, PaymentFailedEvent, PaymentCancelledEvent, PaymentExpiredEvent, PaymentDisputeEvent, WithdrawalSettledEvent, WithdrawalFailedEvent, RefundCompletedEvent, } from './client.js';
3
3
  export { PagciError, AuthenticationError, ForbiddenError, NotFoundError, ValidationError, ConflictError, InsufficientBalanceError, RateLimitError, ApiError, ConnectionError, TimeoutError, SignatureVerificationError, errorFromResponse, } from './errors.js';
4
4
  export type { ApiResponse, RequestOptions, ResponseMeta } from './requestSender.js';
5
5
  export type { RetryConfig } from './retry.js';
@@ -8,6 +8,8 @@ export { NodeCryptoProvider } from './crypto/NodeCryptoProvider.js';
8
8
  export type { HttpClient, HttpClientResponse } from './net/HttpClient.js';
9
9
  export { NodeHttpClient } from './net/NodeHttpClient.js';
10
10
  export { generateIdempotencyKey } from './idempotency.js';
11
+ export { listen, printQR } from './listen.js';
12
+ export type { ListenOptions, ListenSession, IncomingWebhook } from './listen.js';
11
13
  export { Page } from './pagination.js';
12
14
  export { PaymentsResource } from './resources/payments.js';
13
15
  export { WithdrawalsResource } from './resources/withdrawals.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGpF,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGpE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,YAAY,EACV,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,eAAe,EACf,KAAK,EACL,IAAI,EACJ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,OAAO,EACP,cAAc,EACd,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,2BAA2B,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,YAAY,EACV,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGpF,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGpE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGjF,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,YAAY,EACV,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,eAAe,EACf,KAAK,EACL,IAAI,EACJ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,OAAO,EACP,cAAc,EACd,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,2BAA2B,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebhookEventType = exports.ErrorCode = exports.TokensResource = exports.WebhookEndpointsResource = exports.BalanceResource = exports.DebtsResource = exports.WithdrawalsResource = exports.PaymentsResource = exports.Page = exports.generateIdempotencyKey = exports.NodeHttpClient = exports.NodeCryptoProvider = exports.errorFromResponse = exports.SignatureVerificationError = exports.TimeoutError = exports.ConnectionError = exports.ApiError = exports.RateLimitError = exports.InsufficientBalanceError = exports.ConflictError = exports.ValidationError = exports.NotFoundError = exports.ForbiddenError = exports.AuthenticationError = exports.PagciError = exports.Pagci = void 0;
3
+ exports.WebhookEventType = exports.ErrorCode = exports.TokensResource = exports.WebhookEndpointsResource = exports.BalanceResource = exports.DebtsResource = exports.WithdrawalsResource = exports.PaymentsResource = exports.Page = exports.printQR = exports.listen = exports.generateIdempotencyKey = exports.NodeHttpClient = exports.NodeCryptoProvider = exports.errorFromResponse = exports.SignatureVerificationError = exports.TimeoutError = exports.ConnectionError = exports.ApiError = exports.RateLimitError = exports.InsufficientBalanceError = exports.ConflictError = exports.ValidationError = exports.NotFoundError = exports.ForbiddenError = exports.AuthenticationError = exports.PagciError = exports.Pagci = void 0;
4
4
  // ── Main client ──────────────────────────────────────────────────────
5
5
  var client_js_1 = require("./client.js");
6
6
  Object.defineProperty(exports, "Pagci", { enumerable: true, get: function () { return client_js_1.Pagci; } });
@@ -26,6 +26,10 @@ Object.defineProperty(exports, "NodeHttpClient", { enumerable: true, get: functi
26
26
  // ── Utilities ────────────────────────────────────────────────────────
27
27
  var idempotency_js_1 = require("./idempotency.js");
28
28
  Object.defineProperty(exports, "generateIdempotencyKey", { enumerable: true, get: function () { return idempotency_js_1.generateIdempotencyKey; } });
29
+ // ── Webhook Listener (dev tool) ─────────────────────────────────────
30
+ var listen_js_1 = require("./listen.js");
31
+ Object.defineProperty(exports, "listen", { enumerable: true, get: function () { return listen_js_1.listen; } });
32
+ Object.defineProperty(exports, "printQR", { enumerable: true, get: function () { return listen_js_1.printQR; } });
29
33
  // ── Pagination ──────────────────────────────────────────────────────
30
34
  var pagination_js_1 = require("./pagination.js");
31
35
  Object.defineProperty(exports, "Page", { enumerable: true, get: function () { return pagination_js_1.Page; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,wEAAwE;AACxE,yCAAoC;AAA3B,kGAAA,KAAK,OAAA;AAGd,wEAAwE;AACxE,yCAcqB;AAbnB,uGAAA,UAAU,OAAA;AACV,gHAAA,mBAAmB,OAAA;AACnB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,0GAAA,aAAa,OAAA;AACb,qHAAA,wBAAwB,OAAA;AACxB,2GAAA,cAAc,OAAA;AACd,qGAAA,QAAQ,OAAA;AACR,4GAAA,eAAe,OAAA;AACf,yGAAA,YAAY,OAAA;AACZ,uHAAA,0BAA0B,OAAA;AAC1B,8GAAA,iBAAiB,OAAA;AAWnB,wEAAoE;AAA3D,2HAAA,kBAAkB,OAAA;AAI3B,6DAAyD;AAAhD,mHAAA,cAAc,OAAA;AAEvB,wEAAwE;AACxE,mDAA0D;AAAjD,wHAAA,sBAAsB,OAAA;AAE/B,uEAAuE;AACvE,iDAAuC;AAA9B,qGAAA,IAAI,OAAA;AAEb,uEAAuE;AACvE,uDAA2D;AAAlD,+GAAA,gBAAgB,OAAA;AACzB,6DAAiE;AAAxD,qHAAA,mBAAmB,OAAA;AAC5B,iDAAqD;AAA5C,yGAAA,aAAa,OAAA;AACtB,qDAAyD;AAAhD,6GAAA,eAAe,OAAA;AACxB,uEAA2E;AAAlE,+HAAA,wBAAwB,OAAA;AACjC,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AAmEvB,6CAA+D;AAAtD,qGAAA,SAAS,OAAA;AAAE,4GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,wEAAwE;AACxE,yCAAoC;AAA3B,kGAAA,KAAK,OAAA;AAcd,wEAAwE;AACxE,yCAcqB;AAbnB,uGAAA,UAAU,OAAA;AACV,gHAAA,mBAAmB,OAAA;AACnB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,0GAAA,aAAa,OAAA;AACb,qHAAA,wBAAwB,OAAA;AACxB,2GAAA,cAAc,OAAA;AACd,qGAAA,QAAQ,OAAA;AACR,4GAAA,eAAe,OAAA;AACf,yGAAA,YAAY,OAAA;AACZ,uHAAA,0BAA0B,OAAA;AAC1B,8GAAA,iBAAiB,OAAA;AAWnB,wEAAoE;AAA3D,2HAAA,kBAAkB,OAAA;AAI3B,6DAAyD;AAAhD,mHAAA,cAAc,OAAA;AAEvB,wEAAwE;AACxE,mDAA0D;AAAjD,wHAAA,sBAAsB,OAAA;AAE/B,uEAAuE;AACvE,yCAA8C;AAArC,mGAAA,MAAM,OAAA;AAAE,oGAAA,OAAO,OAAA;AAGxB,uEAAuE;AACvE,iDAAuC;AAA9B,qGAAA,IAAI,OAAA;AAEb,uEAAuE;AACvE,uDAA2D;AAAlD,+GAAA,gBAAgB,OAAA;AACzB,6DAAiE;AAAxD,qHAAA,mBAAmB,OAAA;AAC5B,iDAAqD;AAA5C,yGAAA,aAAa,OAAA;AACtB,qDAAyD;AAAhD,6GAAA,eAAe,OAAA;AACxB,uEAA2E;AAAlE,+HAAA,wBAAwB,OAAA;AACjC,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AAmEvB,6CAA+D;AAAtD,qGAAA,SAAS,OAAA;AAAE,4GAAA,gBAAgB,OAAA"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * `pagci.listen()` — Local webhook listener for development.
3
+ *
4
+ * Starts a local HTTP server, creates a public tunnel (localtunnel),
5
+ * and returns the tunnel URL. Use it as `overwrite_webhook_url` when
6
+ * creating payments — webhooks will arrive at your local server.
7
+ *
8
+ * Usage:
9
+ * const session = await listen('api_key', { port: 3000 });
10
+ * console.log(session.url); // https://xyz.loca.lt
11
+ *
12
+ * CLI:
13
+ * npx @pagci/node listen --port 3000
14
+ *
15
+ * Requires `localtunnel` as optional peer dependency:
16
+ * npm install localtunnel
17
+ */
18
+ export interface ListenOptions {
19
+ /** Local port to receive webhooks. Default: 4400 */
20
+ port?: number;
21
+ /** Callback for each received event. */
22
+ onEvent?: (event: IncomingWebhook) => void;
23
+ /** Suppress log output. Default: false */
24
+ silent?: boolean;
25
+ /** Show full headers and JSON body for each event. Default: false */
26
+ verbose?: boolean;
27
+ }
28
+ export interface IncomingWebhook {
29
+ event: string;
30
+ resource_type: string;
31
+ data: unknown;
32
+ balances?: Record<string, unknown>;
33
+ account_balance?: unknown;
34
+ /** Raw JSON body */
35
+ raw: string;
36
+ /** Headers from the webhook request */
37
+ headers: Record<string, string | string[] | undefined>;
38
+ }
39
+ export interface ListenSession {
40
+ /** Public tunnel URL — use as overwrite_webhook_url in payments.create() */
41
+ url: string;
42
+ /** Local port the server is running on */
43
+ port: number;
44
+ /** Stop the listener and close the tunnel */
45
+ close: () => Promise<void>;
46
+ }
47
+ /**
48
+ * Print a QR code in the terminal (requires optional qrcode-terminal package).
49
+ * Falls back to a hint message if not installed.
50
+ */
51
+ export declare function printQR(text: string): Promise<void>;
52
+ export declare function listen(_apiKey: string, options?: ListenOptions): Promise<ListenSession>;
53
+ //# sourceMappingURL=listen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listen.d.ts","sourceRoot":"","sources":["../../src/listen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAoBH,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3C,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAyED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAezD;AA8LD,wBAAsB,MAAM,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAoDxB"}