@push-rpc/next 2.0.11 → 2.0.12
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/README.md +214 -20
- package/example/client.ts +1 -1
- package/example/server.ts +2 -2
- package/package-lock.json +1291 -0
- package/package.json +1 -1
- package/src/client/RpcClientImpl.ts +11 -3
- package/src/client/WebSocketConnection.ts +7 -3
- package/src/client/index.ts +2 -2
- package/src/utils/middleware.ts +7 -2
- package/tests/middleware.ts +104 -7
- package/tests/testUtils.ts +2 -2
- package/dist/client/HttpClient.d.ts +0 -11
- package/dist/client/HttpClient.js +0 -84
- package/dist/client/HttpClient.js.map +0 -1
- package/dist/client/RemoteSubscriptions.d.ts +0 -18
- package/dist/client/RemoteSubscriptions.js +0 -120
- package/dist/client/RemoteSubscriptions.js.map +0 -1
- package/dist/client/RpcClientImpl.d.ts +0 -22
- package/dist/client/RpcClientImpl.js +0 -121
- package/dist/client/RpcClientImpl.js.map +0 -1
- package/dist/client/WebSocketConnection.d.ts +0 -36
- package/dist/client/WebSocketConnection.js +0 -161
- package/dist/client/WebSocketConnection.js.map +0 -1
- package/dist/client/index.d.ts +0 -29
- package/dist/client/index.js +0 -39
- package/dist/client/index.js.map +0 -1
- package/dist/client/remote.d.ts +0 -14
- package/dist/client/remote.js +0 -66
- package/dist/client/remote.js.map +0 -1
- package/dist/index.d.ts +0 -13
- package/dist/index.js.map +0 -1
- package/dist/logger.d.ts +0 -8
- package/dist/logger.js +0 -9
- package/dist/logger.js.map +0 -1
- package/dist/rpc.d.ts +0 -37
- package/dist/rpc.js +0 -33
- package/dist/rpc.js.map +0 -1
- package/dist/server/ConnectionsServer.d.ts +0 -13
- package/dist/server/ConnectionsServer.js +0 -72
- package/dist/server/ConnectionsServer.js.map +0 -1
- package/dist/server/LocalSubscriptions.d.ts +0 -12
- package/dist/server/LocalSubscriptions.js +0 -113
- package/dist/server/LocalSubscriptions.js.map +0 -1
- package/dist/server/RpcServerImpl.d.ts +0 -24
- package/dist/server/RpcServerImpl.js +0 -200
- package/dist/server/RpcServerImpl.js.map +0 -1
- package/dist/server/http.d.ts +0 -9
- package/dist/server/http.js +0 -89
- package/dist/server/http.js.map +0 -1
- package/dist/server/index.d.ts +0 -32
- package/dist/server/index.js +0 -33
- package/dist/server/index.js.map +0 -1
- package/dist/server/local.d.ts +0 -15
- package/dist/server/local.js +0 -46
- package/dist/server/local.js.map +0 -1
- package/dist/utils/cookies.d.ts +0 -7
- package/dist/utils/cookies.js +0 -31
- package/dist/utils/cookies.js.map +0 -1
- package/dist/utils/env.d.ts +0 -6
- package/dist/utils/env.js +0 -22
- package/dist/utils/env.js.map +0 -1
- package/dist/utils/json.d.ts +0 -2
- package/dist/utils/json.js +0 -34
- package/dist/utils/json.js.map +0 -1
- package/dist/utils/middleware.d.ts +0 -2
- package/dist/utils/middleware.js +0 -31
- package/dist/utils/middleware.js.map +0 -1
- package/dist/utils/promises.d.ts +0 -5
- package/dist/utils/promises.js +0 -29
- package/dist/utils/promises.js.map +0 -1
- package/dist/utils/server.d.ts +0 -5
- package/dist/utils/server.js +0 -48
- package/dist/utils/server.js.map +0 -1
- package/dist/utils/throttle.d.ts +0 -4
- package/dist/utils/throttle.js +0 -40
- package/dist/utils/throttle.js.map +0 -1
- package/dist/utils/types.d.ts +0 -1
- package/dist/utils/types.js +0 -3
- package/dist/utils/types.js.map +0 -1
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export declare class WebSocketConnection {
|
|
2
|
-
private readonly url;
|
|
3
|
-
private readonly clientId;
|
|
4
|
-
private readonly options;
|
|
5
|
-
private readonly consume;
|
|
6
|
-
private readonly onConnected;
|
|
7
|
-
private readonly onDisconnected;
|
|
8
|
-
constructor(url: string, clientId: string, options: {
|
|
9
|
-
subscriptions: boolean;
|
|
10
|
-
reconnectDelay: number;
|
|
11
|
-
errorDelayMaxDuration: number;
|
|
12
|
-
pingInterval: number | null;
|
|
13
|
-
}, consume: (itemName: string, parameters: unknown[], data: unknown) => void, onConnected: () => void, onDisconnected: () => void);
|
|
14
|
-
private resolveClose;
|
|
15
|
-
close(): Promise<void>;
|
|
16
|
-
private waitConnectionPromise;
|
|
17
|
-
/**
|
|
18
|
-
* Connect to the server, on each disconnect try to disconnect.
|
|
19
|
-
* Resolves at next successful connect. Reconnection loop continues even after resolution
|
|
20
|
-
* Never rejects
|
|
21
|
-
*/
|
|
22
|
-
connect(): Promise<void>;
|
|
23
|
-
isConnected(): boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Connect this to server
|
|
26
|
-
*
|
|
27
|
-
* Resolves on successful connection, rejects on connection error or connection timeout
|
|
28
|
-
*/
|
|
29
|
-
private establishConnection;
|
|
30
|
-
private socket;
|
|
31
|
-
private disconnectedMark;
|
|
32
|
-
private pingTimeout;
|
|
33
|
-
private heartbeat;
|
|
34
|
-
private receiveSocketMessage;
|
|
35
|
-
_webSocket(): WebSocket | null;
|
|
36
|
-
}
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebSocketConnection = void 0;
|
|
4
|
-
const logger_js_1 = require("../logger.js");
|
|
5
|
-
const json_js_1 = require("../utils/json.js");
|
|
6
|
-
const promises_js_1 = require("../utils/promises.js");
|
|
7
|
-
class WebSocketConnection {
|
|
8
|
-
constructor(url, clientId, options, consume, onConnected, onDisconnected) {
|
|
9
|
-
this.url = url;
|
|
10
|
-
this.clientId = clientId;
|
|
11
|
-
this.options = options;
|
|
12
|
-
this.consume = consume;
|
|
13
|
-
this.onConnected = onConnected;
|
|
14
|
-
this.onDisconnected = onDisconnected;
|
|
15
|
-
this.resolveClose = () => { };
|
|
16
|
-
this.socket = null;
|
|
17
|
-
this.disconnectedMark = false;
|
|
18
|
-
this.pingTimeout = null;
|
|
19
|
-
this.clientId = clientId;
|
|
20
|
-
}
|
|
21
|
-
async close() {
|
|
22
|
-
this.disconnectedMark = true;
|
|
23
|
-
if (this.socket) {
|
|
24
|
-
this.socket.close();
|
|
25
|
-
return new Promise((resolve, reject) => {
|
|
26
|
-
this.resolveClose = resolve;
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Connect to the server, on each disconnect try to disconnect.
|
|
32
|
-
* Resolves at next successful connect. Reconnection loop continues even after resolution
|
|
33
|
-
* Never rejects
|
|
34
|
-
*/
|
|
35
|
-
connect() {
|
|
36
|
-
// no subscriptions support, no need to connect
|
|
37
|
-
if (!this.options.subscriptions) {
|
|
38
|
-
return Promise.resolve();
|
|
39
|
-
}
|
|
40
|
-
// already started connecting
|
|
41
|
-
if (this.waitConnectionPromise)
|
|
42
|
-
return this.waitConnectionPromise;
|
|
43
|
-
// start connection process
|
|
44
|
-
let resolveConnectionPromise;
|
|
45
|
-
let errorDelay = 0;
|
|
46
|
-
this.waitConnectionPromise = new Promise(async (resolve) => {
|
|
47
|
-
resolveConnectionPromise = resolve;
|
|
48
|
-
while (true) {
|
|
49
|
-
// connect, and wait for ...
|
|
50
|
-
await new Promise((resolve) => {
|
|
51
|
-
const connectionPromise = this.establishConnection(() => {
|
|
52
|
-
// 1. ...disconnected
|
|
53
|
-
// recreate promise so new clients will wait for new connection
|
|
54
|
-
this.waitConnectionPromise = new Promise((resolve) => (resolveConnectionPromise = resolve));
|
|
55
|
-
resolve();
|
|
56
|
-
});
|
|
57
|
-
connectionPromise.then(() => {
|
|
58
|
-
// first reconnect after successful connection is done without delay
|
|
59
|
-
errorDelay = 0;
|
|
60
|
-
resolveConnectionPromise();
|
|
61
|
-
}, (e) => {
|
|
62
|
-
logger_js_1.log.warn("Unable to connect WS", e);
|
|
63
|
-
// 2. ... unable to establish connection
|
|
64
|
-
resolve();
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
// disconnected while connecting?
|
|
68
|
-
if (this.disconnectedMark) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
await (0, promises_js_1.adelay)(this.options.reconnectDelay + errorDelay);
|
|
72
|
-
// disconnected while waiting?
|
|
73
|
-
if (this.disconnectedMark) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
errorDelay = Math.round(Math.random() * this.options.errorDelayMaxDuration);
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
return this.waitConnectionPromise;
|
|
80
|
-
}
|
|
81
|
-
isConnected() {
|
|
82
|
-
return this.socket !== null;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Connect this to server
|
|
86
|
-
*
|
|
87
|
-
* Resolves on successful connection, rejects on connection error or connection timeout
|
|
88
|
-
*/
|
|
89
|
-
async establishConnection(onDisconnected) {
|
|
90
|
-
return new Promise(async (resolve, reject) => {
|
|
91
|
-
try {
|
|
92
|
-
const socket = new WebSocket(this.url, this.clientId);
|
|
93
|
-
let connected = false;
|
|
94
|
-
socket.addEventListener("open", () => {
|
|
95
|
-
this.socket = socket;
|
|
96
|
-
connected = true;
|
|
97
|
-
resolve();
|
|
98
|
-
this.heartbeat();
|
|
99
|
-
this.onConnected();
|
|
100
|
-
});
|
|
101
|
-
socket.addEventListener("ping", () => {
|
|
102
|
-
this.heartbeat();
|
|
103
|
-
});
|
|
104
|
-
socket.addEventListener("close", () => {
|
|
105
|
-
this.socket = null;
|
|
106
|
-
if (connected) {
|
|
107
|
-
onDisconnected();
|
|
108
|
-
this.onDisconnected();
|
|
109
|
-
}
|
|
110
|
-
if (this.pingTimeout) {
|
|
111
|
-
clearTimeout(this.pingTimeout);
|
|
112
|
-
}
|
|
113
|
-
this.resolveClose();
|
|
114
|
-
});
|
|
115
|
-
socket.addEventListener("error", (e) => {
|
|
116
|
-
if (!connected) {
|
|
117
|
-
reject(e);
|
|
118
|
-
}
|
|
119
|
-
try {
|
|
120
|
-
socket.close();
|
|
121
|
-
}
|
|
122
|
-
catch (e) {
|
|
123
|
-
// ignore
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
socket.addEventListener("message", (message) => {
|
|
127
|
-
this.receiveSocketMessage(message.data);
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
catch (e) {
|
|
131
|
-
reject(e);
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
heartbeat() {
|
|
136
|
-
if (this.pingTimeout) {
|
|
137
|
-
clearTimeout(this.pingTimeout);
|
|
138
|
-
}
|
|
139
|
-
if (this.options.pingInterval) {
|
|
140
|
-
this.pingTimeout = setTimeout(() => {
|
|
141
|
-
this.socket?.close();
|
|
142
|
-
}, this.options.pingInterval * 1.5);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
async receiveSocketMessage(rawMessage) {
|
|
146
|
-
try {
|
|
147
|
-
const msg = rawMessage.toString();
|
|
148
|
-
const [itemName, data, ...parameters] = (0, json_js_1.safeParseJson)(msg);
|
|
149
|
-
this.consume(itemName, parameters, data);
|
|
150
|
-
}
|
|
151
|
-
catch (e) {
|
|
152
|
-
logger_js_1.log.warn("Invalid message received", e);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
// test-only
|
|
156
|
-
_webSocket() {
|
|
157
|
-
return this.socket;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
exports.WebSocketConnection = WebSocketConnection;
|
|
161
|
-
//# sourceMappingURL=WebSocketConnection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketConnection.js","sourceRoot":"","sources":["../../src/client/WebSocketConnection.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { RpcContext, Services } from "../rpc.js";
|
|
2
|
-
import { ServicesWithSubscriptions } from "./remote.js";
|
|
3
|
-
import { Middleware } from "../utils/middleware.js";
|
|
4
|
-
export type RpcClient = {
|
|
5
|
-
readonly clientId: string;
|
|
6
|
-
connect(): Promise<void>;
|
|
7
|
-
isConnected(): boolean;
|
|
8
|
-
close(): Promise<void>;
|
|
9
|
-
_allSubscriptions(): Array<any[]>;
|
|
10
|
-
_webSocket(): WebSocket | null;
|
|
11
|
-
};
|
|
12
|
-
export type ConsumeServicesOptions = {
|
|
13
|
-
callTimeout: number;
|
|
14
|
-
reconnectDelay: number;
|
|
15
|
-
errorDelayMaxDuration: number;
|
|
16
|
-
pingInterval: number | null;
|
|
17
|
-
subscriptions: boolean;
|
|
18
|
-
middleware: Middleware<RpcContext>[];
|
|
19
|
-
updatesMiddleware: Middleware<RpcContext>[];
|
|
20
|
-
connectOnCreate: boolean;
|
|
21
|
-
onConnected: () => void;
|
|
22
|
-
onDisconnected: () => void;
|
|
23
|
-
getHeaders: () => Promise<Record<string, string>>;
|
|
24
|
-
getSubscriptionsUrl(url: string): string;
|
|
25
|
-
};
|
|
26
|
-
export declare function consumeServices<S extends Services<S>>(url: string, overrideOptions?: Partial<ConsumeServicesOptions>): Promise<{
|
|
27
|
-
client: RpcClient;
|
|
28
|
-
remote: ServicesWithSubscriptions<S>;
|
|
29
|
-
}>;
|
package/dist/client/index.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.consumeServices = void 0;
|
|
4
|
-
const RpcClientImpl_js_1 = require("./RpcClientImpl.js");
|
|
5
|
-
async function consumeServices(url, overrideOptions = {}) {
|
|
6
|
-
if (url.endsWith("/")) {
|
|
7
|
-
throw new Error("URL must not end with /");
|
|
8
|
-
}
|
|
9
|
-
const options = {
|
|
10
|
-
...defaultOptions,
|
|
11
|
-
...overrideOptions,
|
|
12
|
-
};
|
|
13
|
-
const client = new RpcClientImpl_js_1.RpcClientImpl(url, options);
|
|
14
|
-
if (options.connectOnCreate) {
|
|
15
|
-
await client.connect();
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
client,
|
|
19
|
-
remote: client.createRemote(),
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
exports.consumeServices = consumeServices;
|
|
23
|
-
const defaultOptions = {
|
|
24
|
-
callTimeout: 5 * 1000,
|
|
25
|
-
reconnectDelay: 0,
|
|
26
|
-
errorDelayMaxDuration: 15 * 1000,
|
|
27
|
-
pingInterval: null, // if set, should be in-sync with server, ie 30 * 1000
|
|
28
|
-
subscriptions: true,
|
|
29
|
-
middleware: [],
|
|
30
|
-
updatesMiddleware: [],
|
|
31
|
-
connectOnCreate: false,
|
|
32
|
-
onConnected: () => { },
|
|
33
|
-
onDisconnected: () => { },
|
|
34
|
-
getHeaders: async () => ({}),
|
|
35
|
-
getSubscriptionsUrl(url) {
|
|
36
|
-
return url.replace(/^https(.*)/, "wss$1").replace(/^http(.*)/, "ws$1");
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":";;;AAEA,yDAAgD;AA8BzC,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,kBAAmD,EAAE;IAKrD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,OAAO,GAAG;QACd,GAAG,cAAc;QACjB,GAAG,eAAe;KACnB,CAAA;IAED,MAAM,MAAM,GAAG,IAAI,gCAAa,CAAI,GAAG,EAAE,OAAO,CAAC,CAAA;IAEjD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;IACxB,CAAC;IAED,OAAO;QACL,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE;KAC9B,CAAA;AACH,CAAC;AA1BD,0CA0BC;AAED,MAAM,cAAc,GAA2B;IAC7C,WAAW,EAAE,CAAC,GAAG,IAAI;IACrB,cAAc,EAAE,CAAC;IACjB,qBAAqB,EAAE,EAAE,GAAG,IAAI;IAChC,YAAY,EAAE,IAAI,EAAE,sDAAsD;IAC1E,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,EAAE;IACd,iBAAiB,EAAE,EAAE;IACrB,eAAe,EAAE,KAAK;IACtB,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;IACrB,cAAc,EAAE,GAAG,EAAE,GAAE,CAAC;IACxB,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAE5B,mBAAmB,CAAC,GAAW;QAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IACxE,CAAC;CACF,CAAA"}
|
package/dist/client/remote.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { CallOptions, Consumer, RemoteFunction, Services } from "../rpc.js";
|
|
2
|
-
export declare function createRemote<S extends Services<S>>(hooks: RemoteHooks, name?: string): ServicesWithSubscriptions<S>;
|
|
3
|
-
export type RemoteHooks = {
|
|
4
|
-
call(itemName: string, parameters: unknown[], callOptions?: CallOptions): Promise<unknown>;
|
|
5
|
-
subscribe(itemName: string, parameters: unknown[], consumer: (d: unknown) => void, callOptions?: CallOptions): Promise<void>;
|
|
6
|
-
unsubscribe(itemName: string, parameters: unknown[], consumer: (d: unknown) => void, callOptions?: CallOptions): Promise<void>;
|
|
7
|
-
};
|
|
8
|
-
export type AddParameters<TFunction extends (...args: any) => any, TParameters extends [...args: any]> = (...args: [...Parameters<TFunction>, ...TParameters]) => ReturnType<TFunction>;
|
|
9
|
-
export type ServicesWithSubscriptions<T extends Services<T>> = {
|
|
10
|
-
[K in keyof T]: T[K] extends RemoteFunction ? AddParameters<T[K], [CallOptions?]> & {
|
|
11
|
-
subscribe(consumer: Consumer<T[K]>, ...parameters: [...Parameters<T[K]>, CallOptions?]): Promise<void>;
|
|
12
|
-
unsubscribe(consumer: Consumer<T[K]>, ...parameters: [...Parameters<T[K]>, CallOptions?]): Promise<void>;
|
|
13
|
-
} : T[K] extends object ? ServicesWithSubscriptions<T[K]> : never;
|
|
14
|
-
};
|
package/dist/client/remote.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createRemote = void 0;
|
|
4
|
-
const rpc_js_1 = require("../rpc.js");
|
|
5
|
-
function createRemote(hooks, name = "") {
|
|
6
|
-
// start with remote function
|
|
7
|
-
const remoteItem = (...paramsWithCallOptions) => {
|
|
8
|
-
const { params, callOptions } = extractCallOptions(paramsWithCallOptions);
|
|
9
|
-
return hooks.call(name, params, callOptions);
|
|
10
|
-
};
|
|
11
|
-
// add subscription methods
|
|
12
|
-
const subscription = {
|
|
13
|
-
subscribe: (consumer, ...paramsWithCallOptions) => {
|
|
14
|
-
const { params, callOptions } = extractCallOptions(paramsWithCallOptions);
|
|
15
|
-
return hooks.subscribe(name, params, consumer, callOptions);
|
|
16
|
-
},
|
|
17
|
-
unsubscribe: (consumer, ...paramsWithCallOptions) => {
|
|
18
|
-
const { params, callOptions } = extractCallOptions(paramsWithCallOptions);
|
|
19
|
-
return hooks.unsubscribe(name, params, consumer, callOptions);
|
|
20
|
-
},
|
|
21
|
-
};
|
|
22
|
-
Object.assign(remoteItem, subscription);
|
|
23
|
-
// then add proxy creating subitems
|
|
24
|
-
const cachedItems = {};
|
|
25
|
-
return new Proxy(remoteItem, {
|
|
26
|
-
get(target, propName) {
|
|
27
|
-
// skip internal props
|
|
28
|
-
if (typeof propName != "string")
|
|
29
|
-
return target[propName];
|
|
30
|
-
// skip other system props
|
|
31
|
-
if (["then", "catch", "toJSON", ...skippedRemoteProps].includes(propName))
|
|
32
|
-
return target[propName];
|
|
33
|
-
// skip subscription methods
|
|
34
|
-
if (Object.keys(subscription).includes(propName))
|
|
35
|
-
return target[propName];
|
|
36
|
-
if (!cachedItems[propName]) {
|
|
37
|
-
cachedItems[propName] = createRemote(hooks, name ? name + "/" + propName : propName);
|
|
38
|
-
}
|
|
39
|
-
return cachedItems[propName];
|
|
40
|
-
},
|
|
41
|
-
set(target, propName, value) {
|
|
42
|
-
cachedItems[propName] = value;
|
|
43
|
-
return true;
|
|
44
|
-
},
|
|
45
|
-
// Used in resubscribe
|
|
46
|
-
ownKeys() {
|
|
47
|
-
return [...skippedRemoteProps, ...Object.keys(cachedItems)];
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
exports.createRemote = createRemote;
|
|
52
|
-
function extractCallOptions(params) {
|
|
53
|
-
if (params.length > 0 &&
|
|
54
|
-
typeof params[params.length - 1] == "object" &&
|
|
55
|
-
params[params.length - 1] != null &&
|
|
56
|
-
params[params.length - 1].kind == rpc_js_1.CallOptions.KIND) {
|
|
57
|
-
const options = params.pop();
|
|
58
|
-
return {
|
|
59
|
-
params,
|
|
60
|
-
callOptions: options,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
return { params };
|
|
64
|
-
}
|
|
65
|
-
const skippedRemoteProps = ["length", "name", "prototype", "arguments", "caller"];
|
|
66
|
-
//# sourceMappingURL=remote.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/client/remote.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export type { RemoteFunction, Services, Consumer, RpcContext, RpcConnectionContext } from "./rpc.js";
|
|
2
|
-
export { RpcError, RpcErrors, CallOptions } from "./rpc.js";
|
|
3
|
-
export type { Middleware } from "./utils/middleware.js";
|
|
4
|
-
export { withMiddlewares } from "./utils/middleware.js";
|
|
5
|
-
export type { RpcServer, PublishServicesOptions } from "./server/index.js";
|
|
6
|
-
export type { HttpServerHooks } from "./server/http.js";
|
|
7
|
-
export { publishServices } from "./server/index.js";
|
|
8
|
-
export type { ServicesWithTriggers } from "./server/local.js";
|
|
9
|
-
export type { RpcClient, ConsumeServicesOptions } from "./client/index.js";
|
|
10
|
-
export { consumeServices } from "./client/index.js";
|
|
11
|
-
export type { ServicesWithSubscriptions } from "./client/remote.js";
|
|
12
|
-
export { log, setLogger } from "./logger.js";
|
|
13
|
-
export { safeStringify, safeParseJson } from "./utils/json.js";
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,mCAAyD;AAAjD,kGAAA,QAAQ,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,qGAAA,WAAW,OAAA;AAGxC,uDAAqD;AAA7C,gHAAA,eAAe,OAAA;AAIvB,8CAAiD;AAAzC,2GAAA,eAAe,OAAA;AAKvB,8CAAiD;AAAzC,2GAAA,eAAe,OAAA;AAIvB,yCAA0C;AAAlC,gGAAA,GAAG,OAAA;AAAE,sGAAA,SAAS,OAAA;AACtB,2CAA4D;AAApD,wGAAA,aAAa,OAAA;AAAE,wGAAA,aAAa,OAAA"}
|
package/dist/logger.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export interface Logger {
|
|
2
|
-
info(s: unknown, ...params: unknown[]): void;
|
|
3
|
-
error(s: unknown, ...params: unknown[]): void;
|
|
4
|
-
warn(s: unknown, ...params: unknown[]): void;
|
|
5
|
-
debug(s: unknown, ...params: unknown[]): void;
|
|
6
|
-
}
|
|
7
|
-
export declare let log: Logger;
|
|
8
|
-
export declare function setLogger(l: Logger): void;
|
package/dist/logger.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setLogger = exports.log = void 0;
|
|
4
|
-
exports.log = console;
|
|
5
|
-
function setLogger(l) {
|
|
6
|
-
exports.log = l;
|
|
7
|
-
}
|
|
8
|
-
exports.setLogger = setLogger;
|
|
9
|
-
//# sourceMappingURL=logger.js.map
|
package/dist/logger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AAOW,QAAA,GAAG,GAAW,OAAO,CAAA;AAEhC,SAAgB,SAAS,CAAC,CAAS;IACjC,WAAG,GAAG,CAAC,CAAA;AACT,CAAC;AAFD,8BAEC"}
|
package/dist/rpc.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { ExtractPromiseResult } from "./utils/types.js";
|
|
2
|
-
export type RemoteFunction = (...args: any[]) => Promise<any>;
|
|
3
|
-
export type Services<SubType> = {
|
|
4
|
-
[K in keyof SubType]: Services<SubType[K]> | RemoteFunction;
|
|
5
|
-
};
|
|
6
|
-
export type Consumer<T extends RemoteFunction> = (data: ExtractPromiseResult<ReturnType<T>>) => void;
|
|
7
|
-
export declare class RpcError extends Error {
|
|
8
|
-
readonly code: number;
|
|
9
|
-
constructor(code: number, message?: string);
|
|
10
|
-
}
|
|
11
|
-
export declare enum RpcErrors {
|
|
12
|
-
NotFound = 404,
|
|
13
|
-
Timeout = 504
|
|
14
|
-
}
|
|
15
|
-
export declare class CallOptions {
|
|
16
|
-
constructor(options: {
|
|
17
|
-
timeout: number;
|
|
18
|
-
});
|
|
19
|
-
readonly timeout: number;
|
|
20
|
-
readonly kind: string;
|
|
21
|
-
static KIND: string;
|
|
22
|
-
}
|
|
23
|
-
export declare const CLIENT_ID_HEADER = "x-rpc-client-id";
|
|
24
|
-
export type RpcConnectionContext = {
|
|
25
|
-
clientId: string;
|
|
26
|
-
};
|
|
27
|
-
export type RpcContext = RpcConnectionContext & {
|
|
28
|
-
itemName: string;
|
|
29
|
-
invocationType: InvocationType;
|
|
30
|
-
};
|
|
31
|
-
export declare enum InvocationType {
|
|
32
|
-
Call = "Call",
|
|
33
|
-
Subscribe = "Subscribe",
|
|
34
|
-
Unsubscribe = "Unsubscribe",// client only
|
|
35
|
-
Update = "Update",// client only
|
|
36
|
-
Trigger = "Trigger"
|
|
37
|
-
}
|
package/dist/rpc.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InvocationType = exports.CLIENT_ID_HEADER = exports.CallOptions = exports.RpcErrors = exports.RpcError = void 0;
|
|
4
|
-
class RpcError extends Error {
|
|
5
|
-
constructor(code, message) {
|
|
6
|
-
super(message);
|
|
7
|
-
this.code = code;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.RpcError = RpcError;
|
|
11
|
-
var RpcErrors;
|
|
12
|
-
(function (RpcErrors) {
|
|
13
|
-
RpcErrors[RpcErrors["NotFound"] = 404] = "NotFound";
|
|
14
|
-
RpcErrors[RpcErrors["Timeout"] = 504] = "Timeout";
|
|
15
|
-
})(RpcErrors || (exports.RpcErrors = RpcErrors = {}));
|
|
16
|
-
class CallOptions {
|
|
17
|
-
constructor(options) {
|
|
18
|
-
this.kind = CallOptions.KIND; // to distinguish from other parameters in remote call
|
|
19
|
-
this.timeout = options.timeout;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.CallOptions = CallOptions;
|
|
23
|
-
CallOptions.KIND = "CallOptions";
|
|
24
|
-
exports.CLIENT_ID_HEADER = "x-rpc-client-id";
|
|
25
|
-
var InvocationType;
|
|
26
|
-
(function (InvocationType) {
|
|
27
|
-
InvocationType["Call"] = "Call";
|
|
28
|
-
InvocationType["Subscribe"] = "Subscribe";
|
|
29
|
-
InvocationType["Unsubscribe"] = "Unsubscribe";
|
|
30
|
-
InvocationType["Update"] = "Update";
|
|
31
|
-
InvocationType["Trigger"] = "Trigger";
|
|
32
|
-
})(InvocationType || (exports.InvocationType = InvocationType = {}));
|
|
33
|
-
//# sourceMappingURL=rpc.js.map
|
package/dist/rpc.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":";;;AASA,MAAa,QAAS,SAAQ,KAAK;IACjC,YACkB,IAAY,EAC5B,OAAgB;QAEhB,KAAK,CAAC,OAAO,CAAC,CAAA;QAHE,SAAI,GAAJ,IAAI,CAAQ;IAI9B,CAAC;CACF;AAPD,4BAOC;AAED,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,mDAAc,CAAA;IACd,iDAAa,CAAA;AACf,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAED,MAAa,WAAW;IACtB,YAAY,OAA0B;QAKtB,SAAI,GAAG,WAAW,CAAC,IAAI,CAAA,CAAC,sDAAsD;QAJ5F,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAChC,CAAC;;AAHH,kCASC;AADe,gBAAI,GAAG,aAAa,AAAhB,CAAgB;AAGvB,QAAA,gBAAgB,GAAG,iBAAiB,CAAA;AAWjD,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,yCAAuB,CAAA;IACvB,6CAA2B,CAAA;IAC3B,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;AACrB,CAAC,EANW,cAAc,8BAAd,cAAc,QAMzB"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import http from "http";
|
|
3
|
-
export declare class ConnectionsServer {
|
|
4
|
-
constructor(server: http.Server, options: ConnectionsServerOptions, connectionClosed: (clientId: string) => void, closeSocketsWithDifferentPath: boolean);
|
|
5
|
-
publish(clientId: string, itemName: string, parameters: unknown[], data: unknown): void;
|
|
6
|
-
private wss;
|
|
7
|
-
private clientSockets;
|
|
8
|
-
close(): Promise<void>;
|
|
9
|
-
}
|
|
10
|
-
export type ConnectionsServerOptions = {
|
|
11
|
-
pingInterval: number;
|
|
12
|
-
path: string;
|
|
13
|
-
};
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConnectionsServer = void 0;
|
|
4
|
-
const json_js_1 = require("../utils/json.js");
|
|
5
|
-
const ws_1 = require("ws");
|
|
6
|
-
const logger_js_1 = require("../logger.js");
|
|
7
|
-
class ConnectionsServer {
|
|
8
|
-
constructor(server, options, connectionClosed, closeSocketsWithDifferentPath) {
|
|
9
|
-
this.clientSockets = new Map();
|
|
10
|
-
this.wss = new ws_1.WebSocketServer({ noServer: true });
|
|
11
|
-
server.on("upgrade", (request, socket, head) => {
|
|
12
|
-
if (request.url?.startsWith(options.path)) {
|
|
13
|
-
this.wss.handleUpgrade(request, socket, head, (ws) => {
|
|
14
|
-
this.wss.emit("connection", ws, request);
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
if (closeSocketsWithDifferentPath) {
|
|
19
|
-
socket.destroy();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
this.wss.on("connection", (ws) => {
|
|
24
|
-
ws.alive = true;
|
|
25
|
-
const clientId = ws.protocol || "anon";
|
|
26
|
-
this.clientSockets.set(clientId, ws);
|
|
27
|
-
ws.on("error", (e) => {
|
|
28
|
-
logger_js_1.log.error("Error in WS", e);
|
|
29
|
-
});
|
|
30
|
-
ws.on("close", () => {
|
|
31
|
-
this.clientSockets.delete(clientId);
|
|
32
|
-
connectionClosed(clientId);
|
|
33
|
-
});
|
|
34
|
-
ws.on("pong", () => {
|
|
35
|
-
ws.alive = true;
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
const pingTimer = setInterval(() => {
|
|
39
|
-
this.clientSockets.forEach((ws) => {
|
|
40
|
-
if (!ws.alive) {
|
|
41
|
-
// missing 2nd keep-alive period
|
|
42
|
-
ws.terminate();
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
ws.alive = false;
|
|
46
|
-
ws.ping();
|
|
47
|
-
});
|
|
48
|
-
}, options.pingInterval);
|
|
49
|
-
this.wss.on("close", () => {
|
|
50
|
-
clearInterval(pingTimer);
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
publish(clientId, itemName, parameters, data) {
|
|
54
|
-
const message = [itemName, data, ...parameters];
|
|
55
|
-
const ws = this.clientSockets.get(clientId);
|
|
56
|
-
if (ws) {
|
|
57
|
-
ws.send((0, json_js_1.safeStringify)(message));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
async close() {
|
|
61
|
-
return new Promise((resolve, reject) => {
|
|
62
|
-
this.wss.close((err) => {
|
|
63
|
-
if (err)
|
|
64
|
-
reject(err);
|
|
65
|
-
else
|
|
66
|
-
resolve();
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
exports.ConnectionsServer = ConnectionsServer;
|
|
72
|
-
//# sourceMappingURL=ConnectionsServer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionsServer.js","sourceRoot":"","sources":["../../src/server/ConnectionsServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ThrottleSettings } from "./local.js";
|
|
2
|
-
export declare class LocalSubscriptions {
|
|
3
|
-
subscribe(clientId: string, itemName: string, parameters: unknown[], update: (suppliedData?: unknown) => void): void;
|
|
4
|
-
unsubscribe(clientId: string, itemName: string, parameters: unknown[]): void;
|
|
5
|
-
unsubscribeAll(clientId: string): void;
|
|
6
|
-
trigger(itemName: string, triggerFilter?: Record<string, unknown>, suppliedData?: unknown): void;
|
|
7
|
-
throttled(itemName: string, f: (d: unknown) => void): (d: unknown) => void;
|
|
8
|
-
throttleItem(itemName: string, settings: ThrottleSettings<unknown>): void;
|
|
9
|
-
private itemThrottleSettings;
|
|
10
|
-
private byItem;
|
|
11
|
-
_allSubscriptions(): [itemName: string, parameters: unknown[], consumer: unknown][];
|
|
12
|
-
}
|