@edryslabs/genericprovider 1.0.4 → 1.5.2
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 +129 -5
- package/dist/index.d.ts +903 -60
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2723 -428
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +1 -0
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +3 -0
- package/dist/lib.js.map +1 -1
- package/dist/providers/ably/index.d.ts +203 -0
- package/dist/providers/ably/index.d.ts.map +1 -0
- package/dist/providers/ably/index.js +561 -0
- package/dist/providers/ably/index.js.map +1 -0
- package/dist/providers/chunking.d.ts +26 -0
- package/dist/providers/chunking.d.ts.map +1 -0
- package/dist/providers/chunking.js +52 -0
- package/dist/providers/chunking.js.map +1 -0
- package/dist/providers/dummy/index.d.ts +138 -2
- package/dist/providers/dummy/index.d.ts.map +1 -1
- package/dist/providers/dummy/index.js +266 -4
- package/dist/providers/dummy/index.js.map +1 -1
- package/dist/providers/gun/index.d.ts +11 -4
- package/dist/providers/gun/index.d.ts.map +1 -1
- package/dist/providers/gun/index.js +104 -22
- package/dist/providers/gun/index.js.map +1 -1
- package/dist/providers/indexeddb/index.d.ts +44 -20
- package/dist/providers/indexeddb/index.d.ts.map +1 -1
- package/dist/providers/indexeddb/index.js +85 -71
- package/dist/providers/indexeddb/index.js.map +1 -1
- package/dist/providers/matrix/index.d.ts +6 -1
- package/dist/providers/matrix/index.d.ts.map +1 -1
- package/dist/providers/matrix/index.js +44 -6
- package/dist/providers/matrix/index.js.map +1 -1
- package/dist/providers/nostr/index.d.ts +69 -5
- package/dist/providers/nostr/index.d.ts.map +1 -1
- package/dist/providers/nostr/index.js +204 -36
- package/dist/providers/nostr/index.js.map +1 -1
- package/dist/providers/peerjs/index.d.ts +11 -1
- package/dist/providers/peerjs/index.d.ts.map +1 -1
- package/dist/providers/peerjs/index.js +32 -2
- package/dist/providers/peerjs/index.js.map +1 -1
- package/dist/providers/pubnub/index.d.ts +35 -1
- package/dist/providers/pubnub/index.d.ts.map +1 -1
- package/dist/providers/pubnub/index.js +56 -35
- package/dist/providers/pubnub/index.js.map +1 -1
- package/dist/providers/simple-peer/index.d.ts +10 -15
- package/dist/providers/simple-peer/index.d.ts.map +1 -1
- package/dist/providers/simple-peer/index.js +81 -109
- package/dist/providers/simple-peer/index.js.map +1 -1
- package/dist/providers/supabase/index.d.ts +43 -1
- package/dist/providers/supabase/index.d.ts.map +1 -1
- package/dist/providers/supabase/index.js +211 -18
- package/dist/providers/supabase/index.js.map +1 -1
- package/dist/providers/trystero/index.d.ts +19 -1
- package/dist/providers/trystero/index.d.ts.map +1 -1
- package/dist/providers/trystero/index.js +37 -2
- package/dist/providers/trystero/index.js.map +1 -1
- package/dist/providers/websocket/index.d.ts +9 -1
- package/dist/providers/websocket/index.d.ts.map +1 -1
- package/dist/providers/websocket/index.js +7 -1
- package/dist/providers/websocket/index.js.map +1 -1
- package/dist/transport.d.ts +69 -16
- package/dist/transport.d.ts.map +1 -1
- package/package.json +35 -24
package/dist/transport.d.ts
CHANGED
|
@@ -24,23 +24,29 @@ export interface Transport {
|
|
|
24
24
|
* @param data - Binary data to send (Yjs updates or awareness)
|
|
25
25
|
*/
|
|
26
26
|
send(data: Uint8Array): void | Promise<void>;
|
|
27
|
-
/**
|
|
28
|
-
* Optional: send binary data to a single peer instead of broadcasting.
|
|
29
|
-
* Only transports with a peer concept (e.g. WebRTC) can implement this.
|
|
30
|
-
* When absent, the provider falls back to broadcast-and-filter.
|
|
31
|
-
*
|
|
32
|
-
* @param peerId - Target peer's ID
|
|
33
|
-
* @param data - Binary data to send
|
|
34
|
-
*/
|
|
35
|
-
sendTo?(peerId: string, data: Uint8Array): void | Promise<void>;
|
|
36
27
|
/**
|
|
37
28
|
* Register a callback for incoming binary data.
|
|
38
29
|
* The transport calls this callback whenever data is received.
|
|
39
30
|
*
|
|
40
|
-
* @param callback - Function to call with received data
|
|
31
|
+
* @param callback - Function to call with received data. Transports that
|
|
32
|
+
* know which peer a message came from pass that peer's address as the
|
|
33
|
+
* second argument (the same id `sendTo` accepts); relays that only see a
|
|
34
|
+
* room call it with the data alone. GenericProvider remembers the address
|
|
35
|
+
* per remote clientID and, when `sendTo` exists, answers that peer's
|
|
36
|
+
* requests directly instead of broadcasting the reply to the room.
|
|
41
37
|
* @returns Cleanup function to unregister the callback
|
|
42
38
|
*/
|
|
43
|
-
onMessage(callback: (data: Uint8Array) => void): () => void;
|
|
39
|
+
onMessage(callback: (data: Uint8Array, from?: string) => void): () => void;
|
|
40
|
+
/**
|
|
41
|
+
* Optional: send binary data to ONE peer, identified by the address the
|
|
42
|
+
* transport passed as `from` to the onMessage callback. Mesh transports
|
|
43
|
+
* (peerjs, simple-peer, trystero) implement this with the peer's data
|
|
44
|
+
* channel; relays leave it undefined and every reply stays a broadcast,
|
|
45
|
+
* exactly as before this method existed. When present, SyncStep2 replies,
|
|
46
|
+
* acks and presence responses to a join go to the requester only: N-1
|
|
47
|
+
* deliveries per request become 1.
|
|
48
|
+
*/
|
|
49
|
+
sendTo?(peerId: string, data: Uint8Array): void | Promise<void>;
|
|
44
50
|
/**
|
|
45
51
|
* Optional: register a callback that fires whenever a new peer data channel
|
|
46
52
|
* opens. The provider uses this to push its local state to the new peer
|
|
@@ -51,11 +57,14 @@ export interface Transport {
|
|
|
51
57
|
*/
|
|
52
58
|
onPeerConnect?(callback: (peerId: string) => void): () => void;
|
|
53
59
|
/**
|
|
54
|
-
* Optional:
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
60
|
+
* Optional: the counterpart of onPeerConnect - fires when a peer's data
|
|
61
|
+
* channel closes (mesh transports) or the backend's presence service
|
|
62
|
+
* reports it gone (PubNub leave/timeout). The id is the one `onMessage`
|
|
63
|
+
* passed as `from` for that peer. GenericProvider then drops that peer's
|
|
64
|
+
* awareness state at once instead of after the awareness lease, forgets
|
|
65
|
+
* its address, and - since departures are reported by the transport -
|
|
66
|
+
* lets `awarenessTimeoutMs` default to a long safety net, which removes
|
|
67
|
+
* the 15 s awareness renewal broadcasts (round 5, item 2).
|
|
59
68
|
*/
|
|
60
69
|
onPeerDisconnect?(callback: (peerId: string) => void): () => void;
|
|
61
70
|
/**
|
|
@@ -98,6 +107,37 @@ export interface Transport {
|
|
|
98
107
|
* without reducing round trips that were already cheap.
|
|
99
108
|
*/
|
|
100
109
|
readonly preferredBatchMs?: number;
|
|
110
|
+
/**
|
|
111
|
+
* Optional hint: the round-trip time class (ms) this transport expects -
|
|
112
|
+
* e.g. ~700 for a Matrix homeserver long-poll, ~500 for a Gun relay
|
|
113
|
+
* mesh, undefined for low-latency push transports. GenericProvider uses
|
|
114
|
+
* it to seed its round-trip estimate before the first measured sample
|
|
115
|
+
* arrives, so the first response wait after a join and the first reply
|
|
116
|
+
* suppression window already fit the transport instead of the
|
|
117
|
+
* low-latency defaults (measured before this hint: on a 350 ms profile a
|
|
118
|
+
* 100-peer join burst spent most of its traffic on retries fired before
|
|
119
|
+
* the first replies could have arrived). Replaced by measured samples as
|
|
120
|
+
* soon as they exist.
|
|
121
|
+
*/
|
|
122
|
+
readonly expectedRttMs?: number;
|
|
123
|
+
/**
|
|
124
|
+
* Optional hint: default for `compressionThresholdBytes` when the caller
|
|
125
|
+
* passes nothing. Transports that cap a single message (PubNub 32 KiB,
|
|
126
|
+
* Ably 64 KiB, Matrix 64 KiB, Nostr 64 KiB) or bill per delivered size
|
|
127
|
+
* (Ably, 5 KiB units) set this so a full-document push is compressed
|
|
128
|
+
* before it is chunked. Changes the transport's default wire format (a
|
|
129
|
+
* 1-byte flag on every message) - all peers of a room must run the same
|
|
130
|
+
* library version, as the README already requires. An explicit
|
|
131
|
+
* `compressionThresholdBytes: 0` still disables compression.
|
|
132
|
+
*/
|
|
133
|
+
readonly preferredCompressMinBytes?: number;
|
|
134
|
+
/**
|
|
135
|
+
* Optional hint: default for `awarenessInterval` (ms). A transport whose
|
|
136
|
+
* backend rate-limits sends per user (Synapse: 0.2 messages/s, burst 10
|
|
137
|
+
* by default) sets this well above the 100 ms default, so cursor traffic
|
|
138
|
+
* does not spend the burst within seconds.
|
|
139
|
+
*/
|
|
140
|
+
readonly preferredAwarenessMs?: number;
|
|
101
141
|
}
|
|
102
142
|
/**
|
|
103
143
|
* Connection configuration passed to transport.connect()
|
|
@@ -108,6 +148,19 @@ export interface ConnectionConfig {
|
|
|
108
148
|
room: string;
|
|
109
149
|
/** Optional password for encrypted communication */
|
|
110
150
|
password?: string;
|
|
151
|
+
/**
|
|
152
|
+
* Optional: a promise GenericProvider.connect() awaits after the
|
|
153
|
+
* transport is connected and before it sends its first sync - typically
|
|
154
|
+
* the connect() promise of a persistence provider (IndexedDB) on the same
|
|
155
|
+
* document. Sent before the local copy is loaded, the first beacon
|
|
156
|
+
* carries an empty state vector and the room answers with the whole
|
|
157
|
+
* document although it is already on disk (round 5, item 7). While
|
|
158
|
+
* waiting, doc updates are treated as the load and not broadcast, and
|
|
159
|
+
* the loaded state then counts as confirmed by the room (no full-state
|
|
160
|
+
* push): the beacon reconciles both directions. Incoming messages are
|
|
161
|
+
* processed while waiting; a rejected promise is ignored.
|
|
162
|
+
*/
|
|
163
|
+
waitFor?: Promise<unknown>;
|
|
111
164
|
/** Any other backend-specific configuration */
|
|
112
165
|
[key: string]: any;
|
|
113
166
|
}
|
package/dist/transport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhD;;;OAGG;IACH,UAAU,IAAI,IAAI,CAAA;IAElB;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE5C
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhD;;;OAGG;IACH,UAAU,IAAI,IAAI,CAAA;IAElB;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE5C;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IAE1E;;;;;;;;OAQG;IACH,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/D;;;;;;;OAOG;IACH,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IAE9D;;;;;;;;;OASG;IACH,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IAEjE;;;;;;;;OAQG;IACH,WAAW,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAAA;IAEvD;;;;;;OAMG;IACH,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAErC;;;;;OAKG;IACH,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IAEpF;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAE7B;;;;;;;;;OASG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAElC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAE/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAE3C;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAA;IAEZ,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAE1B,+CAA+C;IAC/C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,GACzB;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GACvB;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GACtB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edryslabs/genericprovider",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.2",
|
|
4
4
|
"description": "A clean, minimal, backend-agnostic provider for Yjs that lets you implement any transport mechanism.",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "André Dietrich",
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "git+https://github.com/andre-dietrich/y-generic.git"
|
|
10
10
|
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/andre-dietrich/y-generic/issues"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/andre-dietrich/y-generic#readme",
|
|
11
15
|
"main": "./dist/lib.js",
|
|
12
16
|
"types": "./dist/lib.d.ts",
|
|
13
17
|
"targets": {
|
|
@@ -62,24 +66,29 @@
|
|
|
62
66
|
"./providers/nostr": {
|
|
63
67
|
"types": "./dist/providers/nostr/index.d.ts",
|
|
64
68
|
"default": "./dist/providers/nostr/index.js"
|
|
69
|
+
},
|
|
70
|
+
"./providers/ably": {
|
|
71
|
+
"types": "./dist/providers/ably/index.d.ts",
|
|
72
|
+
"default": "./dist/providers/ably/index.js"
|
|
65
73
|
}
|
|
66
74
|
},
|
|
67
75
|
"files": [
|
|
68
76
|
"dist"
|
|
69
77
|
],
|
|
70
78
|
"scripts": {
|
|
71
|
-
"dev:dummy": "npx parcel serve test/dummy/index.html --open --port 3011",
|
|
72
|
-
"dev:edge-cases": "npx parcel serve test/dummy/edge-cases.html --open --port 3012",
|
|
73
|
-
"dev:simple-peer": "npx parcel serve test/simple-peer/index.html --open --port 3002",
|
|
74
|
-
"dev:peerjs": "npx parcel serve test/peerjs/index.html --open --port 3003",
|
|
75
|
-
"dev:indexeddb": "npx parcel serve test/indexeddb/index.html --open --port 3004",
|
|
76
|
-
"dev:gun": "npx parcel serve test/gun/index.html --open --port 3005",
|
|
77
|
-
"dev:trystero": "npx parcel serve test/trystero/index.html --open --port 3006",
|
|
78
|
-
"dev:pubnub": "npx parcel serve test/pubnub/index.html --open --port 3007",
|
|
79
|
-
"dev:websocket": "npx parcel serve test/websocket/index.html --open --port 3008",
|
|
80
|
-
"dev:matrix": "npx parcel serve test/matrix/index.html --open --port 3009",
|
|
81
|
-
"dev:supabase": "npx parcel serve test/supabase/index.html --open --port 3010",
|
|
82
|
-
"dev:nostr": "npx parcel serve test/nostr/index.html --open --port 3013",
|
|
79
|
+
"dev:dummy": "npx parcel serve --dist-dir .parcel-dev test/dummy/index.html --open --port 3011",
|
|
80
|
+
"dev:edge-cases": "npx parcel serve --dist-dir .parcel-dev test/dummy/edge-cases.html --open --port 3012",
|
|
81
|
+
"dev:simple-peer": "npx parcel serve --dist-dir .parcel-dev test/simple-peer/index.html --open --port 3002",
|
|
82
|
+
"dev:peerjs": "npx parcel serve --dist-dir .parcel-dev test/peerjs/index.html --open --port 3003",
|
|
83
|
+
"dev:indexeddb": "npx parcel serve --dist-dir .parcel-dev test/indexeddb/index.html --open --port 3004",
|
|
84
|
+
"dev:gun": "npx parcel serve --dist-dir .parcel-dev test/gun/index.html --open --port 3005",
|
|
85
|
+
"dev:trystero": "npx parcel serve --dist-dir .parcel-dev test/trystero/index.html --open --port 3006",
|
|
86
|
+
"dev:pubnub": "npx parcel serve --dist-dir .parcel-dev test/pubnub/index.html --open --port 3007",
|
|
87
|
+
"dev:websocket": "npx parcel serve --dist-dir .parcel-dev test/websocket/index.html --open --port 3008",
|
|
88
|
+
"dev:matrix": "npx parcel serve --dist-dir .parcel-dev test/matrix/index.html --open --port 3009",
|
|
89
|
+
"dev:supabase": "npx parcel serve --dist-dir .parcel-dev test/supabase/index.html --open --port 3010",
|
|
90
|
+
"dev:nostr": "npx parcel serve --dist-dir .parcel-dev test/nostr/index.html --open --port 3013",
|
|
91
|
+
"dev:ably": "npx parcel serve --dist-dir .parcel-dev test/ably/index.html --open --port 3014",
|
|
83
92
|
"test": "parcel test.html --open",
|
|
84
93
|
"build": "rm -rf dist && tsc",
|
|
85
94
|
"build:demo:index": "npx parcel build test/index.html --dist-dir demos --public-url ./ --no-source-maps",
|
|
@@ -91,22 +100,27 @@
|
|
|
91
100
|
"build:demo:trystero": "npx parcel build test/trystero/index.html --dist-dir demos/trystero --public-url ./ --no-source-maps",
|
|
92
101
|
"build:demo:pubnub": "npx parcel build test/pubnub/index.html --dist-dir demos/pubnub --public-url ./ --no-source-maps",
|
|
93
102
|
"build:demo:websocket": "npx parcel build test/websocket/index.html --dist-dir demos/websocket --public-url ./ --no-source-maps",
|
|
103
|
+
"build:demo:matrix": "npx parcel build test/matrix/index.html --dist-dir demos/matrix --public-url ./ --no-source-maps",
|
|
94
104
|
"build:demo:supabase": "npx parcel build test/supabase/index.html --dist-dir demos/supabase --public-url ./ --no-source-maps",
|
|
95
105
|
"build:demo:nostr": "npx parcel build test/nostr/index.html --dist-dir demos/nostr --public-url ./ --no-source-maps",
|
|
96
|
-
"build:
|
|
106
|
+
"build:demo:ably": "npx parcel build test/ably/index.html --dist-dir demos/ably --public-url ./ --no-source-maps",
|
|
107
|
+
"build:demos": "rm -rf demos && npm run build:demo:index && npm run build:demo:dummy && npm run build:demo:simple-peer && npm run build:demo:peerjs && npm run build:demo:indexeddb && npm run build:demo:gun && npm run build:demo:trystero && npm run build:demo:pubnub && npm run build:demo:websocket && npm run build:demo:matrix && npm run build:demo:supabase && npm run build:demo:nostr && npm run build:demo:ably"
|
|
97
108
|
},
|
|
98
109
|
"dependencies": {
|
|
99
|
-
"
|
|
110
|
+
"lib0": "^0.2.98",
|
|
111
|
+
"y-protocols": "^1.0.6",
|
|
112
|
+
"yjs": "^13.6.29"
|
|
100
113
|
},
|
|
101
114
|
"peerDependencies": {
|
|
115
|
+
"ably": "^2.0.0",
|
|
102
116
|
"gun": "^0.2020.1240",
|
|
103
|
-
"lib0": "^0.2.98",
|
|
104
117
|
"peerjs": "^1.5.0",
|
|
105
|
-
"simple-peer": "^9.11.0"
|
|
106
|
-
"y-protocols": "^1.0.6",
|
|
107
|
-
"yjs": "^13.6.29"
|
|
118
|
+
"simple-peer": "^9.11.0"
|
|
108
119
|
},
|
|
109
120
|
"peerDependenciesMeta": {
|
|
121
|
+
"ably": {
|
|
122
|
+
"optional": true
|
|
123
|
+
},
|
|
110
124
|
"gun": {
|
|
111
125
|
"optional": true
|
|
112
126
|
},
|
|
@@ -122,16 +136,13 @@
|
|
|
122
136
|
"@types/node": "^20.0.0",
|
|
123
137
|
"buffer": "^6.0.3",
|
|
124
138
|
"events": "^3.3.0",
|
|
125
|
-
"lib0": "^0.2.98",
|
|
126
139
|
"parcel": "^2.16.4",
|
|
127
140
|
"process": "^0.11.10",
|
|
128
|
-
"quill-cursors": "^4.0.4",
|
|
129
141
|
"quill": "^2.0.3",
|
|
142
|
+
"quill-cursors": "^4.0.4",
|
|
130
143
|
"typescript": "^5.0.0",
|
|
131
|
-
"y-protocols": "^1.0.6",
|
|
132
144
|
"y-quill": "^1.0.0",
|
|
133
145
|
"y-webrtc": "^10.3.0",
|
|
134
|
-
"y-websocket": "^3.0.0"
|
|
135
|
-
"yjs": "^13.6.29"
|
|
146
|
+
"y-websocket": "^3.0.0"
|
|
136
147
|
}
|
|
137
148
|
}
|