system-testing 1.0.88 → 1.0.91

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.
@@ -2,7 +2,7 @@
2
2
  export default class SystemTestCommunicator {
3
3
  /**
4
4
  * @param {object} args
5
- * @param {(args: Record<string, any>) => Promise<{result: string} | void>} args.onCommand
5
+ * @param {(args: {data: Record<string, any>}) => Promise<any>} args.onCommand
6
6
  * @param {object} [args.parent]
7
7
  */
8
8
  constructor({ onCommand, parent }) {
@@ -102,4 +102,4 @@ export default class SystemTestCommunicator {
102
102
  this.send({ type: "response", id, data });
103
103
  }
104
104
  }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLXRlc3QtY29tbXVuaWNhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N5c3RlbS10ZXN0LWNvbW11bmljYXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosTUFBTSxDQUFDLE9BQU8sT0FBTyxzQkFBc0I7SUFZekM7Ozs7T0FJRztJQUNILFlBQVksRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDO1FBaEIvQiwwRkFBMEY7UUFDMUYsZUFBVSxHQUFHLEVBQUUsQ0FBQTtRQUVmLGtDQUFrQztRQUNsQyxlQUFVLEdBQUcsRUFBRSxDQUFBO1FBRWYsb0JBQWUsR0FBRyxDQUFDLENBQUE7UUFFbkIsK0JBQStCO1FBQy9CLE9BQUUsR0FBRyxJQUFJLENBQUE7UUF3QlQsMkJBQTJCO1FBQzNCLFlBQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDaEQsQ0FBQyxDQUFBO1FBRUQsOEJBQThCO1FBQzlCLGNBQVMsR0FBRyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDNUIseUVBQXlFO1lBQ3pFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7WUFFaEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25CLFNBQVM7WUFDWCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDO29CQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtvQkFFdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQTtnQkFD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QUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUMsQ0FBQTtZQUV2QyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUN4QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN5c3RlbVRlc3RDb21tdW5pY2F0b3Ige1xuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHtyZXNvbHZlOiAoZGF0YTogYW55KSA9PiB2b2lkLCByZWplY3Q6IChkYXRhOiBhbnkpID0+IHZvaWR9Pn0gKi9cbiAgX3Jlc3BvbnNlcyA9IHt9XG5cbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICBfc2VuZFF1ZXVlID0gW11cblxuICBfc2VuZFF1ZXVlQ291bnQgPSAwXG5cbiAgLyoqIEB0eXBlIHtXZWJTb2NrZXQgfCBudWxsfSAqL1xuICB3cyA9IG51bGxcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHsoYXJnczogUmVjb3JkPHN0cmluZywgYW55PikgPT4gUHJvbWlzZTx7cmVzdWx0OiBzdHJpbmd9IHwgdm9pZD59IGFyZ3Mub25Db21tYW5kXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJncy5wYXJlbnRdXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7b25Db21tYW5kLCBwYXJlbnR9KSB7XG4gICAgdGhpcy5vbkNvbW1hbmQgPSBvbkNvbW1hbmRcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudFxuICB9XG5cbiAgZmx1c2hTZW5kUXVldWUoKSB7XG4gICAgd2hpbGUgKHRoaXMuX3NlbmRRdWV1ZS5sZW5ndGggIT09IDApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9zZW5kUXVldWUuc2hpZnQoKVxuXG4gICAgICBpZiAoIXRoaXMud3MgfHwgdGhpcy53cy5yZWFkeVN0YXRlICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIldlYlNvY2tldCBpcyBub3Qgb3BlblwiKVxuICAgICAgfVxuXG4gICAgICB0aGlzLndzLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpXG4gICAgfVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7RXJyb3J9IGVycm9yICovXG4gIG9uRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKFwib25XZWJTb2NrZXRDbGllbnRFcnJvclwiLCBlcnJvcilcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3N0cmluZ30gcmF3RGF0YSAqL1xuICBvbk1lc3NhZ2UgPSBhc3luYyAocmF3RGF0YSkgPT4ge1xuICAgIC8qKiBAdHlwZSB7e2RhdGE6IGFueSwgaWQ6IG51bWJlciwgdHlwZTogc3RyaW5nLCBpc1RydXN0ZWQ/OiBib29sZWFufX0gKi9cbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyYXdEYXRhKVxuXG4gICAgaWYgKGRhdGEuaXNUcnVzdGVkKSB7XG4gICAgICAvLyBJZ25vcmVcbiAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PSBcImNvbW1hbmRcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5vbkNvbW1hbmQoe2RhdGE6IGRhdGEuZGF0YX0pXG5cbiAgICAgICAgdGhpcy5yZXNwb25kKGRhdGEuaWQsIHtyZXN1bHR9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbmQoZGF0YS5pZCwge2Vycm9yOiBlcnJvci5tZXNzYWdlfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbmQoZGF0YS5pZCwge2Vycm9yOiBlcnJvcn0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PSBcInJlc3BvbnNlXCIpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5fcmVzcG9uc2VzW2RhdGEuaWRdXG5cbiAgICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzdWNoIHJlc3BvbnNlOiAke2RhdGEuaWR9YClcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIHRoaXMuX3Jlc3BvbnNlc1tkYXRhLmlkXVxuXG4gICAgICBpZiAoZGF0YS5kYXRhLmVycm9yKSB7XG4gICAgICAgIHJlc3BvbnNlLnJlamVjdChkYXRhLmRhdGEuZXJyb3IpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZS5yZXNvbHZlKGRhdGEuZGF0YS5yZXN1bHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0eXBlIGZvciBTeXN0ZW1UZXN0Q29tbXVuaWNhdG9yOiAke2RhdGEudHlwZX06ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcbiAgICB9XG4gIH1cblxuICBvbk9wZW4gPSAoKSA9PiB7XG4gICAgdGhpcy5mbHVzaFNlbmRRdWV1ZSgpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBkYXRhXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc2VuZChkYXRhKSB7XG4gICAgdGhpcy5fc2VuZFF1ZXVlLnB1c2goZGF0YSlcblxuICAgIGlmICh0aGlzLndzPy5yZWFkeVN0YXRlID09IDEpIHtcbiAgICAgIHRoaXMuZmx1c2hTZW5kUXVldWUoKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kcyBhIGNvbW1hbmQgYW5kIHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gZGF0YSAtIFRoZSBjb21tYW5kIGRhdGEgdG8gc2VuZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlIGRhdGEuXG4gICAqL1xuICBzZW5kQ29tbWFuZChkYXRhKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5fc2VuZFF1ZXVlQ291bnRcblxuICAgICAgdGhpcy5fc2VuZFF1ZXVlQ291bnQgKz0gMVxuICAgICAgdGhpcy5fcmVzcG9uc2VzW2lkXSA9IHtyZXNvbHZlLCByZWplY3R9XG5cbiAgICAgIHRoaXMuc2VuZCh7dHlwZTogXCJjb21tYW5kXCIsIGlkLCBkYXRhfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZFxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGRhdGFcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICByZXNwb25kKGlkLCBkYXRhKSB7XG4gICAgdGhpcy5zZW5kKHt0eXBlOiBcInJlc3BvbnNlXCIsIGlkLCBkYXRhfSlcbiAgfVxufVxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLXRlc3QtY29tbXVuaWNhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N5c3RlbS10ZXN0LWNvbW11bmljYXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosTUFBTSxDQUFDLE9BQU8sT0FBTyxzQkFBc0I7SUFZekM7Ozs7T0FJRztJQUNILFlBQVksRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDO1FBaEIvQiwwRkFBMEY7UUFDMUYsZUFBVSxHQUFHLEVBQUUsQ0FBQTtRQUVmLGtDQUFrQztRQUNsQyxlQUFVLEdBQUcsRUFBRSxDQUFBO1FBRWYsb0JBQWUsR0FBRyxDQUFDLENBQUE7UUFFbkIsK0JBQStCO1FBQy9CLE9BQUUsR0FBRyxJQUFJLENBQUE7UUF3QlQsMkJBQTJCO1FBQzNCLFlBQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDaEQsQ0FBQyxDQUFBO1FBRUQsOEJBQThCO1FBQzlCLGNBQVMsR0FBRyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDNUIseUVBQXlFO1lBQ3pFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7WUFFaEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25CLFNBQVM7WUFDWCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDO29CQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtvQkFFdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQTtnQkFDakMsQ0FBQztnQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO29CQUNmLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO3dCQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUE7b0JBQy9DLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtvQkFDdkMsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO2dCQUV6QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7Z0JBQ2pELENBQUM7Z0JBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFFL0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNwQixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ2xDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQ3BDLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUNuRyxDQUFDO1FBQ0gsQ0FBQyxDQUFBO1FBRUQsV0FBTSxHQUFHLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUN2QixDQUFDLENBQUE7UUE3REMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFDdEIsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUE7WUFFcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtZQUMxQyxDQUFDO1lBRUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBaUREOzs7T0FHRztJQUNILElBQUksQ0FBQyxJQUFJO1FBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFMUIsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLElBQUk7UUFDZCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUE7WUFFL0IsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUE7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUMsQ0FBQTtZQUV2QyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUN4QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN5c3RlbVRlc3RDb21tdW5pY2F0b3Ige1xuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHtyZXNvbHZlOiAoZGF0YTogYW55KSA9PiB2b2lkLCByZWplY3Q6IChkYXRhOiBhbnkpID0+IHZvaWR9Pn0gKi9cbiAgX3Jlc3BvbnNlcyA9IHt9XG5cbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICBfc2VuZFF1ZXVlID0gW11cblxuICBfc2VuZFF1ZXVlQ291bnQgPSAwXG5cbiAgLyoqIEB0eXBlIHtXZWJTb2NrZXQgfCBudWxsfSAqL1xuICB3cyA9IG51bGxcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHsoYXJnczoge2RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT59KSA9PiBQcm9taXNlPGFueT59IGFyZ3Mub25Db21tYW5kXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJncy5wYXJlbnRdXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7b25Db21tYW5kLCBwYXJlbnR9KSB7XG4gICAgdGhpcy5vbkNvbW1hbmQgPSBvbkNvbW1hbmRcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudFxuICB9XG5cbiAgZmx1c2hTZW5kUXVldWUoKSB7XG4gICAgd2hpbGUgKHRoaXMuX3NlbmRRdWV1ZS5sZW5ndGggIT09IDApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9zZW5kUXVldWUuc2hpZnQoKVxuXG4gICAgICBpZiAoIXRoaXMud3MgfHwgdGhpcy53cy5yZWFkeVN0YXRlICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIldlYlNvY2tldCBpcyBub3Qgb3BlblwiKVxuICAgICAgfVxuXG4gICAgICB0aGlzLndzLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpXG4gICAgfVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7RXJyb3J9IGVycm9yICovXG4gIG9uRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKFwib25XZWJTb2NrZXRDbGllbnRFcnJvclwiLCBlcnJvcilcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3N0cmluZ30gcmF3RGF0YSAqL1xuICBvbk1lc3NhZ2UgPSBhc3luYyAocmF3RGF0YSkgPT4ge1xuICAgIC8qKiBAdHlwZSB7e2RhdGE6IGFueSwgaWQ6IG51bWJlciwgdHlwZTogc3RyaW5nLCBpc1RydXN0ZWQ/OiBib29sZWFufX0gKi9cbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyYXdEYXRhKVxuXG4gICAgaWYgKGRhdGEuaXNUcnVzdGVkKSB7XG4gICAgICAvLyBJZ25vcmVcbiAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PSBcImNvbW1hbmRcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5vbkNvbW1hbmQoe2RhdGE6IGRhdGEuZGF0YX0pXG5cbiAgICAgICAgdGhpcy5yZXNwb25kKGRhdGEuaWQsIHtyZXN1bHR9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbmQoZGF0YS5pZCwge2Vycm9yOiBlcnJvci5tZXNzYWdlfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbmQoZGF0YS5pZCwge2Vycm9yOiBlcnJvcn0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PSBcInJlc3BvbnNlXCIpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5fcmVzcG9uc2VzW2RhdGEuaWRdXG5cbiAgICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzdWNoIHJlc3BvbnNlOiAke2RhdGEuaWR9YClcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIHRoaXMuX3Jlc3BvbnNlc1tkYXRhLmlkXVxuXG4gICAgICBpZiAoZGF0YS5kYXRhLmVycm9yKSB7XG4gICAgICAgIHJlc3BvbnNlLnJlamVjdChkYXRhLmRhdGEuZXJyb3IpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZS5yZXNvbHZlKGRhdGEuZGF0YS5yZXN1bHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0eXBlIGZvciBTeXN0ZW1UZXN0Q29tbXVuaWNhdG9yOiAke2RhdGEudHlwZX06ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcbiAgICB9XG4gIH1cblxuICBvbk9wZW4gPSAoKSA9PiB7XG4gICAgdGhpcy5mbHVzaFNlbmRRdWV1ZSgpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBkYXRhXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc2VuZChkYXRhKSB7XG4gICAgdGhpcy5fc2VuZFF1ZXVlLnB1c2goZGF0YSlcblxuICAgIGlmICh0aGlzLndzPy5yZWFkeVN0YXRlID09IDEpIHtcbiAgICAgIHRoaXMuZmx1c2hTZW5kUXVldWUoKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kcyBhIGNvbW1hbmQgYW5kIHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gZGF0YSAtIFRoZSBjb21tYW5kIGRhdGEgdG8gc2VuZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlIGRhdGEuXG4gICAqL1xuICBzZW5kQ29tbWFuZChkYXRhKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5fc2VuZFF1ZXVlQ291bnRcblxuICAgICAgdGhpcy5fc2VuZFF1ZXVlQ291bnQgKz0gMVxuICAgICAgdGhpcy5fcmVzcG9uc2VzW2lkXSA9IHtyZXNvbHZlLCByZWplY3R9XG5cbiAgICAgIHRoaXMuc2VuZCh7dHlwZTogXCJjb21tYW5kXCIsIGlkLCBkYXRhfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZFxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGRhdGFcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICByZXNwb25kKGlkLCBkYXRhKSB7XG4gICAgdGhpcy5zZW5kKHt0eXBlOiBcInJlc3BvbnNlXCIsIGlkLCBkYXRhfSlcbiAgfVxufVxuIl19
@@ -12,7 +12,7 @@ export default class SystemTestHttpServer {
12
12
  _host: string;
13
13
  _port: number;
14
14
  _debug: boolean;
15
- _onError: (error: Error) => void;
15
+ _onError: ((error: Error) => void) | undefined;
16
16
  _started: boolean;
17
17
  _connectHost: string;
18
18
  /** @type {Set<import("node:net").Socket>} */
@@ -33,7 +33,7 @@ export default class SystemTestHttpServer {
33
33
  start(): Promise<void>;
34
34
  /** @returns {Promise<void>} */
35
35
  startHttpServer(): Promise<void>;
36
- httpServer: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
36
+ httpServer: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse> | undefined;
37
37
  /**
38
38
  * @param {{timeoutMs?: number}} [args]
39
39
  * @returns {Promise<void>}
@@ -83,14 +83,15 @@ export default class SystemTestHttpServer {
83
83
  }
84
84
  this._connections.clear();
85
85
  }
86
+ const httpServer = this.httpServer;
86
87
  await new Promise((resolve, reject) => {
87
- this.httpServer.close((error) => {
88
+ httpServer.close((error) => {
88
89
  if (error) {
89
90
  reject(error);
90
91
  }
91
92
  else {
92
93
  this._started = false;
93
- resolve();
94
+ resolve(undefined);
94
95
  }
95
96
  });
96
97
  });
@@ -140,6 +141,7 @@ export default class SystemTestHttpServer {
140
141
  try {
141
142
  await new Promise((resolve, reject) => {
142
143
  const request = http.get(url, (response) => {
144
+ /** @type {Buffer[]} */
143
145
  const chunks = [];
144
146
  response.on("data", (chunk) => chunks.push(chunk));
145
147
  response.on("end", () => {
@@ -183,4 +185,4 @@ export default class SystemTestHttpServer {
183
185
  return message.includes("socket hang up");
184
186
  }
185
187
  }
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLXRlc3QtaHR0cC1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3lzdGVtLXRlc3QtaHR0cC1zZXJ2ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFFdkIsTUFBTSxDQUFDLE9BQU8sT0FBTyxvQkFBb0I7SUFDdkM7O09BRUc7SUFDSCxZQUFZLEVBQUMsSUFBSSxHQUFHLFdBQVcsRUFBRSxJQUFJLEdBQUcsSUFBSSxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBQyxHQUFHLEVBQUU7UUFnRHZGOzs7O1dBSUc7UUFDSCx3QkFBbUIsR0FBRyxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLFFBQVEsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFBO2dCQUN6QixRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dCQUMzQixPQUFNO1lBQ1IsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLFVBQVUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksZ0JBQWdCLEVBQUUsQ0FBQTtZQUNwRSxNQUFNLEVBQUMsUUFBUSxFQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUNoRCxJQUFJLFFBQVEsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxRQUFRLEVBQUUsQ0FBQTtZQUVqRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsUUFBUSxJQUFJLFlBQVksQ0FBQTtZQUMx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dEUsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDM0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBmcyBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiXG5pbXBvcnQgaHR0cCBmcm9tIFwibm9kZTpodHRwXCJcbmltcG9ydCBtaW1lIGZyb20gXCJtaW1lXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3lzdGVtVGVzdEh0dHBTZXJ2ZXIge1xuICAvKipcbiAgICogQHBhcmFtIHt7aG9zdD86IHN0cmluZywgcG9ydD86IG51bWJlciwgZGVidWc/OiBib29sZWFuLCBvbkVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZCwgY29ubmVjdEhvc3Q/OiBzdHJpbmd9fSBbYXJnc11cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtob3N0ID0gXCJsb2NhbGhvc3RcIiwgcG9ydCA9IDE5ODQsIGRlYnVnID0gZmFsc2UsIG9uRXJyb3IsIGNvbm5lY3RIb3N0fSA9IHt9KSB7XG4gICAgdGhpcy5faG9zdCA9IGhvc3RcbiAgICB0aGlzLl9wb3J0ID0gcG9ydFxuICAgIHRoaXMuX2RlYnVnID0gZGVidWdcbiAgICB0aGlzLl9vbkVycm9yID0gb25FcnJvclxuICAgIHRoaXMuX3N0YXJ0ZWQgPSBmYWxzZVxuICAgIHRoaXMuX2Nvbm5lY3RIb3N0ID0gY29ubmVjdEhvc3QgPz8gKGhvc3QgPT09IFwiMC4wLjAuMFwiID8gXCIxMjcuMC4wLjFcIiA6IGhvc3QpXG4gICAgLyoqIEB0eXBlIHtTZXQ8aW1wb3J0KFwibm9kZTpuZXRcIikuU29ja2V0Pn0gKi9cbiAgICB0aGlzLl9jb25uZWN0aW9ucyA9IG5ldyBTZXQoKVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7YW55W119IGFyZ3MgKi9cbiAgZGVidWdFcnJvciguLi5hcmdzKSB7XG4gICAgY29uc29sZS5lcnJvcihcIltTeXN0ZW1UZXN0SHR0cFNlcnZlciBlcnJvcl1cIiwgLi4uYXJncylcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge2FueVtdfSBhcmdzICovXG4gIGRlYnVnTG9nKC4uLmFyZ3MpIHtcbiAgICBpZiAodGhpcy5fZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiW1N5c3RlbVRlc3RIdHRwU2VydmVyXVwiLCAuLi5hcmdzKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gKi9cbiAgYXN5bmMgY2xvc2UoKSB7XG4gICAgaWYgKCF0aGlzLmh0dHBTZXJ2ZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkhUVFAgc2VydmVyIGlzIG5vdCBpbml0aWFsaXplZFwiKVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb25uZWN0aW9ucy5zaXplID4gMCkge1xuICAgICAgZm9yIChjb25zdCBjb25uZWN0aW9uIG9mIHRoaXMuX2Nvbm5lY3Rpb25zKSB7XG4gICAgICAgIGNvbm5lY3Rpb24uZGVzdHJveSgpXG4gICAgICB9XG4gICAgICB0aGlzLl9jb25uZWN0aW9ucy5jbGVhcigpXG4gICAgfVxuXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5odHRwU2VydmVyLmNsb3NlKChlcnJvcikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fc3RhcnRlZCA9IGZhbHNlXG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2h0dHAuSW5jb21pbmdNZXNzYWdlfSByZXF1ZXN0XG4gICAqIEBwYXJhbSB7aHR0cC5TZXJ2ZXJSZXNwb25zZX0gcmVzcG9uc2VcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBvbkh0dHBTZXJ2ZXJSZXF1ZXN0ID0gYXN5bmMgKHJlcXVlc3QsIHJlc3BvbnNlKSA9PiB7XG4gICAgaWYgKCFyZXF1ZXN0LnVybCkge1xuICAgICAgcmVzcG9uc2Uuc3RhdHVzQ29kZSA9IDQwMFxuICAgICAgcmVzcG9uc2UuZW5kKFwiQmFkIFJlcXVlc3RcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGJhc2VVcmwgPSBgaHR0cDovLyR7cmVxdWVzdC5oZWFkZXJzLmhvc3QgfHwgXCJsb2NhbGhvc3Q6MTk4NFwifWBcbiAgICBjb25zdCB7cGF0aG5hbWV9ID0gbmV3IFVSTChyZXF1ZXN0LnVybCwgYmFzZVVybClcbiAgICBsZXQgZmlsZVBhdGggPSBgJHtwcm9jZXNzLmN3ZCgpfS9kaXN0JHtwYXRobmFtZX1gXG5cbiAgICBpZiAoZmlsZVBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG4gICAgICBmaWxlUGF0aCArPSBcImluZGV4Lmh0bWxcIlxuICAgIH1cblxuICAgIGxldCBmaWxlRXhpc3RzXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMuc3RhdChmaWxlUGF0aClcbiAgICAgIGZpbGVFeGlzdHMgPSB0cnVlXG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIGZpbGVFeGlzdHMgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICghZmlsZUV4aXN0cykge1xuICAgICAgZmlsZVBhdGggPSBgJHtwcm9jZXNzLmN3ZCgpfS9kaXN0L2luZGV4Lmh0bWxgXG4gICAgfVxuXG4gICAgbGV0IGZpbGVDb250ZW50XG5cbiAgICB0cnkge1xuICAgICAgZmlsZUNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlUGF0aClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpXG5cbiAgICAgIHRoaXMuZGVidWdFcnJvcihgSFRUUCBzZXJ2ZXIgcmVhZCBmYWlsZWQ6ICR7ZXJyb3JNZXNzYWdlfWApXG4gICAgICByZXNwb25zZS5zdGF0dXNDb2RlID0gNTAwXG4gICAgICByZXNwb25zZS5lbmQoXCJJbnRlcm5hbCBTZXJ2ZXIgRXJyb3JcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IG1pbWVUeXBlID0gbWltZS5nZXRUeXBlKGZpbGVQYXRoKVxuXG4gICAgcmVzcG9uc2Uuc3RhdHVzQ29kZSA9IDIwMFxuXG4gICAgaWYgKG1pbWVUeXBlKSB7XG4gICAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgbWltZVR5cGUpXG4gICAgfVxuXG4gICAgcmVzcG9uc2UuZW5kKGZpbGVDb250ZW50KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAqL1xuICBhc3luYyBzdGFydCgpIHtcbiAgICB0aGlzLmRlYnVnTG9nKGBTdGFydGluZyBIVFRQIHNlcnZlciBvbiAke3RoaXMuX2hvc3R9OiR7dGhpcy5fcG9ydH1gKVxuICAgIGF3YWl0IHRoaXMuc3RhcnRIdHRwU2VydmVyKClcbiAgICB0aGlzLmRlYnVnTG9nKGBIVFRQIHNlcnZlciBzdGFydGVkIG9uICR7dGhpcy5faG9zdH06JHt0aGlzLl9wb3J0fWApXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59ICovXG4gIHN0YXJ0SHR0cFNlcnZlcigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5odHRwU2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIodGhpcy5vbkh0dHBTZXJ2ZXJSZXF1ZXN0KVxuICAgICAgdGhpcy5odHRwU2VydmVyLm9uKFwiY29ubmVjdGlvblwiLCAoY29ubmVjdGlvbikgPT4ge1xuICAgICAgICB0aGlzLl9jb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbilcbiAgICAgICAgY29ubmVjdGlvbi5vbihcImNsb3NlXCIsICgpID0+IHtcbiAgICAgICAgICB0aGlzLl9jb25uZWN0aW9ucy5kZWxldGUoY29ubmVjdGlvbilcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICB0aGlzLmh0dHBTZXJ2ZXIub24oXCJlcnJvclwiLCAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpXG5cbiAgICAgICAgdGhpcy5kZWJ1Z0Vycm9yKGBIVFRQIHNlcnZlciBlcnJvcjogJHtlcnJvck1lc3NhZ2V9YClcblxuICAgICAgICBpZiAodGhpcy5fc3RhcnRlZCkge1xuICAgICAgICAgIGlmICh0aGlzLl9vbkVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkVycm9yKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICB0aGlzLmh0dHBTZXJ2ZXIubGlzdGVuKHRoaXMuX3BvcnQsIHRoaXMuX2hvc3QsICgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RhcnRlZCA9IHRydWVcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHt7dGltZW91dE1zPzogbnVtYmVyfX0gW2FyZ3NdXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgYXNzZXJ0UmVhY2hhYmxlKHt0aW1lb3V0TXMgPSA1MDAwfSA9IHt9KSB7XG4gICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3RoaXMuX2Nvbm5lY3RIb3N0fToke3RoaXMuX3BvcnR9L2BcbiAgICBjb25zdCBtYXhBdHRlbXB0cyA9IDNcblxuICAgIGZvciAobGV0IGF0dGVtcHQgPSAxOyBhdHRlbXB0IDw9IG1heEF0dGVtcHRzOyBhdHRlbXB0KyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gaHR0cC5nZXQodXJsLCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNodW5rcyA9IFtdXG5cbiAgICAgICAgICAgIHJlc3BvbnNlLm9uKFwiZGF0YVwiLCAoY2h1bmspID0+IGNodW5rcy5wdXNoKGNodW5rKSlcbiAgICAgICAgICAgIHJlc3BvbnNlLm9uKFwiZW5kXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgYm9keSA9IEJ1ZmZlci5jb25jYXQoY2h1bmtzKS50b1N0cmluZyhcInV0ZjhcIilcblxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgSFRUUCBzZXJ2ZXIgaGVhbHRoIGNoZWNrIGZhaWxlZCB3aXRoIHN0YXR1cyAke3Jlc3BvbnNlLnN0YXR1c0NvZGV9IGZvciAke3VybH06ICR7Ym9keS5zbGljZSgwLCAyMDApfWApKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXF1ZXN0Lm9uKFwiZXJyb3JcIiwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKVxuXG4gICAgICAgICAgcmVxdWVzdC5zZXRUaW1lb3V0KHRpbWVvdXRNcywgKCkgPT4ge1xuICAgICAgICAgICAgcmVxdWVzdC5kZXN0cm95KG5ldyBFcnJvcihgSFRUUCBzZXJ2ZXIgaGVhbHRoIGNoZWNrIHRpbWVkIG91dCBhZnRlciAke3RpbWVvdXRNc31tcyBmb3IgJHt1cmx9YCkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChhdHRlbXB0ID09PSBtYXhBdHRlbXB0cyB8fCAhdGhpcy5pc1JldHJ5YWJsZUhlYWx0aENoZWNrRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMCkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gZXJyb3JcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBpc1JldHJ5YWJsZUhlYWx0aENoZWNrRXJyb3IoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgJiYgdHlwZW9mIGVycm9yID09PSBcIm9iamVjdFwiICYmIFwiY29kZVwiIGluIGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IuY29kZSA9PT0gXCJFQ09OTlJFU0VUXCIpIHJldHVybiB0cnVlXG4gICAgICBpZiAoZXJyb3IuY29kZSA9PT0gXCJFQ09OTlJFRlVTRURcIikgcmV0dXJuIHRydWVcbiAgICAgIGlmIChlcnJvci5jb2RlID09PSBcIkVUSU1FRE9VVFwiKSByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcblxuICAgIHJldHVybiBtZXNzYWdlLmluY2x1ZGVzKFwic29ja2V0IGhhbmcgdXBcIilcbiAgfVxufVxuIl19
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLXRlc3QtaHR0cC1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3lzdGVtLXRlc3QtaHR0cC1zZXJ2ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFFdkIsTUFBTSxDQUFDLE9BQU8sT0FBTyxvQkFBb0I7SUFDdkM7O09BRUc7SUFDSCxZQUFZLEVBQUMsSUFBSSxHQUFHLFdBQVcsRUFBRSxJQUFJLEdBQUcsSUFBSSxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBQyxHQUFHLEVBQUU7UUFrRHZGOzs7O1dBSUc7UUFDSCx3QkFBbUIsR0FBRyxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLFFBQVEsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFBO2dCQUN6QixRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dCQUMzQixPQUFNO1lBQ1IsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLFVBQVUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksZ0JBQWdCLEVBQUUsQ0FBQTtZQUNwRSxNQUFNLEVBQUMsUUFBUSxFQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUNoRCxJQUFJLFFBQVEsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxRQUFRLEVBQUUsQ0FBQTtZQUVqRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsUUFBUSxJQUFJLFlBQVksQ0FBQTtZQUMx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QUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUV0RSxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCJcbmltcG9ydCBodHRwIGZyb20gXCJub2RlOmh0dHBcIlxuaW1wb3J0IG1pbWUgZnJvbSBcIm1pbWVcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTeXN0ZW1UZXN0SHR0cFNlcnZlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3tob3N0Pzogc3RyaW5nLCBwb3J0PzogbnVtYmVyLCBkZWJ1Zz86IGJvb2xlYW4sIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkLCBjb25uZWN0SG9zdD86IHN0cmluZ319IFthcmdzXVxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2hvc3QgPSBcImxvY2FsaG9zdFwiLCBwb3J0ID0gMTk4NCwgZGVidWcgPSBmYWxzZSwgb25FcnJvciwgY29ubmVjdEhvc3R9ID0ge30pIHtcbiAgICB0aGlzLl9ob3N0ID0gaG9zdFxuICAgIHRoaXMuX3BvcnQgPSBwb3J0XG4gICAgdGhpcy5fZGVidWcgPSBkZWJ1Z1xuICAgIHRoaXMuX29uRXJyb3IgPSBvbkVycm9yXG4gICAgdGhpcy5fc3RhcnRlZCA9IGZhbHNlXG4gICAgdGhpcy5fY29ubmVjdEhvc3QgPSBjb25uZWN0SG9zdCA/PyAoaG9zdCA9PT0gXCIwLjAuMC4wXCIgPyBcIjEyNy4wLjAuMVwiIDogaG9zdClcbiAgICAvKiogQHR5cGUge1NldDxpbXBvcnQoXCJub2RlOm5ldFwiKS5Tb2NrZXQ+fSAqL1xuICAgIHRoaXMuX2Nvbm5lY3Rpb25zID0gbmV3IFNldCgpXG4gIH1cblxuICAvKiogQHBhcmFtIHthbnlbXX0gYXJncyAqL1xuICBkZWJ1Z0Vycm9yKC4uLmFyZ3MpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiW1N5c3RlbVRlc3RIdHRwU2VydmVyIGVycm9yXVwiLCAuLi5hcmdzKVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7YW55W119IGFyZ3MgKi9cbiAgZGVidWdMb2coLi4uYXJncykge1xuICAgIGlmICh0aGlzLl9kZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJbU3lzdGVtVGVzdEh0dHBTZXJ2ZXJdXCIsIC4uLmFyZ3MpXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAqL1xuICBhc3luYyBjbG9zZSgpIHtcbiAgICBpZiAoIXRoaXMuaHR0cFNlcnZlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSFRUUCBzZXJ2ZXIgaXMgbm90IGluaXRpYWxpemVkXCIpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2Nvbm5lY3Rpb25zLnNpemUgPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb24gb2YgdGhpcy5fY29ubmVjdGlvbnMpIHtcbiAgICAgICAgY29ubmVjdGlvbi5kZXN0cm95KClcbiAgICAgIH1cbiAgICAgIHRoaXMuX2Nvbm5lY3Rpb25zLmNsZWFyKClcbiAgICB9XG5cbiAgICBjb25zdCBodHRwU2VydmVyID0gdGhpcy5odHRwU2VydmVyXG5cbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBodHRwU2VydmVyLmNsb3NlKChlcnJvcikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fc3RhcnRlZCA9IGZhbHNlXG4gICAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2h0dHAuSW5jb21pbmdNZXNzYWdlfSByZXF1ZXN0XG4gICAqIEBwYXJhbSB7aHR0cC5TZXJ2ZXJSZXNwb25zZX0gcmVzcG9uc2VcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBvbkh0dHBTZXJ2ZXJSZXF1ZXN0ID0gYXN5bmMgKHJlcXVlc3QsIHJlc3BvbnNlKSA9PiB7XG4gICAgaWYgKCFyZXF1ZXN0LnVybCkge1xuICAgICAgcmVzcG9uc2Uuc3RhdHVzQ29kZSA9IDQwMFxuICAgICAgcmVzcG9uc2UuZW5kKFwiQmFkIFJlcXVlc3RcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGJhc2VVcmwgPSBgaHR0cDovLyR7cmVxdWVzdC5oZWFkZXJzLmhvc3QgfHwgXCJsb2NhbGhvc3Q6MTk4NFwifWBcbiAgICBjb25zdCB7cGF0aG5hbWV9ID0gbmV3IFVSTChyZXF1ZXN0LnVybCwgYmFzZVVybClcbiAgICBsZXQgZmlsZVBhdGggPSBgJHtwcm9jZXNzLmN3ZCgpfS9kaXN0JHtwYXRobmFtZX1gXG5cbiAgICBpZiAoZmlsZVBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG4gICAgICBmaWxlUGF0aCArPSBcImluZGV4Lmh0bWxcIlxuICAgIH1cblxuICAgIGxldCBmaWxlRXhpc3RzXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMuc3RhdChmaWxlUGF0aClcbiAgICAgIGZpbGVFeGlzdHMgPSB0cnVlXG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIGZpbGVFeGlzdHMgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICghZmlsZUV4aXN0cykge1xuICAgICAgZmlsZVBhdGggPSBgJHtwcm9jZXNzLmN3ZCgpfS9kaXN0L2luZGV4Lmh0bWxgXG4gICAgfVxuXG4gICAgbGV0IGZpbGVDb250ZW50XG5cbiAgICB0cnkge1xuICAgICAgZmlsZUNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlUGF0aClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpXG5cbiAgICAgIHRoaXMuZGVidWdFcnJvcihgSFRUUCBzZXJ2ZXIgcmVhZCBmYWlsZWQ6ICR7ZXJyb3JNZXNzYWdlfWApXG4gICAgICByZXNwb25zZS5zdGF0dXNDb2RlID0gNTAwXG4gICAgICByZXNwb25zZS5lbmQoXCJJbnRlcm5hbCBTZXJ2ZXIgRXJyb3JcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IG1pbWVUeXBlID0gbWltZS5nZXRUeXBlKGZpbGVQYXRoKVxuXG4gICAgcmVzcG9uc2Uuc3RhdHVzQ29kZSA9IDIwMFxuXG4gICAgaWYgKG1pbWVUeXBlKSB7XG4gICAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgbWltZVR5cGUpXG4gICAgfVxuXG4gICAgcmVzcG9uc2UuZW5kKGZpbGVDb250ZW50KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAqL1xuICBhc3luYyBzdGFydCgpIHtcbiAgICB0aGlzLmRlYnVnTG9nKGBTdGFydGluZyBIVFRQIHNlcnZlciBvbiAke3RoaXMuX2hvc3R9OiR7dGhpcy5fcG9ydH1gKVxuICAgIGF3YWl0IHRoaXMuc3RhcnRIdHRwU2VydmVyKClcbiAgICB0aGlzLmRlYnVnTG9nKGBIVFRQIHNlcnZlciBzdGFydGVkIG9uICR7dGhpcy5faG9zdH06JHt0aGlzLl9wb3J0fWApXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59ICovXG4gIHN0YXJ0SHR0cFNlcnZlcigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5odHRwU2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIodGhpcy5vbkh0dHBTZXJ2ZXJSZXF1ZXN0KVxuICAgICAgdGhpcy5odHRwU2VydmVyLm9uKFwiY29ubmVjdGlvblwiLCAoY29ubmVjdGlvbikgPT4ge1xuICAgICAgICB0aGlzLl9jb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbilcbiAgICAgICAgY29ubmVjdGlvbi5vbihcImNsb3NlXCIsICgpID0+IHtcbiAgICAgICAgICB0aGlzLl9jb25uZWN0aW9ucy5kZWxldGUoY29ubmVjdGlvbilcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICB0aGlzLmh0dHBTZXJ2ZXIub24oXCJlcnJvclwiLCAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpXG5cbiAgICAgICAgdGhpcy5kZWJ1Z0Vycm9yKGBIVFRQIHNlcnZlciBlcnJvcjogJHtlcnJvck1lc3NhZ2V9YClcblxuICAgICAgICBpZiAodGhpcy5fc3RhcnRlZCkge1xuICAgICAgICAgIGlmICh0aGlzLl9vbkVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkVycm9yKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICB0aGlzLmh0dHBTZXJ2ZXIubGlzdGVuKHRoaXMuX3BvcnQsIHRoaXMuX2hvc3QsICgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RhcnRlZCA9IHRydWVcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHt7dGltZW91dE1zPzogbnVtYmVyfX0gW2FyZ3NdXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgYXNzZXJ0UmVhY2hhYmxlKHt0aW1lb3V0TXMgPSA1MDAwfSA9IHt9KSB7XG4gICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3RoaXMuX2Nvbm5lY3RIb3N0fToke3RoaXMuX3BvcnR9L2BcbiAgICBjb25zdCBtYXhBdHRlbXB0cyA9IDNcblxuICAgIGZvciAobGV0IGF0dGVtcHQgPSAxOyBhdHRlbXB0IDw9IG1heEF0dGVtcHRzOyBhdHRlbXB0KyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gaHR0cC5nZXQodXJsLCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIC8qKiBAdHlwZSB7QnVmZmVyW119ICovXG4gICAgICAgICAgICBjb25zdCBjaHVua3MgPSBbXVxuXG4gICAgICAgICAgICByZXNwb25zZS5vbihcImRhdGFcIiwgKGNodW5rKSA9PiBjaHVua3MucHVzaChjaHVuaykpXG4gICAgICAgICAgICByZXNwb25zZS5vbihcImVuZFwiLCAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGJvZHkgPSBCdWZmZXIuY29uY2F0KGNodW5rcykudG9TdHJpbmcoXCJ1dGY4XCIpXG5cbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYEhUVFAgc2VydmVyIGhlYWx0aCBjaGVjayBmYWlsZWQgd2l0aCBzdGF0dXMgJHtyZXNwb25zZS5zdGF0dXNDb2RlfSBmb3IgJHt1cmx9OiAke2JvZHkuc2xpY2UoMCwgMjAwKX1gKSlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJlc29sdmUodW5kZWZpbmVkKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmVxdWVzdC5vbihcImVycm9yXCIsIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSlcblxuICAgICAgICAgIHJlcXVlc3Quc2V0VGltZW91dCh0aW1lb3V0TXMsICgpID0+IHtcbiAgICAgICAgICAgIHJlcXVlc3QuZGVzdHJveShuZXcgRXJyb3IoYEhUVFAgc2VydmVyIGhlYWx0aCBjaGVjayB0aW1lZCBvdXQgYWZ0ZXIgJHt0aW1lb3V0TXN9bXMgZm9yICR7dXJsfWApKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoYXR0ZW1wdCA9PT0gbWF4QXR0ZW1wdHMgfHwgIXRoaXMuaXNSZXRyeWFibGVIZWFsdGhDaGVja0Vycm9yKGVycm9yKSkge1xuICAgICAgICAgIHRocm93IGVycm9yXG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDApKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3Vua25vd259IGVycm9yXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaXNSZXRyeWFibGVIZWFsdGhDaGVja0Vycm9yKGVycm9yKSB7XG4gICAgaWYgKGVycm9yICYmIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBcImNvZGVcIiBpbiBlcnJvcikge1xuICAgICAgaWYgKGVycm9yLmNvZGUgPT09IFwiRUNPTk5SRVNFVFwiKSByZXR1cm4gdHJ1ZVxuICAgICAgaWYgKGVycm9yLmNvZGUgPT09IFwiRUNPTk5SRUZVU0VEXCIpIHJldHVybiB0cnVlXG4gICAgICBpZiAoZXJyb3IuY29kZSA9PT0gXCJFVElNRURPVVRcIikgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpXG5cbiAgICByZXR1cm4gbWVzc2FnZS5pbmNsdWRlcyhcInNvY2tldCBoYW5nIHVwXCIpXG4gIH1cbn1cbiJdfQ==
@@ -1,40 +1,3 @@
1
- /**
2
- * @typedef {object} SystemTestArgs
3
- * @property {string} [host] Hostname for the app server.
4
- * @property {number} [port] Port for the app server.
5
- * @property {string} [httpHost] Hostname for the static HTTP server.
6
- * @property {number} [httpPort] Port for the static HTTP server.
7
- * @property {string} [httpConnectHost] Hostname used by the driver to reach the HTTP server.
8
- * @property {boolean} [debug] Enable debug logging.
9
- * @property {(error: any) => boolean} [errorFilter] Filter for browser errors (return false to ignore).
10
- * @property {number} [clientWsPort] Port for the browser-command WebSocket server.
11
- * @property {number} [scoundrelPort] Port for the Scoundrel WebSocket server.
12
- * @property {Record<string, any>} [urlArgs] Query params appended to the root path.
13
- * @property {SystemTestDriverConfig} [driver] Driver configuration.
14
- */
15
- /**
16
- * @typedef {object} SystemTestDriverConfig
17
- * @property {"selenium"|"appium"} [type] Driver implementation to use.
18
- * @property {Record<string, any>} [options] Driver-specific options.
19
- */
20
- /**
21
- * @typedef {object} FindArgs
22
- * @property {number} [timeout] Override timeout for lookup.
23
- * @property {boolean | null} [visible] Whether to require elements to be visible (`true`) or hidden (`false`). Use `null` to disable visibility filtering.
24
- * @property {boolean} [scrollTo] Whether to scroll found elements into view before returning them.
25
- * @property {boolean} [useBaseSelector] Whether to scope by the base selector.
26
- */
27
- /**
28
- * @typedef {FindArgs & {withFallback?: boolean}} InteractArgs
29
- */
30
- /**
31
- * @typedef {object} WaitForNoSelectorArgs
32
- * @property {boolean} [useBaseSelector] Whether to scope by the base selector.
33
- */
34
- /**
35
- * @typedef {object} NotificationMessageArgs
36
- * @property {boolean} [dismiss] Whether to dismiss the notification after it appears.
37
- */
38
1
  export default class SystemTest extends Browser {
39
2
  static rootPath: string;
40
3
  /**
@@ -67,8 +30,8 @@ export default class SystemTest extends Browser {
67
30
  _clientWsPort: number;
68
31
  _httpHost: string;
69
32
  _httpPort: number;
70
- /** @type {(error: any) => boolean | undefined} */
71
- _errorFilter: (error: any) => boolean | undefined;
33
+ /** @type {((error: any) => boolean) | undefined} */
34
+ _errorFilter: ((error: any) => boolean) | undefined;
72
35
  _scoundrelPort: number;
73
36
  /** @type {WebSocketServer | undefined} */
74
37
  scoundrelWss: WebSocketServer | undefined;
@@ -96,8 +59,8 @@ export default class SystemTest extends Browser {
96
59
  }): boolean;
97
60
  _host: string;
98
61
  _port: number;
99
- _httpConnectHost: string;
100
- _urlArgs: Record<string, any>;
62
+ _httpConnectHost: string | undefined;
63
+ _urlArgs: Record<string, any> | undefined;
101
64
  _rootPath: string;
102
65
  /** @type {Record<number, object>} */
103
66
  _responses: Record<number, object>;
@@ -107,8 +70,8 @@ export default class SystemTest extends Browser {
107
70
  * @returns {void}
108
71
  */
109
72
  startScoundrel(): void;
110
- serverWebSocket: ServerWebSocket;
111
- server: Server;
73
+ serverWebSocket: ServerWebSocket | undefined;
74
+ server: Server | undefined;
112
75
  /**
113
76
  * @returns {Promise<void>}
114
77
  */
@@ -150,8 +113,8 @@ export default class SystemTest extends Browser {
150
113
  * @returns {Promise<void>}
151
114
  */
152
115
  start(): Promise<void>;
153
- currentUrl: string;
154
- systemTestHttpServer: SystemTestHttpServer;
116
+ currentUrl: string | undefined;
117
+ systemTestHttpServer: SystemTestHttpServer | undefined;
155
118
  /**
156
119
  * @returns {string}
157
120
  */
@@ -165,13 +128,13 @@ export default class SystemTest extends Browser {
165
128
  * @returns {Promise<void>}
166
129
  */
167
130
  waitForClientWebSocket(): Promise<void>;
168
- waitForClientWebSocketPromiseReject: (reason?: any) => void;
169
- waitForClientWebSocketPromiseResolve: (value: any) => void;
131
+ waitForClientWebSocketPromiseReject: ((reason?: any) => void) | undefined;
132
+ waitForClientWebSocketPromiseResolve: ((value: any) => void) | undefined;
170
133
  /**
171
- * Starts the web socket server
172
- * @returns {void}
134
+ * Starts the web socket server and waits for it to be ready.
135
+ * @returns {Promise<void>}
173
136
  */
174
- startWebSocketServer(): void;
137
+ startWebSocketServer(): Promise<void>;
175
138
  /**
176
139
  * Sets the on command callback
177
140
  * @param {function({type: string, data: Record<string, any>}): Promise<void>} callback
@@ -181,22 +144,17 @@ export default class SystemTest extends Browser {
181
144
  type: string;
182
145
  data: Record<string, any>;
183
146
  }) => Promise<void>): void;
184
- _onCommandCallback: (arg0: {
147
+ _onCommandCallback: ((arg0: {
185
148
  type: string;
186
149
  data: Record<string, any>;
187
- }) => Promise<void>;
150
+ }) => Promise<void>) | undefined;
188
151
  /**
189
152
  * Handles a command received from the browser
190
- * @param {{data: {message: string, backtrace?: string, type: string, value: any[]}}} args
153
+ * @param {{data: Record<string, any>}} args
191
154
  * @returns {Promise<any>}
192
155
  */
193
156
  onCommandReceived: ({ data }: {
194
- data: {
195
- message: string;
196
- backtrace?: string;
197
- type: string;
198
- value: any[];
199
- };
157
+ data: Record<string, any>;
200
158
  }) => Promise<any>;
201
159
  /**
202
160
  * Handles a new web socket connection
@@ -204,20 +162,15 @@ export default class SystemTest extends Browser {
204
162
  * @returns {Promise<void>}
205
163
  */
206
164
  onWebSocketConnection: (ws: WebSocket) => Promise<void>;
207
- ws: WebSocket;
165
+ ws: WebSocket | null | undefined;
208
166
  /** @returns {void} */
209
167
  onWebSocketClose: () => void;
210
168
  /**
211
169
  * Handles an error reported from the browser
212
- * @param {object} data
213
- * @param {string} data.message
214
- * @param {string} [data.backtrace]
170
+ * @param {Record<string, any>} data
215
171
  * @returns {void}
216
172
  */
217
- handleError(data: {
218
- message: string;
219
- backtrace?: string;
220
- }): void;
173
+ handleError(data: Record<string, any>): void;
221
174
  /**
222
175
  * Stops the system test
223
176
  * @returns {Promise<void>}
@@ -239,75 +192,75 @@ export type SystemTestArgs = {
239
192
  /**
240
193
  * Hostname for the app server.
241
194
  */
242
- host?: string;
195
+ host?: string | undefined;
243
196
  /**
244
197
  * Port for the app server.
245
198
  */
246
- port?: number;
199
+ port?: number | undefined;
247
200
  /**
248
201
  * Hostname for the static HTTP server.
249
202
  */
250
- httpHost?: string;
203
+ httpHost?: string | undefined;
251
204
  /**
252
205
  * Port for the static HTTP server.
253
206
  */
254
- httpPort?: number;
207
+ httpPort?: number | undefined;
255
208
  /**
256
209
  * Hostname used by the driver to reach the HTTP server.
257
210
  */
258
- httpConnectHost?: string;
211
+ httpConnectHost?: string | undefined;
259
212
  /**
260
213
  * Enable debug logging.
261
214
  */
262
- debug?: boolean;
215
+ debug?: boolean | undefined;
263
216
  /**
264
217
  * Filter for browser errors (return false to ignore).
265
218
  */
266
- errorFilter?: (error: any) => boolean;
219
+ errorFilter?: ((error: any) => boolean) | undefined;
267
220
  /**
268
221
  * Port for the browser-command WebSocket server.
269
222
  */
270
- clientWsPort?: number;
223
+ clientWsPort?: number | undefined;
271
224
  /**
272
225
  * Port for the Scoundrel WebSocket server.
273
226
  */
274
- scoundrelPort?: number;
227
+ scoundrelPort?: number | undefined;
275
228
  /**
276
229
  * Query params appended to the root path.
277
230
  */
278
- urlArgs?: Record<string, any>;
231
+ urlArgs?: Record<string, any> | undefined;
279
232
  /**
280
233
  * Driver configuration.
281
234
  */
282
- driver?: SystemTestDriverConfig;
235
+ driver?: SystemTestDriverConfig | undefined;
283
236
  };
284
237
  export type SystemTestDriverConfig = {
285
238
  /**
286
239
  * Driver implementation to use.
287
240
  */
288
- type?: "selenium" | "appium";
241
+ type?: "appium" | "selenium" | undefined;
289
242
  /**
290
243
  * Driver-specific options.
291
244
  */
292
- options?: Record<string, any>;
245
+ options?: Record<string, any> | undefined;
293
246
  };
294
247
  export type FindArgs = {
295
248
  /**
296
249
  * Override timeout for lookup.
297
250
  */
298
- timeout?: number;
251
+ timeout?: number | undefined;
299
252
  /**
300
253
  * Whether to require elements to be visible (`true`) or hidden (`false`). Use `null` to disable visibility filtering.
301
254
  */
302
- visible?: boolean | null;
255
+ visible?: boolean | null | undefined;
303
256
  /**
304
257
  * Whether to scroll found elements into view before returning them.
305
258
  */
306
- scrollTo?: boolean;
259
+ scrollTo?: boolean | undefined;
307
260
  /**
308
261
  * Whether to scope by the base selector.
309
262
  */
310
- useBaseSelector?: boolean;
263
+ useBaseSelector?: boolean | undefined;
311
264
  };
312
265
  export type InteractArgs = FindArgs & {
313
266
  withFallback?: boolean;
@@ -316,13 +269,13 @@ export type WaitForNoSelectorArgs = {
316
269
  /**
317
270
  * Whether to scope by the base selector.
318
271
  */
319
- useBaseSelector?: boolean;
272
+ useBaseSelector?: boolean | undefined;
320
273
  };
321
274
  export type NotificationMessageArgs = {
322
275
  /**
323
276
  * Whether to dismiss the notification after it appears.
324
277
  */
325
- dismiss?: boolean;
278
+ dismiss?: boolean | undefined;
326
279
  };
327
280
  import Browser from "./browser.js";
328
281
  import { WebSocketServer } from "ws";