UNPKG

chromiumly

Version:

A lightweight Typescript library that interacts with Gotenberg's different modules to convert a variety of document formats to PDF files.

63 lines 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.templateValidators = void 0; const isObject = (value) => typeof value === 'object' && value !== null; const hasString = (obj, key) => typeof obj[key] === 'string' && obj[key] !== ''; const hasNumber = (obj, key) => typeof obj[key] === 'number'; const isValidUrl = (value) => { if (typeof value !== 'string' || value === '') return false; try { new URL(value); return true; } catch { return false; } }; const validateInvoiceSaas = (data) => { if (!isObject(data)) { return false; } if (!hasString(data, 'invoiceNumber') || !hasString(data, 'createdDate') || !hasString(data, 'dueDate') || !hasString(data, 'currency') || !hasString(data, 'subTotal') || !hasNumber(data, 'taxRate') || !hasString(data, 'taxAmount') || !hasString(data, 'total') || !hasString(data, 'footerNote')) { return false; } if (data.companyLogo !== undefined && !isValidUrl(data.companyLogo)) { return false; } if (!Array.isArray(data.items) || data.items.length === 0) { return false; } if (!isObject(data.sender) || !isObject(data.receiver)) { return false; } const validateParty = (party) => hasString(party, 'name') && hasString(party, 'addressLine1'); if (!validateParty(data.sender) || !validateParty(data.receiver)) { return false; } return data.items.every((item) => { if (!isObject(item)) { return false; } return (hasString(item, 'description') && hasNumber(item, 'qty') && hasString(item, 'unitPrice') && hasString(item, 'amount')); }); }; const validateInvoiceClassic = (data) => validateInvoiceSaas(data) && isValidUrl(data['companyLogo']); exports.templateValidators = { invoice_saas: validateInvoiceSaas, invoice_classic: validateInvoiceClassic }; //# sourceMappingURL=templates.validators.js.map