@owlmeans/client-socket 0.1.18-rc.46 → 0.1.18-rc.48
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 +2 -2
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/client-socket/SKILL.md +1 -1
- package/build/consts.d.ts +1 -0
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +1 -0
- package/build/consts.js.map +1 -1
- package/build/consts.local.d.ts +3 -0
- package/build/consts.local.d.ts.map +1 -0
- package/build/consts.local.js +2 -0
- package/build/consts.local.js.map +1 -0
- package/build/helper.d.ts +3 -3
- package/build/helper.d.ts.map +1 -1
- package/build/helper.js +1 -2
- package/build/helper.js.map +1 -1
- package/build/status.d.ts +0 -1
- package/build/status.d.ts.map +1 -1
- package/build/status.js +2 -2
- package/build/status.js.map +1 -1
- package/build/utils/connection.d.ts +1 -30
- package/build/utils/connection.d.ts.map +1 -1
- package/build/utils/connection.js +5 -7
- package/build/utils/connection.js.map +1 -1
- package/build/utils/consts.local.d.ts +6 -0
- package/build/utils/consts.local.d.ts.map +1 -0
- package/build/utils/consts.local.js +6 -0
- package/build/utils/consts.local.js.map +1 -0
- package/build/utils/index.d.ts +1 -0
- package/build/utils/index.d.ts.map +1 -1
- package/build/utils/types.d.ts +31 -0
- package/build/utils/types.d.ts.map +1 -0
- package/build/utils/types.js +2 -0
- package/build/utils/types.js.map +1 -0
- package/package.json +13 -12
- package/src/consts.local.ts +3 -0
- package/src/consts.ts +2 -0
- package/src/helper.ts +4 -8
- package/src/status.ts +2 -4
- package/src/utils/connection.ts +7 -44
- package/src/utils/consts.local.ts +5 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/types.ts +33 -0
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ React hook and factory for WebSocket connections via OwlMeans entrypoint routing
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
bun add @owlmeans/client-socket@^0.1.18-rc.
|
|
15
|
+
bun add @owlmeans/client-socket@^0.1.18-rc.48
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## Usage
|
|
@@ -75,7 +75,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
75
75
|
your project's skill store (`.agents/skills/`):
|
|
76
76
|
|
|
77
77
|
```sh
|
|
78
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
78
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.48
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
The embedded files are version-matched to this package release. Do not edit them
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/client-socket",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"version": "0.1.18-rc.48",
|
|
5
|
+
"generatedAt": "2026-10-05T08:32:19.104Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/client-socket
|
|
9
9
|
|
|
10
10
|
**Layer:** Client
|
|
11
|
-
**Install:** `"@owlmeans/client-socket": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/client-socket": "^0.1.18-rc.48"` in `dependencies`
|
|
12
12
|
|
|
13
13
|
The browser carrier for `@owlmeans/socket`. It supplies the four members the connection model
|
|
14
14
|
leaves abstract — `send`, `close`, `prepare`, `authenticate` — and hands back a plain `Connection`,
|
package/build/consts.d.ts
CHANGED
|
@@ -4,4 +4,5 @@ import type { ReconnectPolicy } from './types.js';
|
|
|
4
4
|
* reports the connection lost. See the client-socket skill's "Disconnects" section.
|
|
5
5
|
*/
|
|
6
6
|
export declare const DEFAULT_RECONNECT_POLICY: ReconnectPolicy;
|
|
7
|
+
export declare const SOCKET_STATUS = "socket-status";
|
|
7
8
|
//# sourceMappingURL=consts.d.ts.map
|
package/build/consts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAUtC,CAAA"}
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAUtC,CAAA;AAED,eAAO,MAAM,aAAa,kBAAkB,CAAA"}
|
package/build/consts.js
CHANGED
package/build/consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,OAAO;IACf,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,MAAM;CACpB,CAAA"}
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,OAAO;IACf,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,MAAM;CACpB,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.local.d.ts","sourceRoot":"","sources":["../src/consts.local.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAA2C,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.local.js","sourceRoot":"","sources":["../src/consts.local.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAA0C,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA"}
|
package/build/helper.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ClientEntrypoint } from '@owlmeans/client-entrypoint';
|
|
2
2
|
import type { AbstractRequest } from '@owlmeans/entrypoint';
|
|
3
|
-
import type
|
|
4
|
-
import type
|
|
3
|
+
import { type Connection } from '@owlmeans/socket';
|
|
4
|
+
import { type EntrypointReference } from '@owlmeans/context';
|
|
5
5
|
import type { Context, ConnectOptions, WsOptions } from './types.js';
|
|
6
6
|
/**
|
|
7
7
|
* Open a socket with no declared entrypoint behind it — the primitive `ws()` builds on, and what
|
package/build/helper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAkB,MAAM,6BAA6B,CAAA;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,KAAK,UAAU,EAAyB,MAAM,kBAAkB,CAAA;AAEzE,OAAO,EAAiB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,KAAK,EAAU,OAAO,EAAE,cAAc,EAA8C,SAAS,EAAE,MAAM,YAAY,CAAA;AA4ExH;;;GAGG;AACH,eAAO,MAAM,OAAO,YACT,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,OAAO,OAAO,YAAY,cAAc,KAC9E,OAAO,CAAC,UAAU,CAGpB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,EAAE,WACL,gBAAgB,CAAC,MAAM,CAAC,YAAY,eAAe,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,YAAY,SAAS,KACnG,OAAO,CAAC,UAAU,CAUpB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,KAAK,WACR,mBAAmB,GAAG,MAAM,YAAY,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,YAAY,SAAS,KACjG,UAAU,GAAG,IAiDf,CAAA"}
|
package/build/helper.js
CHANGED
|
@@ -7,8 +7,7 @@ import { AUTH_QUERY } from '@owlmeans/auth';
|
|
|
7
7
|
import { entrypointUrl } from '@owlmeans/client-entrypoint/utils';
|
|
8
8
|
import { useEffect, useMemo, useState } from 'react';
|
|
9
9
|
import { createIdOfLength } from '@owlmeans/basic-ids';
|
|
10
|
-
import { DEFAULT_RECONNECT_POLICY } from './consts.js';
|
|
11
|
-
import { SOCKET_STATUS } from './status.js';
|
|
10
|
+
import { DEFAULT_RECONNECT_POLICY, SOCKET_STATUS } from './consts.js';
|
|
12
11
|
const resolvePolicy = (ctx, options) => {
|
|
13
12
|
const requested = options?.reconnect !== undefined ? options.reconnect : ctx.cfg.socket?.reconnect;
|
|
14
13
|
const retry = requested !== false;
|
package/build/helper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"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"}
|
package/build/status.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { Config, Context, SocketConnectionState, SocketStatusService, SocketStatusServiceAppend } from './types.js';
|
|
2
|
-
export declare const SOCKET_STATUS = "socket-status";
|
|
3
2
|
/**
|
|
4
3
|
* Aggregates the coarse health of every `ws()`/`useWs()` connection an app has open into one
|
|
5
4
|
* worst-of-all state. A page with several sockets (thinking stream, file watch, notifications…)
|
package/build/status.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,yBAAyB,EACvF,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,yBAAyB,EACvF,MAAM,YAAY,CAAA;AAInB;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,WAAW,MAAM,KAAmB,mBA6DzE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,OACxF,CAAC,UAAS,MAAM,KACpB,CAAC,GAAG,yBAON,CAAA;AAgCD;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAO,qBAWlC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAAO;IAAE,KAAK,EAAE,MAAM,IAAI,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAcvE,CAAA"}
|
package/build/status.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createService } from '@owlmeans/context';
|
|
2
2
|
import { useContext } from '@owlmeans/client';
|
|
3
3
|
import { useCallback, useEffect, useState } from 'react';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { RANK } from './consts.local.js';
|
|
5
|
+
import { SOCKET_STATUS } from './consts.js';
|
|
6
6
|
/**
|
|
7
7
|
* Aggregates the coarse health of every `ws()`/`useWs()` connection an app has open into one
|
|
8
8
|
* worst-of-all state. A page with several sockets (thinking stream, file watch, notifications…)
|
package/build/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { ReconnectPolicy, SocketConnectionState } from '../types.js';
|
|
3
|
-
export interface ConnectionOpener {
|
|
4
|
-
(): Promise<WebSocket>;
|
|
5
|
-
}
|
|
6
|
-
export interface ManagedConnectionOptions {
|
|
7
|
-
policy: ReconnectPolicy;
|
|
8
|
-
/** Whether a drop schedules a retry at all. `false` keeps the pre-reconnect-support
|
|
9
|
-
* behaviour — one attempt, report and stop — while the heartbeat/liveness check below still
|
|
10
|
-
* runs exactly as it always did. */
|
|
11
|
-
retry: boolean;
|
|
12
|
-
/** Opens a fresh socket for the first attempt and every retry — already reflecting whatever a
|
|
13
|
-
* caller's `beforeConnect` refreshed (a token, most often). Resolves once the socket is OPEN,
|
|
14
|
-
* rejects on a handshake failure. */
|
|
15
|
-
open: ConnectionOpener;
|
|
16
|
-
/** Told this connection's coarse health, if a caller wants to aggregate it — the status
|
|
17
|
-
* service `@owlmeans/web-panel`'s reload dialog reads. */
|
|
18
|
-
onStatus?: (state: SocketConnectionState) => void;
|
|
19
|
-
}
|
|
20
|
-
export interface ManagedConnection {
|
|
21
|
-
connection: Connection;
|
|
22
|
-
/** Settles once the first socket opens; rejects with `SocketConnectionError('lost')` once the
|
|
23
|
-
* retry budget elapses first (or the single attempt fails, with `retry: false`). */
|
|
24
|
-
ready: Promise<void>;
|
|
25
|
-
/** Restart retrying a connection that gave up after its budget: one attempt at once, then the
|
|
26
|
-
* usual backoff within `policy.reviveBudget`. On a connection still waiting out a backoff
|
|
27
|
-
* delay: attempt at once, and leave it at least `reviveBudget`. A no-op otherwise — a terminal
|
|
28
|
-
* close (client close, 1000/1008, `retry: false`) is never revived. */
|
|
29
|
-
revive: () => void;
|
|
30
|
-
}
|
|
1
|
+
import type { ManagedConnection, ManagedConnectionOptions } from './types.js';
|
|
31
2
|
/**
|
|
32
3
|
* Build a `Connection` whose transport survives a dropped WebSocket.
|
|
33
4
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/utils/connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/utils/connection.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAI7E;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,SAAU,wBAAwB,KAAG,iBAqQ/D,CAAA"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { createBasicConnection, MessageType, SocketConnectionError, SocketSystemEvent, SOCKET_HEARTBEAT_TIMEOUT_CODE } from '@owlmeans/socket';
|
|
2
2
|
import { AuthenticationStage } from '@owlmeans/auth';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* close is handled separately, through `closedByClient`. */
|
|
7
|
-
const TERMINAL_CLOSE_CODES = new Set([1000, 1008]);
|
|
3
|
+
import { logger } from '@owlmeans/log';
|
|
4
|
+
import { TERMINAL_CLOSE_CODES } from './consts.local.js';
|
|
5
|
+
const log = logger('client-socket');
|
|
8
6
|
/**
|
|
9
7
|
* Build a `Connection` whose transport survives a dropped WebSocket.
|
|
10
8
|
*
|
|
@@ -52,7 +50,7 @@ export const makeConnection = (opts) => {
|
|
|
52
50
|
await listener(msg);
|
|
53
51
|
}
|
|
54
52
|
catch (error) {
|
|
55
|
-
|
|
53
|
+
log.error('Socket system listener failed', { error });
|
|
56
54
|
}
|
|
57
55
|
}));
|
|
58
56
|
};
|
|
@@ -199,7 +197,7 @@ export const makeConnection = (opts) => {
|
|
|
199
197
|
};
|
|
200
198
|
const messageHandler = (event) => {
|
|
201
199
|
void receiveMessage(event).catch(error => {
|
|
202
|
-
|
|
200
|
+
log.warn('WebSocket message rejected', { error });
|
|
203
201
|
socket.close(1008);
|
|
204
202
|
});
|
|
205
203
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/utils/connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/utils/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Close codes that mean "this connection is finished on purpose" — never worth retrying: a
|
|
2
|
+
* normal closure the SERVER initiated (1000, e.g. the protocol's own one-shot completion) and a
|
|
3
|
+
* policy violation (1008, e.g. the guard rejected the frame that opened it). A client-initiated
|
|
4
|
+
* close is handled separately, through `closedByClient`. */
|
|
5
|
+
export declare const TERMINAL_CLOSE_CODES: ReadonlySet<number>;
|
|
6
|
+
//# sourceMappingURL=consts.local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.local.d.ts","sourceRoot":"","sources":["../../src/utils/consts.local.ts"],"names":[],"mappings":"AAAA;;;6DAG6D;AAC7D,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAyB,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Close codes that mean "this connection is finished on purpose" — never worth retrying: a
|
|
2
|
+
* normal closure the SERVER initiated (1000, e.g. the protocol's own one-shot completion) and a
|
|
3
|
+
* policy violation (1008, e.g. the guard rejected the frame that opened it). A client-initiated
|
|
4
|
+
* close is handled separately, through `closedByClient`. */
|
|
5
|
+
export const TERMINAL_CLOSE_CODES = new Set([1000, 1008]);
|
|
6
|
+
//# sourceMappingURL=consts.local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.local.js","sourceRoot":"","sources":["../../src/utils/consts.local.ts"],"names":[],"mappings":"AAAA;;;6DAG6D;AAC7D,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA"}
|
package/build/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAA;AAC/B,mBAAmB,YAAY,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ReconnectPolicy, SocketConnectionState } from '../types.js';
|
|
2
|
+
import type { Connection } from '@owlmeans/socket';
|
|
3
|
+
export interface ConnectionOpener {
|
|
4
|
+
(): Promise<WebSocket>;
|
|
5
|
+
}
|
|
6
|
+
export interface ManagedConnectionOptions {
|
|
7
|
+
policy: ReconnectPolicy;
|
|
8
|
+
/** Whether a drop schedules a retry at all. `false` keeps the pre-reconnect-support
|
|
9
|
+
* behaviour — one attempt, report and stop — while the heartbeat/liveness check below still
|
|
10
|
+
* runs exactly as it always did. */
|
|
11
|
+
retry: boolean;
|
|
12
|
+
/** Opens a fresh socket for the first attempt and every retry — already reflecting whatever a
|
|
13
|
+
* caller's `beforeConnect` refreshed (a token, most often). Resolves once the socket is OPEN,
|
|
14
|
+
* rejects on a handshake failure. */
|
|
15
|
+
open: ConnectionOpener;
|
|
16
|
+
/** Told this connection's coarse health, if a caller wants to aggregate it — the status
|
|
17
|
+
* service `@owlmeans/web-panel`'s reload dialog reads. */
|
|
18
|
+
onStatus?: (state: SocketConnectionState) => void;
|
|
19
|
+
}
|
|
20
|
+
export interface ManagedConnection {
|
|
21
|
+
connection: Connection;
|
|
22
|
+
/** Settles once the first socket opens; rejects with `SocketConnectionError('lost')` once the
|
|
23
|
+
* retry budget elapses first (or the single attempt fails, with `retry: false`). */
|
|
24
|
+
ready: Promise<void>;
|
|
25
|
+
/** Restart retrying a connection that gave up after its budget: one attempt at once, then the
|
|
26
|
+
* usual backoff within `policy.reviveBudget`. On a connection still waiting out a backoff
|
|
27
|
+
* delay: attempt at once, and leave it at least `reviveBudget`. A no-op otherwise — a terminal
|
|
28
|
+
* close (client close, 1000/1008, `retry: false`) is never revived. */
|
|
29
|
+
revive: () => void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,OAAO,CAAC,SAAS,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,eAAe,CAAA;IACvB;;yCAEqC;IACrC,KAAK,EAAE,OAAO,CAAA;IACd;;0CAEsC;IACtC,IAAI,EAAE,gBAAgB,CAAA;IACtB;+DAC2D;IAC3D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAA;CAClD;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAA;IACtB;yFACqF;IACrF,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACpB;;;4EAGwE;IACxE,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/client-socket",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.48",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -26,21 +26,22 @@
|
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@owlmeans/dep-config": "workspace:*",
|
|
29
|
-
"@types/bun": "^1.4.
|
|
30
|
-
"@types/react": "^19.
|
|
29
|
+
"@types/bun": "^1.4.2",
|
|
30
|
+
"@types/react": "^19.3.0",
|
|
31
31
|
"nodemon": "^3.1.14",
|
|
32
32
|
"typescript": "^7.0.2"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@owlmeans/auth": "^0.1.18-rc.
|
|
36
|
-
"@owlmeans/basic-envelope": "^0.1.18-rc.
|
|
37
|
-
"@owlmeans/basic-ids": "^0.1.18-rc.
|
|
38
|
-
"@owlmeans/client": "^0.1.18-rc.
|
|
39
|
-
"@owlmeans/client-context": "^0.1.18-rc.
|
|
40
|
-
"@owlmeans/client-entrypoint": "^0.1.18-rc.
|
|
41
|
-
"@owlmeans/context": "^0.1.18-rc.
|
|
42
|
-
"@owlmeans/entrypoint": "^0.1.18-rc.
|
|
43
|
-
"@owlmeans/
|
|
35
|
+
"@owlmeans/auth": "^0.1.18-rc.39",
|
|
36
|
+
"@owlmeans/basic-envelope": "^0.1.18-rc.45",
|
|
37
|
+
"@owlmeans/basic-ids": "^0.1.18-rc.36",
|
|
38
|
+
"@owlmeans/client": "^0.1.18-rc.50",
|
|
39
|
+
"@owlmeans/client-context": "^0.1.18-rc.47",
|
|
40
|
+
"@owlmeans/client-entrypoint": "^0.1.18-rc.46",
|
|
41
|
+
"@owlmeans/context": "^0.1.18-rc.33",
|
|
42
|
+
"@owlmeans/entrypoint": "^0.1.18-rc.40",
|
|
43
|
+
"@owlmeans/log": "^0.1.18-rc.1",
|
|
44
|
+
"@owlmeans/socket": "^0.1.18-rc.39"
|
|
44
45
|
},
|
|
45
46
|
"publishConfig": {
|
|
46
47
|
"access": "public"
|
package/src/consts.ts
CHANGED
package/src/helper.ts
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ClientEntrypoint, provideRequest } from '@owlmeans/client-entrypoint'
|
|
2
2
|
import type { AbstractRequest } from '@owlmeans/entrypoint'
|
|
3
|
-
import {
|
|
4
|
-
import type { Connection } from '@owlmeans/socket'
|
|
5
|
-
import { SocketConnectionError } from '@owlmeans/socket'
|
|
3
|
+
import { type Connection, SocketConnectionError } from '@owlmeans/socket'
|
|
6
4
|
import { makeConnection } from './utils/connection.js'
|
|
7
|
-
import { assertContext } from '@owlmeans/context'
|
|
8
|
-
import type { EntrypointReference } from '@owlmeans/context'
|
|
5
|
+
import { assertContext, type EntrypointReference } from '@owlmeans/context'
|
|
9
6
|
import type { Config, Context, ConnectOptions, ReconnectPolicy, SocketStatusServiceAppend, WsOptions } from './types.js'
|
|
10
7
|
import { useContext, useValue } from '@owlmeans/client'
|
|
11
8
|
import { AUTH_QUERY } from '@owlmeans/auth'
|
|
12
9
|
import { entrypointUrl } from '@owlmeans/client-entrypoint/utils'
|
|
13
10
|
import { useEffect, useMemo, useState } from 'react'
|
|
14
11
|
import { createIdOfLength } from '@owlmeans/basic-ids'
|
|
15
|
-
import { DEFAULT_RECONNECT_POLICY } from './consts.js'
|
|
16
|
-
import { SOCKET_STATUS } from './status.js'
|
|
12
|
+
import { DEFAULT_RECONNECT_POLICY, SOCKET_STATUS } from './consts.js'
|
|
17
13
|
|
|
18
14
|
const resolvePolicy = (
|
|
19
15
|
ctx: Context, options?: ConnectOptions
|
package/src/status.ts
CHANGED
|
@@ -4,10 +4,8 @@ import { useCallback, useEffect, useState } from 'react'
|
|
|
4
4
|
import type {
|
|
5
5
|
Config, Context, SocketConnectionState, SocketStatusService, SocketStatusServiceAppend
|
|
6
6
|
} from './types.js'
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const RANK: Record<SocketConnectionState, number> = { online: 0, reconnecting: 1, lost: 2 }
|
|
7
|
+
import { RANK } from './consts.local.js'
|
|
8
|
+
import { SOCKET_STATUS } from './consts.js'
|
|
11
9
|
|
|
12
10
|
/**
|
|
13
11
|
* Aggregates the coarse health of every `ws()`/`useWs()` connection an app has open into one
|
package/src/utils/connection.ts
CHANGED
|
@@ -1,47 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
createBasicConnection, MessageType, SocketConnectionError, SocketSystemEvent,
|
|
4
|
-
SOCKET_HEARTBEAT_TIMEOUT_CODE
|
|
5
|
-
} from '@owlmeans/socket'
|
|
1
|
+
import { type EventMessage as EMessage, createBasicConnection, MessageType, SocketConnectionError, SocketSystemEvent, SOCKET_HEARTBEAT_TIMEOUT_CODE } from '@owlmeans/socket'
|
|
6
2
|
import { AuthenticationStage } from '@owlmeans/auth'
|
|
7
|
-
import
|
|
3
|
+
import { logger } from '@owlmeans/log'
|
|
4
|
+
import { TERMINAL_CLOSE_CODES } from './consts.local.js'
|
|
5
|
+
import type { ManagedConnection, ManagedConnectionOptions } from './types.js'
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
* normal closure the SERVER initiated (1000, e.g. the protocol's own one-shot completion) and a
|
|
11
|
-
* policy violation (1008, e.g. the guard rejected the frame that opened it). A client-initiated
|
|
12
|
-
* close is handled separately, through `closedByClient`. */
|
|
13
|
-
const TERMINAL_CLOSE_CODES: ReadonlySet<number> = new Set([1000, 1008])
|
|
14
|
-
|
|
15
|
-
export interface ConnectionOpener {
|
|
16
|
-
(): Promise<WebSocket>
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface ManagedConnectionOptions {
|
|
20
|
-
policy: ReconnectPolicy
|
|
21
|
-
/** Whether a drop schedules a retry at all. `false` keeps the pre-reconnect-support
|
|
22
|
-
* behaviour — one attempt, report and stop — while the heartbeat/liveness check below still
|
|
23
|
-
* runs exactly as it always did. */
|
|
24
|
-
retry: boolean
|
|
25
|
-
/** Opens a fresh socket for the first attempt and every retry — already reflecting whatever a
|
|
26
|
-
* caller's `beforeConnect` refreshed (a token, most often). Resolves once the socket is OPEN,
|
|
27
|
-
* rejects on a handshake failure. */
|
|
28
|
-
open: ConnectionOpener
|
|
29
|
-
/** Told this connection's coarse health, if a caller wants to aggregate it — the status
|
|
30
|
-
* service `@owlmeans/web-panel`'s reload dialog reads. */
|
|
31
|
-
onStatus?: (state: SocketConnectionState) => void
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export interface ManagedConnection {
|
|
35
|
-
connection: Connection
|
|
36
|
-
/** Settles once the first socket opens; rejects with `SocketConnectionError('lost')` once the
|
|
37
|
-
* retry budget elapses first (or the single attempt fails, with `retry: false`). */
|
|
38
|
-
ready: Promise<void>
|
|
39
|
-
/** Restart retrying a connection that gave up after its budget: one attempt at once, then the
|
|
40
|
-
* usual backoff within `policy.reviveBudget`. On a connection still waiting out a backoff
|
|
41
|
-
* delay: attempt at once, and leave it at least `reviveBudget`. A no-op otherwise — a terminal
|
|
42
|
-
* close (client close, 1000/1008, `retry: false`) is never revived. */
|
|
43
|
-
revive: () => void
|
|
44
|
-
}
|
|
7
|
+
const log = logger('client-socket')
|
|
45
8
|
|
|
46
9
|
/**
|
|
47
10
|
* Build a `Connection` whose transport survives a dropped WebSocket.
|
|
@@ -90,7 +53,7 @@ export const makeConnection = (opts: ManagedConnectionOptions): ManagedConnectio
|
|
|
90
53
|
try {
|
|
91
54
|
await listener(msg)
|
|
92
55
|
} catch (error) {
|
|
93
|
-
|
|
56
|
+
log.error('Socket system listener failed', { error })
|
|
94
57
|
}
|
|
95
58
|
}))
|
|
96
59
|
}
|
|
@@ -227,7 +190,7 @@ export const makeConnection = (opts: ManagedConnectionOptions): ManagedConnectio
|
|
|
227
190
|
}
|
|
228
191
|
const messageHandler = (event: MessageEvent) => {
|
|
229
192
|
void receiveMessage(event).catch(error => {
|
|
230
|
-
|
|
193
|
+
log.warn('WebSocket message rejected', { error })
|
|
231
194
|
socket.close(1008)
|
|
232
195
|
})
|
|
233
196
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Close codes that mean "this connection is finished on purpose" — never worth retrying: a
|
|
2
|
+
* normal closure the SERVER initiated (1000, e.g. the protocol's own one-shot completion) and a
|
|
3
|
+
* policy violation (1008, e.g. the guard rejected the frame that opened it). A client-initiated
|
|
4
|
+
* close is handled separately, through `closedByClient`. */
|
|
5
|
+
export const TERMINAL_CLOSE_CODES: ReadonlySet<number> = new Set([1000, 1008])
|
package/src/utils/index.ts
CHANGED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ReconnectPolicy, SocketConnectionState } from '../types.js'
|
|
2
|
+
import type { Connection } from '@owlmeans/socket'
|
|
3
|
+
|
|
4
|
+
export interface ConnectionOpener {
|
|
5
|
+
(): Promise<WebSocket>
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface ManagedConnectionOptions {
|
|
9
|
+
policy: ReconnectPolicy
|
|
10
|
+
/** Whether a drop schedules a retry at all. `false` keeps the pre-reconnect-support
|
|
11
|
+
* behaviour — one attempt, report and stop — while the heartbeat/liveness check below still
|
|
12
|
+
* runs exactly as it always did. */
|
|
13
|
+
retry: boolean
|
|
14
|
+
/** Opens a fresh socket for the first attempt and every retry — already reflecting whatever a
|
|
15
|
+
* caller's `beforeConnect` refreshed (a token, most often). Resolves once the socket is OPEN,
|
|
16
|
+
* rejects on a handshake failure. */
|
|
17
|
+
open: ConnectionOpener
|
|
18
|
+
/** Told this connection's coarse health, if a caller wants to aggregate it — the status
|
|
19
|
+
* service `@owlmeans/web-panel`'s reload dialog reads. */
|
|
20
|
+
onStatus?: (state: SocketConnectionState) => void
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface ManagedConnection {
|
|
24
|
+
connection: Connection
|
|
25
|
+
/** Settles once the first socket opens; rejects with `SocketConnectionError('lost')` once the
|
|
26
|
+
* retry budget elapses first (or the single attempt fails, with `retry: false`). */
|
|
27
|
+
ready: Promise<void>
|
|
28
|
+
/** Restart retrying a connection that gave up after its budget: one attempt at once, then the
|
|
29
|
+
* usual backoff within `policy.reviveBudget`. On a connection still waiting out a backoff
|
|
30
|
+
* delay: attempt at once, and leave it at least `reviveBudget`. A no-op otherwise — a terminal
|
|
31
|
+
* close (client close, 1000/1008, `retry: false`) is never revived. */
|
|
32
|
+
revive: () => void
|
|
33
|
+
}
|