UNPKG

@appium/base-driver

Version:

Base driver class for Appium drivers

67 lines 2.38 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_WS_PATHNAME_PREFIX = void 0; exports.addWebSocketHandler = addWebSocketHandler; exports.getWebSocketHandlers = getWebSocketHandlers; exports.removeWebSocketHandler = removeWebSocketHandler; exports.removeAllWebSocketHandlers = removeAllWebSocketHandlers; const lodash_1 = __importDefault(require("lodash")); const bluebird_1 = __importDefault(require("bluebird")); exports.DEFAULT_WS_PATHNAME_PREFIX = '/ws'; /** * Adds a WebSocket handler to this server's mapping. * @see AppiumServerExtension.addWebSocketHandler */ async function addWebSocketHandler(handlerPathname, handlerServer) { this.webSocketsMapping[handlerPathname] = handlerServer; } /** * Returns WebSocket handlers for this server, optionally filtered by pathname. * @see AppiumServerExtension.getWebSocketHandlers */ async function getWebSocketHandlers(keysFilter = null) { return lodash_1.default.toPairs(this.webSocketsMapping).reduce((acc, [pathname, wsServer]) => { if (!lodash_1.default.isString(keysFilter) || pathname.includes(keysFilter)) { acc[pathname] = wsServer; } return acc; }, {}); } /** * Removes a WebSocket handler by pathname. * @see AppiumServerExtension.removeWebSocketHandler */ async function removeWebSocketHandler(handlerPathname) { const wsServer = this.webSocketsMapping?.[handlerPathname]; if (!wsServer) { return false; } try { wsServer.close(); for (const client of wsServer.clients || []) { client.terminate(); } return true; } catch { // ignore } finally { delete this.webSocketsMapping[handlerPathname]; } return false; } /** * Removes all WebSocket handlers from this server. * @see AppiumServerExtension.removeAllWebSocketHandlers */ async function removeAllWebSocketHandlers() { if (lodash_1.default.isEmpty(this.webSocketsMapping)) { return false; } return lodash_1.default.some(await bluebird_1.default.all(lodash_1.default.keys(this.webSocketsMapping).map((pathname) => this.removeWebSocketHandler(pathname)))); } //# sourceMappingURL=websocket.js.map