declastruct-stripe-sdk
Version:
declarative control of stripe constructs, via declastruct
59 lines • 3.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.castToDeclaredStripeInvoiceItem = void 0;
const helpful_errors_1 = require("helpful-errors");
const type_fns_1 = require("type-fns");
const DeclaredStripeInvoiceItem_1 = require("../../domain/objects/DeclaredStripeInvoiceItem");
const castToDeclaredStripeDiscountCoupon_1 = require("./castToDeclaredStripeDiscountCoupon");
const castToDeclaredStripeInvoiceItem = (input) => {
return new DeclaredStripeInvoiceItem_1.DeclaredStripeInvoiceItem({
id: input.id,
exid: input.metadata?.exid ??
helpful_errors_1.UnexpectedCodePathError.throw('invoice.metadata.exid was not declared. this is not a valid declarative invoice', { input }),
metadata: (() => {
const obj = input.metadata ? (0, type_fns_1.omit)(input.metadata, ['exid']) : {};
if (Object.keys(obj).length === 0)
return null;
return obj;
})(),
description: input.description,
discounts: (() => {
const array = input.discounts?.map((discount) => {
if (typeof discount === 'string')
throw new helpful_errors_1.UnexpectedCodePathError('expected discount to be expanded', {
input,
discount,
});
if (discount.coupon)
return (0, castToDeclaredStripeDiscountCoupon_1.castToDeclaredStripeDiscountCoupon)(discount.coupon);
throw new helpful_errors_1.UnexpectedCodePathError('unsupported discount type', {
input,
discount,
});
}) ?? [];
if (!array.length)
return null;
return array;
})(),
invoiceRef: {
id: !input.invoice
? helpful_errors_1.UnexpectedCodePathError.throw('expected stripe.invoice.item to have invoice assigned', { input })
: typeof input.invoice !== 'string'
? helpful_errors_1.UnexpectedCodePathError.throw('expected stripe.invoice.item.invoice to be a string', { input })
: input.invoice,
},
productRef: {
id: !input.price
? helpful_errors_1.UnexpectedCodePathError.throw('price not defined on stripe.invoice.item', { input })
: typeof input.price === 'string'
? helpful_errors_1.UnexpectedCodePathError.throw('stripe.invoice.item.price was not an object', { input })
: input.price.deleted
? helpful_errors_1.UnexpectedCodePathError.throw('invoice.item.price was deleted')
: typeof input.price.product !== 'string'
? helpful_errors_1.UnexpectedCodePathError.throw('invoice.item.price.product was not a string', { input })
: input.price.product,
},
});
};
exports.castToDeclaredStripeInvoiceItem = castToDeclaredStripeInvoiceItem;
//# sourceMappingURL=castToDeclaredStripeInvoiceItem.js.map