@shopify/shopify-api
Version:
Shopify API Library for Node - accelerate development with support for authentication, graphql proxy, webhooks
72 lines (59 loc) • 1.81 kB
text/typescript
import {ActiveSubscriptionLineItem} from './types';
/**
* Converts string amounts to numbers in Money type objects
*/
export function convertMoneyAmount(data: any) {
if (!data) return data;
convertAppUsagePricingMoney(data);
convertAppRecurringPricingMoney(data);
convertAppDiscountMoney(data);
return data;
}
export function convertAppRecurringPricingMoney(data: any): void {
if (!data) return;
if (data.price?.amount && typeof data.price.amount === 'string') {
data.price.amount = parseFloat(data.price.amount);
}
}
export function convertAppDiscountMoney(data: any): void {
if (!data) return;
if (
data.discount?.priceAfterDiscount?.amount &&
typeof data.discount.priceAfterDiscount.amount === 'string'
) {
data.discount.priceAfterDiscount.amount = parseFloat(
data.discount.priceAfterDiscount.amount,
);
}
if (
data.discount?.value?.amount?.amount &&
typeof data.discount.value.amount.amount === 'string'
) {
data.discount.value.amount.amount = parseFloat(
data.discount.value.amount.amount,
);
}
}
export function convertAppUsagePricingMoney(data: any): void {
if (!data) return;
if (data.balanceUsed?.amount && typeof data.balanceUsed.amount === 'string') {
data.balanceUsed.amount = parseFloat(data.balanceUsed.amount);
}
if (
data.cappedAmount?.amount &&
typeof data.cappedAmount.amount === 'string'
) {
data.cappedAmount.amount = parseFloat(data.cappedAmount.amount);
}
}
/**
* Converts Money amounts in line items
*/
export function convertLineItems(lineItems: ActiveSubscriptionLineItem[]) {
return lineItems.map((item) => {
if (item.plan?.pricingDetails) {
item.plan.pricingDetails = convertMoneyAmount(item.plan.pricingDetails);
}
return item;
});
}