wspromisify 2.12.0 → 3.0.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.
package/dist/bundle.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  // Generated by dts-bundle-generator v9.5.1
2
2
 
3
+ import { AnyFunc } from 'pepka';
4
+
3
5
  declare namespace wsc {
4
6
  interface DataObject {
5
7
  [key: string]: any;
@@ -17,17 +19,31 @@ declare namespace wsc {
17
19
  type EventHandler = (e: any) => void;
18
20
  type Predicate = (data: any) => boolean;
19
21
  type DataPipe = (message: any) => any;
20
- type DataType = "json" | "string";
22
+ interface TimeFnParams {
23
+ base: number;
24
+ max: number;
25
+ jitter: number;
26
+ }
21
27
  interface Config {
22
- data_type: DataType;
23
28
  log(event: string, time?: number | null, message?: any): void;
24
29
  log(event: string, message?: any): void;
25
30
  timer: boolean;
26
31
  url: string;
27
32
  timeout: number;
28
- reconnect: number;
29
- reconnection_attempts: number;
30
- reconnect_on_to: boolean;
33
+ reconnect: {
34
+ stop_after: number;
35
+ on_timeout: boolean;
36
+ on_break: boolean;
37
+ time_fn: import("pepka").AnyFunc<number, [
38
+ params: wsc.TimeFnParams,
39
+ attempt: number
40
+ ]>;
41
+ params: {
42
+ base: number;
43
+ max: number;
44
+ jitter: number;
45
+ };
46
+ };
31
47
  max_idle_time: number;
32
48
  lazy: boolean;
33
49
  socket: Socket | null;
@@ -44,71 +60,96 @@ declare namespace wsc {
44
60
  };
45
61
  ping: {
46
62
  interval: number;
47
- content: any;
48
- };
63
+ timeout?: number;
64
+ in: string | Uint8Array;
65
+ out: string | Uint8Array;
66
+ } | false;
49
67
  }
50
- type UserConfig = Partial<Config>;
68
+ type UserConfig = import("type-fest").PartialDeep<Config> & Pick<Config, "url">;
51
69
  type SendOptions = Partial<{
52
70
  top: any;
53
- data_type: DataType;
54
- _is_ping: boolean;
55
71
  }>;
56
72
  interface Message {
57
73
  msg: any;
58
74
  ff(x: any): any;
59
- data_type: DataType;
60
75
  sent_time: number | null;
61
76
  }
62
77
  }
63
- export declare class WebSocketClient {
78
+ declare const label_message_ext = "message-ext";
79
+ export type EventHandler<T extends keyof WebSocketEventMap> = AnyFunc<any, [
80
+ WebSocketEventMap[T]
81
+ ]>;
82
+ export type RouteHandler<T> = AnyFunc<any, [
83
+ data: T,
84
+ next: AnyFunc
85
+ ]>;
86
+ export type EventHandlers = {
87
+ open: EventHandler<"open">[];
88
+ close: EventHandler<"close">[];
89
+ error: EventHandler<"error">[];
90
+ message: AnyFunc<any, [
91
+ WebSocketEventMap["message"] & {
92
+ data: any;
93
+ }
94
+ ]>[];
95
+ [label_message_ext]: AnyFunc<any, [
96
+ WebSocketEventMap["message"] & {
97
+ data: any;
98
+ }
99
+ ]>[];
100
+ timeout: AnyFunc<any, [
101
+ data: any
102
+ ]>[];
103
+ };
104
+ export declare class WebSocketClient<T extends Uint8Array | string = string> {
64
105
  private ws;
65
106
  private intentionally_closed;
66
107
  private reconnect_timeout;
67
108
  private queue;
68
- private onReadyQueue;
69
- private onCloseQueue;
70
- private onReadyFailQueue;
71
109
  private handlers;
72
110
  private config;
73
111
  private ping_timer;
74
112
  private idle_timer;
113
+ private zombie_timer;
114
+ private router;
75
115
  private get opened();
76
- private init_flush;
77
116
  private call;
78
117
  private log;
79
118
  private resetPing;
119
+ private resetZombieProbe;
80
120
  private resetIdle;
81
121
  private _reconnecting;
122
+ private reconnect_start;
82
123
  private reconnect;
124
+ private resetReconnect;
83
125
  private initSocket;
84
- private opening;
126
+ private _opening;
127
+ /** returns status if won't open or null if ok. */
85
128
  private connect;
86
129
  get socket(): wsc.Socket | null;
87
- ready(): Promise<void>;
88
- on(event_name: wsc.WSEvent, handler: wsc.EventHandler, predicate?: wsc.Predicate, raw?: boolean): wsc.EventHandler;
89
- off(event_name: wsc.WSEvent, handler: wsc.EventHandler, raw?: boolean): void;
90
- close(): wsc.AsyncErrCode;
130
+ ready(timeout?: number): Promise<void>;
131
+ on(event_name: keyof EventHandlers, handler: wsc.EventHandler, predicate?: wsc.Predicate, raw?: boolean): wsc.EventHandler;
132
+ off(event_name: keyof EventHandlers, handler: wsc.EventHandler, raw?: boolean): void;
133
+ private terminate;
134
+ close(timeout?: number): wsc.AsyncErrCode;
91
135
  open(): Promise<number | null> | undefined;
92
- addEventListener(e: wsc.WSEvent, cb: wsc.EventHandler, opts?: {
136
+ addEventListener(e: keyof EventHandlers, cb: wsc.EventHandler, opts?: {
93
137
  predicate?: wsc.Predicate;
94
138
  raw?: boolean;
95
139
  }): wsc.EventHandler;
96
- removeEventListener(e: wsc.WSEvent, handler: wsc.EventHandler, opts?: {
140
+ removeEventListener(e: keyof EventHandlers, handler: wsc.EventHandler, opts?: {
97
141
  predicate?: wsc.Predicate;
98
142
  raw?: boolean;
99
143
  }): void;
100
144
  private prepareMessage;
101
- /** .send(your_data) wraps request to server with {id: `hash`, data: `actually your data`},
145
+ /** .send(your_data) wraps request to server with {id: `unique_id`, data: `actually your data`},
102
146
  returns a Promise that will be rejected after a timeout or
103
147
  resolved if server returns the same signature: {id: `same_hash`, data: `response data`}.
104
148
  */
105
149
  send<RequestDataType = any, ResponseDataType = any>(message_data: RequestDataType, opts?: wsc.SendOptions): Promise<ResponseDataType>;
106
150
  stream<RequestDataType = any, ResponseDataType = any>(message_data: RequestDataType, opts?: wsc.SendOptions): AsyncGenerator<ResponseDataType, void, unknown>;
107
- constructor(user_config?: wsc.UserConfig);
151
+ route(handler: RouteHandler<T>): void;
152
+ constructor(user_config: wsc.UserConfig);
108
153
  }
109
154
 
110
- export {
111
- WebSocketClient as default,
112
- };
113
-
114
155
  export {};