redux-cluster-ws 1.3.1 → 2.0.0

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.
Files changed (54) hide show
  1. package/FUNDING.yml +7 -0
  2. package/LICENSE +21 -21
  3. package/README.md +394 -90
  4. package/dist/cjs/client.d.ts +43 -0
  5. package/dist/cjs/client.js +276 -0
  6. package/dist/cjs/client.js.map +1 -0
  7. package/dist/cjs/index.d.ts +4 -0
  8. package/dist/cjs/index.js +25 -0
  9. package/dist/cjs/index.js.map +1 -0
  10. package/dist/cjs/package.json +1 -0
  11. package/dist/cjs/server.d.ts +31 -0
  12. package/dist/cjs/server.js +295 -0
  13. package/dist/cjs/server.js.map +1 -0
  14. package/dist/cjs/types.d.ts +83 -0
  15. package/dist/cjs/types.js +3 -0
  16. package/dist/cjs/types.js.map +1 -0
  17. package/dist/cjs/utils.d.ts +17 -0
  18. package/dist/cjs/utils.js +75 -0
  19. package/dist/cjs/utils.js.map +1 -0
  20. package/dist/esm/client.d.ts +43 -0
  21. package/dist/esm/client.js +282 -0
  22. package/dist/esm/client.js.map +1 -0
  23. package/dist/esm/index.d.ts +4 -0
  24. package/dist/esm/index.js +5 -0
  25. package/dist/esm/index.js.map +1 -0
  26. package/dist/esm/server.d.ts +31 -0
  27. package/dist/esm/server.js +299 -0
  28. package/dist/esm/server.js.map +1 -0
  29. package/dist/esm/types.d.ts +83 -0
  30. package/dist/esm/types.js +2 -0
  31. package/dist/esm/types.js.map +1 -0
  32. package/dist/esm/utils.d.ts +17 -0
  33. package/dist/esm/utils.js +69 -0
  34. package/dist/esm/utils.js.map +1 -0
  35. package/eslint.config.js +143 -0
  36. package/examples/browser-example.cjs +350 -0
  37. package/examples/browser.html +255 -0
  38. package/examples/client.cjs +155 -0
  39. package/examples/cross-library-browser.html +655 -0
  40. package/examples/cross-library-client.cjs +190 -0
  41. package/examples/cross-library-server.cjs +213 -0
  42. package/examples/server.cjs +96 -0
  43. package/package.json +96 -23
  44. package/client.js +0 -192
  45. package/index.js +0 -12
  46. package/server.js +0 -175
  47. package/test.auto.proc1.js +0 -100
  48. package/test.auto.proc2.js +0 -74
  49. package/test.visual.client.html +0 -37
  50. package/test.visual.client.js +0 -63
  51. package/test.visual.server.js +0 -66
  52. package/umd/ReduxCluster.js +0 -18
  53. package/webpack-src.js +0 -6
  54. package/webpack.config.js +0 -25
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import type { Reducer, Action, AnyAction, Dispatch } from "redux";
2
+ export interface WSServerConfig {
3
+ host?: string;
4
+ port?: number;
5
+ server?: any;
6
+ logins?: Record<string, string>;
7
+ ssl?: {
8
+ key: string;
9
+ cert: string;
10
+ ca?: string;
11
+ };
12
+ }
13
+ export interface WSClientConfig {
14
+ host: string;
15
+ port?: number;
16
+ login: string;
17
+ password: string;
18
+ reconnectInterval?: number;
19
+ timeout?: number;
20
+ }
21
+ export interface ReduxClusterMessage {
22
+ _msg: string;
23
+ _hash: string;
24
+ _action?: AnyAction;
25
+ _login?: string;
26
+ _password?: string;
27
+ _value?: boolean;
28
+ _banned?: boolean;
29
+ }
30
+ export interface ReduxClusterStore<S = any, A extends Action = AnyAction> {
31
+ getState(): S;
32
+ dispatch: Dispatch<A>;
33
+ subscribe(listener: () => void): () => void;
34
+ replaceReducer(nextReducer: Reducer<S, A>): void;
35
+ [Symbol.observable](): any;
36
+ createWSServer?: (config: WSServerConfig) => void;
37
+ createWSClient?: (config: WSClientConfig) => void;
38
+ RCHash: string;
39
+ role: string[];
40
+ mode: "action" | "snapshot";
41
+ connected: boolean;
42
+ stderr: (message: string) => void;
43
+ version: string;
44
+ homepage: string;
45
+ }
46
+ export interface WSConnection {
47
+ id: string;
48
+ ws: any;
49
+ authenticated: boolean;
50
+ ip: string;
51
+ }
52
+ export interface BanInfo {
53
+ time: number;
54
+ count: number;
55
+ }
56
+ export interface AuthDatabase {
57
+ [hashedLogin: string]: string;
58
+ }
59
+ export interface IPBanDatabase {
60
+ [ip: string]: BanInfo;
61
+ }
62
+ export interface ReduxClusterWSServer {
63
+ store: ReduxClusterStore;
64
+ uid: string;
65
+ connections: Map<string, WSConnection>;
66
+ authDatabase: AuthDatabase;
67
+ ipBanDatabase: IPBanDatabase;
68
+ config: WSServerConfig;
69
+ server?: any;
70
+ wss?: any;
71
+ sendToAll: (message?: ReduxClusterMessage) => void;
72
+ unsubscribe?: () => void;
73
+ }
74
+ export interface ReduxClusterWSClient {
75
+ store: ReduxClusterStore;
76
+ config: WSClientConfig;
77
+ ws?: any;
78
+ reconnectTimer?: any;
79
+ authenticated: boolean;
80
+ login: string;
81
+ password: string;
82
+ reconnect: () => void;
83
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Hash a string using SHA-1
3
+ */
4
+ export declare function hasher(data: string): string;
5
+ /**
6
+ * Replace dots with underscores and vice versa
7
+ */
8
+ export declare function replacer(data: string, dotToUnderscore?: boolean): string;
9
+ /**
10
+ * Generate a unique identifier using crypto.randomUUID
11
+ * Supports Node.js 14.17+ and modern browsers (Chrome 92+, Firefox 95+, Safari 15.4+)
12
+ */
13
+ export declare function generateUID(): string;
14
+ /**
15
+ * Deep clone an object
16
+ */
17
+ export declare function deepClone<T>(obj: T): T;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasher = hasher;
4
+ exports.replacer = replacer;
5
+ exports.generateUID = generateUID;
6
+ exports.deepClone = deepClone;
7
+ const crypto_1 = require("crypto");
8
+ /**
9
+ * Hash a string using SHA-1
10
+ */
11
+ function hasher(data) {
12
+ if (typeof data === "string") {
13
+ const hash = (0, crypto_1.createHash)("sha1");
14
+ hash.update(data);
15
+ return hash.digest("hex");
16
+ }
17
+ throw new Error("Data must be a string");
18
+ }
19
+ /**
20
+ * Replace dots with underscores and vice versa
21
+ */
22
+ function replacer(data, dotToUnderscore = true) {
23
+ if (typeof data === "string") {
24
+ if (dotToUnderscore) {
25
+ return data.replace(/\./g, "_");
26
+ }
27
+ else {
28
+ return data.replace(/_/g, ".");
29
+ }
30
+ }
31
+ throw new Error("Data must be a string");
32
+ }
33
+ /**
34
+ * Generate a unique identifier using crypto.randomUUID
35
+ * Supports Node.js 14.17+ and modern browsers (Chrome 92+, Firefox 95+, Safari 15.4+)
36
+ */
37
+ function generateUID() {
38
+ // Use crypto.randomUUID if available (Node.js 14.17+ and modern browsers)
39
+ if (typeof crypto_1.randomUUID === "function") {
40
+ return (0, crypto_1.randomUUID)();
41
+ }
42
+ // Browser global crypto.randomUUID
43
+ if (typeof crypto !== "undefined" && crypto.randomUUID) {
44
+ return crypto.randomUUID();
45
+ }
46
+ // Final fallback for very old environments
47
+ return (Math.random().toString(36).substring(2, 15) +
48
+ Math.random().toString(36).substring(2, 15) +
49
+ Date.now().toString(36));
50
+ }
51
+ /**
52
+ * Deep clone an object
53
+ */
54
+ function deepClone(obj) {
55
+ if (obj === null || typeof obj !== "object") {
56
+ return obj;
57
+ }
58
+ if (obj instanceof Date) {
59
+ return new Date(obj.getTime());
60
+ }
61
+ if (obj instanceof Array) {
62
+ return obj.map((item) => deepClone(item));
63
+ }
64
+ if (typeof obj === "object") {
65
+ const cloned = {};
66
+ for (const key in obj) {
67
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
68
+ cloned[key] = deepClone(obj[key]);
69
+ }
70
+ }
71
+ return cloned;
72
+ }
73
+ return obj;
74
+ }
75
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAKA,wBAOC;AAKD,4BAYC;AAMD,kCAiBC;AAID,8BAwBC;AAhFD,mCAAgD;AAEhD;;GAEG;AACH,SAAgB,MAAM,CAAC,IAAY;IACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CACtB,IAAY,EACZ,kBAA2B,IAAI;IAE/B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW;IACzB,0EAA0E;IAC1E,IAAI,OAAO,mBAAU,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO,IAAA,mBAAU,GAAE,CAAC;IACtB,CAAC;IAED,mCAAmC;IACnC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvD,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAED,2CAA2C;IAC3C,OAAO,CACL,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CACxB,CAAC;AACJ,CAAC;AACD;;GAEG;AACH,SAAgB,SAAS,CAAI,GAAM;IACjC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAM,CAAC;IACtC,CAAC;IAED,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAM,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAO,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBACnD,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { Reducer, AnyAction } from "redux";
2
+ import { WSClientConfig, ReduxClusterStore, ReduxClusterWSClient } from "./types.js";
3
+ export declare class ReduxCluster<S = any, A extends AnyAction = AnyAction> implements ReduxClusterStore<S, A> {
4
+ stderr: (message: string) => void;
5
+ role: string[];
6
+ mode: "action" | "snapshot";
7
+ connected: boolean;
8
+ resync: number;
9
+ RCHash: string;
10
+ version: string;
11
+ homepage: string;
12
+ createWSClient?: (config: WSClientConfig) => void;
13
+ private store;
14
+ private altReducer;
15
+ private defaultState;
16
+ private static reducers;
17
+ constructor(reducer: Reducer<S, A>);
18
+ getState(): S;
19
+ dispatch: (action: any) => any;
20
+ subscribe(listener: () => void): () => void;
21
+ replaceReducer(_nextReducer: Reducer<S, A>): void;
22
+ [Symbol.observable](): import("redux").Observable<unknown>;
23
+ }
24
+ export declare class ReduxClusterWSClientWrapper implements ReduxClusterWSClient {
25
+ store: ReduxClusterStore;
26
+ config: WSClientConfig;
27
+ ws?: WebSocket;
28
+ reconnectTimer?: NodeJS.Timeout;
29
+ authenticated: boolean;
30
+ login: string;
31
+ password: string;
32
+ private originalDispatch;
33
+ constructor(store: ReduxClusterStore, config: WSClientConfig);
34
+ reconnect: () => void;
35
+ private buildWebSocketURL;
36
+ private handleMessage;
37
+ private dispatch;
38
+ private sendMessage;
39
+ private scheduleReconnect;
40
+ destroy: () => void;
41
+ }
42
+ export declare function createStore<S = any, A extends AnyAction = AnyAction>(reducer: Reducer<S, A>): ReduxClusterStore<S, A>;
43
+ export declare function client<S = any>(store: ReduxClusterStore<S>): ReduxClusterStore<S>;
@@ -0,0 +1,282 @@
1
+ import { createStore as createReduxStore } from "redux";
2
+ import { hasher, deepClone } from "./utils.js";
3
+ // WebSocket compatibility for both browser and Node.js
4
+ const WebSocketClass = (() => {
5
+ if (typeof window !== "undefined" && window.WebSocket) {
6
+ return window.WebSocket;
7
+ }
8
+ if (typeof global !== "undefined" && global.WebSocket) {
9
+ return global.WebSocket;
10
+ }
11
+ try {
12
+ // Use dynamic import for Node.js environments
13
+ const wsModule = eval("require")("ws");
14
+ return wsModule;
15
+ }
16
+ catch {
17
+ throw new Error("WebSocket implementation not found");
18
+ }
19
+ })();
20
+ export class ReduxCluster {
21
+ stderr = console.error;
22
+ role = [];
23
+ mode = "action";
24
+ connected = false;
25
+ resync = 1000;
26
+ RCHash;
27
+ version;
28
+ homepage;
29
+ createWSClient;
30
+ store;
31
+ altReducer;
32
+ defaultState;
33
+ static reducers = {};
34
+ constructor(reducer) {
35
+ this.altReducer = reducer;
36
+ this.RCHash = hasher(reducer.name);
37
+ // Get version and homepage from package.json (would need to be injected in real implementation)
38
+ this.version = "2.0.0";
39
+ this.homepage = "https://github.com/siarheidudko/redux-cluster-ws";
40
+ // Check for duplicate reducer names
41
+ if (ReduxCluster.reducers[reducer.name]) {
42
+ throw new Error("Please don't use a reducer with the same name!");
43
+ }
44
+ ReduxCluster.reducers[reducer.name] = this.RCHash;
45
+ // Get default state
46
+ try {
47
+ const defaultState = this.altReducer(undefined, {});
48
+ if (typeof defaultState === "object" && defaultState !== null) {
49
+ this.defaultState = defaultState;
50
+ }
51
+ else {
52
+ throw new Error("The returned value is not an object.");
53
+ }
54
+ }
55
+ catch {
56
+ this.defaultState = {};
57
+ }
58
+ // Create new reducer that handles sync actions
59
+ const newReducer = (state = this.defaultState, action) => {
60
+ if (action.type === "REDUX_CLUSTER_SYNC") {
61
+ return deepClone(action.payload);
62
+ }
63
+ else {
64
+ return this.altReducer(state, action);
65
+ }
66
+ };
67
+ // Create Redux store
68
+ this.store = createReduxStore(newReducer);
69
+ }
70
+ // Redux Store interface implementation
71
+ getState() {
72
+ return this.store.getState();
73
+ }
74
+ dispatch = (action) => {
75
+ return this.store.dispatch(action);
76
+ };
77
+ subscribe(listener) {
78
+ return this.store.subscribe(listener);
79
+ }
80
+ replaceReducer(_nextReducer) {
81
+ throw new Error("replaceReducer is not supported in ReduxCluster");
82
+ }
83
+ [Symbol.observable]() {
84
+ return this.store[Symbol.observable]();
85
+ }
86
+ }
87
+ export class ReduxClusterWSClientWrapper {
88
+ store;
89
+ config;
90
+ ws;
91
+ reconnectTimer;
92
+ authenticated = false;
93
+ login;
94
+ password;
95
+ originalDispatch;
96
+ constructor(store, config) {
97
+ this.store = store;
98
+ this.config = {
99
+ port: 10002,
100
+ reconnectInterval: 10000,
101
+ timeout: 30000,
102
+ ...config,
103
+ };
104
+ // Validate config
105
+ if (!config.host) {
106
+ throw new Error("Config requires server address!");
107
+ }
108
+ if (!config.login) {
109
+ throw new Error("Config requires login for server authorization!");
110
+ }
111
+ if (!config.password) {
112
+ throw new Error("Config requires password for server authorization!");
113
+ }
114
+ // Setup authentication
115
+ this.login = hasher(`REDUX_CLUSTER${config.login}`);
116
+ this.password = hasher(`REDUX_CLUSTER${config.password}`);
117
+ // Override dispatch method
118
+ this.originalDispatch = this.store.dispatch;
119
+ this.store.dispatch = this.dispatch.bind(this);
120
+ // Add client role
121
+ if (!this.store.role.includes("client")) {
122
+ this.store.role.push("client");
123
+ }
124
+ else {
125
+ throw new Error("One storage cannot be connected to two servers at the same time.");
126
+ }
127
+ this.store.connected = false;
128
+ this.reconnect();
129
+ }
130
+ reconnect = () => {
131
+ try {
132
+ const url = this.buildWebSocketURL();
133
+ this.ws = new WebSocketClass(url);
134
+ if (this.ws) {
135
+ this.ws.onopen = () => {
136
+ this.sendMessage({
137
+ _msg: "REDUX_CLUSTER_SOCKET_AUTH",
138
+ _hash: this.store.RCHash,
139
+ _login: this.login,
140
+ _password: this.password,
141
+ });
142
+ };
143
+ this.ws.onmessage = (event) => {
144
+ try {
145
+ const message = JSON.parse(event.data);
146
+ this.handleMessage(message);
147
+ }
148
+ catch (error) {
149
+ this.store.stderr(`ReduxCluster.createWSClient message parse error: ${error}`);
150
+ }
151
+ };
152
+ this.ws.onclose = () => {
153
+ this.authenticated = false;
154
+ this.store.connected = false;
155
+ this.scheduleReconnect();
156
+ };
157
+ this.ws.onerror = (error) => {
158
+ this.store.stderr(`ReduxCluster.createWSClient connection error: ${error}`);
159
+ this.authenticated = false;
160
+ this.store.connected = false;
161
+ };
162
+ }
163
+ }
164
+ catch (error) {
165
+ this.store.stderr(`ReduxCluster.createWSClient client error: ${error}`);
166
+ this.store.connected = false;
167
+ this.scheduleReconnect();
168
+ }
169
+ };
170
+ buildWebSocketURL() {
171
+ const protocol = this.config.host.toLowerCase().includes("https://")
172
+ ? "wss:"
173
+ : "ws:";
174
+ const host = this.config.host.replace(/^(https?|wss?):\/\//, "");
175
+ const path = `/redux-cluster-${this.store.RCHash}`;
176
+ return `${protocol}//${host}:${this.config.port}${path}`;
177
+ }
178
+ handleMessage = (message) => {
179
+ if (message._hash !== this.store.RCHash) {
180
+ return;
181
+ }
182
+ switch (message._msg) {
183
+ case "REDUX_CLUSTER_MSGTOWORKER":
184
+ if (message._action) {
185
+ this.originalDispatch(message._action);
186
+ }
187
+ break;
188
+ case "REDUX_CLUSTER_SOCKET_AUTHSTATE":
189
+ if (message._value === true) {
190
+ this.authenticated = true;
191
+ this.store.connected = true;
192
+ this.sendMessage({
193
+ _msg: "REDUX_CLUSTER_START",
194
+ _hash: this.store.RCHash,
195
+ });
196
+ }
197
+ else {
198
+ this.authenticated = false;
199
+ this.store.connected = false;
200
+ if (message._banned) {
201
+ this.store.stderr("Your IP is locked for 3 hours");
202
+ }
203
+ else {
204
+ this.store.stderr("Authorization failed");
205
+ }
206
+ this.ws?.close();
207
+ }
208
+ break;
209
+ }
210
+ };
211
+ dispatch = (action) => {
212
+ try {
213
+ if (this.ws && this.ws.readyState === 1 && this.authenticated) {
214
+ // WebSocket.OPEN = 1
215
+ this.sendMessage({
216
+ _msg: "REDUX_CLUSTER_MSGTOMASTER",
217
+ _hash: this.store.RCHash,
218
+ _action: action,
219
+ });
220
+ }
221
+ else {
222
+ this.store.stderr("WebSocket is not connected or not authenticated");
223
+ }
224
+ }
225
+ catch (error) {
226
+ this.store.stderr(`ReduxCluster.createWSClient write error: ${error}`);
227
+ }
228
+ return action;
229
+ };
230
+ sendMessage = (message) => {
231
+ if (this.ws && this.ws.readyState === 1) {
232
+ // WebSocket.OPEN = 1
233
+ this.ws.send(JSON.stringify(message));
234
+ }
235
+ };
236
+ scheduleReconnect = () => {
237
+ if (this.reconnectTimer) {
238
+ clearTimeout(this.reconnectTimer);
239
+ }
240
+ this.reconnectTimer = setTimeout(() => {
241
+ this.reconnect();
242
+ }, this.config.reconnectInterval);
243
+ };
244
+ destroy = () => {
245
+ if (this.reconnectTimer) {
246
+ clearTimeout(this.reconnectTimer);
247
+ }
248
+ if (this.ws) {
249
+ this.ws.close();
250
+ }
251
+ // Restore original dispatch
252
+ this.store.dispatch = this.originalDispatch;
253
+ };
254
+ }
255
+ export function createStore(reducer) {
256
+ const reduxCluster = new ReduxCluster(reducer);
257
+ reduxCluster.createWSClient = (config) => {
258
+ return new ReduxClusterWSClientWrapper(reduxCluster, config);
259
+ };
260
+ return reduxCluster;
261
+ }
262
+ export function client(store) {
263
+ // Add createWSClient method to existing redux-cluster store
264
+ if (!store.createWSClient) {
265
+ // Get the current reducer
266
+ const originalReducer = store._reducer || ((state) => state);
267
+ // Create a new reducer that handles REDUX_CLUSTER_SYNC
268
+ const syncReducer = (state, action) => {
269
+ if (action.type === "REDUX_CLUSTER_SYNC") {
270
+ return deepClone(action.payload);
271
+ }
272
+ return originalReducer(state, action);
273
+ };
274
+ // Replace the reducer
275
+ store.replaceReducer(syncReducer);
276
+ store.createWSClient = (config) => {
277
+ return new ReduxClusterWSClientWrapper(store, config);
278
+ };
279
+ }
280
+ return store;
281
+ }
282
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { server } from "./server.js";
2
+ export { client, createStore } from "./client.js";
3
+ export * from "./types.js";
4
+ export * from "./utils.js";
@@ -0,0 +1,5 @@
1
+ export { server } from "./server.js";
2
+ export { client, createStore } from "./client.js";
3
+ export * from "./types.js";
4
+ export * from "./utils.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { WSServerConfig, ReduxClusterStore, ReduxClusterMessage, WSConnection, AuthDatabase, IPBanDatabase, ReduxClusterWSServer } from "./types.js";
2
+ export declare class ReduxClusterWSServerWrapper implements ReduxClusterWSServer {
3
+ store: ReduxClusterStore;
4
+ uid: string;
5
+ connections: Map<string, WSConnection>;
6
+ authDatabase: AuthDatabase;
7
+ ipBanDatabase: IPBanDatabase;
8
+ config: WSServerConfig;
9
+ server?: any;
10
+ wss?: any;
11
+ unsubscribe?: () => void;
12
+ private readonly IP_BAN_ATTEMPTS;
13
+ private readonly IP_BAN_TIMEOUT;
14
+ private readonly CONNECTION_TIMEOUT;
15
+ private gcInterval?;
16
+ constructor(store: ReduxClusterStore);
17
+ private createWSServer;
18
+ private handleConnection;
19
+ private handleMessage;
20
+ private handleAuthentication;
21
+ sendToAll: (message?: ReduxClusterMessage) => void;
22
+ private sendMessage;
23
+ private extractIP;
24
+ private isIPBanned;
25
+ private recordFailedAttempt;
26
+ private clearIPBan;
27
+ private removeConnection;
28
+ private startGarbageCollection;
29
+ destroy: () => void;
30
+ }
31
+ export declare function server<S = any>(store: ReduxClusterStore<S>): ReduxClusterStore<S>;