@browserstack/testcafe
Version:
Automated browser testing for the modern web development stack.
64 lines • 9.37 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const io_1 = require("./io");
const async_event_emitter_1 = __importDefault(require("../../../utils/async-event-emitter"));
const runtime_1 = require("../../../errors/runtime");
const types_1 = require("../../../errors/types");
const interfaces_1 = require("./interfaces");
class HostTransport extends async_event_emitter_1.default {
constructor(inputStream, outputStream, syncStream) {
super();
this.asyncReader = new io_1.AsyncReader(inputStream);
this.asyncWriter = new io_1.AsyncWriter(outputStream);
this.syncReader = new io_1.AsyncReader(syncStream);
this.syncWriter = new io_1.AsyncWriter(syncStream);
this.readers = [this.asyncReader, this.syncReader];
}
read() {
this.readers.forEach(reader => {
reader.on('data', data => this.emit('data', data));
reader.read();
});
}
async write(message) {
const writer = message.sync ? this.syncWriter : this.asyncWriter;
await writer.write(message);
}
readSync() {
throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.methodIsNotAvailableForAnIPCHost);
}
writeSync() {
throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.methodIsNotAvailableForAnIPCHost);
}
}
exports.HostTransport = HostTransport;
class ServiceTransport extends async_event_emitter_1.default {
constructor(inputStream, outputStream, syncFd) {
super();
this.asyncReader = new io_1.AsyncReader(inputStream);
this.asyncWriter = new io_1.AsyncWriter(outputStream);
this.syncReader = new io_1.SyncReader(syncFd);
this.syncWriter = new io_1.SyncWriter(syncFd);
}
read() {
this.asyncReader.on('data', data => this.emit('data', data));
this.asyncReader.read();
}
async write(message) {
await this.asyncWriter.write(message);
}
readSync() {
const message = this.syncReader.readSync();
if (!interfaces_1.isIPCResponsePacket(message))
throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.malformedIPCMessage);
return message;
}
writeSync(message) {
this.syncWriter.writeSync(message);
}
}
exports.ServiceTransport = ServiceTransport;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3V0aWxzL2lwYy90cmFuc3BvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBd0U7QUFDeEUsNkZBQThEO0FBQzlELHFEQUF1RDtBQUN2RCxpREFBdUQ7QUFDdkQsNkNBQStGO0FBRy9GLE1BQWEsYUFBYyxTQUFRLDZCQUFZO0lBUTNDLFlBQW9CLFdBQWtDLEVBQUUsWUFBbUMsRUFBRSxVQUF5RDtRQUNsSixLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxnQkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxnQkFBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQkFBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQkFBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sSUFBSTtRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzFCLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuRCxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBRSxPQUFrQjtRQUNsQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRWpFLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sUUFBUTtRQUNYLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sU0FBUztRQUNaLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0NBQ0o7QUF4Q0Qsc0NBd0NDO0FBR0QsTUFBYSxnQkFBaUIsU0FBUSw2QkFBWTtJQU05QyxZQUFvQixXQUFrQyxFQUFFLFlBQW1DLEVBQUUsTUFBYztRQUN2RyxLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxnQkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxnQkFBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxlQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sSUFBSTtRQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBRSxPQUFrQjtRQUNsQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxRQUFRO1FBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUzQyxJQUFJLENBQUMsZ0NBQW1CLENBQUMsT0FBTyxDQUFDO1lBQzdCLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUvRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRU0sU0FBUyxDQUFFLE9BQWtCO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDSjtBQXJDRCw0Q0FxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1JlYWRlciwgQXN5bmNXcml0ZXIsIFN5bmNSZWFkZXIsIFN5bmNXcml0ZXIgfSBmcm9tICcuL2lvJztcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXN5bmMtZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBJUENQYWNrZXQsIElQQ1Jlc3BvbnNlUGFja2V0LCBJUENUcmFuc3BvcnQsIGlzSVBDUmVzcG9uc2VQYWNrZXQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5cbmV4cG9ydCBjbGFzcyBIb3N0VHJhbnNwb3J0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIGltcGxlbWVudHMgSVBDVHJhbnNwb3J0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFzeW5jUmVhZGVyOiBBc3luY1JlYWRlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFzeW5jV3JpdGVyOiBBc3luY1dyaXRlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN5bmNSZWFkZXI6IEFzeW5jUmVhZGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3luY1dyaXRlcjogQXN5bmNXcml0ZXI7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlYWRlcnM6IEFzeW5jUmVhZGVyW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGlucHV0U3RyZWFtOiBOb2RlSlMuUmVhZGFibGVTdHJlYW0sIG91dHB1dFN0cmVhbTogTm9kZUpTLldyaXRhYmxlU3RyZWFtLCBzeW5jU3RyZWFtOiBOb2RlSlMuUmVhZGFibGVTdHJlYW0gJiBOb2RlSlMuV3JpdGFibGVTdHJlYW0pIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLmFzeW5jUmVhZGVyID0gbmV3IEFzeW5jUmVhZGVyKGlucHV0U3RyZWFtKTtcbiAgICAgICAgdGhpcy5hc3luY1dyaXRlciA9IG5ldyBBc3luY1dyaXRlcihvdXRwdXRTdHJlYW0pO1xuXG4gICAgICAgIHRoaXMuc3luY1JlYWRlciA9IG5ldyBBc3luY1JlYWRlcihzeW5jU3RyZWFtKTtcbiAgICAgICAgdGhpcy5zeW5jV3JpdGVyID0gbmV3IEFzeW5jV3JpdGVyKHN5bmNTdHJlYW0pO1xuXG4gICAgICAgIHRoaXMucmVhZGVycyA9IFt0aGlzLmFzeW5jUmVhZGVyLCB0aGlzLnN5bmNSZWFkZXJdO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWFkICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWFkZXJzLmZvckVhY2gocmVhZGVyID0+IHtcbiAgICAgICAgICAgIHJlYWRlci5vbignZGF0YScsIGRhdGEgPT4gdGhpcy5lbWl0KCdkYXRhJywgZGF0YSkpO1xuICAgICAgICAgICAgcmVhZGVyLnJlYWQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHdyaXRlIChtZXNzYWdlOiBJUENQYWNrZXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgd3JpdGVyID0gbWVzc2FnZS5zeW5jID8gdGhpcy5zeW5jV3JpdGVyIDogdGhpcy5hc3luY1dyaXRlcjtcblxuICAgICAgICBhd2FpdCB3cml0ZXIud3JpdGUobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlYWRTeW5jICgpOiBuZXZlciB7XG4gICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMubWV0aG9kSXNOb3RBdmFpbGFibGVGb3JBbklQQ0hvc3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVN5bmMgKCk6IG5ldmVyIHtcbiAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5tZXRob2RJc05vdEF2YWlsYWJsZUZvckFuSVBDSG9zdCk7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlVHJhbnNwb3J0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIGltcGxlbWVudHMgSVBDVHJhbnNwb3J0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFzeW5jUmVhZGVyOiBBc3luY1JlYWRlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFzeW5jV3JpdGVyOiBBc3luY1dyaXRlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN5bmNSZWFkZXI6IFN5bmNSZWFkZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzeW5jV3JpdGVyOiBTeW5jV3JpdGVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChpbnB1dFN0cmVhbTogTm9kZUpTLlJlYWRhYmxlU3RyZWFtLCBvdXRwdXRTdHJlYW06IE5vZGVKUy5Xcml0YWJsZVN0cmVhbSwgc3luY0ZkOiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLmFzeW5jUmVhZGVyID0gbmV3IEFzeW5jUmVhZGVyKGlucHV0U3RyZWFtKTtcbiAgICAgICAgdGhpcy5hc3luY1dyaXRlciA9IG5ldyBBc3luY1dyaXRlcihvdXRwdXRTdHJlYW0pO1xuXG4gICAgICAgIHRoaXMuc3luY1JlYWRlciA9IG5ldyBTeW5jUmVhZGVyKHN5bmNGZCk7XG4gICAgICAgIHRoaXMuc3luY1dyaXRlciA9IG5ldyBTeW5jV3JpdGVyKHN5bmNGZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlYWQgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFzeW5jUmVhZGVyLm9uKCdkYXRhJywgZGF0YSA9PiB0aGlzLmVtaXQoJ2RhdGEnLCBkYXRhKSk7XG4gICAgICAgIHRoaXMuYXN5bmNSZWFkZXIucmVhZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB3cml0ZSAobWVzc2FnZTogSVBDUGFja2V0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuYXN5bmNXcml0ZXIud3JpdGUobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlYWRTeW5jICgpOiBJUENSZXNwb25zZVBhY2tldCB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnN5bmNSZWFkZXIucmVhZFN5bmMoKTtcblxuICAgICAgICBpZiAoIWlzSVBDUmVzcG9uc2VQYWNrZXQobWVzc2FnZSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLm1hbGZvcm1lZElQQ01lc3NhZ2UpO1xuXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVN5bmMgKG1lc3NhZ2U6IElQQ1BhY2tldCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN5bmNXcml0ZXIud3JpdGVTeW5jKG1lc3NhZ2UpO1xuICAgIH1cbn1cbiJdfQ==