Compare commits

..

No commits in common. "main" and "v0.6.1" have entirely different histories.
main ... v0.6.1

5 changed files with 13 additions and 21 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@debros/network-ts-sdk",
"version": "0.6.2",
"version": "0.6.1",
"description": "TypeScript SDK for DeBros Network Gateway - Database, PubSub, Cache, Storage, and more",
"type": "module",
"main": "./dist/index.js",

View File

@ -41,12 +41,12 @@ export interface IWebSocketClient {
/**
* Register close handler
*/
onClose(handler: (code: number, reason: string) => void): void;
onClose(handler: () => void): void;
/**
* Unregister close handler
*/
offClose(handler: (code: number, reason: string) => void): void;
offClose(handler: () => void): void;
/**
* Check if WebSocket is connected

View File

@ -16,7 +16,7 @@ export interface WSClientConfig {
export type WSMessageHandler = (data: string) => void;
export type WSErrorHandler = (error: Error) => void;
export type WSCloseHandler = (code: number, reason: string) => void;
export type WSCloseHandler = () => void;
export type WSOpenHandler = () => void;
/**
@ -102,12 +102,7 @@ export class WSClient {
this.ws.addEventListener("error", (event: Event) => {
console.error("[WSClient] WebSocket error:", event);
clearTimeout(timeout);
// Extract useful details from the event — raw Event objects don't serialize
const details: Record<string, any> = { type: event.type };
if ("message" in event) {
details.message = (event as ErrorEvent).message;
}
const error = new SDKError("WebSocket error", 0, "WS_ERROR", details);
const error = new SDKError("WebSocket error", 500, "WS_ERROR", event);
// Call the network error callback if configured
if (this.onNetworkError) {
@ -123,13 +118,10 @@ export class WSClient {
reject(error);
});
this.ws.addEventListener("close", (event: Event) => {
this.ws.addEventListener("close", () => {
clearTimeout(timeout);
const closeEvent = event as CloseEvent;
const code = closeEvent.code ?? 1006;
const reason = closeEvent.reason ?? "";
console.log(`[WSClient] Connection closed (code: ${code}, reason: ${reason || "none"})`);
this.closeHandlers.forEach((handler) => handler(code, reason));
console.log("[WSClient] Connection closed");
this.closeHandlers.forEach((handler) => handler());
});
} catch (error) {
reject(error);
@ -214,7 +206,7 @@ export class WSClient {
*/
send(data: string): void {
if (this.ws?.readyState !== WebSocket.OPEN) {
throw new SDKError("WebSocket is not connected", 0, "WS_NOT_CONNECTED");
throw new SDKError("WebSocket is not connected", 500, "WS_NOT_CONNECTED");
}
this.ws.send(data);
}

View File

@ -176,7 +176,7 @@ export class Subscription {
private isClosed = false;
private wsMessageHandler: ((data: string) => void) | null = null;
private wsErrorHandler: ((error: Error) => void) | null = null;
private wsCloseHandler: ((code: number, reason: string) => void) | null = null;
private wsCloseHandler: (() => void) | null = null;
private getPresenceFn: () => Promise<PresenceResponse>;
constructor(
@ -271,8 +271,8 @@ export class Subscription {
this.wsClient.onError(this.wsErrorHandler);
// Register close handler
this.wsCloseHandler = (code: number, reason: string) => {
this.closeHandlers.forEach((handler) => handler(code, reason));
this.wsCloseHandler = () => {
this.closeHandlers.forEach((handler) => handler());
};
this.wsClient.onClose(this.wsCloseHandler);
}

View File

@ -42,5 +42,5 @@ export interface SubscribeOptions {
export type MessageHandler = (message: PubSubMessage) => void;
export type ErrorHandler = (error: Error) => void;
export type CloseHandler = (code: number, reason: string) => void;
export type CloseHandler = () => void;