scoundrel-remote-eval 1.0.27 → 1.0.29
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 +14 -1
- package/build/client/connections/web-socket/index.d.ts.map +1 -1
- package/build/client/connections/web-socket/index.js +4 -3
- package/build/client/index.d.ts +50 -3
- package/build/client/index.d.ts.map +1 -1
- package/build/client/index.js +201 -7
- package/build/server/connections/web-socket/client.d.ts.map +1 -1
- package/build/server/connections/web-socket/client.js +4 -3
- package/build/utils/safe-json-stringify.d.ts.map +1 -1
- package/build/utils/safe-json-stringify.js +3 -44
- package/build/utils/scoundrel-json.d.ts +24 -0
- package/build/utils/scoundrel-json.d.ts.map +1 -0
- package/build/utils/scoundrel-json.js +168 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -96,9 +96,22 @@ const config = await configRef.serialize()
|
|
|
96
96
|
const configResult = await client.getObjectResult("config")
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
+
## Callback arguments
|
|
100
|
+
|
|
101
|
+
When you pass a function as an argument, the server can call it and any arguments passed to that callback are delivered as references. This makes it safe to access complex objects from the callback.
|
|
102
|
+
|
|
103
|
+
```js
|
|
104
|
+
const targetRef = await client.getObjectReference("eventTarget")
|
|
105
|
+
|
|
106
|
+
await targetRef.callMethodResult("addEventListener", "onTestEvent", async (eventRef) => {
|
|
107
|
+
const event = await eventRef.serialize()
|
|
108
|
+
console.log("Event payload:", event)
|
|
109
|
+
})
|
|
110
|
+
```
|
|
111
|
+
|
|
99
112
|
## Serialization
|
|
100
113
|
|
|
101
|
-
`Reference#serialize()`
|
|
114
|
+
`Reference#serialize()` supports JSON-safe values plus Scoundrel JSON types. Dates and regex values are encoded as objects with a `__scoundrel_type__` key and a `value` string, and you can register additional types. It throws an error if the value contains functions, symbols, class instances without a registered handler, circular references, non-finite numbers, or other unsupported types.
|
|
102
115
|
|
|
103
116
|
## Stack trace sanitization
|
|
104
117
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/connections/web-socket/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/connections/web-socket/index.js"],"names":[],"mappings":"AASA;IACE;;;OAGG;IACH,gBAFW,SAAS,EAgBnB;IAbC,cAAY;IAWZ,aAAkB;IAClB,sBAAsB;IAGxB,uBAEC;IAED;;OAEG;IACH,oBAFW,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,QAI7B;IADC,0BAHgB,GAAG,KAAK,IAAI,CAGK;IAGnC;;OAEG;IACH,gBAAiB,OAFN,KAEW,UAErB;IAED;;OAEG;IACH,kBAAmB,OAFR,YAEa,UAUvB;IAED;;OAEG;IACH,eAAgB,OAFL,KAEU,UAEpB;IAED;;OAEG;IACH,WAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAQ7B;IAED,kCAME;CACH"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
import Logger from "../../../logger.js";
|
|
3
|
+
import { parseScoundrelJSON, serializeScoundrelJSON } from "../../../utils/scoundrel-json.js";
|
|
3
4
|
const logger = new Logger("Scoundrel WebSocket");
|
|
4
5
|
// logger.setDebug(true)
|
|
5
6
|
export default class WebSocket {
|
|
@@ -18,7 +19,7 @@ export default class WebSocket {
|
|
|
18
19
|
* @param {MessageEvent} event WebSocket message event
|
|
19
20
|
*/
|
|
20
21
|
this.onSocketMessage = (event) => {
|
|
21
|
-
const data =
|
|
22
|
+
const data = parseScoundrelJSON(event.data);
|
|
22
23
|
logger.log(() => ["Client::Connections::WebSocket onSocketMessage", data]);
|
|
23
24
|
if (!this.onCommandCallback) {
|
|
24
25
|
throw new Error("No onCommand callback set, ignoring message");
|
|
@@ -60,10 +61,10 @@ export default class WebSocket {
|
|
|
60
61
|
* @param {Record<string, any>} data Payload to send
|
|
61
62
|
*/
|
|
62
63
|
send(data) {
|
|
63
|
-
const sendData =
|
|
64
|
+
const sendData = serializeScoundrelJSON(data);
|
|
64
65
|
logger.log(() => ["Sending", sendData]);
|
|
65
66
|
// @ts-ignore
|
|
66
67
|
this.ws.send(sendData);
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpZW50L2Nvbm5lY3Rpb25zL3dlYi1zb2NrZXQvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sTUFBTSxNQUFNLG9CQUFvQixDQUFBO0FBQ3ZDLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFBO0FBRTNGLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7QUFFaEQsd0JBQXdCO0FBRXhCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sU0FBUztJQUM1Qjs7O09BR0c7SUFDSCxZQUFZLEVBQUU7UUEyQmQ7O1dBRUc7UUFDSCxrQkFBYSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQzlDLENBQUMsQ0FBQTtRQUVEOztXQUVHO1FBQ0gsb0JBQWUsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFCLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUUzQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsZ0RBQWdELEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUUxRSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQTtZQUNoRSxDQUFDO1lBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLENBQUMsQ0FBQTtRQUVEOztXQUVHO1FBQ0gsaUJBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUMzQyxDQUFDLENBQUE7UUFhRCxrQkFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3BELGFBQWE7WUFDYixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUV6QyxhQUFhO1lBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDM0MsQ0FBQyxDQUFDLENBQUE7UUF4RUEsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUE7UUFFWixhQUFhO1FBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRXJELGFBQWE7UUFDYixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7UUFFbkQsYUFBYTtRQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUV6RCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQTtJQUN4QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLFFBQVE7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQTtJQUNuQyxDQUFDO0lBK0JEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLElBQUk7UUFDUCxNQUFNLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFFdkMsYUFBYTtRQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3hCLENBQUM7Q0FTRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuLi8uLi8uLi9sb2dnZXIuanNcIlxuaW1wb3J0IHtwYXJzZVNjb3VuZHJlbEpTT04sIHNlcmlhbGl6ZVNjb3VuZHJlbEpTT059IGZyb20gXCIuLi8uLi8uLi91dGlscy9zY291bmRyZWwtanNvbi5qc1wiXG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoXCJTY291bmRyZWwgV2ViU29ja2V0XCIpXG5cbi8vIGxvZ2dlci5zZXREZWJ1Zyh0cnVlKVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXZWJTb2NrZXQge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBXZWJTb2NrZXQgY29ubmVjdGlvbiBoYW5kbGVyXG4gICAqIEBwYXJhbSB7V2ViU29ja2V0fSB3cyBUaGUgV2ViU29ja2V0IGluc3RhbmNlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih3cykge1xuICAgIHRoaXMud3MgPSB3c1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMud3MuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHRoaXMub25Tb2NrZXRFcnJvcilcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLndzLmFkZEV2ZW50TGlzdGVuZXIoXCJvcGVuXCIsIHRoaXMub25Tb2NrZXRPcGVuKVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMud3MuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5vblNvY2tldE1lc3NhZ2UpXG5cbiAgICB0aGlzLmNvbW1hbmRzID0ge31cbiAgICB0aGlzLmNvbW1hbmRzQ291bnQgPSAwXG4gIH1cblxuICBhc3luYyBjbG9zZSgpIHtcbiAgICBhd2FpdCB0aGlzLndzLmNsb3NlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyhkYXRhOiBhbnkpID0+IHZvaWR9IGNhbGxiYWNrIEhhbmRsZXIgZm9yIGluY29taW5nIGNvbW1hbmRzXG4gICAqL1xuICBvbkNvbW1hbmQoY2FsbGJhY2spIHtcbiAgICB0aGlzLm9uQ29tbWFuZENhbGxiYWNrID0gY2FsbGJhY2tcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCBXZWJTb2NrZXQgZXJyb3IgZXZlbnRcbiAgICovXG4gIG9uU29ja2V0RXJyb3IgPSAoZXZlbnQpID0+IHtcbiAgICBsb2dnZXIuZXJyb3IoKCkgPT4gW1wib25Tb2NrZXRFcnJvclwiLCBldmVudF0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtNZXNzYWdlRXZlbnR9IGV2ZW50IFdlYlNvY2tldCBtZXNzYWdlIGV2ZW50XG4gICAqL1xuICBvblNvY2tldE1lc3NhZ2UgPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCBkYXRhID0gcGFyc2VTY291bmRyZWxKU09OKGV2ZW50LmRhdGEpXG5cbiAgICBsb2dnZXIubG9nKCgpID0+IFtcIkNsaWVudDo6Q29ubmVjdGlvbnM6OldlYlNvY2tldCBvblNvY2tldE1lc3NhZ2VcIiwgZGF0YV0pXG5cbiAgICBpZiAoIXRoaXMub25Db21tYW5kQ2FsbGJhY2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG9uQ29tbWFuZCBjYWxsYmFjayBzZXQsIGlnbm9yaW5nIG1lc3NhZ2VcIilcbiAgICB9XG5cbiAgICB0aGlzLm9uQ29tbWFuZENhbGxiYWNrKGRhdGEpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgV2ViU29ja2V0IG9wZW4gZXZlbnRcbiAgICovXG4gIG9uU29ja2V0T3BlbiA9IChldmVudCkgPT4ge1xuICAgIGxvZ2dlci5sb2coKCkgPT4gW1wib25Tb2NrZXRPcGVuXCIsIGV2ZW50XSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGRhdGEgUGF5bG9hZCB0byBzZW5kXG4gICAqL1xuICBzZW5kKGRhdGEpIHtcbiAgICBjb25zdCBzZW5kRGF0YSA9IHNlcmlhbGl6ZVNjb3VuZHJlbEpTT04oZGF0YSlcbiAgICBsb2dnZXIubG9nKCgpID0+IFtcIlNlbmRpbmdcIiwgc2VuZERhdGFdKVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMud3Muc2VuZChzZW5kRGF0YSlcbiAgfVxuXG4gIHdhaXRGb3JPcGVuZWQgPSAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMud3MuYWRkRXZlbnRMaXN0ZW5lcihcIm9wZW5cIiwgcmVzb2x2ZSlcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLndzLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZWplY3QpXG4gIH0pXG59XG4iXX0=
|
package/build/client/index.d.ts
CHANGED
|
@@ -22,12 +22,15 @@ export default class Client {
|
|
|
22
22
|
_classes: Record<string, any>;
|
|
23
23
|
/** @type {Record<string, any>} */
|
|
24
24
|
_objects: Record<string, any>;
|
|
25
|
-
/** @type {Record<string, Reference
|
|
26
|
-
references: Record<string, Reference
|
|
25
|
+
/** @type {Record<string, Reference | WeakRef<Reference>>} */
|
|
26
|
+
references: Record<string, Reference | WeakRef<Reference>>;
|
|
27
27
|
/** @type {Record<number, any>} */
|
|
28
28
|
objects: Record<number, any>;
|
|
29
29
|
objectsCount: number;
|
|
30
30
|
instanceId: any;
|
|
31
|
+
supportsWeakReferences: boolean;
|
|
32
|
+
referenceReleaseRegistry: FinalizationRegistry<any>;
|
|
33
|
+
pendingReferenceReleases: Set<any>;
|
|
31
34
|
/** @type {boolean} */
|
|
32
35
|
serverControlEnabled: boolean;
|
|
33
36
|
/**
|
|
@@ -63,6 +66,13 @@ export default class Client {
|
|
|
63
66
|
* @returns {Promise<any>} Result from the method call
|
|
64
67
|
*/
|
|
65
68
|
callMethodOnReference(referenceId: number, methodName: string, options: ReturnResultOptions, ...args: any[]): Promise<any>;
|
|
69
|
+
/**
|
|
70
|
+
* Calls a function reference and returns the result directly
|
|
71
|
+
* @param {number} referenceId Reference identifier
|
|
72
|
+
* @param {...any} args Arguments to pass to the function
|
|
73
|
+
* @returns {Promise<any>} Result from the function call
|
|
74
|
+
*/
|
|
75
|
+
callFunctionOnReference(referenceId: number, ...args: any[]): Promise<any>;
|
|
66
76
|
/**
|
|
67
77
|
* Calls a method on a reference and returns a new reference
|
|
68
78
|
* @param {number} referenceId Reference identifier
|
|
@@ -160,13 +170,15 @@ export default class Client {
|
|
|
160
170
|
* @param {any} args.data Command data
|
|
161
171
|
* @param {string} [args.error] Error message from the backend
|
|
162
172
|
* @param {string} [args.errorStack] Error stack from the backend
|
|
173
|
+
* @param {number[]} [args.released_reference_ids] Reference IDs released by the peer
|
|
163
174
|
*/
|
|
164
|
-
onCommand: ({ command, command_id: commandID, data, error, errorStack, ...restArgs }: {
|
|
175
|
+
onCommand: ({ command, command_id: commandID, data, error, errorStack, released_reference_ids: releasedReferenceIds, ...restArgs }: {
|
|
165
176
|
command: string;
|
|
166
177
|
command_id: number;
|
|
167
178
|
data: any;
|
|
168
179
|
error?: string;
|
|
169
180
|
errorStack?: string;
|
|
181
|
+
released_reference_ids?: number[];
|
|
170
182
|
}) => void;
|
|
171
183
|
/**
|
|
172
184
|
* Parases an argument for sending to the server
|
|
@@ -174,6 +186,36 @@ export default class Client {
|
|
|
174
186
|
* @returns {any} Serialized argument payload
|
|
175
187
|
*/
|
|
176
188
|
parseArg(arg: any): any;
|
|
189
|
+
/**
|
|
190
|
+
* Parses an argument payload received from the server
|
|
191
|
+
* @param {any} arg Argument to parse
|
|
192
|
+
* @param {{allowRemoteReferences?: boolean}} [options] Parsing options
|
|
193
|
+
* @returns {any} Parsed argument
|
|
194
|
+
*/
|
|
195
|
+
parseIncomingArg(arg: any, options?: {
|
|
196
|
+
allowRemoteReferences?: boolean;
|
|
197
|
+
}): any;
|
|
198
|
+
/**
|
|
199
|
+
* Parses an arguments array received from the server
|
|
200
|
+
* @param {any[]} args Arguments to parse
|
|
201
|
+
* @param {{allowRemoteReferences?: boolean}} [options] Parsing options
|
|
202
|
+
* @returns {any[]} Parsed arguments
|
|
203
|
+
*/
|
|
204
|
+
parseIncomingArgs(args: any[], options?: {
|
|
205
|
+
allowRemoteReferences?: boolean;
|
|
206
|
+
}): any[];
|
|
207
|
+
/**
|
|
208
|
+
* Serializes arguments for a function callback
|
|
209
|
+
* @param {any[]} args Arguments to serialize
|
|
210
|
+
* @returns {any[]} Serialized arguments
|
|
211
|
+
*/
|
|
212
|
+
parseFunctionArgs(args: any[]): any[];
|
|
213
|
+
/**
|
|
214
|
+
* Serializes an argument for a function callback
|
|
215
|
+
* @param {any} arg Argument to serialize
|
|
216
|
+
* @returns {any} Serialized argument payload
|
|
217
|
+
*/
|
|
218
|
+
parseFunctionArg(arg: any): any;
|
|
177
219
|
/**
|
|
178
220
|
* Reads an attribute on a reference and returns a new reference
|
|
179
221
|
* @overload
|
|
@@ -306,6 +348,11 @@ export default class Client {
|
|
|
306
348
|
* @returns {Reference} Reference instance
|
|
307
349
|
*/
|
|
308
350
|
spawnReference(id: string, instanceId?: string | undefined): Reference;
|
|
351
|
+
trackReference(reference: any): void;
|
|
352
|
+
trackFunctionWrapper(functionWrapper: any, functionId: any): void;
|
|
353
|
+
queueReleasedReference(referenceId: any): void;
|
|
354
|
+
takeReleasedReferenceIds(): any[];
|
|
355
|
+
releaseReferences(referenceIds: any): void;
|
|
309
356
|
enableServerControl(): void;
|
|
310
357
|
}
|
|
311
358
|
export type Proxy = import("./reference-proxy.js").Proxy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.js"],"names":[],"mappings":"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"}
|