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
+ */