@owlmeans/payment 0.1.18-rc.8 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +95 -57
- package/agent-meta/manifest.json +10 -3
- package/agent-meta/skills/entitlements/SKILL.md +159 -0
- package/agent-meta/skills/payment/SKILL.md +491 -28
- package/build/advertise.d.ts +2 -0
- package/build/advertise.d.ts.map +1 -0
- package/build/advertise.js +10 -0
- package/build/advertise.js.map +1 -0
- package/build/checkout/consts.d.ts +2 -0
- package/build/checkout/consts.d.ts.map +1 -0
- package/build/checkout/consts.js +2 -0
- package/build/checkout/consts.js.map +1 -0
- package/build/checkout/index.d.ts +6 -0
- package/build/checkout/index.d.ts.map +1 -0
- package/build/checkout/index.js +4 -0
- package/build/checkout/index.js.map +1 -0
- package/build/checkout/narrow/types.d.ts +25 -0
- package/build/checkout/narrow/types.d.ts.map +1 -0
- package/build/checkout/narrow/types.js +2 -0
- package/build/checkout/narrow/types.js.map +1 -0
- package/build/checkout/narrow.d.ts +8 -0
- package/build/checkout/narrow.d.ts.map +1 -0
- package/build/checkout/narrow.js +47 -0
- package/build/checkout/narrow.js.map +1 -0
- package/build/checkout/protocols.d.ts +8 -0
- package/build/checkout/protocols.d.ts.map +1 -0
- package/build/checkout/protocols.js +28 -0
- package/build/checkout/protocols.js.map +1 -0
- package/build/checkout/types.d.ts +29 -0
- package/build/checkout/types.d.ts.map +1 -0
- package/build/checkout/types.js +2 -0
- package/build/checkout/types.js.map +1 -0
- package/build/consts.d.ts +242 -25
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +377 -24
- package/build/consts.js.map +1 -1
- package/build/consts.local.d.ts +20 -0
- package/build/consts.local.d.ts.map +1 -0
- package/build/consts.local.js +23 -0
- package/build/consts.local.js.map +1 -0
- package/build/consumer/cancel.d.ts +11 -0
- package/build/consumer/cancel.d.ts.map +1 -0
- package/build/consumer/cancel.js +33 -0
- package/build/consumer/cancel.js.map +1 -0
- package/build/consumer/consts.d.ts +20 -0
- package/build/consumer/consts.d.ts.map +1 -0
- package/build/consumer/consts.js +39 -0
- package/build/consumer/consts.js.map +1 -0
- package/build/consumer/consts.local.d.ts +7 -0
- package/build/consumer/consts.local.d.ts.map +1 -0
- package/build/consumer/consts.local.js +13 -0
- package/build/consumer/consts.local.js.map +1 -0
- package/build/consumer/copy/types.d.ts +56 -0
- package/build/consumer/copy/types.d.ts.map +1 -0
- package/build/consumer/copy/types.js +2 -0
- package/build/consumer/copy/types.js.map +1 -0
- package/build/consumer/copy.d.ts +22 -0
- package/build/consumer/copy.d.ts.map +1 -0
- package/build/consumer/copy.js +87 -0
- package/build/consumer/copy.js.map +1 -0
- package/build/consumer/deadline/types.d.ts +30 -0
- package/build/consumer/deadline/types.d.ts.map +1 -0
- package/build/consumer/deadline/types.js +2 -0
- package/build/consumer/deadline/types.js.map +1 -0
- package/build/consumer/deadline.d.ts +12 -0
- package/build/consumer/deadline.d.ts.map +1 -0
- package/build/consumer/deadline.js +44 -0
- package/build/consumer/deadline.js.map +1 -0
- package/build/consumer/fifo/types.d.ts +17 -0
- package/build/consumer/fifo/types.d.ts.map +1 -0
- package/build/consumer/fifo/types.js +2 -0
- package/build/consumer/fifo/types.js.map +1 -0
- package/build/consumer/fifo.d.ts +4 -0
- package/build/consumer/fifo.d.ts.map +1 -0
- package/build/consumer/fifo.js +34 -0
- package/build/consumer/fifo.js.map +1 -0
- package/build/consumer/index.d.ts +18 -0
- package/build/consumer/index.d.ts.map +1 -0
- package/build/consumer/index.js +11 -0
- package/build/consumer/index.js.map +1 -0
- package/build/consumer/policy/types.d.ts +20 -0
- package/build/consumer/policy/types.d.ts.map +1 -0
- package/build/consumer/policy/types.js +2 -0
- package/build/consumer/policy/types.js.map +1 -0
- package/build/consumer/policy.d.ts +17 -0
- package/build/consumer/policy.d.ts.map +1 -0
- package/build/consumer/policy.js +91 -0
- package/build/consumer/policy.js.map +1 -0
- package/build/consumer/protocols.d.ts +20 -0
- package/build/consumer/protocols.d.ts.map +1 -0
- package/build/consumer/protocols.js +70 -0
- package/build/consumer/protocols.js.map +1 -0
- package/build/consumer/refund/types.d.ts +27 -0
- package/build/consumer/refund/types.d.ts.map +1 -0
- package/build/consumer/refund/types.js +2 -0
- package/build/consumer/refund/types.js.map +1 -0
- package/build/consumer/refund.d.ts +9 -0
- package/build/consumer/refund.d.ts.map +1 -0
- package/build/consumer/refund.js +112 -0
- package/build/consumer/refund.js.map +1 -0
- package/build/consumer/refusal.d.ts +10 -0
- package/build/consumer/refusal.d.ts.map +1 -0
- package/build/consumer/refusal.js +35 -0
- package/build/consumer/refusal.js.map +1 -0
- package/build/consumer/revive/types.d.ts +19 -0
- package/build/consumer/revive/types.d.ts.map +1 -0
- package/build/consumer/revive/types.js +2 -0
- package/build/consumer/revive/types.js.map +1 -0
- package/build/consumer/revive.d.ts +13 -0
- package/build/consumer/revive.d.ts.map +1 -0
- package/build/consumer/revive.js +43 -0
- package/build/consumer/revive.js.map +1 -0
- package/build/consumer/types.d.ts +196 -0
- package/build/consumer/types.d.ts.map +1 -0
- package/build/consumer/types.js +2 -0
- package/build/consumer/types.js.map +1 -0
- package/build/consumer/types.local.d.ts +11 -0
- package/build/consumer/types.local.d.ts.map +1 -0
- package/build/consumer/types.local.js +2 -0
- package/build/consumer/types.local.js.map +1 -0
- package/build/countries.d.ts +3 -0
- package/build/countries.d.ts.map +1 -0
- package/build/countries.js +4 -0
- package/build/countries.js.map +1 -0
- package/build/entitled.d.ts +14 -0
- package/build/entitled.d.ts.map +1 -0
- package/build/entitled.js +17 -0
- package/build/entitled.js.map +1 -0
- package/build/entitlement/types.d.ts +29 -0
- package/build/entitlement/types.d.ts.map +1 -0
- package/build/entitlement/types.js +2 -0
- package/build/entitlement/types.js.map +1 -0
- package/build/entitlement.d.ts +12 -0
- package/build/entitlement.d.ts.map +1 -0
- package/build/entitlement.js +64 -0
- package/build/entitlement.js.map +1 -0
- package/build/errors.d.ts +189 -0
- package/build/errors.d.ts.map +1 -1
- package/build/errors.js +361 -0
- package/build/errors.js.map +1 -1
- package/build/estimate/types.d.ts +34 -0
- package/build/estimate/types.d.ts.map +1 -0
- package/build/estimate/types.js +2 -0
- package/build/estimate/types.js.map +1 -0
- package/build/estimate.d.ts +11 -0
- package/build/estimate.d.ts.map +1 -0
- package/build/estimate.js +76 -0
- package/build/estimate.js.map +1 -0
- package/build/i18n/consumer-rights/be.json +131 -0
- package/build/i18n/consumer-rights/de.json +131 -0
- package/build/i18n/consumer-rights/en.json +131 -0
- package/build/i18n/consumer-rights/es.json +131 -0
- package/build/i18n/consumer-rights/fr.json +131 -0
- package/build/i18n/consumer-rights/pl.json +131 -0
- package/build/i18n/consumer-rights/ru.json +131 -0
- package/build/i18n/consumer-rights/uk.json +131 -0
- package/build/i18n/errors/be.json +30 -0
- package/build/i18n/errors/de.json +30 -0
- package/build/i18n/errors/en.json +30 -0
- package/build/i18n/errors/es.json +30 -0
- package/build/i18n/errors/fr.json +30 -0
- package/build/i18n/errors/pl.json +30 -0
- package/build/i18n/errors/ru.json +30 -0
- package/build/i18n/errors/uk.json +30 -0
- package/build/i18n/fr.json +39 -0
- package/build/i18n.js +53 -8
- package/build/i18n.js.map +1 -1
- package/build/index.d.ts +19 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +12 -1
- package/build/index.js.map +1 -1
- package/build/limit/types.d.ts +44 -0
- package/build/limit/types.d.ts.map +1 -0
- package/build/limit/types.js +2 -0
- package/build/limit/types.js.map +1 -0
- package/build/limit.d.ts +23 -0
- package/build/limit.d.ts.map +1 -0
- package/build/limit.js +97 -0
- package/build/limit.js.map +1 -0
- package/build/model/checkout.d.ts +2 -3
- package/build/model/checkout.d.ts.map +1 -1
- package/build/model/checkout.js +12 -7
- package/build/model/checkout.js.map +1 -1
- package/build/model/consts.d.ts +15 -0
- package/build/model/consts.d.ts.map +1 -0
- package/build/model/consts.js +193 -0
- package/build/model/consts.js.map +1 -0
- package/build/model/consts.local.d.ts +35 -0
- package/build/model/consts.local.d.ts.map +1 -0
- package/build/model/consts.local.js +65 -0
- package/build/model/consts.local.js.map +1 -0
- package/build/model/consumer.d.ts +23 -0
- package/build/model/consumer.d.ts.map +1 -0
- package/build/model/consumer.js +272 -0
- package/build/model/consumer.js.map +1 -0
- package/build/model/estimate.d.ts +5 -0
- package/build/model/estimate.d.ts.map +1 -0
- package/build/model/estimate.js +69 -0
- package/build/model/estimate.js.map +1 -0
- package/build/model/index.d.ts +7 -2
- package/build/model/index.d.ts.map +1 -1
- package/build/model/index.js +7 -2
- package/build/model/index.js.map +1 -1
- package/build/model/limit.d.ts +7 -0
- package/build/model/limit.d.ts.map +1 -0
- package/build/model/limit.js +32 -0
- package/build/model/limit.js.map +1 -0
- package/build/model/plan.d.ts.map +1 -1
- package/build/model/plan.js +24 -11
- package/build/model/plan.js.map +1 -1
- package/build/model/portal.d.ts +4 -0
- package/build/model/portal.d.ts.map +1 -0
- package/build/model/portal.js +22 -0
- package/build/model/portal.js.map +1 -0
- package/build/model/pricing.d.ts +4 -0
- package/build/model/pricing.d.ts.map +1 -0
- package/build/model/pricing.js +31 -0
- package/build/model/pricing.js.map +1 -0
- package/build/model/view.d.ts +3 -0
- package/build/model/view.d.ts.map +1 -0
- package/build/model/view.js +15 -0
- package/build/model/view.js.map +1 -0
- package/build/pricing/types.d.ts +13 -0
- package/build/pricing/types.d.ts.map +1 -0
- package/build/pricing/types.js +2 -0
- package/build/pricing/types.js.map +1 -0
- package/build/pricing.d.ts +13 -0
- package/build/pricing.d.ts.map +1 -0
- package/build/pricing.js +74 -0
- package/build/pricing.js.map +1 -0
- package/build/promo/types.d.ts +14 -0
- package/build/promo/types.d.ts.map +1 -0
- package/build/promo/types.js +2 -0
- package/build/promo/types.js.map +1 -0
- package/build/promo.d.ts +7 -0
- package/build/promo.d.ts.map +1 -0
- package/build/promo.js +25 -0
- package/build/promo.js.map +1 -0
- package/build/regions/types.d.ts +32 -0
- package/build/regions/types.d.ts.map +1 -0
- package/build/regions/types.js +2 -0
- package/build/regions/types.js.map +1 -0
- package/build/regions.d.ts +15 -0
- package/build/regions.d.ts.map +1 -0
- package/build/regions.js +43 -0
- package/build/regions.js.map +1 -0
- package/build/service.d.ts.map +1 -1
- package/build/service.js +24 -9
- package/build/service.js.map +1 -1
- package/build/types.d.ts +619 -52
- package/build/types.d.ts.map +1 -1
- package/build/types.local.d.ts +4 -0
- package/build/types.local.d.ts.map +1 -0
- package/build/types.local.js +2 -0
- package/build/types.local.js.map +1 -0
- package/build/view/types.d.ts +33 -0
- package/build/view/types.d.ts.map +1 -0
- package/build/view/types.js +2 -0
- package/build/view/types.js.map +1 -0
- package/build/view.d.ts +13 -0
- package/build/view.d.ts.map +1 -0
- package/build/view.js +78 -0
- package/build/view.js.map +1 -0
- package/package.json +14 -12
- package/src/advertise.ts +13 -0
- package/src/checkout/consts.ts +1 -0
- package/src/checkout/index.ts +5 -0
- package/src/checkout/narrow/types.ts +27 -0
- package/src/checkout/narrow.ts +63 -0
- package/src/checkout/protocols.ts +39 -0
- package/src/checkout/types.ts +27 -0
- package/src/consts.local.ts +34 -0
- package/src/consts.ts +417 -24
- package/src/consumer/cancel.ts +40 -0
- package/src/consumer/consts.local.ts +16 -0
- package/src/consumer/consts.ts +46 -0
- package/src/consumer/copy/types.ts +54 -0
- package/src/consumer/copy.ts +121 -0
- package/src/consumer/deadline/types.ts +30 -0
- package/src/consumer/deadline.ts +61 -0
- package/src/consumer/fifo/types.ts +17 -0
- package/src/consumer/fifo.ts +42 -0
- package/src/consumer/index.ts +17 -0
- package/src/consumer/policy/types.ts +20 -0
- package/src/consumer/policy.ts +101 -0
- package/src/consumer/protocols.ts +116 -0
- package/src/consumer/refund/types.ts +27 -0
- package/src/consumer/refund.ts +136 -0
- package/src/consumer/refusal.ts +35 -0
- package/src/consumer/revive/types.ts +23 -0
- package/src/consumer/revive.ts +82 -0
- package/src/consumer/types.local.ts +10 -0
- package/src/consumer/types.ts +189 -0
- package/src/countries.ts +5 -0
- package/src/entitled.ts +20 -0
- package/src/entitlement/types.ts +29 -0
- package/src/entitlement.ts +86 -0
- package/src/errors.ts +445 -0
- package/src/estimate/types.ts +34 -0
- package/src/estimate.ts +90 -0
- package/src/i18n/consumer-rights/be.json +131 -0
- package/src/i18n/consumer-rights/de.json +131 -0
- package/src/i18n/consumer-rights/en.json +131 -0
- package/src/i18n/consumer-rights/es.json +131 -0
- package/src/i18n/consumer-rights/fr.json +131 -0
- package/src/i18n/consumer-rights/pl.json +131 -0
- package/src/i18n/consumer-rights/ru.json +131 -0
- package/src/i18n/consumer-rights/uk.json +131 -0
- package/src/i18n/errors/be.json +30 -0
- package/src/i18n/errors/de.json +30 -0
- package/src/i18n/errors/en.json +30 -0
- package/src/i18n/errors/es.json +30 -0
- package/src/i18n/errors/fr.json +30 -0
- package/src/i18n/errors/pl.json +30 -0
- package/src/i18n/errors/ru.json +30 -0
- package/src/i18n/errors/uk.json +30 -0
- package/src/i18n/fr.json +39 -0
- package/src/i18n.ts +58 -8
- package/src/index.ts +19 -2
- package/src/limit/types.ts +41 -0
- package/src/limit.ts +132 -0
- package/src/model/checkout.ts +12 -7
- package/src/model/consts.local.ts +83 -0
- package/src/model/consts.ts +206 -0
- package/src/model/consumer.ts +294 -0
- package/src/model/estimate.ts +73 -0
- package/src/model/index.ts +7 -2
- package/src/model/limit.ts +36 -0
- package/src/model/plan.ts +25 -12
- package/src/model/portal.ts +25 -0
- package/src/model/pricing.ts +34 -0
- package/src/model/view.ts +17 -0
- package/src/pricing/types.ts +13 -0
- package/src/pricing.ts +110 -0
- package/src/promo/types.ts +18 -0
- package/src/promo.ts +46 -0
- package/src/regions/types.ts +42 -0
- package/src/regions.ts +85 -0
- package/src/service.ts +32 -15
- package/src/types.local.ts +5 -0
- package/src/types.ts +669 -49
- package/src/view/types.ts +39 -0
- package/src/view.ts +119 -0
- package/tests/checkout-narrow.spec.ts +75 -0
- package/tests/consumer-copy.spec.ts +378 -0
- package/tests/consumer-deadline.spec.ts +85 -0
- package/tests/consumer-fifo.spec.ts +61 -0
- package/tests/consumer-protocols.spec.ts +103 -0
- package/tests/consumer-refund.spec.ts +134 -0
- package/tests/consumer-regions.spec.ts +140 -0
- package/tests/consumer-wire.spec.ts +170 -0
- package/tests/contract.spec.ts +183 -0
- package/tests/entitlement.spec.ts +103 -0
- package/tests/errors.spec.ts +168 -0
- package/tests/estimate.spec.ts +139 -0
- package/tests/limit.spec.ts +117 -0
- package/tests/pricing.spec.ts +30 -0
- package/tests/tsconfig.json +11 -0
- package/tests/view.spec.ts +130 -0
- package/tsconfig.json +6 -1
- package/build/.gitkeep +0 -0
- package/src/model/subscription.ts +0 -63
- package/src/model/utils.ts +0 -32
- package/src/modules.ts +0 -43
package/build/errors.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { ResilientError } from '@owlmeans/error';
|
|
2
|
+
import { AuthForbidden } from '@owlmeans/auth';
|
|
3
|
+
import { BILLING_COUNTRY_LOCKED_MARKER, CANCELLATION_UNAVAILABLE_MARKER, CAPABILITY_REQUIRED_MARKER, CHECKOUT_LIMIT_MARKER, LIMIT_EXHAUSTED_FIELDS, LIMIT_EXHAUSTED_MARKER, PERFORMANCE_CONSENT_MARKER, SUBSCRIPTION_START_MARKER, WITHDRAWAL_UNAVAILABLE_MARKER } from './consts.local.js';
|
|
2
4
|
export class PaymentError extends ResilientError {
|
|
3
5
|
static typeName = 'PaymentError';
|
|
4
6
|
constructor(message = 'error') {
|
|
@@ -26,6 +28,20 @@ export class PaygateMappingError extends PaygateError {
|
|
|
26
28
|
this.type = PaygateMappingError.typeName;
|
|
27
29
|
}
|
|
28
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* A webhook delivery whose signature is missing or verifies against no known secret. The sender is
|
|
33
|
+
* refused as a client error (400): a forged or unsigned POST at a public hook is not a server fault,
|
|
34
|
+
* and answering 500 would page operators for it and invite the sender to retry it.
|
|
35
|
+
*/
|
|
36
|
+
export class PaygateSignatureError extends PaygateError {
|
|
37
|
+
static typeName = `${PaygateError.typeName}Signature`;
|
|
38
|
+
/** Read by the HTTP boundary (`server-api` `declaredErrorStatus`). */
|
|
39
|
+
static httpStatus = 400;
|
|
40
|
+
constructor() {
|
|
41
|
+
super('signature');
|
|
42
|
+
this.type = PaygateSignatureError.typeName;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
29
45
|
export class ProductError extends PaymentError {
|
|
30
46
|
static typeName = `${PaymentError.typeName}Product`;
|
|
31
47
|
constructor(message = 'error') {
|
|
@@ -68,14 +84,359 @@ export class UnknownSubscription extends SubscriptionError {
|
|
|
68
84
|
this.type = UnknownSubscription.typeName;
|
|
69
85
|
}
|
|
70
86
|
}
|
|
87
|
+
export class LimitUnknown extends ProductError {
|
|
88
|
+
static typeName = `${ProductError.typeName}LimitUnknown`;
|
|
89
|
+
constructor(message = 'error') {
|
|
90
|
+
super(`limit-unknown:${message}`);
|
|
91
|
+
this.type = LimitUnknown.typeName;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export class LimitMisdeclared extends ProductError {
|
|
95
|
+
static typeName = `${ProductError.typeName}LimitMisdeclared`;
|
|
96
|
+
constructor(message = 'error') {
|
|
97
|
+
super(`limit-misdeclared:${message}`);
|
|
98
|
+
this.type = LimitMisdeclared.typeName;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export class PlanRequired extends ProductError {
|
|
102
|
+
static typeName = `${ProductError.typeName}PlanRequired`;
|
|
103
|
+
constructor(message = 'error') {
|
|
104
|
+
super(`plan-required:${message}`);
|
|
105
|
+
this.type = PlanRequired.typeName;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export class PlanRankConflict extends ProductError {
|
|
109
|
+
static typeName = `${ProductError.typeName}PlanRankConflict`;
|
|
110
|
+
constructor(message = 'error') {
|
|
111
|
+
super(`plan-rank-conflict:${message}`);
|
|
112
|
+
this.type = PlanRankConflict.typeName;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export class WebhookSetupError extends PaygateError {
|
|
116
|
+
static typeName = `${PaygateError.typeName}WebhookSetup`;
|
|
117
|
+
constructor(message = 'error') {
|
|
118
|
+
super(`webhook-setup:${message}`);
|
|
119
|
+
this.type = WebhookSetupError.typeName;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* The entity has nothing the requested portal flow can act on — no paygate customer, no entitling
|
|
124
|
+
* subscription, no plan or item to change to. The entity's own state, not a fault: an HTTP boundary
|
|
125
|
+
* that honours `httpStatus` (`@owlmeans/server-api`) answers 409 Conflict.
|
|
126
|
+
*/
|
|
127
|
+
export class PortalUnavailable extends PaygateError {
|
|
128
|
+
static typeName = `${PaygateError.typeName}PortalUnavailable`;
|
|
129
|
+
static httpStatus = 409;
|
|
130
|
+
constructor(message = 'error') {
|
|
131
|
+
super(`portal-unavailable:${message}`);
|
|
132
|
+
this.type = PortalUnavailable.typeName;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* The entity's plan does not allow the request.
|
|
137
|
+
*
|
|
138
|
+
* Extends `AuthForbidden` so an HTTP boundary answers 403, never 500. Only `type` and `message`
|
|
139
|
+
* survive a marshal round trip, so each subclass packs its fields into the message and rebuilds
|
|
140
|
+
* them in `finalizeUnmarshal()`.
|
|
141
|
+
*/
|
|
142
|
+
export class EntitlementRefusal extends AuthForbidden {
|
|
143
|
+
static typeName = 'EntitlementRefusal';
|
|
144
|
+
constructor(message = 'error') {
|
|
145
|
+
super(`entitlement:${message}`);
|
|
146
|
+
this.type = EntitlementRefusal.typeName;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/** None of the capability parameters (OR'd) is granted. Message marker `capability-required:<a|b>`. */
|
|
150
|
+
export class CapabilityRequired extends EntitlementRefusal {
|
|
151
|
+
static typeName = `${EntitlementRefusal.typeName}CapabilityRequired`;
|
|
152
|
+
/** The refused parameters, as the gate took them. */
|
|
153
|
+
params = [];
|
|
154
|
+
constructor(params = []) {
|
|
155
|
+
const list = (Array.isArray(params) ? params : [params]).filter(param => param !== '');
|
|
156
|
+
super(`${CAPABILITY_REQUIRED_MARKER}${list.join('|')}`);
|
|
157
|
+
this.type = CapabilityRequired.typeName;
|
|
158
|
+
this.applyFields();
|
|
159
|
+
}
|
|
160
|
+
applyFields() {
|
|
161
|
+
const at = this.message.indexOf(CAPABILITY_REQUIRED_MARKER);
|
|
162
|
+
const packed = at < 0 ? '' : this.message.slice(at + CAPABILITY_REQUIRED_MARKER.length);
|
|
163
|
+
this.params = packed.split('|').filter(param => param !== '');
|
|
164
|
+
}
|
|
165
|
+
finalizeUnmarshal() {
|
|
166
|
+
this.applyFields();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* A limit has no room left. Message marker `limit-exhausted:<key>:<used>/<limit>[:<resetsAt ISO>]`.
|
|
171
|
+
*/
|
|
172
|
+
export class LimitExhausted extends EntitlementRefusal {
|
|
173
|
+
static typeName = `${EntitlementRefusal.typeName}LimitExhausted`;
|
|
174
|
+
limitKey = '';
|
|
175
|
+
used = 0;
|
|
176
|
+
limit = 0;
|
|
177
|
+
resetsAt;
|
|
178
|
+
/** The packed marker body of a refusal. */
|
|
179
|
+
static encode(details) {
|
|
180
|
+
const resetsAt = details.resetsAt != null && !Number.isNaN(details.resetsAt.getTime())
|
|
181
|
+
? `:${details.resetsAt.toISOString()}` : '';
|
|
182
|
+
return `${details.key}:${details.used}/${details.limit}${resetsAt}`;
|
|
183
|
+
}
|
|
184
|
+
constructor(details = 'error') {
|
|
185
|
+
super(`${LIMIT_EXHAUSTED_MARKER}${typeof details === 'string' ? details : LimitExhausted.encode(details)}`);
|
|
186
|
+
this.type = LimitExhausted.typeName;
|
|
187
|
+
this.applyFields();
|
|
188
|
+
}
|
|
189
|
+
applyFields() {
|
|
190
|
+
const at = this.message.indexOf(LIMIT_EXHAUSTED_MARKER);
|
|
191
|
+
const match = at < 0 ? null
|
|
192
|
+
: LIMIT_EXHAUSTED_FIELDS.exec(this.message.slice(at + LIMIT_EXHAUSTED_MARKER.length));
|
|
193
|
+
if (match == null) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
const [, key, used, limit, resetsAt] = match;
|
|
197
|
+
this.limitKey = key;
|
|
198
|
+
this.used = Number(used) || 0;
|
|
199
|
+
this.limit = Number(limit) || 0;
|
|
200
|
+
const date = resetsAt != null ? new Date(resetsAt) : null;
|
|
201
|
+
this.resetsAt = date != null && !Number.isNaN(date.getTime()) ? date : undefined;
|
|
202
|
+
}
|
|
203
|
+
finalizeUnmarshal() {
|
|
204
|
+
this.applyFields();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* A consumer-rights fault — a misdeclared policy (`policy:<field>`), a missing usage meter or
|
|
209
|
+
* mailer, a copy template without a value (`copy:<path>`). Declares no status: 500.
|
|
210
|
+
*/
|
|
211
|
+
export class ConsumerRightsError extends PaymentError {
|
|
212
|
+
static typeName = `${PaymentError.typeName}ConsumerRights`;
|
|
213
|
+
constructor(message = 'error') {
|
|
214
|
+
super(`consumer-rights:${message}`);
|
|
215
|
+
this.type = ConsumerRightsError.typeName;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* The consumer's own position refuses the request — never a fault. Deliberately NOT an
|
|
220
|
+
* `AuthForbidden`: an HTTP boundary tests that family first, and a 403 would hide the declared
|
|
221
|
+
* 428/409 a client acts on.
|
|
222
|
+
*/
|
|
223
|
+
export class ConsumerRightsRefusal extends ConsumerRightsError {
|
|
224
|
+
static typeName = `${ConsumerRightsError.typeName}Refusal`;
|
|
225
|
+
constructor(message = 'error') {
|
|
226
|
+
super(message);
|
|
227
|
+
this.type = ConsumerRightsRefusal.typeName;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/** The packed body after the LAST marker occurrence — a registry rebuild doubles the prefix. */
|
|
231
|
+
const packedAfter = (message, marker) => {
|
|
232
|
+
const at = message.lastIndexOf(marker);
|
|
233
|
+
return at < 0 ? null : message.slice(at + marker.length);
|
|
234
|
+
};
|
|
235
|
+
const dateOf = (value) => {
|
|
236
|
+
const date = value != null && value !== '' ? new Date(value) : null;
|
|
237
|
+
return date != null && !Number.isNaN(date.getTime()) ? date : undefined;
|
|
238
|
+
};
|
|
239
|
+
const isoOf = (date) => date != null && !Number.isNaN(date.getTime()) ? `:${date.toISOString()}` : '';
|
|
240
|
+
const decode = (value) => {
|
|
241
|
+
try {
|
|
242
|
+
return decodeURIComponent(value);
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
return value;
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
/**
|
|
249
|
+
* Billed work would spend credits of a purchase still inside its withdrawal window, and the
|
|
250
|
+
* consumer has not expressly requested performance. HTTP 428. Marker
|
|
251
|
+
* `performance-consent-required:<pending>[:<deadline ISO>]`.
|
|
252
|
+
*/
|
|
253
|
+
export class PerformanceConsentRequired extends ConsumerRightsRefusal {
|
|
254
|
+
static typeName = `${ConsumerRightsRefusal.typeName}PerformanceConsentRequired`;
|
|
255
|
+
static httpStatus = 428;
|
|
256
|
+
pending = 0;
|
|
257
|
+
deadline;
|
|
258
|
+
static encode(details) {
|
|
259
|
+
return `${Math.max(0, Math.floor(details.pending))}${isoOf(details.deadline)}`;
|
|
260
|
+
}
|
|
261
|
+
constructor(details = 'error') {
|
|
262
|
+
super(`${PERFORMANCE_CONSENT_MARKER}${typeof details === 'string' ? details : PerformanceConsentRequired.encode(details)}`);
|
|
263
|
+
this.type = PerformanceConsentRequired.typeName;
|
|
264
|
+
this.applyFields();
|
|
265
|
+
}
|
|
266
|
+
applyFields() {
|
|
267
|
+
const match = /^(\d+)(?::(.+))?$/.exec(packedAfter(this.message, PERFORMANCE_CONSENT_MARKER) ?? '');
|
|
268
|
+
if (match == null) {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
this.pending = Number(match[1]);
|
|
272
|
+
this.deadline = dateOf(match[2]);
|
|
273
|
+
}
|
|
274
|
+
finalizeUnmarshal() {
|
|
275
|
+
this.applyFields();
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* A subscription checkout needs a fresh express start request bound to this plan. HTTP 428.
|
|
280
|
+
* Marker `subscription-start-required:<encodeURIComponent(planSku)>`.
|
|
281
|
+
*/
|
|
282
|
+
export class SubscriptionStartRequired extends ConsumerRightsRefusal {
|
|
283
|
+
static typeName = `${ConsumerRightsRefusal.typeName}SubscriptionStartRequired`;
|
|
284
|
+
static httpStatus = 428;
|
|
285
|
+
planSku = '';
|
|
286
|
+
static encode(planSku) {
|
|
287
|
+
return encodeURIComponent(planSku);
|
|
288
|
+
}
|
|
289
|
+
/** `planSku` as is, or a packed marker body / marshaled message (the registry's path). */
|
|
290
|
+
constructor(planSku = 'error') {
|
|
291
|
+
super(`${SUBSCRIPTION_START_MARKER}${typeof planSku === 'string' ? SubscriptionStartRequired.encodeLoose(planSku) : SubscriptionStartRequired.encode(planSku.planSku)}`);
|
|
292
|
+
this.type = SubscriptionStartRequired.typeName;
|
|
293
|
+
this.applyFields();
|
|
294
|
+
}
|
|
295
|
+
/** A string that already is a marker (the registry path) passes through unencoded. */
|
|
296
|
+
static encodeLoose(value) {
|
|
297
|
+
return value.includes(SUBSCRIPTION_START_MARKER) ? value : SubscriptionStartRequired.encode(value);
|
|
298
|
+
}
|
|
299
|
+
applyFields() {
|
|
300
|
+
const packed = packedAfter(this.message, SUBSCRIPTION_START_MARKER);
|
|
301
|
+
if (packed != null) {
|
|
302
|
+
this.planSku = decode(packed);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
finalizeUnmarshal() {
|
|
306
|
+
this.applyFields();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* The entity's billing country is fixed and the request declared another. HTTP 409. Marker
|
|
311
|
+
* `billing-country-locked:<country>[:<requested>]`.
|
|
312
|
+
*/
|
|
313
|
+
export class BillingCountryLocked extends ConsumerRightsRefusal {
|
|
314
|
+
static typeName = `${ConsumerRightsRefusal.typeName}BillingCountryLocked`;
|
|
315
|
+
static httpStatus = 409;
|
|
316
|
+
country = '';
|
|
317
|
+
requested;
|
|
318
|
+
static encode(details) {
|
|
319
|
+
return details.requested != null && details.requested !== ''
|
|
320
|
+
? `${details.country}:${details.requested}` : details.country;
|
|
321
|
+
}
|
|
322
|
+
constructor(details = 'error') {
|
|
323
|
+
super(`${BILLING_COUNTRY_LOCKED_MARKER}${typeof details === 'string' ? details : BillingCountryLocked.encode(details)}`);
|
|
324
|
+
this.type = BillingCountryLocked.typeName;
|
|
325
|
+
this.applyFields();
|
|
326
|
+
}
|
|
327
|
+
applyFields() {
|
|
328
|
+
const match = /^([A-Za-z]{2})(?::([A-Za-z]{2}))?$/.exec(packedAfter(this.message, BILLING_COUNTRY_LOCKED_MARKER) ?? '');
|
|
329
|
+
if (match == null) {
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
this.country = match[1];
|
|
333
|
+
this.requested = match[2];
|
|
334
|
+
}
|
|
335
|
+
finalizeUnmarshal() {
|
|
336
|
+
this.applyFields();
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* The named purchase cannot be withdrawn from (`WithdrawalUnavailableReason`). HTTP 409. Marker
|
|
341
|
+
* `withdrawal-unavailable:<reason>`. Never raised on the public page, which discloses nothing.
|
|
342
|
+
*/
|
|
343
|
+
export class WithdrawalUnavailable extends ConsumerRightsRefusal {
|
|
344
|
+
static typeName = `${ConsumerRightsRefusal.typeName}WithdrawalUnavailable`;
|
|
345
|
+
static httpStatus = 409;
|
|
346
|
+
reason = '';
|
|
347
|
+
constructor(reason = 'error') {
|
|
348
|
+
super(`${WITHDRAWAL_UNAVAILABLE_MARKER}${reason}`);
|
|
349
|
+
this.type = WithdrawalUnavailable.typeName;
|
|
350
|
+
this.applyFields();
|
|
351
|
+
}
|
|
352
|
+
applyFields() {
|
|
353
|
+
this.reason = /^[\w-]*/.exec(packedAfter(this.message, WITHDRAWAL_UNAVAILABLE_MARKER) ?? '')?.[0] ?? '';
|
|
354
|
+
}
|
|
355
|
+
finalizeUnmarshal() {
|
|
356
|
+
this.applyFields();
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Nothing to cancel in-app (`CancellationUnavailableReason`). HTTP 409. Marker
|
|
361
|
+
* `cancellation-unavailable:<reason>`.
|
|
362
|
+
*/
|
|
363
|
+
export class CancellationUnavailable extends ConsumerRightsRefusal {
|
|
364
|
+
static typeName = `${ConsumerRightsRefusal.typeName}CancellationUnavailable`;
|
|
365
|
+
static httpStatus = 409;
|
|
366
|
+
reason = '';
|
|
367
|
+
constructor(reason = 'error') {
|
|
368
|
+
super(`${CANCELLATION_UNAVAILABLE_MARKER}${reason}`);
|
|
369
|
+
this.type = CancellationUnavailable.typeName;
|
|
370
|
+
this.applyFields();
|
|
371
|
+
}
|
|
372
|
+
applyFields() {
|
|
373
|
+
this.reason = /^[\w-]*/.exec(packedAfter(this.message, CANCELLATION_UNAVAILABLE_MARKER) ?? '')?.[0] ?? '';
|
|
374
|
+
}
|
|
375
|
+
finalizeUnmarshal() {
|
|
376
|
+
this.applyFields();
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* The amount is above what this entity may buy now (a narrowing of the plan's policy). HTTP 409.
|
|
381
|
+
* Marker `checkout-limit-exceeded:<encodeURIComponent(reason)>:<maximumMinor>:<currency>[:<ISO>]`.
|
|
382
|
+
* A payment refusal, not a consumer-rights one.
|
|
383
|
+
*/
|
|
384
|
+
export class CheckoutLimitExceeded extends PaymentError {
|
|
385
|
+
static typeName = `${PaymentError.typeName}CheckoutLimitExceeded`;
|
|
386
|
+
static httpStatus = 409;
|
|
387
|
+
reason = '';
|
|
388
|
+
maximumMinor = 0;
|
|
389
|
+
currency = '';
|
|
390
|
+
resetsAt;
|
|
391
|
+
static encode(details) {
|
|
392
|
+
return `${encodeURIComponent(details.reason)}:${Math.max(0, Math.floor(details.maximumMinor))}`
|
|
393
|
+
+ `:${details.currency.toLowerCase()}${isoOf(details.resetsAt)}`;
|
|
394
|
+
}
|
|
395
|
+
constructor(details = 'error') {
|
|
396
|
+
super(`${CHECKOUT_LIMIT_MARKER}${typeof details === 'string' ? details : CheckoutLimitExceeded.encode(details)}`);
|
|
397
|
+
this.type = CheckoutLimitExceeded.typeName;
|
|
398
|
+
this.applyFields();
|
|
399
|
+
}
|
|
400
|
+
applyFields() {
|
|
401
|
+
const match = /^([^:]*):(\d+):([a-z]{3})(?::(.+))?$/.exec(packedAfter(this.message, CHECKOUT_LIMIT_MARKER) ?? '');
|
|
402
|
+
if (match == null) {
|
|
403
|
+
return;
|
|
404
|
+
}
|
|
405
|
+
this.reason = decode(match[1]);
|
|
406
|
+
this.maximumMinor = Number(match[2]);
|
|
407
|
+
this.currency = match[3];
|
|
408
|
+
this.resetsAt = dateOf(match[4]);
|
|
409
|
+
}
|
|
410
|
+
finalizeUnmarshal() {
|
|
411
|
+
this.applyFields();
|
|
412
|
+
}
|
|
413
|
+
}
|
|
71
414
|
ResilientError.registerErrorClass(PaymentError);
|
|
72
415
|
ResilientError.registerErrorClass(PaygateError);
|
|
73
416
|
ResilientError.registerErrorClass(UnknownPaygate);
|
|
74
417
|
ResilientError.registerErrorClass(PaygateMappingError);
|
|
418
|
+
ResilientError.registerErrorClass(PaygateSignatureError);
|
|
75
419
|
ResilientError.registerErrorClass(ProductError);
|
|
76
420
|
ResilientError.registerErrorClass(UnknownProduct);
|
|
77
421
|
ResilientError.registerErrorClass(UnknownPlan);
|
|
78
422
|
ResilientError.registerErrorClass(PaymentIdentificationError);
|
|
79
423
|
ResilientError.registerErrorClass(SubscriptionError);
|
|
80
424
|
ResilientError.registerErrorClass(UnknownSubscription);
|
|
425
|
+
ResilientError.registerErrorClass(LimitUnknown);
|
|
426
|
+
ResilientError.registerErrorClass(LimitMisdeclared);
|
|
427
|
+
ResilientError.registerErrorClass(PlanRequired);
|
|
428
|
+
ResilientError.registerErrorClass(PlanRankConflict);
|
|
429
|
+
ResilientError.registerErrorClass(WebhookSetupError);
|
|
430
|
+
ResilientError.registerErrorClass(PortalUnavailable);
|
|
431
|
+
ResilientError.registerErrorClass(EntitlementRefusal);
|
|
432
|
+
ResilientError.registerErrorClass(CapabilityRequired);
|
|
433
|
+
ResilientError.registerErrorClass(LimitExhausted);
|
|
434
|
+
ResilientError.registerErrorClass(ConsumerRightsError);
|
|
435
|
+
ResilientError.registerErrorClass(ConsumerRightsRefusal);
|
|
436
|
+
ResilientError.registerErrorClass(PerformanceConsentRequired);
|
|
437
|
+
ResilientError.registerErrorClass(SubscriptionStartRequired);
|
|
438
|
+
ResilientError.registerErrorClass(BillingCountryLocked);
|
|
439
|
+
ResilientError.registerErrorClass(WithdrawalUnavailable);
|
|
440
|
+
ResilientError.registerErrorClass(CancellationUnavailable);
|
|
441
|
+
ResilientError.registerErrorClass(CheckoutLimitExceeded);
|
|
81
442
|
//# sourceMappingURL=errors.js.map
|
package/build/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { AmountEstimate, PriceEstimate, PricingPolicy } from '../types.js';
|
|
2
|
+
/** The pricing policy's invariants and the tax / local-currency estimate of an amount. */
|
|
3
|
+
export interface PriceEstimateHelper {
|
|
4
|
+
/**
|
|
5
|
+
* @throws PaymentError when a tax estimate is served without automatic tax, a currency estimate is
|
|
6
|
+
* served without Adaptive Pricing, or a TTL is not a positive integer.
|
|
7
|
+
*/
|
|
8
|
+
assertPricingPolicy: (policy: PricingPolicy) => PricingPolicy;
|
|
9
|
+
/**
|
|
10
|
+
* Stripe's `percentage_decimal` (e.g. `"23"`, `"8.875"`) as parts per million — `1_000_000` is
|
|
11
|
+
* `100%` — parsed digit by digit so it is exact where a float parse (`Number(x) * 10_000`) is not.
|
|
12
|
+
* Fractional digits past the fourth are truncated, not rounded: a quarter of a hundredth of a
|
|
13
|
+
* percent is already far finer than any real tax rate.
|
|
14
|
+
*
|
|
15
|
+
* @throws PaymentError when the string is not a plain (unsigned, non-exponential) decimal.
|
|
16
|
+
*/
|
|
17
|
+
ratePpmOf: (percentageDecimal: string) => number;
|
|
18
|
+
/**
|
|
19
|
+
* Re-derive tax and the local-currency total for `amountMinor` from a `PriceEstimate` already
|
|
20
|
+
* fetched for the SAME product/plan/country, so a UI can re-price a custom amount (the credit
|
|
21
|
+
* dialog) without a second Stripe Tax call ($0.05 each).
|
|
22
|
+
*
|
|
23
|
+
* Exact for `amountMinor === estimate.tax.subtotalMinor` (Stripe's own numbers, echoed back).
|
|
24
|
+
* Otherwise exact only for `TaxBehavior.Exclusive` with `estimate.tax.scalable` — a linear
|
|
25
|
+
* percentage rate scales; a flat fee, a reduced-rate portion, or several inclusive rates do not, and
|
|
26
|
+
* neither does rescaling an inclusive amount (its tax portion is carved OUT of the total by a
|
|
27
|
+
* different formula this helper does not attempt). Both cases return `null` amounts, meaning
|
|
28
|
+
* "computed at checkout".
|
|
29
|
+
*
|
|
30
|
+
* @throws PaymentError when `amountMinor` is not a non-negative safe integer.
|
|
31
|
+
*/
|
|
32
|
+
estimateOf: (amountMinor: number, estimate: PriceEstimate) => AmountEstimate;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/estimate/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE/E,0FAA0F;AAC1F,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,mBAAmB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,aAAa,CAAA;IAC7D;;;;;;;OAOG;IACH,SAAS,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,MAAM,CAAA;IAChD;;;;;;;;;;;;;OAaG;IACH,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,KAAK,cAAc,CAAA;CAC7E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/estimate/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PriceEstimate, PricingPolicy, AmountEstimate } from './types.js';
|
|
2
|
+
import type { PriceEstimateHelper } from './estimate/types.js';
|
|
3
|
+
export declare const createPriceEstimateHelper: () => PriceEstimateHelper;
|
|
4
|
+
export declare const priceEstimateHelper: PriceEstimateHelper;
|
|
5
|
+
/** @deprecated compat:factory-refactor — use `priceEstimateHelper.assertPricingPolicy(…)` */
|
|
6
|
+
export declare const assertPricingPolicy: (policy: PricingPolicy) => PricingPolicy;
|
|
7
|
+
/** @deprecated compat:factory-refactor — use `priceEstimateHelper.ratePpmOf(…)` */
|
|
8
|
+
export declare const ratePpmOf: (percentageDecimal: string) => number;
|
|
9
|
+
/** @deprecated compat:factory-refactor — use `priceEstimateHelper.estimateOf(…)` */
|
|
10
|
+
export declare const estimateOf: (amountMinor: number, estimate: PriceEstimate) => AmountEstimate;
|
|
11
|
+
//# sourceMappingURL=estimate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"estimate.d.ts","sourceRoot":"","sources":["../src/estimate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAK9D,eAAO,MAAM,yBAAyB,QAAO,mBAoE5C,CAAA;AAED,eAAO,MAAM,mBAAmB,qBAA8B,CAAA;AAE9D,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,WAAY,aAAa,KAAG,aACX,CAAA;AAEjD,mFAAmF;AACnF,eAAO,MAAM,SAAS,sBAAuB,MAAM,KAAG,MAA0D,CAAA;AAEhH,oFAAoF;AACpF,eAAO,MAAM,UAAU,gBAAiB,MAAM,YAAY,aAAa,KAAG,cACnB,CAAA"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { PaymentError } from './errors.js';
|
|
2
|
+
import { TaxBehavior } from './consts.js';
|
|
3
|
+
/** Stripe's own convention for a tax amount: half a unit rounds up. */
|
|
4
|
+
const roundHalfUp = (value) => Math.floor(value + 0.5);
|
|
5
|
+
export const createPriceEstimateHelper = () => {
|
|
6
|
+
const assertPricingPolicy = (policy) => {
|
|
7
|
+
if (policy.tax.estimate && !policy.tax.automatic) {
|
|
8
|
+
throw new PaymentError('pricing-policy:tax-estimate-requires-automatic');
|
|
9
|
+
}
|
|
10
|
+
if (policy.currency.estimate && policy.currency.adaptive !== true) {
|
|
11
|
+
throw new PaymentError('pricing-policy:currency-estimate-requires-adaptive');
|
|
12
|
+
}
|
|
13
|
+
const feeRate = policy.currency.adaptiveFeeRate;
|
|
14
|
+
if (feeRate != null) {
|
|
15
|
+
if (policy.currency.adaptive !== true) {
|
|
16
|
+
throw new PaymentError('pricing-policy:adaptive-fee-requires-adaptive');
|
|
17
|
+
}
|
|
18
|
+
if (!Number.isFinite(feeRate) || feeRate < 0 || feeRate >= 1) {
|
|
19
|
+
throw new PaymentError('pricing-policy:adaptive-fee-rate');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
for (const ttl of [policy.tax.estimateTtlSeconds, policy.currency.estimateTtlSeconds]) {
|
|
23
|
+
if (ttl != null && (!Number.isSafeInteger(ttl) || ttl < 1)) {
|
|
24
|
+
throw new PaymentError('pricing-policy:ttl');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return policy;
|
|
28
|
+
};
|
|
29
|
+
const ratePpmOf = (percentageDecimal) => {
|
|
30
|
+
const match = /^(\d+)(?:\.(\d+))?$/.exec(percentageDecimal.trim());
|
|
31
|
+
if (match == null) {
|
|
32
|
+
throw new PaymentError('tax-rate:percentage');
|
|
33
|
+
}
|
|
34
|
+
const [, whole, fraction = ''] = match;
|
|
35
|
+
const fractionPpm = Number(`${fraction}0000`.slice(0, 4));
|
|
36
|
+
const ppm = Number(whole) * 10_000 + fractionPpm;
|
|
37
|
+
if (!Number.isSafeInteger(ppm)) {
|
|
38
|
+
throw new PaymentError('tax-rate:percentage');
|
|
39
|
+
}
|
|
40
|
+
return ppm;
|
|
41
|
+
};
|
|
42
|
+
const estimateOf = (amountMinor, estimate) => {
|
|
43
|
+
if (!Number.isSafeInteger(amountMinor) || amountMinor < 0) {
|
|
44
|
+
throw new PaymentError('price-estimate:amount');
|
|
45
|
+
}
|
|
46
|
+
const { tax, behavior, local } = estimate;
|
|
47
|
+
const sameAmount = amountMinor === tax.subtotalMinor;
|
|
48
|
+
const rescalable = sameAmount || (behavior === TaxBehavior.Exclusive && tax.scalable);
|
|
49
|
+
if (!rescalable) {
|
|
50
|
+
return { subtotalMinor: amountMinor, taxMinor: null, totalMinor: null };
|
|
51
|
+
}
|
|
52
|
+
// `sameAmount` trusts Stripe's own numbers outright; otherwise only Exclusive ever reaches here
|
|
53
|
+
// (`rescalable` above excludes an Inclusive amount that differs from the reference).
|
|
54
|
+
const taxMinor = sameAmount ? tax.taxMinor : tax.rates.reduce((sum, rate) => sum + roundHalfUp(amountMinor * rate.ratePpm / 1_000_000), 0);
|
|
55
|
+
const totalMinor = sameAmount ? tax.totalMinor : amountMinor + taxMinor;
|
|
56
|
+
const result = { subtotalMinor: amountMinor, taxMinor, totalMinor };
|
|
57
|
+
if (local != null) {
|
|
58
|
+
result.local = {
|
|
59
|
+
currency: local.currency,
|
|
60
|
+
subtotalAmount: amountMinor / 100 / local.exchangeRate,
|
|
61
|
+
taxAmount: taxMinor / 100 / local.exchangeRate,
|
|
62
|
+
totalAmount: totalMinor / 100 / local.exchangeRate,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
};
|
|
67
|
+
return { assertPricingPolicy, ratePpmOf, estimateOf };
|
|
68
|
+
};
|
|
69
|
+
export const priceEstimateHelper = createPriceEstimateHelper();
|
|
70
|
+
/** @deprecated compat:factory-refactor — use `priceEstimateHelper.assertPricingPolicy(…)` */
|
|
71
|
+
export const assertPricingPolicy = (policy) => priceEstimateHelper.assertPricingPolicy(policy);
|
|
72
|
+
/** @deprecated compat:factory-refactor — use `priceEstimateHelper.ratePpmOf(…)` */
|
|
73
|
+
export const ratePpmOf = (percentageDecimal) => priceEstimateHelper.ratePpmOf(percentageDecimal);
|
|
74
|
+
/** @deprecated compat:factory-refactor — use `priceEstimateHelper.estimateOf(…)` */
|
|
75
|
+
export const estimateOf = (amountMinor, estimate) => priceEstimateHelper.estimateOf(amountMinor, estimate);
|
|
76
|
+
//# sourceMappingURL=estimate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"estimate.js","sourceRoot":"","sources":["../src/estimate.ts"],"names":[],"mappings":"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"}
|