scoundrel-remote-eval 1.0.9 → 1.0.11

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.
@@ -22,9 +22,9 @@ export default class WebSocket {
22
22
  */
23
23
  onSocketMessage: (event: MessageEvent) => void;
24
24
  /**
25
- * @param {Event} _event
25
+ * @param {Event} event
26
26
  */
27
- onSocketOpen: (_event: Event) => void;
27
+ onSocketOpen: (event: Event) => void;
28
28
  /**
29
29
  * @param {Record<string, any>} data
30
30
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/connections/web-socket/index.js"],"names":[],"mappings":"AAQA;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,QAFL,KAEW,UAErB;IAED;;OAEG;IACH,WAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAQ7B;IAED,kCAME;CACH"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/connections/web-socket/index.js"],"names":[],"mappings":"AAQA;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"}
@@ -26,10 +26,10 @@ export default class WebSocket {
26
26
  this.onCommandCallback(data);
27
27
  };
28
28
  /**
29
- * @param {Event} _event
29
+ * @param {Event} event
30
30
  */
31
- this.onSocketOpen = (_event) => {
32
- logger.log("onSocketOpen");
31
+ this.onSocketOpen = (event) => {
32
+ logger.log(() => ["onSocketOpen", event]);
33
33
  };
34
34
  this.waitForOpened = () => new Promise((resolve, reject) => {
35
35
  // @ts-ignore
@@ -66,3 +66,4 @@ export default class WebSocket {
66
66
  this.ws.send(sendData);
67
67
  }
68
68
  }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpZW50L2Nvbm5lY3Rpb25zL3dlYi1zb2NrZXQvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sTUFBTSxNQUFNLG9CQUFvQixDQUFBO0FBRXZDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7QUFFaEQsd0JBQXdCO0FBRXhCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sU0FBUztJQUM1Qjs7O09BR0c7SUFDSCxZQUFZLEVBQUU7UUEyQmQ7O1dBRUc7UUFDSCxrQkFBYSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQzlDLENBQUMsQ0FBQTtRQUVEOztXQUVHO1FBQ0gsb0JBQWUsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBRW5DLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxnREFBZ0QsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBRTFFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFBO1lBQ2hFLENBQUM7WUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUIsQ0FBQyxDQUFBO1FBRUQ7O1dBRUc7UUFDSCxpQkFBWSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQzNDLENBQUMsQ0FBQTtRQWFELGtCQUFhLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDcEQsYUFBYTtZQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBRXpDLGFBQWE7WUFDYixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUMzQyxDQUFDLENBQUMsQ0FBQTtRQXhFQSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUVaLGFBQWE7UUFDYixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7UUFFckQsYUFBYTtRQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUVuRCxhQUFhO1FBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRXpELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFBO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsUUFBUTtRQUNoQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFBO0lBQ25DLENBQUM7SUErQkQ7O09BRUc7SUFDSCxJQUFJLENBQUMsSUFBSTtRQUNQLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBRXZDLGFBQWE7UUFDYixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN4QixDQUFDO0NBU0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi4vLi4vLi4vbG9nZ2VyLmpzXCJcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcihcIlNjb3VuZHJlbCBXZWJTb2NrZXRcIilcblxuLy8gbG9nZ2VyLnNldERlYnVnKHRydWUpXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYlNvY2tldCB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFdlYlNvY2tldCBjb25uZWN0aW9uIGhhbmRsZXJcbiAgICogQHBhcmFtIHtXZWJTb2NrZXR9IHdzIFRoZSBXZWJTb2NrZXQgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKHdzKSB7XG4gICAgdGhpcy53cyA9IHdzXG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy53cy5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgdGhpcy5vblNvY2tldEVycm9yKVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMud3MuYWRkRXZlbnRMaXN0ZW5lcihcIm9wZW5cIiwgdGhpcy5vblNvY2tldE9wZW4pXG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy53cy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLm9uU29ja2V0TWVzc2FnZSlcblxuICAgIHRoaXMuY29tbWFuZHMgPSB7fVxuICAgIHRoaXMuY29tbWFuZHNDb3VudCA9IDBcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMud3MuY2xvc2UoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7KGRhdGE6IGFueSkgPT4gdm9pZH0gY2FsbGJhY2tcbiAgICovXG4gIG9uQ29tbWFuZChjYWxsYmFjaykge1xuICAgIHRoaXMub25Db21tYW5kQ2FsbGJhY2sgPSBjYWxsYmFja1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50XG4gICAqL1xuICBvblNvY2tldEVycm9yID0gKGV2ZW50KSA9PiB7XG4gICAgbG9nZ2VyLmVycm9yKCgpID0+IFtcIm9uU29ja2V0RXJyb3JcIiwgZXZlbnRdKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7TWVzc2FnZUV2ZW50fSBldmVudFxuICAgKi9cbiAgb25Tb2NrZXRNZXNzYWdlID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSlcblxuICAgIGxvZ2dlci5sb2coKCkgPT4gW1wiQ2xpZW50OjpDb25uZWN0aW9uczo6V2ViU29ja2V0IG9uU29ja2V0TWVzc2FnZVwiLCBkYXRhXSlcblxuICAgIGlmICghdGhpcy5vbkNvbW1hbmRDYWxsYmFjaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gb25Db21tYW5kIGNhbGxiYWNrIHNldCwgaWdub3JpbmcgbWVzc2FnZVwiKVxuICAgIH1cblxuICAgIHRoaXMub25Db21tYW5kQ2FsbGJhY2soZGF0YSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudFxuICAgKi9cbiAgb25Tb2NrZXRPcGVuID0gKGV2ZW50KSA9PiB7XG4gICAgbG9nZ2VyLmxvZygoKSA9PiBbXCJvblNvY2tldE9wZW5cIiwgZXZlbnRdKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gZGF0YVxuICAgKi9cbiAgc2VuZChkYXRhKSB7XG4gICAgY29uc3Qgc2VuZERhdGEgPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICAgIGxvZ2dlci5sb2coKCkgPT4gW1wiU2VuZGluZ1wiLCBzZW5kRGF0YV0pXG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy53cy5zZW5kKHNlbmREYXRhKVxuICB9XG5cbiAgd2FpdEZvck9wZW5lZCA9ICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy53cy5hZGRFdmVudExpc3RlbmVyKFwib3BlblwiLCByZXNvbHZlKVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMud3MuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHJlamVjdClcbiAgfSlcbn1cbiJdfQ==
@@ -3,8 +3,11 @@ export default class Client {
3
3
  * Creates a new Scoundrel Client
4
4
  *
5
5
  * @param {any} backend The backend connection (e.g., WebSocket)
6
+ * @param {{enableServerControl?: boolean}} [options]
6
7
  */
7
- constructor(backend: any);
8
+ constructor(backend: any, options?: {
9
+ enableServerControl?: boolean;
10
+ });
8
11
  backend: any;
9
12
  /** @type {Record<number, any>} */
10
13
  outgoingCommands: Record<number, any>;
@@ -19,6 +22,8 @@ export default class Client {
19
22
  /** @type {Record<number, any>} */
20
23
  objects: Record<number, any>;
21
24
  objectsCount: number;
25
+ /** @type {boolean} */
26
+ serverControlEnabled: boolean;
22
27
  /**
23
28
  * Closes the client connection
24
29
  */
@@ -175,6 +180,7 @@ export default class Client {
175
180
  * @returns {Reference}
176
181
  */
177
182
  spawnReference(id: string): Reference;
183
+ enableServerControl(): void;
178
184
  }
179
185
  import Reference from "./reference.js";
180
186
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.js"],"names":[],"mappings":"AASA;IACE;;;;OAIG;IACH,qBAFW,GAAG,EAwBb;IArBC,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;IAGvB;;OAEG;IACH,uBAEC;IAED;;;;;;;OAOG;IACH,mCALW,MAAM,cACN,MAAM,WACF,GAAG,EAAA,GACL,OAAO,CAAC,GAAG,CAAC,CAWxB;IAED;;;;;;;OAOG;IACH,gDALW,MAAM,cACN,MAAM,WACF,GAAG,EAAA,GACL,OAAO,CAAC,SAAS,CAAC,CAY9B;IAED;;;;;OAKG;IACH,8BAHW,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAU9B;IAED;;;;;OAKG;IACH,mBAHW,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAe9B;IAED;;;;;OAKG;IACH,sBAHW,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAY9B;IAED;;;;;;OAMG;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,UA+GlF;IAED;;;;;OAKG;IACH,cAHW,GAAG,GACD,GAAG,CAwBf;IAED;;;;;;OAMG;IACH,mDAJW,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAW9B;IAED;;;;;;OAMG;IACH,sCAJW,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,GAAG,CAAC,CASxB;IAED;;;;;OAKG;IACH,yBAHW,MAAM,iBACN,GAAG,QAMb;IAED;;;;;OAKG;IACH,oBAHW,MAAM,GACJ,GAAG,CAIf;IAED;;;;;OAKG;IACH,2BAHW,MAAM,kBACN,GAAG,QAMb;IAED;;;;;OAKG;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,CAexB;IAED;;;OAGG;IACH,WAFW,GAAG,QAIb;IAED;;;;;OAKG;IACH,gCAHW,MAAM,GACJ,OAAO,CAAC,GAAG,CAAC,CAMxB;IAED;;;;;OAKG;IACH,mBAHW,MAAM,GACJ,SAAS,CAQrB;CACF;sBAjdqB,gBAAgB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.js"],"names":[],"mappings":"AASA;IACE;;;;;OAKG;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;IAED;;;;;;;OAOG;IACH,mCALW,MAAM,cACN,MAAM,WACF,GAAG,EAAA,GACL,OAAO,CAAC,GAAG,CAAC,CAWxB;IAED;;;;;;;OAOG;IACH,gDALW,MAAM,cACN,MAAM,WACF,GAAG,EAAA,GACL,OAAO,CAAC,SAAS,CAAC,CAY9B;IAED;;;;;OAKG;IACH,8BAHW,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAM9B;IAED;;;;;OAKG;IACH,mBAHW,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAe9B;IAED;;;;;OAKG;IACH,sBAHW,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAY9B;IAED;;;;;;OAMG;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,UAkJlF;IAED;;;;;OAKG;IACH,cAHW,GAAG,GACD,GAAG,CAwBf;IAED;;;;;;OAMG;IACH,mDAJW,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,SAAS,CAAC,CAW9B;IAED;;;;;;OAMG;IACH,sCAJW,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,GAAG,CAAC,CASxB;IAED;;;;;OAKG;IACH,yBAHW,MAAM,iBACN,GAAG,QAMb;IAED;;;;;OAKG;IACH,oBAHW,MAAM,GACJ,GAAG,CAIf;IAED;;;;;OAKG;IACH,2BAHW,MAAM,kBACN,GAAG,QAMb;IAED;;;;;OAKG;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,CAexB;IAED;;;OAGG;IACH,WAFW,GAAG,QAIb;IAED;;;;;OAKG;IACH,gCAHW,MAAM,GACJ,OAAO,CAAC,GAAG,CAAC,CAMxB;IAED;;;;;OAKG;IACH,mBAHW,MAAM,GACJ,SAAS,CAQrB;IAED,4BAEC;CACF;sBAxfqB,gBAAgB"}
@@ -8,8 +8,9 @@ export default class Client {
8
8
  * Creates a new Scoundrel Client
9
9
  *
10
10
  * @param {any} backend The backend connection (e.g., WebSocket)
11
+ * @param {{enableServerControl?: boolean}} [options]
11
12
  */
12
- constructor(backend) {
13
+ constructor(backend, options = {}) {
13
14
  /**
14
15
  * Handles an incoming command from the backend
15
16
  * @param {object} args
@@ -25,6 +26,28 @@ export default class Client {
25
26
  if (!command) {
26
27
  throw new Error(`No command key given in data: ${Object.keys(restArgs).join(", ")}`);
27
28
  }
29
+ else if (command == "command_response") {
30
+ if (!(commandID in this.outgoingCommands)) {
31
+ throw new Error(`Outgoing command ${commandID} not found: ${Object.keys(this.outgoingCommands).join(", ")}`);
32
+ }
33
+ const savedCommand = this.outgoingCommands[commandID];
34
+ delete this.outgoingCommands[commandID];
35
+ if (error) {
36
+ const errorToThrow = new Error(error);
37
+ if (errorStack) {
38
+ errorToThrow.stack = `${errorStack}\n\n${errorToThrow.stack}`;
39
+ }
40
+ savedCommand.reject(errorToThrow);
41
+ }
42
+ else {
43
+ logger.log(() => [`Resolving command ${commandID} with data`, data]);
44
+ savedCommand.resolve(data.data);
45
+ }
46
+ }
47
+ else if (!this.serverControlEnabled) {
48
+ this.send({ command: "command_response", command_id: commandID, error: "Server control is disabled" });
49
+ return;
50
+ }
28
51
  else if (command == "get_object") {
29
52
  const serverObject = this._getRegisteredObject(data.object_name);
30
53
  let object;
@@ -65,7 +88,14 @@ export default class Client {
65
88
  if (!method)
66
89
  throw new Error(`No method called '${data.method_name}' on a '${object.constructor.name}'`);
67
90
  const response = method.call(object, ...data.args);
68
- this.respondToCommand(commandID, { response });
91
+ if (data.with == "reference") {
92
+ const objectId = ++this.objectsCount;
93
+ this.objects[objectId] = response;
94
+ this.respondToCommand(commandID, { response: objectId });
95
+ }
96
+ else {
97
+ this.respondToCommand(commandID, { response });
98
+ }
69
99
  }
70
100
  else if (command == "serialize_reference") {
71
101
  const referenceId = data.reference_id;
@@ -91,22 +121,30 @@ export default class Client {
91
121
  this.respondToCommand(commandID, { response: attribute });
92
122
  }
93
123
  }
94
- else if (command == "command_response") {
95
- if (!(commandID in this.outgoingCommands)) {
96
- throw new Error(`Outgoing command ${commandID} not found: ${Object.keys(this.outgoingCommands).join(", ")}`);
97
- }
98
- const savedCommand = this.outgoingCommands[commandID];
99
- delete this.outgoingCommands[commandID];
100
- if (error) {
101
- const errorToThrow = new Error(error);
102
- if (errorStack) {
103
- errorToThrow.stack = `${errorStack}\n\n${errorToThrow.stack}`;
124
+ else if (command == "eval") {
125
+ const respondWithResult = (evalResult) => {
126
+ if (data.with_reference) {
127
+ const objectId = ++this.objectsCount;
128
+ this.objects[objectId] = evalResult;
129
+ this.respondToCommand(commandID, { object_id: objectId });
104
130
  }
105
- savedCommand.reject(errorToThrow);
131
+ else {
132
+ this.respondToCommand(commandID, { response: evalResult });
133
+ }
134
+ };
135
+ const evalResult = eval(data.eval_string);
136
+ if (evalResult && typeof evalResult.then == "function") {
137
+ evalResult.then(respondWithResult).catch((promiseError) => {
138
+ if (promiseError instanceof Error) {
139
+ this.send({ command: "command_response", command_id: commandID, error: promiseError.message, errorStack: promiseError.stack });
140
+ }
141
+ else {
142
+ this.send({ command: "command_response", command_id: commandID, error: String(promiseError) });
143
+ }
144
+ });
106
145
  }
107
146
  else {
108
- logger.log(() => [`Resolving command ${commandID} with data`, data]);
109
- savedCommand.resolve(data.data);
147
+ respondWithResult(evalResult);
110
148
  }
111
149
  }
112
150
  else {
@@ -138,6 +176,8 @@ export default class Client {
138
176
  /** @type {Record<number, any>} */
139
177
  this.objects = {};
140
178
  this.objectsCount = 0;
179
+ /** @type {boolean} */
180
+ this.serverControlEnabled = Boolean(options.enableServerControl);
141
181
  }
142
182
  /**
143
183
  * Closes the client connection
@@ -187,12 +227,8 @@ export default class Client {
187
227
  * @returns {Promise<Reference>}
188
228
  */
189
229
  async evalWithReference(evalString) {
190
- const result = await this.sendCommand("eval", {
191
- eval_string: evalString,
192
- with_reference: true
193
- });
194
- const id = result.object_id;
195
- return this.spawnReference(id);
230
+ const evalReference = await this.getObject("eval");
231
+ return await evalReference.callMethodWithReference("call", null, evalString);
196
232
  }
197
233
  /**
198
234
  * Imports a module and returns a reference to it
@@ -410,4 +446,8 @@ export default class Client {
410
446
  this.references[id] = reference;
411
447
  return reference;
412
448
  }
449
+ enableServerControl() {
450
+ this.serverControlEnabled = true;
451
+ }
413
452
  }
453
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDakMsT0FBTyxTQUFTLE1BQU0sZ0JBQWdCLENBQUE7QUFFdEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtBQUU3Qyx3QkFBd0I7QUFFeEIsTUFBTSxDQUFDLE9BQU8sT0FBTyxNQUFNO0lBQ3pCOzs7OztPQUtHO0lBQ0gsWUFBWSxPQUFPLEVBQUUsT0FBTyxHQUFHLEVBQUU7UUErSmpDOzs7Ozs7OztXQVFHO1FBQ0gsY0FBUyxHQUFHLENBQUMsRUFBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLFFBQVEsRUFBQyxFQUFFLEVBQUU7WUFDckYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFBO1lBRXhGLElBQUksQ0FBQztnQkFDSCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO2dCQUN0RixDQUFDO3FCQUFNLElBQUksT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO3dCQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixTQUFTLGVB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OztPQUtHO0lBQ0gsY0FBYyxDQUFDLEVBQUU7UUFDZixNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUE7UUFFL0IsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFBO0lBQ2xDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuLi9sb2dnZXIuanNcIlxuaW1wb3J0IFJlZmVyZW5jZSBmcm9tIFwiLi9yZWZlcmVuY2UuanNcIlxuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKFwiU2NvdW5kcmVsIENsaWVudFwiKVxuXG4vLyBsb2dnZXIuc2V0RGVidWcodHJ1ZSlcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2xpZW50IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgU2NvdW5kcmVsIENsaWVudFxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gYmFja2VuZCBUaGUgYmFja2VuZCBjb25uZWN0aW9uIChlLmcuLCBXZWJTb2NrZXQpXG4gICAqIEBwYXJhbSB7e2VuYWJsZVNlcnZlckNvbnRyb2w/OiBib29sZWFufX0gW29wdGlvbnNdXG4gICAqL1xuICBjb25zdHJ1Y3RvcihiYWNrZW5kLCBvcHRpb25zID0ge30pIHtcbiAgICB0aGlzLmJhY2tlbmQgPSBiYWNrZW5kXG4gICAgdGhpcy5iYWNrZW5kLm9uQ29tbWFuZCh0aGlzLm9uQ29tbWFuZClcblxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPG51bWJlciwgYW55Pn0gKi9cbiAgICB0aGlzLm91dGdvaW5nQ29tbWFuZHMgPSB7fVxuICAgIHRoaXMuaW5jb21pbmdDb21tYW5kcyA9IHt9XG4gICAgdGhpcy5vdXRnb2luZ0NvbW1hbmRzQ291bnQgPSAwXG5cbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gICAgdGhpcy5fY2xhc3NlcyA9IHt9XG5cbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gICAgdGhpcy5fb2JqZWN0cyA9IHt9XG5cbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIFJlZmVyZW5jZT59ICovXG4gICAgdGhpcy5yZWZlcmVuY2VzID0ge31cblxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPG51bWJlciwgYW55Pn0gKi9cbiAgICB0aGlzLm9iamVjdHMgPSB7fVxuXG4gICAgdGhpcy5vYmplY3RzQ291bnQgPSAwXG5cbiAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gICAgdGhpcy5zZXJ2ZXJDb250cm9sRW5hYmxlZCA9IEJvb2xlYW4ob3B0aW9ucy5lbmFibGVTZXJ2ZXJDb250cm9sKVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgY2xpZW50IGNvbm5lY3Rpb25cbiAgICovXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIHRoaXMuYmFja2VuZC5jbG9zZSgpXG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgYSBtZXRob2Qgb24gYSByZWZlcmVuY2UgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBkaXJlY3RseVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcmVmZXJlbmNlSWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWVcbiAgICogQHBhcmFtICB7Li4uYW55fSBhcmdzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBhc3luYyBjYWxsTWV0aG9kT25SZWZlcmVuY2UocmVmZXJlbmNlSWQsIG1ldGhvZE5hbWUsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNlbmRDb21tYW5kKFwiY2FsbF9tZXRob2Rfb25fcmVmZXJlbmNlXCIsIHtcbiAgICAgIGFyZ3M6IHRoaXMucGFyc2VBcmcoYXJncyksXG4gICAgICBtZXRob2RfbmFtZTogbWV0aG9kTmFtZSxcbiAgICAgIHJlZmVyZW5jZV9pZDogcmVmZXJlbmNlSWQsXG4gICAgICB3aXRoOiBcInJlc3VsdFwiXG4gICAgfSlcblxuICAgIHJldHVybiByZXN1bHQucmVzcG9uc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyBhIG1ldGhvZCBvbiBhIHJlZmVyZW5jZSBhbmQgcmV0dXJucyBhIG5ldyByZWZlcmVuY2VcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJlZmVyZW5jZUlkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lXG4gICAqIEBwYXJhbSAgey4uLmFueX0gYXJnc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZWZlcmVuY2U+fVxuICAgKi9cbiAgYXN5bmMgY2FsbE1ldGhvZE9uUmVmZXJlbmNlV2l0aFJlZmVyZW5jZShyZWZlcmVuY2VJZCwgbWV0aG9kTmFtZSwgLi4uYXJncykge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc2VuZENvbW1hbmQoXCJjYWxsX21ldGhvZF9vbl9yZWZlcmVuY2VcIiwge1xuICAgICAgYXJnczogdGhpcy5wYXJzZUFyZyhhcmdzKSxcbiAgICAgIG1ldGhvZF9uYW1lOiBtZXRob2ROYW1lLFxuICAgICAgcmVmZXJlbmNlX2lkOiByZWZlcmVuY2VJZCxcbiAgICAgIHdpdGg6IFwicmVmZXJlbmNlXCJcbiAgICB9KVxuICAgIGNvbnN0IGlkID0gcmVzdWx0LnJlc3BvbnNlXG5cbiAgICByZXR1cm4gdGhpcy5zcGF3blJlZmVyZW5jZShpZClcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYSBuZXcgcmVmZXJlbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmFsU3RyaW5nXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFJlZmVyZW5jZT59XG4gICAqL1xuICBhc3luYyBldmFsV2l0aFJlZmVyZW5jZShldmFsU3RyaW5nKSB7XG4gICAgY29uc3QgZXZhbFJlZmVyZW5jZSA9IGF3YWl0IHRoaXMuZ2V0T2JqZWN0KFwiZXZhbFwiKVxuXG4gICAgcmV0dXJuIGF3YWl0IGV2YWxSZWZlcmVuY2UuY2FsbE1ldGhvZFdpdGhSZWZlcmVuY2UoXCJjYWxsXCIsIG51bGwsIGV2YWxTdHJpbmcpXG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0cyBhIG1vZHVsZSBhbmQgcmV0dXJucyBhIHJlZmVyZW5jZSB0byBpdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW1wb3J0TmFtZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZWZlcmVuY2U+fVxuICAgKi9cbiAgYXN5bmMgaW1wb3J0KGltcG9ydE5hbWUpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNlbmRDb21tYW5kKFwiaW1wb3J0XCIsIHtcbiAgICAgIGltcG9ydF9uYW1lOiBpbXBvcnROYW1lXG4gICAgfSlcblxuICAgIGxvZ2dlci5sb2coKCkgPT4gW1wiaW1wb3J0XCIsIHtyZXN1bHR9XSlcblxuICAgIGlmICghcmVzdWx0KSB0aHJvdyBuZXcgRXJyb3IoXCJObyByZXN1bHQgZ2l2ZW5cIilcbiAgICBpZiAoIXJlc3VsdC5vYmplY3RfaWQpIHRocm93IG5ldyBFcnJvcihgTm8gb2JqZWN0IElEIGdpdmVuIGluIHJlc3VsdDogJHtKU09OLnN0cmluZ2lmeShyZXN1bHQpfWApXG5cbiAgICBjb25zdCBpZCA9IHJlc3VsdC5vYmplY3RfaWRcblxuICAgIHJldHVybiB0aGlzLnNwYXduUmVmZXJlbmNlKGlkKVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSByZWdpc3RlcmVkIG9iamVjdCBieSBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvYmplY3ROYW1lXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFJlZmVyZW5jZT59XG4gICAqL1xuICBhc3luYyBnZXRPYmplY3Qob2JqZWN0TmFtZSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc2VuZENvbW1hbmQoXCJnZXRfb2JqZWN0XCIsIHtcbiAgICAgIG9iamVjdF9uYW1lOiBvYmplY3ROYW1lXG4gICAgfSlcblxuICAgIGlmICghcmVzdWx0KSB0aHJvdyBuZXcgRXJyb3IoXCJCbGFuayByZXN1bHQgZ2l2ZW5cIilcblxuICAgIGNvbnN0IGlkID0gcmVzdWx0Lm9iamVjdF9pZFxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd25SZWZlcmVuY2UoaWQpXG4gIH1cblxuICAvKipcbiAgICogU3Bhd25zIGEgbmV3IHJlZmVyZW5jZSB0byBhbiBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxuICAgKiBAcGFyYW0gIHsuLi5hbnl9IGFyZ3NcbiAgICogQHJldHVybnMge1Byb21pc2U8UmVmZXJlbmNlPn1cbiAgICovXG4gIGFzeW5jIG5ld09iamVjdFdpdGhSZWZlcmVuY2UoY2xhc3NOYW1lLCAuLi5hcmdzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZW5kQ29tbWFuZChcIm5ld19vYmplY3Rfd2l0aF9yZWZlcmVuY2VcIiwge1xuICAgICAgYXJnczogdGhpcy5wYXJzZUFyZyhhcmdzKSxcbiAgICAgIGNsYXNzX25hbWU6IGNsYXNzTmFtZVxuICAgIH0pXG5cbiAgICBpZiAoIXJlc3VsdCkgdGhyb3cgbmV3IEVycm9yKFwiQmxhbmsgcmVzdWx0IGdpdmVuXCIpXG5cbiAgICBjb25zdCBpZCA9IHJlc3VsdC5vYmplY3RfaWRcblxuICAgIGlmICghaWQpIHRocm93IG5ldyBFcnJvcihgTm8gb2JqZWN0IElEIGdpdmVuIGluIHJlc3VsdDogJHtKU09OLnN0cmluZ2lmeShyZXN1bHQpfWApXG5cbiAgICByZXR1cm4gdGhpcy5zcGF3blJlZmVyZW5jZShpZClcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGlucHV0IGlzIGEgcGxhaW4gb2JqZWN0XG4gICAqIEBwYXJhbSB7YW55fSBpbnB1dFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGlzUGxhaW5PYmplY3QoaW5wdXQpIHtcbiAgICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGFuIGluY29taW5nIGNvbW1hbmQgZnJvbSB0aGUgYmFja2VuZFxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jb21tYW5kXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLmNvbW1hbmRfaWRcbiAgICogQHBhcmFtIHthbnl9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuZXJyb3JdXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5lcnJvclN0YWNrXVxuICAgKi9cbiAgb25Db21tYW5kID0gKHtjb21tYW5kLCBjb21tYW5kX2lkOiBjb21tYW5kSUQsIGRhdGEsIGVycm9yLCBlcnJvclN0YWNrLCAuLi5yZXN0QXJnc30pID0+IHtcbiAgICBsb2dnZXIubG9nKCgpID0+IFtcIm9uQ29tbWFuZFwiLCB7Y29tbWFuZCwgY29tbWFuZElELCBkYXRhLCBlcnJvciwgZXJyb3JTdGFjaywgcmVzdEFyZ3N9XSlcblxuICAgIHRyeSB7XG4gICAgICBpZiAoIWNvbW1hbmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBjb21tYW5kIGtleSBnaXZlbiBpbiBkYXRhOiAke09iamVjdC5rZXlzKHJlc3RBcmdzKS5qb2luKFwiLCBcIil9YClcbiAgICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PSBcImNvbW1hbmRfcmVzcG9uc2VcIikge1xuICAgICAgICBpZiAoIShjb21tYW5kSUQgaW4gdGhpcy5vdXRnb2luZ0NvbW1hbmRzKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT3V0Z29pbmcgY29tbWFuZCAke2NvbW1hbmRJRH0gbm90IGZvdW5kOiAke09iamVjdC5rZXlzKHRoaXMub3V0Z29pbmdDb21tYW5kcykuam9pbihcIiwgXCIpfWApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzYXZlZENvbW1hbmQgPSB0aGlzLm91dGdvaW5nQ29tbWFuZHNbY29tbWFuZElEXVxuXG4gICAgICAgIGRlbGV0ZSB0aGlzLm91dGdvaW5nQ29tbWFuZHNbY29tbWFuZElEXVxuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIGNvbnN0IGVycm9yVG9UaHJvdyA9IG5ldyBFcnJvcihlcnJvcilcblxuICAgICAgICAgIGlmIChlcnJvclN0YWNrKSB7XG4gICAgICAgICAgICBlcnJvclRvVGhyb3cuc3RhY2sgPSBgJHtlcnJvclN0YWNrfVxcblxcbiR7ZXJyb3JUb1Rocm93LnN0YWNrfWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzYXZlZENvbW1hbmQucmVqZWN0KGVycm9yVG9UaHJvdylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIubG9nKCgpID0+IFtgUmVzb2x2aW5nIGNvbW1hbmQgJHtjb21tYW5kSUR9IHdpdGggZGF0YWAsIGRhdGFdKVxuICAgICAgICAgIHNhdmVkQ29tbWFuZC5yZXNvbHZlKGRhdGEuZGF0YSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdGhpcy5zZXJ2ZXJDb250cm9sRW5hYmxlZCkge1xuICAgICAgICB0aGlzLnNlbmQoe2NvbW1hbmQ6IFwiY29tbWFuZF9yZXNwb25zZVwiLCBjb21tYW5kX2lkOiBjb21tYW5kSUQsIGVycm9yOiBcIlNlcnZlciBjb250cm9sIGlzIGRpc2FibGVkXCJ9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PSBcImdldF9vYmplY3RcIikge1xuICAgICAgICBjb25zdCBzZXJ2ZXJPYmplY3QgPSB0aGlzLl9nZXRSZWdpc3RlcmVkT2JqZWN0KGRhdGEub2JqZWN0X25hbWUpXG4gICAgICAgIGxldCBvYmplY3RcblxuICAgICAgICBpZiAoc2VydmVyT2JqZWN0KSB7XG4gICAgICAgICAgb2JqZWN0ID0gc2VydmVyT2JqZWN0XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2JqZWN0ID0gZ2xvYmFsVGhpc1tkYXRhLm9iamVjdF9uYW1lXVxuXG4gICAgICAgICAgaWYgKCFvYmplY3QpIHRocm93IG5ldyBFcnJvcihgTm8gc3VjaCBvYmplY3Q6ICR7ZGF0YS5vYmplY3RfbmFtZX1gKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2JqZWN0SWQgPSArK3RoaXMub2JqZWN0c0NvdW50XG5cbiAgICAgICAgdGhpcy5vYmplY3RzW29iamVjdElkXSA9IG9iamVjdFxuICAgICAgICB0aGlzLnJlc3BvbmRUb0NvbW1hbmQoY29tbWFuZElELCB7b2JqZWN0X2lkOiBvYmplY3RJZH0pXG4gICAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0gXCJuZXdfb2JqZWN0X3dpdGhfcmVmZXJlbmNlXCIpIHtcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gZGF0YS5jbGFzc19uYW1lXG4gICAgICAgIGxldCBvYmplY3RcblxuICAgICAgICBpZiAodHlwZW9mIGNsYXNzTmFtZSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgY29uc3QgQ2xhc3NJbnN0YW5jZSA9IHRoaXMuZ2V0Q2xhc3MoY2xhc3NOYW1lKSB8fCBnbG9iYWxUaGlzW2NsYXNzTmFtZV1cblxuICAgICAgICAgIGlmICghQ2xhc3NJbnN0YW5jZSkgdGhyb3cgbmV3IEVycm9yKGBObyBzdWNoIGNsYXNzOiAke2NsYXNzTmFtZX1gKVxuXG4gICAgICAgICAgb2JqZWN0ID0gbmV3IENsYXNzSW5zdGFuY2UoLi4uZGF0YS5hcmdzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGNsYXNzIG5hbWU6ICR7dHlwZW9mIGNsYXNzTmFtZX1gKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2JqZWN0SWQgPSArK3RoaXMub2JqZWN0c0NvdW50XG5cbiAgICAgICAgdGhpcy5vYmplY3RzW29iamVjdElkXSA9IG9iamVjdFxuICAgICAgICB0aGlzLnJlc3BvbmRUb0NvbW1hbmQoY29tbWFuZElELCB7b2JqZWN0X2lkOiBvYmplY3RJZH0pXG4gICAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0gXCJjYWxsX21ldGhvZF9vbl9yZWZlcmVuY2VcIikge1xuICAgICAgICBjb25zdCByZWZlcmVuY2VJZCA9IGRhdGEucmVmZXJlbmNlX2lkXG4gICAgICAgIGNvbnN0IG9iamVjdCA9IHRoaXMub2JqZWN0c1tyZWZlcmVuY2VJZF1cblxuICAgICAgICBpZiAoIW9iamVjdCkgdGhyb3cgbmV3IEVycm9yKGBObyBvYmplY3QgYnkgdGhhdCBJRDogJHtyZWZlcmVuY2VJZH1gKVxuXG4gICAgICAgIGNvbnN0IG1ldGhvZCA9IG9iamVjdFtkYXRhLm1ldGhvZF9uYW1lXVxuXG4gICAgICAgIGlmICghbWV0aG9kKSB0aHJvdyBuZXcgRXJyb3IoYE5vIG1ldGhvZCBjYWxsZWQgJyR7ZGF0YS5tZXRob2RfbmFtZX0nIG9uIGEgJyR7b2JqZWN0LmNvbnN0cnVjdG9yLm5hbWV9J2ApXG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBtZXRob2QuY2FsbChvYmplY3QsIC4uLmRhdGEuYXJncylcblxuICAgICAgICBpZiAoZGF0YS53aXRoID09IFwicmVmZXJlbmNlXCIpIHtcbiAgICAgICAgICBjb25zdCBvYmplY3RJZCA9ICsrdGhpcy5vYmplY3RzQ291bnRcblxuICAgICAgICAgIHRoaXMub2JqZWN0c1tvYmplY3RJZF0gPSByZXNwb25zZVxuICAgICAgICAgIHRoaXMucmVzcG9uZFRvQ29tbWFuZChjb21tYW5kSUQsIHtyZXNwb25zZTogb2JqZWN0SWR9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzcG9uZFRvQ29tbWFuZChjb21tYW5kSUQsIHtyZXNwb25zZX0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PSBcInNlcmlhbGl6ZV9yZWZlcmVuY2VcIikge1xuICAgICAgICBjb25zdCByZWZlcmVuY2VJZCA9IGRhdGEucmVmZXJlbmNlX2lkXG4gICAgICAgIGNvbnN0IG9iamVjdCA9IHRoaXMub2JqZWN0c1tyZWZlcmVuY2VJZF1cblxuICAgICAgICBpZiAoIW9iamVjdCkgdGhyb3cgbmV3IEVycm9yKGBObyBvYmplY3QgYnkgdGhhdCBJRDogJHtyZWZlcmVuY2VJZH1gKVxuXG4gICAgICAgIHRoaXMucmVzcG9uZFRvQ29tbWFuZChjb21tYW5kSUQsIEpTT04uc3RyaW5naWZ5KG9iamVjdCkpXG4gICAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0gXCJyZWFkX2F0dHJpYnV0ZVwiKSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWUgPSBkYXRhLmF0dHJpYnV0ZV9uYW1lXG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZUlkID0gZGF0YS5yZWZlcmVuY2VfaWRcbiAgICAgICAgY29uc3QgcmV0dXJuV2l0aCA9IGRhdGEud2l0aFxuICAgICAgICBjb25zdCBvYmplY3QgPSB0aGlzLm9iamVjdHNbcmVmZXJlbmNlSWRdXG5cbiAgICAgICAgaWYgKCFvYmplY3QpIHRocm93IG5ldyBFcnJvcihgTm8gb2JqZWN0IGJ5IHRoYXQgSUQ6ICR7cmVmZXJlbmNlSWR9YClcblxuICAgICAgICBjb25zdCBhdHRyaWJ1dGUgPSBvYmplY3RbYXR0cmlidXRlTmFtZV1cblxuICAgICAgICBpZiAocmV0dXJuV2l0aCA9PSBcInJlZmVyZW5jZVwiKSB7XG4gICAgICAgICAgY29uc3Qgb2JqZWN0SWQgPSArK3RoaXMub2JqZWN0c0NvdW50XG5cbiAgICAgICAgICB0aGlzLm9iamVjdHNbb2JqZWN0SWRdID0gYXR0cmlidXRlXG4gICAgICAgICAgdGhpcy5yZXNwb25kVG9Db21tYW5kKGNvbW1hbmRJRCwge3Jlc3BvbnNlOiBvYmplY3RJZH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25kVG9Db21tYW5kKGNvbW1hbmRJRCwge3Jlc3BvbnNlOiBhdHRyaWJ1dGV9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0gXCJldmFsXCIpIHtcbiAgICAgICAgY29uc3QgcmVzcG9uZFdpdGhSZXN1bHQgPSAoZXZhbFJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmIChkYXRhLndpdGhfcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBjb25zdCBvYmplY3RJZCA9ICsrdGhpcy5vYmplY3RzQ291bnRcblxuICAgICAgICAgICAgdGhpcy5vYmplY3RzW29iamVjdElkXSA9IGV2YWxSZXN1bHRcbiAgICAgICAgICAgIHRoaXMucmVzcG9uZFRvQ29tbWFuZChjb21tYW5kSUQsIHtvYmplY3RfaWQ6IG9iamVjdElkfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25kVG9Db21tYW5kKGNvbW1hbmRJRCwge3Jlc3BvbnNlOiBldmFsUmVzdWx0fSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBldmFsUmVzdWx0ID0gZXZhbChkYXRhLmV2YWxfc3RyaW5nKVxuXG4gICAgICAgIGlmIChldmFsUmVzdWx0ICYmIHR5cGVvZiBldmFsUmVzdWx0LnRoZW4gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgZXZhbFJlc3VsdC50aGVuKHJlc3BvbmRXaXRoUmVzdWx0KS5jYXRjaCgocHJvbWlzZUVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvbWlzZUVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kKHtjb21tYW5kOiBcImNvbW1hbmRfcmVzcG9uc2VcIiwgY29tbWFuZF9pZDogY29tbWFuZElELCBlcnJvcjogcHJvbWlzZUVycm9yLm1lc3NhZ2UsIGVycm9yU3RhY2s6IHByb21pc2VFcnJvci5zdGFja30pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlbmQoe2NvbW1hbmQ6IFwiY29tbWFuZF9yZXNwb25zZVwiLCBjb21tYW5kX2lkOiBjb21tYW5kSUQsIGVycm9yOiBTdHJpbmcocHJvbWlzZUVycm9yKX0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNwb25kV2l0aFJlc3VsdChldmFsUmVzdWx0KVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29tbWFuZDogJHtjb21tYW5kfWApXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRoaXMuc2VuZCh7Y29tbWFuZDogXCJjb21tYW5kX3Jlc3BvbnNlXCIsIGNvbW1hbmRfaWQ6IGNvbW1hbmRJRCwgZXJyb3I6IGVycm9yLm1lc3NhZ2UsIGVycm9yU3RhY2s6IGVycm9yLnN0YWNrfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VuZCh7Y29tbWFuZDogXCJjb21tYW5kX3Jlc3BvbnNlXCIsIGNvbW1hbmRfaWQ6IGNvbW1hbmRJRCwgZXJyb3I6IFN0cmluZyhlcnJvcil9KVxuICAgICAgfVxuXG4gICAgICBsb2dnZXIuZXJyb3IoZXJyb3IpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBhcmFzZXMgYW4gYXJndW1lbnQgZm9yIHNlbmRpbmcgdG8gdGhlIHNlcnZlclxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gYXJnXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBwYXJzZUFyZyhhcmcpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICByZXR1cm4gYXJnLm1hcCgoYXJnSW5BcnJheSkgPT4gdGhpcy5wYXJzZUFyZyhhcmdJbkFycmF5KSlcbiAgICB9IGVsc2UgaWYgKGFyZyBpbnN0YW5jZW9mIFJlZmVyZW5jZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX19zY291bmRyZWxfb2JqZWN0X2lkOiBhcmcuaWQsXG4gICAgICAgIF9fc2NvdW5kcmVsX3R5cGU6IFwicmVmZXJlbmNlXCJcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNQbGFpbk9iamVjdChhcmcpKSB7XG4gICAgICAvKiogQHR5cGUge1JlY29yZDxhbnksIGFueT59ICovXG4gICAgICBjb25zdCBuZXdPYmplY3QgPSB7fVxuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBhcmcpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBhcmdba2V5XVxuXG4gICAgICAgIG5ld09iamVjdFtrZXldID0gdGhpcy5wYXJzZUFyZyh2YWx1ZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld09iamVjdFxuICAgIH1cblxuICAgIHJldHVybiBhcmdcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhbiBhdHRyaWJ1dGUgb24gYSByZWZlcmVuY2UgYW5kIHJldHVybnMgYSBuZXcgcmVmZXJlbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByZWZlcmVuY2VJZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXR0cmlidXRlTmFtZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZWZlcmVuY2U+fVxuICAgKi9cbiAgYXN5bmMgcmVhZEF0dHJpYnV0ZU9uUmVmZXJlbmNlV2l0aFJlZmVyZW5jZShyZWZlcmVuY2VJZCwgYXR0cmlidXRlTmFtZSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc2VuZENvbW1hbmQoXCJyZWFkX2F0dHJpYnV0ZVwiLCB7XG4gICAgICBhdHRyaWJ1dGVfbmFtZTogYXR0cmlidXRlTmFtZSxcbiAgICAgIHJlZmVyZW5jZV9pZDogcmVmZXJlbmNlSWQsXG4gICAgICB3aXRoOiBcInJlZmVyZW5jZVwiXG4gICAgfSlcbiAgICBjb25zdCBpZCA9IHJlc3VsdC5yZXNwb25zZVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd25SZWZlcmVuY2UoaWQpXG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgYW4gYXR0cmlidXRlIG9uIGEgcmVmZXJlbmNlIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgZGlyZWN0bHlcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJlZmVyZW5jZUlkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhdHRyaWJ1dGVOYW1lXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBhc3luYyByZWFkQXR0cmlidXRlT25SZWZlcmVuY2UocmVmZXJlbmNlSWQsIGF0dHJpYnV0ZU5hbWUpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNlbmRDb21tYW5kKFwicmVhZF9hdHRyaWJ1dGVcIiwge1xuICAgICAgYXR0cmlidXRlX25hbWU6IGF0dHJpYnV0ZU5hbWUsXG4gICAgICByZWZlcmVuY2VfaWQ6IHJlZmVyZW5jZUlkLFxuICAgICAgd2l0aDogXCJyZXN1bHRcIlxuICAgIH0pXG4gICAgcmV0dXJuIHJlc3VsdC5yZXNwb25zZVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNsYXNzIGJ5IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxuICAgKiBAcGFyYW0ge2FueX0gY2xhc3NJbnN0YW5jZVxuICAgKi9cbiAgcmVnaXN0ZXJDbGFzcyhjbGFzc05hbWUsIGNsYXNzSW5zdGFuY2UpIHtcbiAgICBpZiAoY2xhc3NOYW1lIGluIHRoaXMuX2NsYXNzZXMpIHRocm93IG5ldyBFcnJvcihgQ2xhc3MgYWxyZWFkeSBleGlzdHM6ICR7Y2xhc3NOYW1lfWApXG5cbiAgICB0aGlzLl9jbGFzc2VzW2NsYXNzTmFtZV0gPSBjbGFzc0luc3RhbmNlXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIHJlZ2lzdGVyZWQgY2xhc3MgYnkgbmFtZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBnZXRDbGFzcyhjbGFzc05hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fY2xhc3Nlc1tjbGFzc05hbWVdXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGFuIG9iamVjdCBieSBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvYmplY3ROYW1lXG4gICAqIEBwYXJhbSB7YW55fSBvYmplY3RJbnN0YW5jZVxuICAgKi9cbiAgcmVnaXN0ZXJPYmplY3Qob2JqZWN0TmFtZSwgb2JqZWN0SW5zdGFuY2UpIHtcbiAgICBpZiAob2JqZWN0TmFtZSBpbiB0aGlzLl9vYmplY3RzKSB0aHJvdyBuZXcgRXJyb3IoYE9iamVjdCBhbHJlYWR5IGV4aXN0czogJHtvYmplY3ROYW1lfWApXG5cbiAgICB0aGlzLl9vYmplY3RzW29iamVjdE5hbWVdID0gb2JqZWN0SW5zdGFuY2VcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgcmVnaXN0ZXJlZCBvYmplY3QgYnkgbmFtZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0TmFtZVxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgX2dldFJlZ2lzdGVyZWRPYmplY3Qob2JqZWN0TmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9vYmplY3RzW29iamVjdE5hbWVdXG4gIH1cblxuICAvKipcbiAgICogUmVzcG9uZHMgdG8gYSBjb21tYW5kIGZyb20gdGhlIGJhY2tlbmRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvbW1hbmRJZFxuICAgKiBAcGFyYW0ge2FueX0gZGF0YVxuICAgKi9cbiAgcmVzcG9uZFRvQ29tbWFuZChjb21tYW5kSWQsIGRhdGEpIHtcbiAgICB0aGlzLnNlbmRDb21tYW5kKFwiY29tbWFuZF9yZXNwb25zZVwiLCB7Y29tbWFuZF9pZDogY29tbWFuZElkLCBkYXRhfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kcyBhIGNvbW1hbmQgdG8gdGhlIGJhY2tlbmQgYW5kIHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbW1hbmRcbiAgICogQHBhcmFtIHthbnl9IGRhdGFcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIHNlbmRDb21tYW5kKGNvbW1hbmQsIGRhdGEpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb3V0Z29pbmdDb21tYW5kQ291bnQgPSArK3RoaXMub3V0Z29pbmdDb21tYW5kc0NvdW50XG4gICAgICBjb25zdCBjb21tYW5kRGF0YSA9IHtcbiAgICAgICAgY29tbWFuZCxcbiAgICAgICAgY29tbWFuZF9pZDogb3V0Z29pbmdDb21tYW5kQ291bnQsXG4gICAgICAgIGRhdGFcbiAgICAgIH1cblxuICAgICAgdGhpcy5vdXRnb2luZ0NvbW1hbmRzW291dGdvaW5nQ29tbWFuZENvdW50XSA9IHtyZXNvbHZlLCByZWplY3R9XG4gICAgICBsb2dnZXIubG9nKCgpID0+IFtcIlNlbmRpbmdcIiwgY29tbWFuZERhdGFdKVxuICAgICAgdGhpcy5zZW5kKGNvbW1hbmREYXRhKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogU2VuZHMgZGF0YSB0byB0aGUgYmFja2VuZFxuICAgKiBAcGFyYW0ge2FueX0gZGF0YVxuICAgKi9cbiAgc2VuZChkYXRhKSB7XG4gICAgdGhpcy5iYWNrZW5kLnNlbmQoZGF0YSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIGEgcmVmZXJlbmNlIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgZGlyZWN0bHlcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJlZmVyZW5jZUlkXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBhc3luYyBzZXJpYWxpemVSZWZlcmVuY2UocmVmZXJlbmNlSWQpIHtcbiAgICBjb25zdCBqc29uID0gYXdhaXQgdGhpcy5zZW5kQ29tbWFuZChcInNlcmlhbGl6ZV9yZWZlcmVuY2VcIiwge3JlZmVyZW5jZV9pZDogcmVmZXJlbmNlSWR9KVxuXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoanNvbilcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGF3bnMgYSBuZXcgcmVmZXJlbmNlIHRvIGFuIG9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRcbiAgICogQHJldHVybnMge1JlZmVyZW5jZX1cbiAgICovXG4gIHNwYXduUmVmZXJlbmNlKGlkKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlID0gbmV3IFJlZmVyZW5jZSh0aGlzLCBpZClcblxuICAgIHRoaXMucmVmZXJlbmNlc1tpZF0gPSByZWZlcmVuY2VcblxuICAgIHJldHVybiByZWZlcmVuY2VcbiAgfVxuXG4gIGVuYWJsZVNlcnZlckNvbnRyb2woKSB7XG4gICAgdGhpcy5zZXJ2ZXJDb250cm9sRW5hYmxlZCA9IHRydWVcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"reference-proxy.d.ts","sourceRoot":"","sources":["../../src/client/reference-proxy.js"],"names":[],"mappings":";AA8CA;;;GAGG;AACH,+CAHW,GAAG,oBAGwE"}
1
+ {"version":3,"file":"reference-proxy.d.ts","sourceRoot":"","sources":["../../src/client/reference-proxy.js"],"names":[],"mappings":";AAyCA;;;GAGG;AACH,+CAHW,GAAG,oBAGwE"}
@@ -27,14 +27,10 @@ const proxyObjectHandler = {
27
27
  * @param {any} newValue
28
28
  */
29
29
  set(receiver, prop, newValue) {
30
+ void receiver;
31
+ void prop;
32
+ void newValue;
30
33
  throw new Error("set property isn't supported yet");
31
- // @ts-expect-error
32
- if (typeof receiver == "function")
33
- receiver = receiver(); // eslint-disable-line no-unreachable
34
- // @ts-expect-error
35
- if (!(prop in receiver))
36
- throw new PropertyNotFoundError(`Property not found: ${prop}`); // eslint-disable-line no-undef
37
- return Reflect.set(receiver, prop, newValue);
38
34
  }
39
35
  };
40
36
  /**
@@ -43,3 +39,4 @@ const proxyObjectHandler = {
43
39
  */
44
40
  const referenceProxy = (wrappedObject) => new Proxy(wrappedObject, proxyObjectHandler);
45
41
  export default referenceProxy;
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlLXByb3h5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9yZWZlcmVuY2UtcHJveHkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7O0dBSUc7QUFDSCxNQUFNLGtCQUFrQixHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFBO0FBRTdHLE1BQU0sa0JBQWtCLEdBQUc7SUFDekI7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSTtRQUNqQixJQUFJLE9BQU8sU0FBUyxJQUFJLFVBQVU7WUFBRSxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUE7UUFFM0QsSUFBSSxJQUFJLElBQUksYUFBYSxFQUFFLENBQUM7WUFDMUIsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQTtZQUNsQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBRTFDLE9BQU8sV0FBVyxDQUFBO1FBQ3BCLENBQUM7UUFFRCxPQUFPLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7UUFDMUIsS0FBSyxRQUFRLENBQUE7UUFDYixLQUFLLElBQUksQ0FBQTtRQUNULEtBQUssUUFBUSxDQUFBO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO0lBQ3JELENBQUM7Q0FDRixDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0FBRXRGLGVBQWUsY0FBYyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL3JlZmVyZW5jZS5qc1wiKS5kZWZhdWx0fSByZWZlcmVuY2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wXG4gKiBAcmV0dXJucyB7KC4uLmFyZ3M6IGFueVtdKSA9PiBQcm9taXNlPGFueT59XG4gKi9cbmNvbnN0IHByb3h5TWV0aG9kU3Bhd25lciA9IChyZWZlcmVuY2UsIHByb3ApID0+ICguLi5hcmdzKSA9PiByZWZlcmVuY2UuY2FsbE1ldGhvZFdpdGhSZWZlcmVuY2UocHJvcCwgLi4uYXJncylcblxuY29uc3QgcHJveHlPYmplY3RIYW5kbGVyID0ge1xuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3JlZmVyZW5jZS5qc1wiKS5kZWZhdWx0fCgoKSA9PiBpbXBvcnQoXCIuL3JlZmVyZW5jZS5qc1wiKS5kZWZhdWx0KX0gcmVmZXJlbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBnZXQocmVmZXJlbmNlLCBwcm9wKSB7XG4gICAgaWYgKHR5cGVvZiByZWZlcmVuY2UgPT0gXCJmdW5jdGlvblwiKSByZWZlcmVuY2UgPSByZWZlcmVuY2UoKVxuXG4gICAgaWYgKHByb3AgPT0gXCJfX3NlcmlhbGl6ZVwiKSB7XG4gICAgICBjb25zdCBtZXRob2QgPSByZWZlcmVuY2Uuc2VyaWFsaXplXG4gICAgICBjb25zdCBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKHJlZmVyZW5jZSlcblxuICAgICAgcmV0dXJuIGJvdW5kTWV0aG9kXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3h5TWV0aG9kU3Bhd25lcihyZWZlcmVuY2UsIHByb3ApXG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9yZWZlcmVuY2UuanNcIikuZGVmYXVsdHwoKCkgPT4gaW1wb3J0KFwiLi9yZWZlcmVuY2UuanNcIikuZGVmYXVsdCl9IHJlY2VpdmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wXG4gICAqIEBwYXJhbSB7YW55fSBuZXdWYWx1ZVxuICAgKi9cbiAgc2V0KHJlY2VpdmVyLCBwcm9wLCBuZXdWYWx1ZSkge1xuICAgIHZvaWQgcmVjZWl2ZXJcbiAgICB2b2lkIHByb3BcbiAgICB2b2lkIG5ld1ZhbHVlXG4gICAgdGhyb3cgbmV3IEVycm9yKFwic2V0IHByb3BlcnR5IGlzbid0IHN1cHBvcnRlZCB5ZXRcIilcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB3cmFwcGVkT2JqZWN0XG4gKiBAcmV0dXJucyB7UHJveHl9XG4gKi9cbmNvbnN0IHJlZmVyZW5jZVByb3h5ID0gKHdyYXBwZWRPYmplY3QpID0+IG5ldyBQcm94eSh3cmFwcGVkT2JqZWN0LCBwcm94eU9iamVjdEhhbmRsZXIpXG5cbmV4cG9ydCBkZWZhdWx0IHJlZmVyZW5jZVByb3h5XG4iXX0=
@@ -61,3 +61,4 @@ export default class Reference {
61
61
  return await this.client.serializeReference(this.id);
62
62
  }
63
63
  }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9yZWZlcmVuY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE1BQU0sQ0FBQyxPQUFPLE9BQU8sU0FBUztJQUM1Qjs7Ozs7T0FLRztJQUNILFlBQVksTUFBTSxFQUFFLEVBQUU7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUE7UUFFWixJQUFJLENBQUMsRUFBRTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSTtRQUNsQyxPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQzlFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsdUJBQXVCLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSTtRQUMvQyxPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQzNGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxHQUFHLElBQUk7UUFDeEMsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUNwRixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLDBCQUEwQixDQUFDLGFBQWEsRUFBRSxHQUFHLElBQUk7UUFDckQsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMscUNBQXFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUNqRyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxTQUFTO1FBQ2IsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3RELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWZlcmVuY2Uge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBSZWZlcmVuY2VcbiAgICpcbiAgICogQHBhcmFtIHthbnl9IGNsaWVudCBUaGUgY2xpZW50IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBUaGUgcmVmZXJlbmNlIElEXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjbGllbnQsIGlkKSB7XG4gICAgdGhpcy5jbGllbnQgPSBjbGllbnRcbiAgICB0aGlzLmlkID0gaWRcblxuICAgIGlmICghaWQpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBJRCBnaXZlbjogJHtpZH1gKVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIGEgbWV0aG9kIG9uIHRoZSByZWZlcmVuY2VcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWVcbiAgICogQHBhcmFtICB7Li4uYW55fSBhcmdzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBhc3luYyBjYWxsTWV0aG9kKG1ldGhvZE5hbWUsIC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbE1ldGhvZE9uUmVmZXJlbmNlKHRoaXMuaWQsIG1ldGhvZE5hbWUsIC4uLmFyZ3MpXG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgYSBtZXRob2Qgb24gdGhlIHJlZmVyZW5jZSB1c2luZyBhbm90aGVyIHJlZmVyZW5jZSBhcyBhcmd1bWVudFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZVxuICAgKiBAcGFyYW0gIHsuLi5hbnl9IGFyZ3NcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIGFzeW5jIGNhbGxNZXRob2RXaXRoUmVmZXJlbmNlKG1ldGhvZE5hbWUsIC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbE1ldGhvZE9uUmVmZXJlbmNlV2l0aFJlZmVyZW5jZSh0aGlzLmlkLCBtZXRob2ROYW1lLCAuLi5hcmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIGFuIGF0dHJpYnV0ZSBmcm9tIHRoZSByZWZlcmVuY2VcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJpYnV0ZU5hbWVcbiAgICogQHBhcmFtICB7Li4uYW55fSBhcmdzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBhc3luYyByZWFkQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQucmVhZEF0dHJpYnV0ZU9uUmVmZXJlbmNlKHRoaXMuaWQsIGF0dHJpYnV0ZU5hbWUsIC4uLmFyZ3MpXG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgYW4gYXR0cmlidXRlIGZyb20gdGhlIHJlZmVyZW5jZSB1c2luZyBhbm90aGVyIHJlZmVyZW5jZSBhcyBhcmd1bWVudFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXR0cmlidXRlTmFtZVxuICAgKiBAcGFyYW0gIHsuLi5hbnl9IGFyZ3NcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIGFzeW5jIHJlYWRBdHRyaWJ1dGVXaXRoUmVmZXJlbmNlKGF0dHJpYnV0ZU5hbWUsIC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQucmVhZEF0dHJpYnV0ZU9uUmVmZXJlbmNlV2l0aFJlZmVyZW5jZSh0aGlzLmlkLCBhdHRyaWJ1dGVOYW1lLCAuLi5hcmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgdGhlIHJlZmVyZW5jZSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGRpcmVjdGx5XG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBhc3luYyBzZXJpYWxpemUoKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LnNlcmlhbGl6ZVJlZmVyZW5jZSh0aGlzLmlkKVxuICB9XG59XG4iXX0=
package/build/index.js CHANGED
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIiJdfQ==
package/build/logger.js CHANGED
@@ -62,3 +62,4 @@ export default class Logger {
62
62
  }
63
63
  }
64
64
  }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosTUFBTSxDQUFDLE9BQU8sT0FBTyxNQUFNO0lBQ3pCOzs7O09BSUc7SUFDSCxZQUFZLFNBQVM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7SUFDNUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsUUFBUTtRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsR0FBRyxDQUFDLEdBQUcsSUFBSTtRQUNULE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEdBQUcsSUFBSTtRQUNWLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ3JELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1lBRTlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFBO1lBQ25ELENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQTtZQUNoRCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQzNDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgTG9nZ2VyIGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY29wZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHNjb3BlIGZvciB0aGUgbG9nZ2VyXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZU5hbWUpIHtcbiAgICB0aGlzLmRlYnVnID0gZmFsc2VcbiAgICB0aGlzLnNjb3BlTmFtZSA9IHNjb3BlTmFtZVxuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgZGVidWcgbG9nZ2luZ1xuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5ld1ZhbHVlXG4gICAqL1xuICBzZXREZWJ1ZyhuZXdWYWx1ZSkge1xuICAgIHRoaXMuZGVidWcgPSBuZXdWYWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgY29uc29sZSBpZiBkZWJ1ZyBpcyBlbmFibGVkXG4gICAqXG4gICAqIEBwYXJhbSAgey4uLmFueX0gYXJnc1xuICAgKi9cbiAgZXJyb3IoLi4uYXJncykge1xuICAgIHJldHVybiB0aGlzLl9zZW5kVG9Db25zb2xlKFwiZXJyb3JcIiwgLi4uYXJncylcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dzIGEgbWVzc2FnZSB0byB0aGUgY29uc29sZSBpZiBkZWJ1ZyBpcyBlbmFibGVkXG4gICAqIEBwYXJhbSAgey4uLmFueX0gYXJnc1xuICAgKi9cbiAgbG9nKC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZFRvQ29uc29sZShcImxvZ1wiLCAuLi5hcmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYSB3YXJuaW5nIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUgaWYgZGVidWcgaXMgZW5hYmxlZFxuICAgKiBAcGFyYW0gIHsuLi5hbnl9IGFyZ3NcbiAgICovXG4gIHdhcm4oLi4uYXJncykge1xuICAgIHJldHVybiB0aGlzLl9zZW5kVG9Db25zb2xlKFwid2FyblwiLCAuLi5hcmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIHRoZSBsb2cgbWVzc2FnZSB0byB0aGUgY29uc29sZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9nVHlwZVxuICAgKiBAcGFyYW0gIHsuLi5hbnl9IGFyZ3NcbiAgICovXG4gIF9zZW5kVG9Db25zb2xlKGxvZ1R5cGUsIC4uLmFyZ3MpIHtcbiAgICBpZiAoIXRoaXMuZGVidWcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCA9PSAxICYmIHR5cGVvZiBhcmdzWzBdID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY29uc3QgY2FsbGJhY2tBcmdzID0gYXJnc1swXSgpXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNhbGxiYWNrQXJncykpIHtcbiAgICAgICAgY29uc29sZVtsb2dUeXBlXSh0aGlzLnNjb3BlTmFtZSwgLi4uY2FsbGJhY2tBcmdzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZVtsb2dUeXBlXSh0aGlzLnNjb3BlTmFtZSwgY2FsbGJhY2tBcmdzKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlW2xvZ1R5cGVdKHRoaXMuc2NvcGVOYW1lLCAuLi5hcmdzKVxuICAgIH1cbiAgfVxufVxuIl19
@@ -92,3 +92,4 @@ export default class PythonWebSocketRunner {
92
92
  }
93
93
  }
94
94
  }
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHl0aG9uLXdlYi1zb2NrZXQtcnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3B5dGhvbi13ZWItc29ja2V0LXJ1bm5lci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLElBQUksRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFFcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtBQUU1RCx3QkFBd0I7QUFFeEIsTUFBTSxDQUFDLE9BQU8sT0FBTyxxQkFBcUI7SUFVeEM7UUFUQSwyQkFBMkI7UUFDM0IsMEJBQXFCLEdBQUcsSUFBSSxDQUFBO1FBRTVCLDRDQUE0QztRQUM1QyxzQkFBaUIsR0FBRyxJQUFJLENBQUE7UUFFeEIsNENBQTRDO1FBQzVDLHFCQUFnQixHQUFHLElBQUksQ0FBQTtRQXdCdkIsa0JBQWEsR0FBRyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO2dCQUNaLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsa0RBQWtELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQ2hGLENBQUM7UUFDSCxDQUFDLENBQUE7UUFFRDs7O1dBR0c7UUFDSCxnQkFBVyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsa0NBQWtDLElBQUksZUFBZSxNQUFNLEVBQUUsQ0FBQyxDQUFBO1lBRS9FLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JB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QUFBO1FBQ2xFLE1BQU0sWUFBWSxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzdDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO1FBRTlDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNsQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQzNDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQXNFRCxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtRQUMxQixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7ZXhlYywgc3Bhd259IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyLmpzXCJcbmltcG9ydCB7cmVhbHBhdGh9IGZyb20gXCJmcy9wcm9taXNlc1wiXG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoXCJTY291bmRyZWwgUHl0aG9uV2ViU29ja2V0UnVubmVyXCIpXG5cbi8vIGxvZ2dlci5zZXREZWJ1Zyh0cnVlKVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQeXRob25XZWJTb2NrZXRSdW5uZXIge1xuICAvKiogQHR5cGUge0Vycm9yIHwgbnVsbH0gKi9cbiAgd2FpdEZvclBpZFJlamVjdEVycm9yID0gbnVsbFxuXG4gIC8qKiBAdHlwZSB7KCh2YWx1ZTogYW55KSA9PiB2b2lkKSB8IG51bGx9ICovXG4gIHdhaXRGb3JQaWRSZXNvbHZlID0gbnVsbFxuXG4gIC8qKiBAdHlwZSB7KCh2YWx1ZTogYW55KSA9PiB2b2lkKSB8IG51bGx9ICovXG4gIHdhaXRGb3JQaWRSZWplY3QgPSBudWxsXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgcHJvY2Vzcy5vbihcImV4aXRcIiwgdGhpcy5vblByb2Nlc3NFeGl0KVxuICB9XG5cbiAgcnVuQW5kV2FpdEZvclBpZCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy53YWl0Rm9yUGlkUmVzb2x2ZSA9IHJlc29sdmVcbiAgICAgIHRoaXMud2FpdEZvclBpZFJlamVjdCA9IHJlamVjdFxuICAgICAgdGhpcy5ydW4oKVxuICAgIH0pXG4gIH1cblxuICBhc3luYyBydW4oKSB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBgJHtwcm9jZXNzLmN3ZCgpfS8uLi9weXRob24vc2VydmVyL3dlYi1zb2NrZXQucHlgXG4gICAgY29uc3QgZmlsZVJlYWxQYXRoID0gYXdhaXQgcmVhbHBhdGgoZmlsZVBhdGgpXG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihcInB5dGhvbjNcIiwgW2ZpbGVSZWFsUGF0aF0pXG5cbiAgICBjaGlsZC5vbihcImV4aXRcIiwgdGhpcy5vbkNoaWxkRXhpdClcbiAgICBjaGlsZC5zdGRvdXQub24oXCJkYXRhXCIsIHRoaXMub25DaGlsZFN0ZG91dClcbiAgICBjaGlsZC5zdGRlcnIub24oXCJkYXRhXCIsIHRoaXMub25DaGlsZFN0ZGVycilcbiAgfVxuXG4gIG9uUHJvY2Vzc0V4aXQgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucGlkKSB7XG4gICAgICB0aGlzLmNsb3NlKClcbiAgICAgIGxvZ2dlci5sb2coKCkgPT4gYG9uUHJvY2Vzc0V4aXQ6IEtpbGxpbmcgUHl0aG9uIHByb2Nlc3Mgd2l0aCBQSUQgJHt0aGlzLnBpZH1gKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmFsXG4gICAqL1xuICBvbkNoaWxkRXhpdCA9IChjb2RlLCBzaWduYWwpID0+IHtcbiAgICBsb2dnZXIubG9nKCgpID0+IGBDaGlsZCBwcm9jZXNzIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfSBhbmQgc2lnbmFsICR7c2lnbmFsfWApXG5cbiAgICBpZiAodGhpcy53YWl0Rm9yUGlkUmVqZWN0RXJyb3IpIHtcbiAgICAgIGlmICghdGhpcy53YWl0Rm9yUGlkUmVqZWN0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIndhaXRGb3JQaWRSZWplY3QgaXMgdW5kZWZpbmVkIHdoaWxlIHdhaXRGb3JQaWRSZWplY3RFcnJvciBpcyBzZXRcIilcbiAgICAgIH1cblxuICAgICAgdGhpcy53YWl0Rm9yUGlkUmVqZWN0KHRoaXMud2FpdEZvclBpZFJlamVjdEVycm9yKVxuICAgICAgdGhpcy53YWl0Rm9yUGlkUmVzb2x2ZSA9IG51bGxcbiAgICAgIHRoaXMud2FpdEZvclBpZFJlamVjdCA9IG51bGxcbiAgICAgIHRoaXMud2FpdEZvclBpZFJlamVjdEVycm9yID0gbnVsbFxuICAgIH0gZWxzZSBpZiAodGhpcy53YWl0Rm9yUGlkUmVqZWN0KSB7XG4gICAgICB0aGlzLndhaXRGb3JQaWRSZWplY3QobmV3IEVycm9yKGBQeXRob24gcHJvY2VzcyBleGl0ZWQgYmVmb3JlIFBJRCB3YXMgcmVjZWl2ZWQgKGNvZGU6ICR7Y29kZX0sIHNpZ25hbDogJHtzaWduYWx9KWApKVxuICAgICAgdGhpcy53YWl0Rm9yUGlkUmVzb2x2ZSA9IG51bGxcbiAgICAgIHRoaXMud2FpdEZvclBpZFJlamVjdCA9IG51bGxcbiAgICAgIHRoaXMud2FpdEZvclBpZFJlamVjdEVycm9yID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IEJ1ZmZlcn0gZGF0YVxuICAgKi9cbiAgb25DaGlsZFN0ZGVyciA9IChkYXRhKSA9PiB7XG4gICAgbG9nZ2VyLmVycm9yKCgpID0+IGBzdGRlcnI6ICR7ZGF0YX1gKVxuXG4gICAgaWYgKHRoaXMud2FpdEZvclBpZFJlamVjdCkge1xuICAgICAgdGhpcy53YWl0Rm9yUGlkUmVqZWN0RXJyb3IgPSBuZXcgRXJyb3IoYFB5dGhvbiBwcm9jZXNzIHN0ZGVyciBiZWZvcmUgUElEIHdhcyByZWNlaXZlZDogJHtkYXRhfWApXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyfSBkYXRhXG4gICAqL1xuICBvbkNoaWxkU3Rkb3V0ID0gKGRhdGEpID0+IHtcbiAgICBsb2dnZXIubG9nKCgpID0+IGBzdGRvdXQ6ICR7ZGF0YX1gKVxuXG4gICAgY29uc3QgbWF0Y2ggPSAoYCR7ZGF0YX1gKS5tYXRjaCgvXlN0YXJ0ZWQgd2l0aCBQSUQgKFxcZCspIG9uICguKyk6KC4rKVxcbiQvKVxuXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICB0aGlzLnBpZCA9IG1hdGNoWzFdXG5cbiAgICAgIGxvZ2dlci5sb2coKCkgPT4gYFJlZ2lzdGVyZWQgUElEICR7dGhpcy5waWR9YClcblxuICAgICAgaWYgKHRoaXMud2FpdEZvclBpZFJlc29sdmUpIHtcbiAgICAgICAgaWYgKCF0aGlzLndhaXRGb3JQaWRSZXNvbHZlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwid2FpdEZvclBpZFJlc29sdmUgaXMgdW5kZWZpbmVkIHdoaWxlIHdhaXRGb3JQaWRSZWplY3RFcnJvciBpcyBzZXRcIilcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMud2FpdEZvclBpZFJlc29sdmUobnVsbClcbiAgICAgICAgdGhpcy53YWl0Rm9yUGlkUmVzb2x2ZSA9IG51bGxcbiAgICAgICAgdGhpcy53YWl0Rm9yUGlkUmVqZWN0ID0gbnVsbFxuICAgICAgICB0aGlzLndhaXRGb3JQaWRSZWplY3RFcnJvciA9IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5waWQpIHtcbiAgICAgIGV4ZWMoYGtpbGwgJHt0aGlzLnBpZH1gKVxuICAgIH1cbiAgfVxufVxuIl19
@@ -37,3 +37,4 @@ export default class WebSocketClient {
37
37
  await this.ws.send(JSON.stringify(data));
38
38
  }
39
39
  }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZlci9jb25uZWN0aW9ucy93ZWItc29ja2V0L2NsaWVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosTUFBTSxDQUFDLE9BQU8sT0FBTyxlQUFlO0lBQ2xDOzs7T0FHRztJQUNILFlBQVksRUFBRTtRQWNkOztXQUVHO1FBQ0gsWUFBTyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUMvQyxDQUFDLENBQUE7UUFFRDs7V0FFRztRQUNILGNBQVMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7WUFFaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO1lBRWhGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM5QixDQUFDLENBQUE7UUE3QkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUE7UUFFWixFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDNUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsQ0FBQyxRQUFRO1FBQ2hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUE7SUFDbkMsQ0FBQztJQW9CRDs7T0FFRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSTtRQUNiLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzFDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXZWJTb2NrZXRDbGllbnQge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBXZWJTb2NrZXRDbGllbnRcbiAgICogQHBhcmFtIHtpbXBvcnQoXCJ3c1wiKS5XZWJTb2NrZXR9IHdzIFRoZSBXZWJTb2NrZXQgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKHdzKSB7XG4gICAgdGhpcy53cyA9IHdzXG5cbiAgICB3cy5vbihcImVycm9yXCIsIHRoaXMub25FcnJvcilcbiAgICB3cy5vbihcIm1lc3NhZ2VcIiwgdGhpcy5vbk1lc3NhZ2UpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsoZGF0YTogYW55KSA9PiB2b2lkfSBjYWxsYmFja1xuICAgKi9cbiAgb25Db21tYW5kKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5vbkNvbW1hbmRDYWxsYmFjayA9IGNhbGxiYWNrXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtFcnJvcn0gZXJyb3JcbiAgICovXG4gIG9uRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKFwiV2ViU29ja2V0Q2xpZW50IGVycm9yXCIsIGVycm9yKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByYXdEYXRhXG4gICAqL1xuICBvbk1lc3NhZ2UgPSAocmF3RGF0YSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJhd0RhdGEpXG5cbiAgICBpZiAoIXRoaXMub25Db21tYW5kQ2FsbGJhY2spIHRocm93IG5ldyBFcnJvcihcIkNvbW1hbmQgY2FsbGJhY2sgaGFzbid0IGJlZW4gc2V0XCIpXG5cbiAgICB0aGlzLm9uQ29tbWFuZENhbGxiYWNrKGRhdGEpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHthbnl9IGRhdGFcbiAgICovXG4gIGFzeW5jIHNlbmQoZGF0YSkge1xuICAgIGF3YWl0IHRoaXMud3Muc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSlcbiAgfVxufVxuIl19
@@ -27,3 +27,4 @@ export default class WebSocket {
27
27
  this.onNewClientCallback = callback;
28
28
  }
29
29
  }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmVyL2Nvbm5lY3Rpb25zL3dlYi1zb2NrZXQvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sZUFBZSxNQUFNLGFBQWEsQ0FBQTtBQUV6QyxNQUFNLENBQUMsT0FBTyxPQUFPLFNBQVM7SUFDNUI7OztPQUdHO0lBQ0gsWUFBWSxlQUFlO1FBTzNCOztXQUVHO1FBQ0gsaUJBQVksR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtZQUVsRixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNuRCxDQUFDLENBQUE7UUFiQyxJQUFJLENBQUMsR0FBRyxHQUFHLGVBQWUsQ0FBQTtRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRCxLQUFLLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFXNUI7O09BRUc7SUFDSCxXQUFXLENBQUMsUUFBUTtRQUNsQixJQUFJLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtRQUV2RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFBO0lBQ3JDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgV2ViU29ja2V0Q2xpZW50IGZyb20gXCIuL2NsaWVudC5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYlNvY2tldCB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFdlYlNvY2tldCBjb25uZWN0aW9uIGhhbmRsZXJcbiAgICogQHBhcmFtIHtpbXBvcnQoXCJ3c1wiKS5TZXJ2ZXJ9IHdlYlNvY2tldFNlcnZlciBUaGUgV2ViU29ja2V0IHNlcnZlciBpbnN0YW5jZVxuICAgKi9cbiAgY29uc3RydWN0b3Iod2ViU29ja2V0U2VydmVyKSB7XG4gICAgdGhpcy53c3MgPSB3ZWJTb2NrZXRTZXJ2ZXJcbiAgICB0aGlzLndzcy5vbihcImNvbm5lY3Rpb25cIiwgdGhpcy5vbkNvbm5lY3Rpb24pXG4gIH1cblxuICBjbG9zZSgpIHsgdGhpcy53c3MuY2xvc2UoKSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwid3NcIikuV2ViU29ja2V0fSB3c1xuICAgKi9cbiAgb25Db25uZWN0aW9uID0gKHdzKSA9PiB7XG4gICAgaWYgKCF0aGlzLm9uTmV3Q2xpZW50Q2FsbGJhY2spIHRocm93IG5ldyBFcnJvcihcIidvbk5ld0NsaWVudCcgaGFzbid0IGJlZW4gY2FsbGVkXCIpXG5cbiAgICB0aGlzLm9uTmV3Q2xpZW50Q2FsbGJhY2sobmV3IFdlYlNvY2tldENsaWVudCh3cykpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsoY2xpZW50OiBpbXBvcnQoXCIuL2NsaWVudC5qc1wiKS5kZWZhdWx0KSA9PiB2b2lkfSBjYWxsYmFja1xuICAgKi9cbiAgb25OZXdDbGllbnQoY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjYWxsYmFjayB3YXMgZ2l2ZW5cIilcblxuICAgIHRoaXMub25OZXdDbGllbnRDYWxsYmFjayA9IGNhbGxiYWNrXG4gIH1cbn1cbiJdfQ==
@@ -8,13 +8,20 @@ export default class ScoundrelServer {
8
8
  /** @type {Client[]} */
9
9
  clients: Client[];
10
10
  events: EventEmitter<any>;
11
+ /** @type {SingleEventEmitter<(client: Client) => void>} */
12
+ onNewClientEventEmitter: SingleEventEmitter<(client: Client) => void>;
13
+ onNewClient: (listener: (client: Client) => void) => void;
14
+ /** @returns {void} */
11
15
  close(): void;
16
+ /** @returns {Client[]} */
12
17
  getClients(): Client[];
13
18
  /**
14
19
  * @param {import("./connections/web-socket/client.js").default} clientBackend
20
+ * @returns {void}
15
21
  */
16
- onNewClient: (clientBackend: import("./connections/web-socket/client.js").default) => void;
22
+ onNewClientFromBackend: (clientBackend: import("./connections/web-socket/client.js").default) => void;
17
23
  }
18
24
  import Client from "../client/index.js";
19
25
  import EventEmitter from "events";
26
+ import SingleEventEmitter from "../utils/single-event-emitter.js";
20
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.js"],"names":[],"mappings":"AAKA;IACE;;;OAGG;IACH,qBAFW,OAAO,mCAAmC,EAAE,OAAO,EAU7D;IAPC,6DAAsB;IAGtB,uBAAuB;IACvB,SADW,MAAM,EAAE,CACF;IAEjB,0BAAgC;IAGlC,cAAgC;IAChC,uBAAoC;IAEpC;;OAEG;IACH,cAAe,eAFJ,OAAO,oCAAoC,EAAE,OAE5B,UAK3B;CACF;mBA9BkB,oBAAoB;yBACd,QAAQ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.js"],"names":[],"mappings":"AAMA;IACE;;;OAGG;IACH,qBAFW,OAAO,mCAAmC,EAAE,OAAO,EAc7D;IAXC,6DAAsB;IAGtB,uBAAuB;IACvB,SADW,MAAM,EAAE,CACF;IAEjB,0BAAgC;IAEhC,2DAA2D;IAC3D,yBADW,kBAAkB,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,CACA;IACvD,iCAFuC,MAAM,KAAK,IAAI,UAEK;IAG7D,sBAAsB;IACtB,SADc,IAAI,CACc;IAEhC,0BAA0B;IAC1B,cADc,MAAM,EAAE,CACc;IAEpC;;;OAGG;IACH,yBAA0B,eAHf,OAAO,oCAAoC,EAAE,OAGjB,KAF1B,IAAI,CAShB;CACF;mBAzCkB,oBAAoB;yBACd,QAAQ;+BACF,kCAAkC"}
@@ -1,6 +1,7 @@
1
1
  // @ts-check
2
2
  import Client from "../client/index.js";
3
3
  import EventEmitter from "events";
4
+ import SingleEventEmitter from "../utils/single-event-emitter.js";
4
5
  export default class ScoundrelServer {
5
6
  /**
6
7
  * Creates a new Scoundrel server
@@ -9,18 +10,26 @@ export default class ScoundrelServer {
9
10
  constructor(backend) {
10
11
  /**
11
12
  * @param {import("./connections/web-socket/client.js").default} clientBackend
13
+ * @returns {void}
12
14
  */
13
- this.onNewClient = (clientBackend) => {
14
- const client = new Client(clientBackend);
15
+ this.onNewClientFromBackend = (clientBackend) => {
16
+ const client = new Client(clientBackend, { enableServerControl: true });
15
17
  this.clients.push(client);
16
18
  this.events.emit("newClient", client);
19
+ this.onNewClientEventEmitter.emit([client]);
17
20
  };
18
21
  this.backend = backend;
19
- this.backend.onNewClient(this.onNewClient);
22
+ this.backend.onNewClient(this.onNewClientFromBackend);
20
23
  /** @type {Client[]} */
21
24
  this.clients = [];
22
25
  this.events = new EventEmitter();
26
+ /** @type {SingleEventEmitter<(client: Client) => void>} */
27
+ this.onNewClientEventEmitter = new SingleEventEmitter();
28
+ this.onNewClient = this.onNewClientEventEmitter.connector();
23
29
  }
30
+ /** @returns {void} */
24
31
  close() { this.backend.close(); }
32
+ /** @returns {Client[]} */
25
33
  getClients() { return this.clients; }
26
34
  }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmVyL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQTtBQUN2QyxPQUFPLFlBQVksTUFBTSxRQUFRLENBQUE7QUFDakMsT0FBTyxrQkFBa0IsTUFBTSxrQ0FBa0MsQ0FBQTtBQUVqRSxNQUFNLENBQUMsT0FBTyxPQUFPLGVBQWU7SUFDbEM7OztPQUdHO0lBQ0gsWUFBWSxPQUFPO1FBb0JuQjs7O1dBR0c7UUFDSCwyQkFBc0IsR0FBRyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ3pDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFDLG1CQUFtQixFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7WUFFckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBRXJDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQzdDLENBQUMsQ0FBQTtRQTlCQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUVyRCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFFakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO1FBRWhDLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFBO1FBQ3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQzdELENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsS0FBSyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBRWhDLDBCQUEwQjtJQUMxQixVQUFVLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBLENBQUMsQ0FBQztDQWNyQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQ2xpZW50IGZyb20gXCIuLi9jbGllbnQvaW5kZXguanNcIlxuaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tIFwiZXZlbnRzXCJcbmltcG9ydCBTaW5nbGVFdmVudEVtaXR0ZXIgZnJvbSBcIi4uL3V0aWxzL3NpbmdsZS1ldmVudC1lbWl0dGVyLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2NvdW5kcmVsU2VydmVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgU2NvdW5kcmVsIHNlcnZlclxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vY29ubmVjdGlvbnMvd2ViLXNvY2tldC9pbmRleC5qc1wiKS5kZWZhdWx0fSBiYWNrZW5kIFRoZSBiYWNrZW5kIGNvbm5lY3Rpb24gaGFuZGxlclxuICAgKi9cbiAgY29uc3RydWN0b3IoYmFja2VuZCkge1xuICAgIHRoaXMuYmFja2VuZCA9IGJhY2tlbmRcbiAgICB0aGlzLmJhY2tlbmQub25OZXdDbGllbnQodGhpcy5vbk5ld0NsaWVudEZyb21CYWNrZW5kKVxuXG4gICAgLyoqIEB0eXBlIHtDbGllbnRbXX0gKi9cbiAgICB0aGlzLmNsaWVudHMgPSBbXVxuXG4gICAgdGhpcy5ldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICAgIC8qKiBAdHlwZSB7U2luZ2xlRXZlbnRFbWl0dGVyPChjbGllbnQ6IENsaWVudCkgPT4gdm9pZD59ICovXG4gICAgdGhpcy5vbk5ld0NsaWVudEV2ZW50RW1pdHRlciA9IG5ldyBTaW5nbGVFdmVudEVtaXR0ZXIoKVxuICAgIHRoaXMub25OZXdDbGllbnQgPSB0aGlzLm9uTmV3Q2xpZW50RXZlbnRFbWl0dGVyLmNvbm5lY3RvcigpXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIGNsb3NlKCkgeyB0aGlzLmJhY2tlbmQuY2xvc2UoKSB9XG5cbiAgLyoqIEByZXR1cm5zIHtDbGllbnRbXX0gKi9cbiAgZ2V0Q2xpZW50cygpIHsgcmV0dXJuIHRoaXMuY2xpZW50cyB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9jb25uZWN0aW9ucy93ZWItc29ja2V0L2NsaWVudC5qc1wiKS5kZWZhdWx0fSBjbGllbnRCYWNrZW5kXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgb25OZXdDbGllbnRGcm9tQmFja2VuZCA9IChjbGllbnRCYWNrZW5kKSA9PiB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IENsaWVudChjbGllbnRCYWNrZW5kLCB7ZW5hYmxlU2VydmVyQ29udHJvbDogdHJ1ZX0pXG5cbiAgICB0aGlzLmNsaWVudHMucHVzaChjbGllbnQpXG4gICAgdGhpcy5ldmVudHMuZW1pdChcIm5ld0NsaWVudFwiLCBjbGllbnQpXG5cbiAgICB0aGlzLm9uTmV3Q2xpZW50RXZlbnRFbWl0dGVyLmVtaXQoW2NsaWVudF0pXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,46 @@
1
+ /**
2
+ * SingleEventEmitter: one listener at a time, strongly typed via JSDoc.
3
+ *
4
+ * @template {(...args: any[]) => any} Listener
5
+ */
6
+ export default class SingleEventEmitter<Listener extends (...args: any[]) => any> {
7
+ /**
8
+ * @param {{ strict?: boolean }=} options
9
+ * - strict (default true): throw if a listener is already connected
10
+ */
11
+ constructor(options?: {
12
+ strict?: boolean;
13
+ } | undefined);
14
+ /**
15
+ * Connect a listener (type-checked).
16
+ * @param {Listener} listener
17
+ * @returns {void}
18
+ */
19
+ connect(listener: Listener): void;
20
+ /**
21
+ * Disconnect only if the same listener is currently connected.
22
+ * @param {Listener} listener
23
+ * @returns {void}
24
+ */
25
+ disconnect(listener: Listener): void;
26
+ /** @returns {void} */
27
+ clear(): void;
28
+ /** @returns {boolean} */
29
+ hasListener(): boolean;
30
+ /**
31
+ * Emit the event to the connected listener (if any).
32
+ * Arguments are type-checked against Listener parameters.
33
+ * @param {...Parameters<Listener>} args
34
+ * @returns {boolean} true if a listener was called
35
+ */
36
+ emit(...args: Parameters<Listener>[]): boolean;
37
+ /**
38
+ * Create a "connect method" you can expose as `onNewClient` etc.
39
+ * The returned function is type-checked as (listener: Listener) => void.
40
+ *
41
+ * @returns {(listener: Listener) => void}
42
+ */
43
+ connector(): (listener: Listener) => void;
44
+ #private;
45
+ }
46
+ //# sourceMappingURL=single-event-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-event-emitter.d.ts","sourceRoot":"","sources":["../../src/utils/single-event-emitter.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wCAFuC,QAAQ,SAAlC,CAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAI;IASpC;;;OAGG;IACH,sBAHW;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,YAAC,EAK/B;IAED;;;;OAIG;IACH,kBAHW,QAAQ,GACN,IAAI,CAOhB;IAED;;;;OAIG;IACH,qBAHW,QAAQ,GACN,IAAI,CAIhB;IAED,sBAAsB;IACtB,SADc,IAAI,CAGjB;IAED,yBAAyB;IACzB,eADc,OAAO,CAGpB;IAED;;;;;OAKG;IACH,cAHc,UAAU,CAAC,QAAQ,CAAC,EAAA,GACrB,OAAO,CAOnB;IAED;;;;;OAKG;IACH,aAFa,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAKxC;;CACF"}
@@ -0,0 +1,87 @@
1
+ // @ts-check
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _SingleEventEmitter_listener, _SingleEventEmitter_strict;
14
+ /**
15
+ * SingleEventEmitter: one listener at a time, strongly typed via JSDoc.
16
+ *
17
+ * @template {(...args: any[]) => any} Listener
18
+ */
19
+ class SingleEventEmitter {
20
+ /**
21
+ * @param {{ strict?: boolean }=} options
22
+ * - strict (default true): throw if a listener is already connected
23
+ */
24
+ constructor(options) {
25
+ /** @type {Listener | null} */
26
+ _SingleEventEmitter_listener.set(this, null
27
+ /** @type {boolean} */
28
+ );
29
+ /** @type {boolean} */
30
+ _SingleEventEmitter_strict.set(this, void 0);
31
+ __classPrivateFieldSet(this, _SingleEventEmitter_strict, options?.strict ?? true, "f");
32
+ }
33
+ /**
34
+ * Connect a listener (type-checked).
35
+ * @param {Listener} listener
36
+ * @returns {void}
37
+ */
38
+ connect(listener) {
39
+ if (__classPrivateFieldGet(this, _SingleEventEmitter_listener, "f") && __classPrivateFieldGet(this, _SingleEventEmitter_strict, "f")) {
40
+ throw new Error("SingleEventEmitter already has a listener connected");
41
+ }
42
+ __classPrivateFieldSet(this, _SingleEventEmitter_listener, listener, "f");
43
+ }
44
+ /**
45
+ * Disconnect only if the same listener is currently connected.
46
+ * @param {Listener} listener
47
+ * @returns {void}
48
+ */
49
+ disconnect(listener) {
50
+ if (__classPrivateFieldGet(this, _SingleEventEmitter_listener, "f") === listener)
51
+ __classPrivateFieldSet(this, _SingleEventEmitter_listener, null, "f");
52
+ }
53
+ /** @returns {void} */
54
+ clear() {
55
+ __classPrivateFieldSet(this, _SingleEventEmitter_listener, null, "f");
56
+ }
57
+ /** @returns {boolean} */
58
+ hasListener() {
59
+ return __classPrivateFieldGet(this, _SingleEventEmitter_listener, "f") !== null;
60
+ }
61
+ /**
62
+ * Emit the event to the connected listener (if any).
63
+ * Arguments are type-checked against Listener parameters.
64
+ * @param {...Parameters<Listener>} args
65
+ * @returns {boolean} true if a listener was called
66
+ */
67
+ emit(...args) {
68
+ const fn = __classPrivateFieldGet(this, _SingleEventEmitter_listener, "f");
69
+ if (!fn)
70
+ return false;
71
+ fn(...args);
72
+ return true;
73
+ }
74
+ /**
75
+ * Create a "connect method" you can expose as `onNewClient` etc.
76
+ * The returned function is type-checked as (listener: Listener) => void.
77
+ *
78
+ * @returns {(listener: Listener) => void}
79
+ */
80
+ connector() {
81
+ // bind() keeps `this`, and the return type is enforced by the JSDoc above
82
+ return this.connect.bind(this);
83
+ }
84
+ }
85
+ _SingleEventEmitter_listener = new WeakMap(), _SingleEventEmitter_strict = new WeakMap();
86
+ export default SingleEventEmitter;
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLWV2ZW50LWVtaXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc2luZ2xlLWV2ZW50LWVtaXR0ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7Ozs7Ozs7Ozs7OztBQUVaOzs7O0dBSUc7QUFDSCxNQUFxQixrQkFBa0I7SUFPckM7OztPQUdHO0lBQ0gsWUFBWSxPQUFPO1FBVm5CLDhCQUE4QjtRQUM5Qix1Q0FBWSxJQUFJO1FBRWhCLHNCQUFzQjtVQUZOO1FBRWhCLHNCQUFzQjtRQUN0Qiw2Q0FBTztRQU9MLHVCQUFBLElBQUksOEJBQVcsT0FBTyxFQUFFLE1BQU0sSUFBSSxJQUFJLE1BQUEsQ0FBQTtJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxRQUFRO1FBQ2QsSUFBSSx1QkFBQSxJQUFJLG9DQUFVLElBQUksdUJBQUEsSUFBSSxrQ0FBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFBO1FBQ3hFLENBQUM7UUFDRCx1QkFBQSxJQUFJLGdDQUFhLFFBQVEsTUFBQSxDQUFBO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLFFBQVE7UUFDakIsSUFBSSx1QkFBQSxJQUFJLG9DQUFVLEtBQUssUUFBUTtZQUFFLHVCQUFBLElBQUksZ0NBQWEsSUFBSSxNQUFBLENBQUE7SUFDeEQsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixLQUFLO1FBQ0gsdUJBQUEsSUFBSSxnQ0FBYSxJQUFJLE1BQUEsQ0FBQTtJQUN2QixDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLFdBQVc7UUFDVCxPQUFPLHVCQUFBLElBQUksb0NBQVUsS0FBSyxJQUFJLENBQUE7SUFDaEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxDQUFDLEdBQUcsSUFBSTtRQUNWLE1BQU0sRUFBRSxHQUFHLHVCQUFBLElBQUksb0NBQVUsQ0FBQTtRQUN6QixJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFBO1FBQ3JCLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQ1gsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFTO1FBQ1AsMEVBQTBFO1FBQzFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDaEMsQ0FBQztDQUNGOztlQXJFb0Isa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogU2luZ2xlRXZlbnRFbWl0dGVyOiBvbmUgbGlzdGVuZXIgYXQgYSB0aW1lLCBzdHJvbmdseSB0eXBlZCB2aWEgSlNEb2MuXG4gKlxuICogQHRlbXBsYXRlIHsoLi4uYXJnczogYW55W10pID0+IGFueX0gTGlzdGVuZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2luZ2xlRXZlbnRFbWl0dGVyIHtcbiAgLyoqIEB0eXBlIHtMaXN0ZW5lciB8IG51bGx9ICovXG4gICNsaXN0ZW5lciA9IG51bGxcblxuICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gICNzdHJpY3RcblxuICAvKipcbiAgICogQHBhcmFtIHt7IHN0cmljdD86IGJvb2xlYW4gfT19IG9wdGlvbnNcbiAgICogIC0gc3RyaWN0IChkZWZhdWx0IHRydWUpOiB0aHJvdyBpZiBhIGxpc3RlbmVyIGlzIGFscmVhZHkgY29ubmVjdGVkXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgdGhpcy4jc3RyaWN0ID0gb3B0aW9ucz8uc3RyaWN0ID8/IHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25uZWN0IGEgbGlzdGVuZXIgKHR5cGUtY2hlY2tlZCkuXG4gICAqIEBwYXJhbSB7TGlzdGVuZXJ9IGxpc3RlbmVyXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgY29ubmVjdChsaXN0ZW5lcikge1xuICAgIGlmICh0aGlzLiNsaXN0ZW5lciAmJiB0aGlzLiNzdHJpY3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNpbmdsZUV2ZW50RW1pdHRlciBhbHJlYWR5IGhhcyBhIGxpc3RlbmVyIGNvbm5lY3RlZFwiKVxuICAgIH1cbiAgICB0aGlzLiNsaXN0ZW5lciA9IGxpc3RlbmVyXG4gIH1cblxuICAvKipcbiAgICogRGlzY29ubmVjdCBvbmx5IGlmIHRoZSBzYW1lIGxpc3RlbmVyIGlzIGN1cnJlbnRseSBjb25uZWN0ZWQuXG4gICAqIEBwYXJhbSB7TGlzdGVuZXJ9IGxpc3RlbmVyXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZGlzY29ubmVjdChsaXN0ZW5lcikge1xuICAgIGlmICh0aGlzLiNsaXN0ZW5lciA9PT0gbGlzdGVuZXIpIHRoaXMuI2xpc3RlbmVyID0gbnVsbFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBjbGVhcigpIHtcbiAgICB0aGlzLiNsaXN0ZW5lciA9IG51bGxcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbiAgaGFzTGlzdGVuZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2xpc3RlbmVyICE9PSBudWxsXG4gIH1cblxuICAvKipcbiAgICogRW1pdCB0aGUgZXZlbnQgdG8gdGhlIGNvbm5lY3RlZCBsaXN0ZW5lciAoaWYgYW55KS5cbiAgICogQXJndW1lbnRzIGFyZSB0eXBlLWNoZWNrZWQgYWdhaW5zdCBMaXN0ZW5lciBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0gey4uLlBhcmFtZXRlcnM8TGlzdGVuZXI+fSBhcmdzXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIGEgbGlzdGVuZXIgd2FzIGNhbGxlZFxuICAgKi9cbiAgZW1pdCguLi5hcmdzKSB7XG4gICAgY29uc3QgZm4gPSB0aGlzLiNsaXN0ZW5lclxuICAgIGlmICghZm4pIHJldHVybiBmYWxzZVxuICAgIGZuKC4uLmFyZ3MpXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBcImNvbm5lY3QgbWV0aG9kXCIgeW91IGNhbiBleHBvc2UgYXMgYG9uTmV3Q2xpZW50YCBldGMuXG4gICAqIFRoZSByZXR1cm5lZCBmdW5jdGlvbiBpcyB0eXBlLWNoZWNrZWQgYXMgKGxpc3RlbmVyOiBMaXN0ZW5lcikgPT4gdm9pZC5cbiAgICpcbiAgICogQHJldHVybnMgeyhsaXN0ZW5lcjogTGlzdGVuZXIpID0+IHZvaWR9XG4gICAqL1xuICBjb25uZWN0b3IoKSB7XG4gICAgLy8gYmluZCgpIGtlZXBzIGB0aGlzYCwgYW5kIHRoZSByZXR1cm4gdHlwZSBpcyBlbmZvcmNlZCBieSB0aGUgSlNEb2MgYWJvdmVcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0LmJpbmQodGhpcylcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,12 +1,15 @@
1
1
  {
2
2
  "name": "scoundrel-remote-eval",
3
3
  "type": "module",
4
- "version": "1.0.9",
4
+ "version": "1.0.11",
5
5
  "description": "",
6
6
  "main": "build/index.js",
7
7
  "types": "build/index.d.ts",
8
- "files": ["build/**"],
8
+ "files": [
9
+ "build/**"
10
+ ],
9
11
  "scripts": {
12
+ "all-checks": "npm run typecheck && npm run lint && npm run test",
10
13
  "build": "rm -rf build && tsc",
11
14
  "lint": "eslint",
12
15
  "prepublishOnly": "npm run build",