@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.
Files changed (222) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/commands/main.d.ts +16 -0
  3. package/dist/commands/main.d.ts.map +1 -0
  4. package/dist/commands/main.js +17 -0
  5. package/dist/commands/main.js.map +1 -0
  6. package/dist/commands/make_billable.d.ts +16 -0
  7. package/dist/commands/make_billable.d.ts.map +1 -0
  8. package/dist/commands/make_billable.js +30 -0
  9. package/dist/commands/make_billable.js.map +1 -0
  10. package/dist/commands/make_webhook_handler.d.ts +20 -0
  11. package/dist/commands/make_webhook_handler.d.ts.map +1 -0
  12. package/dist/commands/make_webhook_handler.js +34 -0
  13. package/dist/commands/make_webhook_handler.js.map +1 -0
  14. package/dist/commands/payments_sync.d.ts +20 -0
  15. package/dist/commands/payments_sync.d.ts.map +1 -0
  16. package/dist/commands/payments_sync.js +95 -0
  17. package/dist/commands/payments_sync.js.map +1 -0
  18. package/dist/commands/payments_webhook.d.ts +19 -0
  19. package/dist/commands/payments_webhook.d.ts.map +1 -0
  20. package/dist/commands/payments_webhook.js +123 -0
  21. package/dist/commands/payments_webhook.js.map +1 -0
  22. package/dist/configure.d.ts +12 -0
  23. package/dist/configure.d.ts.map +1 -0
  24. package/dist/configure.js +34 -0
  25. package/dist/configure.js.map +1 -0
  26. package/dist/providers/payments_provider.d.ts +15 -0
  27. package/dist/providers/payments_provider.d.ts.map +1 -0
  28. package/dist/providers/payments_provider.js +155 -0
  29. package/dist/providers/payments_provider.js.map +1 -0
  30. package/dist/src/billing/billing_overview.d.ts +26 -0
  31. package/dist/src/billing/billing_overview.d.ts.map +1 -0
  32. package/dist/src/billing/billing_overview.js +27 -0
  33. package/dist/src/billing/billing_overview.js.map +1 -0
  34. package/dist/src/billing/billing_store.d.ts +73 -0
  35. package/dist/src/billing/billing_store.d.ts.map +1 -0
  36. package/dist/src/billing/billing_store.js +2 -0
  37. package/dist/src/billing/billing_store.js.map +1 -0
  38. package/dist/src/billing/index.d.ts +8 -0
  39. package/dist/src/billing/index.d.ts.map +1 -0
  40. package/dist/src/billing/index.js +6 -0
  41. package/dist/src/billing/index.js.map +1 -0
  42. package/dist/src/billing/lucid_billing_store.d.ts +84 -0
  43. package/dist/src/billing/lucid_billing_store.d.ts.map +1 -0
  44. package/dist/src/billing/lucid_billing_store.js +143 -0
  45. package/dist/src/billing/lucid_billing_store.js.map +1 -0
  46. package/dist/src/billing/metered_bill.d.ts +60 -0
  47. package/dist/src/billing/metered_bill.d.ts.map +1 -0
  48. package/dist/src/billing/metered_bill.js +46 -0
  49. package/dist/src/billing/metered_bill.js.map +1 -0
  50. package/dist/src/billing/mixins/index.d.ts +6 -0
  51. package/dist/src/billing/mixins/index.d.ts.map +1 -0
  52. package/dist/src/billing/mixins/index.js +6 -0
  53. package/dist/src/billing/mixins/index.js.map +1 -0
  54. package/dist/src/billing/mixins/with_billable.d.ts +23 -0
  55. package/dist/src/billing/mixins/with_billable.d.ts.map +1 -0
  56. package/dist/src/billing/mixins/with_billable.js +33 -0
  57. package/dist/src/billing/mixins/with_billable.js.map +1 -0
  58. package/dist/src/billing/mixins/with_payment.d.ts +45 -0
  59. package/dist/src/billing/mixins/with_payment.d.ts.map +1 -0
  60. package/dist/src/billing/mixins/with_payment.js +94 -0
  61. package/dist/src/billing/mixins/with_payment.js.map +1 -0
  62. package/dist/src/billing/mixins/with_subscription.d.ts +50 -0
  63. package/dist/src/billing/mixins/with_subscription.d.ts.map +1 -0
  64. package/dist/src/billing/mixins/with_subscription.js +95 -0
  65. package/dist/src/billing/mixins/with_subscription.js.map +1 -0
  66. package/dist/src/billing/mixins/with_usage_event.d.ts +22 -0
  67. package/dist/src/billing/mixins/with_usage_event.d.ts.map +1 -0
  68. package/dist/src/billing/mixins/with_usage_event.js +39 -0
  69. package/dist/src/billing/mixins/with_usage_event.js.map +1 -0
  70. package/dist/src/billing/mixins/with_webhook_event.d.ts +21 -0
  71. package/dist/src/billing/mixins/with_webhook_event.d.ts.map +1 -0
  72. package/dist/src/billing/mixins/with_webhook_event.js +42 -0
  73. package/dist/src/billing/mixins/with_webhook_event.js.map +1 -0
  74. package/dist/src/billing/webhook_dispatcher.d.ts +79 -0
  75. package/dist/src/billing/webhook_dispatcher.d.ts.map +1 -0
  76. package/dist/src/billing/webhook_dispatcher.js +125 -0
  77. package/dist/src/billing/webhook_dispatcher.js.map +1 -0
  78. package/dist/src/billing/webhook_events.d.ts +49 -0
  79. package/dist/src/billing/webhook_events.d.ts.map +1 -0
  80. package/dist/src/billing/webhook_events.js +44 -0
  81. package/dist/src/billing/webhook_events.js.map +1 -0
  82. package/dist/src/billing/webhook_processor.d.ts +39 -0
  83. package/dist/src/billing/webhook_processor.d.ts.map +1 -0
  84. package/dist/src/billing/webhook_processor.js +209 -0
  85. package/dist/src/billing/webhook_processor.js.map +1 -0
  86. package/dist/src/define_config.d.ts +251 -0
  87. package/dist/src/define_config.d.ts.map +1 -0
  88. package/dist/src/define_config.js +67 -0
  89. package/dist/src/define_config.js.map +1 -0
  90. package/dist/src/diagnostics.d.ts +155 -0
  91. package/dist/src/diagnostics.d.ts.map +1 -0
  92. package/dist/src/diagnostics.js +153 -0
  93. package/dist/src/diagnostics.js.map +1 -0
  94. package/dist/src/driver.d.ts +222 -0
  95. package/dist/src/driver.d.ts.map +1 -0
  96. package/dist/src/driver.js +2 -0
  97. package/dist/src/driver.js.map +1 -0
  98. package/dist/src/drivers/abacate.d.ts +35 -0
  99. package/dist/src/drivers/abacate.d.ts.map +1 -0
  100. package/dist/src/drivers/abacate.js +381 -0
  101. package/dist/src/drivers/abacate.js.map +1 -0
  102. package/dist/src/drivers/asaas.d.ts +36 -0
  103. package/dist/src/drivers/asaas.d.ts.map +1 -0
  104. package/dist/src/drivers/asaas.js +455 -0
  105. package/dist/src/drivers/asaas.js.map +1 -0
  106. package/dist/src/drivers/stripe.d.ts +36 -0
  107. package/dist/src/drivers/stripe.d.ts.map +1 -0
  108. package/dist/src/drivers/stripe.js +392 -0
  109. package/dist/src/drivers/stripe.js.map +1 -0
  110. package/dist/src/drivers/woovi.d.ts +49 -0
  111. package/dist/src/drivers/woovi.d.ts.map +1 -0
  112. package/dist/src/drivers/woovi.js +339 -0
  113. package/dist/src/drivers/woovi.js.map +1 -0
  114. package/dist/src/ensure_customer.d.ts +23 -0
  115. package/dist/src/ensure_customer.d.ts.map +1 -0
  116. package/dist/src/ensure_customer.js +25 -0
  117. package/dist/src/ensure_customer.js.map +1 -0
  118. package/dist/src/hooks/webhook_handlers.d.ts +50 -0
  119. package/dist/src/hooks/webhook_handlers.d.ts.map +1 -0
  120. package/dist/src/hooks/webhook_handlers.js +53 -0
  121. package/dist/src/hooks/webhook_handlers.js.map +1 -0
  122. package/dist/src/http.d.ts +24 -0
  123. package/dist/src/http.d.ts.map +1 -0
  124. package/dist/src/http.js +52 -0
  125. package/dist/src/http.js.map +1 -0
  126. package/dist/src/index.d.ts +29 -0
  127. package/dist/src/index.d.ts.map +1 -0
  128. package/dist/src/index.js +15 -0
  129. package/dist/src/index.js.map +1 -0
  130. package/dist/src/invoice/drivers/asaas.d.ts +23 -0
  131. package/dist/src/invoice/drivers/asaas.d.ts.map +1 -0
  132. package/dist/src/invoice/drivers/asaas.js +85 -0
  133. package/dist/src/invoice/drivers/asaas.js.map +1 -0
  134. package/dist/src/invoice/drivers/enotas.d.ts +23 -0
  135. package/dist/src/invoice/drivers/enotas.d.ts.map +1 -0
  136. package/dist/src/invoice/drivers/enotas.js +83 -0
  137. package/dist/src/invoice/drivers/enotas.js.map +1 -0
  138. package/dist/src/invoice/drivers/focus.d.ts +23 -0
  139. package/dist/src/invoice/drivers/focus.d.ts.map +1 -0
  140. package/dist/src/invoice/drivers/focus.js +90 -0
  141. package/dist/src/invoice/drivers/focus.js.map +1 -0
  142. package/dist/src/invoice/drivers/plugnotas.d.ts +22 -0
  143. package/dist/src/invoice/drivers/plugnotas.d.ts.map +1 -0
  144. package/dist/src/invoice/drivers/plugnotas.js +81 -0
  145. package/dist/src/invoice/drivers/plugnotas.js.map +1 -0
  146. package/dist/src/invoice/drivers/tecnospeed.d.ts +29 -0
  147. package/dist/src/invoice/drivers/tecnospeed.d.ts.map +1 -0
  148. package/dist/src/invoice/drivers/tecnospeed.js +87 -0
  149. package/dist/src/invoice/drivers/tecnospeed.js.map +1 -0
  150. package/dist/src/invoice/emit_invoice.d.ts +45 -0
  151. package/dist/src/invoice/emit_invoice.d.ts.map +1 -0
  152. package/dist/src/invoice/emit_invoice.js +72 -0
  153. package/dist/src/invoice/emit_invoice.js.map +1 -0
  154. package/dist/src/invoice/invoice_manager.d.ts +12 -0
  155. package/dist/src/invoice/invoice_manager.d.ts.map +1 -0
  156. package/dist/src/invoice/invoice_manager.js +35 -0
  157. package/dist/src/invoice/invoice_manager.js.map +1 -0
  158. package/dist/src/invoice/invoice_provider.d.ts +48 -0
  159. package/dist/src/invoice/invoice_provider.d.ts.map +1 -0
  160. package/dist/src/invoice/invoice_provider.js +2 -0
  161. package/dist/src/invoice/invoice_provider.js.map +1 -0
  162. package/dist/src/money.d.ts +11 -0
  163. package/dist/src/money.d.ts.map +1 -0
  164. package/dist/src/money.js +14 -0
  165. package/dist/src/money.js.map +1 -0
  166. package/dist/src/payments_manager.d.ts +40 -0
  167. package/dist/src/payments_manager.d.ts.map +1 -0
  168. package/dist/src/payments_manager.js +94 -0
  169. package/dist/src/payments_manager.js.map +1 -0
  170. package/dist/src/services/main.d.ts +6 -0
  171. package/dist/src/services/main.d.ts.map +1 -0
  172. package/dist/src/services/main.js +17 -0
  173. package/dist/src/services/main.js.map +1 -0
  174. package/dist/src/telescope/index.d.ts +3 -0
  175. package/dist/src/telescope/index.d.ts.map +1 -0
  176. package/dist/src/telescope/index.js +2 -0
  177. package/dist/src/telescope/index.js.map +1 -0
  178. package/dist/src/telescope/payments_watcher.d.ts +27 -0
  179. package/dist/src/telescope/payments_watcher.d.ts.map +1 -0
  180. package/dist/src/telescope/payments_watcher.js +58 -0
  181. package/dist/src/telescope/payments_watcher.js.map +1 -0
  182. package/dist/src/telescope/telescope-sdk.d.ts +21 -0
  183. package/dist/src/telescope/telescope-sdk.d.ts.map +1 -0
  184. package/dist/src/telescope/telescope-sdk.js +11 -0
  185. package/dist/src/telescope/telescope-sdk.js.map +1 -0
  186. package/dist/src/testing/fake_payments_driver.d.ts +64 -0
  187. package/dist/src/testing/fake_payments_driver.d.ts.map +1 -0
  188. package/dist/src/testing/fake_payments_driver.js +171 -0
  189. package/dist/src/testing/fake_payments_driver.js.map +1 -0
  190. package/dist/src/testing/in_memory_billing_store.d.ts +110 -0
  191. package/dist/src/testing/in_memory_billing_store.d.ts.map +1 -0
  192. package/dist/src/testing/in_memory_billing_store.js +136 -0
  193. package/dist/src/testing/in_memory_billing_store.js.map +1 -0
  194. package/dist/src/testing/index.d.ts +6 -0
  195. package/dist/src/testing/index.d.ts.map +1 -0
  196. package/dist/src/testing/index.js +4 -0
  197. package/dist/src/testing/index.js.map +1 -0
  198. package/dist/src/testing/mutable_clock.d.ts +12 -0
  199. package/dist/src/testing/mutable_clock.d.ts.map +1 -0
  200. package/dist/src/testing/mutable_clock.js +20 -0
  201. package/dist/src/testing/mutable_clock.js.map +1 -0
  202. package/dist/src/types.d.ts +178 -0
  203. package/dist/src/types.d.ts.map +1 -0
  204. package/dist/src/types.js +9 -0
  205. package/dist/src/types.js.map +1 -0
  206. package/dist/src/webhook_handlers.d.ts +76 -0
  207. package/dist/src/webhook_handlers.d.ts.map +1 -0
  208. package/dist/src/webhook_handlers.js +128 -0
  209. package/dist/src/webhook_handlers.js.map +1 -0
  210. package/dist/src/webhook_security.d.ts +29 -0
  211. package/dist/src/webhook_security.d.ts.map +1 -0
  212. package/dist/src/webhook_security.js +53 -0
  213. package/dist/src/webhook_security.js.map +1 -0
  214. package/dist/stubs/config/payments.stub +101 -0
  215. package/dist/stubs/database/migrations/create_billing_tables.stub +90 -0
  216. package/dist/stubs/main.d.ts +9 -0
  217. package/dist/stubs/main.d.ts.map +1 -0
  218. package/dist/stubs/main.js +16 -0
  219. package/dist/stubs/main.js.map +1 -0
  220. package/dist/stubs/make/billable/main.stub +28 -0
  221. package/dist/stubs/make/webhook_handler/main.stub +29 -0
  222. package/package.json +150 -0
@@ -0,0 +1,29 @@
1
+ export { defineConfig, payments, invoice } from './define_config.js';
2
+ export type { PaymentsConfig, PaymentsContext, PaymentsDriverFactory, InvoiceContext, InvoiceProviderFactory, StripeDriverConfig, AbacateDriverConfig, AsaasDriverConfig, WooviDriverConfig, FocusInvoiceConfig, ENotasInvoiceConfig, PlugNotasInvoiceConfig, AsaasInvoiceConfig, TecnospeedInvoiceConfig, } from './define_config.js';
3
+ export { PaymentsManager, resolveDrivers } from './payments_manager.js';
4
+ export type { WooviSubAccount } from './drivers/woovi.js';
5
+ export type { PaymentsDriver, CreateCustomerInput, UpdateCustomerInput, ChargeInput, CheckoutInput, CreateSubscriptionInput, UpdateSubscriptionInput, } from './driver.js';
6
+ export { InvoiceManager, resolveInvoiceProviders } from './invoice/invoice_manager.js';
7
+ export type { InvoiceProvider, InvoiceEmitInput } from './invoice/invoice_provider.js';
8
+ export { emitInvoice, emitInvoiceIfRequested } from './invoice/emit_invoice.js';
9
+ export type { EmitInvoiceContext, EmitInvoiceData } from './invoice/emit_invoice.js';
10
+ export { httpRequest, headerValue, isNotFound } from './http.js';
11
+ export type { HttpRequestOptions } from './http.js';
12
+ export { toDecimal, fromDecimal } from './money.js';
13
+ export { ensureCustomer } from './ensure_customer.js';
14
+ export { isWebhookHandlerService, resolveWebhookHandler, normalizeWebhookHandlerModule, discoverWebhookHandlers, loadWebhookHandlersFromBarrel, pickModuleExt, } from './webhook_handlers.js';
15
+ export type { WebhookHandlerService, WebhookHandlerModule, DiscoveredWebhookHandler, WebhookHandlersBarrel, } from './webhook_handlers.js';
16
+ export { PAYMENTS_DIAGNOSTIC_EVENTS, publishPayments, publishPaymentDiagnostics, publishRefundDiagnostics, publishSubscriptionDiagnostics, publishInvoiceEmittedDiagnostics, claimPaymentsDiagnostics, isPaymentsDiagnosticClaimed, tracePayments, } from './diagnostics.js';
17
+ export type { PaymentsDiagnosticEvent, PaymentsDiagnosticPayloads, } from './diagnostics.js';
18
+ export { WebhookProcessor } from './billing/webhook_processor.js';
19
+ export type { WebhookHandler } from './billing/webhook_processor.js';
20
+ export { LucidBillingStore, lucidBillingStore } from './billing/lucid_billing_store.js';
21
+ export type { BillingModels } from './billing/lucid_billing_store.js';
22
+ export type { BillingStore } from './billing/billing_store.js';
23
+ export { BillingUsageEvent } from './billing/mixins/with_usage_event.js';
24
+ export { billingOverview } from './billing/billing_overview.js';
25
+ export type { BillingOverview, BillingOverviewMetric } from './billing/billing_overview.js';
26
+ export { meteredBill, meteredBillForSubscription } from './billing/metered_bill.js';
27
+ export type { MeterRate, MeteredBill, MeteredBillLine } from './billing/metered_bill.js';
28
+ export type { Money, Currency, BillingStatus, SubscriptionStatus, PaymentMethodType, PaymentMethodName, MoneyAmount, Customer, Payment, Refund, CheckoutSession, Subscription, Invoice, InvoiceOptions, WebhookEvent, } from './types.js';
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACrE,YAAY,EACV,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvF,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAChF,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,EACvB,6BAA6B,EAC7B,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,yBAAyB,EACzB,wBAAwB,EACxB,8BAA8B,EAC9B,gCAAgC,EAChC,wBAAwB,EACxB,2BAA2B,EAC3B,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACxF,YAAY,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACpF,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACzF,YAAY,EACV,KAAK,EACL,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,OAAO,EACP,MAAM,EACN,eAAe,EACf,YAAY,EACZ,OAAO,EACP,cAAc,EACd,YAAY,GACb,MAAM,YAAY,CAAC"}
@@ -0,0 +1,15 @@
1
+ export { defineConfig, payments, invoice } from './define_config.js';
2
+ export { PaymentsManager, resolveDrivers } from './payments_manager.js';
3
+ export { InvoiceManager, resolveInvoiceProviders } from './invoice/invoice_manager.js';
4
+ export { emitInvoice, emitInvoiceIfRequested } from './invoice/emit_invoice.js';
5
+ export { httpRequest, headerValue, isNotFound } from './http.js';
6
+ export { toDecimal, fromDecimal } from './money.js';
7
+ export { ensureCustomer } from './ensure_customer.js';
8
+ export { isWebhookHandlerService, resolveWebhookHandler, normalizeWebhookHandlerModule, discoverWebhookHandlers, loadWebhookHandlersFromBarrel, pickModuleExt, } from './webhook_handlers.js';
9
+ export { PAYMENTS_DIAGNOSTIC_EVENTS, publishPayments, publishPaymentDiagnostics, publishRefundDiagnostics, publishSubscriptionDiagnostics, publishInvoiceEmittedDiagnostics, claimPaymentsDiagnostics, isPaymentsDiagnosticClaimed, tracePayments, } from './diagnostics.js';
10
+ export { WebhookProcessor } from './billing/webhook_processor.js';
11
+ export { LucidBillingStore, lucidBillingStore } from './billing/lucid_billing_store.js';
12
+ export { BillingUsageEvent } from './billing/mixins/with_usage_event.js';
13
+ export { billingOverview } from './billing/billing_overview.js';
14
+ export { meteredBill, meteredBillForSubscription } from './billing/metered_bill.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAiBrE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAWxE,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvF,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,EACvB,6BAA6B,EAC7B,aAAa,GACd,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,yBAAyB,EACzB,wBAAwB,EACxB,8BAA8B,EAC9B,gCAAgC,EAChC,wBAAwB,EACxB,2BAA2B,EAC3B,aAAa,GACd,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { Invoice } from '../../types.js';
2
+ import type { InvoiceEmitInput, InvoiceProvider } from '../invoice_provider.js';
3
+ export interface AsaasInvoiceConfig {
4
+ /** Asaas API key. Defaults to `env.get('ASAAS_API_KEY')`. */
5
+ apiKey?: string;
6
+ /** Use the Asaas sandbox environment. Defaults to `NODE_ENV !== 'production'`. */
7
+ sandbox?: boolean;
8
+ }
9
+ /**
10
+ * Asaas native NFS-e invoice provider — emits the fiscal note through Asaas's own
11
+ * invoice API (`/v3/invoices`), so a charge through Asaas with `invoice: true` uses the
12
+ * same gateway that took the payment. Uses `fetch` directly (no SDK dependency).
13
+ */
14
+ export declare class AsaasInvoiceProvider implements InvoiceProvider {
15
+ #private;
16
+ readonly provider = "asaas";
17
+ constructor(_ctx: {
18
+ config: () => unknown;
19
+ }, config?: AsaasInvoiceConfig);
20
+ emit(input: InvoiceEmitInput): Promise<Invoice>;
21
+ find(invoiceId: string): Promise<Invoice | null>;
22
+ }
23
+ //# sourceMappingURL=asaas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asaas.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/asaas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAaD;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,eAAe;;IAC1D,QAAQ,CAAC,QAAQ,WAAW;gBAKhB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,OAAO,CAAA;KAAE,EAAE,MAAM,GAAE,kBAAuB;IAYtE,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA+B/C,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAqCvD"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Asaas native NFS-e invoice provider — emits the fiscal note through Asaas's own
3
+ * invoice API (`/v3/invoices`), so a charge through Asaas with `invoice: true` uses the
4
+ * same gateway that took the payment. Uses `fetch` directly (no SDK dependency).
5
+ */
6
+ export class AsaasInvoiceProvider {
7
+ provider = 'asaas';
8
+ #apiKey;
9
+ #baseUrl;
10
+ constructor(_ctx, config = {}) {
11
+ const apiKey = config.apiKey ?? process.env.ASAAS_API_KEY;
12
+ if (!apiKey) {
13
+ throw new Error('[payments] Asaas invoice provider requires an API key. Set `ASAAS_API_KEY` env or pass `apiKey` to `invoice.asaas()`.');
14
+ }
15
+ const sandbox = config.sandbox ?? process.env.NODE_ENV !== 'production';
16
+ this.#baseUrl = sandbox ? 'https://api-sandbox.asaas.com/v3' : 'https://api.asaas.com/v3';
17
+ this.#apiKey = apiKey;
18
+ }
19
+ async emit(input) {
20
+ const body = {
21
+ customer: input.customer.taxId.replace(/\D/g, ''),
22
+ value: input.amount / 100,
23
+ serviceDescription: input.service.description,
24
+ ...(input.service.code !== undefined ? { serviceCode: input.service.code } : {}),
25
+ ...(input.service.cityServiceCode !== undefined
26
+ ? { municipalServiceCode: input.service.cityServiceCode }
27
+ : {}),
28
+ ...(input.customer.name !== undefined ? { description: input.customer.name } : {}),
29
+ ...(input.customer.email !== undefined ? { notes: input.customer.email } : {}),
30
+ ...(input.tax !== undefined ? { taxes: input.tax } : {}),
31
+ ...(input.metadata !== undefined ? { observations: JSON.stringify(input.metadata) } : {}),
32
+ };
33
+ const response = await fetch(`${this.#baseUrl}/invoices`, {
34
+ method: 'POST',
35
+ headers: {
36
+ access_token: this.#apiKey,
37
+ 'Content-Type': 'application/json',
38
+ },
39
+ body: JSON.stringify(body),
40
+ });
41
+ if (!response.ok) {
42
+ const text = await response.text();
43
+ throw new Error(`[payments] Asaas invoice request failed (${response.status}): ${text}`);
44
+ }
45
+ const data = (await response.json());
46
+ return this.#mapInvoice(data);
47
+ }
48
+ async find(invoiceId) {
49
+ const response = await fetch(`${this.#baseUrl}/invoices/${encodeURIComponent(invoiceId)}`, {
50
+ headers: { access_token: this.#apiKey },
51
+ });
52
+ if (response.status === 404)
53
+ return null;
54
+ if (!response.ok) {
55
+ const text = await response.text();
56
+ throw new Error(`[payments] Asaas invoice request failed (${response.status}): ${text}`);
57
+ }
58
+ const data = (await response.json());
59
+ return this.#mapInvoice(data);
60
+ }
61
+ #mapInvoice(data) {
62
+ const status = data.status ?? 'PENDING';
63
+ const normalized = status === 'AUTHORIZED' || status === 'PAID'
64
+ ? 'issued'
65
+ : status === 'CANCELED' || status === 'REJECTED'
66
+ ? 'canceled'
67
+ : 'pending';
68
+ return {
69
+ id: data.id,
70
+ gatewayId: data.id,
71
+ provider: this.provider,
72
+ ...(data.nfseNumber !== undefined ? { number: data.nfseNumber } : {}),
73
+ ...(data.nfseAccessKey !== undefined ? { key: data.nfseAccessKey } : {}),
74
+ ...(data.invoiceUrl !== undefined
75
+ ? { url: data.invoiceUrl, hostedPdfUrl: data.invoiceUrl }
76
+ : {}),
77
+ status: normalized,
78
+ ...(data.pdfUrl !== undefined ? { hostedPdfUrl: data.pdfUrl } : {}),
79
+ amount: { amount: Math.round(Number(data.value ?? 0) * 100), currency: 'brl' },
80
+ createdAt: new Date().toISOString(),
81
+ payload: data,
82
+ };
83
+ }
84
+ }
85
+ //# sourceMappingURL=asaas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asaas.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/asaas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Invoice } from '../../types.js';
2
+ import type { InvoiceEmitInput, InvoiceProvider } from '../invoice_provider.js';
3
+ export interface ENotasInvoiceConfig {
4
+ /** eNotas API key. Defaults to `env.get('ENOTAS_API_KEY')`. */
5
+ apiKey?: string;
6
+ /** eNotas API URL. Defaults to the production endpoint. */
7
+ baseUrl?: string;
8
+ }
9
+ /**
10
+ * eNotas invoice provider — REST API for NFS-e/NF-e across Brazilian municipalities.
11
+ * Uses `fetch` directly (no SDK dependency). Exact field names follow the eNotas API;
12
+ * if a municipality/plan variant differs, extend this driver (see Custom providers).
13
+ */
14
+ export declare class ENotasInvoiceProvider implements InvoiceProvider {
15
+ #private;
16
+ readonly provider = "enotas";
17
+ constructor(_ctx: {
18
+ config: () => unknown;
19
+ }, config?: ENotasInvoiceConfig);
20
+ emit(input: InvoiceEmitInput): Promise<Invoice>;
21
+ find(invoiceId: string): Promise<Invoice | null>;
22
+ }
23
+ //# sourceMappingURL=enotas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enotas.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/enotas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,eAAe;;IAC3D,QAAQ,CAAC,QAAQ,YAAY;gBAKjB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,OAAO,CAAA;KAAE,EAAE,MAAM,GAAE,mBAAwB;IAWvE,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiC/C,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAkCvD"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * eNotas invoice provider — REST API for NFS-e/NF-e across Brazilian municipalities.
3
+ * Uses `fetch` directly (no SDK dependency). Exact field names follow the eNotas API;
4
+ * if a municipality/plan variant differs, extend this driver (see Custom providers).
5
+ */
6
+ export class ENotasInvoiceProvider {
7
+ provider = 'enotas';
8
+ #apiKey;
9
+ #baseUrl;
10
+ constructor(_ctx, config = {}) {
11
+ const apiKey = config.apiKey ?? process.env.ENOTAS_API_KEY;
12
+ if (!apiKey) {
13
+ throw new Error('[payments] eNotas invoice provider requires an API key. Set `ENOTAS_API_KEY` env or pass `apiKey` to `invoice.enotas()`.');
14
+ }
15
+ this.#apiKey = apiKey;
16
+ this.#baseUrl = config.baseUrl ?? 'https://api.enotasgw.com.br/v1';
17
+ }
18
+ async emit(input) {
19
+ const body = {
20
+ cliente: {
21
+ nome: input.customer.name ?? 'Cliente',
22
+ email: input.customer.email,
23
+ pessoaFisica: input.customer.taxId.length <= 11,
24
+ cpf: input.customer.taxId.replace(/\D/g, ''),
25
+ endereco: input.customer.address ?? undefined,
26
+ },
27
+ servico: {
28
+ descricao: input.service.description,
29
+ codigoServico: input.service.code,
30
+ valor: input.amount / 100,
31
+ },
32
+ ...(input.tax !== undefined ? { impostos: input.tax } : {}),
33
+ };
34
+ const response = await fetch(`${this.#baseUrl}/empresas/nfes`, {
35
+ method: 'POST',
36
+ headers: {
37
+ Authorization: `Bearer ${this.#apiKey}`,
38
+ 'Content-Type': 'application/json',
39
+ },
40
+ body: JSON.stringify(body),
41
+ });
42
+ if (!response.ok) {
43
+ const text = await response.text();
44
+ throw new Error(`[payments] eNotas invoice request failed (${response.status}): ${text}`);
45
+ }
46
+ const data = (await response.json());
47
+ return this.#mapInvoice(data);
48
+ }
49
+ async find(invoiceId) {
50
+ const response = await fetch(`${this.#baseUrl}/nfes/${encodeURIComponent(invoiceId)}`, {
51
+ headers: { Authorization: `Bearer ${this.#apiKey}` },
52
+ });
53
+ if (response.status === 404)
54
+ return null;
55
+ if (!response.ok) {
56
+ const text = await response.text();
57
+ throw new Error(`[payments] eNotas invoice request failed (${response.status}): ${text}`);
58
+ }
59
+ const data = (await response.json());
60
+ return this.#mapInvoice(data);
61
+ }
62
+ #mapInvoice(data) {
63
+ const status = data.status ?? '';
64
+ const normalized = status === 'AUTORIZADO' || status === 'AUTORIZADA'
65
+ ? 'issued'
66
+ : status === 'CANCELADO' || status === 'REJEITADO'
67
+ ? 'canceled'
68
+ : 'pending';
69
+ return {
70
+ id: data.id ?? data.numero ?? String(Math.random()),
71
+ gatewayId: data.id ?? data.numero ?? '',
72
+ provider: this.provider,
73
+ ...(data.numero !== undefined ? { number: data.numero } : {}),
74
+ ...(data.urlDanfe !== undefined ? { url: data.urlDanfe, hostedPdfUrl: data.urlDanfe } : {}),
75
+ status: normalized,
76
+ ...(data.dataEmissao !== undefined ? { issuedAt: data.dataEmissao } : {}),
77
+ amount: { amount: Math.round(Number(data.valor ?? 0) * 100), currency: 'brl' },
78
+ createdAt: data.dataEmissao ?? new Date().toISOString(),
79
+ payload: data,
80
+ };
81
+ }
82
+ }
83
+ //# sourceMappingURL=enotas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enotas.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/enotas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Invoice } from '../../types.js';
2
+ import type { InvoiceEmitInput, InvoiceProvider } from '../invoice_provider.js';
3
+ export interface FocusInvoiceConfig {
4
+ /** Focus NFe API token. Defaults to `env.get('FOCUS_NFE_TOKEN')`. */
5
+ token?: string;
6
+ /** Focus NFe API URL. Defaults to the production endpoint. */
7
+ baseUrl?: string;
8
+ }
9
+ /**
10
+ * Focus NFe invoice provider — REST API for electronic invoices across hundreds of
11
+ * municipalities. Uses `fetch` directly (no SDK dependency), so Focus is not a peer
12
+ * dependency. (The `NFe`/`nfse` names below are Focus's own API identifiers.)
13
+ */
14
+ export declare class FocusInvoiceProvider implements InvoiceProvider {
15
+ #private;
16
+ readonly provider = "focus";
17
+ constructor(_ctx: {
18
+ config: () => unknown;
19
+ }, config?: FocusInvoiceConfig);
20
+ emit(input: InvoiceEmitInput): Promise<Invoice>;
21
+ find(invoiceId: string): Promise<Invoice | null>;
22
+ }
23
+ //# sourceMappingURL=focus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/focus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,eAAe;;IAC1D,QAAQ,CAAC,QAAQ,WAAW;gBAKhB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,OAAO,CAAA;KAAE,EAAE,MAAM,GAAE,kBAAuB;IAWtE,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqC/C,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAqCvD"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Focus NFe invoice provider — REST API for electronic invoices across hundreds of
3
+ * municipalities. Uses `fetch` directly (no SDK dependency), so Focus is not a peer
4
+ * dependency. (The `NFe`/`nfse` names below are Focus's own API identifiers.)
5
+ */
6
+ export class FocusInvoiceProvider {
7
+ provider = 'focus';
8
+ #token;
9
+ #baseUrl;
10
+ constructor(_ctx, config = {}) {
11
+ const token = config.token ?? process.env.FOCUS_NFE_TOKEN;
12
+ if (!token) {
13
+ throw new Error('[payments] Focus invoice provider requires a token. Set `FOCUS_NFE_TOKEN` env or pass `token` to `invoice.focus()`.');
14
+ }
15
+ this.#token = token;
16
+ this.#baseUrl = config.baseUrl ?? 'https://api.focusnfe.com.br';
17
+ }
18
+ async emit(input) {
19
+ // Focus service-invoice endpoint.
20
+ const body = {
21
+ tomador: {
22
+ cpf_cnpj: input.customer.taxId.replace(/\D/g, ''),
23
+ nome: input.customer.name ?? 'Cliente',
24
+ ...(input.customer.email !== undefined ? { email: input.customer.email } : {}),
25
+ ...(input.customer.address !== undefined ? { endereco: input.customer.address } : {}),
26
+ },
27
+ servico: {
28
+ descricao: input.service.description,
29
+ ...(input.service.code !== undefined ? { codigo_servico: input.service.code } : {}),
30
+ ...(input.service.cityServiceCode !== undefined
31
+ ? { codigo_servico_municipio: input.service.cityServiceCode }
32
+ : {}),
33
+ },
34
+ valor: (input.amount / 100).toFixed(2),
35
+ ...(input.tax !== undefined ? { impostos: input.tax } : {}),
36
+ ...(input.metadata !== undefined ? { metadados: input.metadata } : {}),
37
+ };
38
+ const response = await fetch(`${this.#baseUrl}/v2/nfse`, {
39
+ method: 'POST',
40
+ headers: {
41
+ Authorization: this.#token,
42
+ 'Content-Type': 'application/json',
43
+ },
44
+ body: JSON.stringify(body),
45
+ });
46
+ if (!response.ok) {
47
+ const text = await response.text();
48
+ throw new Error(`[payments] Focus NFe request failed (${response.status}): ${text}`);
49
+ }
50
+ const data = (await response.json());
51
+ return this.#mapInvoice(data);
52
+ }
53
+ async find(invoiceId) {
54
+ const response = await fetch(`${this.#baseUrl}/v2/nfse/${encodeURIComponent(invoiceId)}`, {
55
+ headers: { Authorization: this.#token },
56
+ });
57
+ if (response.status === 404)
58
+ return null;
59
+ if (!response.ok) {
60
+ const text = await response.text();
61
+ throw new Error(`[payments] Focus NFe request failed (${response.status}): ${text}`);
62
+ }
63
+ const data = (await response.json());
64
+ return this.#mapInvoice(data);
65
+ }
66
+ #mapInvoice(data) {
67
+ const status = data.status ?? 'pendente';
68
+ const normalized = status === 'autorizado'
69
+ ? 'issued'
70
+ : status === 'cancelado' || status === 'rejeitado'
71
+ ? 'canceled'
72
+ : 'pending';
73
+ return {
74
+ id: data.ref ?? data.numero ?? String(Math.random()),
75
+ gatewayId: data.ref ?? data.numero ?? '',
76
+ provider: this.provider,
77
+ number: data.numero ?? '',
78
+ ...(data.chave !== undefined ? { key: data.chave } : {}),
79
+ ...(data.caminho_danfe !== undefined
80
+ ? { url: data.caminho_danfe, hostedPdfUrl: data.caminho_danfe }
81
+ : {}),
82
+ status: normalized,
83
+ ...(data.data_emissao !== undefined ? { issuedAt: data.data_emissao } : {}),
84
+ amount: { amount: Math.round(Number(data.valor ?? 0) * 100), currency: 'brl' },
85
+ createdAt: data.data_emissao ?? new Date().toISOString(),
86
+ payload: data,
87
+ };
88
+ }
89
+ }
90
+ //# sourceMappingURL=focus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/focus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Invoice } from '../../types.js';
2
+ import type { InvoiceEmitInput, InvoiceProvider } from '../invoice_provider.js';
3
+ export interface PlugNotasInvoiceConfig {
4
+ /** PlugNotas API key. Defaults to `env.get('PLUGNOTAS_API_KEY')`. */
5
+ apiKey?: string;
6
+ /** PlugNotas API URL. Defaults to the production endpoint. */
7
+ baseUrl?: string;
8
+ }
9
+ /**
10
+ * PlugNotas invoice provider — NFS-e API. Uses `fetch` directly (no SDK dependency).
11
+ * Exact field names follow the PlugNotas API; if a variant differs, extend this driver.
12
+ */
13
+ export declare class PlugNotasInvoiceProvider implements InvoiceProvider {
14
+ #private;
15
+ readonly provider = "plugnotas";
16
+ constructor(_ctx: {
17
+ config: () => unknown;
18
+ }, config?: PlugNotasInvoiceConfig);
19
+ emit(input: InvoiceEmitInput): Promise<Invoice>;
20
+ find(invoiceId: string): Promise<Invoice | null>;
21
+ }
22
+ //# sourceMappingURL=plugnotas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugnotas.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/plugnotas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,WAAW,sBAAsB;IACrC,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,eAAe;;IAC9D,QAAQ,CAAC,QAAQ,eAAe;gBAKpB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,OAAO,CAAA;KAAE,EAAE,MAAM,GAAE,sBAA2B;IAW1E,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAgC/C,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAkCvD"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * PlugNotas invoice provider — NFS-e API. Uses `fetch` directly (no SDK dependency).
3
+ * Exact field names follow the PlugNotas API; if a variant differs, extend this driver.
4
+ */
5
+ export class PlugNotasInvoiceProvider {
6
+ provider = 'plugnotas';
7
+ #apiKey;
8
+ #baseUrl;
9
+ constructor(_ctx, config = {}) {
10
+ const apiKey = config.apiKey ?? process.env.PLUGNOTAS_API_KEY;
11
+ if (!apiKey) {
12
+ throw new Error('[payments] PlugNotas invoice provider requires an API key. Set `PLUGNOTAS_API_KEY` env or pass `apiKey` to `invoice.plugnotas()`.');
13
+ }
14
+ this.#apiKey = apiKey;
15
+ this.#baseUrl = config.baseUrl ?? 'https://api.plugnotas.com.br';
16
+ }
17
+ async emit(input) {
18
+ const body = {
19
+ tomador: {
20
+ cpfCnpj: input.customer.taxId.replace(/\D/g, ''),
21
+ razaoSocial: input.customer.name ?? 'Cliente',
22
+ email: input.customer.email,
23
+ endereco: input.customer.address ?? undefined,
24
+ },
25
+ servico: {
26
+ descricao: input.service.description,
27
+ codigoServico: input.service.code,
28
+ },
29
+ valor: input.amount / 100,
30
+ ...(input.tax !== undefined ? { impostos: input.tax } : {}),
31
+ };
32
+ const response = await fetch(`${this.#baseUrl}/nfse`, {
33
+ method: 'POST',
34
+ headers: {
35
+ 'X-API-KEY': this.#apiKey,
36
+ 'Content-Type': 'application/json',
37
+ },
38
+ body: JSON.stringify(body),
39
+ });
40
+ if (!response.ok) {
41
+ const text = await response.text();
42
+ throw new Error(`[payments] PlugNotas invoice request failed (${response.status}): ${text}`);
43
+ }
44
+ const data = (await response.json());
45
+ return this.#mapInvoice(data);
46
+ }
47
+ async find(invoiceId) {
48
+ const response = await fetch(`${this.#baseUrl}/nfse/${encodeURIComponent(invoiceId)}`, {
49
+ headers: { 'X-API-KEY': this.#apiKey },
50
+ });
51
+ if (response.status === 404)
52
+ return null;
53
+ if (!response.ok) {
54
+ const text = await response.text();
55
+ throw new Error(`[payments] PlugNotas invoice request failed (${response.status}): ${text}`);
56
+ }
57
+ const data = (await response.json());
58
+ return this.#mapInvoice(data);
59
+ }
60
+ #mapInvoice(data) {
61
+ const status = data.status ?? '';
62
+ const normalized = status === 'AUTORIZADO' || status === 'AUTORIZADA' || status === 'emitido'
63
+ ? 'issued'
64
+ : status === 'CANCELADO' || status === 'REJEITADO' || status === 'cancelado'
65
+ ? 'canceled'
66
+ : 'pending';
67
+ return {
68
+ id: data.id ?? data.numero ?? String(Math.random()),
69
+ gatewayId: data.id ?? data.numero ?? '',
70
+ provider: this.provider,
71
+ ...(data.numero !== undefined ? { number: data.numero } : {}),
72
+ ...(data.urlPdf !== undefined ? { url: data.urlPdf, hostedPdfUrl: data.urlPdf } : {}),
73
+ status: normalized,
74
+ ...(data.dataEmissao !== undefined ? { issuedAt: data.dataEmissao } : {}),
75
+ amount: { amount: Math.round(Number(data.valor ?? 0) * 100), currency: 'brl' },
76
+ createdAt: data.dataEmissao ?? new Date().toISOString(),
77
+ payload: data,
78
+ };
79
+ }
80
+ }
81
+ //# sourceMappingURL=plugnotas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugnotas.js","sourceRoot":"","sources":["../../../../src/invoice/drivers/plugnotas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { Invoice } from '../../types.js';
2
+ import type { InvoiceEmitInput, InvoiceProvider } from '../invoice_provider.js';
3
+ export interface TecnospeedInvoiceConfig {
4
+ /** Tecnospeed API token. Defaults to `env.get('TECNOSPEED_TOKEN')`. */
5
+ token?: string;
6
+ /**
7
+ * Tecnospeed API base URL. The NFS-e API is per-municipality (and the national layout
8
+ * moved to an XML DPS at `https://tributario.speedgov.com.br/{municipio}/api/v1`), so
9
+ * point this at your municipality/plan endpoint. Defaults to the generic v1 base.
10
+ */
11
+ baseUrl?: string;
12
+ }
13
+ /**
14
+ * Tecnospeed invoice provider — NFS-e across municipalities. Uses `fetch` directly (no
15
+ * SDK dependency). The exact JSON layout varies per municipality and standard (Tecnospeed
16
+ * also offers an XML DPS flow and steers toward PlugNotas for JSON NFS-e) — this adapter
17
+ * sends the common JSON shape and normalizes the response; if your municipality differs,
18
+ * extend this driver (see Custom providers).
19
+ */
20
+ export declare class TecnospeedInvoiceProvider implements InvoiceProvider {
21
+ #private;
22
+ readonly provider = "tecnospeed";
23
+ constructor(_ctx: {
24
+ config: () => unknown;
25
+ }, config?: TecnospeedInvoiceConfig);
26
+ emit(input: InvoiceEmitInput): Promise<Invoice>;
27
+ find(invoiceId: string): Promise<Invoice | null>;
28
+ }
29
+ //# sourceMappingURL=tecnospeed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tecnospeed.d.ts","sourceRoot":"","sources":["../../../../src/invoice/drivers/tecnospeed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD;;;;;;GAMG;AACH,qBAAa,yBAA0B,YAAW,eAAe;;IAC/D,QAAQ,CAAC,QAAQ,gBAAgB;gBAKrB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,OAAO,CAAA;KAAE,EAAE,MAAM,GAAE,uBAA4B;IAW3E,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmC/C,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAkCvD"}