@pathscale/wss-adapter 2.0.10 → 2.0.13
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 +59 -2
- package/dist/errors.d.ts +32 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +50 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/service-connection.d.ts +47 -0
- package/dist/service-connection.d.ts.map +1 -0
- package/dist/service-connection.js +291 -0
- package/dist/service-connection.js.map +1 -0
- package/dist/types.d.ts +18 -19
- package/dist/types.d.ts.map +1 -1
- package/dist/wss-adapter.d.ts +1 -1
- package/dist/wss-adapter.d.ts.map +1 -1
- package/dist/wss-adapter.js +32 -321
- package/dist/wss-adapter.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@ WebSocket adapter for PathScale WSS services.
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
8
|
+
bun add @pathscale/wss-adapter
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
@@ -37,7 +37,11 @@ wssAdapter.configure({
|
|
|
37
37
|
});
|
|
38
38
|
|
|
39
39
|
// Connect
|
|
40
|
+
const stopStatus = wssAdapter.services.app.subscribeStatus((status) => {
|
|
41
|
+
console.log('Connection status:', status);
|
|
42
|
+
});
|
|
40
43
|
const result = await wssAdapter.services.app.connect(['token1', 'token2']);
|
|
44
|
+
console.log(wssAdapter.services.app.status); // connected
|
|
41
45
|
|
|
42
46
|
// Call methods
|
|
43
47
|
const profile = await wssAdapter.sessions.app.getUserProfile({ userId: '123' });
|
|
@@ -55,16 +59,55 @@ unsubscribe();
|
|
|
55
59
|
|
|
56
60
|
// Disconnect
|
|
57
61
|
wssAdapter.services.app.disconnect();
|
|
62
|
+
stopStatus();
|
|
58
63
|
```
|
|
59
64
|
|
|
65
|
+
Each configured service is a named `ServiceConnection` instance. It owns its socket,
|
|
66
|
+
sequence counter, pending calls, request and authentication timers, reconnect backoff,
|
|
67
|
+
and status. `configure`, `services[name].connect/disconnect/isOpen`,
|
|
68
|
+
`sessions[name][method]`, and `subscribeTo` remain the facade for using these instances.
|
|
69
|
+
Reconfiguration disconnects the previous instances and replaces the configured services.
|
|
70
|
+
|
|
71
|
+
When a socket closes (cleanly or unexpectedly), errors, or is deliberately disconnected,
|
|
72
|
+
only that service's pending calls reject. Other services continue normally. Deliberate
|
|
73
|
+
disconnects detach all socket handlers before closing and cancel scheduled reconnects.
|
|
74
|
+
Replacing a connection also rejects its outstanding calls. Sequence numbers increase
|
|
75
|
+
within an instance, including across reconnects; failed sends never reuse a number.
|
|
76
|
+
|
|
77
|
+
`service.status` is `down` initially, `reconnecting` while connecting or retrying, and
|
|
78
|
+
`connected` after the authentication reply. `service.subscribeStatus(callback)` immediately
|
|
79
|
+
reports the current status, then reports changes, and returns an unsubscribe function.
|
|
80
|
+
`isOpen()` reports the transport's open state; authentication may still be pending.
|
|
81
|
+
|
|
82
|
+
After transport or authentication failure, the service reconnects using the protocols and
|
|
83
|
+
remote from its latest `connect` call. Defaults are five consecutive retry attempts, starting
|
|
84
|
+
at 1 second and doubling up to 30 seconds. Successful authentication resets the retry count.
|
|
85
|
+
Exhausting retries sets status to `down`; deliberate disconnect also sets it to `down`.
|
|
86
|
+
Set `reconnect: false` to disable retries, or configure `initialDelay`, `maxDelay` (milliseconds),
|
|
87
|
+
and `maxAttempts` per service. `connect()` rejects if its initial connection fails; background
|
|
88
|
+
retries report progress through status. The configured timeout bounds authentication too.
|
|
89
|
+
|
|
90
|
+
Requests are never automatically replayed. A timeout or lost connection leaves the server-side
|
|
91
|
+
outcome unknown: the server may already have performed the action. Late replies cannot settle
|
|
92
|
+
an already rejected promise. Reconcile the outcome or use server-supported idempotency before
|
|
93
|
+
retrying an action that must not run twice.
|
|
94
|
+
|
|
95
|
+
Legacy configured stream callbacks run only for the service receiving the event. Facade stream
|
|
96
|
+
subscriptions remain an event bus across services (by method code or configured method name).
|
|
97
|
+
One service closing does not complete subscriptions that may still receive another service's
|
|
98
|
+
events; unsubscribe explicitly when finished.
|
|
99
|
+
|
|
60
100
|
## Configuration Types
|
|
61
101
|
|
|
62
102
|
```typescript
|
|
103
|
+
import type { WssServiceError } from '@pathscale/wss-adapter';
|
|
104
|
+
|
|
63
105
|
interface IConfiguration {
|
|
64
106
|
timeout: number;
|
|
65
107
|
services: Record<string, IServiceConfig>;
|
|
66
108
|
errors: IErrors;
|
|
67
109
|
onError?: (message: string) => void;
|
|
110
|
+
onServiceError?: (error: WssServiceError) => void;
|
|
68
111
|
}
|
|
69
112
|
|
|
70
113
|
interface IServiceConfig {
|
|
@@ -72,6 +115,12 @@ interface IServiceConfig {
|
|
|
72
115
|
methods: Record<string, IMethodInfo>;
|
|
73
116
|
subscriptions?: Record<string, (data: any) => void>;
|
|
74
117
|
onDisconnect?: (event: CloseEvent) => void;
|
|
118
|
+
timeout?: number; // Overrides the global timeout for this instance, in milliseconds
|
|
119
|
+
reconnect?: false | {
|
|
120
|
+
initialDelay?: number;
|
|
121
|
+
maxDelay?: number;
|
|
122
|
+
maxAttempts?: number;
|
|
123
|
+
};
|
|
75
124
|
}
|
|
76
125
|
|
|
77
126
|
interface IErrors {
|
|
@@ -80,6 +129,10 @@ interface IErrors {
|
|
|
80
129
|
}
|
|
81
130
|
```
|
|
82
131
|
|
|
132
|
+
`onError` remains the legacy string callback. For WSS service-error responses, the optional
|
|
133
|
+
`onServiceError` callback receives the exported `WssServiceError` with structured fields
|
|
134
|
+
such as `code`, `kind`, `params`, `serviceMessage`, and `cause`.
|
|
135
|
+
|
|
83
136
|
## Subscriptions
|
|
84
137
|
|
|
85
138
|
```typescript
|
|
@@ -95,4 +148,8 @@ services: {
|
|
|
95
148
|
}
|
|
96
149
|
```
|
|
97
150
|
|
|
98
|
-
|
|
151
|
+
## Trusted npm publishing
|
|
152
|
+
|
|
153
|
+
Publishing is performed manually by `.github/workflows/publish.yml` from an exact current `master` commit and a matching `vMAJOR.MINOR.PATCH` tag. Configure npm Trusted Publishing for `pathscale/wss-adapter`, workflow `publish.yml`, and GitHub environment `npm-publish`; restrict that environment to `master`. The workflow validates the commit, tag, package version, registry state, and package contents before publishing a digest-verified tarball with provenance. It does not use an npm token or publish on tag push.
|
|
154
|
+
|
|
155
|
+
See [the npm publishing release procedure](docs/npm-publishing.md) for publisher setup and release steps.
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface WssServiceErrorInit<TParams = unknown> {
|
|
2
|
+
code?: number | undefined;
|
|
3
|
+
kind?: string | undefined;
|
|
4
|
+
method?: string | number | undefined;
|
|
5
|
+
seq?: number | undefined;
|
|
6
|
+
params?: TParams | undefined;
|
|
7
|
+
serviceMessage?: string | undefined;
|
|
8
|
+
raw?: unknown;
|
|
9
|
+
cause?: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface ServiceErrorEnvelope {
|
|
12
|
+
type?: string;
|
|
13
|
+
code?: number;
|
|
14
|
+
method?: number | string;
|
|
15
|
+
seq?: number;
|
|
16
|
+
params?: unknown;
|
|
17
|
+
}
|
|
18
|
+
export declare class WssServiceError<TParams = unknown> extends Error {
|
|
19
|
+
readonly code: number | undefined;
|
|
20
|
+
readonly kind: string | undefined;
|
|
21
|
+
readonly method: string | number | undefined;
|
|
22
|
+
readonly seq: number | undefined;
|
|
23
|
+
readonly params: TParams | undefined;
|
|
24
|
+
readonly serviceMessage: string | undefined;
|
|
25
|
+
readonly raw: unknown;
|
|
26
|
+
constructor(message: string, init?: WssServiceErrorInit<TParams>);
|
|
27
|
+
}
|
|
28
|
+
export declare const buildServiceError: (response: ServiceErrorEnvelope, options?: {
|
|
29
|
+
methodName?: string | undefined;
|
|
30
|
+
catalogMessage?: string | undefined;
|
|
31
|
+
}) => WssServiceError;
|
|
32
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB,CAAC,OAAO,GAAG,OAAO;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAMD,qBAAa,eAAe,CAAC,OAAO,GAAG,OAAO,CAAE,SAAQ,KAAK;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAmB,CAAC,OAAO,CAAM;CAerE;AAYD,eAAO,MAAM,iBAAiB,GAC5B,UAAU,oBAAoB,EAC9B,UAAS;IACP,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,KACL,eA0BF,CAAC"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const SERVICE_ERROR_FALLBACK_MESSAGE = "Service request failed";
|
|
2
|
+
export class WssServiceError extends Error {
|
|
3
|
+
code;
|
|
4
|
+
kind;
|
|
5
|
+
method;
|
|
6
|
+
seq;
|
|
7
|
+
params;
|
|
8
|
+
serviceMessage;
|
|
9
|
+
raw;
|
|
10
|
+
constructor(message, init = {}) {
|
|
11
|
+
super(message, init.cause !== undefined ? { cause: init.cause } : undefined);
|
|
12
|
+
this.name = "WssServiceError";
|
|
13
|
+
this.code = init.code;
|
|
14
|
+
this.kind = init.kind;
|
|
15
|
+
this.method = init.method;
|
|
16
|
+
this.seq = init.seq;
|
|
17
|
+
this.params = init.params;
|
|
18
|
+
this.serviceMessage = init.serviceMessage;
|
|
19
|
+
this.raw = init.raw;
|
|
20
|
+
Object.setPrototypeOf(this, WssServiceError.prototype);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const firstString = (...values) => {
|
|
24
|
+
for (const value of values) {
|
|
25
|
+
if (typeof value === "string" && value.length > 0)
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
};
|
|
30
|
+
export const buildServiceError = (response, options = {}) => {
|
|
31
|
+
const rawParams = response.params;
|
|
32
|
+
const obj = typeof rawParams === "object" && rawParams !== null && !Array.isArray(rawParams)
|
|
33
|
+
? rawParams
|
|
34
|
+
: undefined;
|
|
35
|
+
const kind = obj && typeof obj.kind === "string" ? obj.kind : undefined;
|
|
36
|
+
const serviceMessage = firstString(obj?.message, obj?.reason, obj?.error) ??
|
|
37
|
+
(typeof rawParams === "string" ? rawParams : undefined);
|
|
38
|
+
const message = serviceMessage ?? options.catalogMessage ?? SERVICE_ERROR_FALLBACK_MESSAGE;
|
|
39
|
+
return new WssServiceError(message, {
|
|
40
|
+
code: typeof response.code === "number" ? response.code : undefined,
|
|
41
|
+
kind,
|
|
42
|
+
method: response.method,
|
|
43
|
+
seq: typeof response.seq === "number" ? response.seq : undefined,
|
|
44
|
+
params: rawParams,
|
|
45
|
+
serviceMessage,
|
|
46
|
+
raw: response,
|
|
47
|
+
cause: response.code,
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAmBA,MAAM,8BAA8B,GAAG,wBAAwB,CAAC;AAIhE,MAAM,OAAO,eAAmC,SAAQ,KAAK;IAClD,IAAI,CAAqB;IACzB,IAAI,CAAqB;IACzB,MAAM,CAA8B;IACpC,GAAG,CAAqB;IACxB,MAAM,CAAsB;IAC5B,cAAc,CAAqB;IACnC,GAAG,CAAU;IAEtB,YAAY,OAAe,EAAE,OAAqC,EAAE;QAClE,KAAK,CACH,OAAO,EACP,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAC7D,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;CACF;AAED,MAAM,WAAW,GAAG,CAAC,GAAG,MAAiB,EAAsB,EAAE;IAC/D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IAClE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,QAA8B,EAC9B,UAGI,EAAE,EACW,EAAE;IACnB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;IAClC,MAAM,GAAG,GACP,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAC9E,CAAC,CAAE,SAAqC;QACxC,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAExE,MAAM,cAAc,GAClB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;QAClD,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE1D,MAAM,OAAO,GACX,cAAc,IAAI,OAAO,CAAC,cAAc,IAAI,8BAA8B,CAAC;IAE7E,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE;QAClC,IAAI,EAAE,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACnE,IAAI;QACJ,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,GAAG,EAAE,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;QAChE,MAAM,EAAE,SAAS;QACjB,cAAc;QACd,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,QAAQ,CAAC,IAAI;KACrB,CAAC,CAAC;AACL,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { default } from './wss-adapter.js';
|
|
2
2
|
export { default as wssAdapter } from './wss-adapter.js';
|
|
3
|
-
export
|
|
3
|
+
export { ServiceConnection } from './service-connection.js';
|
|
4
|
+
export { WssServiceError, buildServiceError } from './errors.js';
|
|
5
|
+
export type { WssServiceErrorInit, ServiceErrorEnvelope, } from './errors.js';
|
|
6
|
+
export type { IWssAdapter, IConfiguration, IServiceConfig, IServiceAdapter, IStreamingSubscriptionObserver, IStreamingUnsubscribe, IMethodInfo, IErrors, IStore, ApiMethods, ServiceName, ServiceStatus, } from './types.js';
|
|
4
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,8BAA8B,EAC9B,qBAAqB,EACrB,WAAW,EACX,OAAO,EACP,MAAM,EACN,UAAU,EACV,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACjE,YAAY,EACV,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,8BAA8B,EAC9B,qBAAqB,EACrB,WAAW,EACX,OAAO,EACP,MAAM,EACN,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { IConfiguration, IServiceAdapter, IServiceConfig, ServiceStatus } from './types.js';
|
|
2
|
+
interface Response {
|
|
3
|
+
type?: string;
|
|
4
|
+
method?: number;
|
|
5
|
+
seq?: number;
|
|
6
|
+
code?: number;
|
|
7
|
+
params?: any;
|
|
8
|
+
data?: any;
|
|
9
|
+
}
|
|
10
|
+
export declare class ServiceConnection implements IServiceAdapter {
|
|
11
|
+
readonly name: string;
|
|
12
|
+
private readonly config;
|
|
13
|
+
private readonly configuration;
|
|
14
|
+
private readonly onStream;
|
|
15
|
+
private socket;
|
|
16
|
+
private sequence;
|
|
17
|
+
private pending;
|
|
18
|
+
private observers;
|
|
19
|
+
private currentStatus;
|
|
20
|
+
private retryTimer;
|
|
21
|
+
private handshakeTimer;
|
|
22
|
+
private attempts;
|
|
23
|
+
private generation;
|
|
24
|
+
private protocols;
|
|
25
|
+
private remote;
|
|
26
|
+
private cancelConnect;
|
|
27
|
+
private readonly timeout;
|
|
28
|
+
private readonly reconnect;
|
|
29
|
+
constructor(name: string, config: IServiceConfig, configuration: IConfiguration, onStream: (response: Response, error?: Error) => void);
|
|
30
|
+
get status(): ServiceStatus;
|
|
31
|
+
subscribeStatus: (observer: (status: ServiceStatus) => void) => (() => void);
|
|
32
|
+
private notify;
|
|
33
|
+
private setStatus;
|
|
34
|
+
isOpen: () => boolean;
|
|
35
|
+
connect: <T>(payload?: string | string[], remote?: string) => Promise<T>;
|
|
36
|
+
private detachSocket;
|
|
37
|
+
disconnect: () => void;
|
|
38
|
+
private rejectPending;
|
|
39
|
+
private failed;
|
|
40
|
+
private open;
|
|
41
|
+
send(methodName: string, params?: Record<string, unknown>): Promise<unknown>;
|
|
42
|
+
private sendCall;
|
|
43
|
+
private serviceError;
|
|
44
|
+
private receive;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=service-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-connection.d.ts","sourceRoot":"","sources":["../src/service-connection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjG,UAAU,QAAQ;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAYD,qBAAa,iBAAkB,YAAW,eAAe;IAmBrD,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IArB3B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAE0C;gBAGzD,IAAI,EAAE,MAAM,EACJ,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE,cAAc,EAC7B,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI;IAaxE,IAAI,MAAM,IAAI,aAAa,CAE1B;IAED,eAAe,GAAI,UAAU,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAMzE;IAEF,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,SAAS;IAMjB,MAAM,QAAO,OAAO,CAA+C;IAEnE,OAAO,GAAI,CAAC,EAAE,UAAU,MAAM,GAAG,MAAM,EAAE,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,CAAC,CAAC,CAcrE;IAEF,OAAO,CAAC,YAAY;IAiBpB,UAAU,QAAO,IAAI,CAUnB;IAEF,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM;IAyBd,OAAO,CAAC,IAAI;IAqDZ,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8BhF,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,OAAO;CA2BhB"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import { buildServiceError } from './errors.js';
|
|
2
|
+
export class ServiceConnection {
|
|
3
|
+
name;
|
|
4
|
+
config;
|
|
5
|
+
configuration;
|
|
6
|
+
onStream;
|
|
7
|
+
socket;
|
|
8
|
+
sequence = 1;
|
|
9
|
+
pending = new Map();
|
|
10
|
+
observers = new Set();
|
|
11
|
+
currentStatus = 'down';
|
|
12
|
+
retryTimer;
|
|
13
|
+
handshakeTimer;
|
|
14
|
+
attempts = 0;
|
|
15
|
+
generation = 0;
|
|
16
|
+
protocols = [];
|
|
17
|
+
remote = '';
|
|
18
|
+
cancelConnect;
|
|
19
|
+
timeout;
|
|
20
|
+
reconnect;
|
|
21
|
+
constructor(name, config, configuration, onStream) {
|
|
22
|
+
this.name = name;
|
|
23
|
+
this.config = config;
|
|
24
|
+
this.configuration = configuration;
|
|
25
|
+
this.onStream = onStream;
|
|
26
|
+
this.timeout = config.timeout ?? configuration.timeout;
|
|
27
|
+
this.reconnect =
|
|
28
|
+
config.reconnect === false
|
|
29
|
+
? false
|
|
30
|
+
: {
|
|
31
|
+
initialDelay: config.reconnect?.initialDelay ?? 1000,
|
|
32
|
+
maxDelay: config.reconnect?.maxDelay ?? 30000,
|
|
33
|
+
maxAttempts: config.reconnect?.maxAttempts ?? 5,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
get status() {
|
|
37
|
+
return this.currentStatus;
|
|
38
|
+
}
|
|
39
|
+
subscribeStatus = (observer) => {
|
|
40
|
+
this.observers.add(observer);
|
|
41
|
+
this.notify(observer);
|
|
42
|
+
return () => {
|
|
43
|
+
this.observers.delete(observer);
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
notify(observer) {
|
|
47
|
+
try {
|
|
48
|
+
observer(this.status);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
console.error('[wss-adapter] Status callback failed');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
setStatus(status) {
|
|
55
|
+
if (this.currentStatus === status)
|
|
56
|
+
return;
|
|
57
|
+
this.currentStatus = status;
|
|
58
|
+
for (const observer of this.observers)
|
|
59
|
+
this.notify(observer);
|
|
60
|
+
}
|
|
61
|
+
isOpen = () => this.socket?.readyState === WebSocket.OPEN;
|
|
62
|
+
connect = (payload, remote) => {
|
|
63
|
+
if (!Array.isArray(payload)) {
|
|
64
|
+
return Promise.reject(new Error('WebSocket protocols required for authentication'));
|
|
65
|
+
}
|
|
66
|
+
this.disconnect();
|
|
67
|
+
this.protocols = [...payload];
|
|
68
|
+
this.remote = remote || this.config.remote;
|
|
69
|
+
this.attempts = 0;
|
|
70
|
+
return new Promise((resolve, reject) => {
|
|
71
|
+
this.cancelConnect = reject;
|
|
72
|
+
const generation = this.generation;
|
|
73
|
+
this.setStatus('reconnecting');
|
|
74
|
+
if (this.generation === generation)
|
|
75
|
+
this.open((value) => resolve(value));
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
detachSocket() {
|
|
79
|
+
clearTimeout(this.handshakeTimer);
|
|
80
|
+
this.handshakeTimer = undefined;
|
|
81
|
+
const socket = this.socket;
|
|
82
|
+
this.socket = undefined;
|
|
83
|
+
if (!socket)
|
|
84
|
+
return;
|
|
85
|
+
socket.onopen = null;
|
|
86
|
+
socket.onmessage = null;
|
|
87
|
+
socket.onerror = null;
|
|
88
|
+
socket.onclose = null;
|
|
89
|
+
try {
|
|
90
|
+
socket.close();
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
disconnect = () => {
|
|
96
|
+
this.generation++;
|
|
97
|
+
clearTimeout(this.retryTimer);
|
|
98
|
+
this.retryTimer = undefined;
|
|
99
|
+
this.detachSocket();
|
|
100
|
+
const reason = new Error(`Service ${this.name} disconnected`);
|
|
101
|
+
this.cancelConnect?.(reason);
|
|
102
|
+
this.cancelConnect = undefined;
|
|
103
|
+
this.rejectPending(reason.message);
|
|
104
|
+
this.setStatus('down');
|
|
105
|
+
};
|
|
106
|
+
rejectPending(reason) {
|
|
107
|
+
for (const call of this.pending.values()) {
|
|
108
|
+
clearTimeout(call.timer);
|
|
109
|
+
call.reject(new Error(`${call.methodName}: ${reason}`));
|
|
110
|
+
}
|
|
111
|
+
this.pending.clear();
|
|
112
|
+
}
|
|
113
|
+
failed(reason, event) {
|
|
114
|
+
this.detachSocket();
|
|
115
|
+
this.cancelConnect?.(reason);
|
|
116
|
+
this.cancelConnect = undefined;
|
|
117
|
+
this.rejectPending(reason.message);
|
|
118
|
+
const reconnect = this.reconnect;
|
|
119
|
+
if (reconnect && this.attempts < reconnect.maxAttempts) {
|
|
120
|
+
const delay = Math.min(reconnect.initialDelay * 2 ** this.attempts++, reconnect.maxDelay);
|
|
121
|
+
this.retryTimer = setTimeout(() => {
|
|
122
|
+
this.retryTimer = undefined;
|
|
123
|
+
this.open();
|
|
124
|
+
}, delay);
|
|
125
|
+
this.setStatus('reconnecting');
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
this.setStatus('down');
|
|
129
|
+
}
|
|
130
|
+
if (event) {
|
|
131
|
+
try {
|
|
132
|
+
this.config.onDisconnect?.(event);
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
console.error('[wss-adapter] Disconnect callback failed');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
open(resolve) {
|
|
140
|
+
let socket;
|
|
141
|
+
try {
|
|
142
|
+
socket = new WebSocket(this.remote, this.protocols);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
this.failed(new Error('WebSocket connection failed'));
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
this.socket = socket;
|
|
149
|
+
let authenticated = false;
|
|
150
|
+
this.handshakeTimer = setTimeout(() => {
|
|
151
|
+
if (this.socket === socket)
|
|
152
|
+
this.failed(new Error('WebSocket authentication took too long'));
|
|
153
|
+
}, this.timeout);
|
|
154
|
+
socket.onopen = () => {
|
|
155
|
+
if (this.socket !== socket)
|
|
156
|
+
return;
|
|
157
|
+
for (const [seq, call] of this.pending)
|
|
158
|
+
this.sendCall(seq, call);
|
|
159
|
+
};
|
|
160
|
+
socket.onmessage = (event) => {
|
|
161
|
+
if (this.socket !== socket)
|
|
162
|
+
return;
|
|
163
|
+
let response;
|
|
164
|
+
try {
|
|
165
|
+
response = JSON.parse(event.data);
|
|
166
|
+
if (!response || typeof response !== 'object' || Array.isArray(response))
|
|
167
|
+
throw new Error('Invalid response');
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
this.failed(new Error('Invalid WebSocket response'));
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
if (!authenticated) {
|
|
174
|
+
if (response.type === 'Error' || response.code) {
|
|
175
|
+
this.failed(this.serviceError(response));
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
authenticated = true;
|
|
179
|
+
clearTimeout(this.handshakeTimer);
|
|
180
|
+
this.handshakeTimer = undefined;
|
|
181
|
+
this.attempts = 0;
|
|
182
|
+
this.cancelConnect = undefined;
|
|
183
|
+
this.setStatus('connected');
|
|
184
|
+
resolve?.(response.params);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
this.receive(response);
|
|
188
|
+
};
|
|
189
|
+
socket.onclose = (event) => {
|
|
190
|
+
if (this.socket === socket)
|
|
191
|
+
this.failed(new Error(`WebSocket closed (code ${event.code || 'unknown'})`), event);
|
|
192
|
+
};
|
|
193
|
+
socket.onerror = () => {
|
|
194
|
+
if (this.socket === socket)
|
|
195
|
+
this.failed(new Error('WebSocket connection failed'));
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
send(methodName, params = {}) {
|
|
199
|
+
const entry = Object.entries(this.config.methods).find(([, info]) => info.name === methodName);
|
|
200
|
+
if (!entry)
|
|
201
|
+
throw new Error(`method ${methodName} not available in ${this.name} service`);
|
|
202
|
+
if (!this.socket || this.socket.readyState > WebSocket.OPEN) {
|
|
203
|
+
return Promise.reject(new Error(`No active session for service ${this.name}`));
|
|
204
|
+
}
|
|
205
|
+
const [code, info] = entry;
|
|
206
|
+
const seq = ++this.sequence;
|
|
207
|
+
const payload = JSON.stringify({
|
|
208
|
+
method: Number.parseInt(code),
|
|
209
|
+
seq,
|
|
210
|
+
params: info.parameters.map((name) => params[name]),
|
|
211
|
+
});
|
|
212
|
+
return new Promise((resolve, reject) => {
|
|
213
|
+
const call = {
|
|
214
|
+
resolve,
|
|
215
|
+
reject,
|
|
216
|
+
methodName,
|
|
217
|
+
payload,
|
|
218
|
+
sent: false,
|
|
219
|
+
timer: setTimeout(() => {
|
|
220
|
+
this.pending.delete(seq);
|
|
221
|
+
reject(new Error(`${methodName} took too long, aborting`));
|
|
222
|
+
}, this.timeout),
|
|
223
|
+
};
|
|
224
|
+
this.pending.set(seq, call);
|
|
225
|
+
if (this.isOpen())
|
|
226
|
+
this.sendCall(seq, call);
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
sendCall(seq, call) {
|
|
230
|
+
if (call.sent)
|
|
231
|
+
return;
|
|
232
|
+
call.sent = true;
|
|
233
|
+
try {
|
|
234
|
+
this.socket.send(call.payload);
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
clearTimeout(call.timer);
|
|
238
|
+
this.pending.delete(seq);
|
|
239
|
+
call.reject(error);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
serviceError(response) {
|
|
243
|
+
const methodName = this.config.methods[String(response.method)]?.name;
|
|
244
|
+
const catalogMessage = this.configuration.errors.codes.find((entry) => entry.code === response.code)?.message;
|
|
245
|
+
const error = buildServiceError(response, { methodName, catalogMessage });
|
|
246
|
+
try {
|
|
247
|
+
this.configuration.onServiceError?.(error);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
console.error('[wss-adapter] Structured error callback failed');
|
|
251
|
+
}
|
|
252
|
+
try {
|
|
253
|
+
this.configuration.onError?.(methodName
|
|
254
|
+
? `[${response.code ?? 'Error'}]: ${methodName}: ${error.message}`
|
|
255
|
+
: error.message);
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
console.error('[wss-adapter] Error callback failed');
|
|
259
|
+
}
|
|
260
|
+
return error;
|
|
261
|
+
}
|
|
262
|
+
receive(response) {
|
|
263
|
+
if (response.type === 'Stream') {
|
|
264
|
+
try {
|
|
265
|
+
this.config.subscriptions?.[String(response.method)]?.(response);
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
console.error('[wss-adapter] Stream callback failed');
|
|
269
|
+
}
|
|
270
|
+
this.onStream(response);
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
const call = response.seq === undefined ? undefined : this.pending.get(response.seq);
|
|
274
|
+
const failed = response.type === 'Error' ||
|
|
275
|
+
response.code ||
|
|
276
|
+
response.params?.success === false ||
|
|
277
|
+
response.params?.error;
|
|
278
|
+
if (!call) {
|
|
279
|
+
if (response.seq === undefined && failed && response.method !== undefined)
|
|
280
|
+
this.onStream(response, this.serviceError(response));
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
clearTimeout(call.timer);
|
|
284
|
+
this.pending.delete(response.seq);
|
|
285
|
+
if (failed)
|
|
286
|
+
call.reject(this.serviceError(response));
|
|
287
|
+
else
|
|
288
|
+
call.resolve(response);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=service-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-connection.js","sourceRoot":"","sources":["../src/service-connection.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { WssServiceError } from './errors.js';
|
|
1
2
|
export interface IMethodInfo {
|
|
2
3
|
name: string;
|
|
3
4
|
parameters: string[];
|
|
@@ -7,6 +8,12 @@ export interface IServiceConfig {
|
|
|
7
8
|
methods: Record<string, IMethodInfo>;
|
|
8
9
|
subscriptions?: Record<string, (data: any) => void>;
|
|
9
10
|
onDisconnect?: (event: CloseEvent) => void;
|
|
11
|
+
timeout?: number;
|
|
12
|
+
reconnect?: false | {
|
|
13
|
+
initialDelay?: number;
|
|
14
|
+
maxDelay?: number;
|
|
15
|
+
maxAttempts?: number;
|
|
16
|
+
};
|
|
10
17
|
}
|
|
11
18
|
export interface IErrorCode {
|
|
12
19
|
code: number;
|
|
@@ -21,27 +28,16 @@ export interface IConfiguration {
|
|
|
21
28
|
services: Record<string, IServiceConfig>;
|
|
22
29
|
errors: IErrors;
|
|
23
30
|
onError?: (message: string) => void;
|
|
31
|
+
onServiceError?: (error: WssServiceError) => void;
|
|
24
32
|
}
|
|
25
33
|
export interface IStore {
|
|
26
|
-
|
|
27
|
-
errors: IErrors;
|
|
28
|
-
services: Record<string, IServiceConfig>;
|
|
29
|
-
subscriptions: Record<string, Record<string, (data: any) => void>>;
|
|
30
|
-
sequence: {
|
|
31
|
-
value: number;
|
|
32
|
-
getSeq(): number;
|
|
33
|
-
decreaseSeq(): void;
|
|
34
|
-
};
|
|
35
|
-
sessions: Record<string, WebSocket>;
|
|
36
|
-
pendingPromises: Record<number, {
|
|
37
|
-
resolve: (value: any) => void;
|
|
38
|
-
reject: (reason: any) => void;
|
|
39
|
-
toHandler: number;
|
|
40
|
-
methodName: string;
|
|
41
|
-
}>;
|
|
42
|
-
onError?: (message: string) => void;
|
|
34
|
+
connections: Record<string, IServiceAdapter>;
|
|
43
35
|
}
|
|
36
|
+
export type ServiceStatus = 'connected' | 'reconnecting' | 'down';
|
|
44
37
|
export interface IServiceAdapter {
|
|
38
|
+
readonly name: string;
|
|
39
|
+
readonly status: ServiceStatus;
|
|
40
|
+
subscribeStatus: (observer: (status: ServiceStatus) => void) => () => void;
|
|
45
41
|
connect: <T>(payload?: string | string[], remote?: string) => Promise<T>;
|
|
46
42
|
disconnect: () => void;
|
|
47
43
|
isOpen: () => boolean;
|
|
@@ -52,12 +48,15 @@ export interface IStreamingSubscriptionObserver<TEvent = unknown> {
|
|
|
52
48
|
complete?: () => void;
|
|
53
49
|
}
|
|
54
50
|
export type IStreamingUnsubscribe = () => void;
|
|
55
|
-
export type ServiceName =
|
|
51
|
+
export type ServiceName = string;
|
|
56
52
|
export type ApiMethods = {
|
|
57
53
|
app: Record<string, (params?: any) => Promise<any>>;
|
|
54
|
+
[service: string]: Record<string, (params?: any) => Promise<any>>;
|
|
58
55
|
};
|
|
59
56
|
export interface IWssAdapter {
|
|
60
|
-
services: Record<ServiceName, IServiceAdapter
|
|
57
|
+
services: Record<ServiceName, IServiceAdapter> & {
|
|
58
|
+
app: IServiceAdapter;
|
|
59
|
+
};
|
|
61
60
|
sessions: ApiMethods;
|
|
62
61
|
configure: (configuration: IConfiguration) => void;
|
|
63
62
|
subscribeTo: <TEvent = unknown>(event: string, observer: IStreamingSubscriptionObserver<TEvent>) => IStreamingUnsubscribe;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;IACpD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,KAAK,GAAG;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxF;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC9C;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,cAAc,GAAG,MAAM,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAC3E,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,8BAA8B,CAAC,MAAM,GAAG,OAAO;IAC9D,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,GAAG;QAAE,GAAG,EAAE,eAAe,CAAA;KAAE,CAAC;IAC1E,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,CAAC,aAAa,EAAE,cAAc,KAAK,IAAI,CAAC;IACnD,WAAW,EAAE,CAAC,MAAM,GAAG,OAAO,EAC5B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,8BAA8B,CAAC,MAAM,CAAC,KAC7C,qBAAqB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
package/dist/wss-adapter.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wss-adapter.d.ts","sourceRoot":"","sources":["../src/wss-adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wss-adapter.d.ts","sourceRoot":"","sources":["../src/wss-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKV,WAAW,EAEZ,MAAM,YAAY,CAAC;AACpB,QAAA,MAAM,UAAU,EAAE,WAQjB,CAAC;AA2FF,eAAe,UAAU,CAAC"}
|
package/dist/wss-adapter.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ServiceConnection } from './service-connection.js';
|
|
1
2
|
const wssAdapter = {
|
|
2
3
|
services: {},
|
|
3
4
|
sessions: {},
|
|
@@ -5,7 +6,7 @@ const wssAdapter = {
|
|
|
5
6
|
subscribeTo() {
|
|
6
7
|
return () => { };
|
|
7
8
|
},
|
|
8
|
-
__store:
|
|
9
|
+
__store: { connections: {} },
|
|
9
10
|
};
|
|
10
11
|
const streamSubscribers = new Map();
|
|
11
12
|
let streamSubscriberId = 1;
|
|
@@ -13,7 +14,7 @@ const normalizeStreamEvent = (event) => event.trim();
|
|
|
13
14
|
const subscribeStreamEvent = (event, observer) => {
|
|
14
15
|
const eventName = normalizeStreamEvent(event);
|
|
15
16
|
if (!eventName) {
|
|
16
|
-
throw new Error(
|
|
17
|
+
throw new Error('Stream event name is required');
|
|
17
18
|
}
|
|
18
19
|
const id = streamSubscriberId++;
|
|
19
20
|
const subscribers = streamSubscribers.get(eventName) ?? new Map();
|
|
@@ -43,334 +44,44 @@ const notifyStreamSubscribers = (eventKeys, notify) => {
|
|
|
43
44
|
notify(observer);
|
|
44
45
|
}
|
|
45
46
|
catch (err) {
|
|
46
|
-
console.error(
|
|
47
|
+
console.error('[wss-adapter] Stream subscriber callback failed:', err);
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
};
|
|
51
|
-
|
|
52
|
-
for (const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
wssAdapter.configure = (configuration) => {
|
|
53
|
+
for (const connection of Object.values(wssAdapter.services))
|
|
54
|
+
connection.disconnect();
|
|
55
|
+
for (const name of Object.keys(wssAdapter.services))
|
|
56
|
+
delete wssAdapter.services[name];
|
|
57
|
+
for (const name of Object.keys(wssAdapter.sessions))
|
|
58
|
+
delete wssAdapter.sessions[name];
|
|
59
|
+
for (const [name, config] of Object.entries(configuration.services)) {
|
|
60
|
+
const connection = new ServiceConnection(name, config, configuration, (response, error) => {
|
|
61
|
+
const keys = [String(response.method)];
|
|
62
|
+
const methodName = config.methods[String(response.method)]?.name;
|
|
63
|
+
if (methodName)
|
|
64
|
+
keys.push(methodName);
|
|
65
|
+
if (error) {
|
|
66
|
+
notifyStreamSubscribers(keys, (observer) => observer.error?.(error));
|
|
56
67
|
}
|
|
57
|
-
|
|
58
|
-
|
|
68
|
+
else {
|
|
69
|
+
const data = response.data !== undefined
|
|
70
|
+
? response.data
|
|
71
|
+
: response.params !== undefined
|
|
72
|
+
? response.params
|
|
73
|
+
: response;
|
|
74
|
+
const payload = data && typeof data === 'object' && 'data' in data ? data.data : data;
|
|
75
|
+
notifyStreamSubscribers(keys, (observer) => observer.next(payload));
|
|
59
76
|
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (method == null)
|
|
65
|
-
return [];
|
|
66
|
-
const eventKeys = new Set();
|
|
67
|
-
const methodCode = String(method);
|
|
68
|
-
eventKeys.add(methodCode);
|
|
69
|
-
for (const serviceConfig of Object.values(store.services)) {
|
|
70
|
-
const methodInfo = serviceConfig.methods?.[methodCode];
|
|
71
|
-
if (methodInfo?.name) {
|
|
72
|
-
eventKeys.add(methodInfo.name);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return [...eventKeys];
|
|
76
|
-
};
|
|
77
|
-
const getStreamPayload = (response) => {
|
|
78
|
-
if (response?.data !== undefined) {
|
|
79
|
-
if (response.data?.data !== undefined) {
|
|
80
|
-
return response.data.data;
|
|
81
|
-
}
|
|
82
|
-
return response.data;
|
|
83
|
-
}
|
|
84
|
-
if (response?.params !== undefined) {
|
|
85
|
-
return response.params;
|
|
86
|
-
}
|
|
87
|
-
return response;
|
|
88
|
-
};
|
|
89
|
-
const store = {
|
|
90
|
-
timeout: 0,
|
|
91
|
-
errors: {
|
|
92
|
-
language: "en",
|
|
93
|
-
codes: [],
|
|
94
|
-
},
|
|
95
|
-
services: {},
|
|
96
|
-
subscriptions: {},
|
|
97
|
-
sequence: {
|
|
98
|
-
value: 1,
|
|
99
|
-
getSeq() {
|
|
100
|
-
store.sequence.value += 1;
|
|
101
|
-
return store.sequence.value;
|
|
102
|
-
},
|
|
103
|
-
decreaseSeq() {
|
|
104
|
-
store.sequence.value -= 1;
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
sessions: {},
|
|
108
|
-
pendingPromises: {},
|
|
109
|
-
};
|
|
110
|
-
const rejectPendingPromises = (reason) => {
|
|
111
|
-
for (const [seq, executor] of Object.entries(store.pendingPromises)) {
|
|
112
|
-
clearTimeout(executor.toHandler);
|
|
113
|
-
executor.reject(new Error(`${executor.methodName}: ${reason}`));
|
|
114
|
-
delete store.pendingPromises[Number(seq)];
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
wssAdapter.configure = (configuration) => {
|
|
118
|
-
const { timeout, services, errors, onError } = configuration;
|
|
119
|
-
store.timeout = timeout;
|
|
120
|
-
store.errors = errors;
|
|
121
|
-
store.services = services;
|
|
122
|
-
if (onError !== undefined) {
|
|
123
|
-
store.onError = onError;
|
|
124
|
-
}
|
|
125
|
-
for (const [serviceName, serviceConfig] of Object.entries(services)) {
|
|
126
|
-
const serviceNameTyped = serviceName;
|
|
127
|
-
wssAdapter.services[serviceNameTyped] = {
|
|
128
|
-
connect: (payload, remote) => connectHandler(serviceName, serviceConfig, payload, remote),
|
|
129
|
-
disconnect: () => disconnectHandler(serviceName),
|
|
130
|
-
isOpen: () => store.sessions[serviceName]?.readyState === WebSocket.OPEN,
|
|
131
|
-
};
|
|
132
|
-
if (serviceConfig.subscriptions) {
|
|
133
|
-
store.subscriptions[serviceName] = serviceConfig.subscriptions;
|
|
134
|
-
}
|
|
135
|
-
wssAdapter.sessions[serviceName] = new Proxy({}, {
|
|
136
|
-
get: (_target, methodName) => (payload) => sendHandler(serviceName, serviceConfig, methodName, payload),
|
|
77
|
+
});
|
|
78
|
+
wssAdapter.services[name] = connection;
|
|
79
|
+
wssAdapter.sessions[name] = new Proxy({}, {
|
|
80
|
+
get: (_target, methodName) => (params) => connection.send(methodName, params),
|
|
137
81
|
});
|
|
138
82
|
}
|
|
139
83
|
};
|
|
140
84
|
wssAdapter.subscribeTo = (event, observer) => subscribeStreamEvent(event, observer);
|
|
141
|
-
|
|
142
|
-
return new Promise((resolve, reject) => {
|
|
143
|
-
if (!payload || !Array.isArray(payload)) {
|
|
144
|
-
reject(new Error("WebSocket protocols required for authentication"));
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
const protocols = payload;
|
|
148
|
-
const prev = store.sessions[serviceName];
|
|
149
|
-
if (prev) {
|
|
150
|
-
prev.onclose = null;
|
|
151
|
-
prev.onerror = null;
|
|
152
|
-
prev.onmessage = null;
|
|
153
|
-
try {
|
|
154
|
-
prev.close();
|
|
155
|
-
}
|
|
156
|
-
catch {
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
const wsConnection = new WebSocket(remote || serviceConfig.remote, protocols);
|
|
160
|
-
store.sessions[serviceName] = wsConnection;
|
|
161
|
-
wsConnection.onmessage = (event) => {
|
|
162
|
-
const response = JSON.parse(event.data);
|
|
163
|
-
if (response.type === "Immediate" &&
|
|
164
|
-
response.method === 20000 &&
|
|
165
|
-
response.params?.accessToken) {
|
|
166
|
-
const session = store.sessions[serviceName];
|
|
167
|
-
if (session) {
|
|
168
|
-
session.onmessage = receiveHandler;
|
|
169
|
-
}
|
|
170
|
-
resolve(response.params);
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
if (response.type === "Error" || response.code) {
|
|
174
|
-
const error = store.errors.codes.find((c) => c.code === response.code);
|
|
175
|
-
const errorMsg = response.params || error?.message || response.code;
|
|
176
|
-
if (store.onError) {
|
|
177
|
-
store.onError(String(errorMsg));
|
|
178
|
-
}
|
|
179
|
-
reject(new Error(String(errorMsg)));
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
const session = store.sessions[serviceName];
|
|
183
|
-
if (session) {
|
|
184
|
-
session.onmessage = receiveHandler;
|
|
185
|
-
}
|
|
186
|
-
resolve(response.params);
|
|
187
|
-
};
|
|
188
|
-
wsConnection.onclose = (event) => {
|
|
189
|
-
delete store.sessions[serviceName];
|
|
190
|
-
rejectPendingPromises(`WebSocket closed (code ${event.code || "unknown"})`);
|
|
191
|
-
notifyStreamCompleteAll();
|
|
192
|
-
if (!event.wasClean) {
|
|
193
|
-
reject(new Error(`WebSocket closed unexpectedly (code ${event.code || "unknown"})`));
|
|
194
|
-
}
|
|
195
|
-
serviceConfig.onDisconnect?.(event);
|
|
196
|
-
};
|
|
197
|
-
wsConnection.onerror = (event) => {
|
|
198
|
-
console.error("WebSocket error:", event);
|
|
199
|
-
reject(new Error("WebSocket connection failed"));
|
|
200
|
-
};
|
|
201
|
-
});
|
|
202
|
-
};
|
|
203
|
-
const disconnectHandler = (serviceName) => {
|
|
204
|
-
const session = store.sessions[serviceName];
|
|
205
|
-
if (session) {
|
|
206
|
-
rejectPendingPromises(`Service ${serviceName} disconnected`);
|
|
207
|
-
session.close();
|
|
208
|
-
delete store.sessions[serviceName];
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
const sendHandler = (serviceName, serviceConfig, methodName, params = {}) => {
|
|
212
|
-
const methodEntry = Object.entries(serviceConfig.methods)
|
|
213
|
-
.map(([code, info]) => ({ code, info }))
|
|
214
|
-
.find(({ info }) => info.name === methodName);
|
|
215
|
-
if (!methodEntry) {
|
|
216
|
-
throw new Error(`method ${methodName} not available in ${serviceName} service`);
|
|
217
|
-
}
|
|
218
|
-
const methodCode = methodEntry.code;
|
|
219
|
-
const methodInfo = serviceConfig.methods[methodCode];
|
|
220
|
-
if (!methodInfo) {
|
|
221
|
-
throw new Error(`method configuration missing for ${methodName} in ${serviceName} service`);
|
|
222
|
-
}
|
|
223
|
-
const paramsArray = methodInfo.parameters.map((paramName) => params[paramName]);
|
|
224
|
-
const payload = {
|
|
225
|
-
method: Number.parseInt(methodCode),
|
|
226
|
-
seq: store.sequence.getSeq(),
|
|
227
|
-
params: paramsArray,
|
|
228
|
-
};
|
|
229
|
-
return new Promise((resolve, reject) => {
|
|
230
|
-
const session = store.sessions[serviceName];
|
|
231
|
-
if (!session) {
|
|
232
|
-
reject(new Error(`No active session for service ${serviceName}`));
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
const doSend = () => {
|
|
236
|
-
try {
|
|
237
|
-
session.send(JSON.stringify(payload));
|
|
238
|
-
}
|
|
239
|
-
catch (err) {
|
|
240
|
-
store.sequence.decreaseSeq();
|
|
241
|
-
reject(err);
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
store.pendingPromises[payload.seq] = {
|
|
245
|
-
resolve,
|
|
246
|
-
reject,
|
|
247
|
-
toHandler: setTimeout(() => {
|
|
248
|
-
reject(new Error(`${methodName} took too long, aborting`));
|
|
249
|
-
}, store.timeout),
|
|
250
|
-
methodName,
|
|
251
|
-
};
|
|
252
|
-
};
|
|
253
|
-
if (session.readyState === WebSocket.OPEN) {
|
|
254
|
-
doSend();
|
|
255
|
-
}
|
|
256
|
-
else if (session.readyState === WebSocket.CONNECTING) {
|
|
257
|
-
const cleanup = () => {
|
|
258
|
-
session.removeEventListener("open", onOpen);
|
|
259
|
-
session.removeEventListener("error", onErr);
|
|
260
|
-
session.removeEventListener("close", onClose);
|
|
261
|
-
};
|
|
262
|
-
const onOpen = () => { cleanup(); doSend(); };
|
|
263
|
-
const onErr = () => {
|
|
264
|
-
cleanup();
|
|
265
|
-
store.sequence.decreaseSeq();
|
|
266
|
-
reject(new Error(`WebSocket failed while waiting to send ${methodName}`));
|
|
267
|
-
};
|
|
268
|
-
const onClose = () => {
|
|
269
|
-
cleanup();
|
|
270
|
-
store.sequence.decreaseSeq();
|
|
271
|
-
reject(new Error(`WebSocket closed while waiting to send ${methodName}`));
|
|
272
|
-
};
|
|
273
|
-
session.addEventListener("open", onOpen, { once: true });
|
|
274
|
-
session.addEventListener("error", onErr, { once: true });
|
|
275
|
-
session.addEventListener("close", onClose, { once: true });
|
|
276
|
-
}
|
|
277
|
-
else {
|
|
278
|
-
store.sequence.decreaseSeq();
|
|
279
|
-
reject(new Error(`WebSocket not open (readyState=${session.readyState}), cannot send ${methodName}`));
|
|
280
|
-
}
|
|
281
|
-
});
|
|
282
|
-
};
|
|
283
|
-
const receiveHandler = (event) => {
|
|
284
|
-
const response = JSON.parse(event.data);
|
|
285
|
-
if (response.type === "Immediate" ||
|
|
286
|
-
(response.type === "Error" && response.method) ||
|
|
287
|
-
response.method === 0) {
|
|
288
|
-
const error = response.code ||
|
|
289
|
-
response.params?.success === false ||
|
|
290
|
-
response.params?.error;
|
|
291
|
-
const resolve = (payload) => {
|
|
292
|
-
const executor = store.pendingPromises[response.seq];
|
|
293
|
-
if (executor) {
|
|
294
|
-
clearTimeout(executor.toHandler);
|
|
295
|
-
delete store.pendingPromises[response.seq];
|
|
296
|
-
executor.resolve(payload);
|
|
297
|
-
}
|
|
298
|
-
};
|
|
299
|
-
if (error) {
|
|
300
|
-
onError(response);
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
resolve(response);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
else if (response.type === "Stream") {
|
|
307
|
-
console.log("Stream response:", response);
|
|
308
|
-
const method = response.method;
|
|
309
|
-
const subs = store.subscriptions;
|
|
310
|
-
for (const [serviceName, callbacks] of Object.entries(subs)) {
|
|
311
|
-
if (callbacks && typeof callbacks[method] === "function") {
|
|
312
|
-
try {
|
|
313
|
-
callbacks[method](response);
|
|
314
|
-
}
|
|
315
|
-
catch (err) {
|
|
316
|
-
console.error(`[wss-adapter] Stream handler error in ${serviceName}:`, err);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
const eventKeys = getStreamEventKeys(method);
|
|
321
|
-
if (eventKeys.length > 0) {
|
|
322
|
-
const payload = getStreamPayload(response);
|
|
323
|
-
notifyStreamSubscribers(eventKeys, (observer) => {
|
|
324
|
-
observer.next(payload);
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
};
|
|
329
|
-
function onError(response) {
|
|
330
|
-
const error = store.errors.codes.find((c) => c.code === response.code);
|
|
331
|
-
const params = typeof response.params === "object" && response.params !== null
|
|
332
|
-
? response.params
|
|
333
|
-
: {};
|
|
334
|
-
const errorMsg = params.reason || params.error || response.params || error?.message;
|
|
335
|
-
const errorCode = response.code ?? "Error";
|
|
336
|
-
let methodName = "";
|
|
337
|
-
if (response.method) {
|
|
338
|
-
for (const serviceConfig of Object.values(store.services)) {
|
|
339
|
-
const methodKey = response.method.toString();
|
|
340
|
-
const method = serviceConfig.methods[methodKey];
|
|
341
|
-
if (method) {
|
|
342
|
-
methodName = method.name;
|
|
343
|
-
break;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
const fullErrorMsg = methodName
|
|
348
|
-
? `[${errorCode}]: ${methodName}: ${errorMsg}`
|
|
349
|
-
: String(errorMsg);
|
|
350
|
-
if (store.onError) {
|
|
351
|
-
store.onError(fullErrorMsg);
|
|
352
|
-
}
|
|
353
|
-
const executor = store.pendingPromises[response.seq];
|
|
354
|
-
if (executor) {
|
|
355
|
-
clearTimeout(executor.toHandler);
|
|
356
|
-
executor.reject(new Error(`${executor.methodName || ""}: ${errorMsg}`, {
|
|
357
|
-
cause: errorCode,
|
|
358
|
-
}));
|
|
359
|
-
delete store.pendingPromises[response.seq];
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
if (response.method != null) {
|
|
363
|
-
const eventKeys = getStreamEventKeys(response.method);
|
|
364
|
-
if (eventKeys.length > 0) {
|
|
365
|
-
const streamError = new Error(fullErrorMsg);
|
|
366
|
-
notifyStreamSubscribers(eventKeys, (observer) => {
|
|
367
|
-
observer.error?.(streamError);
|
|
368
|
-
});
|
|
369
|
-
return;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
throw new Error("Unknown request failed");
|
|
373
|
-
}
|
|
374
|
-
wssAdapter.__store = store;
|
|
85
|
+
wssAdapter.__store.connections = wssAdapter.services;
|
|
375
86
|
export default wssAdapter;
|
|
376
87
|
//# sourceMappingURL=wss-adapter.js.map
|
package/dist/wss-adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wss-adapter.js","sourceRoot":"","sources":["../src/wss-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wss-adapter.js","sourceRoot":"","sources":["../src/wss-adapter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pathscale/wss-adapter",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.13",
|
|
4
4
|
"description": "Modern WebSocket adapter for PathScale WSS services",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -18,8 +18,9 @@
|
|
|
18
18
|
"build": "tsc && tsc-alias",
|
|
19
19
|
"dev": "tsc --watch",
|
|
20
20
|
"clean": "rm -rf dist",
|
|
21
|
-
"prebuild": "
|
|
22
|
-
"
|
|
21
|
+
"prebuild": "bun run clean",
|
|
22
|
+
"typecheck": "tsc --noEmit",
|
|
23
|
+
"test": "bun test",
|
|
23
24
|
"lint": "biome check .",
|
|
24
25
|
"format": "biome format . --write",
|
|
25
26
|
"commit": "cz",
|