UNPKG

@fin.cx/einvoice

Version:

A TypeScript module for creating, manipulating, and embedding XML data within PDF files specifically tailored for electronic invoice (einvoice) packages.

46 lines 3.12 kB
import { BaseDecoder } from './base.decoder.js'; import { FacturXDecoder } from './facturx.decoder.js'; import { XInvoiceDecoder } from './xinvoice.decoder.js'; /** * Factory class for creating the appropriate decoder based on XML format. * Analyzes XML content and returns the best decoder for the given format. */ export class DecoderFactory { /** * Creates a decoder for the given XML content */ static createDecoder(xmlString) { if (!xmlString) { throw new Error('No XML string provided for decoder selection'); } const format = DecoderFactory.detectFormat(xmlString); switch (format) { case 'XInvoice/UBL': return new XInvoiceDecoder(xmlString); case 'FacturX/ZUGFeRD': default: // Default to FacturX/ZUGFeRD decoder return new FacturXDecoder(xmlString); } } /** * Detects the XML invoice format using string pattern matching */ static detectFormat(xmlString) { // XInvoice/UBL format if (xmlString.includes('oasis:names:specification:ubl') || xmlString.includes('Invoice xmlns') || xmlString.includes('xrechnung')) { return 'XInvoice/UBL'; } // ZUGFeRD/Factur-X (CII format) if (xmlString.includes('CrossIndustryInvoice') || xmlString.includes('un/cefact') || xmlString.includes('rsm:')) { return 'FacturX/ZUGFeRD'; } // Default to FacturX/ZUGFeRD return 'FacturX/ZUGFeRD'; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2Rlci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvZm9ybWF0cy9kZWNvZGVyLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFeEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFDekI7O09BRUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQWlCO1FBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0RCxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxjQUFjO2dCQUNqQixPQUFPLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXhDLEtBQUssaUJBQWlCLENBQUM7WUFDdkI7Z0JBQ0UscUNBQXFDO2dCQUNyQyxPQUFPLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQWlCO1FBQzNDLHNCQUFzQjtRQUN0QixJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUM7WUFDbkQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDbkMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxnQ0FBZ0M7UUFDaEMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDO1lBQzFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQy9CLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPLGlCQUFpQixDQUFDO1FBQzNCLENBQUM7UUFFRCw2QkFBNkI7UUFDN0IsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0NBQ0YifQ==