1
1
import type {
2
+ __experimental_CommerceCheckoutTotals ,
3
+ __experimental_CommerceCheckoutTotalsJSON ,
4
+ __experimental_CommerceInvoiceTotals ,
5
+ __experimental_CommerceInvoiceTotalsJSON ,
2
6
__experimental_CommerceMoney ,
3
7
__experimental_CommerceMoneyJSON ,
4
- __experimental_CommerceTotals ,
5
- __experimental_CommerceTotalsJSON ,
6
8
} from '@clerk/types' ;
7
9
8
10
export const commerceMoneyFromJSON = ( data : __experimental_CommerceMoneyJSON ) : __experimental_CommerceMoney => {
@@ -14,11 +16,22 @@ export const commerceMoneyFromJSON = (data: __experimental_CommerceMoneyJSON): _
14
16
} ;
15
17
} ;
16
18
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 = {
19
25
grandTotal : commerceMoneyFromJSON ( data . grand_total ) ,
20
26
subtotal : commerceMoneyFromJSON ( data . subtotal ) ,
21
27
taxTotal : commerceMoneyFromJSON ( data . tax_total ) ,
22
- totalDueNow : commerceMoneyFromJSON ( data . total_due_now ) ,
23
28
} ;
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 ;
24
37
} ;
0 commit comments