@chronista-club/unison-client 1.1.0 → 1.2.0
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 +1 -1
- package/dist/channel/auth.d.ts +53 -0
- package/dist/channel/auth.d.ts.map +1 -0
- package/dist/client.d.ts +20 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +310 -255
- package/dist/index.js.map +1 -1
- package/dist/transport/web_transport.d.ts +9 -1
- package/dist/transport/web_transport.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> TypeScript client SDK for the [Unison protocol](https://github.com/chronista-club/club-unison).
|
|
4
4
|
> Part of the **v1.0 polyglot client base** (= server stays Rust, client polyglot for adoption surface).
|
|
5
5
|
|
|
6
|
-
**Status**: `1.1.
|
|
6
|
+
**Status**: `1.1.1` — v1.0 GA + `/testing` subpath. Protocol API is frozen and the SDK is shipped to npm. It talks to the Rust server over **real WebTransport** (verified by `tests/integration/webtransport_e2e.test.ts`). See [design/typescript-client-api.md](../../design/typescript-client-api.md) for the SDK design contract.
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection-level auth (= v1.4.0)。
|
|
3
|
+
*
|
|
4
|
+
* Rust `enable_auth` / `connect_with_credential` の TS 対応。auth は専用 transport を
|
|
5
|
+
* 要求せず、 reserved `unison.auth` channel を open して `Authenticate` request を 1 回
|
|
6
|
+
* 送るだけ (= stream channel + request を持てば認証できる)。
|
|
7
|
+
*
|
|
8
|
+
* wire 不変条件・各言語 API の SSOT は `design/connection-auth.md` §5.8。
|
|
9
|
+
*/
|
|
10
|
+
/** reserved auth channel 名 (= Rust `network::auth::AUTH_CHANNEL_NAME`) */
|
|
11
|
+
export declare const AUTH_CHANNEL_NAME = "unison.auth";
|
|
12
|
+
/** credential 提示 method (= Rust `network::auth::AUTHENTICATE_METHOD`) */
|
|
13
|
+
export declare const AUTHENTICATE_METHOD = "Authenticate";
|
|
14
|
+
/** `unison.auth` の reserved channel meta (= codegen 不要、 SDK 内蔵) */
|
|
15
|
+
export declare const AUTH_CHANNEL_META: {
|
|
16
|
+
readonly name: "unison.auth";
|
|
17
|
+
readonly backend: "stream";
|
|
18
|
+
readonly from: "client";
|
|
19
|
+
readonly lifetime: "persistent";
|
|
20
|
+
readonly events: readonly [];
|
|
21
|
+
readonly requests: {
|
|
22
|
+
readonly Authenticate: {
|
|
23
|
+
readonly request: "AuthenticateRequest";
|
|
24
|
+
readonly response: "AuthResult";
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* `Authenticate` request payload (= wire: `{ credential: number[] }`)。
|
|
30
|
+
*
|
|
31
|
+
* `interface` ではなく `type` (= 暗黙 index signature を持ち `ChannelPayload`
|
|
32
|
+
* = `Record<string, unknown>` に代入可能にするため)。
|
|
33
|
+
*/
|
|
34
|
+
export type AuthenticateRequest = {
|
|
35
|
+
/**
|
|
36
|
+
* opaque credential。u8 の **数値配列** (各要素 0–255)。
|
|
37
|
+
* library は中身を解釈しない (例 Creo ID JWT / API キー / 独自トークン)。
|
|
38
|
+
*/
|
|
39
|
+
credential: number[];
|
|
40
|
+
};
|
|
41
|
+
/** `AuthResult` response payload */
|
|
42
|
+
export type AuthResult = {
|
|
43
|
+
ok: boolean;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* credential bytes を wire 互換の request payload に変換する。
|
|
47
|
+
*
|
|
48
|
+
* ⚠️ `Uint8Array` を直接 JSON 化すると `{"0":104,...}` object になり、 Rust 側
|
|
49
|
+
* `Vec<u8>` (= serde_json の数値配列 `[104,...]`) と **非互換**。必ず `Array.from`
|
|
50
|
+
* で `number[]` に変換すること。本関数がその規約を強制する単一の入口。
|
|
51
|
+
*/
|
|
52
|
+
export declare function toAuthenticateRequest(credential: Uint8Array): AuthenticateRequest;
|
|
53
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/channel/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,mEAAmE;AACnE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;CAYE,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,oCAAoC;AACpC,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,OAAO,CAAC;CACb,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,mBAAmB,CAEjF"}
|
package/dist/client.d.ts
CHANGED
|
@@ -28,6 +28,13 @@ export interface UnisonConnectOptions extends ConnectOptions {
|
|
|
28
28
|
awaitIdentity?: boolean;
|
|
29
29
|
/** identity handshake の timeout ms (= default: 5000) */
|
|
30
30
|
identityTimeoutMs?: number;
|
|
31
|
+
/**
|
|
32
|
+
* 接続直後に 1 回提示する credential (= connection-level auth、 v1.4.0)。指定すると
|
|
33
|
+
* identity handshake 後に `unison.auth` で Authenticate し、 拒否 (ok=false) なら
|
|
34
|
+
* connect が throw する。server が `enable_auth` 未設定なら open が reject される。
|
|
35
|
+
* 設計: `design/connection-auth.md` §5.8。
|
|
36
|
+
*/
|
|
37
|
+
credential?: Uint8Array;
|
|
31
38
|
}
|
|
32
39
|
/**
|
|
33
40
|
* 確立済み connection を束ねる SDK facade。 `connect()` で生成する
|
|
@@ -56,6 +63,19 @@ export declare class UnisonClient {
|
|
|
56
63
|
openChannel<M extends ChannelMeta>(meta: M, openTimeoutMs?: number): Promise<UnisonChannel<M>>;
|
|
57
64
|
/** Datagram channel を開設 (= 共有 datagram path、 broadcast event のみ) */
|
|
58
65
|
openDatagramChannel<M extends DatagramChannelMeta>(meta: M): DatagramChannel<M>;
|
|
66
|
+
/**
|
|
67
|
+
* credential を提示して connection を認証する (= connection-level authN、 v1.4.0)。
|
|
68
|
+
*
|
|
69
|
+
* `unison.auth` channel を open して `Authenticate` request を 1 回送り、 server の
|
|
70
|
+
* verifier 結果を待つ。`ok=false` (= 拒否) なら throw。認証成功後は server 側が
|
|
71
|
+
* この connection の principal を立てるので、 以降 open する channel は per-message
|
|
72
|
+
* gate を通過できる。**他 channel を open する前に呼ぶこと** (= 未認証だと principal
|
|
73
|
+
* None で app handler に gate される)。
|
|
74
|
+
*
|
|
75
|
+
* server が `enable_auth` 未設定なら `unison.auth` が未登録で open が reject される。
|
|
76
|
+
* `connect({ credential })` は内部でこれを呼ぶ。設計: `design/connection-auth.md` §5.8。
|
|
77
|
+
*/
|
|
78
|
+
authenticate(credential: Uint8Array): Promise<void>;
|
|
59
79
|
/** Connection を閉じる (= dispatcher 停止 + 配下 channel を tear down) */
|
|
60
80
|
disconnect(reason?: string): Promise<void>;
|
|
61
81
|
}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAS9C,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAK5B,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGlF,yDAAyD;AACzD,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,sEAAsE;IACtE,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wDAAwD;IACxD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;GAGG;AACH,qBAAa,YAAY;;IAOvB,kCAAkC;gBAEhC,UAAU,EAAE,UAAU,EACtB,KAAK,GAAE,KAAK,CAAC,cAAc,CAAgB,EAC3C,QAAQ,CAAC,EAAE,cAAc;IAQ3B;;;;;OAKG;IACH,cAAc,IAAI,cAAc,GAAG,SAAS;IAI5C,0EAA0E;IAC1E,MAAM;IAIN;;;;;;OAMG;IACG,WAAW,CAAC,CAAC,SAAS,WAAW,EACrC,IAAI,EAAE,CAAC,EACP,aAAa,GAAE,MAAgC,GAC9C,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAa5B,oEAAoE;IACpE,mBAAmB,CAAC,CAAC,SAAS,mBAAmB,EAAE,IAAI,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAK/E;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBzD,iEAAiE;IAC3D,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMjD;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CAgC/E"}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export type { ChannelMeta, ChannelPayload, ChannelTypeMap, DatagramChannel, Data
|
|
|
18
18
|
export { UnisonChannelImpl } from "./channel/unison_channel.js";
|
|
19
19
|
export { DatagramChannelImpl } from "./channel/datagram_channel.js";
|
|
20
20
|
export { DatagramDispatcher, DispatcherInner } from "./channel/dispatcher.js";
|
|
21
|
+
export { AUTH_CHANNEL_META, AUTH_CHANNEL_NAME, AUTHENTICATE_METHOD, toAuthenticateRequest, } from "./channel/auth.js";
|
|
22
|
+
export type { AuthResult, AuthenticateRequest } from "./channel/auth.js";
|
|
21
23
|
export { FRAME_TYPE_PROTOCOL, FRAME_TYPE_RAW, decodeTypedFrame, encodeProtocolFrame, encodeRawFrame, readFrames, } from "./channel/frame.js";
|
|
22
24
|
export type { DecodedFrame } from "./channel/frame.js";
|
|
23
25
|
export { AsyncQueue } from "./channel/async_queue.js";
|
|
@@ -36,5 +38,5 @@ export { JsonCodec } from "./codec/json_codec.js";
|
|
|
36
38
|
export { ProtoCodec } from "./codec/proto_codec.js";
|
|
37
39
|
export type { UnisonConnectOptions } from "./client.js";
|
|
38
40
|
export { UnisonClient, connect } from "./client.js";
|
|
39
|
-
export declare const VERSION = "1.
|
|
41
|
+
export declare const VERSION = "1.2.0";
|
|
40
42
|
//# 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;;;;;;;;;;GAUG;AAGH,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,YAAY,EACX,UAAU,EACV,UAAU,EACV,eAAe,EACf,cAAc,EACd,SAAS,EACT,SAAS,GACT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,oBAAoB,EACpB,4BAA4B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EAGtB,OAAO,IAAI,gBAAgB,GAC3B,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EACX,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,aAAa,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG9E,OAAO,EACN,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,UAAU,GACV,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACN,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,GACf,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACN,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,GAChB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACX,eAAe,EACf,eAAe,GACf,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACN,2BAA2B,EAC3B,wBAAwB,EACxB,YAAY,GACZ,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,cAAc,GACd,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGpD,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,YAAY,EACX,UAAU,EACV,UAAU,EACV,eAAe,EACf,cAAc,EACd,SAAS,EACT,SAAS,GACT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,oBAAoB,EACpB,4BAA4B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EAGtB,OAAO,IAAI,gBAAgB,GAC3B,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EACX,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,aAAa,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG9E,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGzE,OAAO,EACN,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,UAAU,GACV,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACN,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,GACf,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACN,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,GAChB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACX,eAAe,EACf,eAAe,GACf,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACN,2BAA2B,EAC3B,wBAAwB,EACxB,YAAY,GACZ,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,cAAc,GACd,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGpD,eAAO,MAAM,OAAO,UAAU,CAAC"}
|