From 80712f48da527a1e524e2d04d40ce5734030483e Mon Sep 17 00:00:00 2001 From: Marin Karamihalev <marin.karamihalev@iopsys.eu> Date: Tue, 20 Jun 2023 13:20:13 +0200 Subject: [PATCH] fix for missing notify error --- package.json | 2 +- public/index.html | 1 + public/modules/commands.html | 18 +++++++++--------- public/modules/types.html | 2 +- src/commands/common/notify.ts | 5 +++-- src/commands/index.ts | 26 ++++++++++++++++---------- 6 files changed, 31 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index d559976..a603eb7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "usp-js", - "version": "0.4.1", + "version": "0.4.2", "description": "Helper library for easy usp communication using mqtt over tcp or ws.", "main": "node/index.js", "browser": "web/index.js", diff --git a/public/index.html b/public/index.html index 4d861bb..ef81019 100644 --- a/public/index.html +++ b/public/index.html @@ -64,6 +64,7 @@ <p>Helper library for easy usp communication using mqtt over tcp or ws.</p> <ul> <li><a href="https://iopsys.se/usp-js/index.html">API documentation for usp-js</a></li> + <li><a href="https://dev.iopsys.eu/websdk/usp-js">usp-js repository</a></li> <li><a href="https://usp-data-models.broadband-forum.org/tr-181-2-14-0-usp.html">BBF's USP reference documentation</a></li> </ul> <a href="#installation" id="installation" style="color: inherit; text-decoration: none;"> diff --git a/public/modules/commands.html b/public/modules/commands.html index 13adb9d..008252f 100644 --- a/public/modules/commands.html +++ b/public/modules/commands.html @@ -100,7 +100,7 @@ <li class="tsd-description"> <aside class="tsd-sources"> <ul> - <li>Defined in commands/index.ts:79</li> + <li>Defined in commands/index.ts:91</li> </ul> </aside> <h4 class="tsd-parameters-title">Parameters</h4> @@ -175,7 +175,7 @@ <li class="tsd-description"> <aside class="tsd-sources"> <ul> - <li>Defined in commands/index.ts:107</li> + <li>Defined in commands/index.ts:119</li> </ul> </aside> <h4 class="tsd-parameters-title">Parameters</h4> @@ -207,7 +207,7 @@ <li class="tsd-description"> <aside class="tsd-sources"> <ul> - <li>Defined in commands/index.ts:183</li> + <li>Defined in commands/index.ts:195</li> </ul> </aside> <h4 class="tsd-parameters-title">Parameters</h4> @@ -230,7 +230,7 @@ <li class="tsd-description"> <aside class="tsd-sources"> <ul> - <li>Defined in commands/index.ts:122</li> + <li>Defined in commands/index.ts:134</li> </ul> </aside> <h4 class="tsd-parameters-title">Parameters</h4> @@ -265,7 +265,7 @@ <li class="tsd-description"> <aside class="tsd-sources"> <ul> - <li>Defined in commands/index.ts:146</li> + <li>Defined in commands/index.ts:158</li> </ul> </aside> <h4 class="tsd-parameters-title">Parameters</h4> @@ -347,7 +347,7 @@ <li class="tsd-description"> <aside class="tsd-sources"> <ul> - <li>Defined in commands/index.ts:177</li> + <li>Defined in commands/index.ts:189</li> </ul> </aside> <h4 class="tsd-parameters-title">Parameters</h4> @@ -370,7 +370,7 @@ <li class="tsd-description"> <aside class="tsd-sources"> <ul> - <li>Defined in commands/index.ts:186</li> + <li>Defined in commands/index.ts:198</li> </ul> </aside> <h4 class="tsd-parameters-title">Parameters</h4> @@ -387,7 +387,7 @@ <a name="readmsg" class="tsd-anchor"></a> <h3><span class="tsd-flag ts-flagConst">Const</span> read<wbr>Msg</h3> <ul class="tsd-signatures tsd-kind-function tsd-parent-kind-module"> - <li class="tsd-signature tsd-kind-icon">read<wbr>Msg<span class="tsd-signature-symbol">(</span>proto<span class="tsd-signature-symbol">: </span><a href="types.html#proto" class="tsd-signature-type" data-tsd-kind="Type alias">Proto</a>, data<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">></span></li> + <li class="tsd-signature tsd-kind-icon">read<wbr>Msg<span class="tsd-signature-symbol">(</span>proto<span class="tsd-signature-symbol">: </span><a href="types.html#proto" class="tsd-signature-type" data-tsd-kind="Type alias">Proto</a>, data<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">]</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> @@ -405,7 +405,7 @@ <h5>data: <span class="tsd-signature-type">any</span></h5> </li> </ul> - <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">></span></h4> + <h4 class="tsd-returns-title">Returns <span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">]</span></h4> </li> </ul> </section> diff --git a/public/modules/types.html b/public/modules/types.html index 443430d..ff57670 100644 --- a/public/modules/types.html +++ b/public/modules/types.html @@ -186,7 +186,7 @@ <section class="tsd-panel tsd-member tsd-kind-type-alias tsd-parent-kind-module"> <a name="addcommand" class="tsd-anchor"></a> <h3>Add<wbr>Command</h3> - <div class="tsd-signature tsd-kind-icon">Add<wbr>Command<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>path<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span>, value<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol"> | </span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><a href="types.html#inputrecord" class="tsd-signature-type" data-tsd-kind="Type alias">InputRecord</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-symbol">(</span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol"> | </span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><a href="types.html#inputrecord" class="tsd-signature-type" data-tsd-kind="Type alias">InputRecord</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">undefined</span>, options<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-symbol">{ </span>raw<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">false</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> => </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><a href="types.html#addresponse" class="tsd-signature-type" data-tsd-kind="Type alias">AddResponse</a><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol"> & </span><span class="tsd-signature-symbol">(</span>path<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span>, value<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol"> | </span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><a href="types.html#inputrecord" class="tsd-signature-type" data-tsd-kind="Type alias">InputRecord</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-symbol">(</span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol"> | </span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><a href="types.html#inputrecord" class="tsd-signature-type" data-tsd-kind="Type alias">InputRecord</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">undefined</span>, options<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">{ </span>raw<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">true</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> => </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><a href="types.html#addrawresponse" class="tsd-signature-type" data-tsd-kind="Type alias">AddRawResponse</a><span class="tsd-signature-symbol">></span></div> + <div class="tsd-signature tsd-kind-icon">Add<wbr>Command<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>path<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span>, value<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-symbol">(</span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol"> | </span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><a href="types.html#inputrecord" class="tsd-signature-type" data-tsd-kind="Type alias">InputRecord</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-symbol">(</span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol"> | </span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><a href="types.html#inputrecord" class="tsd-signature-type" data-tsd-kind="Type alias">InputRecord</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span>, options<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-symbol">{ </span>raw<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">false</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> => </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><a href="types.html#addresponse" class="tsd-signature-type" data-tsd-kind="Type alias">AddResponse</a><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol"> & </span><span class="tsd-signature-symbol">(</span>path<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span>, value<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol"> | </span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><a href="types.html#inputrecord" class="tsd-signature-type" data-tsd-kind="Type alias">InputRecord</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-symbol">(</span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol"> | </span><a href="types.html#jsvalue" class="tsd-signature-type" data-tsd-kind="Type alias">JSValue</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><a href="types.html#inputrecord" class="tsd-signature-type" data-tsd-kind="Type alias">InputRecord</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">undefined</span>, options<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">{ </span>raw<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">true</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> => </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><a href="types.html#addrawresponse" class="tsd-signature-type" data-tsd-kind="Type alias">AddRawResponse</a><span class="tsd-signature-symbol">></span></div> <aside class="tsd-sources"> <ul> <li>Defined in types.ts:166</li> diff --git a/src/commands/common/notify.ts b/src/commands/common/notify.ts index cc9b133..bc2cf6a 100644 --- a/src/commands/common/notify.ts +++ b/src/commands/common/notify.ts @@ -13,9 +13,10 @@ const decode: DecodeFn = (msg) => { const relField = Object.keys(parent).find( (k) => k !== "subscriptionId" && k !== "sendResp" ); + const err = util.search(msg, "cmdFailure") return id && relField - ? [parseInfo(relField, msg), id, null] - : [null, id, null]; + ? [parseInfo(relField, msg), id, err] + : [null, id, err]; } return [null]; }; diff --git a/src/commands/index.ts b/src/commands/index.ts index 070bcdd..10b8041 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -59,6 +59,12 @@ export const decodeRecord = (proto: Proto, data: any): Record<string, any> => { return JSON.parse(JSON.stringify(decodedRecord)); }; +const readableError = (err) => + Object.getOwnPropertyNames(err).reduce((acc, key) => { + acc[key] = err[key]; + return acc; + }, {}); + export const readMsg = ( proto: Proto, data: any @@ -68,21 +74,21 @@ export const readMsg = ( "binaryData" in data ? data.binaryData : data ); - const convertedDecodedRecord = JSON.parse(JSON.stringify(decodedRecord)) + const convertedDecodedRecord = JSON.parse(JSON.stringify(decodedRecord)); if ("disconnect" in convertedDecodedRecord) return [{}, convertedDecodedRecord.disconnect, true]; - - try { - const msg = proto.rootMsg.lookupType("usp.Msg"); - const decodedMsg = msg.decode( - decodedRecord.noSessionContext?.payload || + + try { + const msg = proto.rootMsg.lookupType("usp.Msg"); + const decodedMsg = msg.decode( + decodedRecord.noSessionContext?.payload || decodedRecord.sessionContext?.payload[0] - ); - - // forces conversion + ); + + // forces conversion return [JSON.parse(JSON.stringify(decodedMsg)), null, false]; } catch (err) { - return [{}, err, false]; + return [{}, readableError(err), false]; } }; -- GitLab