New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@hyperbrowser/sdk

Package Overview
Dependencies
Maintainers
0
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hyperbrowser/sdk - npm Package Compare versions

Comparing version 0.1.0 to 0.2.0

8

dist/client.d.ts
import { Response } from "node-fetch";
import { HyperbrowserConfig } from "./types/config";
import { SessionDetail, SessionListParams, SessionListResponse } from "./types/session";
import { BasicResponse, SessionDetail, SessionListParams, SessionListResponse } from "./types/session";
export declare class HyperbrowserError extends Error {
statusCode?: number | undefined;
response?: Response | undefined;
constructor(message: string, statusCode?: number | undefined, response?: Response | undefined);
originalError?: Error | undefined;
constructor(message: string, statusCode?: number | undefined, response?: Response | undefined, originalError?: Error | undefined);
}

@@ -24,5 +25,4 @@ export declare class HyperbrowserClient {

* Stop a running session
* @returns true if the session was successfully stopped
*/
stopSession(id: string): Promise<boolean>;
stopSession(id: string): Promise<BasicResponse>;
/**

@@ -29,0 +29,0 @@ * List all sessions with optional filtering

@@ -9,6 +9,7 @@ "use strict";

class HyperbrowserError extends Error {
constructor(message, statusCode, response) {
super(message);
constructor(message, statusCode, response, originalError) {
super(`[Hyperbrowser]: ${message}`);
this.statusCode = statusCode;
this.response = response;
this.originalError = originalError;
this.name = "HyperbrowserError";

@@ -23,34 +24,52 @@ }

if (!this.apiKey) {
throw new Error("API key is required");
throw new HyperbrowserError("API key is required");
}
}
async request(path, init, params) {
const url = new URL(`${this.baseUrl}/api${path}`);
if (params) {
Object.entries(params).forEach(([key, value]) => {
if (value !== undefined) {
url.searchParams.append(key, value.toString());
try {
const url = new URL(`${this.baseUrl}/api${path}`);
if (params) {
Object.entries(params).forEach(([key, value]) => {
if (value !== undefined) {
url.searchParams.append(key, value.toString());
}
});
}
const response = await (0, node_fetch_1.default)(url.toString(), {
...init,
headers: {
"x-api-key": this.apiKey,
"Content-Type": "application/json",
...init?.headers,
},
});
if (!response.ok) {
let errorMessage;
try {
const errorData = await response.json();
errorMessage =
errorData.message || errorData.error || `HTTP error! status: ${response.status}`;
}
});
catch {
errorMessage = `HTTP error! status: ${response.status}`;
}
throw new HyperbrowserError(errorMessage, response.status, response);
}
if (response.headers.get("content-length") === "0") {
return {};
}
try {
return (await response.json());
}
catch (error) {
throw new HyperbrowserError("Failed to parse JSON response", response.status, response, error instanceof Error ? error : undefined);
}
}
const response = await (0, node_fetch_1.default)(url.toString(), {
...init,
headers: {
"x-api-key": this.apiKey,
"Content-Type": "application/json",
...init?.headers,
},
});
if (!response.ok) {
throw new HyperbrowserError(`HTTP error! status: ${response.status}`, response.status, response);
}
// Handle empty responses (like for stop session)
if (response.headers.get("content-length") === "0") {
return {};
}
try {
return (await response.json());
}
catch (error) {
throw new HyperbrowserError("Failed to parse JSON response", response.status, response);
// If it's already a HyperbrowserError, rethrow it
if (error instanceof HyperbrowserError) {
throw error;
}
// Convert other errors to HyperbrowserError
throw new HyperbrowserError(error instanceof Error ? error.message : "Unknown error occurred", undefined, undefined, error instanceof Error ? error : undefined);
}

@@ -62,3 +81,11 @@ }

async createSession() {
return this.request("/session", { method: "POST" });
try {
return await this.request("/session", { method: "POST" });
}
catch (error) {
if (error instanceof HyperbrowserError) {
throw error;
}
throw new HyperbrowserError("Failed to create session", undefined, undefined, error instanceof Error ? error : undefined);
}
}

@@ -69,18 +96,26 @@ /**

async getSession(id) {
return this.request(`/session/${id}`);
try {
return await this.request(`/session/${id}`);
}
catch (error) {
if (error instanceof HyperbrowserError) {
throw error;
}
throw new HyperbrowserError(`Failed to get session ${id}`, undefined, undefined, error instanceof Error ? error : undefined);
}
}
/**
* Stop a running session
* @returns true if the session was successfully stopped
*/
async stopSession(id) {
try {
await this.request(`/session/${id}/stop`, { method: "PUT" });
return true;
return await this.request(`/session/${id}/stop`, {
method: "PUT",
});
}
catch (error) {
if (error instanceof HyperbrowserError && error.statusCode && error.statusCode > 300) {
return false;
if (error instanceof HyperbrowserError) {
throw error;
}
throw error;
throw new HyperbrowserError(`Failed to stop session ${id}`, undefined, undefined, error instanceof Error ? error : undefined);
}

@@ -92,8 +127,16 @@ }

async listSessions(params = {}) {
return this.request("/sessions", undefined, {
status: params.status,
page: params.page,
});
try {
return await this.request("/sessions", undefined, {
status: params.status,
page: params.page,
});
}
catch (error) {
if (error instanceof HyperbrowserError) {
throw error;
}
throw new HyperbrowserError("Failed to list sessions", undefined, undefined, error instanceof Error ? error : undefined);
}
}
}
exports.HyperbrowserClient = HyperbrowserClient;
export type SessionStatus = "active" | "closed" | "error";
export interface BasicResponse {
success: boolean;
}
export interface Session {

@@ -3,0 +6,0 @@ id: string;

{
"name": "@hyperbrowser/sdk",
"version": "0.1.0",
"description": "Javascript SDK for Hyperbrowser API",
"version": "0.2.0",
"description": "Node SDK for Hyperbrowser API",
"author": "",

@@ -6,0 +6,0 @@ "main": "dist/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc