@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.
@@ -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
- constructor(unitID: string, type: UniverType, awaitingChangeset: IChangeset, pendingMutations: IMutationInfo[], handler: ICollaborationStateHandler, _injector: Injector, revisionService: RevisionService, localCacheService: LocalCacheService, commandService: ICommandService, _logService: ILogService, _transformService: ITransformService, undoRedoService: ICollaborativeUndoRedoService);
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>;
@@ -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';
@@ -14,5 +14,5 @@ export declare class UniverCollaborationClientPlugin extends Plugin {
14
14
  onRendered(): void;
15
15
  private _registerDependencies;
16
16
  private _registerRenderDependencies;
17
- private _initModules;
17
+ private _initDependencies;
18
18
  }
@@ -0,0 +1 @@
1
+ export declare function getAttachHeader(): string | undefined;
@@ -1,11 +1,11 @@
1
- import { IConfigService, ILogService, LocaleService, RxDisposable, IDisposable, Nullable } from '@univerjs/core';
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 { ITransformService, IChangeset } from '@univerjs-pro/collaboration';
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
+ }
@@ -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;