@adonis-agora/payments 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 +27 -0
- package/dist/commands/main.d.ts +16 -0
- package/dist/commands/main.d.ts.map +1 -0
- package/dist/commands/main.js +17 -0
- package/dist/commands/main.js.map +1 -0
- package/dist/commands/make_billable.d.ts +16 -0
- package/dist/commands/make_billable.d.ts.map +1 -0
- package/dist/commands/make_billable.js +30 -0
- package/dist/commands/make_billable.js.map +1 -0
- package/dist/commands/make_webhook_handler.d.ts +20 -0
- package/dist/commands/make_webhook_handler.d.ts.map +1 -0
- package/dist/commands/make_webhook_handler.js +34 -0
- package/dist/commands/make_webhook_handler.js.map +1 -0
- package/dist/commands/payments_sync.d.ts +20 -0
- package/dist/commands/payments_sync.d.ts.map +1 -0
- package/dist/commands/payments_sync.js +95 -0
- package/dist/commands/payments_sync.js.map +1 -0
- package/dist/commands/payments_webhook.d.ts +19 -0
- package/dist/commands/payments_webhook.d.ts.map +1 -0
- package/dist/commands/payments_webhook.js +123 -0
- package/dist/commands/payments_webhook.js.map +1 -0
- package/dist/configure.d.ts +12 -0
- package/dist/configure.d.ts.map +1 -0
- package/dist/configure.js +34 -0
- package/dist/configure.js.map +1 -0
- package/dist/providers/payments_provider.d.ts +15 -0
- package/dist/providers/payments_provider.d.ts.map +1 -0
- package/dist/providers/payments_provider.js +155 -0
- package/dist/providers/payments_provider.js.map +1 -0
- package/dist/src/billing/billing_overview.d.ts +26 -0
- package/dist/src/billing/billing_overview.d.ts.map +1 -0
- package/dist/src/billing/billing_overview.js +27 -0
- package/dist/src/billing/billing_overview.js.map +1 -0
- package/dist/src/billing/billing_store.d.ts +73 -0
- package/dist/src/billing/billing_store.d.ts.map +1 -0
- package/dist/src/billing/billing_store.js +2 -0
- package/dist/src/billing/billing_store.js.map +1 -0
- package/dist/src/billing/index.d.ts +8 -0
- package/dist/src/billing/index.d.ts.map +1 -0
- package/dist/src/billing/index.js +6 -0
- package/dist/src/billing/index.js.map +1 -0
- package/dist/src/billing/lucid_billing_store.d.ts +84 -0
- package/dist/src/billing/lucid_billing_store.d.ts.map +1 -0
- package/dist/src/billing/lucid_billing_store.js +143 -0
- package/dist/src/billing/lucid_billing_store.js.map +1 -0
- package/dist/src/billing/metered_bill.d.ts +60 -0
- package/dist/src/billing/metered_bill.d.ts.map +1 -0
- package/dist/src/billing/metered_bill.js +46 -0
- package/dist/src/billing/metered_bill.js.map +1 -0
- package/dist/src/billing/mixins/index.d.ts +6 -0
- package/dist/src/billing/mixins/index.d.ts.map +1 -0
- package/dist/src/billing/mixins/index.js +6 -0
- package/dist/src/billing/mixins/index.js.map +1 -0
- package/dist/src/billing/mixins/with_billable.d.ts +23 -0
- package/dist/src/billing/mixins/with_billable.d.ts.map +1 -0
- package/dist/src/billing/mixins/with_billable.js +33 -0
- package/dist/src/billing/mixins/with_billable.js.map +1 -0
- package/dist/src/billing/mixins/with_payment.d.ts +45 -0
- package/dist/src/billing/mixins/with_payment.d.ts.map +1 -0
- package/dist/src/billing/mixins/with_payment.js +94 -0
- package/dist/src/billing/mixins/with_payment.js.map +1 -0
- package/dist/src/billing/mixins/with_subscription.d.ts +50 -0
- package/dist/src/billing/mixins/with_subscription.d.ts.map +1 -0
- package/dist/src/billing/mixins/with_subscription.js +95 -0
- package/dist/src/billing/mixins/with_subscription.js.map +1 -0
- package/dist/src/billing/mixins/with_usage_event.d.ts +22 -0
- package/dist/src/billing/mixins/with_usage_event.d.ts.map +1 -0
- package/dist/src/billing/mixins/with_usage_event.js +39 -0
- package/dist/src/billing/mixins/with_usage_event.js.map +1 -0
- package/dist/src/billing/mixins/with_webhook_event.d.ts +21 -0
- package/dist/src/billing/mixins/with_webhook_event.d.ts.map +1 -0
- package/dist/src/billing/mixins/with_webhook_event.js +42 -0
- package/dist/src/billing/mixins/with_webhook_event.js.map +1 -0
- package/dist/src/billing/webhook_dispatcher.d.ts +79 -0
- package/dist/src/billing/webhook_dispatcher.d.ts.map +1 -0
- package/dist/src/billing/webhook_dispatcher.js +125 -0
- package/dist/src/billing/webhook_dispatcher.js.map +1 -0
- package/dist/src/billing/webhook_events.d.ts +49 -0
- package/dist/src/billing/webhook_events.d.ts.map +1 -0
- package/dist/src/billing/webhook_events.js +44 -0
- package/dist/src/billing/webhook_events.js.map +1 -0
- package/dist/src/billing/webhook_processor.d.ts +39 -0
- package/dist/src/billing/webhook_processor.d.ts.map +1 -0
- package/dist/src/billing/webhook_processor.js +209 -0
- package/dist/src/billing/webhook_processor.js.map +1 -0
- package/dist/src/define_config.d.ts +251 -0
- package/dist/src/define_config.d.ts.map +1 -0
- package/dist/src/define_config.js +67 -0
- package/dist/src/define_config.js.map +1 -0
- package/dist/src/diagnostics.d.ts +155 -0
- package/dist/src/diagnostics.d.ts.map +1 -0
- package/dist/src/diagnostics.js +153 -0
- package/dist/src/diagnostics.js.map +1 -0
- package/dist/src/driver.d.ts +222 -0
- package/dist/src/driver.d.ts.map +1 -0
- package/dist/src/driver.js +2 -0
- package/dist/src/driver.js.map +1 -0
- package/dist/src/drivers/abacate.d.ts +35 -0
- package/dist/src/drivers/abacate.d.ts.map +1 -0
- package/dist/src/drivers/abacate.js +381 -0
- package/dist/src/drivers/abacate.js.map +1 -0
- package/dist/src/drivers/asaas.d.ts +36 -0
- package/dist/src/drivers/asaas.d.ts.map +1 -0
- package/dist/src/drivers/asaas.js +455 -0
- package/dist/src/drivers/asaas.js.map +1 -0
- package/dist/src/drivers/stripe.d.ts +36 -0
- package/dist/src/drivers/stripe.d.ts.map +1 -0
- package/dist/src/drivers/stripe.js +392 -0
- package/dist/src/drivers/stripe.js.map +1 -0
- package/dist/src/drivers/woovi.d.ts +49 -0
- package/dist/src/drivers/woovi.d.ts.map +1 -0
- package/dist/src/drivers/woovi.js +339 -0
- package/dist/src/drivers/woovi.js.map +1 -0
- package/dist/src/ensure_customer.d.ts +23 -0
- package/dist/src/ensure_customer.d.ts.map +1 -0
- package/dist/src/ensure_customer.js +25 -0
- package/dist/src/ensure_customer.js.map +1 -0
- package/dist/src/hooks/webhook_handlers.d.ts +50 -0
- package/dist/src/hooks/webhook_handlers.d.ts.map +1 -0
- package/dist/src/hooks/webhook_handlers.js +53 -0
- package/dist/src/hooks/webhook_handlers.js.map +1 -0
- package/dist/src/http.d.ts +24 -0
- package/dist/src/http.d.ts.map +1 -0
- package/dist/src/http.js +52 -0
- package/dist/src/http.js.map +1 -0
- package/dist/src/index.d.ts +29 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +15 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/invoice/drivers/asaas.d.ts +23 -0
- package/dist/src/invoice/drivers/asaas.d.ts.map +1 -0
- package/dist/src/invoice/drivers/asaas.js +85 -0
- package/dist/src/invoice/drivers/asaas.js.map +1 -0
- package/dist/src/invoice/drivers/enotas.d.ts +23 -0
- package/dist/src/invoice/drivers/enotas.d.ts.map +1 -0
- package/dist/src/invoice/drivers/enotas.js +83 -0
- package/dist/src/invoice/drivers/enotas.js.map +1 -0
- package/dist/src/invoice/drivers/focus.d.ts +23 -0
- package/dist/src/invoice/drivers/focus.d.ts.map +1 -0
- package/dist/src/invoice/drivers/focus.js +90 -0
- package/dist/src/invoice/drivers/focus.js.map +1 -0
- package/dist/src/invoice/drivers/plugnotas.d.ts +22 -0
- package/dist/src/invoice/drivers/plugnotas.d.ts.map +1 -0
- package/dist/src/invoice/drivers/plugnotas.js +81 -0
- package/dist/src/invoice/drivers/plugnotas.js.map +1 -0
- package/dist/src/invoice/drivers/tecnospeed.d.ts +29 -0
- package/dist/src/invoice/drivers/tecnospeed.d.ts.map +1 -0
- package/dist/src/invoice/drivers/tecnospeed.js +87 -0
- package/dist/src/invoice/drivers/tecnospeed.js.map +1 -0
- package/dist/src/invoice/emit_invoice.d.ts +45 -0
- package/dist/src/invoice/emit_invoice.d.ts.map +1 -0
- package/dist/src/invoice/emit_invoice.js +72 -0
- package/dist/src/invoice/emit_invoice.js.map +1 -0
- package/dist/src/invoice/invoice_manager.d.ts +12 -0
- package/dist/src/invoice/invoice_manager.d.ts.map +1 -0
- package/dist/src/invoice/invoice_manager.js +35 -0
- package/dist/src/invoice/invoice_manager.js.map +1 -0
- package/dist/src/invoice/invoice_provider.d.ts +48 -0
- package/dist/src/invoice/invoice_provider.d.ts.map +1 -0
- package/dist/src/invoice/invoice_provider.js +2 -0
- package/dist/src/invoice/invoice_provider.js.map +1 -0
- package/dist/src/money.d.ts +11 -0
- package/dist/src/money.d.ts.map +1 -0
- package/dist/src/money.js +14 -0
- package/dist/src/money.js.map +1 -0
- package/dist/src/payments_manager.d.ts +40 -0
- package/dist/src/payments_manager.d.ts.map +1 -0
- package/dist/src/payments_manager.js +94 -0
- package/dist/src/payments_manager.js.map +1 -0
- package/dist/src/services/main.d.ts +6 -0
- package/dist/src/services/main.d.ts.map +1 -0
- package/dist/src/services/main.js +17 -0
- package/dist/src/services/main.js.map +1 -0
- package/dist/src/telescope/index.d.ts +3 -0
- package/dist/src/telescope/index.d.ts.map +1 -0
- package/dist/src/telescope/index.js +2 -0
- package/dist/src/telescope/index.js.map +1 -0
- package/dist/src/telescope/payments_watcher.d.ts +27 -0
- package/dist/src/telescope/payments_watcher.d.ts.map +1 -0
- package/dist/src/telescope/payments_watcher.js +58 -0
- package/dist/src/telescope/payments_watcher.js.map +1 -0
- package/dist/src/telescope/telescope-sdk.d.ts +21 -0
- package/dist/src/telescope/telescope-sdk.d.ts.map +1 -0
- package/dist/src/telescope/telescope-sdk.js +11 -0
- package/dist/src/telescope/telescope-sdk.js.map +1 -0
- package/dist/src/testing/fake_payments_driver.d.ts +64 -0
- package/dist/src/testing/fake_payments_driver.d.ts.map +1 -0
- package/dist/src/testing/fake_payments_driver.js +171 -0
- package/dist/src/testing/fake_payments_driver.js.map +1 -0
- package/dist/src/testing/in_memory_billing_store.d.ts +110 -0
- package/dist/src/testing/in_memory_billing_store.d.ts.map +1 -0
- package/dist/src/testing/in_memory_billing_store.js +136 -0
- package/dist/src/testing/in_memory_billing_store.js.map +1 -0
- package/dist/src/testing/index.d.ts +6 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +4 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/testing/mutable_clock.d.ts +12 -0
- package/dist/src/testing/mutable_clock.d.ts.map +1 -0
- package/dist/src/testing/mutable_clock.js +20 -0
- package/dist/src/testing/mutable_clock.js.map +1 -0
- package/dist/src/types.d.ts +178 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +9 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/webhook_handlers.d.ts +76 -0
- package/dist/src/webhook_handlers.d.ts.map +1 -0
- package/dist/src/webhook_handlers.js +128 -0
- package/dist/src/webhook_handlers.js.map +1 -0
- package/dist/src/webhook_security.d.ts +29 -0
- package/dist/src/webhook_security.d.ts.map +1 -0
- package/dist/src/webhook_security.js +53 -0
- package/dist/src/webhook_security.js.map +1 -0
- package/dist/stubs/config/payments.stub +101 -0
- package/dist/stubs/database/migrations/create_billing_tables.stub +90 -0
- package/dist/stubs/main.d.ts +9 -0
- package/dist/stubs/main.d.ts.map +1 -0
- package/dist/stubs/main.js +16 -0
- package/dist/stubs/main.js.map +1 -0
- package/dist/stubs/make/billable/main.stub +28 -0
- package/dist/stubs/make/webhook_handler/main.stub +29 -0
- package/package.json +150 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import type { WebhookHandler } from './billing/webhook_processor.js';
|
|
2
|
+
import type { PaymentsDriver } from './driver.js';
|
|
3
|
+
import type { InvoiceProvider } from './invoice/invoice_provider.js';
|
|
4
|
+
import type { InvoiceOptions, PaymentMethodName } from './types.js';
|
|
5
|
+
import type { WebhookHandlerService } from './webhook_handlers.js';
|
|
6
|
+
/**
|
|
7
|
+
* A lazy factory that builds a {@link PaymentsDriver}. Each driver factory imports its
|
|
8
|
+
* peer dependency (the Stripe SDK, etc.) lazily inside the thunk, so it only loads when
|
|
9
|
+
* that driver is actually selected — making every gateway SDK an optional peer.
|
|
10
|
+
*/
|
|
11
|
+
export type PaymentsDriverFactory = (ctx: PaymentsContext) => Promise<PaymentsDriver>;
|
|
12
|
+
/** A lazy factory that builds an {@link InvoiceProvider} (Focus, Tecnospeed, eNotas, PlugNotas). */
|
|
13
|
+
export type InvoiceProviderFactory = (ctx: InvoiceContext) => Promise<InvoiceProvider>;
|
|
14
|
+
/** `config.billing.handlers` — normalized webhook event type → handler. */
|
|
15
|
+
export type BillingHandlers = Record<string, WebhookHandler | WebhookHandlerService>;
|
|
16
|
+
/** Context handed to driver factories when the provider resolves them. */
|
|
17
|
+
export interface PaymentsContext {
|
|
18
|
+
/** Lazy import of the package's own config (circular-import safe). */
|
|
19
|
+
config: () => PaymentsConfig;
|
|
20
|
+
/** Resolve an invoice provider by name (falls back to the configured default). */
|
|
21
|
+
invoice?: (name?: string) => InvoiceProvider;
|
|
22
|
+
}
|
|
23
|
+
/** Context handed to invoice provider factories. */
|
|
24
|
+
export interface InvoiceContext {
|
|
25
|
+
/** Lazy import of the package's own invoice config section. */
|
|
26
|
+
config: () => InvoiceSectionConfig;
|
|
27
|
+
}
|
|
28
|
+
export interface StripeDriverConfig {
|
|
29
|
+
/** Stripe secret key. Defaults to `env.get('STRIPE_KEY')`. */
|
|
30
|
+
apiKey?: string;
|
|
31
|
+
/** Default currency. Defaults to `'brl'`. */
|
|
32
|
+
currency?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Webhook signing secret (`whsec_...`) used to verify `stripe-signature`. Defaults
|
|
35
|
+
* to `env.get('STRIPE_WEBHOOK_SECRET')`. Required to parse Stripe webhooks.
|
|
36
|
+
*/
|
|
37
|
+
webhookSecret?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface AbacateDriverConfig {
|
|
40
|
+
/** AbacatePay API token. Defaults to `env.get('ABACATE_API_KEY')`. */
|
|
41
|
+
apiKey?: string;
|
|
42
|
+
/** Public key used to verify webhook HMAC signatures. */
|
|
43
|
+
publicKey?: string;
|
|
44
|
+
/**
|
|
45
|
+
* HMAC secret that signs AbacatePay webhooks (the dashboard's "public key").
|
|
46
|
+
* Alias of {@link publicKey}; defaults to `env.get('ABACATE_PUBLIC_KEY')`. When set,
|
|
47
|
+
* webhooks without a valid `x-webhook-signature` are rejected.
|
|
48
|
+
*/
|
|
49
|
+
webhookSecret?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface AsaasDriverConfig {
|
|
52
|
+
/** Asaas API key. Defaults to `env.get('ASAAS_API_KEY')`. */
|
|
53
|
+
apiKey?: string;
|
|
54
|
+
/** Use the Asaas sandbox environment. Defaults to `NODE_ENV !== 'production'`. */
|
|
55
|
+
sandbox?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Shared webhook token configured in the Asaas dashboard. Defaults to
|
|
58
|
+
* `env.get('ASAAS_WEBHOOK_ACCESS_TOKEN')` (or `ASAAS_WEBHOOK_TOKEN`). When set,
|
|
59
|
+
* webhooks without the matching token header are rejected.
|
|
60
|
+
*/
|
|
61
|
+
webhookToken?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface FocusInvoiceConfig {
|
|
64
|
+
/** Focus NFe API token. Defaults to `env.get('FOCUS_NFE_TOKEN')`. */
|
|
65
|
+
token?: string;
|
|
66
|
+
/** Focus NFe API URL. Defaults to the production endpoint. */
|
|
67
|
+
baseUrl?: string;
|
|
68
|
+
}
|
|
69
|
+
export interface ENotasInvoiceConfig {
|
|
70
|
+
/** eNotas API key. Defaults to `env.get('ENOTAS_API_KEY')`. */
|
|
71
|
+
apiKey?: string;
|
|
72
|
+
/** eNotas API URL. Defaults to the production endpoint. */
|
|
73
|
+
baseUrl?: string;
|
|
74
|
+
}
|
|
75
|
+
export interface PlugNotasInvoiceConfig {
|
|
76
|
+
/** PlugNotas API key. Defaults to `env.get('PLUGNOTAS_API_KEY')`. */
|
|
77
|
+
apiKey?: string;
|
|
78
|
+
/** PlugNotas API URL. Defaults to the production endpoint. */
|
|
79
|
+
baseUrl?: string;
|
|
80
|
+
}
|
|
81
|
+
export interface AsaasInvoiceConfig {
|
|
82
|
+
/** Asaas API key. Defaults to `env.get('ASAAS_API_KEY')`. */
|
|
83
|
+
apiKey?: string;
|
|
84
|
+
/** Use the Asaas sandbox environment. Defaults to `NODE_ENV !== 'production'`. */
|
|
85
|
+
sandbox?: boolean;
|
|
86
|
+
}
|
|
87
|
+
export interface TecnospeedInvoiceConfig {
|
|
88
|
+
/** Tecnospeed API token. Defaults to `env.get('TECNOSPEED_TOKEN')`. */
|
|
89
|
+
token?: string;
|
|
90
|
+
/** Tecnospeed API base URL (per-municipality/plan). Defaults to the generic v1 base. */
|
|
91
|
+
baseUrl?: string;
|
|
92
|
+
}
|
|
93
|
+
export interface WooviDriverConfig {
|
|
94
|
+
/** Woovi/OpenPix app id. Defaults to `env.get('WOOVI_APP_ID')`. */
|
|
95
|
+
appId?: string;
|
|
96
|
+
/** Base URL of the OpenPix API. Defaults to production. */
|
|
97
|
+
baseUrl?: string;
|
|
98
|
+
/**
|
|
99
|
+
* Per-webhook HMAC secret (dashboard → API/Plugins). Verifies the deprecated
|
|
100
|
+
* `X-OpenPix-Signature` header. Defaults to `env.get('WOOVI_WEBHOOK_SECRET')`.
|
|
101
|
+
* Prefer {@link webhookPublicKey}.
|
|
102
|
+
*/
|
|
103
|
+
webhookSecret?: string;
|
|
104
|
+
/**
|
|
105
|
+
* Woovi account public key, used to verify the recommended `x-webhook-signature`
|
|
106
|
+
* header (RSA-SHA256). PEM or base64-encoded PEM; defaults to
|
|
107
|
+
* `env.get('WOOVI_WEBHOOK_PUBLIC_KEY')`.
|
|
108
|
+
*/
|
|
109
|
+
webhookPublicKey?: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Shape of `config/payments.ts`.
|
|
113
|
+
*
|
|
114
|
+
* Both payment gateways and invoice providers are named maps with a `default` — so a
|
|
115
|
+
* charge call either just works with the defaults, or names a specific provider per call.
|
|
116
|
+
*
|
|
117
|
+
* ```ts
|
|
118
|
+
* import { defineConfig, payments, invoice } from '@adonis-agora/payments'
|
|
119
|
+
*
|
|
120
|
+
* export default defineConfig({
|
|
121
|
+
* default: 'stripe',
|
|
122
|
+
* providers: {
|
|
123
|
+
* stripe: payments.stripe(),
|
|
124
|
+
* asaas: payments.asaas({ sandbox: true }),
|
|
125
|
+
* },
|
|
126
|
+
* invoice: {
|
|
127
|
+
* default: 'focus',
|
|
128
|
+
* providers: {
|
|
129
|
+
* focus: invoice.focus(),
|
|
130
|
+
* // Custom providers are plain factories too.
|
|
131
|
+
* myProvider: () => import('#services/my_invoice').then((m) => new m.MyInvoiceProvider()),
|
|
132
|
+
* },
|
|
133
|
+
* defaults: {
|
|
134
|
+
* service: { description: 'Software license' },
|
|
135
|
+
* },
|
|
136
|
+
* },
|
|
137
|
+
* billing: {
|
|
138
|
+
* enabled: true,
|
|
139
|
+
* durable: 'auto',
|
|
140
|
+
* },
|
|
141
|
+
* })
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export interface PaymentsConfig {
|
|
145
|
+
/** Name of the default payment provider (a key of `providers`). */
|
|
146
|
+
default?: string;
|
|
147
|
+
/** Named payment providers, built with the {@link payments} factory. */
|
|
148
|
+
providers?: Record<string, PaymentsDriverFactory>;
|
|
149
|
+
/**
|
|
150
|
+
* Route a payment method to a provider name (a key of `providers`). Resolves the
|
|
151
|
+
* driver per method on a charge call.
|
|
152
|
+
*
|
|
153
|
+
* ```ts
|
|
154
|
+
* methods: {
|
|
155
|
+
* pix: 'woovi', // Pix via Woovi/OpenPix
|
|
156
|
+
* credit_card: 'stripe', // card via Stripe
|
|
157
|
+
* boleto: 'asaas', // boleto via Asaas
|
|
158
|
+
* debit_card: 'asaas',
|
|
159
|
+
* undefined: 'asaas', // customer picks at checkout
|
|
160
|
+
* }
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
methods?: Partial<Record<PaymentMethodName, string>>;
|
|
164
|
+
/** Invoice emission settings. */
|
|
165
|
+
invoice?: InvoiceSectionConfig;
|
|
166
|
+
/** Billing (subscription) layer settings. */
|
|
167
|
+
billing?: {
|
|
168
|
+
/**
|
|
169
|
+
* Whether the Lucid billing layer is enabled. When enabled the provider wires the
|
|
170
|
+
* billing stores, mixins and webhook processor. Defaults to true.
|
|
171
|
+
*/
|
|
172
|
+
enabled?: boolean;
|
|
173
|
+
/**
|
|
174
|
+
* Legacy alias for {@link dispatcher}: `'auto'` (default) or a boolean (`true` =
|
|
175
|
+
* `'durable'`, `false` = `'in-process'`). Prefer `dispatcher` for the full set of
|
|
176
|
+
* backends.
|
|
177
|
+
*/
|
|
178
|
+
durable?: 'auto' | boolean;
|
|
179
|
+
/**
|
|
180
|
+
* How webhook events are processed:
|
|
181
|
+
*
|
|
182
|
+
* - `'auto'` (default) — `@adonis-agora/durable` when its provider is registered;
|
|
183
|
+
* else `@adonisjs/queue` when it's installed; else in-process with retries.
|
|
184
|
+
* - `'durable'` — a durable workflow run (requires `@adonis-agora/durable`, throws when missing).
|
|
185
|
+
* - `'queue'` — an `@adonisjs/queue` job (requires the queue provider, throws when missing).
|
|
186
|
+
* - `'in-process'` — inline with exponential-backoff retries.
|
|
187
|
+
*
|
|
188
|
+
* Mirrors how other Agora libraries pick a backend (`durable`'s `store`, etc.).
|
|
189
|
+
*/
|
|
190
|
+
dispatcher?: 'auto' | 'durable' | 'queue' | 'in-process';
|
|
191
|
+
/** Queue name the `'queue'` dispatcher enqueues to. Defaults to the queue's default. */
|
|
192
|
+
queue?: string;
|
|
193
|
+
/**
|
|
194
|
+
* Business webhook handlers run INSIDE the lib-mounted `/payments/webhook/:provider`
|
|
195
|
+
* route, by the {@link WebhookProcessor}. Errors mark the event failed in the ledger
|
|
196
|
+
* and trigger the dispatcher's retry. An alternative to subscribing to the
|
|
197
|
+
* `agora:payments:billing:*` events — pick whichever fits the app (events for
|
|
198
|
+
* fire-and-forget, handlers here for error-driven retry).
|
|
199
|
+
*
|
|
200
|
+
* Keyed by the normalized event type (e.g. `'payment.succeeded'`). Each factory
|
|
201
|
+
* receives the AdonisJS container and returns the handler, so it can resolve DI
|
|
202
|
+
* services lazily:
|
|
203
|
+
*
|
|
204
|
+
* ```ts
|
|
205
|
+
* handlers: {
|
|
206
|
+
* 'payment.succeeded': async ({ app }) => {
|
|
207
|
+
* const svc = await app.container.make(MeetingPackageService)
|
|
208
|
+
* return (event) => svc.handlePayment(event)
|
|
209
|
+
* },
|
|
210
|
+
* }
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
handlers?: BillingHandlers;
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Identity helper giving `config/payments.ts` full type-checking (media/durable pattern).
|
|
218
|
+
*/
|
|
219
|
+
export declare function defineConfig<const T extends PaymentsConfig>(config: T): T;
|
|
220
|
+
/** Built-in driver factories. Each lazily imports its gateway SDK. */
|
|
221
|
+
export declare const payments: {
|
|
222
|
+
stripe(config?: StripeDriverConfig): PaymentsDriverFactory;
|
|
223
|
+
abacate(config?: AbacateDriverConfig): PaymentsDriverFactory;
|
|
224
|
+
asaas(config?: AsaasDriverConfig): PaymentsDriverFactory;
|
|
225
|
+
woovi(config?: WooviDriverConfig): PaymentsDriverFactory;
|
|
226
|
+
};
|
|
227
|
+
/** Built-in invoice provider factories. Each lazily imports its provider module. */
|
|
228
|
+
export declare const invoice: {
|
|
229
|
+
focus(config?: FocusInvoiceConfig): InvoiceProviderFactory;
|
|
230
|
+
enotas(config?: ENotasInvoiceConfig): InvoiceProviderFactory;
|
|
231
|
+
plugnotas(config?: PlugNotasInvoiceConfig): InvoiceProviderFactory;
|
|
232
|
+
asaas(config?: AsaasInvoiceConfig): InvoiceProviderFactory;
|
|
233
|
+
tecnospeed(config?: TecnospeedInvoiceConfig): InvoiceProviderFactory;
|
|
234
|
+
};
|
|
235
|
+
export type { PaymentsDriver, InvoiceProvider };
|
|
236
|
+
/** Invoice emission settings (the `invoice` key of {@link PaymentsConfig}). */
|
|
237
|
+
export interface InvoiceSectionConfig {
|
|
238
|
+
/** Name of the default invoice provider (a key of `invoice.providers`). */
|
|
239
|
+
default?: string;
|
|
240
|
+
/** Named invoice providers, built with the {@link invoice} factory. */
|
|
241
|
+
providers?: Record<string, InvoiceProviderFactory>;
|
|
242
|
+
/** Defaults merged into every `invoice` option. */
|
|
243
|
+
defaults?: {
|
|
244
|
+
service?: InvoiceOptions['service'];
|
|
245
|
+
tax?: InvoiceOptions['tax'];
|
|
246
|
+
metadata?: InvoiceOptions['metadata'];
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
export type { InvoiceConfig };
|
|
250
|
+
type InvoiceConfig = InvoiceSectionConfig;
|
|
251
|
+
//# sourceMappingURL=define_config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity helper giving `config/payments.ts` full type-checking (media/durable pattern).
|
|
3
|
+
*/
|
|
4
|
+
export function defineConfig(config) {
|
|
5
|
+
return config;
|
|
6
|
+
}
|
|
7
|
+
/** Built-in driver factories. Each lazily imports its gateway SDK. */
|
|
8
|
+
export const payments = {
|
|
9
|
+
stripe(config = {}) {
|
|
10
|
+
return async (ctx) => {
|
|
11
|
+
const { StripeDriver } = await import('./drivers/stripe.js');
|
|
12
|
+
return new StripeDriver(ctx, config);
|
|
13
|
+
};
|
|
14
|
+
},
|
|
15
|
+
abacate(config = {}) {
|
|
16
|
+
return async (ctx) => {
|
|
17
|
+
const { AbacateDriver } = await import('./drivers/abacate.js');
|
|
18
|
+
return new AbacateDriver(ctx, config);
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
asaas(config = {}) {
|
|
22
|
+
return async (ctx) => {
|
|
23
|
+
const { AsaasDriver } = await import('./drivers/asaas.js');
|
|
24
|
+
return new AsaasDriver(ctx, config);
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
woovi(config = {}) {
|
|
28
|
+
return async (ctx) => {
|
|
29
|
+
const { WooviDriver } = await import('./drivers/woovi.js');
|
|
30
|
+
return new WooviDriver(ctx, config);
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
/** Built-in invoice provider factories. Each lazily imports its provider module. */
|
|
35
|
+
export const invoice = {
|
|
36
|
+
focus(config = {}) {
|
|
37
|
+
return async (ctx) => {
|
|
38
|
+
const { FocusInvoiceProvider } = await import('./invoice/drivers/focus.js');
|
|
39
|
+
return new FocusInvoiceProvider(ctx, config);
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
enotas(config = {}) {
|
|
43
|
+
return async (ctx) => {
|
|
44
|
+
const { ENotasInvoiceProvider } = await import('./invoice/drivers/enotas.js');
|
|
45
|
+
return new ENotasInvoiceProvider(ctx, config);
|
|
46
|
+
};
|
|
47
|
+
},
|
|
48
|
+
plugnotas(config = {}) {
|
|
49
|
+
return async (ctx) => {
|
|
50
|
+
const { PlugNotasInvoiceProvider } = await import('./invoice/drivers/plugnotas.js');
|
|
51
|
+
return new PlugNotasInvoiceProvider(ctx, config);
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
asaas(config = {}) {
|
|
55
|
+
return async (ctx) => {
|
|
56
|
+
const { AsaasInvoiceProvider } = await import('./invoice/drivers/asaas.js');
|
|
57
|
+
return new AsaasInvoiceProvider(ctx, config);
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
tecnospeed(config = {}) {
|
|
61
|
+
return async (ctx) => {
|
|
62
|
+
const { TecnospeedInvoiceProvider } = await import('./invoice/drivers/tecnospeed.js');
|
|
63
|
+
return new TecnospeedInvoiceProvider(ctx, config);
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=define_config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `@adonis-agora/diagnostics` emit capability, published on this global slot at that
|
|
3
|
+
* package's module load. `@adonis-agora/payments` reads it STRUCTURALLY — it never imports
|
|
4
|
+
* or depends on the diagnostics package. When diagnostics isn't installed the slot is
|
|
5
|
+
* empty and emitting is an inert no-op. (Same pattern as `@adonis-agora/media`.)
|
|
6
|
+
*/
|
|
7
|
+
import type { Payment, Subscription } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Every payments milestone published on `agora:payments:<event>`. The single runtime
|
|
10
|
+
* source for the {@link PaymentsDiagnosticEvent} union — a Telescope watcher iterates
|
|
11
|
+
* this to subscribe/claim, and apps subscribe with `onDiagnostic('payments', ...)`.
|
|
12
|
+
*
|
|
13
|
+
* Two layers:
|
|
14
|
+
* - **Gateway-action** events, emitted by the drivers on API calls (`charge.created`,
|
|
15
|
+
* `charge.refunded`, `subscription.created`/`canceled`, `invoice.emitted`).
|
|
16
|
+
* - **Business** events, emitted by the `WebhookProcessor` when a webhook confirms a
|
|
17
|
+
* state change (`payment.succeeded`/`failed`/`refunded`/`updated`,
|
|
18
|
+
* `subscription.updated`, plus `subscription.created`/`canceled` from webhooks) and
|
|
19
|
+
* the webhook lifecycle (`webhook.received`/`processed`/`failed`).
|
|
20
|
+
*/
|
|
21
|
+
export declare const PAYMENTS_DIAGNOSTIC_EVENTS: readonly ["charge.created", "charge.refunded", "subscription.created", "subscription.updated", "subscription.canceled", "payment.succeeded", "payment.failed", "payment.refunded", "payment.updated", "invoice.emitted", "webhook.received", "webhook.processed", "webhook.failed"];
|
|
22
|
+
export type PaymentsDiagnosticEvent = (typeof PAYMENTS_DIAGNOSTIC_EVENTS)[number];
|
|
23
|
+
/**
|
|
24
|
+
* Claim `payments:<event>` for every event, so the generic diagnostics→telescope bridge
|
|
25
|
+
* skips them. Reference-counted (mirrors `@adonis-agora/diagnostics`'
|
|
26
|
+
* `claimDiagnostics`).
|
|
27
|
+
*/
|
|
28
|
+
export declare function claimPaymentsDiagnostics(events: readonly string[]): () => void;
|
|
29
|
+
/** Whether `payments:<event>` is currently claimed. */
|
|
30
|
+
export declare function isPaymentsDiagnosticClaimed(event: string): boolean;
|
|
31
|
+
export interface ChargeCreatedPayload {
|
|
32
|
+
gatewayId: string;
|
|
33
|
+
provider: string;
|
|
34
|
+
amount: number;
|
|
35
|
+
currency: string;
|
|
36
|
+
method?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface ChargeRefundedPayload {
|
|
39
|
+
gatewayId: string;
|
|
40
|
+
provider: string;
|
|
41
|
+
amount: number;
|
|
42
|
+
currency: string;
|
|
43
|
+
}
|
|
44
|
+
export interface SubscriptionCreatedPayload {
|
|
45
|
+
gatewayId: string;
|
|
46
|
+
provider: string;
|
|
47
|
+
customerId: string;
|
|
48
|
+
planId: string;
|
|
49
|
+
}
|
|
50
|
+
export interface SubscriptionUpdatedPayload {
|
|
51
|
+
gatewayId: string;
|
|
52
|
+
provider: string;
|
|
53
|
+
customerId: string;
|
|
54
|
+
status: string;
|
|
55
|
+
}
|
|
56
|
+
export interface SubscriptionCanceledPayload {
|
|
57
|
+
gatewayId: string;
|
|
58
|
+
provider: string;
|
|
59
|
+
}
|
|
60
|
+
/** Webhook-confirmed payment (normalized business event). */
|
|
61
|
+
export interface PaymentSucceededPayload {
|
|
62
|
+
gatewayId: string;
|
|
63
|
+
provider: string;
|
|
64
|
+
amount: number;
|
|
65
|
+
currency: string;
|
|
66
|
+
/** The `externalReference` the app set on the charge, echoed back by the gateway. */
|
|
67
|
+
externalReference?: string;
|
|
68
|
+
}
|
|
69
|
+
export interface PaymentFailedPayload {
|
|
70
|
+
gatewayId: string;
|
|
71
|
+
provider: string;
|
|
72
|
+
amount: number;
|
|
73
|
+
currency: string;
|
|
74
|
+
reason?: string;
|
|
75
|
+
externalReference?: string;
|
|
76
|
+
}
|
|
77
|
+
export interface PaymentRefundedPayload {
|
|
78
|
+
gatewayId: string;
|
|
79
|
+
provider: string;
|
|
80
|
+
amount: number;
|
|
81
|
+
currency: string;
|
|
82
|
+
}
|
|
83
|
+
export interface PaymentUpdatedPayload {
|
|
84
|
+
gatewayId: string;
|
|
85
|
+
provider: string;
|
|
86
|
+
status: string;
|
|
87
|
+
}
|
|
88
|
+
export interface InvoiceEmittedPayload {
|
|
89
|
+
gatewayId: string;
|
|
90
|
+
provider: string;
|
|
91
|
+
number?: string;
|
|
92
|
+
url?: string;
|
|
93
|
+
}
|
|
94
|
+
export interface WebhookReceivedPayload {
|
|
95
|
+
id: string;
|
|
96
|
+
provider: string;
|
|
97
|
+
type: string;
|
|
98
|
+
}
|
|
99
|
+
export interface WebhookProcessedPayload {
|
|
100
|
+
id: string;
|
|
101
|
+
provider: string;
|
|
102
|
+
type: string;
|
|
103
|
+
}
|
|
104
|
+
export interface WebhookFailedPayload {
|
|
105
|
+
id: string;
|
|
106
|
+
provider: string;
|
|
107
|
+
type: string;
|
|
108
|
+
error: string;
|
|
109
|
+
}
|
|
110
|
+
/** Maps each event to its payload type, so {@link publishPayments} is checked at the call site. */
|
|
111
|
+
export interface PaymentsDiagnosticPayloads {
|
|
112
|
+
'charge.created': ChargeCreatedPayload;
|
|
113
|
+
'charge.refunded': ChargeRefundedPayload;
|
|
114
|
+
'subscription.created': SubscriptionCreatedPayload;
|
|
115
|
+
'subscription.updated': SubscriptionUpdatedPayload;
|
|
116
|
+
'subscription.canceled': SubscriptionCanceledPayload;
|
|
117
|
+
'payment.succeeded': PaymentSucceededPayload;
|
|
118
|
+
'payment.failed': PaymentFailedPayload;
|
|
119
|
+
'payment.refunded': PaymentRefundedPayload;
|
|
120
|
+
'payment.updated': PaymentUpdatedPayload;
|
|
121
|
+
'invoice.emitted': InvoiceEmittedPayload;
|
|
122
|
+
'webhook.received': WebhookReceivedPayload;
|
|
123
|
+
'webhook.processed': WebhookProcessedPayload;
|
|
124
|
+
'webhook.failed': WebhookFailedPayload;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Publish a payments event on `agora:payments:<event>` via the structural diagnostics
|
|
128
|
+
* slot. No-op when diagnostics isn't installed (the slot is empty) — and it never throws
|
|
129
|
+
* back into the library.
|
|
130
|
+
*/
|
|
131
|
+
export declare function publishPayments<E extends PaymentsDiagnosticEvent>(event: E, payload: PaymentsDiagnosticPayloads[E]): void;
|
|
132
|
+
/** Wrap a unit of payments work in a structural trace span. */
|
|
133
|
+
export declare function tracePayments<T>(event: string, fn: () => T, payload?: unknown): T;
|
|
134
|
+
/**
|
|
135
|
+
* Emit the `charge.created` / `charge.refunded` / `subscription.created` /
|
|
136
|
+
* `subscription.canceled` diagnostics for a normalized payment/subscription. Called by
|
|
137
|
+
* the drivers after a successful gateway call; a no-op when diagnostics isn't installed.
|
|
138
|
+
*/
|
|
139
|
+
export declare function publishPaymentDiagnostics(payment: Payment): void;
|
|
140
|
+
export declare function publishRefundDiagnostics(refund: {
|
|
141
|
+
gatewayId: string;
|
|
142
|
+
provider: string;
|
|
143
|
+
amount: {
|
|
144
|
+
amount: number;
|
|
145
|
+
currency: string;
|
|
146
|
+
};
|
|
147
|
+
}): void;
|
|
148
|
+
export declare function publishSubscriptionDiagnostics(subscription: Subscription, event: 'subscription.created' | 'subscription.canceled'): void;
|
|
149
|
+
export declare function publishInvoiceEmittedDiagnostics(invoice: {
|
|
150
|
+
gatewayId: string;
|
|
151
|
+
provider: string;
|
|
152
|
+
number?: string;
|
|
153
|
+
url?: string;
|
|
154
|
+
}): void;
|
|
155
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
const EMIT_SLOT = Symbol.for('@agora/diagnostics:emit');
|
|
2
|
+
/**
|
|
3
|
+
* The `@adonis-agora/diagnostics` trace capability. Like {@link EMIT_SLOT} it is read
|
|
4
|
+
* STRUCTURALLY — payments never imports the diagnostics package.
|
|
5
|
+
*/
|
|
6
|
+
const TRACE_SLOT = Symbol.for('@agora/diagnostics:trace');
|
|
7
|
+
/**
|
|
8
|
+
* Every payments milestone published on `agora:payments:<event>`. The single runtime
|
|
9
|
+
* source for the {@link PaymentsDiagnosticEvent} union — a Telescope watcher iterates
|
|
10
|
+
* this to subscribe/claim, and apps subscribe with `onDiagnostic('payments', ...)`.
|
|
11
|
+
*
|
|
12
|
+
* Two layers:
|
|
13
|
+
* - **Gateway-action** events, emitted by the drivers on API calls (`charge.created`,
|
|
14
|
+
* `charge.refunded`, `subscription.created`/`canceled`, `invoice.emitted`).
|
|
15
|
+
* - **Business** events, emitted by the `WebhookProcessor` when a webhook confirms a
|
|
16
|
+
* state change (`payment.succeeded`/`failed`/`refunded`/`updated`,
|
|
17
|
+
* `subscription.updated`, plus `subscription.created`/`canceled` from webhooks) and
|
|
18
|
+
* the webhook lifecycle (`webhook.received`/`processed`/`failed`).
|
|
19
|
+
*/
|
|
20
|
+
export const PAYMENTS_DIAGNOSTIC_EVENTS = [
|
|
21
|
+
'charge.created',
|
|
22
|
+
'charge.refunded',
|
|
23
|
+
'subscription.created',
|
|
24
|
+
'subscription.updated',
|
|
25
|
+
'subscription.canceled',
|
|
26
|
+
'payment.succeeded',
|
|
27
|
+
'payment.failed',
|
|
28
|
+
'payment.refunded',
|
|
29
|
+
'payment.updated',
|
|
30
|
+
'invoice.emitted',
|
|
31
|
+
'webhook.received',
|
|
32
|
+
'webhook.processed',
|
|
33
|
+
'webhook.failed',
|
|
34
|
+
];
|
|
35
|
+
/**
|
|
36
|
+
* The claim registry, published by `@adonis-agora/diagnostics` under this global slot as
|
|
37
|
+
* a reference-counted `Map<`${lib}:${event}`, number>`. Read STRUCTURALLY — same
|
|
38
|
+
* decoupling as {@link EMIT_SLOT}. A lib-specific Telescope watcher claims the channels
|
|
39
|
+
* it records here so the generic `DiagnosticsWatcher` skips them (its `recordClaimed:
|
|
40
|
+
* false` default), avoiding double-recording.
|
|
41
|
+
*/
|
|
42
|
+
const CLAIMS_SLOT = Symbol.for('@agora/diagnostics:claims');
|
|
43
|
+
function claimsRegistry() {
|
|
44
|
+
const g = globalThis;
|
|
45
|
+
let registry = g[CLAIMS_SLOT];
|
|
46
|
+
if (registry === undefined) {
|
|
47
|
+
registry = new Map();
|
|
48
|
+
g[CLAIMS_SLOT] = registry;
|
|
49
|
+
}
|
|
50
|
+
return registry;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Claim `payments:<event>` for every event, so the generic diagnostics→telescope bridge
|
|
54
|
+
* skips them. Reference-counted (mirrors `@adonis-agora/diagnostics`'
|
|
55
|
+
* `claimDiagnostics`).
|
|
56
|
+
*/
|
|
57
|
+
export function claimPaymentsDiagnostics(events) {
|
|
58
|
+
const registry = claimsRegistry();
|
|
59
|
+
const keys = events.map((event) => `payments:${event}`);
|
|
60
|
+
for (const key of keys)
|
|
61
|
+
registry.set(key, (registry.get(key) ?? 0) + 1);
|
|
62
|
+
let released = false;
|
|
63
|
+
return () => {
|
|
64
|
+
if (released)
|
|
65
|
+
return;
|
|
66
|
+
released = true;
|
|
67
|
+
for (const key of keys) {
|
|
68
|
+
const count = registry.get(key);
|
|
69
|
+
if (count === undefined)
|
|
70
|
+
continue;
|
|
71
|
+
if (count <= 1)
|
|
72
|
+
registry.delete(key);
|
|
73
|
+
else
|
|
74
|
+
registry.set(key, count - 1);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** Whether `payments:<event>` is currently claimed. */
|
|
79
|
+
export function isPaymentsDiagnosticClaimed(event) {
|
|
80
|
+
const registry = globalThis[CLAIMS_SLOT];
|
|
81
|
+
return registry?.has(`payments:${event}`) ?? false;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Publish a payments event on `agora:payments:<event>` via the structural diagnostics
|
|
85
|
+
* slot. No-op when diagnostics isn't installed (the slot is empty) — and it never throws
|
|
86
|
+
* back into the library.
|
|
87
|
+
*/
|
|
88
|
+
export function publishPayments(event, payload) {
|
|
89
|
+
const emit = globalThis[EMIT_SLOT];
|
|
90
|
+
if (typeof emit === 'function') {
|
|
91
|
+
try {
|
|
92
|
+
emit('payments', event, payload);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// diagnostics must never break a payment operation
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/** Wrap a unit of payments work in a structural trace span. */
|
|
100
|
+
export function tracePayments(event, fn, payload) {
|
|
101
|
+
const trace = globalThis[TRACE_SLOT];
|
|
102
|
+
if (typeof trace === 'function') {
|
|
103
|
+
return trace('payments', event, fn, payload);
|
|
104
|
+
}
|
|
105
|
+
return fn();
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Emit the `charge.created` / `charge.refunded` / `subscription.created` /
|
|
109
|
+
* `subscription.canceled` diagnostics for a normalized payment/subscription. Called by
|
|
110
|
+
* the drivers after a successful gateway call; a no-op when diagnostics isn't installed.
|
|
111
|
+
*/
|
|
112
|
+
export function publishPaymentDiagnostics(payment) {
|
|
113
|
+
publishPayments('charge.created', {
|
|
114
|
+
gatewayId: payment.gatewayId,
|
|
115
|
+
provider: payment.provider,
|
|
116
|
+
amount: payment.amount.amount,
|
|
117
|
+
currency: payment.amount.currency,
|
|
118
|
+
...(payment.method !== undefined ? { method: payment.method } : {}),
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
export function publishRefundDiagnostics(refund) {
|
|
122
|
+
publishPayments('charge.refunded', {
|
|
123
|
+
gatewayId: refund.gatewayId,
|
|
124
|
+
provider: refund.provider,
|
|
125
|
+
amount: refund.amount.amount,
|
|
126
|
+
currency: refund.amount.currency,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
export function publishSubscriptionDiagnostics(subscription, event) {
|
|
130
|
+
if (event === 'subscription.created') {
|
|
131
|
+
publishPayments('subscription.created', {
|
|
132
|
+
gatewayId: subscription.gatewayId,
|
|
133
|
+
provider: subscription.provider,
|
|
134
|
+
customerId: subscription.customerId,
|
|
135
|
+
planId: subscription.planId,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
publishPayments('subscription.canceled', {
|
|
140
|
+
gatewayId: subscription.gatewayId,
|
|
141
|
+
provider: subscription.provider,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
export function publishInvoiceEmittedDiagnostics(invoice) {
|
|
146
|
+
publishPayments('invoice.emitted', {
|
|
147
|
+
gatewayId: invoice.gatewayId,
|
|
148
|
+
provider: invoice.provider,
|
|
149
|
+
...(invoice.number !== undefined ? { number: invoice.number } : {}),
|
|
150
|
+
...(invoice.url !== undefined ? { url: invoice.url } : {}),
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"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"}
|