cerevox
Version:
TypeScript SDK for browser automation and secure command execution in highly available and scalable micro computer environments
122 lines • 4.77 kB
JavaScript
;
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