declastruct-stripe-sdk
Version:
declarative control of stripe constructs, via declastruct
48 lines • 2.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.castToDeclaredStripeInvoice = void 0;
const uni_time_1 = require("@ehmpathy/uni-time");
const domain_glossary_price_1 = require("domain-glossary-price");
const helpful_errors_1 = require("helpful-errors");
const type_fns_1 = require("type-fns");
const DeclaredStripeInvoice_1 = require("../../domain/objects/DeclaredStripeInvoice");
const castToDeclaredStripeInvoice = (input) => {
return new DeclaredStripeInvoice_1.DeclaredStripeInvoice({
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 }),
status: input.status ??
helpful_errors_1.UnexpectedCodePathError.throw('could not extract status from invoice', {
input,
}),
customerRef: {
id: typeof input.customer === 'string'
? input.customer
: input.customer?.id ??
helpful_errors_1.UnexpectedCodePathError.throw('could not extract customerId from invoice', {
input,
}),
},
chargeId: typeof input.charge === 'string'
? input.charge
: input.charge?.id ?? null,
config: {
autoAdvance: input.auto_advance ??
helpful_errors_1.UnexpectedCodePathError.throw('invoice.auto_advance was not specified', { input }),
collectionMethod: input.collection_method,
},
metadata: (() => {
const obj = input.metadata ? (0, type_fns_1.omit)(input.metadata, ['exid']) : {};
if (Object.keys(obj).length === 0)
return null;
return obj;
})(),
pdfUrl: input.invoice_pdf ?? null,
portalUrl: input.hosted_invoice_url ?? null,
description: input.description ?? null,
totalBillable: new domain_glossary_price_1.Price({ amount: input.total, currency: 'USD' }),
dueDate: input.due_date ? (0, uni_time_1.asUniDate)({ mse: input.due_date * 1000 }) : null,
});
};
exports.castToDeclaredStripeInvoice = castToDeclaredStripeInvoice;
//# sourceMappingURL=castToDeclaredStripeInvoice.js.map