Skip to content

Commit

Permalink
[iobroker] add user property to state and make val required in setSta…
Browse files Browse the repository at this point in the history
  • Loading branch information
AlCalzone authored Apr 13, 2020
1 parent c7d0c49 commit f13cbb3
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 29 deletions.
62 changes: 33 additions & 29 deletions types/iobroker/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

Expand All @@ -51,6 +54,7 @@ declare global {
/** Optional comment */
c?: string;
}
type SettableState = Partial<Omit<State, "val">> & Pick<State, "val">;

type Session = any; // TODO: implement

Expand Down Expand Up @@ -888,168 +892,168 @@ 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,
): void;
/** 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,
): void;
/** 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,
): void;
/** 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,
): void;
/** 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>>;
Expand Down
5 changes: 5 additions & 0 deletions types/iobroker/iobroker-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down Expand Up @@ -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});

0 comments on commit f13cbb3

Please sign in to comment.