sockress-client 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,112 @@
1
+ type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
2
+ export interface SockressClientOptions {
3
+ baseUrl: string;
4
+ socketPath?: string;
5
+ headers?: Record<string, string>;
6
+ timeout?: number;
7
+ reconnectInterval?: number;
8
+ maxReconnectInterval?: number;
9
+ autoConnect?: boolean;
10
+ preferSocket?: boolean;
11
+ fetchImpl?: typeof fetch;
12
+ wsFactory?: WebSocketFactory;
13
+ credentials?: RequestCredentials;
14
+ }
15
+ export interface SockressClientRequest {
16
+ path: string;
17
+ method?: HTTPMethod;
18
+ headers?: Record<string, string>;
19
+ query?: Record<string, string | number | boolean | Array<string | number | boolean>>;
20
+ body?: unknown;
21
+ timeout?: number;
22
+ signal?: AbortSignal;
23
+ disableHttpFallback?: boolean;
24
+ }
25
+ export interface SockressClientResponse<T = unknown> {
26
+ status: number;
27
+ ok: boolean;
28
+ headers: Record<string, string>;
29
+ body: T;
30
+ json: <R = T>() => R;
31
+ text: () => string;
32
+ raw: () => T;
33
+ }
34
+ export type EventMap = {
35
+ open: void;
36
+ close: {
37
+ code?: number;
38
+ reason?: string;
39
+ };
40
+ error: unknown;
41
+ reconnect: {
42
+ attempt: number;
43
+ };
44
+ message: any;
45
+ };
46
+ type Listener<K extends keyof EventMap> = (payload: EventMap[K]) => void;
47
+ type WebSocketLike = {
48
+ readyState: number;
49
+ send(data: string): void;
50
+ close(code?: number, reason?: string): void;
51
+ onopen?: ((event: any) => void) | null;
52
+ onmessage?: ((event: any) => void) | null;
53
+ onclose?: ((event: any) => void) | null;
54
+ onerror?: ((event: any) => void) | null;
55
+ addEventListener?(type: string, listener: (event: any) => void): void;
56
+ removeEventListener?(type: string, listener: (event: any) => void): void;
57
+ on?(type: string, listener: (...args: unknown[]) => void): void;
58
+ off?(type: string, listener: (...args: unknown[]) => void): void;
59
+ };
60
+ export type WebSocketFactory = (url: string) => WebSocketLike;
61
+ interface NormalizedOptions {
62
+ baseUrl: string;
63
+ socketPath: string;
64
+ headers: Record<string, string>;
65
+ timeout: number;
66
+ reconnectInterval: number;
67
+ maxReconnectInterval: number;
68
+ autoConnect: boolean;
69
+ preferSocket: boolean;
70
+ fetchImpl: typeof fetch;
71
+ wsFactory?: WebSocketFactory;
72
+ credentials: RequestCredentials;
73
+ }
74
+ export declare class SockressClient {
75
+ private readonly options;
76
+ private ws?;
77
+ private reconnectAttempts;
78
+ private pending;
79
+ private queue;
80
+ private listeners;
81
+ private socketEnabled;
82
+ private lifecycleTeardown;
83
+ private closeRequested;
84
+ constructor(options: NormalizedOptions);
85
+ static create(options: SockressClientOptions): SockressClient;
86
+ on<K extends keyof EventMap>(event: K, listener: Listener<K>): () => void;
87
+ off<K extends keyof EventMap>(event: K, listener: Listener<K>): void;
88
+ emit<K extends keyof EventMap>(event: K, payload: EventMap[K]): void;
89
+ connect(): Promise<void>;
90
+ private attachSocketHandlers;
91
+ private flushQueue;
92
+ private scheduleReconnect;
93
+ private handleSocketMessage;
94
+ private applyCookies;
95
+ private clearPending;
96
+ private rejectAllPending;
97
+ private registerLifecycleHooks;
98
+ private canUseSocket;
99
+ request<T = unknown>(options: SockressClientRequest): Promise<SockressClientResponse<T>>;
100
+ get<T = unknown>(path: string, options?: Omit<SockressClientRequest, 'path' | 'method'>): Promise<SockressClientResponse<T>>;
101
+ post<T = unknown>(path: string, options?: Omit<SockressClientRequest, 'path' | 'method'>): Promise<SockressClientResponse<T>>;
102
+ put<T = unknown>(path: string, options?: Omit<SockressClientRequest, 'path' | 'method'>): Promise<SockressClientResponse<T>>;
103
+ patch<T = unknown>(path: string, options?: Omit<SockressClientRequest, 'path' | 'method'>): Promise<SockressClientResponse<T>>;
104
+ delete<T = unknown>(path: string, options?: Omit<SockressClientRequest, 'path' | 'method'>): Promise<SockressClientResponse<T>>;
105
+ private sendViaSocket;
106
+ private sendViaHttp;
107
+ close(): void;
108
+ }
109
+ export declare function sockressClient(options: SockressClientOptions): SockressClient;
110
+ export declare const createSockressClient: typeof sockressClient;
111
+ export {};
112
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AA4BnF,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IACrF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC,GAAG,OAAO;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC,CAAC;CACd;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,QAAQ,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAEzE,KAAK,aAAa,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACxC,gBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IACtE,mBAAmB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IACzE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAChE,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,aAAa,CAAC;AAQ9D,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED,qBAAa,cAAc;IAgBb,OAAO,CAAC,QAAQ,CAAC,OAAO;IAfpC,OAAO,CAAC,EAAE,CAAC,CAAgB;IAC3B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,SAAS,CAMf;IACF,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,cAAc,CAAS;gBAEF,OAAO,EAAE,iBAAiB;IASvD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc;IAI7D,EAAE,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAKzE,GAAG,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAIpE,IAAI,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAM9D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,mBAAmB;IAiC3B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,YAAY;IAId,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAmB9F,GAAG,CAAC,CAAC,GAAG,OAAO,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,QAAQ,CAAC,GACvD,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAIrC,IAAI,CAAC,CAAC,GAAG,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,QAAQ,CAAC,GACvD,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAIrC,GAAG,CAAC,CAAC,GAAG,OAAO,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,QAAQ,CAAC,GACvD,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAIrC,KAAK,CAAC,CAAC,GAAG,OAAO,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,QAAQ,CAAC,GACvD,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAIrC,MAAM,CAAC,CAAC,GAAG,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,QAAQ,CAAC,GACvD,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YAIvB,aAAa;YAwCb,WAAW;IAyDzB,KAAK,IAAI,IAAI;CAad;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAE7E;AAED,eAAO,MAAM,oBAAoB,uBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,533 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSockressClient = exports.SockressClient = void 0;
4
+ exports.sockressClient = sockressClient;
5
+ const nanoid_1 = require("nanoid");
6
+ class SockressClient {
7
+ constructor(options) {
8
+ this.options = options;
9
+ this.reconnectAttempts = 0;
10
+ this.pending = new Map();
11
+ this.queue = [];
12
+ this.listeners = {
13
+ open: new Set(),
14
+ close: new Set(),
15
+ error: new Set(),
16
+ reconnect: new Set(),
17
+ message: new Set()
18
+ };
19
+ this.socketEnabled = true;
20
+ this.lifecycleTeardown = [];
21
+ this.closeRequested = false;
22
+ if (options.autoConnect) {
23
+ this.connect().catch(() => {
24
+ // Ignore initial connection failures, HTTP fallback will handle requests.
25
+ });
26
+ }
27
+ this.registerLifecycleHooks();
28
+ }
29
+ static create(options) {
30
+ return new SockressClient(normalizeOptions(options));
31
+ }
32
+ on(event, listener) {
33
+ this.listeners[event].add(listener);
34
+ return () => this.off(event, listener);
35
+ }
36
+ off(event, listener) {
37
+ this.listeners[event].delete(listener);
38
+ }
39
+ emit(event, payload) {
40
+ for (const listener of this.listeners[event]) {
41
+ listener(payload);
42
+ }
43
+ }
44
+ async connect() {
45
+ if (!this.options.wsFactory) {
46
+ this.socketEnabled = false;
47
+ return;
48
+ }
49
+ if (this.ws && this.ws.readyState === 1) {
50
+ return;
51
+ }
52
+ const socketUrl = buildSocketUrl(this.options.baseUrl, this.options.socketPath);
53
+ this.ws = this.options.wsFactory(socketUrl);
54
+ this.attachSocketHandlers(this.ws);
55
+ }
56
+ attachSocketHandlers(socket) {
57
+ const handleOpen = () => {
58
+ this.reconnectAttempts = 0;
59
+ this.emit('open', undefined);
60
+ this.flushQueue();
61
+ };
62
+ const handleMessage = (event) => {
63
+ const data = resolveEventData(event);
64
+ if (data) {
65
+ this.handleSocketMessage(data);
66
+ }
67
+ };
68
+ const handleError = (event) => {
69
+ this.emit('error', event);
70
+ this.rejectAllPending(new Error('Socket error'));
71
+ };
72
+ const handleClose = (details) => {
73
+ this.emit('close', { code: details === null || details === void 0 ? void 0 : details.code, reason: details === null || details === void 0 ? void 0 : details.reason });
74
+ this.rejectAllPending(new Error('Socket closed'));
75
+ this.scheduleReconnect();
76
+ };
77
+ if (typeof socket.addEventListener === 'function') {
78
+ socket.addEventListener('open', () => handleOpen());
79
+ socket.addEventListener('message', (event) => handleMessage(event));
80
+ socket.addEventListener('error', (event) => handleError(event));
81
+ socket.addEventListener('close', (event) => handleClose(extractCloseDetails(event)));
82
+ }
83
+ else if (typeof socket.on === 'function') {
84
+ socket.on('open', handleOpen);
85
+ socket.on('message', (data) => handleMessage({ data }));
86
+ socket.on('error', handleError);
87
+ socket.on('close', (...args) => {
88
+ const [code, reason] = args;
89
+ handleClose({
90
+ code: typeof code === 'number' ? code : undefined,
91
+ reason: typeof reason === 'string' ? reason : typeof reason === 'object' && reason ? `${reason}` : undefined
92
+ });
93
+ });
94
+ }
95
+ else {
96
+ socket.onopen = () => handleOpen();
97
+ socket.onmessage = (event) => handleMessage(event);
98
+ socket.onerror = (event) => handleError(event);
99
+ socket.onclose = (event) => handleClose(extractCloseDetails(event));
100
+ }
101
+ }
102
+ flushQueue() {
103
+ if (!this.ws || this.ws.readyState !== 1)
104
+ return;
105
+ while (this.queue.length) {
106
+ const payload = this.queue.shift();
107
+ if (!payload)
108
+ continue;
109
+ this.ws.send(JSON.stringify(payload));
110
+ }
111
+ }
112
+ scheduleReconnect() {
113
+ if (!this.socketEnabled || !this.options.wsFactory) {
114
+ return;
115
+ }
116
+ this.reconnectAttempts += 1;
117
+ const delay = Math.min(this.options.reconnectInterval * this.reconnectAttempts, this.options.maxReconnectInterval);
118
+ setTimeout(() => {
119
+ this.emit('reconnect', { attempt: this.reconnectAttempts });
120
+ this.connect().catch(() => {
121
+ // keep trying silently
122
+ });
123
+ }, delay);
124
+ }
125
+ handleSocketMessage(raw) {
126
+ try {
127
+ const payload = JSON.parse(raw);
128
+ if (payload.type && !payload.id && ['message', 'join', 'leave', 'room_created', 'room_deleted', 'error'].includes(payload.type)) {
129
+ this.emit('message', payload);
130
+ return;
131
+ }
132
+ if (payload.type === 'error') {
133
+ const pending = payload.id ? this.pending.get(payload.id) : null;
134
+ const error = new Error(payload.message);
135
+ if (pending) {
136
+ this.clearPending(payload.id);
137
+ pending.reject(error);
138
+ }
139
+ else {
140
+ this.emit('error', error);
141
+ }
142
+ return;
143
+ }
144
+ const pending = this.pending.get(payload.id);
145
+ if (!pending) {
146
+ return;
147
+ }
148
+ this.clearPending(payload.id);
149
+ const response = createClientResponse(payload);
150
+ this.applyCookies(payload.cookies);
151
+ pending.resolve(response);
152
+ }
153
+ catch (error) {
154
+ this.emit('error', error);
155
+ }
156
+ }
157
+ applyCookies(cookies) {
158
+ if (!cookies || typeof document === 'undefined')
159
+ return;
160
+ for (const cookie of cookies) {
161
+ document.cookie = cookie;
162
+ }
163
+ }
164
+ clearPending(id) {
165
+ const pending = this.pending.get(id);
166
+ if (pending === null || pending === void 0 ? void 0 : pending.timeout) {
167
+ clearTimeout(pending.timeout);
168
+ }
169
+ this.pending.delete(id);
170
+ }
171
+ rejectAllPending(error) {
172
+ for (const [id, pending] of this.pending.entries()) {
173
+ this.clearPending(id);
174
+ pending.reject(error);
175
+ }
176
+ }
177
+ registerLifecycleHooks() {
178
+ const boundClose = () => this.close();
179
+ if (typeof process !== 'undefined' && typeof process.on === 'function') {
180
+ const handleSignal = () => boundClose();
181
+ process.once('beforeExit', handleSignal);
182
+ process.once('SIGINT', handleSignal);
183
+ process.once('SIGTERM', handleSignal);
184
+ this.lifecycleTeardown.push(() => {
185
+ process.off('beforeExit', handleSignal);
186
+ process.off('SIGINT', handleSignal);
187
+ process.off('SIGTERM', handleSignal);
188
+ });
189
+ }
190
+ if (typeof window !== 'undefined' && typeof window.addEventListener === 'function') {
191
+ const handleUnload = () => boundClose();
192
+ window.addEventListener('beforeunload', handleUnload);
193
+ this.lifecycleTeardown.push(() => window.removeEventListener('beforeunload', handleUnload));
194
+ }
195
+ }
196
+ canUseSocket() {
197
+ return Boolean(this.options.wsFactory && this.socketEnabled && this.ws && this.ws.readyState === 1);
198
+ }
199
+ async request(options) {
200
+ var _a, _b;
201
+ const method = (options.method || 'GET').toUpperCase();
202
+ const path = normalizePath(options.path);
203
+ const headers = { ...this.options.headers, ...((_a = options.headers) !== null && _a !== void 0 ? _a : {}) };
204
+ const query = options.query ? normalizeQuery(options.query) : undefined;
205
+ const timeout = (_b = options.timeout) !== null && _b !== void 0 ? _b : this.options.timeout;
206
+ if (this.options.preferSocket && this.socketEnabled) {
207
+ try {
208
+ return await this.sendViaSocket({ method, path, headers, query, body: options.body, timeout });
209
+ }
210
+ catch (error) {
211
+ if (options.disableHttpFallback) {
212
+ throw error;
213
+ }
214
+ }
215
+ }
216
+ return this.sendViaHttp({ method, path, headers, query, body: options.body, signal: options.signal });
217
+ }
218
+ get(path, options) {
219
+ return this.request({ ...(options !== null && options !== void 0 ? options : {}), path, method: 'GET' });
220
+ }
221
+ post(path, options) {
222
+ return this.request({ ...(options !== null && options !== void 0 ? options : {}), path, method: 'POST' });
223
+ }
224
+ put(path, options) {
225
+ return this.request({ ...(options !== null && options !== void 0 ? options : {}), path, method: 'PUT' });
226
+ }
227
+ patch(path, options) {
228
+ return this.request({ ...(options !== null && options !== void 0 ? options : {}), path, method: 'PATCH' });
229
+ }
230
+ delete(path, options) {
231
+ return this.request({ ...(options !== null && options !== void 0 ? options : {}), path, method: 'DELETE' });
232
+ }
233
+ async sendViaSocket(input) {
234
+ if (!this.options.wsFactory) {
235
+ this.socketEnabled = false;
236
+ throw new Error('Socket transport is unavailable');
237
+ }
238
+ await this.connect();
239
+ const id = (0, nanoid_1.nanoid)();
240
+ const serializedBody = await serializeBodyForSocket(input.body);
241
+ const payload = {
242
+ type: 'request',
243
+ id,
244
+ method: input.method,
245
+ path: input.path,
246
+ headers: input.headers,
247
+ query: input.query,
248
+ body: serializedBody
249
+ };
250
+ const responsePromise = new Promise((resolve, reject) => {
251
+ const timeout = setTimeout(() => {
252
+ this.clearPending(id);
253
+ reject(new Error('Socket request timed out'));
254
+ }, input.timeout);
255
+ this.pending.set(id, { resolve, reject, timeout });
256
+ });
257
+ const serialized = JSON.stringify(payload);
258
+ if (this.canUseSocket()) {
259
+ this.ws.send(serialized);
260
+ }
261
+ else {
262
+ this.queue.push(payload);
263
+ }
264
+ return responsePromise;
265
+ }
266
+ async sendViaHttp(input) {
267
+ var _a;
268
+ const url = buildHttpUrl(this.options.baseUrl, input.path, input.query);
269
+ const headers = new Headers(input.headers);
270
+ const init = {
271
+ method: input.method,
272
+ headers,
273
+ credentials: this.options.credentials,
274
+ signal: input.signal
275
+ };
276
+ if (input.body !== undefined && input.method !== 'GET' && input.method !== 'HEAD') {
277
+ if (typeof input.body === 'string' ||
278
+ input.body instanceof URLSearchParams ||
279
+ isBlob(input.body) ||
280
+ isFormData(input.body)) {
281
+ init.body = input.body;
282
+ }
283
+ else {
284
+ init.body = JSON.stringify(input.body);
285
+ if (!headers.has('content-type')) {
286
+ headers.set('content-type', 'application/json');
287
+ }
288
+ }
289
+ }
290
+ const response = await this.options.fetchImpl(url, init);
291
+ const text = await response.text();
292
+ let parsed = text;
293
+ const contentType = (_a = response.headers.get('content-type')) !== null && _a !== void 0 ? _a : '';
294
+ if (contentType.includes('application/json') && text) {
295
+ try {
296
+ parsed = JSON.parse(text);
297
+ }
298
+ catch {
299
+ parsed = text;
300
+ }
301
+ }
302
+ const headersObj = {};
303
+ response.headers.forEach((value, key) => {
304
+ headersObj[key.toLowerCase()] = value;
305
+ });
306
+ return {
307
+ status: response.status,
308
+ ok: response.ok,
309
+ headers: headersObj,
310
+ body: parsed,
311
+ json: () => parsed,
312
+ text: () => text,
313
+ raw: () => parsed
314
+ };
315
+ }
316
+ close() {
317
+ if (this.closeRequested)
318
+ return;
319
+ this.closeRequested = true;
320
+ this.socketEnabled = false;
321
+ if (this.ws) {
322
+ this.ws.close();
323
+ this.ws = undefined;
324
+ }
325
+ this.queue = [];
326
+ this.rejectAllPending(new Error('Client closed'));
327
+ this.lifecycleTeardown.forEach((teardown) => teardown());
328
+ this.lifecycleTeardown = [];
329
+ }
330
+ }
331
+ exports.SockressClient = SockressClient;
332
+ function sockressClient(options) {
333
+ return SockressClient.create(options);
334
+ }
335
+ exports.createSockressClient = sockressClient;
336
+ function normalizeOptions(options) {
337
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
338
+ if (!options.baseUrl) {
339
+ throw new Error('baseUrl is required');
340
+ }
341
+ let fetchImpl = (_a = options.fetchImpl) !== null && _a !== void 0 ? _a : globalThis.fetch;
342
+ if (!fetchImpl) {
343
+ throw new Error('Fetch implementation is not available in this environment');
344
+ }
345
+ if (fetchImpl === globalThis.fetch && typeof fetchImpl === 'function') {
346
+ const originalFetch = fetchImpl;
347
+ fetchImpl = ((...args) => {
348
+ return originalFetch.apply(globalThis, args);
349
+ });
350
+ }
351
+ const wsFactory = (_b = options.wsFactory) !== null && _b !== void 0 ? _b : (typeof WebSocket !== 'undefined' ? (url) => new WebSocket(url) : undefined);
352
+ return {
353
+ baseUrl: options.baseUrl.replace(/\/+$/, ''),
354
+ socketPath: (_c = options.socketPath) !== null && _c !== void 0 ? _c : '/sockress',
355
+ headers: { ...((_d = options.headers) !== null && _d !== void 0 ? _d : {}) },
356
+ timeout: (_e = options.timeout) !== null && _e !== void 0 ? _e : 15000,
357
+ reconnectInterval: (_f = options.reconnectInterval) !== null && _f !== void 0 ? _f : 1000,
358
+ maxReconnectInterval: (_g = options.maxReconnectInterval) !== null && _g !== void 0 ? _g : 15000,
359
+ autoConnect: (_h = options.autoConnect) !== null && _h !== void 0 ? _h : true,
360
+ preferSocket: (_j = options.preferSocket) !== null && _j !== void 0 ? _j : true,
361
+ fetchImpl,
362
+ wsFactory,
363
+ credentials: (_k = options.credentials) !== null && _k !== void 0 ? _k : 'include'
364
+ };
365
+ }
366
+ async function serializeBodyForSocket(body) {
367
+ if (isFormData(body)) {
368
+ return {
369
+ __formData: await serializeFormData(body)
370
+ };
371
+ }
372
+ return body;
373
+ }
374
+ async function serializeFormData(formData) {
375
+ var _a, _b;
376
+ const fields = {};
377
+ const files = {};
378
+ const entries = collectFormDataEntries(formData);
379
+ for (const [key, value] of entries) {
380
+ if (typeof value === 'string') {
381
+ if (fields[key]) {
382
+ const existing = fields[key];
383
+ fields[key] = Array.isArray(existing) ? [...existing, value] : [existing, value];
384
+ }
385
+ else {
386
+ fields[key] = value;
387
+ }
388
+ continue;
389
+ }
390
+ const fileBuffer = await value.arrayBuffer();
391
+ const encoded = arrayBufferToBase64(fileBuffer);
392
+ if (!files[key]) {
393
+ files[key] = [];
394
+ }
395
+ files[key].push({
396
+ fieldName: key,
397
+ name: (_a = value.name) !== null && _a !== void 0 ? _a : 'file',
398
+ type: (_b = value.type) !== null && _b !== void 0 ? _b : 'application/octet-stream',
399
+ size: value.size,
400
+ lastModified: typeof value.lastModified === 'number' ? value.lastModified : undefined,
401
+ data: encoded
402
+ });
403
+ }
404
+ return { fields, files };
405
+ }
406
+ function buildSocketUrl(baseUrl, socketPath) {
407
+ const url = new URL(socketPath, baseUrl);
408
+ url.protocol = url.protocol.replace('http', 'ws');
409
+ return url.toString();
410
+ }
411
+ function buildHttpUrl(baseUrl, path, query) {
412
+ const url = new URL(path, baseUrl);
413
+ if (query) {
414
+ for (const [key, value] of Object.entries(query)) {
415
+ if (Array.isArray(value)) {
416
+ value.forEach((entry) => url.searchParams.append(key, entry));
417
+ }
418
+ else {
419
+ url.searchParams.append(key, value);
420
+ }
421
+ }
422
+ }
423
+ return url.toString();
424
+ }
425
+ function normalizePath(path) {
426
+ if (!path.startsWith('/')) {
427
+ return `/${path}`;
428
+ }
429
+ return path;
430
+ }
431
+ function normalizeQuery(query) {
432
+ const result = {};
433
+ for (const [key, value] of Object.entries(query)) {
434
+ if (Array.isArray(value)) {
435
+ result[key] = value.map((item) => String(item));
436
+ }
437
+ else {
438
+ result[key] = String(value);
439
+ }
440
+ }
441
+ return result;
442
+ }
443
+ function createClientResponse(payload) {
444
+ var _a;
445
+ const headers = (_a = payload.headers) !== null && _a !== void 0 ? _a : {};
446
+ const status = payload.status;
447
+ const body = payload.body;
448
+ return {
449
+ status,
450
+ ok: status >= 200 && status < 300,
451
+ headers,
452
+ body,
453
+ json: () => body,
454
+ text: () => (typeof body === 'string' ? body : JSON.stringify(body)),
455
+ raw: () => body
456
+ };
457
+ }
458
+ function extractCloseDetails(event) {
459
+ if (!event || typeof event !== 'object')
460
+ return {};
461
+ const closeEvent = event;
462
+ return {
463
+ code: closeEvent.code,
464
+ reason: closeEvent.reason
465
+ };
466
+ }
467
+ function resolveEventData(event) {
468
+ if (!event)
469
+ return '';
470
+ if (typeof event === 'string')
471
+ return event;
472
+ if (typeof event === 'object' && 'data' in event) {
473
+ return toText(event.data);
474
+ }
475
+ return toText(event);
476
+ }
477
+ const textDecoder = typeof TextDecoder !== 'undefined' ? new TextDecoder() : null;
478
+ function toText(value) {
479
+ if (typeof value === 'string') {
480
+ return value;
481
+ }
482
+ if (value instanceof ArrayBuffer) {
483
+ return textDecoder ? textDecoder.decode(value) : '';
484
+ }
485
+ if (ArrayBuffer.isView(value)) {
486
+ const view = value;
487
+ if (textDecoder) {
488
+ return textDecoder.decode(view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength));
489
+ }
490
+ }
491
+ if (value && typeof value.toString === 'function') {
492
+ return value.toString();
493
+ }
494
+ return '';
495
+ }
496
+ function isBlob(value) {
497
+ return typeof Blob !== 'undefined' && value instanceof Blob;
498
+ }
499
+ function isFormData(value) {
500
+ return typeof FormData !== 'undefined' && value instanceof FormData;
501
+ }
502
+ function arrayBufferToBase64(buffer) {
503
+ if (typeof Buffer !== 'undefined') {
504
+ return Buffer.from(buffer).toString('base64');
505
+ }
506
+ let binary = '';
507
+ const bytes = new Uint8Array(buffer);
508
+ for (let i = 0; i < bytes.length; i += 1) {
509
+ binary += String.fromCharCode(bytes[i]);
510
+ }
511
+ if (typeof btoa === 'function') {
512
+ return btoa(binary);
513
+ }
514
+ throw new Error('Base64 encoding is not supported in this environment');
515
+ }
516
+ function collectFormDataEntries(formData) {
517
+ const anyForm = formData;
518
+ const entries = [];
519
+ if (typeof anyForm.entries === 'function') {
520
+ for (const pair of anyForm.entries()) {
521
+ entries.push(pair);
522
+ }
523
+ return entries;
524
+ }
525
+ if (typeof anyForm[Symbol.iterator] === 'function') {
526
+ for (const pair of anyForm) {
527
+ entries.push(pair);
528
+ }
529
+ return entries;
530
+ }
531
+ throw new Error('FormData implementation does not support iteration');
532
+ }
533
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,20 @@
1
1
  {
2
2
  "name": "sockress-client",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Socket-first client SDK for Sockress servers with automatic HTTP fallback and FormData serialization.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "README.md",
10
+ "LICENSE"
11
+ ],
7
12
  "exports": {
8
13
  ".": {
9
- "import": "./dist/index.js",
14
+ "types": "./dist/index.d.ts",
10
15
  "require": "./dist/index.js",
11
- "types": "./dist/index.d.ts"
16
+ "import": "./dist/index.js",
17
+ "default": "./dist/index.js"
12
18
  }
13
19
  },
14
20
  "scripts": {