@shware/purchase 5.0.0 → 5.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app-store/config.d.cts +1 -2
- package/dist/app-store/config.d.cts.map +1 -1
- package/dist/app-store/config.d.mts +1 -2
- package/dist/app-store/config.d.mts.map +1 -1
- package/dist/app-store/handler.d.cts +2 -3
- package/dist/app-store/handler.d.cts.map +1 -1
- package/dist/app-store/handler.d.mts +2 -3
- package/dist/app-store/handler.d.mts.map +1 -1
- package/dist/app-store/index.cjs +2 -0
- package/dist/app-store/index.d.cts +2 -1
- package/dist/app-store/index.d.mts +2 -1
- package/dist/app-store/index.mjs +2 -1
- package/dist/app-store/mapper.cjs +47 -0
- package/dist/app-store/mapper.cjs.map +1 -0
- package/dist/app-store/mapper.d.cts +24 -0
- package/dist/app-store/mapper.d.cts.map +1 -0
- package/dist/app-store/mapper.d.mts +24 -0
- package/dist/app-store/mapper.d.mts.map +1 -0
- package/dist/app-store/mapper.mjs +46 -0
- package/dist/app-store/mapper.mjs.map +1 -0
- package/dist/google-play/config.d.cts +1 -2
- package/dist/google-play/config.d.cts.map +1 -1
- package/dist/google-play/config.d.mts +1 -2
- package/dist/google-play/config.d.mts.map +1 -1
- package/dist/google-play/index.cjs +2 -0
- package/dist/google-play/index.d.cts +2 -2
- package/dist/google-play/index.d.mts +2 -2
- package/dist/google-play/index.mjs +2 -2
- package/dist/google-play/mapper.cjs +48 -0
- package/dist/google-play/mapper.cjs.map +1 -1
- package/dist/google-play/mapper.d.cts +30 -3
- package/dist/google-play/mapper.d.cts.map +1 -1
- package/dist/google-play/mapper.d.mts +30 -3
- package/dist/google-play/mapper.d.mts.map +1 -1
- package/dist/google-play/mapper.mjs +47 -1
- package/dist/google-play/mapper.mjs.map +1 -1
- package/dist/google-play/real-time-developer-notification.d.cts +16 -17
- package/dist/google-play/real-time-developer-notification.d.cts.map +1 -1
- package/dist/google-play/real-time-developer-notification.d.mts +16 -17
- package/dist/google-play/real-time-developer-notification.d.mts.map +1 -1
- package/dist/index.cjs +3 -0
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/stripe/config.d.cts +3 -4
- package/dist/stripe/config.d.cts.map +1 -1
- package/dist/stripe/config.d.mts +3 -4
- package/dist/stripe/config.d.mts.map +1 -1
- package/dist/stripe/handler.d.cts +1 -2
- package/dist/stripe/handler.d.cts.map +1 -1
- package/dist/stripe/handler.d.mts +1 -2
- package/dist/stripe/handler.d.mts.map +1 -1
- package/dist/stripe/index.cjs +1 -0
- package/dist/stripe/index.d.cts +4 -3
- package/dist/stripe/index.d.mts +4 -3
- package/dist/stripe/index.mjs +2 -2
- package/dist/stripe/mapper.cjs +18 -0
- package/dist/stripe/mapper.cjs.map +1 -1
- package/dist/stripe/mapper.d.cts +29 -23
- package/dist/stripe/mapper.d.cts.map +1 -1
- package/dist/stripe/mapper.d.mts +29 -23
- package/dist/stripe/mapper.d.mts.map +1 -1
- package/dist/stripe/mapper.mjs +18 -1
- package/dist/stripe/mapper.mjs.map +1 -1
- package/dist/stripe/metadata.d.cts +1 -2
- package/dist/stripe/metadata.d.cts.map +1 -1
- package/dist/stripe/metadata.d.mts +1 -2
- package/dist/stripe/metadata.d.mts.map +1 -1
- package/dist/stripe/pending-checkout.d.cts +3 -4
- package/dist/stripe/pending-checkout.d.cts.map +1 -1
- package/dist/stripe/pending-checkout.d.mts +3 -4
- package/dist/stripe/pending-checkout.d.mts.map +1 -1
- package/dist/stripe/schema.cjs +4 -15
- package/dist/stripe/schema.cjs.map +1 -1
- package/dist/stripe/schema.d.cts +7 -11
- package/dist/stripe/schema.d.cts.map +1 -1
- package/dist/stripe/schema.d.mts +7 -11
- package/dist/stripe/schema.d.mts.map +1 -1
- package/dist/stripe/schema.mjs +4 -15
- package/dist/stripe/schema.mjs.map +1 -1
- package/dist/subscription/index.cjs +25 -0
- package/dist/subscription/index.cjs.map +1 -1
- package/dist/subscription/index.d.cts +41 -6
- package/dist/subscription/index.d.cts.map +1 -1
- package/dist/subscription/index.d.mts +41 -6
- package/dist/subscription/index.d.mts.map +1 -1
- package/dist/subscription/index.mjs +23 -1
- package/dist/subscription/index.mjs.map +1 -1
- package/dist/types.d.cts +2 -3
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +2 -3
- package/dist/types.d.mts.map +1 -1
- package/package.json +6 -6
package/dist/stripe/mapper.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { SubscriptionStatus } from "../subscription/index.cjs";
|
|
1
|
+
import { CancellationDetails, SubscriptionStatus } from "../subscription/index.cjs";
|
|
2
2
|
import { Stripe } from "stripe";
|
|
3
3
|
//#region src/stripe/mapper.d.ts
|
|
4
|
-
declare function mapTime<T extends number | null>(stripeTimestampSeconds: T): T extends number ? string : null;
|
|
5
|
-
type Price = {
|
|
4
|
+
export declare function mapTime<T extends number | null>(stripeTimestampSeconds: T): T extends number ? string : null;
|
|
5
|
+
export type Price = {
|
|
6
6
|
id: string;
|
|
7
7
|
type: Stripe.Price.Type;
|
|
8
8
|
active: boolean;
|
|
@@ -12,8 +12,8 @@ type Price = {
|
|
|
12
12
|
unit_amount_decimal: string | null;
|
|
13
13
|
recurring: Stripe.Price.Recurring | null;
|
|
14
14
|
};
|
|
15
|
-
declare function mapPrice(price: Stripe.Price): Price;
|
|
16
|
-
interface LineItem {
|
|
15
|
+
export declare function mapPrice(price: Stripe.Price): Price;
|
|
16
|
+
export interface LineItem {
|
|
17
17
|
id: string;
|
|
18
18
|
currency: string;
|
|
19
19
|
quantity: number | null;
|
|
@@ -24,9 +24,9 @@ interface LineItem {
|
|
|
24
24
|
amount_discount: number;
|
|
25
25
|
price: Price | null;
|
|
26
26
|
}
|
|
27
|
-
declare function mapLineItem(item: Stripe.LineItem): LineItem;
|
|
28
|
-
type PaymentStatus = Stripe.Checkout.Session.PaymentStatus;
|
|
29
|
-
interface CheckoutSession {
|
|
27
|
+
export declare function mapLineItem(item: Stripe.LineItem): LineItem;
|
|
28
|
+
export type PaymentStatus = Stripe.Checkout.Session.PaymentStatus;
|
|
29
|
+
export interface CheckoutSession {
|
|
30
30
|
id: string;
|
|
31
31
|
url: string | null;
|
|
32
32
|
coupon: string | undefined;
|
|
@@ -37,8 +37,8 @@ interface CheckoutSession {
|
|
|
37
37
|
amount_total: number | null;
|
|
38
38
|
line_items: LineItem[] | undefined;
|
|
39
39
|
}
|
|
40
|
-
declare function mapCheckoutSession(session: Stripe.Checkout.Session): CheckoutSession;
|
|
41
|
-
declare function mapInvoice(i: Stripe.Invoice): {
|
|
40
|
+
export declare function mapCheckoutSession(session: Stripe.Checkout.Session): CheckoutSession;
|
|
41
|
+
export declare function mapInvoice(i: Stripe.Invoice): {
|
|
42
42
|
id: string;
|
|
43
43
|
number: string | null;
|
|
44
44
|
total: number;
|
|
@@ -56,7 +56,7 @@ declare function mapInvoice(i: Stripe.Invoice): {
|
|
|
56
56
|
period_start: number;
|
|
57
57
|
period_end: number;
|
|
58
58
|
};
|
|
59
|
-
declare function mapPaymentIntent(intent: Stripe.PaymentIntent): {
|
|
59
|
+
export declare function mapPaymentIntent(intent: Stripe.PaymentIntent): {
|
|
60
60
|
id: string;
|
|
61
61
|
amount: number;
|
|
62
62
|
amount_capturable: number;
|
|
@@ -67,7 +67,7 @@ declare function mapPaymentIntent(intent: Stripe.PaymentIntent): {
|
|
|
67
67
|
status: Stripe.PaymentIntent.Status;
|
|
68
68
|
created: number;
|
|
69
69
|
};
|
|
70
|
-
declare function mapCharge(charge: Stripe.Charge): {
|
|
70
|
+
export declare function mapCharge(charge: Stripe.Charge): {
|
|
71
71
|
id: string;
|
|
72
72
|
description: string | null;
|
|
73
73
|
currency: string;
|
|
@@ -91,7 +91,7 @@ declare function mapCharge(charge: Stripe.Charge): {
|
|
|
91
91
|
created: number;
|
|
92
92
|
} | undefined;
|
|
93
93
|
};
|
|
94
|
-
type ProductPrice = {
|
|
94
|
+
export type ProductPrice = {
|
|
95
95
|
id: string;
|
|
96
96
|
type: Stripe.Price.Type;
|
|
97
97
|
unit_amount: number;
|
|
@@ -103,11 +103,11 @@ type ProductPrice = {
|
|
|
103
103
|
livemode: Stripe.Product['livemode'];
|
|
104
104
|
};
|
|
105
105
|
};
|
|
106
|
-
declare function mapSubscriptionStatus(status: Stripe.Subscription.Status): SubscriptionStatus;
|
|
107
|
-
declare const ZERO_DECIMAL_CURRENCIES: string[];
|
|
108
|
-
declare function minorUnits(currency: string): 1 | 100;
|
|
109
|
-
declare function price(value: number, currency: string): number;
|
|
110
|
-
interface Item {
|
|
106
|
+
export declare function mapSubscriptionStatus(status: Stripe.Subscription.Status): SubscriptionStatus;
|
|
107
|
+
export declare const ZERO_DECIMAL_CURRENCIES: string[];
|
|
108
|
+
export declare function minorUnits(currency: string): 1 | 100;
|
|
109
|
+
export declare function price(value: number, currency: string): number;
|
|
110
|
+
export interface Item {
|
|
111
111
|
item_id: string;
|
|
112
112
|
item_name: string;
|
|
113
113
|
affiliation?: 'Google Store' | (string & {});
|
|
@@ -127,7 +127,7 @@ interface Item {
|
|
|
127
127
|
price?: number;
|
|
128
128
|
quantity?: number;
|
|
129
129
|
}
|
|
130
|
-
interface PurchaseProperties {
|
|
130
|
+
export interface PurchaseProperties {
|
|
131
131
|
currency: string;
|
|
132
132
|
value: number;
|
|
133
133
|
transaction_id: string;
|
|
@@ -136,14 +136,20 @@ interface PurchaseProperties {
|
|
|
136
136
|
tax?: number;
|
|
137
137
|
items?: Item[];
|
|
138
138
|
}
|
|
139
|
-
interface BeginCheckoutProperties {
|
|
139
|
+
export interface BeginCheckoutProperties {
|
|
140
140
|
currency: string;
|
|
141
141
|
value: number;
|
|
142
142
|
coupon?: string;
|
|
143
143
|
items: Item[];
|
|
144
144
|
}
|
|
145
|
-
declare function getPurchaseProperties(session: CheckoutSession): PurchaseProperties;
|
|
146
|
-
declare function getBeginCheckoutProperties(p: ProductPrice): BeginCheckoutProperties;
|
|
145
|
+
export declare function getPurchaseProperties(session: CheckoutSession): PurchaseProperties;
|
|
146
|
+
export declare function getBeginCheckoutProperties(p: ProductPrice): BeginCheckoutProperties;
|
|
147
|
+
/**
|
|
148
|
+
* Stripe's `cancellation_details` in the shared shape. The object is present on every
|
|
149
|
+
* subscription with all three fields null, so an active one maps to null rather than an empty
|
|
150
|
+
* record. `reason` says who acted: `cancellation_requested` is the customer (or us on their
|
|
151
|
+
* behalf), the payment reasons are Stripe ending it.
|
|
152
|
+
*/
|
|
153
|
+
export declare function mapCancellationDetails(subscription: Pick<Stripe.Subscription, 'cancellation_details'>): CancellationDetails | null;
|
|
147
154
|
//#endregion
|
|
148
|
-
export { BeginCheckoutProperties, CheckoutSession, Item, LineItem, PaymentStatus, Price, ProductPrice, PurchaseProperties, ZERO_DECIMAL_CURRENCIES, getBeginCheckoutProperties, getPurchaseProperties, mapCharge, mapCheckoutSession, mapInvoice, mapLineItem, mapPaymentIntent, mapPrice, mapSubscriptionStatus, mapTime, minorUnits, price };
|
|
149
155
|
//# sourceMappingURL=mapper.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapper.d.cts","names":[],"sources":["../../src/stripe/mapper.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"mapper.d.cts","names":[],"sources":["../../src/stripe/mapper.ts"],"mappings":";;;wBAQgB,QAAQ,yBACtB,wBAAwB,IACvB;YAKS;EACV;EACA,MAAM,OAAO,MAAM;EACnB;EACA,gBAAgB,OAAO,MAAM;EAC7B,UAAU,OAAO;EACjB;EACA;EACA,WAAW,OAAO,MAAM;;wBAGV,SAAS,OAAO,OAAO,QAAQ;iBAa9B;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;;wBAGO,YAAY,MAAM,OAAO,WAAW;YAoBxC,gBAAgB,OAAO,SAAS,QAAQ;iBAMnC;EACf;EACA;EACA;EACA;EACA;EACA,gBAAgB;EAChB;EACA;EACA,YAAY;;wBAGE,mBAAmB,SAAS,OAAO,SAAS,UAAU;wBA0BtD,WAAW,GAAG,OAAO;EAEjC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBAAc,OAAA,QAAA;EACd;EACA;EACA;EACA,QAAM,OAAA,QAAA;EACN;EACA;EACA;;wBAIY,iBAAiB,QAAQ,OAAO;EAE5C;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAM,OAAA,cAAA;EACN;;wBAIY,UAAU,QAAQ,OAAO;EAErC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAM,OAAA,OAAA;EACN;EACA;;;;;;;;;;;;YAOQ;EACV;EACA,MAAM,OAAO,MAAM;EACnB;EACA,UAAU,OAAO;EACjB;IACE,IAAI,OAAO;IACX,MAAM,OAAO;IACb,aAAa,OAAO;IACpB,UAAU,OAAO;;;wBAIL,sBAAsB,QAAQ,OAAO,aAAa,SAAS;qBAyB9D;wBAmBG,WAAW;wBAIX,MAAM,eAAe;iBAIpB;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;;iBAGO;EACf;EACA;EACA;EACA,OAAO;;wBAqCO,sBAAsB,SAAS,kBAAkB;wBA2BjD,2BAA2B,GAAG,eAAe;;;;;;;wBAoB7C,uBACd,cAAc,KAAK,OAAO,wCACzB"}
|
package/dist/stripe/mapper.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { SubscriptionStatus } from "../subscription/index.mjs";
|
|
1
|
+
import { CancellationDetails, SubscriptionStatus } from "../subscription/index.mjs";
|
|
2
2
|
import { Stripe } from "stripe";
|
|
3
3
|
//#region src/stripe/mapper.d.ts
|
|
4
|
-
declare function mapTime<T extends number | null>(stripeTimestampSeconds: T): T extends number ? string : null;
|
|
5
|
-
type Price = {
|
|
4
|
+
export declare function mapTime<T extends number | null>(stripeTimestampSeconds: T): T extends number ? string : null;
|
|
5
|
+
export type Price = {
|
|
6
6
|
id: string;
|
|
7
7
|
type: Stripe.Price.Type;
|
|
8
8
|
active: boolean;
|
|
@@ -12,8 +12,8 @@ type Price = {
|
|
|
12
12
|
unit_amount_decimal: string | null;
|
|
13
13
|
recurring: Stripe.Price.Recurring | null;
|
|
14
14
|
};
|
|
15
|
-
declare function mapPrice(price: Stripe.Price): Price;
|
|
16
|
-
interface LineItem {
|
|
15
|
+
export declare function mapPrice(price: Stripe.Price): Price;
|
|
16
|
+
export interface LineItem {
|
|
17
17
|
id: string;
|
|
18
18
|
currency: string;
|
|
19
19
|
quantity: number | null;
|
|
@@ -24,9 +24,9 @@ interface LineItem {
|
|
|
24
24
|
amount_discount: number;
|
|
25
25
|
price: Price | null;
|
|
26
26
|
}
|
|
27
|
-
declare function mapLineItem(item: Stripe.LineItem): LineItem;
|
|
28
|
-
type PaymentStatus = Stripe.Checkout.Session.PaymentStatus;
|
|
29
|
-
interface CheckoutSession {
|
|
27
|
+
export declare function mapLineItem(item: Stripe.LineItem): LineItem;
|
|
28
|
+
export type PaymentStatus = Stripe.Checkout.Session.PaymentStatus;
|
|
29
|
+
export interface CheckoutSession {
|
|
30
30
|
id: string;
|
|
31
31
|
url: string | null;
|
|
32
32
|
coupon: string | undefined;
|
|
@@ -37,8 +37,8 @@ interface CheckoutSession {
|
|
|
37
37
|
amount_total: number | null;
|
|
38
38
|
line_items: LineItem[] | undefined;
|
|
39
39
|
}
|
|
40
|
-
declare function mapCheckoutSession(session: Stripe.Checkout.Session): CheckoutSession;
|
|
41
|
-
declare function mapInvoice(i: Stripe.Invoice): {
|
|
40
|
+
export declare function mapCheckoutSession(session: Stripe.Checkout.Session): CheckoutSession;
|
|
41
|
+
export declare function mapInvoice(i: Stripe.Invoice): {
|
|
42
42
|
id: string;
|
|
43
43
|
number: string | null;
|
|
44
44
|
total: number;
|
|
@@ -56,7 +56,7 @@ declare function mapInvoice(i: Stripe.Invoice): {
|
|
|
56
56
|
period_start: number;
|
|
57
57
|
period_end: number;
|
|
58
58
|
};
|
|
59
|
-
declare function mapPaymentIntent(intent: Stripe.PaymentIntent): {
|
|
59
|
+
export declare function mapPaymentIntent(intent: Stripe.PaymentIntent): {
|
|
60
60
|
id: string;
|
|
61
61
|
amount: number;
|
|
62
62
|
amount_capturable: number;
|
|
@@ -67,7 +67,7 @@ declare function mapPaymentIntent(intent: Stripe.PaymentIntent): {
|
|
|
67
67
|
status: Stripe.PaymentIntent.Status;
|
|
68
68
|
created: number;
|
|
69
69
|
};
|
|
70
|
-
declare function mapCharge(charge: Stripe.Charge): {
|
|
70
|
+
export declare function mapCharge(charge: Stripe.Charge): {
|
|
71
71
|
id: string;
|
|
72
72
|
description: string | null;
|
|
73
73
|
currency: string;
|
|
@@ -91,7 +91,7 @@ declare function mapCharge(charge: Stripe.Charge): {
|
|
|
91
91
|
created: number;
|
|
92
92
|
} | undefined;
|
|
93
93
|
};
|
|
94
|
-
type ProductPrice = {
|
|
94
|
+
export type ProductPrice = {
|
|
95
95
|
id: string;
|
|
96
96
|
type: Stripe.Price.Type;
|
|
97
97
|
unit_amount: number;
|
|
@@ -103,11 +103,11 @@ type ProductPrice = {
|
|
|
103
103
|
livemode: Stripe.Product['livemode'];
|
|
104
104
|
};
|
|
105
105
|
};
|
|
106
|
-
declare function mapSubscriptionStatus(status: Stripe.Subscription.Status): SubscriptionStatus;
|
|
107
|
-
declare const ZERO_DECIMAL_CURRENCIES: string[];
|
|
108
|
-
declare function minorUnits(currency: string): 1 | 100;
|
|
109
|
-
declare function price(value: number, currency: string): number;
|
|
110
|
-
interface Item {
|
|
106
|
+
export declare function mapSubscriptionStatus(status: Stripe.Subscription.Status): SubscriptionStatus;
|
|
107
|
+
export declare const ZERO_DECIMAL_CURRENCIES: string[];
|
|
108
|
+
export declare function minorUnits(currency: string): 1 | 100;
|
|
109
|
+
export declare function price(value: number, currency: string): number;
|
|
110
|
+
export interface Item {
|
|
111
111
|
item_id: string;
|
|
112
112
|
item_name: string;
|
|
113
113
|
affiliation?: 'Google Store' | (string & {});
|
|
@@ -127,7 +127,7 @@ interface Item {
|
|
|
127
127
|
price?: number;
|
|
128
128
|
quantity?: number;
|
|
129
129
|
}
|
|
130
|
-
interface PurchaseProperties {
|
|
130
|
+
export interface PurchaseProperties {
|
|
131
131
|
currency: string;
|
|
132
132
|
value: number;
|
|
133
133
|
transaction_id: string;
|
|
@@ -136,14 +136,20 @@ interface PurchaseProperties {
|
|
|
136
136
|
tax?: number;
|
|
137
137
|
items?: Item[];
|
|
138
138
|
}
|
|
139
|
-
interface BeginCheckoutProperties {
|
|
139
|
+
export interface BeginCheckoutProperties {
|
|
140
140
|
currency: string;
|
|
141
141
|
value: number;
|
|
142
142
|
coupon?: string;
|
|
143
143
|
items: Item[];
|
|
144
144
|
}
|
|
145
|
-
declare function getPurchaseProperties(session: CheckoutSession): PurchaseProperties;
|
|
146
|
-
declare function getBeginCheckoutProperties(p: ProductPrice): BeginCheckoutProperties;
|
|
145
|
+
export declare function getPurchaseProperties(session: CheckoutSession): PurchaseProperties;
|
|
146
|
+
export declare function getBeginCheckoutProperties(p: ProductPrice): BeginCheckoutProperties;
|
|
147
|
+
/**
|
|
148
|
+
* Stripe's `cancellation_details` in the shared shape. The object is present on every
|
|
149
|
+
* subscription with all three fields null, so an active one maps to null rather than an empty
|
|
150
|
+
* record. `reason` says who acted: `cancellation_requested` is the customer (or us on their
|
|
151
|
+
* behalf), the payment reasons are Stripe ending it.
|
|
152
|
+
*/
|
|
153
|
+
export declare function mapCancellationDetails(subscription: Pick<Stripe.Subscription, 'cancellation_details'>): CancellationDetails | null;
|
|
147
154
|
//#endregion
|
|
148
|
-
export { BeginCheckoutProperties, CheckoutSession, Item, LineItem, PaymentStatus, Price, ProductPrice, PurchaseProperties, ZERO_DECIMAL_CURRENCIES, getBeginCheckoutProperties, getPurchaseProperties, mapCharge, mapCheckoutSession, mapInvoice, mapLineItem, mapPaymentIntent, mapPrice, mapSubscriptionStatus, mapTime, minorUnits, price };
|
|
149
155
|
//# sourceMappingURL=mapper.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapper.d.mts","names":[],"sources":["../../src/stripe/mapper.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"mapper.d.mts","names":[],"sources":["../../src/stripe/mapper.ts"],"mappings":";;;wBAQgB,QAAQ,yBACtB,wBAAwB,IACvB;YAKS;EACV;EACA,MAAM,OAAO,MAAM;EACnB;EACA,gBAAgB,OAAO,MAAM;EAC7B,UAAU,OAAO;EACjB;EACA;EACA,WAAW,OAAO,MAAM;;wBAGV,SAAS,OAAO,OAAO,QAAQ;iBAa9B;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;;wBAGO,YAAY,MAAM,OAAO,WAAW;YAoBxC,gBAAgB,OAAO,SAAS,QAAQ;iBAMnC;EACf;EACA;EACA;EACA;EACA;EACA,gBAAgB;EAChB;EACA;EACA,YAAY;;wBAGE,mBAAmB,SAAS,OAAO,SAAS,UAAU;wBA0BtD,WAAW,GAAG,OAAO;EAEjC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBAAc,OAAA,QAAA;EACd;EACA;EACA;EACA,QAAM,OAAA,QAAA;EACN;EACA;EACA;;wBAIY,iBAAiB,QAAQ,OAAO;EAE5C;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAM,OAAA,cAAA;EACN;;wBAIY,UAAU,QAAQ,OAAO;EAErC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAM,OAAA,OAAA;EACN;EACA;;;;;;;;;;;;YAOQ;EACV;EACA,MAAM,OAAO,MAAM;EACnB;EACA,UAAU,OAAO;EACjB;IACE,IAAI,OAAO;IACX,MAAM,OAAO;IACb,aAAa,OAAO;IACpB,UAAU,OAAO;;;wBAIL,sBAAsB,QAAQ,OAAO,aAAa,SAAS;qBAyB9D;wBAmBG,WAAW;wBAIX,MAAM,eAAe;iBAIpB;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;iBAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;;iBAGO;EACf;EACA;EACA;EACA,OAAO;;wBAqCO,sBAAsB,SAAS,kBAAkB;wBA2BjD,2BAA2B,GAAG,eAAe;;;;;;;wBAoB7C,uBACd,cAAc,KAAK,OAAO,wCACzB"}
|
package/dist/stripe/mapper.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CANCELLATION_FEEDBACKS } from "../subscription/index.mjs";
|
|
1
2
|
//#region src/stripe/mapper.ts
|
|
2
3
|
function mapTime(stripeTimestampSeconds) {
|
|
3
4
|
if (!stripeTimestampSeconds) return null;
|
|
@@ -197,7 +198,23 @@ function getBeginCheckoutProperties(p) {
|
|
|
197
198
|
}]
|
|
198
199
|
};
|
|
199
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Stripe's `cancellation_details` in the shared shape. The object is present on every
|
|
203
|
+
* subscription with all three fields null, so an active one maps to null rather than an empty
|
|
204
|
+
* record. `reason` says who acted: `cancellation_requested` is the customer (or us on their
|
|
205
|
+
* behalf), the payment reasons are Stripe ending it.
|
|
206
|
+
*/
|
|
207
|
+
function mapCancellationDetails(subscription) {
|
|
208
|
+
const details = subscription.cancellation_details;
|
|
209
|
+
if (!details || !details.reason && !details.feedback && !details.comment) return null;
|
|
210
|
+
return {
|
|
211
|
+
initiator: details.reason === "payment_failed" || details.reason === "payment_disputed" ? "system" : "user",
|
|
212
|
+
reason: details.reason ?? null,
|
|
213
|
+
feedback: details.feedback ? CANCELLATION_FEEDBACKS.includes(details.feedback) ? details.feedback : "other" : null,
|
|
214
|
+
comment: details.comment ?? null
|
|
215
|
+
};
|
|
216
|
+
}
|
|
200
217
|
//#endregion
|
|
201
|
-
export { ZERO_DECIMAL_CURRENCIES, getBeginCheckoutProperties, getPurchaseProperties, mapCharge, mapCheckoutSession, mapInvoice, mapLineItem, mapPaymentIntent, mapPrice, mapSubscriptionStatus, mapTime, minorUnits, price };
|
|
218
|
+
export { ZERO_DECIMAL_CURRENCIES, getBeginCheckoutProperties, getPurchaseProperties, mapCancellationDetails, mapCharge, mapCheckoutSession, mapInvoice, mapLineItem, mapPaymentIntent, mapPrice, mapSubscriptionStatus, mapTime, minorUnits, price };
|
|
202
219
|
|
|
203
220
|
//# sourceMappingURL=mapper.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapper.mjs","names":[],"sources":["../../src/stripe/mapper.ts"],"sourcesContent":["import type { Stripe } from 'stripe';\nimport type { SubscriptionStatus } from '../subscription/index';\n\nexport function mapTime<T extends number | null>(\n stripeTimestampSeconds: T\n): T extends number ? string : null {\n if (!stripeTimestampSeconds) return null as T extends number ? string : null;\n return new Date(stripeTimestampSeconds * 1000).toISOString() as T extends number ? string : null;\n}\n\nexport type Price = {\n id: string;\n type: Stripe.Price.Type;\n active: boolean;\n billing_scheme: Stripe.Price.BillingScheme;\n currency: Stripe.Price['currency'];\n unit_amount: number | null;\n unit_amount_decimal: string | null;\n recurring: Stripe.Price.Recurring | null;\n};\n\nexport function mapPrice(price: Stripe.Price): Price {\n return {\n id: price.id,\n type: price.type,\n active: price.active,\n billing_scheme: price.billing_scheme,\n currency: price.currency,\n unit_amount: price.unit_amount,\n unit_amount_decimal: price.unit_amount_decimal?.toString() ?? null,\n recurring: price.recurring,\n };\n}\n\nexport interface LineItem {\n id: string;\n currency: string;\n quantity: number | null;\n description: string | null;\n amount_tax: number;\n amount_total: number;\n amount_subtotal: number;\n amount_discount: number;\n price: Price | null;\n}\n\nexport function mapLineItem(item: Stripe.LineItem): LineItem {\n return {\n id: item.price\n ? typeof item.price.product === 'string'\n ? item.price.product\n : item.price.product.id\n : item.id,\n currency: item.currency,\n quantity: item.quantity,\n description: item.description,\n amount_tax: item.amount_tax,\n amount_total: item.amount_total,\n amount_subtotal: item.amount_subtotal,\n amount_discount: item.amount_discount,\n price: item.price ? mapPrice(item.price) : null,\n };\n}\n\n// Re-exported under our own name so consumers need not reach into stripe's namespace.\n// Open-ended since stripe 22.4: a status the API adds later is not a type error.\nexport type PaymentStatus = Stripe.Checkout.Session.PaymentStatus;\n\n// Declared rather than inferred from mapCheckoutSession: an inferred shape is\n// structural, so a consumer's declaration emit has to spell out payment_status\n// through stripe's internal module path — TS2883 in any package that reaches\n// stripe transitively instead of depending on it (see line_items/price too).\nexport interface CheckoutSession {\n id: string;\n url: string | null;\n coupon: string | undefined;\n livemode: boolean;\n expires_at: number;\n payment_status: PaymentStatus;\n currency: string | null;\n amount_total: number | null;\n line_items: LineItem[] | undefined;\n}\n\nexport function mapCheckoutSession(session: Stripe.Checkout.Session): CheckoutSession {\n let coupon: string | undefined = undefined;\n if (Array.isArray(session.discounts) && session.discounts.length !== 0) {\n const discount = session.discounts[0];\n if (discount.coupon && typeof discount.coupon === 'object') {\n coupon = discount.coupon.id;\n } else if (typeof discount.coupon === 'string') {\n coupon = discount.coupon;\n } else {\n coupon = undefined;\n }\n }\n\n return {\n id: session.id,\n url: session.url,\n coupon,\n livemode: session.livemode,\n expires_at: session.expires_at,\n payment_status: session.payment_status,\n currency: session.currency,\n amount_total: session.amount_total,\n line_items: session.line_items?.data.map(mapLineItem),\n };\n}\n\nexport function mapInvoice(i: Stripe.Invoice) {\n return {\n id: i.id,\n number: i.number,\n total: i.total,\n subtotal: i.subtotal,\n amount_due: i.amount_due,\n amount_paid: i.amount_paid,\n amount_remaining: i.amount_remaining,\n currency: i.currency,\n billing_reason: i.billing_reason,\n hosted_invoice_url: i.hosted_invoice_url,\n invoice_pdf: i.invoice_pdf,\n receipt_number: i.receipt_number,\n status: i.status,\n created: i.created,\n period_start: i.period_start,\n period_end: i.period_end,\n };\n}\n\nexport function mapPaymentIntent(intent: Stripe.PaymentIntent) {\n return {\n id: intent.id,\n amount: intent.amount,\n amount_capturable: intent.amount_capturable,\n amount_received: intent.amount_received,\n currency: intent.currency,\n client_secret: intent.client_secret,\n description: intent.description,\n status: intent.status,\n created: intent.created,\n };\n}\n\nexport function mapCharge(charge: Stripe.Charge) {\n return {\n id: charge.id,\n description: charge.description,\n currency: charge.currency,\n amount: charge.amount,\n amount_captured: charge.amount_captured,\n amount_refunded: charge.amount_refunded,\n receipt_email: charge.receipt_email,\n receipt_number: charge.receipt_number,\n receipt_url: charge.receipt_url,\n status: charge.status,\n created: charge.created,\n payment_intent:\n charge.payment_intent && typeof charge.payment_intent === 'object'\n ? mapPaymentIntent(charge.payment_intent)\n : undefined,\n };\n}\n\nexport type ProductPrice = {\n id: string;\n type: Stripe.Price.Type;\n unit_amount: number;\n currency: Stripe.Price['currency'];\n product: {\n id: Stripe.Product['id'];\n name: Stripe.Product['name'];\n description: Stripe.Product['description'];\n livemode: Stripe.Product['livemode'];\n };\n};\n\nexport function mapSubscriptionStatus(status: Stripe.Subscription.Status): SubscriptionStatus {\n switch (status) {\n case 'active':\n return 'ACTIVE';\n case 'canceled':\n return 'CANCELED';\n case 'incomplete':\n return 'INCOMPLETE';\n case 'incomplete_expired':\n return 'INCOMPLETE_EXPIRED';\n case 'past_due':\n return 'PAST_DUE';\n case 'paused':\n return 'PAUSED';\n case 'trialing':\n return 'TRIALING';\n case 'unpaid':\n return 'UNPAID';\n default: {\n console.error(`Invalid stripe status: ${String(status)}`);\n throw new Error(`Invalid stripe status: ${String(status)}`);\n }\n }\n}\n\nexport const ZERO_DECIMAL_CURRENCIES = [\n 'BIF',\n 'CLP',\n 'DJF',\n 'GNF',\n 'JPY',\n 'KMF',\n 'KRW',\n 'MGA',\n 'PYG',\n 'RWF',\n 'UGX',\n 'VND',\n 'VUV',\n 'XAF',\n 'XOF',\n 'XPF',\n];\n\nexport function minorUnits(currency: string) {\n return ZERO_DECIMAL_CURRENCIES.includes(currency.toUpperCase()) ? 1 : 100;\n}\n\nexport function price(value: number, currency: string) {\n return value / minorUnits(currency);\n}\n\nexport interface Item {\n item_id: string;\n item_name: string;\n affiliation?: 'Google Store' | (string & {});\n coupon?: string;\n discount?: number;\n index?: number;\n item_brand?: string;\n item_category?: string;\n item_category2?: string;\n item_category3?: string;\n item_category4?: string;\n item_category5?: string;\n item_list_id?: string;\n item_list_name?: string;\n item_variant?: string;\n location_id?: string;\n price?: number;\n quantity?: number;\n}\n\nexport interface PurchaseProperties {\n currency: string;\n value: number;\n transaction_id: string;\n coupon?: string;\n shipping?: number;\n tax?: number;\n items?: Item[];\n}\n\nexport interface BeginCheckoutProperties {\n currency: string;\n value: number;\n coupon?: string;\n items: Item[];\n}\n\n// Google Ads rejects conversion transaction IDs longer than 64 characters.\n// https://support.google.com/google-ads/answer/6386790\nconst GOOGLE_ADS_TRANSACTION_ID_MAX = 64;\n\n/**\n * GA4 purchase events feed Google Ads conversions, whose transaction IDs are\n * capped at 64 characters — but Stripe checkout session ids exceed that:\n * around 2021 they grew from ~32 chars (`cs_live_` + 24 random chars) to ~66\n * (`cs_live_a` + 57), with no announcement. Stripe treats id length/format as\n * opaque and backwards-compatible, guaranteeing only that ids never exceed\n * 255 chars, so they may grow again at any time.\n *\n * Dropping the fixed `cs_live_`/`cs_test_` prefix brings the id under 64\n * while staying reversible: prepend the prefix (livemode tells which) to\n * reconstruct the full session id for Stripe dashboard lookups. The payment\n * intent id (~27 chars) is not a substitute — it only exists on\n * `mode: 'payment'` sessions (subscription-mode sessions carry it on the\n * invoice instead), and its short length is just as unguaranteed as the\n * session id's was.\n *\n * Must stay deterministic: GA4/Google Ads dedupe purchases by\n * transaction_id, and the same session may be tracked from multiple paths.\n */\nfunction toTransactionId(sessionId: string): string {\n const stripped = sessionId.replace(/^cs_(live|test)_/, '');\n if (stripped.length > GOOGLE_ADS_TRANSACTION_ID_MAX) {\n console.warn(\n `transaction_id still exceeds ${GOOGLE_ADS_TRANSACTION_ID_MAX} chars after stripping ` +\n `the prefix — Stripe may have lengthened session ids again; truncating: ${sessionId}`\n );\n }\n return stripped.slice(0, GOOGLE_ADS_TRANSACTION_ID_MAX);\n}\n\nexport function getPurchaseProperties(session: CheckoutSession): PurchaseProperties {\n let value: number;\n let currency: string;\n if (!session.amount_total || !session.currency) {\n value = session.line_items?.reduce((acc, item) => acc + item.amount_total, 0) ?? 0;\n currency = session.line_items?.[0]?.currency ?? 'usd';\n } else {\n value = session.amount_total;\n currency = session.currency;\n }\n\n return {\n transaction_id: toTransactionId(session.id),\n value: price(value, currency),\n currency: currency.toUpperCase(),\n coupon: session.coupon,\n items: session.line_items?.map((item, index) => ({\n index,\n item_id: item.id,\n item_name: item.description ?? '',\n price: price(item.amount_total, item.currency),\n quantity: item.quantity ?? 1,\n discount: price(item.amount_discount, item.currency),\n })),\n };\n}\n\nexport function getBeginCheckoutProperties(p: ProductPrice): BeginCheckoutProperties {\n return {\n currency: p.currency.toUpperCase(),\n value: price(p.unit_amount, p.currency),\n items: [\n {\n item_id: p.product.id,\n item_name: p.product.name,\n price: price(p.unit_amount, p.currency),\n },\n ],\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mapper.mjs","names":[],"sources":["../../src/stripe/mapper.ts"],"sourcesContent":["import type { Stripe } from 'stripe';\nimport {\n CANCELLATION_FEEDBACKS,\n type CancellationDetails,\n type CancellationFeedback,\n type SubscriptionStatus,\n} from '../subscription/index';\n\nexport function mapTime<T extends number | null>(\n stripeTimestampSeconds: T\n): T extends number ? string : null {\n if (!stripeTimestampSeconds) return null as T extends number ? string : null;\n return new Date(stripeTimestampSeconds * 1000).toISOString() as T extends number ? string : null;\n}\n\nexport type Price = {\n id: string;\n type: Stripe.Price.Type;\n active: boolean;\n billing_scheme: Stripe.Price.BillingScheme;\n currency: Stripe.Price['currency'];\n unit_amount: number | null;\n unit_amount_decimal: string | null;\n recurring: Stripe.Price.Recurring | null;\n};\n\nexport function mapPrice(price: Stripe.Price): Price {\n return {\n id: price.id,\n type: price.type,\n active: price.active,\n billing_scheme: price.billing_scheme,\n currency: price.currency,\n unit_amount: price.unit_amount,\n unit_amount_decimal: price.unit_amount_decimal?.toString() ?? null,\n recurring: price.recurring,\n };\n}\n\nexport interface LineItem {\n id: string;\n currency: string;\n quantity: number | null;\n description: string | null;\n amount_tax: number;\n amount_total: number;\n amount_subtotal: number;\n amount_discount: number;\n price: Price | null;\n}\n\nexport function mapLineItem(item: Stripe.LineItem): LineItem {\n return {\n id: item.price\n ? typeof item.price.product === 'string'\n ? item.price.product\n : item.price.product.id\n : item.id,\n currency: item.currency,\n quantity: item.quantity,\n description: item.description,\n amount_tax: item.amount_tax,\n amount_total: item.amount_total,\n amount_subtotal: item.amount_subtotal,\n amount_discount: item.amount_discount,\n price: item.price ? mapPrice(item.price) : null,\n };\n}\n\n// Re-exported under our own name so consumers need not reach into stripe's namespace.\n// Open-ended since stripe 22.4: a status the API adds later is not a type error.\nexport type PaymentStatus = Stripe.Checkout.Session.PaymentStatus;\n\n// Declared rather than inferred from mapCheckoutSession: an inferred shape is\n// structural, so a consumer's declaration emit has to spell out payment_status\n// through stripe's internal module path — TS2883 in any package that reaches\n// stripe transitively instead of depending on it (see line_items/price too).\nexport interface CheckoutSession {\n id: string;\n url: string | null;\n coupon: string | undefined;\n livemode: boolean;\n expires_at: number;\n payment_status: PaymentStatus;\n currency: string | null;\n amount_total: number | null;\n line_items: LineItem[] | undefined;\n}\n\nexport function mapCheckoutSession(session: Stripe.Checkout.Session): CheckoutSession {\n let coupon: string | undefined = undefined;\n if (Array.isArray(session.discounts) && session.discounts.length !== 0) {\n const discount = session.discounts[0];\n if (discount.coupon && typeof discount.coupon === 'object') {\n coupon = discount.coupon.id;\n } else if (typeof discount.coupon === 'string') {\n coupon = discount.coupon;\n } else {\n coupon = undefined;\n }\n }\n\n return {\n id: session.id,\n url: session.url,\n coupon,\n livemode: session.livemode,\n expires_at: session.expires_at,\n payment_status: session.payment_status,\n currency: session.currency,\n amount_total: session.amount_total,\n line_items: session.line_items?.data.map(mapLineItem),\n };\n}\n\nexport function mapInvoice(i: Stripe.Invoice) {\n return {\n id: i.id,\n number: i.number,\n total: i.total,\n subtotal: i.subtotal,\n amount_due: i.amount_due,\n amount_paid: i.amount_paid,\n amount_remaining: i.amount_remaining,\n currency: i.currency,\n billing_reason: i.billing_reason,\n hosted_invoice_url: i.hosted_invoice_url,\n invoice_pdf: i.invoice_pdf,\n receipt_number: i.receipt_number,\n status: i.status,\n created: i.created,\n period_start: i.period_start,\n period_end: i.period_end,\n };\n}\n\nexport function mapPaymentIntent(intent: Stripe.PaymentIntent) {\n return {\n id: intent.id,\n amount: intent.amount,\n amount_capturable: intent.amount_capturable,\n amount_received: intent.amount_received,\n currency: intent.currency,\n client_secret: intent.client_secret,\n description: intent.description,\n status: intent.status,\n created: intent.created,\n };\n}\n\nexport function mapCharge(charge: Stripe.Charge) {\n return {\n id: charge.id,\n description: charge.description,\n currency: charge.currency,\n amount: charge.amount,\n amount_captured: charge.amount_captured,\n amount_refunded: charge.amount_refunded,\n receipt_email: charge.receipt_email,\n receipt_number: charge.receipt_number,\n receipt_url: charge.receipt_url,\n status: charge.status,\n created: charge.created,\n payment_intent:\n charge.payment_intent && typeof charge.payment_intent === 'object'\n ? mapPaymentIntent(charge.payment_intent)\n : undefined,\n };\n}\n\nexport type ProductPrice = {\n id: string;\n type: Stripe.Price.Type;\n unit_amount: number;\n currency: Stripe.Price['currency'];\n product: {\n id: Stripe.Product['id'];\n name: Stripe.Product['name'];\n description: Stripe.Product['description'];\n livemode: Stripe.Product['livemode'];\n };\n};\n\nexport function mapSubscriptionStatus(status: Stripe.Subscription.Status): SubscriptionStatus {\n switch (status) {\n case 'active':\n return 'ACTIVE';\n case 'canceled':\n return 'CANCELED';\n case 'incomplete':\n return 'INCOMPLETE';\n case 'incomplete_expired':\n return 'INCOMPLETE_EXPIRED';\n case 'past_due':\n return 'PAST_DUE';\n case 'paused':\n return 'PAUSED';\n case 'trialing':\n return 'TRIALING';\n case 'unpaid':\n return 'UNPAID';\n default: {\n console.error(`Invalid stripe status: ${String(status)}`);\n throw new Error(`Invalid stripe status: ${String(status)}`);\n }\n }\n}\n\nexport const ZERO_DECIMAL_CURRENCIES = [\n 'BIF',\n 'CLP',\n 'DJF',\n 'GNF',\n 'JPY',\n 'KMF',\n 'KRW',\n 'MGA',\n 'PYG',\n 'RWF',\n 'UGX',\n 'VND',\n 'VUV',\n 'XAF',\n 'XOF',\n 'XPF',\n];\n\nexport function minorUnits(currency: string) {\n return ZERO_DECIMAL_CURRENCIES.includes(currency.toUpperCase()) ? 1 : 100;\n}\n\nexport function price(value: number, currency: string) {\n return value / minorUnits(currency);\n}\n\nexport interface Item {\n item_id: string;\n item_name: string;\n affiliation?: 'Google Store' | (string & {});\n coupon?: string;\n discount?: number;\n index?: number;\n item_brand?: string;\n item_category?: string;\n item_category2?: string;\n item_category3?: string;\n item_category4?: string;\n item_category5?: string;\n item_list_id?: string;\n item_list_name?: string;\n item_variant?: string;\n location_id?: string;\n price?: number;\n quantity?: number;\n}\n\nexport interface PurchaseProperties {\n currency: string;\n value: number;\n transaction_id: string;\n coupon?: string;\n shipping?: number;\n tax?: number;\n items?: Item[];\n}\n\nexport interface BeginCheckoutProperties {\n currency: string;\n value: number;\n coupon?: string;\n items: Item[];\n}\n\n// Google Ads rejects conversion transaction IDs longer than 64 characters.\n// https://support.google.com/google-ads/answer/6386790\nconst GOOGLE_ADS_TRANSACTION_ID_MAX = 64;\n\n/**\n * GA4 purchase events feed Google Ads conversions, whose transaction IDs are\n * capped at 64 characters — but Stripe checkout session ids exceed that:\n * around 2021 they grew from ~32 chars (`cs_live_` + 24 random chars) to ~66\n * (`cs_live_a` + 57), with no announcement. Stripe treats id length/format as\n * opaque and backwards-compatible, guaranteeing only that ids never exceed\n * 255 chars, so they may grow again at any time.\n *\n * Dropping the fixed `cs_live_`/`cs_test_` prefix brings the id under 64\n * while staying reversible: prepend the prefix (livemode tells which) to\n * reconstruct the full session id for Stripe dashboard lookups. The payment\n * intent id (~27 chars) is not a substitute — it only exists on\n * `mode: 'payment'` sessions (subscription-mode sessions carry it on the\n * invoice instead), and its short length is just as unguaranteed as the\n * session id's was.\n *\n * Must stay deterministic: GA4/Google Ads dedupe purchases by\n * transaction_id, and the same session may be tracked from multiple paths.\n */\nfunction toTransactionId(sessionId: string): string {\n const stripped = sessionId.replace(/^cs_(live|test)_/, '');\n if (stripped.length > GOOGLE_ADS_TRANSACTION_ID_MAX) {\n console.warn(\n `transaction_id still exceeds ${GOOGLE_ADS_TRANSACTION_ID_MAX} chars after stripping ` +\n `the prefix — Stripe may have lengthened session ids again; truncating: ${sessionId}`\n );\n }\n return stripped.slice(0, GOOGLE_ADS_TRANSACTION_ID_MAX);\n}\n\nexport function getPurchaseProperties(session: CheckoutSession): PurchaseProperties {\n let value: number;\n let currency: string;\n if (!session.amount_total || !session.currency) {\n value = session.line_items?.reduce((acc, item) => acc + item.amount_total, 0) ?? 0;\n currency = session.line_items?.[0]?.currency ?? 'usd';\n } else {\n value = session.amount_total;\n currency = session.currency;\n }\n\n return {\n transaction_id: toTransactionId(session.id),\n value: price(value, currency),\n currency: currency.toUpperCase(),\n coupon: session.coupon,\n items: session.line_items?.map((item, index) => ({\n index,\n item_id: item.id,\n item_name: item.description ?? '',\n price: price(item.amount_total, item.currency),\n quantity: item.quantity ?? 1,\n discount: price(item.amount_discount, item.currency),\n })),\n };\n}\n\nexport function getBeginCheckoutProperties(p: ProductPrice): BeginCheckoutProperties {\n return {\n currency: p.currency.toUpperCase(),\n value: price(p.unit_amount, p.currency),\n items: [\n {\n item_id: p.product.id,\n item_name: p.product.name,\n price: price(p.unit_amount, p.currency),\n },\n ],\n };\n}\n\n/**\n * Stripe's `cancellation_details` in the shared shape. The object is present on every\n * subscription with all three fields null, so an active one maps to null rather than an empty\n * record. `reason` says who acted: `cancellation_requested` is the customer (or us on their\n * behalf), the payment reasons are Stripe ending it.\n */\nexport function mapCancellationDetails(\n subscription: Pick<Stripe.Subscription, 'cancellation_details'>\n): CancellationDetails | null {\n const details = subscription.cancellation_details;\n if (!details || (!details.reason && !details.feedback && !details.comment)) return null;\n return {\n initiator:\n details.reason === 'payment_failed' || details.reason === 'payment_disputed'\n ? 'system'\n : 'user',\n reason: details.reason ?? null,\n // Stripe's feedback vocabulary is ours; anything it adds later is reported as \"other\".\n feedback: details.feedback\n ? (CANCELLATION_FEEDBACKS as readonly string[]).includes(details.feedback)\n ? (details.feedback as CancellationFeedback)\n : 'other'\n : null,\n comment: details.comment ?? null,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/stripe/metadata.d.ts
|
|
2
|
-
declare const METADATA_KEYS: {
|
|
2
|
+
export declare const METADATA_KEYS: {
|
|
3
3
|
readonly USER_ID: 'user_id';
|
|
4
4
|
readonly USER_ACCOUNT_TOKEN: 'user_account_token';
|
|
5
5
|
readonly PRODUCT_ID: 'product_id';
|
|
@@ -8,5 +8,4 @@ declare const METADATA_KEYS: {
|
|
|
8
8
|
readonly CREDIT_EXPIRES_IN: 'credit_expires_in';
|
|
9
9
|
};
|
|
10
10
|
//#endregion
|
|
11
|
-
export { METADATA_KEYS };
|
|
12
11
|
//# sourceMappingURL=metadata.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.cts","names":[],"sources":["../../src/stripe/metadata.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"metadata.d.cts","names":[],"sources":["../../src/stripe/metadata.ts"],"mappings":";qBAAa;WACX;WACA;WACA;WACA;WACA;WACA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/stripe/metadata.d.ts
|
|
2
|
-
declare const METADATA_KEYS: {
|
|
2
|
+
export declare const METADATA_KEYS: {
|
|
3
3
|
readonly USER_ID: 'user_id';
|
|
4
4
|
readonly USER_ACCOUNT_TOKEN: 'user_account_token';
|
|
5
5
|
readonly PRODUCT_ID: 'product_id';
|
|
@@ -8,5 +8,4 @@ declare const METADATA_KEYS: {
|
|
|
8
8
|
readonly CREDIT_EXPIRES_IN: 'credit_expires_in';
|
|
9
9
|
};
|
|
10
10
|
//#endregion
|
|
11
|
-
export { METADATA_KEYS };
|
|
12
11
|
//# sourceMappingURL=metadata.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.mts","names":[],"sources":["../../src/stripe/metadata.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"metadata.d.mts","names":[],"sources":["../../src/stripe/metadata.ts"],"mappings":";qBAAa;WACX;WACA;WACA;WACA;WACA;WACA"}
|
|
@@ -17,11 +17,10 @@
|
|
|
17
17
|
* before the first was reconciled — must not clobber each other.
|
|
18
18
|
*/
|
|
19
19
|
/** Record a started checkout to retry confirmation on later. Dedupes by session id. */
|
|
20
|
-
declare function addPendingCheckout(sessionId: string): void;
|
|
20
|
+
export declare function addPendingCheckout(sessionId: string): void;
|
|
21
21
|
/** Fresh session ids awaiting confirmation. Persists the pruned list as a side effect. */
|
|
22
|
-
declare function getPendingCheckouts(): string[];
|
|
22
|
+
export declare function getPendingCheckouts(): string[];
|
|
23
23
|
/** Drop one session once it's confirmed (or known not to belong to this user). */
|
|
24
|
-
declare function removePendingCheckout(sessionId: string): void;
|
|
24
|
+
export declare function removePendingCheckout(sessionId: string): void;
|
|
25
25
|
//#endregion
|
|
26
|
-
export { addPendingCheckout, getPendingCheckouts, removePendingCheckout };
|
|
27
26
|
//# sourceMappingURL=pending-checkout.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending-checkout.d.cts","names":[],"sources":["../../src/stripe/pending-checkout.ts"],"mappings":";;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"pending-checkout.d.cts","names":[],"sources":["../../src/stripe/pending-checkout.ts"],"mappings":";;;;;;;;;;;;;;;;;;;wBAwDgB,mBAAmB;;wBAOnB;;wBAQA,sBAAsB"}
|
|
@@ -17,11 +17,10 @@
|
|
|
17
17
|
* before the first was reconciled — must not clobber each other.
|
|
18
18
|
*/
|
|
19
19
|
/** Record a started checkout to retry confirmation on later. Dedupes by session id. */
|
|
20
|
-
declare function addPendingCheckout(sessionId: string): void;
|
|
20
|
+
export declare function addPendingCheckout(sessionId: string): void;
|
|
21
21
|
/** Fresh session ids awaiting confirmation. Persists the pruned list as a side effect. */
|
|
22
|
-
declare function getPendingCheckouts(): string[];
|
|
22
|
+
export declare function getPendingCheckouts(): string[];
|
|
23
23
|
/** Drop one session once it's confirmed (or known not to belong to this user). */
|
|
24
|
-
declare function removePendingCheckout(sessionId: string): void;
|
|
24
|
+
export declare function removePendingCheckout(sessionId: string): void;
|
|
25
25
|
//#endregion
|
|
26
|
-
export { addPendingCheckout, getPendingCheckouts, removePendingCheckout };
|
|
27
26
|
//# sourceMappingURL=pending-checkout.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending-checkout.d.mts","names":[],"sources":["../../src/stripe/pending-checkout.ts"],"mappings":";;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"pending-checkout.d.mts","names":[],"sources":["../../src/stripe/pending-checkout.ts"],"mappings":";;;;;;;;;;;;;;;;;;;wBAwDgB,mBAAmB;;wBAOnB;;wBAQA,sBAAsB"}
|
package/dist/stripe/schema.cjs
CHANGED
|
@@ -1,23 +1,12 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_subscription_index = require("../subscription/index.cjs");
|
|
2
3
|
let zod_mini = require("zod/mini");
|
|
3
4
|
//#region src/stripe/schema.ts
|
|
5
|
+
/** What our own cancel dialog may send along with a cancellation (see `CancellationDetails`). */
|
|
4
6
|
const cancellationDetailsSchema = (0, zod_mini.object)({
|
|
5
7
|
comment: (0, zod_mini.optional)((0, zod_mini.nullable)((0, zod_mini.string)().check((0, zod_mini.maxLength)(1024)))),
|
|
6
|
-
feedback: (0, zod_mini.optional)((0, zod_mini.nullable)((0, zod_mini.enum)(
|
|
7
|
-
|
|
8
|
-
"low_quality",
|
|
9
|
-
"missing_features",
|
|
10
|
-
"switched_service",
|
|
11
|
-
"too_complex",
|
|
12
|
-
"too_expensive",
|
|
13
|
-
"unused",
|
|
14
|
-
"other"
|
|
15
|
-
]))),
|
|
16
|
-
resubscribeIntent: (0, zod_mini.optional)((0, zod_mini.nullable)((0, zod_mini.enum)([
|
|
17
|
-
"maybe",
|
|
18
|
-
"no",
|
|
19
|
-
"yes"
|
|
20
|
-
])))
|
|
8
|
+
feedback: (0, zod_mini.optional)((0, zod_mini.nullable)((0, zod_mini.enum)(require_subscription_index.CANCELLATION_FEEDBACKS))),
|
|
9
|
+
resubscribeIntent: (0, zod_mini.optional)((0, zod_mini.nullable)((0, zod_mini.enum)(require_subscription_index.RESUBSCRIBE_INTENTS)))
|
|
21
10
|
});
|
|
22
11
|
function createCheckoutSessionSchema(productIds) {
|
|
23
12
|
return (0, zod_mini.object)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.cjs","names":["object","optional","nullable","string","maxLength","_enum","_default","int","gte","url"],"sources":["../../src/stripe/schema.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"schema.cjs","names":["object","optional","nullable","string","maxLength","_enum","CANCELLATION_FEEDBACKS","RESUBSCRIBE_INTENTS","_default","int","gte","url"],"sources":["../../src/stripe/schema.ts"],"sourcesContent":["import {\n _default,\n enum as _enum,\n gte,\n int,\n maxLength,\n nullable,\n object,\n optional,\n string,\n url,\n} from 'zod/mini';\nimport { CANCELLATION_FEEDBACKS, RESUBSCRIBE_INTENTS } from '../subscription/index';\n\n/** What our own cancel dialog may send along with a cancellation (see `CancellationDetails`). */\nexport const cancellationDetailsSchema = object({\n comment: optional(nullable(string().check(maxLength(1024)))),\n feedback: optional(nullable(_enum(CANCELLATION_FEEDBACKS))),\n resubscribeIntent: optional(nullable(_enum(RESUBSCRIBE_INTENTS))),\n});\n\nexport function createCheckoutSessionSchema(productIds: string[]) {\n return object({\n quantity: _default(int().check(gte(1)), 1),\n productId: _enum(productIds),\n cancelUrl: optional(url()),\n successUrl: optional(url()),\n });\n}\n\n// Kept under the stripe entry for callers that imported it from here; the type is platform\n// neutral and lives with the subscription statuses.\nexport type { CancellationDetails } from '../subscription/index';\n\nexport interface CreateCheckoutSessionDTO {\n productId: string;\n cancelUrl?: string;\n successUrl?: `${string}session_id={CHECKOUT_SESSION_ID}${string}`;\n}\n"],"mappings":";;;;;AAeA,MAAa,6BAAA,GAA4BA,SAAAA,OAAAA,CAAO;CAC9C,UAAA,GAASC,SAAAA,SAAAA,EAAAA,GAASC,SAAAA,SAAAA,EAAAA,GAASC,SAAAA,OAAAA,CAAO,CAAC,CAAC,OAAA,GAAMC,SAAAA,UAAAA,CAAU,IAAI,CAAC,CAAC,CAAC;CAC3D,WAAA,GAAUH,SAAAA,SAAAA,EAAAA,GAASC,SAAAA,SAAAA,EAAAA,GAASG,SAAAA,KAAAA,CAAMC,2BAAAA,sBAAsB,CAAC,CAAC;CAC1D,oBAAA,GAAmBL,SAAAA,SAAAA,EAAAA,GAASC,SAAAA,SAAAA,EAAAA,GAASG,SAAAA,KAAAA,CAAME,2BAAAA,mBAAmB,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,4BAA4B,YAAsB;CAChE,QAAA,GAAOP,SAAAA,OAAAA,CAAO;EACZ,WAAA,GAAUQ,SAAAA,SAAAA,EAAAA,GAASC,SAAAA,IAAAA,CAAI,CAAC,CAAC,OAAA,GAAMC,SAAAA,IAAAA,CAAI,CAAC,CAAC,GAAG,CAAC;EACzC,YAAA,GAAWL,SAAAA,KAAAA,CAAM,UAAU;EAC3B,YAAA,GAAWJ,SAAAA,SAAAA,EAAAA,GAASU,SAAAA,IAAAA,CAAI,CAAC;EACzB,aAAA,GAAYV,SAAAA,SAAAA,EAAAA,GAASU,SAAAA,IAAAA,CAAI,CAAC;CAC5B,CAAC;AACH"}
|
package/dist/stripe/schema.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { output } from "zod/mini";
|
|
1
|
+
import { CancellationDetails } from "../subscription/index.cjs";
|
|
3
2
|
//#region src/stripe/schema.d.ts
|
|
4
|
-
|
|
3
|
+
/** What our own cancel dialog may send along with a cancellation (see `CancellationDetails`). */
|
|
4
|
+
export declare const cancellationDetailsSchema: import("zod/mini").ZodMiniObject<{
|
|
5
5
|
comment: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniNullable<import("zod/mini").ZodMiniString<string>>>;
|
|
6
6
|
feedback: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniNullable<import("zod/mini").ZodMiniEnum<{
|
|
7
7
|
customer_service: "customer_service";
|
|
@@ -19,23 +19,19 @@ declare const cancellationDetailsSchema: import("zod/mini").ZodMiniObject<{
|
|
|
19
19
|
yes: "yes";
|
|
20
20
|
}>>>;
|
|
21
21
|
}, import("zod/v4/core").$strip>;
|
|
22
|
-
declare function createCheckoutSessionSchema(productIds: string[]): import("zod/mini").ZodMiniObject<{
|
|
23
|
-
quantity: import("zod/mini").ZodMiniDefault<import("zod/mini").
|
|
22
|
+
export declare function createCheckoutSessionSchema(productIds: string[]): import("zod/mini").ZodMiniObject<{
|
|
23
|
+
quantity: import("zod/mini").ZodMiniDefault<import("zod/mini").ZodMiniInt>;
|
|
24
24
|
productId: import("zod/mini").ZodMiniEnum<{
|
|
25
25
|
[x: string]: string;
|
|
26
26
|
}>;
|
|
27
27
|
cancelUrl: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniURL>;
|
|
28
28
|
successUrl: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniURL>;
|
|
29
29
|
}, import("zod/v4/core").$strip>;
|
|
30
|
-
interface
|
|
31
|
-
feedback?: Stripe.Subscription.CancellationDetails.Feedback | null;
|
|
32
|
-
reason?: Stripe.Subscription.CancellationDetails.Reason | null;
|
|
33
|
-
}
|
|
34
|
-
interface CreateCheckoutSessionDTO {
|
|
30
|
+
export interface CreateCheckoutSessionDTO {
|
|
35
31
|
productId: string;
|
|
36
32
|
cancelUrl?: string;
|
|
37
33
|
successUrl?: `${string}session_id={CHECKOUT_SESSION_ID}${string}`;
|
|
38
34
|
}
|
|
39
35
|
//#endregion
|
|
40
|
-
export { CancellationDetails
|
|
36
|
+
export type { CancellationDetails };
|
|
41
37
|
//# sourceMappingURL=schema.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.cts","names":[],"sources":["../../src/stripe/schema.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"schema.d.cts","names":[],"sources":["../../src/stripe/schema.ts"],"mappings":";;;qBAea,8CAAyB;;;;;;;;;;;;;;;;;yBAIpC;wBAEc,4BAA4B,0CAAoB;;;;;;;yBAO/D;iBAMgB;EACf;EACA;EACA"}
|
package/dist/stripe/schema.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Stripe } from "stripe";
|
|
1
|
+
import { CancellationDetails } from "../subscription/index.mjs";
|
|
3
2
|
//#region src/stripe/schema.d.ts
|
|
4
|
-
|
|
3
|
+
/** What our own cancel dialog may send along with a cancellation (see `CancellationDetails`). */
|
|
4
|
+
export declare const cancellationDetailsSchema: import("zod/mini").ZodMiniObject<{
|
|
5
5
|
comment: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniNullable<import("zod/mini").ZodMiniString<string>>>;
|
|
6
6
|
feedback: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniNullable<import("zod/mini").ZodMiniEnum<{
|
|
7
7
|
customer_service: "customer_service";
|
|
@@ -19,23 +19,19 @@ declare const cancellationDetailsSchema: import("zod/mini").ZodMiniObject<{
|
|
|
19
19
|
yes: "yes";
|
|
20
20
|
}>>>;
|
|
21
21
|
}, import("zod/v4/core").$strip>;
|
|
22
|
-
declare function createCheckoutSessionSchema(productIds: string[]): import("zod/mini").ZodMiniObject<{
|
|
23
|
-
quantity: import("zod/mini").ZodMiniDefault<import("zod/mini").
|
|
22
|
+
export declare function createCheckoutSessionSchema(productIds: string[]): import("zod/mini").ZodMiniObject<{
|
|
23
|
+
quantity: import("zod/mini").ZodMiniDefault<import("zod/mini").ZodMiniInt>;
|
|
24
24
|
productId: import("zod/mini").ZodMiniEnum<{
|
|
25
25
|
[x: string]: string;
|
|
26
26
|
}>;
|
|
27
27
|
cancelUrl: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniURL>;
|
|
28
28
|
successUrl: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniURL>;
|
|
29
29
|
}, import("zod/v4/core").$strip>;
|
|
30
|
-
interface
|
|
31
|
-
feedback?: Stripe.Subscription.CancellationDetails.Feedback | null;
|
|
32
|
-
reason?: Stripe.Subscription.CancellationDetails.Reason | null;
|
|
33
|
-
}
|
|
34
|
-
interface CreateCheckoutSessionDTO {
|
|
30
|
+
export interface CreateCheckoutSessionDTO {
|
|
35
31
|
productId: string;
|
|
36
32
|
cancelUrl?: string;
|
|
37
33
|
successUrl?: `${string}session_id={CHECKOUT_SESSION_ID}${string}`;
|
|
38
34
|
}
|
|
39
35
|
//#endregion
|
|
40
|
-
export { CancellationDetails
|
|
36
|
+
export type { CancellationDetails };
|
|
41
37
|
//# sourceMappingURL=schema.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.mts","names":[],"sources":["../../src/stripe/schema.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"schema.d.mts","names":[],"sources":["../../src/stripe/schema.ts"],"mappings":";;;qBAea,8CAAyB;;;;;;;;;;;;;;;;;yBAIpC;wBAEc,4BAA4B,0CAAoB;;;;;;;yBAO/D;iBAMgB;EACf;EACA;EACA"}
|
package/dist/stripe/schema.mjs
CHANGED
|
@@ -1,22 +1,11 @@
|
|
|
1
|
+
import { CANCELLATION_FEEDBACKS, RESUBSCRIBE_INTENTS } from "../subscription/index.mjs";
|
|
1
2
|
import { _default, enum as enum$1, gte, int, maxLength, nullable, object, optional, string, url } from "zod/mini";
|
|
2
3
|
//#region src/stripe/schema.ts
|
|
4
|
+
/** What our own cancel dialog may send along with a cancellation (see `CancellationDetails`). */
|
|
3
5
|
const cancellationDetailsSchema = object({
|
|
4
6
|
comment: optional(nullable(string().check(maxLength(1024)))),
|
|
5
|
-
feedback: optional(nullable(enum$1(
|
|
6
|
-
|
|
7
|
-
"low_quality",
|
|
8
|
-
"missing_features",
|
|
9
|
-
"switched_service",
|
|
10
|
-
"too_complex",
|
|
11
|
-
"too_expensive",
|
|
12
|
-
"unused",
|
|
13
|
-
"other"
|
|
14
|
-
]))),
|
|
15
|
-
resubscribeIntent: optional(nullable(enum$1([
|
|
16
|
-
"maybe",
|
|
17
|
-
"no",
|
|
18
|
-
"yes"
|
|
19
|
-
])))
|
|
7
|
+
feedback: optional(nullable(enum$1(CANCELLATION_FEEDBACKS))),
|
|
8
|
+
resubscribeIntent: optional(nullable(enum$1(RESUBSCRIBE_INTENTS)))
|
|
20
9
|
});
|
|
21
10
|
function createCheckoutSessionSchema(productIds) {
|
|
22
11
|
return object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","names":["_enum"],"sources":["../../src/stripe/schema.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"schema.mjs","names":["_enum"],"sources":["../../src/stripe/schema.ts"],"sourcesContent":["import {\n _default,\n enum as _enum,\n gte,\n int,\n maxLength,\n nullable,\n object,\n optional,\n string,\n url,\n} from 'zod/mini';\nimport { CANCELLATION_FEEDBACKS, RESUBSCRIBE_INTENTS } from '../subscription/index';\n\n/** What our own cancel dialog may send along with a cancellation (see `CancellationDetails`). */\nexport const cancellationDetailsSchema = object({\n comment: optional(nullable(string().check(maxLength(1024)))),\n feedback: optional(nullable(_enum(CANCELLATION_FEEDBACKS))),\n resubscribeIntent: optional(nullable(_enum(RESUBSCRIBE_INTENTS))),\n});\n\nexport function createCheckoutSessionSchema(productIds: string[]) {\n return object({\n quantity: _default(int().check(gte(1)), 1),\n productId: _enum(productIds),\n cancelUrl: optional(url()),\n successUrl: optional(url()),\n });\n}\n\n// Kept under the stripe entry for callers that imported it from here; the type is platform\n// neutral and lives with the subscription statuses.\nexport type { CancellationDetails } from '../subscription/index';\n\nexport interface CreateCheckoutSessionDTO {\n productId: string;\n cancelUrl?: string;\n successUrl?: `${string}session_id={CHECKOUT_SESSION_ID}${string}`;\n}\n"],"mappings":";;;;AAeA,MAAa,4BAA4B,OAAO;CAC9C,SAAS,SAAS,SAAS,OAAO,CAAC,CAAC,MAAM,UAAU,IAAI,CAAC,CAAC,CAAC;CAC3D,UAAU,SAAS,SAASA,OAAM,sBAAsB,CAAC,CAAC;CAC1D,mBAAmB,SAAS,SAASA,OAAM,mBAAmB,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,4BAA4B,YAAsB;CAChE,OAAO,OAAO;EACZ,UAAU,SAAS,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;EACzC,WAAWA,OAAM,UAAU;EAC3B,WAAW,SAAS,IAAI,CAAC;EACzB,YAAY,SAAS,IAAI,CAAC;CAC5B,CAAC;AACH"}
|