@fileverse-dev/ddoc 4.2.0-durability-1 → 4.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/dist/{index-BREkA3S3.mjs → index-BmAUaDBd.mjs} +21929 -21949
- package/dist/{index-CioSbJ2V.mjs → index-DnbtCBdq.mjs} +1 -1
- package/dist/index.es.js +1 -1
- package/dist/{markdown-source-pane-yIzyW1Ll.mjs → markdown-source-pane-DJqeRQ7T.mjs} +2 -2
- package/dist/package/hooks/use-tab-editor.d.ts +2 -3
- package/dist/package/hooks/use-yjs-setup.d.ts +0 -1
- package/dist/package/sync-local/SyncManager.d.ts +7 -12
- package/dist/package/sync-local/socketClient.d.ts +7 -21
- package/dist/package/sync-local/types/index.d.ts +9 -41
- package/dist/package/use-ddoc-editor.d.ts +0 -1
- package/dist/{split-view-toolbar-BwZg4Gmd.mjs → split-view-toolbar-Cv3kcYDE.mjs} +2 -2
- package/package.json +3 -2
- package/dist/package/sync-local/floor.d.ts +0 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { k as Ql, b as Zl, s as eh } from "./index-
|
|
1
|
+
import { k as Ql, b as Zl, s as eh } from "./index-BmAUaDBd.mjs";
|
|
2
2
|
let An = [], Xr = [];
|
|
3
3
|
(() => {
|
|
4
4
|
let s = "lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map((e) => e ? parseInt(e, 36) : 1);
|
package/dist/index.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as e, a as o, E as t, P as d, f as r, h as i, m as n, e as E, c as m, d as u, u as C, v as l } from "./index-
|
|
1
|
+
import { D as e, a as o, E as t, P as d, f as r, h as i, m as n, e as E, c as m, d as u, u as C, v as l } from "./index-BmAUaDBd.mjs";
|
|
2
2
|
export {
|
|
3
3
|
e as DdocEditor,
|
|
4
4
|
o as DdocExportModal,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
var Vr = Object.defineProperty;
|
|
2
2
|
var Wr = (t, e, O) => e in t ? Vr(t, e, { enumerable: !0, configurable: !0, writable: !0, value: O }) : t[e] = O;
|
|
3
3
|
var gt = (t, e, O) => Wr(t, typeof e != "symbol" ? e + "" : e, O);
|
|
4
|
-
import { j as Cr } from "./index-
|
|
4
|
+
import { j as Cr } from "./index-BmAUaDBd.mjs";
|
|
5
5
|
import { useRef as pe, useEffect as St } from "react";
|
|
6
|
-
import { s as y, A as pO, T as dO, a as Gr, S as et, b as Lr, P as fO, E as j, i as QO, c as _, D as le, k as tt, F as Ar, M as Pt, W as Er, R as Ur, d as mO, N as oe, e as V, f as Mr, g as Ot, h as ce, p as $O, j as Y, t as h, l as Ir, I as rt, L as at, m as ye, n as ue, o as Qe, q as gO, r as te, u as SO, v as Br, w as Nr, x as PO, y as kO, z as Dr, B as Fr, C as Kr, G as Oe, H as ZO, J as Jr, K as kt, O as Hr, Q as ea, U as ta, V as Oa, X as ra, Y as aa, Z as ia, _ as sa, $ as na, a0 as la, a1 as oa, a2 as ca } from "./index-
|
|
6
|
+
import { s as y, A as pO, T as dO, a as Gr, S as et, b as Lr, P as fO, E as j, i as QO, c as _, D as le, k as tt, F as Ar, M as Pt, W as Er, R as Ur, d as mO, N as oe, e as V, f as Mr, g as Ot, h as ce, p as $O, j as Y, t as h, l as Ir, I as rt, L as at, m as ye, n as ue, o as Qe, q as gO, r as te, u as SO, v as Br, w as Nr, x as PO, y as kO, z as Dr, B as Fr, C as Kr, G as Oe, H as ZO, J as Jr, K as kt, O as Hr, Q as ea, U as ta, V as Oa, X as ra, Y as aa, Z as ia, _ as sa, $ as na, a0 as la, a1 as oa, a2 as ca } from "./index-DnbtCBdq.mjs";
|
|
7
7
|
class ua {
|
|
8
8
|
/**
|
|
9
9
|
Create a new completion context. (Mostly useful for testing
|
|
@@ -17,6 +17,7 @@ interface UseTabEditorArgs {
|
|
|
17
17
|
initialContent: DdocProps['initialContent'];
|
|
18
18
|
collaboration?: CollaborationProps;
|
|
19
19
|
isReady?: boolean;
|
|
20
|
+
isSyncing?: boolean;
|
|
20
21
|
awareness?: any;
|
|
21
22
|
disableInlineComment?: boolean;
|
|
22
23
|
isFocusMode?: boolean;
|
|
@@ -44,8 +45,6 @@ interface UseTabEditorArgs {
|
|
|
44
45
|
ignoreCorruptedData?: boolean;
|
|
45
46
|
onCollaboratorChange?: DdocProps['onCollaboratorChange'];
|
|
46
47
|
onConnect: (connectConfig: CollabConnectionConfig) => void;
|
|
47
|
-
onDisconnect: () => void;
|
|
48
|
-
isIndexeddbSynced: boolean;
|
|
49
48
|
hasCollabContentInitialised?: boolean;
|
|
50
49
|
initialiseYjsIndexedDbProvider: () => Promise<void>;
|
|
51
50
|
externalExtensions?: Record<string, AnyExtension>;
|
|
@@ -57,7 +56,7 @@ interface UseTabEditorArgs {
|
|
|
57
56
|
initialCommentAnchors?: SerializedCommentAnchor[];
|
|
58
57
|
dBlockRuntimeStateRef?: DBlockRuntimeStateRef;
|
|
59
58
|
}
|
|
60
|
-
export declare const useTabEditor: ({ ydoc, isVersionMode, hasTabState, versionId, isPreviewMode, viewerMode, initialContent, collaboration, isReady, awareness, disableInlineComment, isFocusMode, onCommentInteraction, onError, ipfsImageUploadFn, metadataProxyUrl, onCopyHeadingLink, ipfsImageFetchFn, fetchV1ImageFn, isConnected, activeModel, maxTokens, isAIAgentEnabled, setCharacterCount, setWordCount, setSelectedWordCount, setPageCount, setIsContentLoading, setIsCollabContentLoading, unFocused, zoomLevel, isPresentationMode, onInvalidContentError, ignoreCorruptedData, onCollaboratorChange, onConnect,
|
|
59
|
+
export declare const useTabEditor: ({ ydoc, isVersionMode, hasTabState, versionId, isPreviewMode, viewerMode, initialContent, collaboration, isReady, isSyncing, awareness, disableInlineComment, isFocusMode, onCommentInteraction, onError, ipfsImageUploadFn, metadataProxyUrl, onCopyHeadingLink, ipfsImageFetchFn, fetchV1ImageFn, isConnected, activeModel, maxTokens, isAIAgentEnabled, setCharacterCount, setWordCount, setSelectedWordCount, setPageCount, setIsContentLoading, setIsCollabContentLoading, unFocused, zoomLevel, isPresentationMode, onInvalidContentError, ignoreCorruptedData, onCollaboratorChange, onConnect, hasCollabContentInitialised, initialiseYjsIndexedDbProvider, externalExtensions, isContentLoading, activeTabId, tabIds, theme, editorRef, initialCommentAnchors, dBlockRuntimeStateRef, }: UseTabEditorArgs) => {
|
|
61
60
|
editor: Editor | null;
|
|
62
61
|
cachedEditorEntries: import('./use-tab-editor-cache').CachedTabEditorRenderEntry[];
|
|
63
62
|
ref: import('react').RefObject<HTMLDivElement>;
|
|
@@ -11,7 +11,6 @@ interface UseYjsSetupArgs {
|
|
|
11
11
|
export declare const useYjsSetup: ({ onChange, enableIndexeddbSync, ddocId, collaboration, onIndexedDbError, }: UseYjsSetupArgs) => {
|
|
12
12
|
ydoc: Y.Doc;
|
|
13
13
|
onConnect: (connectConfig: import('../types').CollabConnectionConfig) => void;
|
|
14
|
-
onDisconnect: () => void;
|
|
15
14
|
isReady: boolean;
|
|
16
15
|
isSyncing: boolean;
|
|
17
16
|
terminateSession: () => void;
|
|
@@ -11,23 +11,21 @@ export declare class SyncManager {
|
|
|
11
11
|
private roomKeyBytes;
|
|
12
12
|
private isOwner;
|
|
13
13
|
private updateQueue;
|
|
14
|
+
private uncommittedUpdatesIdList;
|
|
14
15
|
private contentTobeAppliedQueue;
|
|
15
16
|
private isProcessing;
|
|
16
17
|
private syncId;
|
|
17
|
-
private floor;
|
|
18
|
-
private updatesSinceSnapshot;
|
|
19
|
-
private isAuthoringSnapshot;
|
|
20
|
-
private readonly SNAPSHOT_THRESHOLD;
|
|
21
18
|
private flushTimer;
|
|
22
19
|
private readonly FLUSH_INTERVAL_MS;
|
|
23
20
|
private readonly MAX_QUEUE_SIZE;
|
|
24
21
|
private _awarenessUpdateHandler;
|
|
25
22
|
private ydoc;
|
|
23
|
+
private servicesRef;
|
|
26
24
|
private callbacksRef;
|
|
27
25
|
private onLocalUpdate?;
|
|
28
26
|
constructor(config: SyncManagerConfig, onCollabStateChange: (state: CollabState) => void);
|
|
29
27
|
/** Called by useSyncManager on every render to keep refs fresh */
|
|
30
|
-
updateRefs(
|
|
28
|
+
updateRefs(services: CollabServices | undefined, callbacks: CollabCallbacks | undefined, onLocalUpdate?: (updatedDocContent: string, updateChunk: string) => void): void;
|
|
31
29
|
get isConnected(): boolean;
|
|
32
30
|
get isReady(): boolean;
|
|
33
31
|
get awareness(): Awareness | null;
|
|
@@ -48,24 +46,21 @@ export declare class SyncManager {
|
|
|
48
46
|
* Fire-and-forget: merge all queued updates, encrypt, and emit via Socket.IO
|
|
49
47
|
* without awaiting the server ACK. The server broadcasts to peers immediately
|
|
50
48
|
* (before MongoDB write), so content reaches observers in near-real-time.
|
|
49
|
+
* ACK callback handles updateId tracking and auto-commit asynchronously.
|
|
51
50
|
*/
|
|
52
51
|
private sendUpdateBatch;
|
|
53
|
-
private maybeAuthorSnapshotAfterSend;
|
|
54
|
-
buildPendingBeaconPayload(): string | null;
|
|
55
|
-
fireBeacon(): void;
|
|
56
52
|
forceCleanup(): void;
|
|
57
53
|
private handleConnectionError;
|
|
58
54
|
private handleReconnection;
|
|
59
55
|
private connectSocket;
|
|
60
|
-
private
|
|
61
|
-
private catchUpFloor;
|
|
62
|
-
private authorSnapshot;
|
|
63
|
-
private hydrate;
|
|
56
|
+
private syncLatestCommit;
|
|
64
57
|
private initializeAwareness;
|
|
65
58
|
private cleanupAwareness;
|
|
59
|
+
private commitLocalContents;
|
|
66
60
|
private broadcastLocalContents;
|
|
67
61
|
private processUpdateQueue;
|
|
68
62
|
private processNextUpdate;
|
|
63
|
+
private processCommit;
|
|
69
64
|
private handleRemoteContentUpdate;
|
|
70
65
|
private applyRemoteYjsUpdate;
|
|
71
66
|
private applyQueuedRemoteContents;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ISocketInitConfig, RoomMember, SocketStatusEnum, SendUpdateResponse,
|
|
1
|
+
import { ISocketInitConfig, RoomMember, SocketStatusEnum, SendUpdateResponse, CommitResponse, AckResponse } from './types';
|
|
2
2
|
import { Awareness } from 'y-protocols/awareness.js';
|
|
3
3
|
|
|
4
4
|
interface ISocketClientConfig {
|
|
@@ -8,11 +8,6 @@ interface ISocketClientConfig {
|
|
|
8
8
|
ownerEdSecret?: string;
|
|
9
9
|
contractAddress?: string;
|
|
10
10
|
ownerAddress?: string;
|
|
11
|
-
ownerIdentityDid?: string;
|
|
12
|
-
editLock?: string;
|
|
13
|
-
encryptedTitle?: string;
|
|
14
|
-
identityToken?: string;
|
|
15
|
-
identityContractAddress?: string;
|
|
16
11
|
onHandshakeData?: (response: {
|
|
17
12
|
data: AckResponse;
|
|
18
13
|
roomKey: string;
|
|
@@ -25,8 +20,6 @@ interface ISocketClientConfig {
|
|
|
25
20
|
}
|
|
26
21
|
export declare class SocketClient {
|
|
27
22
|
private _socketUrl;
|
|
28
|
-
private _restBase;
|
|
29
|
-
private _lastSessionToken;
|
|
30
23
|
private _socket;
|
|
31
24
|
private _webSocketStatus;
|
|
32
25
|
private _isIntentionalDisconnect;
|
|
@@ -41,11 +34,6 @@ export declare class SocketClient {
|
|
|
41
34
|
private ownerUcan?;
|
|
42
35
|
private collaborationUcan?;
|
|
43
36
|
private ownerAddress?;
|
|
44
|
-
private ownerIdentityDid?;
|
|
45
|
-
private editLock?;
|
|
46
|
-
private encryptedTitle?;
|
|
47
|
-
private identityToken?;
|
|
48
|
-
private identityContractAddress?;
|
|
49
37
|
private roomKey;
|
|
50
38
|
private roomInfo?;
|
|
51
39
|
private awareness;
|
|
@@ -58,17 +46,15 @@ export declare class SocketClient {
|
|
|
58
46
|
sendUpdate({ update }: {
|
|
59
47
|
update: string;
|
|
60
48
|
}): Promise<SendUpdateResponse>;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
setDocumentMeta(): Promise<void>;
|
|
49
|
+
commitUpdates({ updates, cid }: {
|
|
50
|
+
updates: string[];
|
|
51
|
+
cid: string;
|
|
52
|
+
}): Promise<CommitResponse>;
|
|
53
|
+
fetchLatestCommit(): Promise<AckResponse<any>>;
|
|
54
|
+
getUncommittedChanges(): Promise<AckResponse<any>>;
|
|
68
55
|
broadcastAwareness(awarenessUpdate: string): Promise<void>;
|
|
69
56
|
disconnect: () => void;
|
|
70
57
|
terminateSession: () => Promise<void>;
|
|
71
|
-
flushBeacon(mergedUpdate: string): void;
|
|
72
58
|
private getCollaborationKeyPair;
|
|
73
59
|
private isUcanValid;
|
|
74
60
|
private getOwnerToken;
|
|
@@ -7,20 +7,6 @@ export interface CollabConnectionConfig {
|
|
|
7
7
|
roomId: string;
|
|
8
8
|
wsUrl: string;
|
|
9
9
|
isOwner: boolean;
|
|
10
|
-
/** Host signal: doc is in an active live-collaboration context (shared / peers present). Keeps the socket connected. */
|
|
11
|
-
livePresence?: boolean;
|
|
12
|
-
/** Host signal: connect once on open to initialise durability even without an edit. */
|
|
13
|
-
connectOnOpen?: boolean;
|
|
14
|
-
/** Host signal (owner-only): the owner identity signingKey DID. Recorded by the durable server on the first owner /auth as the R3 owner binding. */
|
|
15
|
-
ownerIdentityDid?: string;
|
|
16
|
-
/** Host signal (owner-only): wrapped roomKey bytes (owner-lock construction), uploaded as the server editLock recovery artifact. Opaque to the package. */
|
|
17
|
-
editLock?: string;
|
|
18
|
-
/** Host signal (owner-only): the document title encrypted with the roomKey, uploaded as the server title recovery artifact. Opaque to the package. */
|
|
19
|
-
encryptedTitle?: string;
|
|
20
|
-
/** Host signal (owner-only): Ed25519 UCAN proving the owner identity, sent on /auth so the server binds the CRYPTOGRAPHICALLY PROVEN owner DID (not a bare asserted string). Opaque to the package. */
|
|
21
|
-
identityToken?: string;
|
|
22
|
-
/** Host signal (owner-only): the identity contract address the server reads to resolve the on-chain signingDid that verifies identityToken. */
|
|
23
|
-
identityContractAddress?: string;
|
|
24
10
|
ownerEdSecret?: string;
|
|
25
11
|
contractAddress?: string;
|
|
26
12
|
ownerAddress?: string;
|
|
@@ -35,7 +21,11 @@ export interface CollabSessionMeta {
|
|
|
35
21
|
username: string;
|
|
36
22
|
isEns?: boolean;
|
|
37
23
|
}
|
|
38
|
-
|
|
24
|
+
/** Storage integrations the sync engine depends on */
|
|
25
|
+
export interface CollabServices {
|
|
26
|
+
commitToStorage?: (file: File) => Promise<string>;
|
|
27
|
+
fetchFromStorage?: (cid: string) => Promise<any>;
|
|
28
|
+
}
|
|
39
29
|
export type CollabErrorCode = 'CONNECTION_FAILED' | 'AUTH_FAILED' | 'SYNC_FAILED' | 'TIMEOUT' | 'UNKNOWN';
|
|
40
30
|
export type CollabError = {
|
|
41
31
|
code: CollabErrorCode;
|
|
@@ -155,30 +145,11 @@ export interface SendUpdateResponse extends AckResponse<{
|
|
|
155
145
|
createdAt: number;
|
|
156
146
|
}> {
|
|
157
147
|
}
|
|
158
|
-
export interface
|
|
159
|
-
|
|
148
|
+
export interface CommitResponse extends AckResponse<{
|
|
149
|
+
cid: string;
|
|
150
|
+
createdAt: number;
|
|
160
151
|
documentId: string;
|
|
161
|
-
|
|
162
|
-
data: string;
|
|
163
|
-
updateType: string;
|
|
164
|
-
committed?: boolean;
|
|
165
|
-
commitCid?: string | null;
|
|
166
|
-
createdAt?: number;
|
|
167
|
-
sessionDid?: string;
|
|
168
|
-
publishedMarker?: string | null;
|
|
169
|
-
floorSeq?: number | null;
|
|
170
|
-
}
|
|
171
|
-
export interface HydrationResponse extends AckResponse<{
|
|
172
|
-
history: HydrationRow[];
|
|
173
|
-
total: number;
|
|
174
|
-
snapshot: HydrationRow | null;
|
|
175
|
-
nextSeq: number | null;
|
|
176
|
-
hasMore: boolean;
|
|
177
|
-
}> {
|
|
178
|
-
}
|
|
179
|
-
export interface SnapshotResponse extends AckResponse<{
|
|
180
|
-
id: string;
|
|
181
|
-
seq: number;
|
|
152
|
+
updates: string[];
|
|
182
153
|
}> {
|
|
183
154
|
}
|
|
184
155
|
export interface ISocketInitConfig {
|
|
@@ -225,7 +196,4 @@ export interface IAuthArgs {
|
|
|
225
196
|
contractAddress?: string;
|
|
226
197
|
sessionDid?: string;
|
|
227
198
|
roomInfo?: string;
|
|
228
|
-
ownerIdentityDid?: string;
|
|
229
|
-
identityToken?: string;
|
|
230
|
-
identityContractAddress?: string;
|
|
231
199
|
}
|
|
@@ -28,7 +28,6 @@ export declare const useDdocEditor: ({ isPreviewMode, viewerMode, initialContent
|
|
|
28
28
|
duplicateTab: (tabId: string) => string | undefined;
|
|
29
29
|
orderTab: (destinationTabId: string, movedTabId: string) => void;
|
|
30
30
|
onConnect: (connectConfig: import('./types').CollabConnectionConfig) => void;
|
|
31
|
-
onDisconnect: () => void;
|
|
32
31
|
isReady: boolean;
|
|
33
32
|
isSyncing: boolean;
|
|
34
33
|
hasCollabContentInitialised: boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { j as d } from "./index-
|
|
1
|
+
import { j as d } from "./index-BmAUaDBd.mjs";
|
|
2
2
|
import { useRef as I, useState as N, useEffect as D } from "react";
|
|
3
3
|
import { DynamicDropdown as E, Tooltip as R, IconButton as O } from "@fileverse/ui";
|
|
4
|
-
import { a3 as A, a4 as P, c as y } from "./index-
|
|
4
|
+
import { a3 as A, a4 as P, c as y } from "./index-DnbtCBdq.mjs";
|
|
5
5
|
const p = (e, t, o = t) => {
|
|
6
6
|
const { state: s } = e, l = s.changeByRange((n) => {
|
|
7
7
|
const u = s.sliceDoc(n.from, n.to), r = s.sliceDoc(
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@fileverse-dev/ddoc",
|
|
3
3
|
"private": false,
|
|
4
4
|
"description": "DDoc",
|
|
5
|
-
"version": "4.2.0
|
|
5
|
+
"version": "4.2.0",
|
|
6
6
|
"main": "dist/index.es.js",
|
|
7
7
|
"module": "dist/index.es.js",
|
|
8
8
|
"exports": {
|
|
@@ -121,6 +121,7 @@
|
|
|
121
121
|
"y-indexeddb": "^9.0.12",
|
|
122
122
|
"y-prosemirror": "^1.2.5",
|
|
123
123
|
"y-protocols": "^1.0.6",
|
|
124
|
+
"y-webrtc": "^10.3.0",
|
|
124
125
|
"yjs": "^13.6.15",
|
|
125
126
|
"zustand": "^5.0.12"
|
|
126
127
|
},
|
|
@@ -166,4 +167,4 @@
|
|
|
166
167
|
"vite": "^5.0.0",
|
|
167
168
|
"vitest": "^2.1.0"
|
|
168
169
|
}
|
|
169
|
-
}
|
|
170
|
+
}
|