@fin.cx/einvoice
Version:
A TypeScript module for creating, manipulating, and embedding XML data within PDF files specifically tailored for electronic invoice (einvoice) packages.
40 lines • 2.94 kB
JavaScript
import { BaseEncoder } from '../base/base.encoder.js';
import { InvoiceFormat } from '../../interfaces/common.js';
// Import specific encoders
import { UBLEncoder } from '../ubl/generic/ubl.encoder.js';
import { XRechnungEncoder } from '../ubl/xrechnung/xrechnung.encoder.js';
import { FacturXEncoder } from '../cii/facturx/facturx.encoder.js';
import { ZUGFeRDEncoder } from '../cii/zugferd/zugferd.encoder.js';
/**
* Factory to create the appropriate encoder based on the target format
*/
export class EncoderFactory {
/**
* Creates an encoder for the specified format
* @param format Target format for encoding
* @returns Appropriate encoder instance
*/
static createEncoder(format) {
switch (format.toLowerCase()) {
case InvoiceFormat.UBL:
case 'ubl':
return new UBLEncoder();
case InvoiceFormat.XRECHNUNG:
case 'xrechnung':
return new XRechnungEncoder();
case InvoiceFormat.CII:
// For now, use Factur-X encoder for generic CII
return new FacturXEncoder();
case InvoiceFormat.ZUGFERD:
case 'zugferd':
// Use dedicated ZUGFeRD encoder
return new ZUGFeRDEncoder();
case InvoiceFormat.FACTURX:
case 'facturx':
return new FacturXEncoder();
default:
throw new Error(`Unsupported invoice format for encoding: ${format}`);
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvZm9ybWF0cy9mYWN0b3JpZXMvZW5jb2Rlci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHM0QsMkJBQTJCO0FBQzNCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRW5FOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFDekI7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBb0M7UUFDOUQsUUFBUSxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUM3QixLQUFLLGFBQWEsQ0FBQyxHQUFHLENBQUM7WUFDdkIsS0FBSyxLQUFLO2dCQUNSLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUUxQixLQUFLLGFBQWEsQ0FBQyxTQUFTLENBQUM7WUFDN0IsS0FBSyxXQUFXO2dCQUNkLE9BQU8sSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBRWhDLEtBQUssYUFBYSxDQUFDLEdBQUc7Z0JBQ3BCLGdEQUFnRDtnQkFDaEQsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBRTlCLEtBQUssYUFBYSxDQUFDLE9BQU8sQ0FBQztZQUMzQixLQUFLLFNBQVM7Z0JBQ1osZ0NBQWdDO2dCQUNoQyxPQUFPLElBQUksY0FBYyxFQUFFLENBQUM7WUFFOUIsS0FBSyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQzNCLEtBQUssU0FBUztnQkFDWixPQUFPLElBQUksY0FBYyxFQUFFLENBQUM7WUFFOUI7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=