@push-rpc/next 2.0.15 → 2.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/RemoteSubscriptions.d.ts +3 -0
- package/dist/client/RemoteSubscriptions.js +7 -2
- package/dist/client/RemoteSubscriptions.js.map +1 -1
- package/dist/client/RpcClientImpl.js +1 -1
- package/dist/client/RpcClientImpl.js.map +1 -1
- package/dist/client/index.d.ts +5 -0
- package/dist/client/index.js +5 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/remote.js +1 -0
- package/dist/client/remote.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/server/http.js +1 -1
- package/dist/server/http.js.map +1 -1
- package/package.json +1 -1
- package/src/client/RemoteSubscriptions.ts +11 -4
- package/src/client/RpcClientImpl.ts +14 -14
- package/src/client/index.ts +12 -3
- package/src/client/remote.ts +13 -12
- package/src/index.ts +1 -1
- package/src/server/http.ts +1 -1
- package/tests/subscriptions.ts +80 -15
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { ClientCache } from "./index";
|
|
1
2
|
export declare class RemoteSubscriptions {
|
|
3
|
+
private cache;
|
|
4
|
+
constructor(cache: ClientCache | null);
|
|
2
5
|
unsubscribe(itemName: string, parameters: unknown[], consumer: (d: unknown) => void): boolean;
|
|
3
6
|
addSubscription(itemName: string, parameters: unknown[], consumer: (d: unknown) => void): void;
|
|
4
7
|
pause(itemName: string, parameters: unknown[]): void;
|
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.RemoteSubscriptions = void 0;
|
|
4
4
|
const json_js_1 = require("../utils/json.js");
|
|
5
5
|
class RemoteSubscriptions {
|
|
6
|
-
constructor() {
|
|
6
|
+
constructor(cache) {
|
|
7
|
+
this.cache = cache;
|
|
7
8
|
this.byItem = new Map();
|
|
8
9
|
}
|
|
9
10
|
unsubscribe(itemName, parameters, consumer) {
|
|
@@ -40,6 +41,8 @@ class RemoteSubscriptions {
|
|
|
40
41
|
if (!filterSubscriptions)
|
|
41
42
|
return;
|
|
42
43
|
filterSubscriptions.queue.forEach((data) => {
|
|
44
|
+
if (this.cache)
|
|
45
|
+
this.cache.put(itemName, parameters, data);
|
|
43
46
|
filterSubscriptions.cached = data;
|
|
44
47
|
filterSubscriptions.consumers.forEach((consumer) => {
|
|
45
48
|
consumer(data);
|
|
@@ -76,7 +79,7 @@ class RemoteSubscriptions {
|
|
|
76
79
|
getCached(itemName, parameters) {
|
|
77
80
|
const filterSubscriptions = this.getFilterSubscriptions(itemName, parameters);
|
|
78
81
|
if (!filterSubscriptions)
|
|
79
|
-
return;
|
|
82
|
+
return this.cache?.get(itemName, parameters);
|
|
80
83
|
return filterSubscriptions.cached;
|
|
81
84
|
}
|
|
82
85
|
consume(itemName, parameters, data) {
|
|
@@ -87,6 +90,8 @@ class RemoteSubscriptions {
|
|
|
87
90
|
filterSubscriptions.queue.push(data);
|
|
88
91
|
}
|
|
89
92
|
else {
|
|
93
|
+
if (this.cache)
|
|
94
|
+
this.cache.put(itemName, parameters, data);
|
|
90
95
|
filterSubscriptions.cached = data;
|
|
91
96
|
filterSubscriptions.consumers.forEach((consumer) => {
|
|
92
97
|
consumer(data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteSubscriptions.js","sourceRoot":"","sources":["../../src/client/RemoteSubscriptions.ts"],"names":[],"mappings":";;;AAAA,8CAA8C;
|
|
1
|
+
{"version":3,"file":"RemoteSubscriptions.js","sourceRoot":"","sources":["../../src/client/RemoteSubscriptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,7 +59,7 @@ class RpcClientImpl {
|
|
|
59
59
|
}
|
|
60
60
|
};
|
|
61
61
|
this.httpClient = new HttpClient_js_1.HttpClient(url, this.clientId, options.getHeaders);
|
|
62
|
-
this.remoteSubscriptions = new RemoteSubscriptions_js_1.RemoteSubscriptions();
|
|
62
|
+
this.remoteSubscriptions = new RemoteSubscriptions_js_1.RemoteSubscriptions(options.cache);
|
|
63
63
|
this.connection = new WebSocketConnection_js_1.WebSocketConnection(options.getSubscriptionsUrl(url), this.clientId, {
|
|
64
64
|
subscriptions: options.subscriptions,
|
|
65
65
|
errorDelayMaxDuration: options.errorDelayMaxDuration,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcClientImpl.js","sourceRoot":"","sources":["../../src/client/RpcClientImpl.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RpcClientImpl.js","sourceRoot":"","sources":["../../src/client/RpcClientImpl.ts"],"names":[],"mappings":";;;AAAA,sCAA2E;AAC3E,mDAA0C;AAC1C,qEAA4D;AAC5D,qEAA4D;AAC5D,mCAA6B;AAC7B,2CAAmE;AAEnE,0DAAkE;AAElE,MAAa,aAAa;IACxB,YACE,GAAW,EACM,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;QA0ClC,aAAQ,GAAG,IAAA,eAAM,GAAE,CAAA;QA8C3B,SAAI,GAAG,CACb,QAAgB,EAChB,UAAqB,EACrB,WAAyB,EACP,EAAE;YACpB,OAAO,IAAI,CAAC,MAAM,CAChB,QAAQ,EACR,uBAAc,CAAC,IAAI,EACnB,CAAC,GAAG,UAAU,EAAE,EAAE,CAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,QAAQ,EACR,UAAU,EACV,WAAW,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CACjD,EACH,UAAU,CACX,CAAA;QACH,CAAC,CAAA;QAEO,cAAS,GAAG,KAAK,EACvB,QAAgB,EAChB,UAAqB,EACrB,QAA8B,EAC9B,WAAyB,EACV,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;YAEvE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,QAAQ,CAAC,MAAM,CAAC,CAAA;YAClB,CAAC;YAED,oEAAoE;YACpE,mFAAmF;YACnF,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAA;YAE/B,IAAI,CAAC;gBACH,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;gBACxE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;gBAEpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAC5B,QAAQ,EACR,uBAAc,CAAC,SAAS,EACxB,CAAC,GAAG,UAAU,EAAE,EAAE,CAChB,IAAI,CAAC,UAAU,CAAC,SAAS,CACvB,QAAQ,EACR,UAAU,EACV,WAAW,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CACjD,EACH,UAAU,CACX,CAAA;gBAED,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;gBACtD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;gBAC5D,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;YAC3D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;gBACtD,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;gBACzD,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;gBACtD,MAAM,CAAC,CAAA;YACT,CAAC;QACH,CAAC,CAAA;QAEO,gBAAW,GAAG,KAAK,EACzB,QAAgB,EAChB,UAAqB,EACrB,QAA8B,EAC9B,WAAyB,EACzB,EAAE;YACF,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;YAEhG,IAAI,mBAAmB,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,MAAM,CACf,QAAQ,EACR,uBAAc,CAAC,WAAW,EAC1B,CAAC,GAAG,UAAU,EAAE,EAAE,CAChB,IAAI,CAAC,UAAU,CAAC,WAAW,CACzB,QAAQ,EACR,UAAU,EACV,WAAW,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CACjD,EACH,UAAU,CACX,CAAA;YACH,CAAC;QACH,CAAC,CAAA;QAEO,gBAAW,GAAG,GAAG,EAAE;YACzB,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAC3F,IAAI,CAAC,UAAU;qBACZ,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;qBACrD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBACb,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;gBAC1D,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBACX,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;wBACjC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;oBAClE,CAAC;gBACH,CAAC,CAAC,CAAA;YACN,CAAC;QACH,CAAC,CAAA;QAvLC,IAAI,CAAC,UAAU,GAAG,IAAI,0BAAU,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;QACxE,IAAI,CAAC,mBAAmB,GAAG,IAAI,4CAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAEjE,IAAI,CAAC,UAAU,GAAG,IAAI,4CAAmB,CACvC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAChC,IAAI,CAAC,QAAQ,EACb;YACE,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;YACpD,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,EACD,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;YAC7B,MAAM,GAAG,GAAe;gBACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ;gBACR,cAAc,EAAE,uBAAc,CAAC,MAAM;aACtC,CAAA;YAED,MAAM,IAAI,GAAG,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,cAAc,GAAG,UAAU,EAAE,EAAE,CAClE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAA;YAEtE,OAAO,IAAA,+BAAe,EACpB,GAAG,EACH,IAAI,CAAC,OAAO,CAAC,uBAAuB,EACpC,IAAW,EACX,IAAI,EACJ,UAAU,CACX,CAAA;QACH,CAAC,EACD,GAAG,EAAE;YACH,IAAI,CAAC,WAAW,EAAE,CAAA;YAClB,OAAO,CAAC,WAAW,EAAE,CAAA;QACvB,CAAC,EACD,GAAG,EAAE;YACH,OAAO,CAAC,cAAc,EAAE,CAAA;QAC1B,CAAC,CACF,CAAA;IACH,CAAC;IAOD,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAA;IACtC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;IAChC,CAAC;IAED,iBAAiB;QACf,MAAM,MAAM,GAER,EAAE,CAAA;QAEN,KAAK,MAAM,CACT,QAAQ,EACR,UAAU,EACV,SAAS,EACV,IAAI,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAA;IACrC,CAAC;IAED,YAAY;QACV,OAAO,IAAA,wBAAY,EAAI;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAA;IACjC,CAAC;IAqGO,MAAM,CACZ,QAAgB,EAChB,cAA8B,EAC9B,IAAgD,EAChD,UAAqB;QAErB,MAAM,GAAG,GAAe;YACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ;YACR,cAAc,EAAE,cAAc;SAC/B,CAAA;QAED,OAAO,IAAA,+BAAe,EAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,CAAA;IAC3E,CAAC;CACF;AA5MD,sCA4MC"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -9,6 +9,10 @@ export type RpcClient = {
|
|
|
9
9
|
_allSubscriptions(): Array<any[]>;
|
|
10
10
|
_webSocket(): WebSocket | null;
|
|
11
11
|
};
|
|
12
|
+
export type ClientCache = {
|
|
13
|
+
put(itemName: string, parameters: unknown[], value: unknown): void;
|
|
14
|
+
get(itemName: string, parameters: unknown[]): unknown | undefined;
|
|
15
|
+
};
|
|
12
16
|
export type ConsumeServicesOptions = {
|
|
13
17
|
callTimeout: number;
|
|
14
18
|
reconnectDelay: number;
|
|
@@ -22,6 +26,7 @@ export type ConsumeServicesOptions = {
|
|
|
22
26
|
onDisconnected: () => void;
|
|
23
27
|
getHeaders: () => Promise<Record<string, string>>;
|
|
24
28
|
getSubscriptionsUrl(url: string): string;
|
|
29
|
+
cache: ClientCache | null;
|
|
25
30
|
};
|
|
26
31
|
export declare function consumeServices<S extends Services<S>>(url: string, overrideOptions?: Partial<ConsumeServicesOptions>): Promise<{
|
|
27
32
|
client: RpcClient;
|
package/dist/client/index.js
CHANGED
|
@@ -29,11 +29,14 @@ const defaultOptions = {
|
|
|
29
29
|
middleware: [],
|
|
30
30
|
notificationsMiddleware: [],
|
|
31
31
|
connectOnCreate: false,
|
|
32
|
-
onConnected: () => {
|
|
33
|
-
|
|
32
|
+
onConnected: () => {
|
|
33
|
+
},
|
|
34
|
+
onDisconnected: () => {
|
|
35
|
+
},
|
|
34
36
|
getHeaders: async () => ({}),
|
|
35
37
|
getSubscriptionsUrl(url) {
|
|
36
38
|
return url.replace(/^https(.*)/, "wss$1").replace(/^http(.*)/, "ws$1");
|
|
37
39
|
},
|
|
40
|
+
cache: null,
|
|
38
41
|
};
|
|
39
42
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":";;;AAEA,yDAAgD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":";;;AAEA,yDAAgD;AAoCzC,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,uBAAuB,EAAE,EAAE;IAC3B,eAAe,EAAE,KAAK;IACtB,WAAW,EAAE,GAAG,EAAE;IAClB,CAAC;IACD,cAAc,EAAE,GAAG,EAAE;IACrB,CAAC;IACD,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;IACD,KAAK,EAAE,IAAI;CACZ,CAAA"}
|
package/dist/client/remote.js
CHANGED
|
@@ -18,6 +18,7 @@ function createRemote(hooks, name = "") {
|
|
|
18
18
|
const { params, callOptions } = extractCallOptions(paramsWithCallOptions);
|
|
19
19
|
return hooks.unsubscribe(name, params, consumer, callOptions);
|
|
20
20
|
},
|
|
21
|
+
itemName: name,
|
|
21
22
|
};
|
|
22
23
|
Object.assign(remoteItem, subscription);
|
|
23
24
|
// then add proxy creating subitems
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/client/remote.ts"],"names":[],"mappings":";;;AAAA,sCAAyE;AAEzE,SAAgB,YAAY,CAC1B,KAAkB,EAClB,IAAI,GAAG,EAAE;IAET,6BAA6B;IAC7B,MAAM,UAAU,GAAG,CAAC,GAAG,qBAAgC,EAAE,EAAE;QACzD,MAAM,EAAC,MAAM,EAAE,WAAW,EAAC,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAA;QAEvE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;IAC9C,CAAC,CAAA;IAED,2BAA2B;IAC3B,MAAM,YAAY,GAAG;QACnB,SAAS,EAAE,CAAC,QAA8B,EAAE,GAAG,qBAAgC,EAAE,EAAE;YACjF,MAAM,EAAC,MAAM,EAAE,WAAW,EAAC,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAA;YACvE,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QAC7D,CAAC;QACD,WAAW,EAAE,CAAC,QAA8B,EAAE,GAAG,qBAAgC,EAAE,EAAE;YACnF,MAAM,EAAC,MAAM,EAAE,WAAW,EAAC,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAA;YACvE,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QAC/D,CAAC;
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/client/remote.ts"],"names":[],"mappings":";;;AAAA,sCAAyE;AAEzE,SAAgB,YAAY,CAC1B,KAAkB,EAClB,IAAI,GAAG,EAAE;IAET,6BAA6B;IAC7B,MAAM,UAAU,GAAG,CAAC,GAAG,qBAAgC,EAAE,EAAE;QACzD,MAAM,EAAC,MAAM,EAAE,WAAW,EAAC,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAA;QAEvE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;IAC9C,CAAC,CAAA;IAED,2BAA2B;IAC3B,MAAM,YAAY,GAAG;QACnB,SAAS,EAAE,CAAC,QAA8B,EAAE,GAAG,qBAAgC,EAAE,EAAE;YACjF,MAAM,EAAC,MAAM,EAAE,WAAW,EAAC,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAA;YACvE,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QAC7D,CAAC;QACD,WAAW,EAAE,CAAC,QAA8B,EAAE,GAAG,qBAAgC,EAAE,EAAE;YACnF,MAAM,EAAC,MAAM,EAAE,WAAW,EAAC,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAA;YACvE,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QAC/D,CAAC;QACD,QAAQ,EAAE,IAAI;KACf,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IAEvC,mCAAmC;IAEnC,MAAM,WAAW,GAAQ,EAAE,CAAA;IAE3B,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE;QAC3B,GAAG,CAAC,MAAW,EAAE,QAAa;YAC5B,sBAAsB;YACtB,IAAI,OAAO,QAAQ,IAAI,QAAQ;gBAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAA;YAExD,0BAA0B;YAC1B,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACvE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAA;YAEzB,4BAA4B;YAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAA;YAEzE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3B,WAAW,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YACtF,CAAC;YAED,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAA;QAC9B,CAAC;QAED,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK;YACzB,WAAW,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAA;YAC7B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,sBAAsB;QACtB,OAAO;YACL,OAAO,CAAC,GAAG,kBAAkB,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;QAC7D,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AA3DD,oCA2DC;AAED,SAAS,kBAAkB,CAAC,MAAiB;IAC3C,IACE,MAAM,CAAC,MAAM,GAAG,CAAC;QACjB,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ;QAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI;QAChC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAS,CAAC,IAAI,IAAI,oBAAW,CAAC,IAAI,EAC3D,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAiB,CAAA;QAC3C,OAAO;YACL,MAAM;YACN,WAAW,EAAE,OAAO;SACrB,CAAA;IACH,CAAC;IAED,OAAO,EAAC,MAAM,EAAC,CAAA;AACjB,CAAC;AAwCD,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export type { RpcServer, PublishServicesOptions } from "./server/index.js";
|
|
|
6
6
|
export type { HttpServerHooks } from "./server/http.js";
|
|
7
7
|
export { publishServices } from "./server/index.js";
|
|
8
8
|
export type { ServicesWithTriggers } from "./server/local.js";
|
|
9
|
-
export type { RpcClient, ConsumeServicesOptions } from "./client/index.js";
|
|
9
|
+
export type { RpcClient, ConsumeServicesOptions, ClientCache } from "./client/index.js";
|
|
10
10
|
export { consumeServices } from "./client/index.js";
|
|
11
11
|
export type { ServicesWithSubscriptions } from "./client/remote.js";
|
|
12
12
|
export { log, setLogger } from "./logger.js";
|
package/dist/server/http.js
CHANGED
|
@@ -49,7 +49,7 @@ async function serveHttpRequest(req, res, path, hooks, createConnectionContext)
|
|
|
49
49
|
res.end();
|
|
50
50
|
}
|
|
51
51
|
catch (e) {
|
|
52
|
-
if (e.code) {
|
|
52
|
+
if (e.code && typeof e.code == "number" && e.code >= 100 && e.code < 600) {
|
|
53
53
|
res.statusCode = e.code;
|
|
54
54
|
if (e.message) {
|
|
55
55
|
res.setHeader("X-Error", e["message"]);
|
package/dist/server/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":";;;AAGA,8CAA6D;AAC7D,4CAAgC;AAChC,kDAAoD;AAE7C,KAAK,UAAU,gBAAgB,CACpC,GAAoB,EACpB,GAAmB,EACnB,IAAY,EACZ,KAAsB,EACtB,uBAAqG;IAErG,qDAAqD;IACrD,+BAA+B;IAE/B,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,uBAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAEnD,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAE/C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAA;YACjF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAA;YACpC,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,uBAAa,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAE9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;YACf,CAAC;YAED,IAAI,MAAe,CAAA;YACnB,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBACnB,KAAK,MAAM;oBACT,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;oBAC9C,MAAK;gBACP,KAAK,KAAK;oBACR,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;oBACnD,MAAK;gBACP,KAAK,OAAO;oBACV,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;oBACrD,MAAK;gBACP;oBACE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAA;oBACpB,GAAG,CAAC,GAAG,EAAE,CAAA;oBACT,OAAM;YACV,CAAC;YAED,IAAI,OAAO,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAA;gBACpB,GAAG,CAAC,GAAG,EAAE,CAAA;gBACT,OAAM;YACR,CAAC;YAED,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;gBAC3C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBACjB,GAAG,CAAC,GAAG,EAAE,CAAA;gBACT,OAAM;YACR,CAAC;YAED,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAA;YACjD,GAAG,CAAC,KAAK,CAAC,IAAA,uBAAa,EAAC,MAAM,CAAC,CAAC,CAAA;YAChC,GAAG,CAAC,GAAG,EAAE,CAAA;QACX,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import {safeStringify} from "../utils/json.js"
|
|
2
2
|
|
|
3
|
+
import {ClientCache} from "./index"
|
|
4
|
+
|
|
3
5
|
export class RemoteSubscriptions {
|
|
6
|
+
constructor(private cache: ClientCache | null) {
|
|
7
|
+
}
|
|
8
|
+
|
|
4
9
|
unsubscribe(itemName: string, parameters: unknown[], consumer: (d: unknown) => void): boolean {
|
|
5
10
|
const parametersKey = getParametersKey(parameters)
|
|
6
11
|
|
|
@@ -13,7 +18,7 @@ export class RemoteSubscriptions {
|
|
|
13
18
|
|
|
14
19
|
const parametersKey = getParametersKey(parameters)
|
|
15
20
|
const parameterSubscriptions: ParametersSubscription = itemSubscriptions.byParameters.get(
|
|
16
|
-
parametersKey
|
|
21
|
+
parametersKey,
|
|
17
22
|
) || {
|
|
18
23
|
parameters,
|
|
19
24
|
cached: null,
|
|
@@ -44,6 +49,7 @@ export class RemoteSubscriptions {
|
|
|
44
49
|
if (!filterSubscriptions) return
|
|
45
50
|
|
|
46
51
|
filterSubscriptions.queue.forEach((data) => {
|
|
52
|
+
if (this.cache) this.cache.put(itemName, parameters, data)
|
|
47
53
|
filterSubscriptions.cached = data
|
|
48
54
|
filterSubscriptions.consumers.forEach((consumer) => {
|
|
49
55
|
consumer(data)
|
|
@@ -63,7 +69,7 @@ export class RemoteSubscriptions {
|
|
|
63
69
|
private removeSubscription(
|
|
64
70
|
itemName: string,
|
|
65
71
|
parametersKey: string,
|
|
66
|
-
consumer: (d: unknown) => void
|
|
72
|
+
consumer: (d: unknown) => void,
|
|
67
73
|
): boolean {
|
|
68
74
|
const itemSubscriptions = this.byItem.get(itemName)
|
|
69
75
|
if (!itemSubscriptions) return false
|
|
@@ -91,7 +97,7 @@ export class RemoteSubscriptions {
|
|
|
91
97
|
|
|
92
98
|
getCached(itemName: string, parameters: unknown[]): unknown | undefined {
|
|
93
99
|
const filterSubscriptions = this.getFilterSubscriptions(itemName, parameters)
|
|
94
|
-
if (!filterSubscriptions) return
|
|
100
|
+
if (!filterSubscriptions) return this.cache?.get(itemName, parameters)
|
|
95
101
|
|
|
96
102
|
return filterSubscriptions.cached
|
|
97
103
|
}
|
|
@@ -103,6 +109,7 @@ export class RemoteSubscriptions {
|
|
|
103
109
|
if (filterSubscriptions.paused) {
|
|
104
110
|
filterSubscriptions.queue.push(data)
|
|
105
111
|
} else {
|
|
112
|
+
if (this.cache) this.cache.put(itemName, parameters, data)
|
|
106
113
|
filterSubscriptions.cached = data
|
|
107
114
|
filterSubscriptions.consumers.forEach((consumer) => {
|
|
108
115
|
consumer(data)
|
|
@@ -126,7 +133,7 @@ export class RemoteSubscriptions {
|
|
|
126
133
|
|
|
127
134
|
private getFilterSubscriptions(
|
|
128
135
|
itemName: string,
|
|
129
|
-
parameters: unknown[]
|
|
136
|
+
parameters: unknown[],
|
|
130
137
|
): ParametersSubscription | undefined {
|
|
131
138
|
const parametersKey = getParametersKey(parameters)
|
|
132
139
|
|
|
@@ -10,10 +10,10 @@ import {Middleware, withMiddlewares} from "../utils/middleware.js"
|
|
|
10
10
|
export class RpcClientImpl<S extends Services<S>> implements RpcClient {
|
|
11
11
|
constructor(
|
|
12
12
|
url: string,
|
|
13
|
-
private readonly options: ConsumeServicesOptions
|
|
13
|
+
private readonly options: ConsumeServicesOptions,
|
|
14
14
|
) {
|
|
15
15
|
this.httpClient = new HttpClient(url, this.clientId, options.getHeaders)
|
|
16
|
-
this.remoteSubscriptions = new RemoteSubscriptions()
|
|
16
|
+
this.remoteSubscriptions = new RemoteSubscriptions(options.cache)
|
|
17
17
|
|
|
18
18
|
this.connection = new WebSocketConnection(
|
|
19
19
|
options.getSubscriptionsUrl(url),
|
|
@@ -39,7 +39,7 @@ export class RpcClientImpl<S extends Services<S>> implements RpcClient {
|
|
|
39
39
|
this.options.notificationsMiddleware,
|
|
40
40
|
next as any,
|
|
41
41
|
data,
|
|
42
|
-
parameters
|
|
42
|
+
parameters,
|
|
43
43
|
)
|
|
44
44
|
},
|
|
45
45
|
() => {
|
|
@@ -48,7 +48,7 @@ export class RpcClientImpl<S extends Services<S>> implements RpcClient {
|
|
|
48
48
|
},
|
|
49
49
|
() => {
|
|
50
50
|
options.onDisconnected()
|
|
51
|
-
}
|
|
51
|
+
},
|
|
52
52
|
)
|
|
53
53
|
}
|
|
54
54
|
|
|
@@ -101,7 +101,7 @@ export class RpcClientImpl<S extends Services<S>> implements RpcClient {
|
|
|
101
101
|
private call = (
|
|
102
102
|
itemName: string,
|
|
103
103
|
parameters: unknown[],
|
|
104
|
-
callOptions?: CallOptions
|
|
104
|
+
callOptions?: CallOptions,
|
|
105
105
|
): Promise<unknown> => {
|
|
106
106
|
return this.invoke(
|
|
107
107
|
itemName,
|
|
@@ -110,9 +110,9 @@ export class RpcClientImpl<S extends Services<S>> implements RpcClient {
|
|
|
110
110
|
this.httpClient.call(
|
|
111
111
|
itemName,
|
|
112
112
|
parameters,
|
|
113
|
-
callOptions?.timeout ?? this.options.callTimeout
|
|
113
|
+
callOptions?.timeout ?? this.options.callTimeout,
|
|
114
114
|
),
|
|
115
|
-
parameters
|
|
115
|
+
parameters,
|
|
116
116
|
)
|
|
117
117
|
}
|
|
118
118
|
|
|
@@ -120,7 +120,7 @@ export class RpcClientImpl<S extends Services<S>> implements RpcClient {
|
|
|
120
120
|
itemName: string,
|
|
121
121
|
parameters: unknown[],
|
|
122
122
|
consumer: (d: unknown) => void,
|
|
123
|
-
callOptions?: CallOptions
|
|
123
|
+
callOptions?: CallOptions,
|
|
124
124
|
): Promise<void> => {
|
|
125
125
|
const cached = this.remoteSubscriptions.getCached(itemName, parameters)
|
|
126
126
|
|
|
@@ -143,9 +143,9 @@ export class RpcClientImpl<S extends Services<S>> implements RpcClient {
|
|
|
143
143
|
this.httpClient.subscribe(
|
|
144
144
|
itemName,
|
|
145
145
|
parameters,
|
|
146
|
-
callOptions?.timeout ?? this.options.callTimeout
|
|
146
|
+
callOptions?.timeout ?? this.options.callTimeout,
|
|
147
147
|
),
|
|
148
|
-
parameters
|
|
148
|
+
parameters,
|
|
149
149
|
)
|
|
150
150
|
|
|
151
151
|
this.remoteSubscriptions.unpause(itemName, parameters)
|
|
@@ -163,7 +163,7 @@ export class RpcClientImpl<S extends Services<S>> implements RpcClient {
|
|
|
163
163
|
itemName: string,
|
|
164
164
|
parameters: unknown[],
|
|
165
165
|
consumer: (d: unknown) => void,
|
|
166
|
-
callOptions?: CallOptions
|
|
166
|
+
callOptions?: CallOptions,
|
|
167
167
|
) => {
|
|
168
168
|
const noSubscriptionsLeft = this.remoteSubscriptions.unsubscribe(itemName, parameters, consumer)
|
|
169
169
|
|
|
@@ -175,9 +175,9 @@ export class RpcClientImpl<S extends Services<S>> implements RpcClient {
|
|
|
175
175
|
this.httpClient.unsubscribe(
|
|
176
176
|
itemName,
|
|
177
177
|
parameters,
|
|
178
|
-
callOptions?.timeout ?? this.options.callTimeout
|
|
178
|
+
callOptions?.timeout ?? this.options.callTimeout,
|
|
179
179
|
),
|
|
180
|
-
parameters
|
|
180
|
+
parameters,
|
|
181
181
|
)
|
|
182
182
|
}
|
|
183
183
|
}
|
|
@@ -201,7 +201,7 @@ export class RpcClientImpl<S extends Services<S>> implements RpcClient {
|
|
|
201
201
|
itemName: string,
|
|
202
202
|
invocationType: InvocationType,
|
|
203
203
|
next: (...params: unknown[]) => Promise<unknown>,
|
|
204
|
-
parameters: unknown[]
|
|
204
|
+
parameters: unknown[],
|
|
205
205
|
) {
|
|
206
206
|
const ctx: RpcContext = {
|
|
207
207
|
clientId: this.clientId,
|
package/src/client/index.ts
CHANGED
|
@@ -15,6 +15,11 @@ export type RpcClient = {
|
|
|
15
15
|
_webSocket(): WebSocket | null
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
export type ClientCache = {
|
|
19
|
+
put(itemName: string, parameters: unknown[], value: unknown): void
|
|
20
|
+
get(itemName: string, parameters: unknown[]): unknown | undefined
|
|
21
|
+
}
|
|
22
|
+
|
|
18
23
|
export type ConsumeServicesOptions = {
|
|
19
24
|
callTimeout: number
|
|
20
25
|
reconnectDelay: number
|
|
@@ -28,11 +33,12 @@ export type ConsumeServicesOptions = {
|
|
|
28
33
|
onDisconnected: () => void
|
|
29
34
|
getHeaders: () => Promise<Record<string, string>>
|
|
30
35
|
getSubscriptionsUrl(url: string): string
|
|
36
|
+
cache: ClientCache | null
|
|
31
37
|
}
|
|
32
38
|
|
|
33
39
|
export async function consumeServices<S extends Services<S>>(
|
|
34
40
|
url: string,
|
|
35
|
-
overrideOptions: Partial<ConsumeServicesOptions> = {}
|
|
41
|
+
overrideOptions: Partial<ConsumeServicesOptions> = {},
|
|
36
42
|
): Promise<{
|
|
37
43
|
client: RpcClient
|
|
38
44
|
remote: ServicesWithSubscriptions<S>
|
|
@@ -67,11 +73,14 @@ const defaultOptions: ConsumeServicesOptions = {
|
|
|
67
73
|
middleware: [],
|
|
68
74
|
notificationsMiddleware: [],
|
|
69
75
|
connectOnCreate: false,
|
|
70
|
-
onConnected: () => {
|
|
71
|
-
|
|
76
|
+
onConnected: () => {
|
|
77
|
+
},
|
|
78
|
+
onDisconnected: () => {
|
|
79
|
+
},
|
|
72
80
|
getHeaders: async () => ({}),
|
|
73
81
|
|
|
74
82
|
getSubscriptionsUrl(url: string): string {
|
|
75
83
|
return url.replace(/^https(.*)/, "wss$1").replace(/^http(.*)/, "ws$1")
|
|
76
84
|
},
|
|
85
|
+
cache: null,
|
|
77
86
|
}
|
package/src/client/remote.ts
CHANGED
|
@@ -2,7 +2,7 @@ import {CallOptions, Consumer, RemoteFunction, Services} from "../rpc.js"
|
|
|
2
2
|
|
|
3
3
|
export function createRemote<S extends Services<S>>(
|
|
4
4
|
hooks: RemoteHooks,
|
|
5
|
-
name = ""
|
|
5
|
+
name = "",
|
|
6
6
|
): ServicesWithSubscriptions<S> {
|
|
7
7
|
// start with remote function
|
|
8
8
|
const remoteItem = (...paramsWithCallOptions: unknown[]) => {
|
|
@@ -21,6 +21,7 @@ export function createRemote<S extends Services<S>>(
|
|
|
21
21
|
const {params, callOptions} = extractCallOptions(paramsWithCallOptions)
|
|
22
22
|
return hooks.unsubscribe(name, params, consumer, callOptions)
|
|
23
23
|
},
|
|
24
|
+
itemName: name,
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
Object.assign(remoteItem, subscription)
|
|
@@ -83,13 +84,13 @@ export type RemoteHooks = {
|
|
|
83
84
|
itemName: string,
|
|
84
85
|
parameters: unknown[],
|
|
85
86
|
consumer: (d: unknown) => void,
|
|
86
|
-
callOptions?: CallOptions
|
|
87
|
+
callOptions?: CallOptions,
|
|
87
88
|
): Promise<void>
|
|
88
89
|
unsubscribe(
|
|
89
90
|
itemName: string,
|
|
90
91
|
parameters: unknown[],
|
|
91
92
|
consumer: (d: unknown) => void,
|
|
92
|
-
callOptions?: CallOptions
|
|
93
|
+
callOptions?: CallOptions,
|
|
93
94
|
): Promise<void>
|
|
94
95
|
}
|
|
95
96
|
|
|
@@ -101,15 +102,15 @@ export type AddParameters<
|
|
|
101
102
|
export type ServicesWithSubscriptions<T extends Services<T>> = {
|
|
102
103
|
[K in keyof T]: T[K] extends RemoteFunction
|
|
103
104
|
? AddParameters<T[K], [CallOptions?]> & {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
105
|
+
subscribe(
|
|
106
|
+
consumer: Consumer<T[K]>,
|
|
107
|
+
...parameters: [...Parameters<T[K]>, CallOptions?]
|
|
108
|
+
): Promise<void>
|
|
109
|
+
unsubscribe(
|
|
110
|
+
consumer: Consumer<T[K]>,
|
|
111
|
+
...parameters: [...Parameters<T[K]>, CallOptions?]
|
|
112
|
+
): Promise<void>
|
|
113
|
+
}
|
|
113
114
|
: T[K] extends object
|
|
114
115
|
? ServicesWithSubscriptions<T[K]>
|
|
115
116
|
: never
|
package/src/index.ts
CHANGED
|
@@ -10,7 +10,7 @@ export {publishServices} from "./server/index.js"
|
|
|
10
10
|
|
|
11
11
|
export type {ServicesWithTriggers} from "./server/local.js"
|
|
12
12
|
|
|
13
|
-
export type {RpcClient, ConsumeServicesOptions} from "./client/index.js"
|
|
13
|
+
export type {RpcClient, ConsumeServicesOptions, ClientCache} from "./client/index.js"
|
|
14
14
|
export {consumeServices} from "./client/index.js"
|
|
15
15
|
|
|
16
16
|
export type {ServicesWithSubscriptions} from "./client/remote.js"
|
package/src/server/http.ts
CHANGED
package/tests/subscriptions.ts
CHANGED
|
@@ -38,7 +38,7 @@ describe("Subscriptions", () => {
|
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
subscriptions: false,
|
|
41
|
-
}
|
|
41
|
+
},
|
|
42
42
|
)
|
|
43
43
|
|
|
44
44
|
const client = await createTestClient<typeof services>({
|
|
@@ -70,7 +70,8 @@ describe("Subscriptions", () => {
|
|
|
70
70
|
const client = await createTestClient<typeof services>()
|
|
71
71
|
|
|
72
72
|
try {
|
|
73
|
-
await client.item.subscribe(() => {
|
|
73
|
+
await client.item.subscribe(() => {
|
|
74
|
+
})
|
|
74
75
|
assert.fail("Error expected")
|
|
75
76
|
} catch (e: any) {
|
|
76
77
|
assert.equal(e.message, "AA")
|
|
@@ -89,7 +90,8 @@ describe("Subscriptions", () => {
|
|
|
89
90
|
const remote = await createTestClient<typeof services>()
|
|
90
91
|
|
|
91
92
|
remote.item
|
|
92
|
-
.subscribe(() => {
|
|
93
|
+
.subscribe(() => {
|
|
94
|
+
})
|
|
93
95
|
.catch((e: any) => {
|
|
94
96
|
// ignored
|
|
95
97
|
})
|
|
@@ -211,6 +213,60 @@ describe("Subscriptions", () => {
|
|
|
211
213
|
assert.deepEqual(item2, item)
|
|
212
214
|
})
|
|
213
215
|
|
|
216
|
+
// SWR
|
|
217
|
+
it("out-of-subscriptions cache", async () => {
|
|
218
|
+
const item = {r: "1"}
|
|
219
|
+
|
|
220
|
+
const server = {
|
|
221
|
+
test: {
|
|
222
|
+
item: async () => item,
|
|
223
|
+
},
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
await startTestServer(server)
|
|
227
|
+
|
|
228
|
+
const cache = new Map()
|
|
229
|
+
|
|
230
|
+
const client = await createTestClient<typeof server>({
|
|
231
|
+
cache: {
|
|
232
|
+
get(itemName: string, parameters: unknown[]): unknown {
|
|
233
|
+
return cache.get(`${itemName}-${JSON.stringify(parameters)}`)
|
|
234
|
+
},
|
|
235
|
+
|
|
236
|
+
put(itemName: string, parameters: unknown[], value: unknown) {
|
|
237
|
+
return cache.set(`${itemName}-${JSON.stringify(parameters)}`, value)
|
|
238
|
+
},
|
|
239
|
+
},
|
|
240
|
+
})
|
|
241
|
+
|
|
242
|
+
let item1
|
|
243
|
+
const consumer = (item: any) => {
|
|
244
|
+
item1 = item
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
await client.test.item.subscribe(consumer)
|
|
248
|
+
|
|
249
|
+
await adelay(50)
|
|
250
|
+
assert.deepEqual(item1, item)
|
|
251
|
+
|
|
252
|
+
await client.test.item.unsubscribe(consumer)
|
|
253
|
+
|
|
254
|
+
item.r = "2"
|
|
255
|
+
|
|
256
|
+
let item2
|
|
257
|
+
client.test.item.subscribe((item) => {
|
|
258
|
+
item2 = item
|
|
259
|
+
})
|
|
260
|
+
|
|
261
|
+
// cached version should be delivered
|
|
262
|
+
assert.deepEqual(item2, {r: "1"})
|
|
263
|
+
|
|
264
|
+
await adelay(50)
|
|
265
|
+
|
|
266
|
+
// and a new version after some time
|
|
267
|
+
assert.deepEqual(item2, item)
|
|
268
|
+
})
|
|
269
|
+
|
|
214
270
|
it("unsubscribe topics on disconnect", async () => {
|
|
215
271
|
const item = {r: "1"}
|
|
216
272
|
|
|
@@ -224,7 +280,8 @@ describe("Subscriptions", () => {
|
|
|
224
280
|
|
|
225
281
|
const remote = await createTestClient<typeof server>()
|
|
226
282
|
|
|
227
|
-
await remote.testUnsub.item.subscribe(() => {
|
|
283
|
+
await remote.testUnsub.item.subscribe(() => {
|
|
284
|
+
})
|
|
228
285
|
|
|
229
286
|
assert.equal(1, testServer?._allSubscriptions().length)
|
|
230
287
|
|
|
@@ -283,8 +340,10 @@ describe("Subscriptions", () => {
|
|
|
283
340
|
|
|
284
341
|
const remote = await createTestClient<typeof services>()
|
|
285
342
|
|
|
286
|
-
const sub1 = () => {
|
|
287
|
-
|
|
343
|
+
const sub1 = () => {
|
|
344
|
+
}
|
|
345
|
+
const sub2 = () => {
|
|
346
|
+
}
|
|
288
347
|
|
|
289
348
|
await remote.item.subscribe(sub1)
|
|
290
349
|
await adelay(20)
|
|
@@ -316,7 +375,8 @@ describe("Subscriptions", () => {
|
|
|
316
375
|
|
|
317
376
|
const remote = await createTestClient<typeof services>()
|
|
318
377
|
|
|
319
|
-
const sub = () => {
|
|
378
|
+
const sub = () => {
|
|
379
|
+
}
|
|
320
380
|
|
|
321
381
|
await remote.item.subscribe(sub)
|
|
322
382
|
await adelay(20)
|
|
@@ -342,8 +402,10 @@ describe("Subscriptions", () => {
|
|
|
342
402
|
|
|
343
403
|
const remote = await createTestClient<typeof services>()
|
|
344
404
|
|
|
345
|
-
const sub1 = () => {
|
|
346
|
-
|
|
405
|
+
const sub1 = () => {
|
|
406
|
+
}
|
|
407
|
+
const sub2 = () => {
|
|
408
|
+
}
|
|
347
409
|
|
|
348
410
|
await remote.item.subscribe(sub1)
|
|
349
411
|
await adelay(20)
|
|
@@ -377,7 +439,8 @@ describe("Subscriptions", () => {
|
|
|
377
439
|
delivered = r
|
|
378
440
|
}
|
|
379
441
|
|
|
380
|
-
const sub2 = () => {
|
|
442
|
+
const sub2 = () => {
|
|
443
|
+
}
|
|
381
444
|
|
|
382
445
|
await client.test.item.subscribe(sub1)
|
|
383
446
|
|
|
@@ -406,7 +469,8 @@ describe("Subscriptions", () => {
|
|
|
406
469
|
|
|
407
470
|
const client = await createTestClient<typeof services>()
|
|
408
471
|
|
|
409
|
-
const sub = () => {
|
|
472
|
+
const sub = () => {
|
|
473
|
+
}
|
|
410
474
|
client.item.subscribe(sub)
|
|
411
475
|
|
|
412
476
|
await adelay(10)
|
|
@@ -465,7 +529,8 @@ describe("Subscriptions", () => {
|
|
|
465
529
|
})
|
|
466
530
|
|
|
467
531
|
try {
|
|
468
|
-
await client.test.longOp.subscribe(() => {
|
|
532
|
+
await client.test.longOp.subscribe(() => {
|
|
533
|
+
}, new CallOptions({timeout: callTimeout}))
|
|
469
534
|
assert.fail()
|
|
470
535
|
} catch (e: any) {
|
|
471
536
|
assert.equal(e.code, RpcErrors.Timeout)
|
|
@@ -621,7 +686,7 @@ describe("Subscriptions", () => {
|
|
|
621
686
|
clientId: (Array.isArray(header) ? header[0] : header) || "anon",
|
|
622
687
|
}
|
|
623
688
|
},
|
|
624
|
-
}
|
|
689
|
+
},
|
|
625
690
|
)
|
|
626
691
|
|
|
627
692
|
const client = await createTestClient<typeof services>({
|
|
@@ -635,7 +700,7 @@ describe("Subscriptions", () => {
|
|
|
635
700
|
(val) => {
|
|
636
701
|
received1 = val
|
|
637
702
|
},
|
|
638
|
-
{key: 1}
|
|
703
|
+
{key: 1},
|
|
639
704
|
)
|
|
640
705
|
|
|
641
706
|
await adelay(40)
|
|
@@ -644,7 +709,7 @@ describe("Subscriptions", () => {
|
|
|
644
709
|
(val) => {
|
|
645
710
|
received2 = val
|
|
646
711
|
},
|
|
647
|
-
{key: 2}
|
|
712
|
+
{key: 2},
|
|
648
713
|
)
|
|
649
714
|
|
|
650
715
|
await adelay(1.5 * delay)
|