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.
- package/FUNDING.yml +7 -0
- package/LICENSE +21 -21
- package/README.md +394 -90
- package/dist/cjs/client.d.ts +43 -0
- package/dist/cjs/client.js +276 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/server.d.ts +31 -0
- package/dist/cjs/server.js +295 -0
- package/dist/cjs/server.js.map +1 -0
- package/dist/cjs/types.d.ts +83 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +17 -0
- package/dist/cjs/utils.js +75 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/client.d.ts +43 -0
- package/dist/esm/client.js +282 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/server.d.ts +31 -0
- package/dist/esm/server.js +299 -0
- package/dist/esm/server.js.map +1 -0
- package/dist/esm/types.d.ts +83 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +17 -0
- package/dist/esm/utils.js +69 -0
- package/dist/esm/utils.js.map +1 -0
- package/eslint.config.js +143 -0
- package/examples/browser-example.cjs +350 -0
- package/examples/browser.html +255 -0
- package/examples/client.cjs +155 -0
- package/examples/cross-library-browser.html +655 -0
- package/examples/cross-library-client.cjs +190 -0
- package/examples/cross-library-server.cjs +213 -0
- package/examples/server.cjs +96 -0
- package/package.json +96 -23
- package/client.js +0 -192
- package/index.js +0 -12
- package/server.js +0 -175
- package/test.auto.proc1.js +0 -100
- package/test.auto.proc2.js +0 -74
- package/test.visual.client.html +0 -37
- package/test.visual.client.js +0 -63
- package/test.visual.server.js +0 -66
- package/umd/ReduxCluster.js +0 -18
- package/webpack-src.js +0 -6
- 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 @@
|
|
|
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":"AAAA,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAsB,MAAM,OAAO,CAAC;AAO5E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM/C,uDAAuD;AACvD,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE;IAC3B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACtD,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACtD,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IACD,IAAI,CAAC;QACH,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,OAAO,YAAY;IAGhB,MAAM,GAA8B,OAAO,CAAC,KAAK,CAAC;IAClD,IAAI,GAAa,EAAE,CAAC;IACpB,IAAI,GAA0B,QAAQ,CAAC;IACvC,SAAS,GAAY,KAAK,CAAC;IAC3B,MAAM,GAAW,IAAI,CAAC;IACtB,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,QAAQ,CAAS;IACjB,cAAc,CAAoC;IAEjD,KAAK,CAAsC;IAC3C,UAAU,CAAgB;IAC1B,YAAY,CAAI;IAChB,MAAM,CAAC,QAAQ,GAA2B,EAAE,CAAC;IAErD,YAAY,OAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnC,gGAAgG;QAChG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,kDAAkD,CAAC;QAEnE,oCAAoC;QACpC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAElD,oBAAoB;QACpB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,SAAgB,EAAE,EAAO,CAAC,CAAC;YAChE,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBAC9D,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,YAAY,GAAG,EAAO,CAAC;QAC9B,CAAC;QAED,+CAA+C;QAC/C,MAAM,UAAU,GAAG,CAAC,QAAW,IAAI,CAAC,YAAY,EAAE,MAAS,EAAK,EAAE;YAChE,IAAK,MAAc,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBAClD,OAAO,SAAS,CAAE,MAAc,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC;QAEF,qBAAqB;QACrB,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,uCAAuC;IAChC,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAO,CAAC;IACpC,CAAC;IAEM,QAAQ,GAAG,CAAC,MAAW,EAAO,EAAE;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;IAEK,SAAS,CAAC,QAAoB;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAEM,cAAc,CAAC,YAA2B;QAC/C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAEM,CAAC,MAAM,CAAC,UAAU,CAAC;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;IACzC,CAAC;;AAGH,MAAM,OAAO,2BAA2B;IAC/B,KAAK,CAAoB;IACzB,MAAM,CAAiB;IACvB,EAAE,CAAa;IACf,cAAc,CAAkB;IAChC,aAAa,GAAY,KAAK,CAAC;IAC/B,KAAK,CAAS;IACd,QAAQ,CAAS;IAEhB,gBAAgB,CAAM;IAE9B,YAAY,KAAwB,EAAE,MAAsB;QAC1D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG;YACZ,IAAI,EAAE,KAAK;YACX,iBAAiB,EAAE,KAAK;YACxB,OAAO,EAAE,KAAK;YACd,GAAG,MAAM;SACV,CAAC;QAEF,kBAAkB;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,gBAAgB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,gBAAgB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE1D,2BAA2B;QAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAQ,CAAC;QAEtD,kBAAkB;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEM,SAAS,GAAG,GAAS,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrC,IAAI,CAAC,EAAE,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;YAElC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACZ,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;oBACpB,IAAI,CAAC,WAAW,CAAC;wBACf,IAAI,EAAE,2BAA2B;wBACjC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;wBACxB,MAAM,EAAE,IAAI,CAAC,KAAK;wBAClB,SAAS,EAAE,IAAI,CAAC,QAAQ;qBACzB,CAAC,CAAC;gBACL,CAAC,CAAC;gBAEF,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE;oBACjC,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACvC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBAC9B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,KAAK,CAAC,MAAM,CACf,oDAAoD,KAAK,EAAE,CAC5D,CAAC;oBACJ,CAAC;gBACH,CAAC,CAAC;gBAEF,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;oBACrB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;oBAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,CAAC,CAAC;gBAEF,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,KAAU,EAAE,EAAE;oBAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CACf,iDAAiD,KAAK,EAAE,CACzD,CAAC;oBACF,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;gBAC/B,CAAC,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,6CAA6C,KAAK,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IAEM,iBAAiB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAClE,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,KAAK,CAAC;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,kBAAkB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEnD,OAAO,GAAG,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;IAC3D,CAAC;IAEO,aAAa,GAAG,CAAC,OAA4B,EAAQ,EAAE;QAC7D,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QAED,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,2BAA2B;gBAC9B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACzC,CAAC;gBACD,MAAM;YAER,KAAK,gCAAgC;gBACnC,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC1B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;oBAC5B,IAAI,CAAC,WAAW,CAAC;wBACf,IAAI,EAAE,qBAAqB;wBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;qBACzB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;oBAC7B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;wBACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;oBACrD,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;oBAC5C,CAAC;oBACD,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;gBACnB,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC,CAAC;IAEM,QAAQ,GAAG,CAAC,MAAiB,EAAa,EAAE;QAClD,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC9D,qBAAqB;gBACrB,IAAI,CAAC,WAAW,CAAC;oBACf,IAAI,EAAE,2BAA2B;oBACjC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;oBACxB,OAAO,EAAE,MAAM;iBAChB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,KAAK,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEM,WAAW,GAAG,CAAC,OAA4B,EAAQ,EAAE;QAC3D,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YACxC,qBAAqB;YACrB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;IAEM,iBAAiB,GAAG,GAAS,EAAE;QACrC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACpC,CAAC,CAAC;IAEK,OAAO,GAAG,GAAS,EAAE;QAC1B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAC9C,CAAC,CAAC;CACH;AAED,MAAM,UAAU,WAAW,CACzB,OAAsB;IAEtB,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IAE/C,YAAY,CAAC,cAAc,GAAG,CAAC,MAAsB,EAAE,EAAE;QACvD,OAAO,IAAI,2BAA2B,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,KAA2B;IAE3B,4DAA4D;IAC5D,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1B,0BAA0B;QAC1B,MAAM,eAAe,GAAI,KAAa,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAEzE,uDAAuD;QACvD,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAE,MAAW,EAAK,EAAE;YAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACzC,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,sBAAsB;QACtB,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAElC,KAAK,CAAC,cAAc,GAAG,CAAC,MAAsB,EAAE,EAAE;YAChD,OAAO,IAAI,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -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>;
|