98 lines
2.4 KiB
TypeScript
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();
|
|
} |