From f13cbb33c68753554d402843c1afa36e16ace4b9 Mon Sep 17 00:00:00 2001 From: AlCalzone Date: Mon, 13 Apr 2020 20:14:47 +0200 Subject: [PATCH] [iobroker] add user property to state and make val required in setState (#43844) --- types/iobroker/index.d.ts | 62 +++++++++++++++++--------------- types/iobroker/iobroker-tests.ts | 5 +++ 2 files changed, 38 insertions(+), 29 deletions(-) diff --git a/types/iobroker/index.d.ts b/types/iobroker/index.d.ts index c664074a0e..175b44aacd 100644 --- a/types/iobroker/index.d.ts +++ b/types/iobroker/index.d.ts @@ -28,7 +28,7 @@ declare global { interface State { /** The value of the state. */ - val: any; + val: string | number | boolean | any[] | Record | null; /** Direction flag: false for desired value and true for actual value. Default: false. */ ack: boolean; @@ -42,6 +42,9 @@ declare global { /** Name of the adapter instance which set the value, e.g. "system.adapter.web.0" */ from: string; + /** The user who set this value */ + user?: string; + /** Optional time in seconds after which the state is reset to null */ expire?: number; @@ -51,6 +54,7 @@ declare global { /** Optional comment */ c?: string; } + type SettableState = Partial> & Pick; type Session = any; // TODO: implement @@ -888,24 +892,24 @@ declare global { // tslint:disable:unified-signatures setState( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, callback?: SetStateCallback, ): void; setState( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack: boolean, callback?: SetStateCallback, ): void; setState( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, options: unknown, callback?: SetStateCallback, ): void; setState( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack: boolean, options: unknown, callback?: SetStateCallback, @@ -913,41 +917,41 @@ declare global { /** Writes a value into the states DB. */ setStateAsync( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack?: boolean, ): Promise>; setStateAsync( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, options?: unknown, ): Promise>; setStateAsync( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack: boolean, options: unknown, ): Promise>; /** Writes a value into the states DB only if it has changed. */ setStateChanged( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, callback?: SetStateChangedCallback, ): void; setStateChanged( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack: boolean, callback?: SetStateChangedCallback, ): void; setStateChanged( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, options: unknown, callback?: SetStateChangedCallback, ): void; setStateChanged( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack: boolean, options: unknown, callback?: SetStateChangedCallback, @@ -955,41 +959,41 @@ declare global { /** Writes a value into the states DB only if it has changed. */ setStateChangedAsync( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack?: boolean, ): Promise>; setStateChangedAsync( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, options?: unknown, ): Promise>; setStateChangedAsync( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack: boolean, options: unknown, ): Promise>; /** Writes a value (which might not belong to this adapter) into the states DB. */ setForeignState( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, callback?: SetStateCallback, ): void; setForeignState( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack: boolean, callback?: SetStateCallback, ): void; setForeignState( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, options: unknown, callback?: SetStateCallback, ): void; setForeignState( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack: boolean, options: unknown, callback?: SetStateCallback, @@ -997,41 +1001,41 @@ declare global { /** Writes a value (which might not belong to this adapter) into the states DB. */ setForeignStateAsync( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack?: boolean, ): Promise>; setForeignStateAsync( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, options?: unknown, ): Promise>; setForeignStateAsync( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack: boolean, options: unknown, ): Promise>; /** Writes a value (which might not belong to this adapter) into the states DB only if it has changed. */ setForeignStateChanged( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, callback?: SetStateChangedCallback, ): void; setForeignStateChanged( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack: boolean, callback?: SetStateChangedCallback, ): void; setForeignStateChanged( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, options: unknown, callback?: SetStateChangedCallback, ): void; setForeignStateChanged( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack: boolean, options: unknown, callback?: SetStateChangedCallback, @@ -1039,17 +1043,17 @@ declare global { /** Writes a value (which might not belong to this adapter) into the states DB only if it has changed. */ setForeignStateChangedAsync( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack?: boolean, ): Promise>; setForeignStateChangedAsync( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, options?: unknown, ): Promise>; setForeignStateChangedAsync( id: string, - state: string | number | boolean | State | Partial, + state: string | number | boolean | State | SettableState, ack: boolean, options: unknown, ): Promise>; diff --git a/types/iobroker/iobroker-tests.ts b/types/iobroker/iobroker-tests.ts index 0d23c18b70..a0aa98a375 100644 --- a/types/iobroker/iobroker-tests.ts +++ b/types/iobroker/iobroker-tests.ts @@ -41,6 +41,7 @@ function stateChangeHandler(id: string, state: ioBroker.State | null | undefined state.from.toLowerCase(); state.lc.toFixed(); state.q && state.q.toFixed(); + state.user && state.user.toLowerCase(); state.ts.toFixed(); state.val; } @@ -363,3 +364,7 @@ function repro3() { list; // $ExpectType StateObject[] }); } + +// Repro from https://github.com/ioBroker/ioBroker.js-controller/issues/782 +// $ExpectError +adapter.setState("id", {ack: false});