UNPKG

@browserstack/testcafe

Version:

Automated browser testing for the modern web development stack.

64 lines 9.37 kB
"use strict"; 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==