yrb-lite-client 0.1.0 → 0.1.1
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 +12 -12
- package/dist/actioncable_provider.d.ts +3 -3
- package/dist/actioncable_provider.d.ts.map +1 -1
- package/dist/actioncable_provider.js +12 -12
- package/dist/actioncable_provider.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/{sync_engine.d.ts → y_protocol_session.d.ts} +4 -4
- package/dist/y_protocol_session.d.ts.map +1 -0
- package/dist/{sync_engine.js → y_protocol_session.js} +7 -6
- package/dist/y_protocol_session.js.map +1 -0
- package/package.json +4 -3
- package/dist/sync_engine.d.ts.map +0 -1
- package/dist/sync_engine.js.map +0 -1
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Three layers, use whichever you need:
|
|
|
14
14
|
round-trip), and falls back to a normal server-relayed send on plain
|
|
15
15
|
ActionCable — nothing to configure. Document updates always go through the
|
|
16
16
|
server (recorded/acked).
|
|
17
|
-
- **`
|
|
17
|
+
- **`YProtocolSession`** — the transport-agnostic core. Binds to a `Y.Doc` (+ optional
|
|
18
18
|
`Awareness`) and owns the y-protocols **message encode/decode**, the
|
|
19
19
|
**sync-step handshake** (SyncStep1 / SyncStep2 / Update), **awareness**, and
|
|
20
20
|
reliable delivery. Speaks raw `Uint8Array` frames; you wire any socket.
|
|
@@ -30,7 +30,7 @@ Three layers, use whichever you need:
|
|
|
30
30
|
npm install yrb-lite-client
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
`ActionCableProvider` and `
|
|
33
|
+
`ActionCableProvider` and `YProtocolSession` need `yjs` and `y-protocols` (peers — your
|
|
34
34
|
app already has them), plus an ActionCable/AnyCable consumer. `ReliableSync` has
|
|
35
35
|
**no dependencies**; import it on its own via `yrb-lite-client/reliable` if
|
|
36
36
|
that's all you want.
|
|
@@ -60,20 +60,20 @@ provider.connect(); // does not auto-connect — wire your editor binding first
|
|
|
60
60
|
On the server, include `YrbLite::ActionCable::Sync` in a channel named
|
|
61
61
|
`DocumentChannel` (the [`yrb-lite-actioncable`](https://rubygems.org/gems/yrb-lite-actioncable)
|
|
62
62
|
gem), which enables AnyCable whispering on the stream automatically. Need a
|
|
63
|
-
different transport or framing? Drop down to `
|
|
63
|
+
different transport or framing? Drop down to `YProtocolSession` and supply your own
|
|
64
64
|
`send`.
|
|
65
65
|
|
|
66
|
-
##
|
|
66
|
+
## YProtocolSession
|
|
67
67
|
|
|
68
68
|
```js
|
|
69
|
-
import {
|
|
69
|
+
import { YProtocolSession, toBase64, fromBase64 } from "yrb-lite-client";
|
|
70
70
|
import * as Y from "yjs";
|
|
71
71
|
import { Awareness } from "y-protocols/awareness";
|
|
72
72
|
|
|
73
73
|
const doc = new Y.Doc();
|
|
74
74
|
const awareness = new Awareness(doc);
|
|
75
75
|
|
|
76
|
-
const
|
|
76
|
+
const session = new YProtocolSession(doc, {
|
|
77
77
|
awareness,
|
|
78
78
|
// transmit one raw frame; `id` is set for reliable doc updates -> tag your envelope
|
|
79
79
|
send: (frame, id) => {
|
|
@@ -84,15 +84,15 @@ const engine = new SyncEngine(doc, {
|
|
|
84
84
|
});
|
|
85
85
|
|
|
86
86
|
// wire your transport's callbacks:
|
|
87
|
-
subscription.connected = () =>
|
|
88
|
-
subscription.disconnected = () =>
|
|
87
|
+
subscription.connected = () => session.onConnect(); // handshake + replay
|
|
88
|
+
subscription.disconnected = () => session.onDisconnect(); // pause + clear presence
|
|
89
89
|
subscription.received = (msg) => {
|
|
90
|
-
if (msg.ack !== undefined) return
|
|
91
|
-
const reply =
|
|
90
|
+
if (msg.ack !== undefined) return session.ack(msg.ack); // reliable ack envelope
|
|
91
|
+
const reply = session.receive(fromBase64(msg.update || msg.m)); // decode + apply
|
|
92
92
|
if (reply) subscription.send({ update: toBase64(reply) }); // e.g. answer a SyncStep1
|
|
93
93
|
};
|
|
94
|
-
//
|
|
95
|
-
//
|
|
94
|
+
// session.synced -> caught up; session.hasPending -> unacked edits in flight
|
|
95
|
+
// session.destroy() -> detach listeners + stop retransmits
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
Local document edits and awareness changes are picked up automatically from the
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { YProtocolSession, type YProtocolSessionOptions } from "./y_protocol_session.js";
|
|
2
2
|
import { Awareness } from "y-protocols/awareness";
|
|
3
3
|
import type { Doc } from "yjs";
|
|
4
4
|
/** The minimal slice of an ActionCable/AnyCable subscription this provider uses. */
|
|
@@ -15,7 +15,7 @@ export interface CableConsumer {
|
|
|
15
15
|
remove(subscription: CableSubscription): void;
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
|
-
export interface ActionCableProviderOptions extends Pick<
|
|
18
|
+
export interface ActionCableProviderOptions extends Pick<YProtocolSessionOptions, "reliable" | "resendInterval" | "maxUnconfirmedResends" | "onFallback"> {
|
|
19
19
|
/** Awareness/presence instance. Defaults to a fresh `new Awareness(doc)`. */
|
|
20
20
|
awareness?: Awareness | null;
|
|
21
21
|
}
|
|
@@ -25,7 +25,7 @@ export declare class ActionCableProvider {
|
|
|
25
25
|
readonly channelName: string;
|
|
26
26
|
readonly channelParams: object;
|
|
27
27
|
readonly awareness: Awareness;
|
|
28
|
-
readonly
|
|
28
|
+
readonly session: YProtocolSession;
|
|
29
29
|
private subscription;
|
|
30
30
|
constructor(doc: Doc, consumer: CableConsumer, channelName: string, channelParams?: object, opts?: ActionCableProviderOptions);
|
|
31
31
|
/** True once the document has caught up with the server (received a SyncStep2). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actioncable_provider.d.ts","sourceRoot":"","sources":["../src/actioncable_provider.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"actioncable_provider.d.ts","sourceRoot":"","sources":["../src/actioncable_provider.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,gBAAgB,EAAe,KAAK,uBAAuB,EAAoB,MAAM,yBAAyB,CAAC;AAExH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE/B,oFAAoF;AACpF,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,wEAAwE;IACxE,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,WAAW,CAAC,IAAI,IAAI,CAAC;CACtB;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE;QACb,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC;QACzD,MAAM,CAAC,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAAC;KAC/C,CAAC;CACH;AAED,MAAM,WAAW,0BACf,SAAQ,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,gBAAgB,GAAG,uBAAuB,GAAG,YAAY,CAAC;IAC7G,6EAA6E;IAC7E,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC9B;AAQD,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,OAAO,CAAC,YAAY,CAAkC;gBAGpD,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,MAAM,EACnB,aAAa,GAAE,MAAW,EAC1B,IAAI,GAAE,0BAA+B;IAkBvC,mFAAmF;IACnF,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,4EAA4E;IAC5E,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,OAAO,IAAI,IAAI;IA2Bf,UAAU,IAAI,IAAI;IAOlB,OAAO,IAAI,IAAI;IAUf,OAAO,CAAC,KAAK;CAYd"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// ActionCable / AnyCable. It owns the cable subscription and translates between
|
|
3
3
|
// the cable's JSON envelope (`{ update, id }` / `{ ack }`, base64) and raw
|
|
4
4
|
// protocol frames; everything else (sync steps, encode/decode, awareness,
|
|
5
|
-
// reliable delivery) lives in
|
|
5
|
+
// reliable delivery) lives in YProtocolSession. So this is just the transport glue.
|
|
6
6
|
//
|
|
7
7
|
// Awareness/presence frames are sent via AnyCable's `whisper` when the
|
|
8
8
|
// subscription supports it (client-to-client, no server round-trip); on plain
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// The constructor does NOT auto-connect: wire your editor binding first, then
|
|
14
14
|
// call `connect()`. Same `(doc, consumer, channelName, channelParams, opts)`
|
|
15
15
|
// shape as a typical y-rb/actioncable provider.
|
|
16
|
-
import {
|
|
16
|
+
import { YProtocolSession, MessageType } from "./y_protocol_session.js";
|
|
17
17
|
import { toBase64, fromBase64 } from "./base64.js";
|
|
18
18
|
import { Awareness } from "y-protocols/awareness";
|
|
19
19
|
export class ActionCableProvider {
|
|
@@ -24,7 +24,7 @@ export class ActionCableProvider {
|
|
|
24
24
|
this.channelName = channelName;
|
|
25
25
|
this.channelParams = channelParams;
|
|
26
26
|
this.awareness = opts.awareness ?? new Awareness(doc);
|
|
27
|
-
this.
|
|
27
|
+
this.session = new YProtocolSession(doc, {
|
|
28
28
|
awareness: this.awareness,
|
|
29
29
|
reliable: opts.reliable,
|
|
30
30
|
resendInterval: opts.resendInterval,
|
|
@@ -35,11 +35,11 @@ export class ActionCableProvider {
|
|
|
35
35
|
}
|
|
36
36
|
/** True once the document has caught up with the server (received a SyncStep2). */
|
|
37
37
|
get synced() {
|
|
38
|
-
return this.
|
|
38
|
+
return this.session.synced;
|
|
39
39
|
}
|
|
40
40
|
/** True while there are unacknowledged local document updates in flight. */
|
|
41
41
|
get hasPending() {
|
|
42
|
-
return this.
|
|
42
|
+
return this.session.hasPending;
|
|
43
43
|
}
|
|
44
44
|
connect() {
|
|
45
45
|
if (this.subscription)
|
|
@@ -49,40 +49,40 @@ export class ActionCableProvider {
|
|
|
49
49
|
received(message) {
|
|
50
50
|
// Reliable-delivery ack: confirm + prune the local queue.
|
|
51
51
|
if (message && message.ack !== undefined) {
|
|
52
|
-
provider.
|
|
52
|
+
provider.session.ack(message.ack);
|
|
53
53
|
return;
|
|
54
54
|
}
|
|
55
55
|
const payload = message && (message.m ?? message.update);
|
|
56
56
|
if (typeof payload !== "string")
|
|
57
57
|
return;
|
|
58
|
-
const reply = provider.
|
|
58
|
+
const reply = provider.session.receive(fromBase64(payload));
|
|
59
59
|
if (reply)
|
|
60
60
|
provider._send(reply, undefined); // e.g. SyncStep2 answering a SyncStep1
|
|
61
61
|
},
|
|
62
62
|
connected() {
|
|
63
|
-
provider.
|
|
63
|
+
provider.session.onConnect(); // handshake + replay the unacked tail
|
|
64
64
|
},
|
|
65
65
|
disconnected() {
|
|
66
|
-
provider.
|
|
66
|
+
provider.session.onDisconnect(); // pause retransmits, clear remote presence
|
|
67
67
|
},
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
70
|
disconnect() {
|
|
71
71
|
if (!this.subscription)
|
|
72
72
|
return;
|
|
73
|
-
this.
|
|
73
|
+
this.session.onDisconnect();
|
|
74
74
|
this.consumer.subscriptions.remove(this.subscription);
|
|
75
75
|
this.subscription = null;
|
|
76
76
|
}
|
|
77
77
|
destroy() {
|
|
78
78
|
this.disconnect();
|
|
79
|
-
this.
|
|
79
|
+
this.session.destroy();
|
|
80
80
|
}
|
|
81
81
|
// Send one raw protocol frame over the cable. Awareness frames are whispered
|
|
82
82
|
// when the subscription supports it (AnyCable), else sent normally; document
|
|
83
83
|
// frames always go through `send`. `id` (reliable doc updates) is tagged onto
|
|
84
84
|
// the envelope so the server can ack. A no-op while disconnected: reliable
|
|
85
|
-
// frames stay queued in the
|
|
85
|
+
// frames stay queued in the session and flush on the next connect().
|
|
86
86
|
_send(frame, id, opts) {
|
|
87
87
|
const sub = this.subscription;
|
|
88
88
|
if (!sub)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actioncable_provider.js","sourceRoot":"","sources":["../src/actioncable_provider.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,gFAAgF;AAChF,2EAA2E;AAC3E,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"actioncable_provider.js","sourceRoot":"","sources":["../src/actioncable_provider.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { ReliableSync } from "./reliable_sync.js";
|
|
2
2
|
export type { ReliableSyncOptions, TimerHandle } from "./reliable_sync.js";
|
|
3
|
-
export {
|
|
4
|
-
export type {
|
|
3
|
+
export { YProtocolSession, MessageType } from "./y_protocol_session.js";
|
|
4
|
+
export type { YProtocolSessionOptions, SendOptions } from "./y_protocol_session.js";
|
|
5
5
|
export { ActionCableProvider } from "./actioncable_provider.js";
|
|
6
6
|
export type { ActionCableProviderOptions, CableConsumer, CableSubscription } from "./actioncable_provider.js";
|
|
7
7
|
export { toBase64, fromBase64 } from "./base64.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAI3E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAI3E,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxE,YAAY,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAIpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,0BAA0B,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9G,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// Zero-dependency reliable-delivery core. Safe to import on its own.
|
|
2
2
|
export { ReliableSync } from "./reliable_sync.js";
|
|
3
|
-
// Batteries-included protocol
|
|
3
|
+
// Batteries-included protocol session (sync steps + encode/decode + awareness).
|
|
4
4
|
// Requires `yjs` and `y-protocols` as peers.
|
|
5
|
-
export {
|
|
6
|
-
// Ready-made ActionCable / AnyCable provider built on
|
|
7
|
-
// whisper support). Bring your own provider instead by composing
|
|
5
|
+
export { YProtocolSession, MessageType } from "./y_protocol_session.js";
|
|
6
|
+
// Ready-made ActionCable / AnyCable provider built on YProtocolSession (with awareness
|
|
7
|
+
// whisper support). Bring your own provider instead by composing YProtocolSession.
|
|
8
8
|
export { ActionCableProvider } from "./actioncable_provider.js";
|
|
9
9
|
// Optional base64 helpers for transports that carry frames as strings.
|
|
10
10
|
export { toBase64, fromBase64 } from "./base64.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,gFAAgF;AAChF,6CAA6C;AAC7C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGxE,uFAAuF;AACvF,mFAAmF;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,uEAAuE;AACvE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -17,7 +17,7 @@ export interface SendOptions {
|
|
|
17
17
|
*/
|
|
18
18
|
awareness?: boolean;
|
|
19
19
|
}
|
|
20
|
-
export interface
|
|
20
|
+
export interface YProtocolSessionOptions {
|
|
21
21
|
/**
|
|
22
22
|
* Transmit one raw protocol frame. `id` is set only for reliable document
|
|
23
23
|
* updates (tag it onto your envelope so the server can ack). `opts.awareness`
|
|
@@ -38,7 +38,7 @@ export interface SyncEngineOptions {
|
|
|
38
38
|
setInterval?: (handler: () => void, ms: number) => TimerHandle;
|
|
39
39
|
clearInterval?: (handle: TimerHandle) => void;
|
|
40
40
|
}
|
|
41
|
-
export declare class
|
|
41
|
+
export declare class YProtocolSession {
|
|
42
42
|
readonly doc: Doc;
|
|
43
43
|
readonly awareness: Awareness | null;
|
|
44
44
|
reliable: boolean;
|
|
@@ -47,7 +47,7 @@ export declare class SyncEngine {
|
|
|
47
47
|
private _delivery;
|
|
48
48
|
private _onDocUpdate;
|
|
49
49
|
private _onAwarenessUpdate?;
|
|
50
|
-
constructor(doc: Doc, opts:
|
|
50
|
+
constructor(doc: Doc, opts: YProtocolSessionOptions);
|
|
51
51
|
/** True once we've received the server's SyncStep2 (the document is caught up). */
|
|
52
52
|
get synced(): boolean;
|
|
53
53
|
/** True while there are unacknowledged local document updates in flight. */
|
|
@@ -70,4 +70,4 @@ export declare class SyncEngine {
|
|
|
70
70
|
private _frameUpdate;
|
|
71
71
|
private _frameAwareness;
|
|
72
72
|
}
|
|
73
|
-
//# sourceMappingURL=
|
|
73
|
+
//# sourceMappingURL=y_protocol_session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"y_protocol_session.d.ts","sourceRoot":"","sources":["../src/y_protocol_session.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAgB,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAI7C,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEpE,eAAO,MAAM,WAAW;;;;;CAAiE,CAAC;AAE1F,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9E,+EAA+E;IAC/E,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,WAAW,CAAC;IAC/D,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CAC/C;AAID,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAElB,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,YAAY,CAAgD;IACpE,OAAO,CAAC,kBAAkB,CAAC,CAAqD;gBAEpE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,uBAAuB;IA6CnD,mFAAmF;IACnF,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,4EAA4E;IAC5E,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,mFAAmF;IACnF,SAAS,IAAI,IAAI;IAQjB,mFAAmF;IACnF,YAAY,IAAI,IAAI;IASpB,0DAA0D;IAC1D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIrB;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;IA+B7C,2DAA2D;IAC3D,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;CAMxB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
// A batteries-included
|
|
1
|
+
// A batteries-included, transport-agnostic session for the yrb-lite
|
|
2
|
+
// y-websocket protocol.
|
|
2
3
|
//
|
|
3
|
-
//
|
|
4
|
+
// YProtocolSession composes ReliableSync and additionally owns the parts a provider
|
|
4
5
|
// would otherwise re-implement: the y-protocols message framing (encode/decode),
|
|
5
6
|
// the sync-step handshake (SyncStep1 / SyncStep2 / Update), and awareness
|
|
6
7
|
// encode/apply. It binds to a Y.Doc (and optional Awareness) and speaks in raw
|
|
@@ -22,14 +23,14 @@ import { encodeAwarenessUpdate, applyAwarenessUpdate, removeAwarenessStates, } f
|
|
|
22
23
|
import { readAuthMessage } from "y-protocols/auth";
|
|
23
24
|
import { ReliableSync } from "./reliable_sync.js";
|
|
24
25
|
export const MessageType = { Sync: 0, Awareness: 1, Auth: 2, QueryAwareness: 3 };
|
|
25
|
-
export class
|
|
26
|
+
export class YProtocolSession {
|
|
26
27
|
constructor(doc, opts) {
|
|
27
28
|
this._synced = false;
|
|
28
29
|
const { send, awareness = null, reliable = true, resendInterval, maxUnconfirmedResends, onFallback, setInterval: setIntervalFn, clearInterval: clearIntervalFn, } = opts ?? {};
|
|
29
30
|
if (!doc)
|
|
30
|
-
throw new TypeError("
|
|
31
|
+
throw new TypeError("YProtocolSession requires a Y.Doc");
|
|
31
32
|
if (typeof send !== "function")
|
|
32
|
-
throw new TypeError("
|
|
33
|
+
throw new TypeError("YProtocolSession requires a send(frame, id) function");
|
|
33
34
|
this.doc = doc;
|
|
34
35
|
this.awareness = awareness;
|
|
35
36
|
this.reliable = reliable;
|
|
@@ -152,4 +153,4 @@ export class SyncEngine {
|
|
|
152
153
|
return encoding.toUint8Array(e);
|
|
153
154
|
}
|
|
154
155
|
}
|
|
155
|
-
//# sourceMappingURL=
|
|
156
|
+
//# sourceMappingURL=y_protocol_session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"y_protocol_session.js","sourceRoot":"","sources":["../src/y_protocol_session.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yrb-lite-client",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "JavaScript client for the yrb-lite y-websocket protocol: a ready-made ActionCable/AnyCable provider, a transport-agnostic
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "JavaScript client for the yrb-lite y-websocket protocol: a ready-made ActionCable/AnyCable provider, a transport-agnostic protocol session (sync steps, encode/decode, awareness), and a reliable-delivery core (ack-tracked queue, sync-since-last-ack, retransmit + reconnect replay). Written in TypeScript with bundled types; usable from plain JS.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.js",
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
"README.md"
|
|
26
26
|
],
|
|
27
27
|
"scripts": {
|
|
28
|
-
"
|
|
28
|
+
"clean": "rm -rf dist",
|
|
29
|
+
"build": "npm run clean && tsc",
|
|
29
30
|
"typecheck": "tsc --noEmit",
|
|
30
31
|
"prepack": "npm run build",
|
|
31
32
|
"test": "npm run build && node --test"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync_engine.d.ts","sourceRoot":"","sources":["../src/sync_engine.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAgB,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAI7C,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEpE,eAAO,MAAM,WAAW;;;;;CAAiE,CAAC;AAE1F,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9E,+EAA+E;IAC/E,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,WAAW,CAAC;IAC/D,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CAC/C;AAID,qBAAa,UAAU;IACrB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAElB,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,YAAY,CAAgD;IACpE,OAAO,CAAC,kBAAkB,CAAC,CAAqD;gBAEpE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,iBAAiB;IA6C7C,mFAAmF;IACnF,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,4EAA4E;IAC5E,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,mFAAmF;IACnF,SAAS,IAAI,IAAI;IAQjB,mFAAmF;IACnF,YAAY,IAAI,IAAI;IASpB,0DAA0D;IAC1D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIrB;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;IA+B7C,2DAA2D;IAC3D,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;CAMxB"}
|
package/dist/sync_engine.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync_engine.js","sourceRoot":"","sources":["../src/sync_engine.ts"],"names":[],"mappings":"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"}
|