@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.
Files changed (64) hide show
  1. package/README.md +129 -5
  2. package/dist/index.d.ts +903 -60
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2723 -428
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib.d.ts +1 -0
  7. package/dist/lib.d.ts.map +1 -1
  8. package/dist/lib.js +3 -0
  9. package/dist/lib.js.map +1 -1
  10. package/dist/providers/ably/index.d.ts +203 -0
  11. package/dist/providers/ably/index.d.ts.map +1 -0
  12. package/dist/providers/ably/index.js +561 -0
  13. package/dist/providers/ably/index.js.map +1 -0
  14. package/dist/providers/chunking.d.ts +26 -0
  15. package/dist/providers/chunking.d.ts.map +1 -0
  16. package/dist/providers/chunking.js +52 -0
  17. package/dist/providers/chunking.js.map +1 -0
  18. package/dist/providers/dummy/index.d.ts +138 -2
  19. package/dist/providers/dummy/index.d.ts.map +1 -1
  20. package/dist/providers/dummy/index.js +266 -4
  21. package/dist/providers/dummy/index.js.map +1 -1
  22. package/dist/providers/gun/index.d.ts +11 -4
  23. package/dist/providers/gun/index.d.ts.map +1 -1
  24. package/dist/providers/gun/index.js +104 -22
  25. package/dist/providers/gun/index.js.map +1 -1
  26. package/dist/providers/indexeddb/index.d.ts +44 -20
  27. package/dist/providers/indexeddb/index.d.ts.map +1 -1
  28. package/dist/providers/indexeddb/index.js +85 -71
  29. package/dist/providers/indexeddb/index.js.map +1 -1
  30. package/dist/providers/matrix/index.d.ts +6 -1
  31. package/dist/providers/matrix/index.d.ts.map +1 -1
  32. package/dist/providers/matrix/index.js +44 -6
  33. package/dist/providers/matrix/index.js.map +1 -1
  34. package/dist/providers/nostr/index.d.ts +69 -5
  35. package/dist/providers/nostr/index.d.ts.map +1 -1
  36. package/dist/providers/nostr/index.js +204 -36
  37. package/dist/providers/nostr/index.js.map +1 -1
  38. package/dist/providers/peerjs/index.d.ts +11 -1
  39. package/dist/providers/peerjs/index.d.ts.map +1 -1
  40. package/dist/providers/peerjs/index.js +32 -2
  41. package/dist/providers/peerjs/index.js.map +1 -1
  42. package/dist/providers/pubnub/index.d.ts +35 -1
  43. package/dist/providers/pubnub/index.d.ts.map +1 -1
  44. package/dist/providers/pubnub/index.js +56 -35
  45. package/dist/providers/pubnub/index.js.map +1 -1
  46. package/dist/providers/simple-peer/index.d.ts +10 -15
  47. package/dist/providers/simple-peer/index.d.ts.map +1 -1
  48. package/dist/providers/simple-peer/index.js +81 -109
  49. package/dist/providers/simple-peer/index.js.map +1 -1
  50. package/dist/providers/supabase/index.d.ts +43 -1
  51. package/dist/providers/supabase/index.d.ts.map +1 -1
  52. package/dist/providers/supabase/index.js +211 -18
  53. package/dist/providers/supabase/index.js.map +1 -1
  54. package/dist/providers/trystero/index.d.ts +19 -1
  55. package/dist/providers/trystero/index.d.ts.map +1 -1
  56. package/dist/providers/trystero/index.js +37 -2
  57. package/dist/providers/trystero/index.js.map +1 -1
  58. package/dist/providers/websocket/index.d.ts +9 -1
  59. package/dist/providers/websocket/index.d.ts.map +1 -1
  60. package/dist/providers/websocket/index.js +7 -1
  61. package/dist/providers/websocket/index.js.map +1 -1
  62. package/dist/transport.d.ts +69 -16
  63. package/dist/transport.d.ts.map +1 -1
  64. package/package.json +35 -24
@@ -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: register a callback that fires when a connected peer disconnects
55
- * (channel close or error). Consumers use this for presence/leave tracking.
56
- *
57
- * @param callback - Function to call with the departed peer's ID
58
- * @returns Cleanup function to unregister the callback
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
  }
@@ -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;;;;;;;OAOG;IACH,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/D;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IAE3D;;;;;;;OAOG;IACH,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IAE9D;;;;;;OAMG;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;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAA;IAEZ,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,+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"}
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.0.4",
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: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"
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
- "y-provider": "^0.10.3-canary.2"
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
  }