xinvoice/ts/index.ts

98 lines
2.4 KiB
TypeScript

import * as interfaces from './interfaces.js';
import { XInvoice } from './classes.xinvoice.js';
// Import format-specific encoder/decoder classes
import { FacturXEncoder } from './formats/facturx.encoder.js';
import { FacturXDecoder } from './formats/facturx.decoder.js';
import { XInvoiceEncoder } from './formats/xinvoice.encoder.js';
import { XInvoiceDecoder } from './formats/xinvoice.decoder.js';
import { DecoderFactory } from './formats/decoder.factory.js';
import { BaseDecoder } from './formats/base.decoder.js';
// Import validator classes
import { ValidatorFactory } from './formats/validator.factory.js';
import { BaseValidator } from './formats/base.validator.js';
import { FacturXValidator } from './formats/facturx.validator.js';
import { UBLValidator } from './formats/ubl.validator.js';
// Export specific interfaces for easier use
export type {
IXInvoice,
IParty,
IAddress,
IContact,
IInvoiceItem,
ValidationError,
ValidationResult,
ValidationLevel,
InvoiceFormat,
ExportFormat,
XInvoiceOptions,
IValidator
} from './interfaces.js';
// Export interfaces (legacy support)
export { interfaces };
// Export main class
export { XInvoice };
// Export format classes
export {
// Base classes
BaseDecoder,
DecoderFactory,
// Format-specific encoders
FacturXEncoder,
XInvoiceEncoder,
// Format-specific decoders
FacturXDecoder,
XInvoiceDecoder
};
// Export validator classes
export const Validators = {
ValidatorFactory,
BaseValidator,
FacturXValidator,
UBLValidator
};
// For backward compatibility
export { FacturXEncoder as ZugferdXmlEncoder };
export { FacturXDecoder as ZUGFeRDXmlDecoder };
/**
* Validates an XML string against the appropriate format rules
* @param xml XML content to validate
* @param level Validation level (syntax, semantic, business)
* @returns ValidationResult with the result of validation
*/
export function validateXml(
xml: string,
level: interfaces.ValidationLevel = interfaces.ValidationLevel.SYNTAX
): interfaces.ValidationResult {
try {
const validator = ValidatorFactory.createValidator(xml);
return validator.validate(level);
} catch (error) {
return {
valid: false,
errors: [{
code: 'VAL-ERROR',
message: `Validation error: ${error.message}`
}],
level
};
}
}
/**
* Creates a new XInvoice instance
* @returns A new XInvoice instance
*/
export function createXInvoice(): XInvoice {
return new XInvoice();
}