@univerjs-pro/collaboration-client 0.4.1 → 0.4.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/lib/cjs/index.js +1 -1
- package/lib/es/index.js +1 -1
- package/lib/types/controllers/collaboration/collaboration-entity.d.ts +5 -3
- package/lib/types/controllers/collaboration/collaboration-state.d.ts +32 -1
- package/lib/types/controllers/collaboration/utils/changeset-utils.d.ts +2 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/plugin.d.ts +1 -1
- package/lib/types/services/auth-server/util.d.ts +1 -0
- package/lib/types/services/collaboration-session/collaboration-session.d.ts +4 -4
- package/lib/types/services/ime-cache-transform/doc-transform-ime-cache.service.d.ts +1 -1
- package/lib/types/services/member/member.service.d.ts +39 -0
- package/lib/types/services/state-cache-transform/doc-transform-state-cache.service.d.ts +12 -0
- package/lib/types/services/sync-editing-collab-cursor/doc-sync-editing-collab-cursor.service.d.ts +1 -1
- package/lib/types/services/text-selection/doc-transform-selections.service.d.ts +1 -1
- package/lib/umd/index.js +1 -1
- package/package.json +20 -18
@@ -1,7 +1,6 @@
|
|
1
|
-
import { IDisposable, IMutationInfo, ICommandService, ILogService, Injector, IPermissionService, LocaleService, RxDisposable } from '@univerjs/core';
|
1
|
+
import { IDisposable, IMutationInfo, Nullable, ICommandService, ILogService, Injector, IPermissionService, LocaleService, RxDisposable } from '@univerjs/core';
|
2
2
|
import { UniverType } from '@univerjs/protocol';
|
3
3
|
import { Observable, BehaviorSubject } from 'rxjs';
|
4
|
-
import { Nullable } from 'vitest';
|
5
4
|
import { CollaborationSession } from '../../services/collaboration-session/collaboration-session';
|
6
5
|
import { CollaborationState, ICollaborationStateHandler, CollaborationStatus } from './collaboration-state';
|
7
6
|
import { DocStateChangeManagerService } from '@univerjs/docs-ui';
|
@@ -11,6 +10,7 @@ import { DocTransformIMECacheService } from '../../services/ime-cache-transform/
|
|
11
10
|
import { LocalCacheService } from '../../services/local-cache/local-cache.service';
|
12
11
|
import { SheetTransformSelectionsService } from '../../services/range-selection/sheet-transform-selections.service';
|
13
12
|
import { ISingleActiveUnitService } from '../../services/single-active-unit/single-active-unit.service';
|
13
|
+
import { DocTransformStateCacheService } from '../../services/state-cache-transform/doc-transform-state-cache.service';
|
14
14
|
import { DocSyncEditingCollabCursorService } from '../../services/sync-editing-collab-cursor/doc-sync-editing-collab-cursor.service';
|
15
15
|
import { DocTransformSelectionsService } from '../../services/text-selection/doc-transform-selections.service';
|
16
16
|
/**
|
@@ -60,6 +60,7 @@ export declare abstract class CollaborationEntity extends RxDisposable {
|
|
60
60
|
private _applyRemoteChangeset;
|
61
61
|
private _onRemoteACK;
|
62
62
|
private _onRemoteRejected;
|
63
|
+
private _onRemoteRetry;
|
63
64
|
private _onFetchMissResult;
|
64
65
|
private _toggleOffline;
|
65
66
|
private _toggleOnline;
|
@@ -73,9 +74,10 @@ export declare class DocCollaborationEntity extends CollaborationEntity {
|
|
73
74
|
readonly type: UniverType;
|
74
75
|
private readonly _docStateChangeManagerService;
|
75
76
|
private readonly _docTransformIMECacheService;
|
77
|
+
private readonly _docTransformStateCacheService;
|
76
78
|
private readonly _docTransformSelectionsService;
|
77
79
|
private readonly _docSyncEditingCollabCursorService;
|
78
|
-
constructor(unitID: string, type: UniverType, session: CollaborationSession, injector: Injector, localCacheService: LocalCacheService, compressMutationService: CompressMutationService, localeService: LocaleService, revisionService: RevisionService, _docStateChangeManagerService: DocStateChangeManagerService, _docTransformIMECacheService: DocTransformIMECacheService, _docTransformSelectionsService: DocTransformSelectionsService, _docSyncEditingCollabCursorService: DocSyncEditingCollabCursorService, logService: ILogService, commandService: ICommandService, messageService: IMessageService, permissionService: IPermissionService, singleActiveUnitService?: ISingleActiveUnitService);
|
80
|
+
constructor(unitID: string, type: UniverType, session: CollaborationSession, injector: Injector, localCacheService: LocalCacheService, compressMutationService: CompressMutationService, localeService: LocaleService, revisionService: RevisionService, _docStateChangeManagerService: DocStateChangeManagerService, _docTransformIMECacheService: DocTransformIMECacheService, _docTransformStateCacheService: DocTransformStateCacheService, _docTransformSelectionsService: DocTransformSelectionsService, _docSyncEditingCollabCursorService: DocSyncEditingCollabCursorService, logService: ILogService, commandService: ICommandService, messageService: IMessageService, permissionService: IPermissionService, singleActiveUnitService?: ISingleActiveUnitService);
|
79
81
|
protected _createHandler(): ICollaborationStateHandler;
|
80
82
|
protected _init(): Promise<CollaborationState>;
|
81
83
|
}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { IMutationInfo, Nullable, ICommandService, IConfigService, ILogService, Injector, IPermissionService, IUniverInstanceService, LocaleService } from '@univerjs/core';
|
2
2
|
import { IAcknowledgedChangeset, IChangeset, ITransformService, RevisionService } from '@univerjs-pro/collaboration';
|
3
|
+
import { Observable } from 'rxjs';
|
3
4
|
import { ICollabEditingCursor } from '../../services/sync-editing-collab-cursor/doc-sync-editing-collab-cursor.service';
|
4
5
|
import { ICollaborativeUndoRedoService } from '../../services/undoredo/collaborative-undoredo.service';
|
5
6
|
import { UniverType } from '@univerjs/protocol';
|
@@ -16,16 +17,20 @@ export type MissingChangesetsHandler = (params: {
|
|
16
17
|
}) => void;
|
17
18
|
export type TransformSelectionsHandler = (changeset: IChangeset) => void;
|
18
19
|
export type TransformIMEHandler = (changeset: IChangeset) => void;
|
20
|
+
export type TransformStateHandler = (changeset: IChangeset) => void;
|
19
21
|
export type SyncEditingCollabCursorHandler = (params: ICollabEditingCursor) => void;
|
20
22
|
export type TransformRemoteChangesetByIMECache = (changeset: IChangeset) => IChangeset;
|
23
|
+
export type TransformRemoteChangesetByStateCache = (changeset: IChangeset) => IChangeset;
|
21
24
|
export interface ICollaborationStateHandler {
|
22
25
|
onStateChange: StateChangeHandler;
|
23
26
|
onSendChangeset: SendChangesetHandler;
|
24
27
|
onMissingChangesets: MissingChangesetsHandler;
|
25
28
|
onTransformSelections?: TransformSelectionsHandler;
|
26
29
|
onTransformIME?: TransformIMEHandler;
|
30
|
+
onTransformState?: TransformStateHandler;
|
27
31
|
onSyncEditingCollabCursor?: SyncEditingCollabCursorHandler;
|
28
32
|
onTransformRemoteChangesetByIMECache?: TransformRemoteChangesetByIMECache;
|
33
|
+
onTransformRemoteChangesetByStateCache?: TransformRemoteChangesetByStateCache;
|
29
34
|
}
|
30
35
|
export declare enum CollaborationStatus {
|
31
36
|
NOT_COLLAB = "not_collab",
|
@@ -80,6 +85,10 @@ export declare abstract class CollaborationState {
|
|
80
85
|
abstract onRemoteRej(config?: {
|
81
86
|
isPermissionRej: boolean;
|
82
87
|
}): CollaborationState;
|
88
|
+
/**
|
89
|
+
* Received a retry message from the server, meaning that some unexpected error occurred in server.
|
90
|
+
*/
|
91
|
+
abstract onRemoteRetry(changeset: IChangeset): CollaborationState;
|
83
92
|
abstract toggleOffline(): CollaborationState;
|
84
93
|
abstract toggleOnline(): CollaborationState;
|
85
94
|
/**
|
@@ -95,7 +104,9 @@ export declare abstract class CollaborationState {
|
|
95
104
|
/** Transform selections by calling the selection manager service. */
|
96
105
|
protected _transformSelections(changeset: IChangeset): void;
|
97
106
|
protected _transformIMECache(changeset: IChangeset): void | undefined;
|
107
|
+
protected _transformStateCache(changeset: IChangeset): void | undefined;
|
98
108
|
protected _transformRemoteChangesetByIMECache(changeset: IChangeset): IChangeset;
|
109
|
+
protected _transformRemoteChangesetByStateCache(changeset: IChangeset): IChangeset;
|
99
110
|
protected _syncEditingCollabCursor(changeset: IChangeset): void;
|
100
111
|
/** @internal */
|
101
112
|
_updateLocalCache(): void;
|
@@ -117,6 +128,7 @@ export declare class SyncedState extends CollaborationState {
|
|
117
128
|
private _onConflict;
|
118
129
|
onRemoteAck(): never;
|
119
130
|
onRemoteRej(): CollaborationState;
|
131
|
+
onRemoteRetry(): CollaborationState;
|
120
132
|
toggleOffline(): CollaborationState;
|
121
133
|
toggleOnline(): CollaborationState;
|
122
134
|
resend(): void;
|
@@ -142,6 +154,7 @@ export declare class PendingState extends CollaborationState {
|
|
142
154
|
onRemoteChangeset(changeset: IChangeset): CollaborationState;
|
143
155
|
onRemoteAck(): CollaborationState;
|
144
156
|
onRemoteRej(): CollaborationState;
|
157
|
+
onRemoteRetry(): CollaborationState;
|
145
158
|
toggleOffline(): CollaborationState;
|
146
159
|
toggleOnline(): CollaborationState;
|
147
160
|
/**
|
@@ -163,6 +176,9 @@ export declare class AwaitingState extends CollaborationState {
|
|
163
176
|
private readonly _logService;
|
164
177
|
private readonly _transformService;
|
165
178
|
readonly status = CollaborationStatus.AWAITING;
|
179
|
+
private _resendTimeout;
|
180
|
+
private _resendTimer;
|
181
|
+
private _sender;
|
166
182
|
constructor(unitID: string, type: UniverType, awaitingChangeset: IChangeset, handler: ICollaborationStateHandler, _injector: Injector, revisionService: RevisionService, localCacheService: LocalCacheService, commandService: ICommandService, _logService: ILogService, _transformService: ITransformService, undoRedoService: ICollaborativeUndoRedoService);
|
167
183
|
appendMutation(mutation: IMutationInfo): CollaborationState;
|
168
184
|
onRemoteChangeset(changeset: IChangeset): CollaborationState;
|
@@ -170,10 +186,13 @@ export declare class AwaitingState extends CollaborationState {
|
|
170
186
|
onRemoteRej(config?: {
|
171
187
|
isPermissionRej: boolean;
|
172
188
|
}): CollaborationState;
|
189
|
+
onRemoteRetry(changeset: IChangeset): CollaborationState;
|
173
190
|
toggleOffline(): CollaborationState;
|
174
191
|
toggleOnline(): CollaborationState;
|
175
192
|
resend(): void;
|
176
193
|
private _onConflict;
|
194
|
+
private _resendWithTimeout;
|
195
|
+
private _clearScheduledTask;
|
177
196
|
}
|
178
197
|
/**
|
179
198
|
* Some local mutations are sent to the server and waiting for acknowledgement, yet still some local mutations
|
@@ -184,17 +203,26 @@ export declare class AwaitingWithPendingState extends CollaborationState {
|
|
184
203
|
private readonly _logService;
|
185
204
|
private readonly _transformService;
|
186
205
|
readonly status = CollaborationStatus.AWAITING_WITH_PENDING;
|
187
|
-
|
206
|
+
private _resendTimeout;
|
207
|
+
private _resendTimer;
|
208
|
+
private _sender;
|
209
|
+
constructor(unitID: string, type: UniverType, awaitingChangeset: IChangeset, pendingMutations: IMutationInfo[], handler: ICollaborationStateHandler, timer: Observable<{
|
210
|
+
timeout: number;
|
211
|
+
reqId: number;
|
212
|
+
}> | undefined, _injector: Injector, revisionService: RevisionService, localCacheService: LocalCacheService, commandService: ICommandService, _logService: ILogService, _transformService: ITransformService, undoRedoService: ICollaborativeUndoRedoService);
|
188
213
|
appendMutation(mutation: IMutationInfo): CollaborationState;
|
189
214
|
onRemoteChangeset(changeset: IChangeset): CollaborationState;
|
190
215
|
onRemoteAck(changeset: IAcknowledgedChangeset): CollaborationState;
|
191
216
|
onRemoteRej(config?: {
|
192
217
|
isPermissionRej: boolean;
|
193
218
|
}): CollaborationState;
|
219
|
+
onRemoteRetry(changeset: IChangeset): CollaborationState;
|
194
220
|
toggleOffline(): CollaborationState;
|
195
221
|
toggleOnline(): CollaborationState;
|
196
222
|
resend(): void;
|
197
223
|
private _onConflict;
|
224
|
+
private _resendWithTimeout;
|
225
|
+
private _clearScheduledTask;
|
198
226
|
}
|
199
227
|
/**
|
200
228
|
* This state is special for handling collaboration conflicts.
|
@@ -213,6 +241,7 @@ export declare class ConflictState extends CollaborationState {
|
|
213
241
|
onRemoteChangeset(): CollaborationState;
|
214
242
|
onRemoteAck(): CollaborationState;
|
215
243
|
onRemoteRej(): CollaborationState;
|
244
|
+
onRemoteRetry(): CollaborationState;
|
216
245
|
toggleOffline(): CollaborationState;
|
217
246
|
toggleOnline(): CollaborationState;
|
218
247
|
resend(): void;
|
@@ -228,6 +257,7 @@ export declare class OfflineState extends CollaborationState {
|
|
228
257
|
onRemoteChangeset(_changeset: IChangeset): CollaborationState;
|
229
258
|
onRemoteAck(): CollaborationState;
|
230
259
|
onRemoteRej(): CollaborationState;
|
260
|
+
onRemoteRetry(): CollaborationState;
|
231
261
|
toggleOffline(): CollaborationState;
|
232
262
|
toggleOnline(): CollaborationState;
|
233
263
|
resend(): void;
|
@@ -265,6 +295,7 @@ export declare class FetchingMissState extends CollaborationState {
|
|
265
295
|
onRemoteRej(config?: {
|
266
296
|
isPermissionRej: boolean;
|
267
297
|
}): CollaborationState;
|
298
|
+
onRemoteRetry(): CollaborationState;
|
268
299
|
toggleOffline(): CollaborationState;
|
269
300
|
toggleOnline(): CollaborationState;
|
270
301
|
private _onConflict;
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { IMutationInfo, IUniverInstanceService } from '@univerjs/core';
|
2
2
|
import { IChangeset, RevisionService } from '@univerjs-pro/collaboration';
|
3
|
+
import { Observable } from 'rxjs';
|
3
4
|
import { MemberService } from '../../../services/member/member.service';
|
4
5
|
export interface IAssembledChangeset {
|
5
6
|
changeset: IChangeset;
|
@@ -14,3 +15,4 @@ export declare const SINGLE_CHANGESET_MUTATIONS: Set<string>;
|
|
14
15
|
*/
|
15
16
|
export declare function assembleSheetChangeset(pendingMutations: IMutationInfo[], unitID: string, univerInstanceService: IUniverInstanceService, revisionService: RevisionService, memberService: MemberService): IAssembledChangeset;
|
16
17
|
export declare function assembleDocChangeset(pendingMutations: IMutationInfo[], unitID: string, univerInstanceService: IUniverInstanceService, revisionService: RevisionService, memberService: MemberService): IAssembledChangeset;
|
18
|
+
export declare function createTimerObservable$<T>(ms: number, options: T): Observable<T>;
|
package/lib/types/index.d.ts
CHANGED
@@ -31,3 +31,4 @@ export { SnapshotServerOverHTTPService } from './services/snapshot-server/snapsh
|
|
31
31
|
export { CommentService } from './services/comment/comment.service';
|
32
32
|
export { type ISheetCollabCursorShapeProps, SheetCollabCursorShape } from './views/shapes/sheet-collab-cursor.shape';
|
33
33
|
export { ImageIoService } from './services/image-remote/image-io.service';
|
34
|
+
export { MemberService } from './services/member/member.service';
|
package/lib/types/plugin.d.ts
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
export declare function getAttachHeader(): string | undefined;
|
@@ -1,11 +1,11 @@
|
|
1
|
-
import { IConfigService, ILogService, LocaleService, RxDisposable
|
2
|
-
import { ITelemetryService } from '@univerjs/telemetry';
|
3
|
-
import { IBeforeCloseService, IMessageService } from '@univerjs/ui';
|
1
|
+
import { IDisposable, Nullable, IConfigService, ILogService, LocaleService, RxDisposable } from '@univerjs/core';
|
4
2
|
import { ICollaborationEvent } from '@univerjs-pro/collaboration';
|
5
3
|
import { Observable } from 'rxjs';
|
4
|
+
import { ICollaborationSocket } from '../socket/collaboration-socket.service';
|
5
|
+
import { ITelemetryService } from '@univerjs/telemetry';
|
6
|
+
import { IBeforeCloseService, IMessageService } from '@univerjs/ui';
|
6
7
|
import { CommentService } from '../comment/comment.service';
|
7
8
|
import { MemberService } from '../member/member.service';
|
8
|
-
import { ICollaborationSocket } from '../socket/collaboration-socket.service';
|
9
9
|
export declare enum SessionStatus {
|
10
10
|
IDLE = 0,
|
11
11
|
JOINING = 1,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { IChangeset, ITransformService } from '@univerjs-pro/collaboration';
|
2
2
|
import { Injector } from '@univerjs/core';
|
3
3
|
import { IRenderManagerService } from '@univerjs/engine-render';
|
4
4
|
export declare class DocTransformIMECacheService {
|
@@ -19,9 +19,30 @@ export declare class MemberService extends Disposable {
|
|
19
19
|
* @deprecated please use userManagerService
|
20
20
|
*/
|
21
21
|
getCurrentUser(): Nullable<IUser>;
|
22
|
+
/**
|
23
|
+
* Update a member in a room(unit).
|
24
|
+
* @param roomID i.e. unitID.
|
25
|
+
* @param member member object to be updated.
|
26
|
+
*/
|
22
27
|
updateMember(roomID: string, member: IMember): void;
|
28
|
+
/**
|
29
|
+
* Remove a member from a room(unit).
|
30
|
+
* @param roomID i.e. unitID.
|
31
|
+
* @param memberID memberID of the member to be removed.
|
32
|
+
*/
|
23
33
|
removeMember(roomID: string, memberID: string): void;
|
34
|
+
/**
|
35
|
+
* Get RoomMember for a unit.
|
36
|
+
* @param roomID which is same with unitId.
|
37
|
+
* @returns RoomMember which is a object that manages members in a single room.
|
38
|
+
*/
|
24
39
|
getRoom(roomID: string): RoomMember | undefined;
|
40
|
+
/**
|
41
|
+
* Get a member in a room(unit).
|
42
|
+
* @param roomID i.e. unitID.
|
43
|
+
* @param memberID memberID of the member to be retrieved.
|
44
|
+
* @returns member object.
|
45
|
+
*/
|
25
46
|
getMember(roomID: string, memberID: string): IMember | undefined;
|
26
47
|
private _removeRoom;
|
27
48
|
dispose(): void;
|
@@ -32,7 +53,25 @@ export declare class MemberService extends Disposable {
|
|
32
53
|
export declare class RoomMember extends Disposable {
|
33
54
|
private readonly _members;
|
34
55
|
dispose(): void;
|
56
|
+
/**
|
57
|
+
* Update a member in the room(unit).
|
58
|
+
* @param member member object to be updated.
|
59
|
+
*/
|
35
60
|
updateMember(member: IMember): void;
|
61
|
+
/**
|
62
|
+
* Remove a member from the room(unit).
|
63
|
+
* @param memberID memberID of the member to be removed.
|
64
|
+
*/
|
36
65
|
removeMember(memberID: string): void;
|
66
|
+
/**
|
67
|
+
* Get a member by memberID.
|
68
|
+
* @param memberID
|
69
|
+
* @returns member object.
|
70
|
+
*/
|
37
71
|
getMember(memberID: string): IMember | undefined;
|
72
|
+
/**
|
73
|
+
* Get all members in the room(unit).
|
74
|
+
* @returns member object array.
|
75
|
+
*/
|
76
|
+
getAllMembers(): IMember[];
|
38
77
|
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { IChangeset, ITransformService } from '@univerjs-pro/collaboration';
|
2
|
+
import { Injector } from '@univerjs/core';
|
3
|
+
import { DocStateChangeManagerService } from '@univerjs/docs-ui';
|
4
|
+
export declare class DocTransformStateCacheService {
|
5
|
+
private readonly _injector;
|
6
|
+
private readonly _transformService;
|
7
|
+
private readonly _docStateChangeManagerService;
|
8
|
+
constructor(_injector: Injector, _transformService: ITransformService, _docStateChangeManagerService: DocStateChangeManagerService);
|
9
|
+
transformStateCache(changeset: IChangeset): void;
|
10
|
+
transformRemoteChangeset(changeset: IChangeset): IChangeset;
|
11
|
+
private _transformHistoryAndStateStack;
|
12
|
+
}
|
package/lib/types/services/sync-editing-collab-cursor/doc-sync-editing-collab-cursor.service.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
import { IUpdateCursor } from '@univerjs/protocol';
|
2
1
|
import { Nullable, RxDisposable } from '@univerjs/core';
|
3
2
|
import { ITextRangeWithStyle } from '@univerjs/engine-render';
|
3
|
+
import { IUpdateCursor } from '@univerjs/protocol';
|
4
4
|
export interface ICollabEditingCursor {
|
5
5
|
unitID: string;
|
6
6
|
memberID: string;
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { IChangeset, ITransformService } from '@univerjs-pro/collaboration';
|
2
1
|
import { Injector } from '@univerjs/core';
|
2
|
+
import { IChangeset, ITransformService } from '@univerjs-pro/collaboration';
|
3
3
|
export declare class DocTransformSelectionsService {
|
4
4
|
private readonly _injector;
|
5
5
|
private readonly _transformService;
|