11import 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
810export 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} ;
0 commit comments