From 9d58a40e343ad405c0c5aafa9eef9e5868452625 Mon Sep 17 00:00:00 2001 From: delangst Date: Wed, 21 Sep 2022 14:51:37 +0200 Subject: [PATCH 1/2] fixing the code that lead to undefined `this` when parsing an array --- src/lib/xml2js.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/xml2js.ts b/src/lib/xml2js.ts index e2eed33..efd2f6d 100644 --- a/src/lib/xml2js.ts +++ b/src/lib/xml2js.ts @@ -81,7 +81,7 @@ export class Xml2js { valueNodes = this.helper.selectNodes(input, './value'); if (!valueNodes.length) return []; - return valueNodes.map(this.convert); + return valueNodes.map(this.convert, this); } /** From b14e2d6ccd971083a42bb3dbe2f9f692b47bcb6f Mon Sep 17 00:00:00 2001 From: delangst Date: Wed, 21 Sep 2022 14:52:07 +0200 Subject: [PATCH 2/2] adding array type to the methods that might return an array --- src/lib/xml2js.ts | 2 +- src/lib/xmlrpc.service.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/xml2js.ts b/src/lib/xml2js.ts index efd2f6d..aea3d17 100644 --- a/src/lib/xml2js.ts +++ b/src/lib/xml2js.ts @@ -114,7 +114,7 @@ export class Xml2js { /** * Convert an xmlrpc value (as an xml tree) to a javascript object. */ - convert(input:Node):Object|null { + convert(input:Node):Object|any[]|null { const elt = this.helper.selectSingleNode(input, './*') if (!elt) return null diff --git a/src/lib/xmlrpc.service.ts b/src/lib/xmlrpc.service.ts index 23d0cab..57e0299 100644 --- a/src/lib/xmlrpc.service.ts +++ b/src/lib/xmlrpc.service.ts @@ -77,10 +77,11 @@ export class XmlrpcService { * - undefined: for empty response * - null: for 'nil' value * - Object: the value as an Object + * - any[]: if the value was an Array * * @throws {@link Error} on fault response (or unexpected server error) */ - parseResponse(response:string):Object|null|undefined { + parseResponse(response:string):Object|any[]|null|undefined { const doc = this.helper.loadXml(response) const rootNode = doc.firstChild if (!rootNode)