UNPKG

@nodecfdi/cfdi-cleaner

Version:

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

46 lines (45 loc) 1.93 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const ts_mixer_1 = require("ts-mixer"); const xml_namespace_methods_1 = __importDefault(require("#src/mixins/xml_namespace_methods")); class RenameElementAddPrefix extends (0, ts_mixer_1.Mixin)(xml_namespace_methods_1.default) { clean(document) { const rootElement = document.documentElement; // Remove unused xmlns declarations for (const namespaceNode of this.iterateNonReservedNamespaces(document)) { // Remove xmlns only if (namespaceNode.nodeName === 'xmlns') { this.removeNamespaceNodeAttribute(namespaceNode); } // Remove namespace prefix if (namespaceNode.ownerElement && namespaceNode.ownerElement !== rootElement && this.queryPrefix(namespaceNode.ownerElement) !== '') { this.removeNamespaceNodeAttribute(namespaceNode); } } } queryPrefix(element) { const namespace = element.namespaceURI; /* istanbul ignore if -- For usage always is not null but for default ownerElement is posible null @preserve */ if (namespace === null) { return ''; } const document = element.ownerDocument; for (const namespaceNode of this.iterateNonReservedNamespaces(document)) { if (element !== namespaceNode.ownerElement) { continue; } const prefix = namespaceNode.localName; if (prefix && namespaceNode.nodeValue === namespace) { return prefix; } } /* istanbul ignore next -- Very difficult of test @preserve */ return ''; } } exports.default = RenameElementAddPrefix;