mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-06-28 14:20:12 +00:00
Merge pull request #31855 from AlCalzone/iobroker/message-type
[iobroker] Improve type of message payload and sendTo return type
This commit is contained in:
25
types/iobroker/index.d.ts
vendored
25
types/iobroker/index.d.ts
vendored
@@ -828,10 +828,12 @@ declare global {
|
||||
ca: Array<string | Buffer>;
|
||||
}
|
||||
|
||||
type MessagePayload = string | Record<string, any>;
|
||||
|
||||
/** Callback information for a passed message */
|
||||
interface MessageCallbackInfo {
|
||||
/** The original message payload */
|
||||
message: string | object;
|
||||
message: MessagePayload;
|
||||
/** ID of this callback */
|
||||
id: number;
|
||||
// ???
|
||||
@@ -839,14 +841,13 @@ declare global {
|
||||
/** Timestamp of this message */
|
||||
time: number;
|
||||
}
|
||||
type MessageCallback = (result?: any) => void;
|
||||
|
||||
/** A message being passed between adapter instances */
|
||||
interface Message {
|
||||
/** The command to be executed */
|
||||
command: string;
|
||||
/** The message payload */
|
||||
message: string | object;
|
||||
message: MessagePayload;
|
||||
/** The source of this message */
|
||||
from: string;
|
||||
/** ID of this message */
|
||||
@@ -1038,8 +1039,8 @@ declare global {
|
||||
* @param command (optional) Command name of the target instance. Default: "send"
|
||||
* @param message The message (e.g. params) to send.
|
||||
*/
|
||||
sendTo(instanceName: string, message: string | object, callback?: MessageCallback | MessageCallbackInfo): void;
|
||||
sendTo(instanceName: string, command: string, message: string | object, callback?: MessageCallback | MessageCallbackInfo): void;
|
||||
sendTo(instanceName: string, message: MessagePayload, callback?: MessageCallback | MessageCallbackInfo): void;
|
||||
sendTo(instanceName: string, command: string, message: MessagePayload, callback?: MessageCallback | MessageCallbackInfo): void;
|
||||
/**
|
||||
* Sends a message to a specific instance or all instances of some specific adapter.
|
||||
* @param instanceName The instance to send this message to.
|
||||
@@ -1048,18 +1049,18 @@ declare global {
|
||||
* @param command (optional) Command name of the target instance. Default: "send"
|
||||
* @param message The message (e.g. params) to send.
|
||||
*/
|
||||
sendToAsync(instanceName: string, message: string | object): Promise<any>;
|
||||
sendToAsync(instanceName: string, command: string, message: string | object): Promise<any>;
|
||||
sendToAsync(instanceName: string, message: MessagePayload): Promise<Message | undefined>;
|
||||
sendToAsync(instanceName: string, command: string, message: MessagePayload): Promise<Message | undefined>;
|
||||
/**
|
||||
* Sends a message to a specific host or all hosts.
|
||||
*/
|
||||
sendToHost(hostName: string, message: string | object, callback?: MessageCallback | MessageCallbackInfo): void;
|
||||
sendToHost(hostName: string, command: string, message: string | object, callback?: MessageCallback | MessageCallbackInfo): void;
|
||||
sendToHost(hostName: string, message: MessagePayload, callback?: MessageCallback | MessageCallbackInfo): void;
|
||||
sendToHost(hostName: string, command: string, message: MessagePayload, callback?: MessageCallback | MessageCallbackInfo): void;
|
||||
/**
|
||||
* Sends a message to a specific host or all hosts.
|
||||
*/
|
||||
sendToHostAsync(hostName: string, message: string | object): Promise<any>;
|
||||
sendToHostAsync(hostName: string, command: string, message: string | object): Promise<any>;
|
||||
sendToHostAsync(hostName: string, message: MessagePayload): Promise<Message | undefined>;
|
||||
sendToHostAsync(hostName: string, command: string, message: MessagePayload): Promise<Message | undefined>;
|
||||
|
||||
/** Convert ID to {device: D, channel: C, state: S} */
|
||||
idToDCS(id: string): {
|
||||
@@ -1591,6 +1592,8 @@ declare global {
|
||||
// TODO: Redefine callbacks as subclass of GenericCallback
|
||||
type GenericCallback<T> = (err: string | null, result?: T) => void;
|
||||
|
||||
type MessageCallback = (response?: Message) => void;
|
||||
|
||||
type SetObjectCallback = (err: string | null, obj: { id: string }) => void;
|
||||
type GetObjectCallback = (err: string | null, obj: ioBroker.Object | null | undefined) => void;
|
||||
type GetEnumCallback = (err: string | null, enums: Record<string, Enum>, requestedEnum: string) => void;
|
||||
|
||||
@@ -99,7 +99,8 @@ function messageHandler(msg: ioBroker.Message) {
|
||||
msg.callback.time.toFixed();
|
||||
msg.command.toLowerCase();
|
||||
msg.from.toLowerCase();
|
||||
msg.message.toString();
|
||||
typeof msg.message === "object" && msg.message.anything;
|
||||
typeof msg.message === "string" && msg.message.toLowerCase();
|
||||
}
|
||||
|
||||
function unloadHandler(callback: ioBroker.EmptyCallback) {
|
||||
@@ -198,3 +199,45 @@ switch (adapter.log.level) {
|
||||
default:
|
||||
assertNever(adapter.log.level);
|
||||
}
|
||||
|
||||
adapter.sendTo("foo.0", "command", "message");
|
||||
adapter.sendTo("foo.0", "message");
|
||||
adapter.sendTo("foo.0", "command", {msg: "message"});
|
||||
adapter.sendTo("foo.0", {msg: "message"});
|
||||
|
||||
function handleMessageResponse(response?: ioBroker.Message) {
|
||||
if (!response) return;
|
||||
response._id.toFixed();
|
||||
response.callback.ack.valueOf();
|
||||
response.callback.id.toFixed();
|
||||
response.callback.message.toString();
|
||||
response.callback.time.toFixed();
|
||||
response.command.toLowerCase();
|
||||
response.from.toLowerCase();
|
||||
typeof response.message === "object" && response.message.anything;
|
||||
typeof response.message === "string" && response.message.toLowerCase();
|
||||
}
|
||||
adapter.sendTo("foo.0", "command", "message", handleMessageResponse);
|
||||
adapter.sendTo("foo.0", "message", handleMessageResponse);
|
||||
adapter.sendTo("foo.0", "command", {msg: "message"}, handleMessageResponse);
|
||||
adapter.sendTo("foo.0", {msg: "message"}, handleMessageResponse);
|
||||
|
||||
adapter.sendToAsync("foo.0", "command", "message").then(handleMessageResponse);
|
||||
adapter.sendToAsync("foo.0", "message").then(handleMessageResponse);
|
||||
adapter.sendToAsync("foo.0", "command", {msg: "message"}).then(handleMessageResponse);
|
||||
adapter.sendToAsync("foo.0", {msg: "message"}).then(handleMessageResponse);
|
||||
|
||||
adapter.sendToHost("host-foo", "command", "message");
|
||||
adapter.sendToHost("host-foo", "message");
|
||||
adapter.sendToHost("host-foo", "command", {msg: "message"});
|
||||
adapter.sendToHost("host-foo", {msg: "message"});
|
||||
|
||||
adapter.sendToHost("host-foo", "command", "message", handleMessageResponse);
|
||||
adapter.sendToHost("host-foo", "message", handleMessageResponse);
|
||||
adapter.sendToHost("host-foo", "command", {msg: "message"}, handleMessageResponse);
|
||||
adapter.sendToHost("host-foo", {msg: "message"}, handleMessageResponse);
|
||||
|
||||
adapter.sendToHostAsync("host-foo", "command", "message").then(handleMessageResponse);
|
||||
adapter.sendToHostAsync("host-foo", "message").then(handleMessageResponse);
|
||||
adapter.sendToHostAsync("host-foo", "command", {msg: "message"}).then(handleMessageResponse);
|
||||
adapter.sendToHostAsync("host-foo", {msg: "message"}).then(handleMessageResponse);
|
||||
|
||||
Reference in New Issue
Block a user