Skip to content

Commit 0007106

Browse files
authored
chore(clerk-js,types): Split shared CommerceTotals (#5726)
1 parent 5d78b28 commit 0007106

File tree

6 files changed

+42
-15
lines changed

6 files changed

+42
-15
lines changed

.changeset/nine-pets-learn.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@clerk/clerk-js': patch
3+
'@clerk/types': patch
4+
---
5+
6+
Split `CommerceTotals` to `CommerceCheckoutTotals` and `CommerceInvoiceTotals`.

packages/clerk-js/src/core/resources/CommerceCheckout.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type {
22
__experimental_CommerceCheckoutJSON,
33
__experimental_CommerceCheckoutResource,
4+
__experimental_CommerceCheckoutTotals,
45
__experimental_CommerceSubscriptionPlanPeriod,
5-
__experimental_CommerceTotals,
66
__experimental_ConfirmCheckoutParams,
77
} from '@clerk/types';
88

@@ -24,7 +24,7 @@ export class __experimental_CommerceCheckout extends BaseResource implements __e
2424
planPeriod!: __experimental_CommerceSubscriptionPlanPeriod;
2525
status!: string;
2626
subscription?: __experimental_CommerceSubscription;
27-
totals!: __experimental_CommerceTotals;
27+
totals!: __experimental_CommerceCheckoutTotals;
2828

2929
constructor(data: __experimental_CommerceCheckoutJSON, orgId?: string) {
3030
super();

packages/clerk-js/src/core/resources/CommerceInvoice.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type {
22
__experimental_CommerceInvoiceJSON,
33
__experimental_CommerceInvoiceResource,
44
__experimental_CommerceInvoiceStatus,
5-
__experimental_CommerceTotals,
5+
__experimental_CommerceInvoiceTotals,
66
} from '@clerk/types';
77

88
import { commerceTotalsFromJSON } from '../../utils';
@@ -15,7 +15,7 @@ export class __experimental_CommerceInvoice extends BaseResource implements __ex
1515
paymentDueOn!: number;
1616
paidOn!: number;
1717
status!: __experimental_CommerceInvoiceStatus;
18-
totals!: __experimental_CommerceTotals;
18+
totals!: __experimental_CommerceInvoiceTotals;
1919

2020
constructor(data: __experimental_CommerceInvoiceJSON) {
2121
super();
+18-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import type {
2+
__experimental_CommerceCheckoutTotals,
3+
__experimental_CommerceCheckoutTotalsJSON,
4+
__experimental_CommerceInvoiceTotals,
5+
__experimental_CommerceInvoiceTotalsJSON,
26
__experimental_CommerceMoney,
37
__experimental_CommerceMoneyJSON,
4-
__experimental_CommerceTotals,
5-
__experimental_CommerceTotalsJSON,
68
} from '@clerk/types';
79

810
export const commerceMoneyFromJSON = (data: __experimental_CommerceMoneyJSON): __experimental_CommerceMoney => {
@@ -14,11 +16,22 @@ export const commerceMoneyFromJSON = (data: __experimental_CommerceMoneyJSON): _
1416
};
1517
};
1618

17-
export const commerceTotalsFromJSON = (data: __experimental_CommerceTotalsJSON): __experimental_CommerceTotals => {
18-
return {
19+
export const commerceTotalsFromJSON = <
20+
T extends __experimental_CommerceInvoiceTotalsJSON | __experimental_CommerceCheckoutTotalsJSON,
21+
>(
22+
data: T,
23+
) => {
24+
const totals = {
1925
grandTotal: commerceMoneyFromJSON(data.grand_total),
2026
subtotal: commerceMoneyFromJSON(data.subtotal),
2127
taxTotal: commerceMoneyFromJSON(data.tax_total),
22-
totalDueNow: commerceMoneyFromJSON(data.total_due_now),
2328
};
29+
if ('total_due_now' in data) {
30+
// @ts-ignore
31+
totals['totalDueNow'] = commerceMoneyFromJSON(data.total_due_now);
32+
}
33+
34+
return totals as T extends { total_due_now: __experimental_CommerceMoneyJSON }
35+
? __experimental_CommerceCheckoutTotals
36+
: __experimental_CommerceInvoiceTotals;
2437
};

packages/types/src/commerce.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ export interface __experimental_CommerceInvoiceResource extends ClerkResource {
114114
id: string;
115115
planId: string;
116116
paymentSourceId: string;
117-
totals: __experimental_CommerceTotals;
117+
totals: __experimental_CommerceInvoiceTotals;
118118
paymentDueOn: number;
119119
paidOn: number;
120120
status: __experimental_CommerceInvoiceStatus;
@@ -142,13 +142,17 @@ export interface __experimental_CommerceMoney {
142142
currencySymbol: string;
143143
}
144144

145-
export interface __experimental_CommerceTotals {
145+
export interface __experimental_CommerceCheckoutTotals {
146146
subtotal: __experimental_CommerceMoney;
147147
grandTotal: __experimental_CommerceMoney;
148148
taxTotal: __experimental_CommerceMoney;
149149
totalDueNow: __experimental_CommerceMoney;
150150
}
151151

152+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
153+
export interface __experimental_CommerceInvoiceTotals
154+
extends Omit<__experimental_CommerceCheckoutTotals, 'totalDueNow'> {}
155+
152156
export type __experimental_CreateCheckoutParams = WithOptionalOrgType<{
153157
planId: string;
154158
planPeriod: __experimental_CommerceSubscriptionPlanPeriod;
@@ -167,7 +171,7 @@ export interface __experimental_CommerceCheckoutResource extends ClerkResource {
167171
plan: __experimental_CommercePlanResource;
168172
planPeriod: __experimental_CommerceSubscriptionPlanPeriod;
169173
status: string;
170-
totals: __experimental_CommerceTotals;
174+
totals: __experimental_CommerceCheckoutTotals;
171175
subscription?: __experimental_CommerceSubscriptionResource;
172176
confirm: (params: __experimental_ConfirmCheckoutParams) => Promise<__experimental_CommerceCheckoutResource>;
173177
}

packages/types/src/json.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ export interface __experimental_CommerceInvoiceJSON extends ClerkResourceJSON {
648648
payment_source_id: string;
649649
plan_id: string;
650650
status: __experimental_CommerceInvoiceStatus;
651-
totals: __experimental_CommerceTotalsJSON;
651+
totals: __experimental_CommerceInvoiceTotalsJSON;
652652
}
653653

654654
export interface __experimental_CommerceSubscriptionJSON extends ClerkResourceJSON {
@@ -670,13 +670,17 @@ export interface __experimental_CommerceMoneyJSON {
670670
currency_symbol: string;
671671
}
672672

673-
export interface __experimental_CommerceTotalsJSON {
673+
export interface __experimental_CommerceCheckoutTotalsJSON {
674674
grand_total: __experimental_CommerceMoneyJSON;
675675
subtotal: __experimental_CommerceMoneyJSON;
676676
tax_total: __experimental_CommerceMoneyJSON;
677677
total_due_now: __experimental_CommerceMoneyJSON;
678678
}
679679

680+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
681+
export interface __experimental_CommerceInvoiceTotalsJSON
682+
extends Omit<__experimental_CommerceCheckoutTotalsJSON, 'total_due_now'> {}
683+
680684
export interface __experimental_CommerceCheckoutJSON extends ClerkResourceJSON {
681685
object: 'commerce_checkout';
682686
id: string;
@@ -688,5 +692,5 @@ export interface __experimental_CommerceCheckoutJSON extends ClerkResourceJSON {
688692
plan_period: __experimental_CommerceSubscriptionPlanPeriod;
689693
status: string;
690694
subscription?: __experimental_CommerceSubscriptionJSON;
691-
totals: __experimental_CommerceTotalsJSON;
695+
totals: __experimental_CommerceCheckoutTotalsJSON;
692696
}

0 commit comments

Comments
 (0)