diff --git a/lib/defaults-utils.js b/lib/defaults-utils.js index 1b4950c..077488d 100644 --- a/lib/defaults-utils.js +++ b/lib/defaults-utils.js @@ -12,7 +12,7 @@ import log from './logger'; * @param {any} value The value to be serialized * @param {boolean} serialize [true] Whether to serialize the resulting * XML to string or to return raw HTMLElement instance - * @returns {Node|string} Either string or raw node representation of + * @returns {xmlDomElement|string} Either string or raw node representation of * the given value * @throws {TypeError} If it is not known how to serialize the given value */ @@ -25,17 +25,17 @@ export function toXmlArg (value, serialize = true) { const keyEl = xmlDoc.createElement('key'); const keyTextEl = xmlDoc.createTextNode(subKey); keyEl.appendChild(keyTextEl); - xmlDoc.documentElement.appendChild(keyEl); + /** @type{xmlDomElement} */ (xmlDoc.documentElement).appendChild(keyEl); // @ts-ignore The typecast here is fine const subValueEl = xmlDoc.importNode(toXmlArg(subValue, false), true); - xmlDoc.documentElement.appendChild(subValueEl); + /** @type{xmlDomElement} */ (xmlDoc.documentElement).appendChild(subValueEl); } } else if (_.isArray(value)) { xmlDoc = new DOMParser().parseFromString('', 'text/xml'); for (const subValue of value) { // @ts-ignore The typecast here is fine const subValueEl = xmlDoc.importNode(toXmlArg(subValue, false), true); - xmlDoc.documentElement.appendChild(subValueEl); + /** @type{xmlDomElement} */ (xmlDoc.documentElement).appendChild(subValueEl); } } else if (_.isBoolean(value)) { xmlDoc = new DOMParser().parseFromString(value ? '' : '', 'text/xml'); @@ -46,7 +46,7 @@ export function toXmlArg (value, serialize = true) { } else if (_.isString(value)) { xmlDoc = new DOMParser().parseFromString(``, 'text/xml'); const valueTextEl = xmlDoc.createTextNode(value); - xmlDoc.documentElement.appendChild(valueTextEl); + /** @type{xmlDomElement} */ (xmlDoc.documentElement).appendChild(valueTextEl); } if (!xmlDoc) { @@ -55,8 +55,8 @@ export function toXmlArg (value, serialize = true) { } return serialize - ? new XMLSerializer().serializeToString(xmlDoc.documentElement) - : xmlDoc.documentElement; + ? new XMLSerializer().serializeToString(/** @type{xmlDomElement} */ (xmlDoc.documentElement)) + : /** @type{xmlDomElement} */ (xmlDoc.documentElement); } /** @@ -154,3 +154,7 @@ export class NSUserDefaults { } } } + +/** + * @typedef {import('@xmldom/xmldom').Element} xmlDomElement + */