UNPKG

@nodecfdi/cfdi-cleaner

Version:

Librería para limpiar comprobantes fiscales digitales v3.3 y v4.0

21 lines (20 loc) 1.05 kB
import { Mixin } from 'ts-mixer'; import CfdiXPath from '#src/internal/cfdi_x_path'; import SchemaLocation from '#src/internal/schema_location'; import XmlAttributeMethods from '#src/mixins/xml_attribute_methods'; import XmlNamespaceMethods from '#src/mixins/xml_namespace_methods'; export default class RemoveNonSatSchemaLocations extends Mixin(XmlAttributeMethods, XmlNamespaceMethods) { clean(document) { const xpath = CfdiXPath.createFromDocument(document); const schemaLocations = xpath.querySchemaLocations(); for (const schemaLocation of schemaLocations) { const value = this.cleanSchemaLocationsValue(schemaLocation.value); this.attributeSetValueOrRemoveIfEmpty(schemaLocation, value); } } cleanSchemaLocationsValue(schemaLocationValue) { const schemaLocation = SchemaLocation.createFromValue(schemaLocationValue); schemaLocation.filterUsingNamespace((namespace) => this.isNamespaceRelatedToSat(namespace)); return schemaLocation.asValue(); } }