[iobroker] add user property to state and make val required in setState (#43844)

This commit is contained in:
AlCalzone 2020-04-13 20:14:47 +02:00 committed by GitHub
parent c7d0c49dbd
commit f13cbb33c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 29 deletions

View File

@ -28,7 +28,7 @@ declare global {
interface State {
/** The value of the state. */
val: any;
val: string | number | boolean | any[] | Record<string, any> | 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<Omit<State, "val">> & Pick<State, "val">;
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>,
state: string | number | boolean | State | SettableState,
callback?: SetStateCallback,
): void;
setState(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
ack: boolean,
callback?: SetStateCallback,
): void;
setState(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
options: unknown,
callback?: SetStateCallback,
): void;
setState(
id: string,
state: string | number | boolean | State | Partial<State>,
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>,
state: string | number | boolean | State | SettableState,
ack?: boolean,
): Promise<NonNullCallbackReturnTypeOf<SetStateCallback>>;
setStateAsync(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
options?: unknown,
): Promise<NonNullCallbackReturnTypeOf<SetStateCallback>>;
setStateAsync(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
ack: boolean,
options: unknown,
): Promise<NonNullCallbackReturnTypeOf<SetStateCallback>>;
/** Writes a value into the states DB only if it has changed. */
setStateChanged(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
callback?: SetStateChangedCallback,
): void;
setStateChanged(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
ack: boolean,
callback?: SetStateChangedCallback,
): void;
setStateChanged(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
options: unknown,
callback?: SetStateChangedCallback,
): void;
setStateChanged(
id: string,
state: string | number | boolean | State | Partial<State>,
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>,
state: string | number | boolean | State | SettableState,
ack?: boolean,
): Promise<NonNullCallbackReturnTypeOf<SetStateChangedCallback>>;
setStateChangedAsync(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
options?: unknown,
): Promise<NonNullCallbackReturnTypeOf<SetStateChangedCallback>>;
setStateChangedAsync(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
ack: boolean,
options: unknown,
): Promise<NonNullCallbackReturnTypeOf<SetStateChangedCallback>>;
/** Writes a value (which might not belong to this adapter) into the states DB. */
setForeignState(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
callback?: SetStateCallback,
): void;
setForeignState(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
ack: boolean,
callback?: SetStateCallback,
): void;
setForeignState(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
options: unknown,
callback?: SetStateCallback,
): void;
setForeignState(
id: string,
state: string | number | boolean | State | Partial<State>,
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>,
state: string | number | boolean | State | SettableState,
ack?: boolean,
): Promise<NonNullCallbackReturnTypeOf<SetStateCallback>>;
setForeignStateAsync(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
options?: unknown,
): Promise<NonNullCallbackReturnTypeOf<SetStateCallback>>;
setForeignStateAsync(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
ack: boolean,
options: unknown,
): Promise<NonNullCallbackReturnTypeOf<SetStateCallback>>;
/** 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>,
state: string | number | boolean | State | SettableState,
callback?: SetStateChangedCallback,
): void;
setForeignStateChanged(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
ack: boolean,
callback?: SetStateChangedCallback,
): void;
setForeignStateChanged(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
options: unknown,
callback?: SetStateChangedCallback,
): void;
setForeignStateChanged(
id: string,
state: string | number | boolean | State | Partial<State>,
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>,
state: string | number | boolean | State | SettableState,
ack?: boolean,
): Promise<NonNullCallbackReturnTypeOf<SetStateChangedCallback>>;
setForeignStateChangedAsync(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
options?: unknown,
): Promise<NonNullCallbackReturnTypeOf<SetStateChangedCallback>>;
setForeignStateChangedAsync(
id: string,
state: string | number | boolean | State | Partial<State>,
state: string | number | boolean | State | SettableState,
ack: boolean,
options: unknown,
): Promise<NonNullCallbackReturnTypeOf<SetStateChangedCallback>>;

View File

@ -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});