From 0834ee04f8b55bc49fe29621987cc50d017301bb Mon Sep 17 00:00:00 2001 From: Marin Karamihalev <marin.karamihalev@iopsys.eu> Date: Tue, 23 Feb 2021 13:58:13 +0100 Subject: [PATCH] commands/add: returns arr of strings if multiple paths were added --- README.md | 6 ++++++ package.json | 2 +- public/modules/_commands_instances_.html | 6 +++--- public/modules/_types_.html | 6 +++--- src/commands/add.ts | 5 +++-- src/types.ts | 2 +- 6 files changed, 17 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 41af4ad..1367820 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,12 @@ const usp = await connect(options); await usp.add("Device.NAT.PortMapping."); // => "Device.NAT.PortMapping.3." ``` + - add with multiple responses + + ```javascript + await usp.add("Device.IP.Interface.*.IPv4Address."); // => ['Device.IP.Interface.1.IPv4Address.2.', ... ] + ``` + - add with arguments - adds a new object with provided values ```javascript diff --git a/package.json b/package.json index 87c8a4f..2095da5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "usp-js", - "version": "0.1.7", + "version": "0.1.8", "description": "Helper library for easy usp communication using mqtt over tcp or ws.", "main": "build/src/index.js", "scripts": { diff --git a/public/modules/_commands_instances_.html b/public/modules/_commands_instances_.html index 60a4504..07e71a1 100644 --- a/public/modules/_commands_instances_.html +++ b/public/modules/_commands_instances_.html @@ -109,7 +109,7 @@ <a name="encode" class="tsd-anchor"></a> <h3><span class="tsd-flag ts-flagConst">Const</span> encode</h3> <ul class="tsd-signatures tsd-kind-function tsd-parent-kind-module tsd-is-not-exported"> - <li class="tsd-signature tsd-kind-icon">encode<span class="tsd-signature-symbol">(</span>__namedParameters<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">{ </span>firstLevelOnly<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">; </span>paths<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-symbol">{ </span>lookup<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">"Msg"</span><span class="tsd-signature-symbol">; </span>body<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">object</span><span class="tsd-signature-symbol">; </span>header<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">object</span><span class="tsd-signature-symbol"> }</span></li> + <li class="tsd-signature tsd-kind-icon">encode<span class="tsd-signature-symbol">(</span>__namedParameters<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">{ </span>opts<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">; </span>paths<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-symbol">{ </span>lookup<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">"Msg"</span><span class="tsd-signature-symbol">; </span>body<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">object</span><span class="tsd-signature-symbol">; </span>header<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">object</span><span class="tsd-signature-symbol"> }</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> @@ -121,10 +121,10 @@ <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> - <h5>__namedParameters: <span class="tsd-signature-symbol">{ </span>firstLevelOnly<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">; </span>paths<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol"> }</span></h5> + <h5>__namedParameters: <span class="tsd-signature-symbol">{ </span>opts<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">; </span>paths<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol"> }</span></h5> <ul class="tsd-parameters"> <li class="tsd-parameter"> - <h5>first<wbr>Level<wbr>Only<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span></h5> + <h5>opts<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span></h5> </li> <li class="tsd-parameter"> <h5>paths<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span></h5> diff --git a/public/modules/_types_.html b/public/modules/_types_.html index c0871ab..15c5cca 100644 --- a/public/modules/_types_.html +++ b/public/modules/_types_.html @@ -564,7 +564,7 @@ <section class="tsd-panel tsd-member tsd-kind-type-alias tsd-parent-kind-module"> <a name="instancescommand" class="tsd-anchor"></a> <h3>Instances<wbr>Command</h3> - <div class="tsd-signature tsd-kind-icon">Instances<wbr>Command<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>paths<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>, firstLevelOnly<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">false</span><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-type">Promise</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></div> + <div class="tsd-signature tsd-kind-icon">Instances<wbr>Command<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>paths<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>, opts<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-symbol">{ </span>firstLevelOnly<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">false</span><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><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></div> <aside class="tsd-sources"> <ul> <li>Defined in types.ts:35</li> @@ -575,7 +575,7 @@ <ul class="tsd-parameters"> <li class="tsd-parameter-signature"> <ul class="tsd-signatures tsd-kind-type-literal tsd-parent-kind-type-alias"> - <li class="tsd-signature tsd-kind-icon"><span class="tsd-signature-symbol">(</span>paths<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>, firstLevelOnly<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">false</span><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-type">Promise</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></li> + <li class="tsd-signature tsd-kind-icon"><span class="tsd-signature-symbol">(</span>paths<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>, opts<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-symbol">{ </span>firstLevelOnly<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">false</span><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><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></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> @@ -585,7 +585,7 @@ <h5>paths: <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></h5> </li> <li> - <h5><span class="tsd-flag ts-flagOptional">Optional</span> firstLevelOnly: <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">false</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">true</span></h5> + <h5><span class="tsd-flag ts-flagOptional">Optional</span> opts: <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-symbol">{ </span>firstLevelOnly<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">false</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">true</span><span class="tsd-signature-symbol"> }</span></h5> </li> </ul> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</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></h4> diff --git a/src/commands/add.ts b/src/commands/add.ts index 470e8ad..29c788c 100644 --- a/src/commands/add.ts +++ b/src/commands/add.ts @@ -2,8 +2,9 @@ import { DecodeFn, EncodeFn } from "../types"; import * as util from "./util"; const decode: DecodeFn = (msg) => { - const path: string | undefined = util.search(msg, "instantiatedPath"); - return [path]; + const paths: string[] | undefined = util.searchAll(msg, "instantiatedPath"); + if (paths && paths.length === 1) return [paths[0]] + return [paths]; }; const isObj = (v) => diff --git a/src/types.ts b/src/types.ts index d038828..921b3d3 100644 --- a/src/types.ts +++ b/src/types.ts @@ -17,7 +17,7 @@ export type SetCommand = ( path: string, value: JSValue | JSValue[] | InputRecord ) => Promise<void>; -export type AddCommand = (path: string, value?: InputRecord) => Promise<string>; +export type AddCommand = (path: string, value?: InputRecord) => Promise<string | string[]>; export type DelCommand = ( path: string, allowPartial?: boolean -- GitLab