@owlmeans/server-payment 0.1.18-rc.2 → 0.1.18-rc.21

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/README.md +109 -25
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/server-payment/SKILL.md +475 -52
  4. package/build/actions/index.d.ts +1 -0
  5. package/build/actions/index.d.ts.map +1 -1
  6. package/build/actions/index.js +1 -0
  7. package/build/actions/index.js.map +1 -1
  8. package/build/actions/resync-subscriptions.d.ts +3 -0
  9. package/build/actions/resync-subscriptions.d.ts.map +1 -0
  10. package/build/actions/resync-subscriptions.js +7 -0
  11. package/build/actions/resync-subscriptions.js.map +1 -0
  12. package/build/actions/resync.d.ts +1 -0
  13. package/build/actions/resync.d.ts.map +1 -1
  14. package/build/actions/resync.js +7 -3
  15. package/build/actions/resync.js.map +1 -1
  16. package/build/actions/webhook.d.ts.map +1 -1
  17. package/build/actions/webhook.js +6 -3
  18. package/build/actions/webhook.js.map +1 -1
  19. package/build/config.d.ts +60 -5
  20. package/build/config.d.ts.map +1 -1
  21. package/build/config.js +237 -5
  22. package/build/config.js.map +1 -1
  23. package/build/consts.d.ts +75 -3
  24. package/build/consts.d.ts.map +1 -1
  25. package/build/consts.js +94 -5
  26. package/build/consts.js.map +1 -1
  27. package/build/consumer/capture.d.ts +74 -0
  28. package/build/consumer/capture.d.ts.map +1 -0
  29. package/build/consumer/capture.js +291 -0
  30. package/build/consumer/capture.js.map +1 -0
  31. package/build/consumer/format.d.ts +27 -0
  32. package/build/consumer/format.d.ts.map +1 -0
  33. package/build/consumer/format.js +81 -0
  34. package/build/consumer/format.js.map +1 -0
  35. package/build/consumer/handlers.d.ts +28 -0
  36. package/build/consumer/handlers.d.ts.map +1 -0
  37. package/build/consumer/handlers.js +173 -0
  38. package/build/consumer/handlers.js.map +1 -0
  39. package/build/consumer/index.d.ts +7 -0
  40. package/build/consumer/index.d.ts.map +1 -0
  41. package/build/consumer/index.js +6 -0
  42. package/build/consumer/index.js.map +1 -0
  43. package/build/consumer/mail.d.ts +27 -0
  44. package/build/consumer/mail.d.ts.map +1 -0
  45. package/build/consumer/mail.js +314 -0
  46. package/build/consumer/mail.js.map +1 -0
  47. package/build/consumer/origin.d.ts +14 -0
  48. package/build/consumer/origin.d.ts.map +1 -0
  49. package/build/consumer/origin.js +47 -0
  50. package/build/consumer/origin.js.map +1 -0
  51. package/build/consumer/reconcile.d.ts +12 -0
  52. package/build/consumer/reconcile.d.ts.map +1 -0
  53. package/build/consumer/reconcile.js +317 -0
  54. package/build/consumer/reconcile.js.map +1 -0
  55. package/build/consumer/records.d.ts +78 -0
  56. package/build/consumer/records.d.ts.map +1 -0
  57. package/build/consumer/records.js +296 -0
  58. package/build/consumer/records.js.map +1 -0
  59. package/build/consumer/service.d.ts +51 -0
  60. package/build/consumer/service.d.ts.map +1 -0
  61. package/build/consumer/service.js +760 -0
  62. package/build/consumer/service.js.map +1 -0
  63. package/build/consumer/withdrawal.d.ts +57 -0
  64. package/build/consumer/withdrawal.d.ts.map +1 -0
  65. package/build/consumer/withdrawal.js +247 -0
  66. package/build/consumer/withdrawal.js.map +1 -0
  67. package/build/entitlement.d.ts +10 -0
  68. package/build/entitlement.d.ts.map +1 -0
  69. package/build/entitlement.js +69 -0
  70. package/build/entitlement.js.map +1 -0
  71. package/build/entrypoints.d.ts +1 -1
  72. package/build/entrypoints.d.ts.map +1 -1
  73. package/build/entrypoints.js +2 -1
  74. package/build/entrypoints.js.map +1 -1
  75. package/build/gate.d.ts +32 -4
  76. package/build/gate.d.ts.map +1 -1
  77. package/build/gate.js +59 -19
  78. package/build/gate.js.map +1 -1
  79. package/build/index.d.ts +18 -3
  80. package/build/index.d.ts.map +1 -1
  81. package/build/index.js +15 -3
  82. package/build/index.js.map +1 -1
  83. package/build/limit.d.ts +13 -0
  84. package/build/limit.d.ts.map +1 -0
  85. package/build/limit.js +47 -0
  86. package/build/limit.js.map +1 -0
  87. package/build/model.d.ts +10 -1
  88. package/build/model.d.ts.map +1 -1
  89. package/build/model.js +215 -17
  90. package/build/model.js.map +1 -1
  91. package/build/observer.d.ts +9 -0
  92. package/build/observer.d.ts.map +1 -1
  93. package/build/observer.js +38 -12
  94. package/build/observer.js.map +1 -1
  95. package/build/plan.d.ts +22 -0
  96. package/build/plan.d.ts.map +1 -0
  97. package/build/plan.js +72 -0
  98. package/build/plan.js.map +1 -0
  99. package/build/plugins/checkout-plugins.d.ts +49 -0
  100. package/build/plugins/checkout-plugins.d.ts.map +1 -0
  101. package/build/plugins/checkout-plugins.js +124 -0
  102. package/build/plugins/checkout-plugins.js.map +1 -0
  103. package/build/plugins/estimate.d.ts +43 -0
  104. package/build/plugins/estimate.d.ts.map +1 -0
  105. package/build/plugins/estimate.js +268 -0
  106. package/build/plugins/estimate.js.map +1 -0
  107. package/build/plugins/events.d.ts +45 -10
  108. package/build/plugins/events.d.ts.map +1 -1
  109. package/build/plugins/events.js +605 -136
  110. package/build/plugins/events.js.map +1 -1
  111. package/build/plugins/fx.d.ts +31 -0
  112. package/build/plugins/fx.d.ts.map +1 -0
  113. package/build/plugins/fx.js +81 -0
  114. package/build/plugins/fx.js.map +1 -0
  115. package/build/plugins/portal.d.ts +37 -0
  116. package/build/plugins/portal.d.ts.map +1 -0
  117. package/build/plugins/portal.js +265 -0
  118. package/build/plugins/portal.js.map +1 -0
  119. package/build/plugins/refunds.d.ts +33 -0
  120. package/build/plugins/refunds.d.ts.map +1 -0
  121. package/build/plugins/refunds.js +80 -0
  122. package/build/plugins/refunds.js.map +1 -0
  123. package/build/plugins/stripe.d.ts +36 -4
  124. package/build/plugins/stripe.d.ts.map +1 -1
  125. package/build/plugins/stripe.js +492 -97
  126. package/build/plugins/stripe.js.map +1 -1
  127. package/build/plugins/webhook-manager.d.ts +46 -0
  128. package/build/plugins/webhook-manager.d.ts.map +1 -0
  129. package/build/plugins/webhook-manager.js +231 -0
  130. package/build/plugins/webhook-manager.js.map +1 -0
  131. package/build/reconcile.d.ts +15 -0
  132. package/build/reconcile.d.ts.map +1 -0
  133. package/build/reconcile.js +88 -0
  134. package/build/reconcile.js.map +1 -0
  135. package/build/resource.d.ts +12 -1
  136. package/build/resource.d.ts.map +1 -1
  137. package/build/resource.js +97 -6
  138. package/build/resource.js.map +1 -1
  139. package/build/service.d.ts +28 -3
  140. package/build/service.d.ts.map +1 -1
  141. package/build/service.js +146 -19
  142. package/build/service.js.map +1 -1
  143. package/build/subscription.d.ts +48 -0
  144. package/build/subscription.d.ts.map +1 -0
  145. package/build/subscription.js +176 -0
  146. package/build/subscription.js.map +1 -0
  147. package/build/sync.d.ts +28 -1
  148. package/build/sync.d.ts.map +1 -1
  149. package/build/sync.js +208 -31
  150. package/build/sync.js.map +1 -1
  151. package/build/types.d.ts +1115 -36
  152. package/build/types.d.ts.map +1 -1
  153. package/build/usage.d.ts +63 -0
  154. package/build/usage.d.ts.map +1 -0
  155. package/build/usage.js +363 -0
  156. package/build/usage.js.map +1 -0
  157. package/build/utils.d.ts +52 -1
  158. package/build/utils.d.ts.map +1 -1
  159. package/build/utils.js +69 -7
  160. package/build/utils.js.map +1 -1
  161. package/package.json +17 -13
  162. package/src/actions/index.ts +1 -0
  163. package/src/actions/resync-subscriptions.ts +10 -0
  164. package/src/actions/resync.ts +6 -3
  165. package/src/actions/webhook.ts +5 -3
  166. package/src/config.ts +264 -8
  167. package/src/consts.ts +114 -6
  168. package/src/consumer/capture.ts +362 -0
  169. package/src/consumer/format.ts +90 -0
  170. package/src/consumer/handlers.ts +211 -0
  171. package/src/consumer/index.ts +6 -0
  172. package/src/consumer/mail.ts +368 -0
  173. package/src/consumer/origin.ts +63 -0
  174. package/src/consumer/reconcile.ts +329 -0
  175. package/src/consumer/records.ts +374 -0
  176. package/src/consumer/service.ts +868 -0
  177. package/src/consumer/withdrawal.ts +302 -0
  178. package/src/entitlement.ts +84 -0
  179. package/src/entrypoints.ts +2 -1
  180. package/src/gate.ts +88 -21
  181. package/src/index.ts +24 -3
  182. package/src/limit.ts +57 -0
  183. package/src/model.ts +237 -18
  184. package/src/observer.ts +44 -11
  185. package/src/plan.ts +89 -0
  186. package/src/plugins/checkout-plugins.ts +155 -0
  187. package/src/plugins/estimate.ts +339 -0
  188. package/src/plugins/events.ts +677 -121
  189. package/src/plugins/fx.ts +122 -0
  190. package/src/plugins/portal.ts +306 -0
  191. package/src/plugins/refunds.ts +108 -0
  192. package/src/plugins/stripe.ts +581 -96
  193. package/src/plugins/webhook-manager.ts +270 -0
  194. package/src/reconcile.ts +103 -0
  195. package/src/resource.ts +152 -7
  196. package/src/service.ts +174 -18
  197. package/src/subscription.ts +231 -0
  198. package/src/sync.ts +249 -29
  199. package/src/types.ts +1227 -32
  200. package/src/usage.ts +453 -0
  201. package/src/utils.ts +127 -10
  202. package/tests/checkout-consumer.spec.ts +348 -0
  203. package/tests/checkout-plugins.spec.ts +164 -0
  204. package/tests/checkout.spec.ts +184 -83
  205. package/tests/consumer-events.spec.ts +218 -0
  206. package/tests/consumer-fixtures.ts +132 -0
  207. package/tests/consumer-ops.spec.ts +351 -0
  208. package/tests/consumer-rights.integration.spec.ts +150 -0
  209. package/tests/consumer-rights.spec.ts +501 -0
  210. package/tests/context.ts +109 -0
  211. package/tests/entitlement.spec.ts +103 -0
  212. package/tests/estimate.spec.ts +240 -0
  213. package/tests/events.spec.ts +356 -0
  214. package/tests/fake-stripe.ts +972 -0
  215. package/tests/gate.spec.ts +62 -72
  216. package/tests/limit-gate.spec.ts +68 -0
  217. package/tests/portal.spec.ts +200 -0
  218. package/tests/protocol.spec.ts +23 -6
  219. package/tests/sync.spec.ts +114 -0
  220. package/tests/usage.integration.spec.ts +101 -0
  221. package/tests/usage.spec.ts +171 -0
  222. package/tests/webhook-manager.spec.ts +152 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/consumer/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type Stripe from 'stripe';
2
+ import type { WithdrawalEstimate } from '@owlmeans/payment';
3
+ import type { Context as ApiContext } from '@owlmeans/server-api';
4
+ import type { ConsumerDeclarationRecord, PurchaseRecord, UsageMeter, UsageReading } from '../types.js';
5
+ /** What a withdrawal of one purchase reimburses, as computed at one instant. */
6
+ export interface WithdrawalComputation {
7
+ reading: UsageReading;
8
+ /** Gross, tax included — what is refunded. */
9
+ refundMinor: number;
10
+ /** Net of tax — the credit note's line amount. */
11
+ netMinor: number;
12
+ estimate: WithdrawalEstimate;
13
+ /** The units the deduction counts: used after consent, plus settled debt and earlier claw-backs. */
14
+ deducted: number;
15
+ /** What the application takes back from the balance: the purchase's units still unused. */
16
+ unitsReturned: number;
17
+ }
18
+ /**
19
+ * The refund of a withdrawal from one purchase, in the consumer's favour (`@owlmeans/payment`
20
+ * calculators). The meter's deduction is `usedAfter + settled + clawed`: units used after consent
21
+ * (before it the consumer bears no cost), units that paid an earlier overdraft, units already
22
+ * refunded by money. A subscription's `time` components count from its start request; without
23
+ * one nothing is deducted for time.
24
+ */
25
+ export declare const computeWithdrawal: (ctx: ApiContext, meter: UsageMeter, purchase: PurchaseRecord, at: Date) => Promise<WithdrawalComputation>;
26
+ export interface WithdrawalExecution {
27
+ /** Every paygate step succeeded (or had nothing to do). */
28
+ ok: boolean;
29
+ refundId?: string;
30
+ creditNoteId?: string;
31
+ refundedMinor: number;
32
+ subscriptionCanceled: boolean;
33
+ /** A step can never succeed without an operator (no payment to refund). */
34
+ needsReview: boolean;
35
+ }
36
+ /**
37
+ * Execute a withdrawal at the paygate, the first attempt of every call under the idempotency key
38
+ * `withdrawal:<id>:<step>` (a retry by `reconcile` adopts what an earlier attempt made):
39
+ *
40
+ * 1. a subscription purchase: `subscriptions.cancel` at once, without proration or a final invoice;
41
+ * 2. an invoice-backed purchase: `creditNotes.preview` of the invoice line at the net refund, then
42
+ * OUR `refunds.create` for the previewed total (metadata `withdrawalId` — the refund webhook then
43
+ * tells observers not to claw back), then `creditNotes.create` linking that refund — the
44
+ * corrective tax document; a failed credit note keeps the plain refund and is recorded;
45
+ * 3. no invoice: a plain proportional refund on the payment intent.
46
+ *
47
+ * Steps that already succeeded (a recorded `ok` event) are skipped. Every step is an event.
48
+ */
49
+ export declare const executeWithdrawal: (ctx: ApiContext, stripe: Stripe, declaration: ConsumerDeclarationRecord, purchase: PurchaseRecord, computation: {
50
+ refundMinor: number;
51
+ netMinor: number;
52
+ }, opts?: {
53
+ attempt?: number;
54
+ }) => Promise<WithdrawalExecution>;
55
+ /** Retry a credit note that failed after its refund succeeded. */
56
+ export declare const retryCreditNote: (ctx: ApiContext, stripe: Stripe, declaration: ConsumerDeclarationRecord, purchase: PurchaseRecord, netMinor: number, refundId: string, attempt: number) => Promise<boolean>;
57
+ //# sourceMappingURL=withdrawal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withdrawal.d.ts","sourceRoot":"","sources":["../../src/consumer/withdrawal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAIhC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAOjE,OAAO,KAAK,EACV,yBAAyB,EAA6B,cAAc,EAAE,UAAU,EAAE,YAAY,EAC/F,MAAM,aAAa,CAAA;AAIpB,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,YAAY,CAAA;IACrB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,oGAAoG;IACpG,QAAQ,EAAE,MAAM,CAAA;IAChB,2FAA2F;IAC3F,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,QACvB,UAAU,SAAS,UAAU,YAAY,cAAc,MAAM,IAAI,KACrE,OAAO,CAAC,qBAAqB,CAyD/B,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,2EAA2E;IAC3E,WAAW,EAAE,OAAO,CAAA;CACrB;AA6BD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,QACvB,UAAU,UAAU,MAAM,eAAe,yBAAyB,YAAY,cAAc,eACpF;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,SAAQ;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,KACjF,OAAO,CAAC,mBAAmB,CA8G7B,CAAA;AAED,kEAAkE;AAClE,eAAO,MAAM,eAAe,QACrB,UAAU,UAAU,MAAM,eAAe,yBAAyB,YAAY,cAAc,YACvF,MAAM,YAAY,MAAM,WAAW,MAAM,KAClD,OAAO,CAAC,OAAO,CA+BjB,CAAA"}
@@ -0,0 +1,247 @@
1
+ import { consumerText, oneTimeWithdrawalRefund, PurchaseKind, subscriptionWithdrawalRefund, } from '@owlmeans/payment';
2
+ import { STRIPE_OWNER_KEY, STRIPE_OWNER_VALUE, STRIPE_PAYGATE_ALIAS } from '../consts.js';
3
+ import { findPlan } from '../plan.js';
4
+ import { compact, errorText, isMissingObject, subscriptions } from '../utils.js';
5
+ import { invoiceEvidenceOf } from './capture.js';
6
+ import { formatDate } from './format.js';
7
+ import { hasEvent, patchPurchase, purchaseRefOf, recordEvent } from './records.js';
8
+ const DAY_MS = 86_400_000;
9
+ /**
10
+ * The refund of a withdrawal from one purchase, in the consumer's favour (`@owlmeans/payment`
11
+ * calculators). The meter's deduction is `usedAfter + settled + clawed`: units used after consent
12
+ * (before it the consumer bears no cost), units that paid an earlier overdraft, units already
13
+ * refunded by money. A subscription's `time` components count from its start request; without
14
+ * one nothing is deducted for time.
15
+ */
16
+ export const computeWithdrawal = async (ctx, meter, purchase, at) => {
17
+ const reading = await meter.used(ctx, compact({
18
+ entityId: purchase.entityId, purchase: purchaseRefOf(purchase),
19
+ after: purchase.consentedAt != null ? new Date(purchase.consentedAt) : undefined, at,
20
+ }));
21
+ const deducted = Math.max(0, reading.usedAfter) + Math.max(0, reading.settled ?? 0) + Math.max(0, reading.clawed ?? 0);
22
+ const unitsReturned = Math.max(0, Math.floor(reading.remaining
23
+ ?? reading.granted - reading.used - (reading.settled ?? 0) - (reading.clawed ?? 0)));
24
+ const paid = purchase.amountTotalMinor;
25
+ const refunded = purchase.refundedMinor ?? 0;
26
+ const net = purchase.amountSubtotalMinor;
27
+ // The earlier refunds' net share, so the credit note never credits more than is left.
28
+ const refundedNet = paid > 0 ? Math.floor(refunded * net / paid) : 0;
29
+ if (purchase.kind === PurchaseKind.TopUp) {
30
+ const gross = oneTimeWithdrawalRefund({ paidMinor: paid, refundedMinor: refunded, unitsGranted: reading.granted, unitsUsed: deducted });
31
+ const netRefund = oneTimeWithdrawalRefund({ paidMinor: net, refundedMinor: refundedNet, unitsGranted: reading.granted, unitsUsed: deducted });
32
+ const open = Math.max(0, paid - refunded);
33
+ return {
34
+ reading, deducted, unitsReturned,
35
+ refundMinor: gross.refundMinor,
36
+ netMinor: netRefund.refundMinor,
37
+ estimate: {
38
+ refundMinor: gross.refundMinor, currency: purchase.currency, timeDeductionMinor: 0,
39
+ unitsDeductionMinor: Math.max(0, open - gross.refundMinor),
40
+ unitsUsed: Math.min(deducted, reading.granted), unitsGranted: reading.granted,
41
+ },
42
+ };
43
+ }
44
+ const subscription = purchase.subscriptionId != null
45
+ ? await subscriptions(ctx).byExternalId(purchase.subscriptionId, STRIPE_PAYGATE_ALIAS) : null;
46
+ const plan = purchase.planSku != null ? await findPlan(ctx, purchase.planSku) : null;
47
+ const purchasedAt = new Date(purchase.purchasedAt);
48
+ const periodStart = subscription?.periodStart != null ? new Date(subscription.periodStart) : purchasedAt;
49
+ const periodEnd = subscription?.periodEnd != null ? new Date(subscription.periodEnd)
50
+ : new Date(periodStart.getTime() + (plan?.recurring?.interval === 'year' ? 365 : 30) * DAY_MS);
51
+ const result = subscriptionWithdrawalRefund({
52
+ paidMinor: paid, refundedMinor: refunded, netMinor: net,
53
+ components: plan?.withdrawal?.components,
54
+ periodStart, periodEnd,
55
+ servicesRequestedAt: purchase.servicesStartedAt != null ? new Date(purchase.servicesStartedAt) : null,
56
+ withdrawnAt: at,
57
+ units: { granted: reading.granted, used: deducted },
58
+ });
59
+ return {
60
+ reading, deducted, unitsReturned,
61
+ refundMinor: result.refundMinor,
62
+ netMinor: result.refundNetMinor,
63
+ estimate: compact({
64
+ refundMinor: result.refundMinor, currency: purchase.currency, timeDeductionMinor: result.timeDeductionMinor,
65
+ unitsDeductionMinor: result.unitsDeductionMinor, elapsedDays: result.elapsedDays, periodDays: result.periodDays,
66
+ unitsUsed: result.unitsUsed, unitsGranted: result.unitsGranted,
67
+ }),
68
+ };
69
+ };
70
+ /** A Stripe error that says the subscription is already gone. */
71
+ const alreadyCanceled = (error) => isMissingObject(error)
72
+ || /canceled subscription|already (been )?cancel/i.test(error?.message ?? '');
73
+ /** A refund this withdrawal already made (found by its metadata) — what a retry adopts. */
74
+ const existingRefund = async (stripe, paymentIntentId, withdrawalId) => {
75
+ const { data } = await stripe.refunds.list({ payment_intent: paymentIntentId, limit: 100 });
76
+ return data.find(refund => refund.metadata?.withdrawalId === withdrawalId && refund.status !== 'failed'
77
+ && refund.status !== 'canceled') ?? null;
78
+ };
79
+ /** A credit note this withdrawal already made — what a retry adopts. */
80
+ const existingCreditNote = async (stripe, invoiceId, withdrawalId) => {
81
+ const { data } = await stripe.creditNotes.list({ invoice: invoiceId, limit: 100 });
82
+ return data.find(note => note.metadata?.withdrawalId === withdrawalId && note.status !== 'void') ?? null;
83
+ };
84
+ /**
85
+ * Stripe replays the stored answer of an idempotency key — a failure too — for a day: a retry
86
+ * uses a fresh key (`…:<attempt>`) and first adopts what an earlier attempt may have made.
87
+ */
88
+ const keyOf = (withdrawalId, step, attempt) => ({
89
+ idempotencyKey: attempt > 0 ? `withdrawal:${withdrawalId}:${step}:${attempt}` : `withdrawal:${withdrawalId}:${step}`,
90
+ });
91
+ /**
92
+ * Execute a withdrawal at the paygate, the first attempt of every call under the idempotency key
93
+ * `withdrawal:<id>:<step>` (a retry by `reconcile` adopts what an earlier attempt made):
94
+ *
95
+ * 1. a subscription purchase: `subscriptions.cancel` at once, without proration or a final invoice;
96
+ * 2. an invoice-backed purchase: `creditNotes.preview` of the invoice line at the net refund, then
97
+ * OUR `refunds.create` for the previewed total (metadata `withdrawalId` — the refund webhook then
98
+ * tells observers not to claw back), then `creditNotes.create` linking that refund — the
99
+ * corrective tax document; a failed credit note keeps the plain refund and is recorded;
100
+ * 3. no invoice: a plain proportional refund on the payment intent.
101
+ *
102
+ * Steps that already succeeded (a recorded `ok` event) are skipped. Every step is an event.
103
+ */
104
+ export const executeWithdrawal = async (ctx, stripe, declaration, purchase, computation, opts = {}) => {
105
+ const withdrawalId = declaration.id;
106
+ const attempt = opts.attempt ?? 0;
107
+ const key = (step) => keyOf(withdrawalId, step, attempt);
108
+ const event = (action, fields) => recordEvent(ctx, {
109
+ recordId: withdrawalId, recordKind: 'declaration', entityId: purchase.entityId, action, ok: false, ...fields,
110
+ });
111
+ const outcome = { ok: true, refundedMinor: 0, subscriptionCanceled: false, needsReview: false };
112
+ if (purchase.kind === PurchaseKind.Subscription && purchase.subscriptionId != null) {
113
+ if (await hasEvent(ctx, withdrawalId, 'subscription-cancel', undefined, true)) {
114
+ outcome.subscriptionCanceled = true;
115
+ }
116
+ else {
117
+ try {
118
+ await stripe.subscriptions.cancel(purchase.subscriptionId, {
119
+ prorate: false, invoice_now: false, cancellation_details: { comment: `withdrawal:${withdrawalId}` },
120
+ }, key('subscription-cancel'));
121
+ outcome.subscriptionCanceled = true;
122
+ await event('subscription-cancel', { ok: true, externalId: purchase.subscriptionId });
123
+ }
124
+ catch (error) {
125
+ if (alreadyCanceled(error)) {
126
+ outcome.subscriptionCanceled = true;
127
+ await event('subscription-cancel', { ok: true, externalId: purchase.subscriptionId, detail: '{"already":true}' });
128
+ }
129
+ else {
130
+ outcome.ok = false;
131
+ await event('subscription-cancel', { externalId: purchase.subscriptionId, error: errorText(error) });
132
+ }
133
+ }
134
+ if (outcome.subscriptionCanceled) {
135
+ const row = await subscriptions(ctx).byExternalId(purchase.subscriptionId, STRIPE_PAYGATE_ALIAS);
136
+ if (row != null && row.withdrawnAt == null) {
137
+ await subscriptions(ctx).update({ ...row, withdrawnAt: new Date(declaration.receivedAt) });
138
+ }
139
+ }
140
+ }
141
+ }
142
+ if (await hasEvent(ctx, withdrawalId, 'refund', undefined, true)) {
143
+ return { ...outcome, refundedMinor: declaration.refundMinor ?? computation.refundMinor };
144
+ }
145
+ if (computation.refundMinor <= 0) {
146
+ return outcome;
147
+ }
148
+ let paymentIntentId = purchase.paymentIntentId;
149
+ let invoiceLineId = purchase.invoiceLineId;
150
+ if (purchase.invoiceId != null && (paymentIntentId == null || invoiceLineId == null)) {
151
+ const invoice = await invoiceEvidenceOf(stripe, purchase.invoiceId);
152
+ paymentIntentId = paymentIntentId ?? invoice.paymentIntentId;
153
+ invoiceLineId = invoiceLineId ?? invoice.invoiceLineId;
154
+ await patchPurchase(ctx, purchase.purchaseId, compact({
155
+ paymentIntentId, invoiceLineId, invoiceNumber: purchase.invoiceNumber ?? invoice.invoiceNumber,
156
+ }));
157
+ }
158
+ if (paymentIntentId == null) {
159
+ await event('refund', { error: 'no-payment-intent', amountMinor: computation.refundMinor, currency: purchase.currency });
160
+ return { ...outcome, ok: false, needsReview: true };
161
+ }
162
+ const open = Math.max(0, purchase.amountTotalMinor - (purchase.refundedMinor ?? 0));
163
+ let amount = Math.min(open, computation.refundMinor);
164
+ let lines = null;
165
+ if (purchase.invoiceId != null && invoiceLineId != null && computation.netMinor > 0) {
166
+ lines = [{ type: 'invoice_line_item', invoice_line_item: invoiceLineId, amount: computation.netMinor }];
167
+ try {
168
+ const preview = await stripe.creditNotes.preview({ invoice: purchase.invoiceId, lines });
169
+ amount = Math.min(open, preview.total);
170
+ }
171
+ catch (error) {
172
+ lines = null;
173
+ await event('credit-note', { step: 'preview', error: errorText(error) });
174
+ }
175
+ }
176
+ if (amount <= 0) {
177
+ return outcome;
178
+ }
179
+ let refund;
180
+ try {
181
+ refund = (attempt > 0 ? await existingRefund(stripe, paymentIntentId, withdrawalId) : null)
182
+ ?? await stripe.refunds.create({
183
+ payment_intent: paymentIntentId, amount, reason: 'requested_by_customer',
184
+ metadata: { [STRIPE_OWNER_KEY]: STRIPE_OWNER_VALUE, withdrawalId, purchaseId: purchase.purchaseId },
185
+ }, key('refund'));
186
+ }
187
+ catch (error) {
188
+ await event('refund', { error: errorText(error), amountMinor: amount, currency: purchase.currency });
189
+ return { ...outcome, ok: false };
190
+ }
191
+ await event('refund', { ok: true, externalId: refund.id, amountMinor: refund.amount, currency: refund.currency });
192
+ outcome.refundId = refund.id;
193
+ outcome.refundedMinor = refund.amount;
194
+ if (lines != null && purchase.invoiceId != null) {
195
+ try {
196
+ const note = await stripe.creditNotes.create({
197
+ invoice: purchase.invoiceId, lines, refund: refund.id,
198
+ memo: consumerText(declaration.language, 'credit-note.memo', {
199
+ contractRef: purchase.contractRef, date: formatDate(new Date(declaration.receivedAt), declaration.language),
200
+ }),
201
+ metadata: { withdrawalId, purchaseId: purchase.purchaseId },
202
+ }, key('credit-note'));
203
+ outcome.creditNoteId = note.id;
204
+ await event('credit-note', { ok: true, externalId: note.id, amountMinor: note.total, currency: note.currency });
205
+ }
206
+ catch (error) {
207
+ // The refund stands; the corrective document is retried by reconcile.
208
+ await event('credit-note', { error: errorText(error), detail: JSON.stringify({ refundId: refund.id }) });
209
+ }
210
+ }
211
+ return outcome;
212
+ };
213
+ /** Retry a credit note that failed after its refund succeeded. */
214
+ export const retryCreditNote = async (ctx, stripe, declaration, purchase, netMinor, refundId, attempt) => {
215
+ const withdrawalId = declaration.id;
216
+ let invoiceLineId = purchase.invoiceLineId;
217
+ if (invoiceLineId == null && purchase.invoiceId != null) {
218
+ invoiceLineId = (await invoiceEvidenceOf(stripe, purchase.invoiceId)).invoiceLineId;
219
+ }
220
+ if (purchase.invoiceId == null || invoiceLineId == null || netMinor <= 0) {
221
+ return false;
222
+ }
223
+ try {
224
+ const note = await existingCreditNote(stripe, purchase.invoiceId, withdrawalId) ?? await stripe.creditNotes.create({
225
+ invoice: purchase.invoiceId,
226
+ lines: [{ type: 'invoice_line_item', invoice_line_item: invoiceLineId, amount: netMinor }],
227
+ refund: refundId,
228
+ memo: consumerText(declaration.language, 'credit-note.memo', {
229
+ contractRef: purchase.contractRef, date: formatDate(new Date(declaration.receivedAt), declaration.language),
230
+ }),
231
+ metadata: { withdrawalId, purchaseId: purchase.purchaseId },
232
+ }, keyOf(withdrawalId, 'credit-note', attempt));
233
+ await recordEvent(ctx, {
234
+ recordId: withdrawalId, recordKind: 'declaration', entityId: purchase.entityId, action: 'credit-note', ok: true,
235
+ externalId: note.id, amountMinor: note.total, currency: note.currency,
236
+ });
237
+ return true;
238
+ }
239
+ catch (error) {
240
+ await recordEvent(ctx, {
241
+ recordId: withdrawalId, recordKind: 'declaration', entityId: purchase.entityId, action: 'credit-note', ok: false,
242
+ error: errorText(error), detail: JSON.stringify({ refundId }),
243
+ });
244
+ return false;
245
+ }
246
+ };
247
+ //# sourceMappingURL=withdrawal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withdrawal.js","sourceRoot":"","sources":["../../src/consumer/withdrawal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { EntitlementPlanView, EntitlementView } from '@owlmeans/payment';
2
+ import type { Context as ApiContext } from '@owlmeans/server-api';
3
+ import type { EffectivePlan, EntitlementService } from './types.js';
4
+ /** The plan half of an entitlement view. `subscribedAt` is what a grandfathered promo is measured against. */
5
+ export declare const planViewOf: (effective: EffectivePlan) => EntitlementPlanView;
6
+ /** What an entity may do now: its effective plan, every capability and every limit with its usage. */
7
+ export declare const entitlementViewFor: (ctx: ApiContext, entityId: string) => Promise<EntitlementView>;
8
+ /** Plan resolution, the entitlement view and the usage ledger — Mongo only, never the paygate. */
9
+ export declare const makeEntitlementService: (alias?: string) => EntitlementService;
10
+ //# sourceMappingURL=entitlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlement.d.ts","sourceRoot":"","sources":["../src/entitlement.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAc,MAAM,mBAAmB,CAAA;AACzF,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAOjE,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAKnE,8GAA8G;AAC9G,eAAO,MAAM,UAAU,cAAe,aAAa,KAAG,mBAsBrD,CAAA;AAED,sGAAsG;AACtG,eAAO,MAAM,kBAAkB,QAAe,UAAU,YAAY,MAAM,KAAG,OAAO,CAAC,eAAe,CAoBnG,CAAA;AAED,kGAAkG;AAClG,eAAO,MAAM,sBAAsB,WAAW,MAAM,KAAyB,kBAiB5E,CAAA"}
@@ -0,0 +1,69 @@
1
+ import { createService } from '@owlmeans/context';
2
+ import { capabilityOf, entitlementViewOf, INTERNAL_PAYGATE, SubscriptionStatus, windowKeyOf, } from '@owlmeans/payment';
3
+ import { ENTITLEMENT_SERVICE } from './consts.js';
4
+ import { planRank, resolveEffectivePlan } from './plan.js';
5
+ import { consumeLimit, consumptionByRefOf, consumptionOf, limitStateOf, reconcileLedgerCounters, reconcileOccupancyOf, releaseLimit, } from './usage.js';
6
+ import { compact, usageCounters } from './utils.js';
7
+ const dateOrUndefined = (value) => value == null ? undefined : new Date(value);
8
+ /** The plan half of an entitlement view. `subscribedAt` is what a grandfathered promo is measured against. */
9
+ export const planViewOf = (effective) => {
10
+ const { plan, subscription, fallback } = effective;
11
+ const status = subscription?.status ?? SubscriptionStatus.Active;
12
+ return compact({
13
+ sku: plan.sku,
14
+ productSku: plan.productSku,
15
+ title: plan.title,
16
+ rank: planRank(plan),
17
+ free: plan.free === true,
18
+ status,
19
+ paygate: subscription?.paygate ?? INTERNAL_PAYGATE,
20
+ subscriptionId: subscription?.externalId ?? undefined,
21
+ subscribedAt: dateOrUndefined(subscription?.createdAt),
22
+ periodStart: dateOrUndefined(subscription?.periodStart),
23
+ periodEnd: dateOrUndefined(subscription?.periodEnd),
24
+ cancelAtPeriodEnd: subscription?.cancelAtPeriodEnd ?? undefined,
25
+ trialEnd: dateOrUndefined(subscription?.trialEnd),
26
+ pausedAt: dateOrUndefined(subscription?.pausedAt),
27
+ pastDue: status === SubscriptionStatus.PastDue,
28
+ fallbackSku: plan.free !== true ? fallback?.sku : undefined,
29
+ });
30
+ };
31
+ /** What an entity may do now: its effective plan, every capability and every limit with its usage. */
32
+ export const entitlementViewFor = async (ctx, entityId) => {
33
+ const at = new Date();
34
+ const effective = await resolveEffectivePlan(ctx, entityId, at);
35
+ const declared = Object.entries(effective.plan.limits ?? {});
36
+ const windows = new Map(declared.map(([key, declaration]) => [
37
+ key, windowKeyOf(declaration.kind, declaration.window, at),
38
+ ]));
39
+ const usage = [];
40
+ if (declared.length > 0) {
41
+ const { items } = await usageCounters(ctx).list({
42
+ entityId, limitKey: [...windows.keys()], window: [...new Set(windows.values())],
43
+ }, { size: 0 });
44
+ for (const counter of items) {
45
+ if (windows.get(counter.limitKey) === counter.window) {
46
+ usage.push({ key: counter.limitKey, window: counter.window, used: counter.used });
47
+ }
48
+ }
49
+ }
50
+ return entitlementViewOf(effective.plan, planViewOf(effective), usage, at);
51
+ };
52
+ /** Plan resolution, the entitlement view and the usage ledger — Mongo only, never the paygate. */
53
+ export const makeEntitlementService = (alias = ENTITLEMENT_SERVICE) => {
54
+ const service = createService(alias, {
55
+ effectivePlan: async (entityId) => await resolveEffectivePlan(ctxOf(), entityId),
56
+ entitlements: async (entityId) => await entitlementViewFor(ctxOf(), entityId),
57
+ hasCapability: async (entityId, param) => capabilityOf(await entitlementViewFor(ctxOf(), entityId), param),
58
+ limitState: async (entityId, key) => await limitStateOf(ctxOf(), entityId, key),
59
+ consume: async (req) => await consumeLimit(ctxOf(), req),
60
+ release: async (req) => await releaseLimit(ctxOf(), req),
61
+ reconcileOccupancy: async (entityId, limitKey, actual) => await reconcileOccupancyOf(ctxOf(), entityId, limitKey, actual),
62
+ reconcileCounters: async (entityId) => await reconcileLedgerCounters(ctxOf(), entityId),
63
+ consumption: async (entityId, limitKey, eventKey) => await consumptionOf(ctxOf(), entityId, limitKey, eventKey),
64
+ consumptionByRef: async (entityId, limitKey, ref) => await consumptionByRefOf(ctxOf(), entityId, limitKey, ref),
65
+ });
66
+ const ctxOf = () => service.assertCtx();
67
+ return service;
68
+ };
69
+ //# sourceMappingURL=entitlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlement.js","sourceRoot":"","sources":["../src/entitlement.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /** Runtime-local bindings for the shared immutable payment-gateway protocol tree. */
2
2
  export declare const paymentGateEntrypoints: (import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{
3
3
  params: import("./consts.js").PaygateParams;
4
- }, undefined>> | import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{}, undefined>> | import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{}, import("./consts.js").ResyncResult>>)[];
4
+ }, undefined>> | import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{}, undefined>> | import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{}, import("./consts.js").ResyncResult>> | import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{}, import("./consts.js").ResyncSubscriptionsResult>>)[];
5
5
  //# sourceMappingURL=entrypoints.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAIA,qFAAqF;AACrF,eAAO,MAAM,sBAAsB;;gTAIlC,CAAA"}
1
+ {"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAIA,qFAAqF;AACrF,eAAO,MAAM,sBAAsB;;ydAKlC,CAAA"}
@@ -1,10 +1,11 @@
1
1
  import { bind } from '@owlmeans/server-entrypoint';
2
2
  import { paymentGate } from './consts.js';
3
- import { resync, webhook } from './actions/index.js';
3
+ import { resync, resyncSubscriptions, webhook } from './actions/index.js';
4
4
  /** Runtime-local bindings for the shared immutable payment-gateway protocol tree. */
5
5
  export const paymentGateEntrypoints = [
6
6
  bind(paymentGate.base),
7
7
  bind(paymentGate.webhook, webhook),
8
8
  bind(paymentGate.resync, resync),
9
+ bind(paymentGate.resyncSubscriptions, resyncSubscriptions),
9
10
  ];
10
11
  //# sourceMappingURL=entrypoints.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAEpD,qFAAqF;AACrF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;IAClC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;CACjC,CAAA"}
1
+ {"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAEzE,qFAAqF;AACrF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;IAClC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAChC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;CAC3D,CAAA"}
package/build/gate.d.ts CHANGED
@@ -1,10 +1,38 @@
1
1
  import type { AbstractRequest, GateService } from '@owlmeans/entrypoint';
2
- import type { PermissionSet } from '@owlmeans/auth';
2
+ import type { Auth, PermissionSet } from '@owlmeans/auth';
3
3
  import type { Context as ApiContext } from '@owlmeans/server-api';
4
- export interface EntitlementGateOptions {
5
- productSkus?: string[];
4
+ export interface EntityResolverOption {
5
+ /** The stable organization id a request acts for. Default: `req.entity.id`, else the token's entity. */
6
6
  resolveEntity?: (req: AbstractRequest) => string | null;
7
7
  }
8
+ export interface CapabilityGateOptions extends EntityResolverOption {
9
+ /** Refuse unless the effective plan belongs to one of these products. */
10
+ productSkus?: string[];
11
+ /**
12
+ * Also require the token to grant the permission (IAM `hasPermission`). Off by default: a
13
+ * platform token carries no permissions, and the subscription is the authority.
14
+ */
15
+ requirePermission?: boolean;
16
+ }
17
+ /** @deprecated use `CapabilityGateOptions` */
18
+ export type EntitlementGateOptions = CapabilityGateOptions;
19
+ export declare const defaultEntity: (req: AbstractRequest) => string | null;
20
+ /**
21
+ * The capability sets an entity's effective plan grants now — sets behind a lapsed promo left out.
22
+ * Empty when the plan is not of one of `productSkus`.
23
+ */
8
24
  export declare const entitlementsOf: (ctx: ApiContext, entityId: string, productSkus?: string[]) => Promise<PermissionSet[]>;
9
- export declare const makeEntitlementGate: (alias?: string, opts?: EntitlementGateOptions) => GateService;
25
+ /** Resolve the authenticated entity a gate asserts for, or refuse. */
26
+ export declare const gateEntityOf: (req: AbstractRequest, opts?: EntityResolverOption) => {
27
+ auth: Auth;
28
+ entityId: string;
29
+ };
30
+ /**
31
+ * The capability gate (`ENTITLEMENT_GATE`): passes when the effective plan grants ANY of the
32
+ * parameters (`[scope:]permission[>=n]`) and the token does not deny it. Fails closed — an unreadable
33
+ * store refuses. Refuses with `CapabilityRequired`, an `AuthForbidden`.
34
+ */
35
+ export declare const makeCapabilityGate: (alias?: string, opts?: CapabilityGateOptions) => GateService;
36
+ /** The capability gate under its historical name. */
37
+ export declare const makeEntitlementGate: typeof makeCapabilityGate;
10
38
  //# sourceMappingURL=gate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAExE,OAAO,KAAK,EAAQ,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAIjE,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,GAAG,IAAI,CAAA;CACxD;AAED,eAAO,MAAM,cAAc,QACpB,UAAU,YAAY,MAAM,gBAAgB,MAAM,EAAE,KACxD,OAAO,CAAC,aAAa,EAAE,CAKzB,CAAA;AAKD,eAAO,MAAM,mBAAmB,WACvB,MAAM,SAA4B,sBAAsB,KAC9D,WAsBF,CAAA"}
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAExE,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAMzD,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAKjE,MAAM,WAAW,oBAAoB;IACnC,wGAAwG;IACxG,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,GAAG,IAAI,CAAA;CACxD;AAED,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,8CAA8C;AAC9C,MAAM,MAAM,sBAAsB,GAAG,qBAAqB,CAAA;AAE1D,eAAO,MAAM,aAAa,QAAS,eAAe,KAAG,MAAM,GAAG,IACQ,CAAA;AAEtE;;;GAGG;AACH,eAAO,MAAM,cAAc,QACpB,UAAU,YAAY,MAAM,gBAAgB,MAAM,EAAE,KACxD,OAAO,CAAC,aAAa,EAAE,CAUzB,CAAA;AAeD,sEAAsE;AACtE,eAAO,MAAM,YAAY,QAAS,eAAe,SAAS,oBAAoB,KAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAU9G,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,WACtB,MAAM,SAA4B,qBAAqB,KAC7D,WA4BF,CAAA;AAED,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,2BAAqB,CAAA"}