UNPKG

cerevox

Version:

TypeScript SDK for browser automation and secure command execution in highly available and scalable micro computer environments

122 lines 4.77 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Browser = void 0; const base_1 = require("./base"); const open_1 = __importDefault(require("open")); const session_1 = require("./session"); const constants_1 = require("../utils/constants"); let Browser = class Browser extends base_1.BaseClass { constructor(session) { super(session.getLogger().level); this.connectionMetaData = {}; this.session = session; } async getCDPEndpoint() { const response = await this.session.sandbox.request(`/json/version`, { method: 'GET', headers: { 'Content-Type': 'application/json', }, }); if (!response.ok) { this.logger.error(`Failed to get CDP Endpoint.: ${await response.text()}`); return null; } const data = await response.json(); return data.webSocketDebuggerUrl; } /** * @experimental This method is experimental and may change or be removed in future versions. * Use with caution in production environments. */ async getCurrentPageTargetInfo() { const response = await this.session.sandbox.request(`/api/page/info`, { method: 'GET', headers: { 'Content-Type': 'application/json', }, }); if (!response.ok) { return await response.json(); } const data = await response.json(); const { lastScreenshot, sessionId, targets, targetId, pageLoaded } = data.pageInfo; let currentTarget = {}; for (const target of Object.values(targets)) { if (target.targetId === targetId) { currentTarget = target; } } return { // pageInfo: data.pageInfo, targetId, sessionId, pageLoaded, ...currentTarget, lastScreenshot, targets, }; } /** * @experimental This method is experimental and may change or be removed in future versions. * Use with caution in production environments. */ async getLiveviewStreamingUrl() { const response = await this.session.sandbox.request(`/api/session/liveview/stream`, { method: 'GET', headers: { 'Content-Type': 'application/json', }, }); if (!response.ok || !response.body) { this.logger.warn('liveview stream not ready', response); return null; } return this.session.sandbox.getUrl(`/api/session/liveview/stream`); } /** * @experimental This method is experimental and may change or be removed in future versions. * Use with caution in production environments. */ async getLiveviewPageUrl() { const response = await this.session.sandbox.request(`/api/session/liveview/preview`, { method: 'GET', headers: { 'Content-Type': 'application/json', }, }); if (!response.ok || !response.body) { this.logger.warn('liveview page not ready', response); return null; } return this.session.sandbox.getUrl(`/api/session/liveview/preview`); } /** * @experimental This method is experimental and may change or be removed in future versions. * Use with caution in production environments. */ async openLiveviewPage() { const url = await this.getLiveviewPageUrl(); if (url) { (0, open_1.default)(url); } } }; exports.Browser = Browser; exports.Browser = Browser = __decorate([ (0, base_1.Logger)({ VERSION: constants_1.VERSION }), __metadata("design:paramtypes", [session_1.Session]) ], Browser); //# sourceMappingURL=browser.js.map