scoundrel-remote-eval 1.0.18 → 1.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -3
- package/build/client/connections/web-socket/index.d.ts +5 -5
- package/build/client/connections/web-socket/index.js +6 -6
- package/build/client/index.d.ts +124 -71
- package/build/client/index.d.ts.map +1 -1
- package/build/client/index.js +220 -91
- package/build/client/reference-proxy.d.ts +2 -2
- package/build/client/reference-proxy.js +12 -12
- package/build/client/reference.d.ts +38 -19
- package/build/client/reference.d.ts.map +1 -1
- package/build/client/reference.js +41 -23
- package/build/logger.d.ts +10 -9
- package/build/logger.d.ts.map +1 -1
- package/build/logger.js +11 -10
- package/build/python-web-socket-runner.d.ts +4 -4
- package/build/python-web-socket-runner.js +5 -5
- package/build/server/connections/web-socket/client.d.ts +4 -4
- package/build/server/connections/web-socket/client.js +5 -5
- package/build/server/connections/web-socket/index.d.ts +2 -2
- package/build/server/connections/web-socket/index.js +3 -3
- package/build/server/index.d.ts +4 -4
- package/build/server/index.d.ts.map +1 -1
- package/build/server/index.js +5 -5
- package/build/utils/safe-json-stringify.d.ts +2 -3
- package/build/utils/safe-json-stringify.d.ts.map +1 -1
- package/build/utils/safe-json-stringify.js +3 -4
- package/build/utils/single-event-emitter.d.ts +10 -12
- package/build/utils/single-event-emitter.d.ts.map +1 -1
- package/build/utils/single-event-emitter.js +11 -13
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ const client = new Client(clientWebSocket)
|
|
|
25
25
|
|
|
26
26
|
const math = await client.import("math")
|
|
27
27
|
const pi = await math.readAttributeWithReference("pi")
|
|
28
|
-
const cosOfPi = await math.
|
|
28
|
+
const cosOfPi = await math.callMethod("cos", {returnReference: true}, pi)
|
|
29
29
|
const result = await cosOfPi.serialize()
|
|
30
30
|
|
|
31
31
|
expect(result).toEqual(-1)
|
|
@@ -34,6 +34,44 @@ client.close()
|
|
|
34
34
|
pythonWebSocketRunner.close()
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
+
## Client and reference examples
|
|
38
|
+
|
|
39
|
+
Create remote objects, call methods, and fetch attributes:
|
|
40
|
+
|
|
41
|
+
```js
|
|
42
|
+
const arrayRef = await client.newObjectWithReference("Array")
|
|
43
|
+
await arrayRef.callMethod("push", "one", "two")
|
|
44
|
+
const joined = await arrayRef.callMethod("join", ", ")
|
|
45
|
+
expect(joined).toEqual("one, two")
|
|
46
|
+
|
|
47
|
+
const lengthRef = await arrayRef.callMethod("push", {returnReference: true}, "three")
|
|
48
|
+
const length = await lengthRef.serialize()
|
|
49
|
+
expect(length).toEqual(3)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Read attributes directly or as references:
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
const math = await client.import("math")
|
|
56
|
+
const piRef = await math.readAttributeWithReference("pi")
|
|
57
|
+
const pi = await piRef.serialize()
|
|
58
|
+
|
|
59
|
+
const e = await math.readAttribute("E")
|
|
60
|
+
expect([pi, e].every((value) => typeof value === "number")).toEqual(true)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Fetch globally available or registered objects:
|
|
64
|
+
|
|
65
|
+
```js
|
|
66
|
+
client.registerObject("config", {mode: "test"})
|
|
67
|
+
|
|
68
|
+
const configRef = await client.getObject("config")
|
|
69
|
+
const config = await configRef.serialize()
|
|
70
|
+
expect(config).toEqual({mode: "test"})
|
|
71
|
+
|
|
72
|
+
client.unregisterObject("config")
|
|
73
|
+
```
|
|
74
|
+
|
|
37
75
|
## Serialization
|
|
38
76
|
|
|
39
77
|
`Reference#serialize()` only supports JSON-safe values (strings, numbers, booleans, null, plain objects, and arrays). It throws an error if the value contains functions, symbols, bigints, class instances/non-plain objects, circular references, non-finite numbers, or other unsupported types.
|
|
@@ -82,7 +120,13 @@ const client = new Client(clientWebSocket, {enableServerControl: false})
|
|
|
82
120
|
// equivalent to: new Client(clientWebSocket)
|
|
83
121
|
```
|
|
84
122
|
|
|
85
|
-
|
|
123
|
+
You can also enable it after construction:
|
|
124
|
+
|
|
125
|
+
```js
|
|
126
|
+
client.enableServerControl()
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Registered objects and classes are available inside `eval`:
|
|
86
130
|
|
|
87
131
|
```js
|
|
88
132
|
const client = new Client(clientWebSocket, {enableServerControl: true})
|
|
@@ -101,8 +145,28 @@ client.registerClass("TestGreeter", TestGreeter)
|
|
|
101
145
|
client.registerObject("testSettings", {prefix: "Hello"})
|
|
102
146
|
|
|
103
147
|
const serverClient = server.getClients()[0] // from your ScoundrelServer instance
|
|
104
|
-
const greetingRef = await serverClient.
|
|
148
|
+
const greetingRef = await serverClient.eval("(() => { const greeter = new TestGreeter(testSettings.prefix); return greeter.greet('World') })()")
|
|
105
149
|
const greeting = await greetingRef.serialize()
|
|
106
150
|
|
|
107
151
|
expect(greeting).toEqual("Hello World")
|
|
108
152
|
```
|
|
153
|
+
|
|
154
|
+
You can unregister classes or objects to remove them from server-side lookups and `eval` scope:
|
|
155
|
+
|
|
156
|
+
```js
|
|
157
|
+
client.unregisterClass("TestGreeter")
|
|
158
|
+
client.unregisterObject("testSettings")
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
`eval` defaults to returning a reference, but you can request the raw result:
|
|
162
|
+
|
|
163
|
+
```js
|
|
164
|
+
const result = await serverClient.eval({returnResult: true}, "(() => 1 + 1)()")
|
|
165
|
+
expect(result).toEqual(2)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Use `eval` with `returnReference` if you need to be explicit:
|
|
169
|
+
|
|
170
|
+
```js
|
|
171
|
+
const greetingRef = await serverClient.eval({returnReference: true}, "(() => { return 'Hello' })()")
|
|
172
|
+
```
|
|
@@ -9,24 +9,24 @@ export default class WebSocket {
|
|
|
9
9
|
commandsCount: number;
|
|
10
10
|
close(): Promise<void>;
|
|
11
11
|
/**
|
|
12
|
-
* @param {(data: any) => void} callback
|
|
12
|
+
* @param {(data: any) => void} callback Handler for incoming commands
|
|
13
13
|
*/
|
|
14
14
|
onCommand(callback: (data: any) => void): void;
|
|
15
15
|
onCommandCallback: (data: any) => void;
|
|
16
16
|
/**
|
|
17
|
-
* @param {Event} event
|
|
17
|
+
* @param {Event} event WebSocket error event
|
|
18
18
|
*/
|
|
19
19
|
onSocketError: (event: Event) => void;
|
|
20
20
|
/**
|
|
21
|
-
* @param {MessageEvent} event
|
|
21
|
+
* @param {MessageEvent} event WebSocket message event
|
|
22
22
|
*/
|
|
23
23
|
onSocketMessage: (event: MessageEvent) => void;
|
|
24
24
|
/**
|
|
25
|
-
* @param {Event} event
|
|
25
|
+
* @param {Event} event WebSocket open event
|
|
26
26
|
*/
|
|
27
27
|
onSocketOpen: (event: Event) => void;
|
|
28
28
|
/**
|
|
29
|
-
* @param {Record<string, any>} data
|
|
29
|
+
* @param {Record<string, any>} data Payload to send
|
|
30
30
|
*/
|
|
31
31
|
send(data: Record<string, any>): void;
|
|
32
32
|
waitForOpened: () => Promise<any>;
|
|
@@ -9,13 +9,13 @@ export default class WebSocket {
|
|
|
9
9
|
*/
|
|
10
10
|
constructor(ws) {
|
|
11
11
|
/**
|
|
12
|
-
* @param {Event} event
|
|
12
|
+
* @param {Event} event WebSocket error event
|
|
13
13
|
*/
|
|
14
14
|
this.onSocketError = (event) => {
|
|
15
15
|
logger.error(() => ["onSocketError", event]);
|
|
16
16
|
};
|
|
17
17
|
/**
|
|
18
|
-
* @param {MessageEvent} event
|
|
18
|
+
* @param {MessageEvent} event WebSocket message event
|
|
19
19
|
*/
|
|
20
20
|
this.onSocketMessage = (event) => {
|
|
21
21
|
const data = JSON.parse(event.data);
|
|
@@ -26,7 +26,7 @@ export default class WebSocket {
|
|
|
26
26
|
this.onCommandCallback(data);
|
|
27
27
|
};
|
|
28
28
|
/**
|
|
29
|
-
* @param {Event} event
|
|
29
|
+
* @param {Event} event WebSocket open event
|
|
30
30
|
*/
|
|
31
31
|
this.onSocketOpen = (event) => {
|
|
32
32
|
logger.log(() => ["onSocketOpen", event]);
|
|
@@ -51,13 +51,13 @@ export default class WebSocket {
|
|
|
51
51
|
await this.ws.close();
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
|
-
* @param {(data: any) => void} callback
|
|
54
|
+
* @param {(data: any) => void} callback Handler for incoming commands
|
|
55
55
|
*/
|
|
56
56
|
onCommand(callback) {
|
|
57
57
|
this.onCommandCallback = callback;
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
|
-
* @param {Record<string, any>} data
|
|
60
|
+
* @param {Record<string, any>} data Payload to send
|
|
61
61
|
*/
|
|
62
62
|
send(data) {
|
|
63
63
|
const sendData = JSON.stringify(data);
|
|
@@ -66,4 +66,4 @@ export default class WebSocket {
|
|
|
66
66
|
this.ws.send(sendData);
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpZW50L2Nvbm5lY3Rpb25zL3dlYi1zb2NrZXQvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sTUFBTSxNQUFNLG9CQUFvQixDQUFBO0FBRXZDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7QUFFaEQsd0JBQXdCO0FBRXhCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sU0FBUztJQUM1Qjs7O09BR0c7SUFDSCxZQUFZLEVBQUU7UUEyQmQ7O1dBRUc7UUFDSCxrQkFBYSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQzlDLENBQUMsQ0FBQTtRQUVEOztXQUVHO1FBQ0gsb0JBQWUsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBRW5DLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxnREFBZ0QsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBRTFFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFBO1lBQ2hFLENBQUM7WUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUIsQ0FBQyxDQUFBO1FBRUQ7O1dBRUc7UUFDSCxpQkFBWSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQzNDLENBQUMsQ0FBQTtRQWFELGtCQUFhLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDcEQsYUFBYTtZQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBRXpDLGFBQWE7WUFDYixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUMzQyxDQUFDLENBQUMsQ0FBQTtRQXhFQSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUVaLGFBQWE7UUFDYixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7UUFFckQsYUFBYTtRQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUVuRCxhQUFhO1FBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRXpELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFBO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsUUFBUTtRQUNoQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFBO0lBQ25DLENBQUM7SUErQkQ7O09BRUc7SUFDSCxJQUFJLENBQUMsSUFBSTtRQUNQLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBRXZDLGFBQWE7UUFDYixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN4QixDQUFDO0NBU0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi4vLi4vLi4vbG9nZ2VyLmpzXCJcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcihcIlNjb3VuZHJlbCBXZWJTb2NrZXRcIilcblxuLy8gbG9nZ2VyLnNldERlYnVnKHRydWUpXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYlNvY2tldCB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFdlYlNvY2tldCBjb25uZWN0aW9uIGhhbmRsZXJcbiAgICogQHBhcmFtIHtXZWJTb2NrZXR9IHdzIFRoZSBXZWJTb2NrZXQgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKHdzKSB7XG4gICAgdGhpcy53cyA9IHdzXG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy53cy5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgdGhpcy5vblNvY2tldEVycm9yKVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMud3MuYWRkRXZlbnRMaXN0ZW5lcihcIm9wZW5cIiwgdGhpcy5vblNvY2tldE9wZW4pXG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy53cy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLm9uU29ja2V0TWVzc2FnZSlcblxuICAgIHRoaXMuY29tbWFuZHMgPSB7fVxuICAgIHRoaXMuY29tbWFuZHNDb3VudCA9IDBcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMud3MuY2xvc2UoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7KGRhdGE6IGFueSkgPT4gdm9pZH0gY2FsbGJhY2sgSGFuZGxlciBmb3IgaW5jb21pbmcgY29tbWFuZHNcbiAgICovXG4gIG9uQ29tbWFuZChjYWxsYmFjaykge1xuICAgIHRoaXMub25Db21tYW5kQ2FsbGJhY2sgPSBjYWxsYmFja1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IFdlYlNvY2tldCBlcnJvciBldmVudFxuICAgKi9cbiAgb25Tb2NrZXRFcnJvciA9IChldmVudCkgPT4ge1xuICAgIGxvZ2dlci5lcnJvcigoKSA9PiBbXCJvblNvY2tldEVycm9yXCIsIGV2ZW50XSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge01lc3NhZ2VFdmVudH0gZXZlbnQgV2ViU29ja2V0IG1lc3NhZ2UgZXZlbnRcbiAgICovXG4gIG9uU29ja2V0TWVzc2FnZSA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpXG5cbiAgICBsb2dnZXIubG9nKCgpID0+IFtcIkNsaWVudDo6Q29ubmVjdGlvbnM6OldlYlNvY2tldCBvblNvY2tldE1lc3NhZ2VcIiwgZGF0YV0pXG5cbiAgICBpZiAoIXRoaXMub25Db21tYW5kQ2FsbGJhY2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG9uQ29tbWFuZCBjYWxsYmFjayBzZXQsIGlnbm9yaW5nIG1lc3NhZ2VcIilcbiAgICB9XG5cbiAgICB0aGlzLm9uQ29tbWFuZENhbGxiYWNrKGRhdGEpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgV2ViU29ja2V0IG9wZW4gZXZlbnRcbiAgICovXG4gIG9uU29ja2V0T3BlbiA9IChldmVudCkgPT4ge1xuICAgIGxvZ2dlci5sb2coKCkgPT4gW1wib25Tb2NrZXRPcGVuXCIsIGV2ZW50XSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGRhdGEgUGF5bG9hZCB0byBzZW5kXG4gICAqL1xuICBzZW5kKGRhdGEpIHtcbiAgICBjb25zdCBzZW5kRGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpXG4gICAgbG9nZ2VyLmxvZygoKSA9PiBbXCJTZW5kaW5nXCIsIHNlbmREYXRhXSlcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLndzLnNlbmQoc2VuZERhdGEpXG4gIH1cblxuICB3YWl0Rm9yT3BlbmVkID0gKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLndzLmFkZEV2ZW50TGlzdGVuZXIoXCJvcGVuXCIsIHJlc29sdmUpXG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy53cy5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgcmVqZWN0KVxuICB9KVxufVxuIl19
|
package/build/client/index.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {{returnReference?: boolean, returnResult?: boolean}} ReturnOptions
|
|
3
|
+
* @typedef {ReturnOptions & {returnResult?: false}} ReturnReferenceOptions
|
|
4
|
+
* @typedef {ReturnOptions & {returnResult: true, returnReference?: false}} ReturnResultOptions
|
|
5
|
+
*/
|
|
1
6
|
export default class Client {
|
|
2
7
|
/**
|
|
3
8
|
* Creates a new Scoundrel Client
|
|
4
|
-
*
|
|
5
9
|
* @param {any} backend The backend connection (e.g., WebSocket)
|
|
6
|
-
* @param {{enableServerControl?: boolean}} [options]
|
|
10
|
+
* @param {{enableServerControl?: boolean}} [options] Client configuration options
|
|
7
11
|
*/
|
|
8
12
|
constructor(backend: any, options?: {
|
|
9
13
|
enableServerControl?: boolean;
|
|
@@ -30,65 +34,103 @@ export default class Client {
|
|
|
30
34
|
close(): Promise<void>;
|
|
31
35
|
/**
|
|
32
36
|
* Calls a method on a reference and returns the result directly
|
|
33
|
-
*
|
|
34
|
-
* @param {number} referenceId
|
|
35
|
-
* @param {string} methodName
|
|
36
|
-
* @param {...any} args
|
|
37
|
-
* @returns {Promise<any>}
|
|
37
|
+
* @overload
|
|
38
|
+
* @param {number} referenceId Reference identifier
|
|
39
|
+
* @param {string} methodName Method name to invoke
|
|
40
|
+
* @param {...any} args Arguments to pass to the method
|
|
41
|
+
* @returns {Promise<any>} Result from the method call
|
|
38
42
|
*/
|
|
39
43
|
callMethodOnReference(referenceId: number, methodName: string, ...args: any[]): Promise<any>;
|
|
40
44
|
/**
|
|
41
45
|
* Calls a method on a reference and returns a new reference
|
|
42
|
-
*
|
|
43
|
-
* @param {number} referenceId
|
|
44
|
-
* @param {string} methodName
|
|
45
|
-
* @param
|
|
46
|
-
* @
|
|
46
|
+
* @overload
|
|
47
|
+
* @param {number} referenceId Reference identifier
|
|
48
|
+
* @param {string} methodName Method name to invoke
|
|
49
|
+
* @param {ReturnReferenceOptions} options Options for the call
|
|
50
|
+
* @param {...any} args Arguments to pass to the method
|
|
51
|
+
* @returns {Promise<Reference>} Reference to the returned value
|
|
52
|
+
*/
|
|
53
|
+
callMethodOnReference(referenceId: number, methodName: string, options: ReturnReferenceOptions, ...args: any[]): Promise<Reference>;
|
|
54
|
+
/**
|
|
55
|
+
* Calls a method on a reference and returns the result directly
|
|
56
|
+
* @overload
|
|
57
|
+
* @param {number} referenceId Reference identifier
|
|
58
|
+
* @param {string} methodName Method name to invoke
|
|
59
|
+
* @param {ReturnResultOptions} options Options for the call
|
|
60
|
+
* @param {...any} args Arguments to pass to the method
|
|
61
|
+
* @returns {Promise<any>} Result from the method call
|
|
62
|
+
*/
|
|
63
|
+
callMethodOnReference(referenceId: number, methodName: string, options: ReturnResultOptions, ...args: any[]): Promise<any>;
|
|
64
|
+
/**
|
|
65
|
+
* Calls a method on a reference and returns a new reference
|
|
66
|
+
* @param {number} referenceId Reference identifier
|
|
67
|
+
* @param {string} methodName Method name to invoke
|
|
68
|
+
* @param {...any} args Arguments to pass to the method
|
|
69
|
+
* @returns {Promise<Reference>} Reference to the return value
|
|
47
70
|
*/
|
|
48
71
|
callMethodOnReferenceWithReference(referenceId: number, methodName: string, ...args: any[]): Promise<Reference>;
|
|
72
|
+
/**
|
|
73
|
+
* Evaluates a string and returns a reference or result
|
|
74
|
+
* @overload
|
|
75
|
+
* @param {string} evalString Code to evaluate
|
|
76
|
+
* @returns {Promise<Reference>} Reference to the evaluated value
|
|
77
|
+
*/
|
|
78
|
+
eval(evalString: string): Promise<Reference>;
|
|
79
|
+
/**
|
|
80
|
+
* Evaluates a string and returns a reference or result
|
|
81
|
+
* @overload
|
|
82
|
+
* @param {ReturnReferenceOptions} options Eval options
|
|
83
|
+
* @param {string} evalString Code to evaluate
|
|
84
|
+
* @returns {Promise<Reference>} Reference to the evaluated value
|
|
85
|
+
*/
|
|
86
|
+
eval(options: ReturnReferenceOptions, evalString: string): Promise<Reference>;
|
|
87
|
+
/**
|
|
88
|
+
* Evaluates a string and returns a reference or result
|
|
89
|
+
* @overload
|
|
90
|
+
* @param {ReturnResultOptions} options Eval options
|
|
91
|
+
* @param {string} evalString Code to evaluate
|
|
92
|
+
* @returns {Promise<any>} Evaluated result
|
|
93
|
+
*/
|
|
94
|
+
eval(options: ReturnResultOptions, evalString: string): Promise<any>;
|
|
49
95
|
/**
|
|
50
96
|
* Evaluates a string and returns a new reference
|
|
51
|
-
*
|
|
52
|
-
* @
|
|
53
|
-
* @returns {Promise<Reference>}
|
|
97
|
+
* @param {string} evalString Code to evaluate
|
|
98
|
+
* @returns {Promise<Reference>} Reference to the evaluated value
|
|
54
99
|
*/
|
|
55
100
|
evalWithReference(evalString: string): Promise<Reference>;
|
|
56
101
|
/**
|
|
57
102
|
* Imports a module and returns a reference to it
|
|
58
|
-
*
|
|
59
|
-
* @
|
|
60
|
-
* @returns {Promise<Reference>}
|
|
103
|
+
* @param {string} importName Module name to import
|
|
104
|
+
* @returns {Promise<Reference>} Reference to the module
|
|
61
105
|
*/
|
|
62
106
|
import(importName: string): Promise<Reference>;
|
|
63
107
|
/**
|
|
64
108
|
* Gets a registered object by name
|
|
65
|
-
*
|
|
66
|
-
* @
|
|
67
|
-
* @returns {Promise<Reference>}
|
|
109
|
+
* @param {string} objectName Registered object name
|
|
110
|
+
* @returns {Promise<Reference>} Reference to the object
|
|
68
111
|
*/
|
|
69
112
|
getObject(objectName: string): Promise<Reference>;
|
|
70
113
|
/**
|
|
71
114
|
* Spawns a new reference to an object
|
|
72
|
-
*
|
|
73
|
-
* @param
|
|
74
|
-
* @
|
|
75
|
-
* @returns {Promise<Reference>}
|
|
115
|
+
* @param {string} className Class name to construct
|
|
116
|
+
* @param {...any} args Constructor arguments
|
|
117
|
+
* @returns {Promise<Reference>} Reference to the new instance
|
|
76
118
|
*/
|
|
77
119
|
newObjectWithReference(className: string, ...args: any[]): Promise<Reference>;
|
|
78
120
|
/**
|
|
79
121
|
* Checks if the input is a plain object
|
|
80
|
-
* @param {any} input
|
|
81
|
-
* @returns {boolean}
|
|
122
|
+
* @param {any} input Value to inspect
|
|
123
|
+
* @returns {boolean} True when the value is a plain object
|
|
82
124
|
*/
|
|
83
125
|
isPlainObject(input: any): boolean;
|
|
84
126
|
/**
|
|
85
127
|
* Handles an incoming command from the backend
|
|
86
|
-
* @param {object} args
|
|
87
|
-
* @param {string} args.command
|
|
88
|
-
* @param {number} args.command_id
|
|
89
|
-
* @param {any} args.data
|
|
90
|
-
* @param {string} [args.error]
|
|
91
|
-
* @param {string} [args.errorStack]
|
|
128
|
+
* @param {object} args Command payload
|
|
129
|
+
* @param {string} args.command Command name
|
|
130
|
+
* @param {number} args.command_id Command identifier
|
|
131
|
+
* @param {any} args.data Command data
|
|
132
|
+
* @param {string} [args.error] Error message from the backend
|
|
133
|
+
* @param {string} [args.errorStack] Error stack from the backend
|
|
92
134
|
*/
|
|
93
135
|
onCommand: ({ command, command_id: commandID, data, error, errorStack, ...restArgs }: {
|
|
94
136
|
command: string;
|
|
@@ -99,95 +141,106 @@ export default class Client {
|
|
|
99
141
|
}) => void;
|
|
100
142
|
/**
|
|
101
143
|
* Parases an argument for sending to the server
|
|
102
|
-
*
|
|
103
|
-
* @
|
|
104
|
-
* @returns {any}
|
|
144
|
+
* @param {any} arg Argument to serialize for transport
|
|
145
|
+
* @returns {any} Serialized argument payload
|
|
105
146
|
*/
|
|
106
147
|
parseArg(arg: any): any;
|
|
107
148
|
/**
|
|
108
149
|
* Reads an attribute on a reference and returns a new reference
|
|
109
|
-
*
|
|
110
|
-
* @param {
|
|
111
|
-
* @
|
|
112
|
-
* @returns {Promise<Reference>}
|
|
150
|
+
* @param {number} referenceId Reference identifier
|
|
151
|
+
* @param {string} attributeName Attribute name to read
|
|
152
|
+
* @returns {Promise<Reference>} Reference to the attribute value
|
|
113
153
|
*/
|
|
114
154
|
readAttributeOnReferenceWithReference(referenceId: number, attributeName: string): Promise<Reference>;
|
|
115
155
|
/**
|
|
116
156
|
* Reads an attribute on a reference and returns the result directly
|
|
117
|
-
*
|
|
118
|
-
* @param {
|
|
119
|
-
* @
|
|
120
|
-
* @returns {Promise<any>}
|
|
157
|
+
* @param {number} referenceId Reference identifier
|
|
158
|
+
* @param {string} attributeName Attribute name to read
|
|
159
|
+
* @returns {Promise<any>} Attribute value
|
|
121
160
|
*/
|
|
122
161
|
readAttributeOnReference(referenceId: number, attributeName: string): Promise<any>;
|
|
123
162
|
/**
|
|
124
163
|
* Registers a class by name
|
|
125
|
-
*
|
|
126
|
-
* @param {
|
|
127
|
-
* @param {any} classInstance
|
|
164
|
+
* @param {string} className Class name to register
|
|
165
|
+
* @param {any} classInstance Class constructor or instance
|
|
128
166
|
*/
|
|
129
167
|
registerClass(className: string, classInstance: any): void;
|
|
168
|
+
/**
|
|
169
|
+
* Unregisters a class by name
|
|
170
|
+
* @param {string} className Class name to remove
|
|
171
|
+
*/
|
|
172
|
+
unregisterClass(className: string): void;
|
|
130
173
|
/**
|
|
131
174
|
* Gets a registered class by name
|
|
132
|
-
*
|
|
133
|
-
* @
|
|
134
|
-
* @returns {any}
|
|
175
|
+
* @param {string} className Class name to look up
|
|
176
|
+
* @returns {any} Registered class or undefined
|
|
135
177
|
*/
|
|
136
178
|
_getRegisteredClass(className: string): any;
|
|
137
179
|
/**
|
|
138
180
|
* Gets a registered class by name
|
|
139
|
-
*
|
|
140
|
-
* @
|
|
141
|
-
* @returns {any}
|
|
181
|
+
* @param {string} className Class name to look up
|
|
182
|
+
* @returns {any} Registered class or undefined
|
|
142
183
|
*/
|
|
143
184
|
getClass(className: string): any;
|
|
144
185
|
/**
|
|
145
186
|
* Registers an object by name
|
|
146
|
-
*
|
|
147
|
-
* @param {
|
|
148
|
-
* @param {any} objectInstance
|
|
187
|
+
* @param {string} objectName Object name to register
|
|
188
|
+
* @param {any} objectInstance Object instance
|
|
149
189
|
*/
|
|
150
190
|
registerObject(objectName: string, objectInstance: any): void;
|
|
191
|
+
/**
|
|
192
|
+
* Unregisters an object by name
|
|
193
|
+
* @param {string} objectName Object name to remove
|
|
194
|
+
*/
|
|
195
|
+
unregisterObject(objectName: string): void;
|
|
151
196
|
/**
|
|
152
197
|
* Gets a registered object by name
|
|
153
|
-
*
|
|
154
|
-
* @
|
|
155
|
-
* @returns {any}
|
|
198
|
+
* @param {string} objectName Object name to look up
|
|
199
|
+
* @returns {any} Registered object or undefined
|
|
156
200
|
*/
|
|
157
201
|
_getRegisteredObject(objectName: string): any;
|
|
158
202
|
/**
|
|
159
203
|
* Responds to a command from the backend
|
|
160
|
-
* @param {number} commandId
|
|
161
|
-
* @param {any} data
|
|
204
|
+
* @param {number} commandId Command identifier
|
|
205
|
+
* @param {any} data Response payload
|
|
162
206
|
*/
|
|
163
207
|
respondToCommand(commandId: number, data: any): void;
|
|
164
208
|
/**
|
|
165
209
|
* Sends a command to the backend and returns a promise that resolves with the response
|
|
166
|
-
* @param {string} command
|
|
167
|
-
* @param {any} data
|
|
168
|
-
* @returns {Promise<any>}
|
|
210
|
+
* @param {string} command Command name
|
|
211
|
+
* @param {any} data Command payload
|
|
212
|
+
* @returns {Promise<any>} Response from the backend
|
|
169
213
|
*/
|
|
170
214
|
sendCommand(command: string, data: any): Promise<any>;
|
|
171
215
|
/**
|
|
172
216
|
* Sends data to the backend
|
|
173
|
-
* @param {any} data
|
|
217
|
+
* @param {any} data Payload to send
|
|
174
218
|
*/
|
|
175
219
|
send(data: any): void;
|
|
176
220
|
/**
|
|
177
221
|
* Serializes a reference and returns the result directly
|
|
178
|
-
*
|
|
179
|
-
* @
|
|
180
|
-
* @returns {Promise<any>}
|
|
222
|
+
* @param {number} referenceId Reference identifier
|
|
223
|
+
* @returns {Promise<any>} Parsed JSON representation
|
|
181
224
|
*/
|
|
182
225
|
serializeReference(referenceId: number): Promise<any>;
|
|
183
226
|
/**
|
|
184
227
|
* Spawns a new reference to an object
|
|
185
|
-
*
|
|
186
|
-
* @
|
|
187
|
-
* @returns {Reference}
|
|
228
|
+
* @param {string} id Reference identifier
|
|
229
|
+
* @returns {Reference} Reference instance
|
|
188
230
|
*/
|
|
189
231
|
spawnReference(id: string): Reference;
|
|
190
232
|
enableServerControl(): void;
|
|
191
233
|
}
|
|
234
|
+
export type ReturnOptions = {
|
|
235
|
+
returnReference?: boolean;
|
|
236
|
+
returnResult?: boolean;
|
|
237
|
+
};
|
|
238
|
+
export type ReturnReferenceOptions = ReturnOptions & {
|
|
239
|
+
returnResult?: false;
|
|
240
|
+
};
|
|
241
|
+
export type ReturnResultOptions = ReturnOptions & {
|
|
242
|
+
returnResult: true;
|
|
243
|
+
returnReference?: false;
|
|
244
|
+
};
|
|
192
245
|
import Reference from "./reference.js";
|
|
193
246
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.js"],"names":[],"mappings":"AAUA;IACE
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.js"],"names":[],"mappings":"AAUA;;;;GAIG;AACH;IACE;;;;OAIG;IACH,qBAHW,GAAG,YACH;QAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAC,EA2BzC;IAxBC,aAAsB;IAGtB,kCAAkC;IAClC,kBADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACJ;IAC1B,qBAA0B;IAC1B,8BAA8B;IAE9B,kCAAkC;IAClC,UADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACZ;IAElB,kCAAkC;IAClC,UADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACZ;IAElB,wCAAwC;IACxC,YADW,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAChB;IAEpB,kCAAkC;IAClC,SADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACb;IAEjB,qBAAqB;IAErB,sBAAsB;IACtB,sBADW,OAAO,CAC8C;IAGlE;;OAEG;IACH,uBAEC;;;;;;;;;IAIE,mCACQ,MAAM,cACN,MAAM,WACF,GAAG,EAAA,GACL,OAAO,CAAC,GAAG,CAAC,CACxB;;;;;;;;;;IAGE,mCACQ,MAAM,cACN,MAAM,WACN,sBAAsB,WAClB,GAAG,EAAA,GACL,OAAO,CAAC,SAAS,CAAC,CAC9B;;;;;;;;;;IAGE,mCACQ,MAAM,cACN,MAAM,WACN,mBAAmB,WACf,GAAG,EAAA,GACL,OAAO,CAAC,GAAG,CAAC,CACxB;IAiED;;;;;;OAMG;IACH,gDALW,MAAM,cACN,MAAM,WACF,GAAG,EAAA,GACL,OAAO,CAAC,SAAS,CAAC,CAK9B;;;;;;;IAIE,iBACQ,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAC9B;;;;;;;;IAGE,cACQ,sBAAsB,cACtB,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAC9B;;;;;;;;IAGE,cACQ,mBAAmB,cACnB,MAAM,GACJ,OAAO,CAAC,GAAG,CAAC,CACxB;IA6DD;;;;OAIG;IACH,8BAHW,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAK9B;IAED;;;;OAIG;IACH,mBAHW,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAe9B;IAED;;;;OAIG;IACH,sBAHW,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAY9B;IAED;;;;;OAKG;IACH,kCAJW,MAAM,WACF,GAAG,EAAA,GACL,OAAO,CAAC,SAAS,CAAC,CAe9B;IAED;;;;OAIG;IACH,qBAHW,GAAG,GACD,OAAO,CAQnB;IAED;;;;;;;;OAQG;IACH,YAAa,0EANV;QAAqB,OAAO,EAApB,MAAM;QACO,UAAU,EAAvB,MAAM;QACI,IAAI,EAAd,GAAG;QACW,KAAK,GAAnB,MAAM;QACQ,UAAU,GAAxB,MAAM;KAEkE,UAuPlF;IAED;;;;OAIG;IACH,cAHW,GAAG,GACD,GAAG,CAwBf;IAED;;;;;OAKG;IACH,mDAJW,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAW9B;IAED;;;;;OAKG;IACH,sCAJW,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,GAAG,CAAC,CASxB;IAED;;;;OAIG;IACH,yBAHW,MAAM,iBACN,GAAG,QAMb;IAED;;;OAGG;IACH,2BAFW,MAAM,QAMhB;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,GAAG,CAIf;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,GAAG,CAIf;IAED;;;;OAIG;IACH,2BAHW,MAAM,kBACN,GAAG,QAMb;IAED;;;OAGG;IACH,6BAFW,MAAM,QAMhB;IAED;;;;OAIG;IACH,iCAHW,MAAM,GACJ,GAAG,CAIf;IAED;;;;OAIG;IACH,4BAHW,MAAM,QACN,GAAG,QAIb;IAED;;;;;OAKG;IACH,qBAJW,MAAM,QACN,GAAG,GACD,OAAO,CAAC,GAAG,CAAC,CAkBxB;IAED;;;OAGG;IACH,WAFW,GAAG,QAIb;IAED;;;;OAIG;IACH,gCAHW,MAAM,GACJ,OAAO,CAAC,GAAG,CAAC,CAMxB;IAED;;;;OAIG;IACH,mBAHW,MAAM,GACJ,SAAS,CAQrB;IAED,4BAEC;CACF;4BA3vBY;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAC;qCACnD,aAAa,GAAG;IAAC,YAAY,CAAC,EAAE,KAAK,CAAA;CAAC;kCACtC,aAAa,GAAG;IAAC,YAAY,EAAE,IAAI,CAAC;IAAC,eAAe,CAAC,EAAE,KAAK,CAAA;CAAC;sBAVpD,gBAAgB"}
|