@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.
Files changed (79) hide show
  1. package/README.md +214 -20
  2. package/example/client.ts +1 -1
  3. package/example/server.ts +2 -2
  4. package/package-lock.json +1291 -0
  5. package/package.json +1 -1
  6. package/src/client/RpcClientImpl.ts +11 -3
  7. package/src/client/WebSocketConnection.ts +7 -3
  8. package/src/client/index.ts +2 -2
  9. package/src/utils/middleware.ts +7 -2
  10. package/tests/middleware.ts +104 -7
  11. package/tests/testUtils.ts +2 -2
  12. package/dist/client/HttpClient.d.ts +0 -11
  13. package/dist/client/HttpClient.js +0 -84
  14. package/dist/client/HttpClient.js.map +0 -1
  15. package/dist/client/RemoteSubscriptions.d.ts +0 -18
  16. package/dist/client/RemoteSubscriptions.js +0 -120
  17. package/dist/client/RemoteSubscriptions.js.map +0 -1
  18. package/dist/client/RpcClientImpl.d.ts +0 -22
  19. package/dist/client/RpcClientImpl.js +0 -121
  20. package/dist/client/RpcClientImpl.js.map +0 -1
  21. package/dist/client/WebSocketConnection.d.ts +0 -36
  22. package/dist/client/WebSocketConnection.js +0 -161
  23. package/dist/client/WebSocketConnection.js.map +0 -1
  24. package/dist/client/index.d.ts +0 -29
  25. package/dist/client/index.js +0 -39
  26. package/dist/client/index.js.map +0 -1
  27. package/dist/client/remote.d.ts +0 -14
  28. package/dist/client/remote.js +0 -66
  29. package/dist/client/remote.js.map +0 -1
  30. package/dist/index.d.ts +0 -13
  31. package/dist/index.js.map +0 -1
  32. package/dist/logger.d.ts +0 -8
  33. package/dist/logger.js +0 -9
  34. package/dist/logger.js.map +0 -1
  35. package/dist/rpc.d.ts +0 -37
  36. package/dist/rpc.js +0 -33
  37. package/dist/rpc.js.map +0 -1
  38. package/dist/server/ConnectionsServer.d.ts +0 -13
  39. package/dist/server/ConnectionsServer.js +0 -72
  40. package/dist/server/ConnectionsServer.js.map +0 -1
  41. package/dist/server/LocalSubscriptions.d.ts +0 -12
  42. package/dist/server/LocalSubscriptions.js +0 -113
  43. package/dist/server/LocalSubscriptions.js.map +0 -1
  44. package/dist/server/RpcServerImpl.d.ts +0 -24
  45. package/dist/server/RpcServerImpl.js +0 -200
  46. package/dist/server/RpcServerImpl.js.map +0 -1
  47. package/dist/server/http.d.ts +0 -9
  48. package/dist/server/http.js +0 -89
  49. package/dist/server/http.js.map +0 -1
  50. package/dist/server/index.d.ts +0 -32
  51. package/dist/server/index.js +0 -33
  52. package/dist/server/index.js.map +0 -1
  53. package/dist/server/local.d.ts +0 -15
  54. package/dist/server/local.js +0 -46
  55. package/dist/server/local.js.map +0 -1
  56. package/dist/utils/cookies.d.ts +0 -7
  57. package/dist/utils/cookies.js +0 -31
  58. package/dist/utils/cookies.js.map +0 -1
  59. package/dist/utils/env.d.ts +0 -6
  60. package/dist/utils/env.js +0 -22
  61. package/dist/utils/env.js.map +0 -1
  62. package/dist/utils/json.d.ts +0 -2
  63. package/dist/utils/json.js +0 -34
  64. package/dist/utils/json.js.map +0 -1
  65. package/dist/utils/middleware.d.ts +0 -2
  66. package/dist/utils/middleware.js +0 -31
  67. package/dist/utils/middleware.js.map +0 -1
  68. package/dist/utils/promises.d.ts +0 -5
  69. package/dist/utils/promises.js +0 -29
  70. package/dist/utils/promises.js.map +0 -1
  71. package/dist/utils/server.d.ts +0 -5
  72. package/dist/utils/server.js +0 -48
  73. package/dist/utils/server.js.map +0 -1
  74. package/dist/utils/throttle.d.ts +0 -4
  75. package/dist/utils/throttle.js +0 -40
  76. package/dist/utils/throttle.js.map +0 -1
  77. package/dist/utils/types.d.ts +0 -1
  78. package/dist/utils/types.js +0 -3
  79. 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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"}
@@ -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
- }>;
@@ -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
@@ -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"}
@@ -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
- };
@@ -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
@@ -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
- }