UNPKG

declastruct-stripe-sdk

Version:

declarative control of stripe constructs, via declastruct

59 lines 3.14 kB
"use strict"; 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