@rgby/collab-core 1.0.1
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 +60 -0
- package/dist/collab-provider.d.ts +561 -0
- package/dist/collab-provider.d.ts.map +1 -0
- package/dist/collab-provider.js +1389 -0
- package/dist/collab-provider.js.map +1 -0
- package/dist/extensions/collaboration-cursor.d.ts +87 -0
- package/dist/extensions/collaboration-cursor.d.ts.map +1 -0
- package/dist/extensions/collaboration-cursor.js +82 -0
- package/dist/extensions/collaboration-cursor.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/services/sw-manager.d.ts +62 -0
- package/dist/services/sw-manager.d.ts.map +1 -0
- package/dist/services/sw-manager.js +207 -0
- package/dist/services/sw-manager.js.map +1 -0
- package/dist/test-deps.d.ts +15 -0
- package/dist/test-deps.d.ts.map +1 -0
- package/dist/test-deps.js +21 -0
- package/dist/test-deps.js.map +1 -0
- package/dist/upload-queue.d.ts +82 -0
- package/dist/upload-queue.d.ts.map +1 -0
- package/dist/upload-queue.js +273 -0
- package/dist/upload-queue.js.map +1 -0
- package/dist/useCollab.d.ts +216 -0
- package/dist/useCollab.d.ts.map +1 -0
- package/dist/useCollab.js +583 -0
- package/dist/useCollab.js.map +1 -0
- package/package.json +93 -0
- package/src/collab-provider.ts +1871 -0
- package/src/extensions/collaboration-cursor.ts +188 -0
- package/src/index.ts +6 -0
- package/src/services/sw-manager.ts +255 -0
- package/src/test-deps.ts +34 -0
- package/src/upload-queue.ts +337 -0
package/README.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# @collab/client
|
|
2
|
+
|
|
3
|
+
A powerful real-time collaboration SDK for building modern web applications. Built on top of [Yjs](https://github.com/yjs/yjs) and [Hocuspocus](https://github.com/ueberdosis/hocuspocus), providing a seamless experience for shared editing, comments, presence, and file uploads.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🔄 **Real-time Sync**: Effortless data synchronization across clients using Yjs.
|
|
8
|
+
- 🔌 **Offline Support**: Built-in IndexedDB persistence for offline editing.
|
|
9
|
+
- 💬 **Comments**: Integrated commenting system with threads and resolving.
|
|
10
|
+
- 👥 **Presence**: Real-time user awareness (cursors, selections).
|
|
11
|
+
- 📂 **File Uploads**: Resumable file uploads with offline queue support.
|
|
12
|
+
- 🌳 **Document Management**: Hierarchical document structure (spaces, folders).
|
|
13
|
+
- âš¡ **Framework Agnostic**: Core logic works with any framework.
|
|
14
|
+
- 💚 **Vue Composables**: First-class support for Vue 3.
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install @collab/client
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
### 1. Initialize the Client
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { CollabClient } from '@collab/client';
|
|
28
|
+
|
|
29
|
+
const client = new CollabClient({
|
|
30
|
+
baseUrl: 'https://api.your-collab-server.com',
|
|
31
|
+
authClient: {
|
|
32
|
+
// Implement your auth logic here if using custom auth
|
|
33
|
+
},
|
|
34
|
+
managedAuth: {
|
|
35
|
+
// Or use the built-in managed auth
|
|
36
|
+
autoRefresh: true
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 2. Connect to a Document
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
// Connect to a specific document within a space
|
|
45
|
+
const provider = await client.getProvider('space-id', 'document-id');
|
|
46
|
+
|
|
47
|
+
// Access the Yjs document
|
|
48
|
+
const yDoc = provider.document;
|
|
49
|
+
const yText = yDoc.getText('content');
|
|
50
|
+
|
|
51
|
+
// Observe changes
|
|
52
|
+
yText.observe(() => {
|
|
53
|
+
console.log('Content updated:', yText.toString());
|
|
54
|
+
});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Documentation
|
|
58
|
+
|
|
59
|
+
- [**Vanilla JS Guide**](./VANILLA.md): Detailed guide for using the SDK in any JavaScript environment.
|
|
60
|
+
- [**Vue.js Guide**](./VUE.md): Learn how to use the provided Vue composables for reactive collaborative state.
|
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
import { HocuspocusProvider, HocuspocusProviderWebsocket } from "@hocuspocus/provider";
|
|
2
|
+
import * as Yjs from "yjs";
|
|
3
|
+
import { type PendingUpload } from "./upload-queue.js";
|
|
4
|
+
export declare const Y: typeof Yjs;
|
|
5
|
+
type HocuspocusProviderConfiguration = ConstructorParameters<typeof HocuspocusProvider>[0];
|
|
6
|
+
type HocuspocusProviderWebsocketConfiguration = ConstructorParameters<typeof HocuspocusProviderWebsocket>[0];
|
|
7
|
+
export interface AuthClient {
|
|
8
|
+
getSession: () => Promise<{
|
|
9
|
+
session: {
|
|
10
|
+
token: string;
|
|
11
|
+
} | null;
|
|
12
|
+
} | null>;
|
|
13
|
+
subscribe: (callback: (session: {
|
|
14
|
+
session: {
|
|
15
|
+
token: string;
|
|
16
|
+
} | null;
|
|
17
|
+
} | null) => void) => () => void;
|
|
18
|
+
}
|
|
19
|
+
export interface StorageAdapter {
|
|
20
|
+
getItem(key: string): Promise<string | null> | string | null;
|
|
21
|
+
setItem(key: string, value: string): Promise<void> | void;
|
|
22
|
+
removeItem(key: string): Promise<void> | void;
|
|
23
|
+
}
|
|
24
|
+
export declare class LocalStorageAdapter implements StorageAdapter {
|
|
25
|
+
getItem(key: string): string | null;
|
|
26
|
+
setItem(key: string, value: string): void;
|
|
27
|
+
removeItem(key: string): void;
|
|
28
|
+
}
|
|
29
|
+
export declare class SessionStorageAdapter implements StorageAdapter {
|
|
30
|
+
getItem(key: string): string | null;
|
|
31
|
+
setItem(key: string, value: string): void;
|
|
32
|
+
removeItem(key: string): void;
|
|
33
|
+
}
|
|
34
|
+
export declare class MemoryStorageAdapter implements StorageAdapter {
|
|
35
|
+
private store;
|
|
36
|
+
getItem(key: string): string | null;
|
|
37
|
+
setItem(key: string, value: string): void;
|
|
38
|
+
removeItem(key: string): void;
|
|
39
|
+
}
|
|
40
|
+
export interface SessionData {
|
|
41
|
+
token: string;
|
|
42
|
+
user: {
|
|
43
|
+
id: string;
|
|
44
|
+
name: string;
|
|
45
|
+
email: string;
|
|
46
|
+
image?: string;
|
|
47
|
+
};
|
|
48
|
+
expiresAt: number;
|
|
49
|
+
}
|
|
50
|
+
export interface AuthManagerOptions {
|
|
51
|
+
baseUrl: string;
|
|
52
|
+
storage?: StorageAdapter;
|
|
53
|
+
storageKey?: string;
|
|
54
|
+
autoRefresh?: boolean;
|
|
55
|
+
refreshBuffer?: number;
|
|
56
|
+
}
|
|
57
|
+
export declare class AuthManager {
|
|
58
|
+
private baseUrl;
|
|
59
|
+
private storage;
|
|
60
|
+
private storageKey;
|
|
61
|
+
private autoRefresh;
|
|
62
|
+
private refreshBuffer;
|
|
63
|
+
private session;
|
|
64
|
+
private subscribers;
|
|
65
|
+
private refreshTimer;
|
|
66
|
+
constructor(options: AuthManagerOptions);
|
|
67
|
+
private restoreSession;
|
|
68
|
+
private persistSession;
|
|
69
|
+
private scheduleRefresh;
|
|
70
|
+
private refreshSession;
|
|
71
|
+
private notifySubscribers;
|
|
72
|
+
login(email: string, password: string): Promise<SessionData>;
|
|
73
|
+
signup(email: string, password: string, name: string): Promise<SessionData>;
|
|
74
|
+
logout(): Promise<void>;
|
|
75
|
+
getSession(): SessionData | null;
|
|
76
|
+
getToken(): string | null;
|
|
77
|
+
subscribe(callback: (session: SessionData | null) => void): () => void;
|
|
78
|
+
getSessionCompat(): Promise<{
|
|
79
|
+
session: {
|
|
80
|
+
token: string;
|
|
81
|
+
} | null;
|
|
82
|
+
} | null>;
|
|
83
|
+
subscribeCompat(callback: (session: {
|
|
84
|
+
session: {
|
|
85
|
+
token: string;
|
|
86
|
+
} | null;
|
|
87
|
+
} | null) => void): () => void;
|
|
88
|
+
}
|
|
89
|
+
export interface ManagedAuthOptions {
|
|
90
|
+
storage?: StorageAdapter;
|
|
91
|
+
autoRefresh?: boolean;
|
|
92
|
+
refreshBuffer?: number;
|
|
93
|
+
}
|
|
94
|
+
export interface OfflineOptions {
|
|
95
|
+
enablePersistence?: boolean;
|
|
96
|
+
enableImageCache?: boolean;
|
|
97
|
+
enableUploadQueue?: boolean;
|
|
98
|
+
persistenceDbName?: string;
|
|
99
|
+
maxCacheSize?: number;
|
|
100
|
+
maxDocuments?: number;
|
|
101
|
+
autoCleanup?: boolean;
|
|
102
|
+
cleanupThreshold?: number;
|
|
103
|
+
}
|
|
104
|
+
export interface CollabClientOptions {
|
|
105
|
+
baseUrl: string;
|
|
106
|
+
authClient?: AuthClient;
|
|
107
|
+
managedAuth?: ManagedAuthOptions;
|
|
108
|
+
offline?: OfflineOptions;
|
|
109
|
+
}
|
|
110
|
+
export interface ClientExtensionDefinition {
|
|
111
|
+
name: string;
|
|
112
|
+
options?: Record<string, any>;
|
|
113
|
+
scriptUrl?: string;
|
|
114
|
+
}
|
|
115
|
+
export interface Document {
|
|
116
|
+
id: string;
|
|
117
|
+
name: string;
|
|
118
|
+
spaceId: string;
|
|
119
|
+
parentId: string | null;
|
|
120
|
+
position: number;
|
|
121
|
+
createdBy: string;
|
|
122
|
+
createdAt?: string;
|
|
123
|
+
updatedAt?: string;
|
|
124
|
+
childrenCount?: number;
|
|
125
|
+
}
|
|
126
|
+
export interface DocumentTreeNode extends Document {
|
|
127
|
+
children: DocumentTreeNode[];
|
|
128
|
+
depth: number;
|
|
129
|
+
}
|
|
130
|
+
export interface Space {
|
|
131
|
+
id: string;
|
|
132
|
+
name: string;
|
|
133
|
+
slug: string;
|
|
134
|
+
logo?: string | null;
|
|
135
|
+
createdAt: string;
|
|
136
|
+
role: string;
|
|
137
|
+
memberCount?: number;
|
|
138
|
+
documentCount?: number;
|
|
139
|
+
}
|
|
140
|
+
export interface SpaceMember {
|
|
141
|
+
id: string;
|
|
142
|
+
userId: string;
|
|
143
|
+
role: string;
|
|
144
|
+
user: {
|
|
145
|
+
name: string;
|
|
146
|
+
email: string;
|
|
147
|
+
image?: string;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
export interface FileUpload {
|
|
151
|
+
id: string;
|
|
152
|
+
url: string;
|
|
153
|
+
filename: string;
|
|
154
|
+
mimeType: string;
|
|
155
|
+
size: number;
|
|
156
|
+
}
|
|
157
|
+
export interface DocumentSnapshot {
|
|
158
|
+
id: string;
|
|
159
|
+
createdAt: string;
|
|
160
|
+
createdBy: string;
|
|
161
|
+
size: number;
|
|
162
|
+
}
|
|
163
|
+
export interface PaginationInfo {
|
|
164
|
+
total: number;
|
|
165
|
+
limit: number;
|
|
166
|
+
offset: number;
|
|
167
|
+
hasMore: boolean;
|
|
168
|
+
}
|
|
169
|
+
export interface CommentAnchor {
|
|
170
|
+
from: number;
|
|
171
|
+
to: number;
|
|
172
|
+
text: string;
|
|
173
|
+
}
|
|
174
|
+
export interface Comment {
|
|
175
|
+
id: string;
|
|
176
|
+
documentId: string;
|
|
177
|
+
spaceId: string;
|
|
178
|
+
parentId: string | null;
|
|
179
|
+
authorId: string;
|
|
180
|
+
authorName: string;
|
|
181
|
+
content: string;
|
|
182
|
+
anchor: CommentAnchor | null;
|
|
183
|
+
resolved: boolean;
|
|
184
|
+
resolvedBy: string | null;
|
|
185
|
+
resolvedAt: string | null;
|
|
186
|
+
createdAt: string;
|
|
187
|
+
updatedAt: string;
|
|
188
|
+
}
|
|
189
|
+
export interface CommentThread extends Comment {
|
|
190
|
+
replies: Comment[];
|
|
191
|
+
}
|
|
192
|
+
export interface CommentEvent {
|
|
193
|
+
type: "comment" | "comment_error";
|
|
194
|
+
action: string;
|
|
195
|
+
data?: any;
|
|
196
|
+
error?: string;
|
|
197
|
+
userId: string;
|
|
198
|
+
timestamp?: number;
|
|
199
|
+
}
|
|
200
|
+
export interface PersistenceManagerOptions {
|
|
201
|
+
documentName: string;
|
|
202
|
+
document: Yjs.Doc;
|
|
203
|
+
enablePersistence?: boolean;
|
|
204
|
+
persistenceDbName?: string;
|
|
205
|
+
}
|
|
206
|
+
export declare class PersistenceManager {
|
|
207
|
+
private persistence;
|
|
208
|
+
private isReady;
|
|
209
|
+
private readyPromise;
|
|
210
|
+
private listeners;
|
|
211
|
+
constructor(options: PersistenceManagerOptions);
|
|
212
|
+
waitForReady(): Promise<void>;
|
|
213
|
+
isReadySync(): boolean;
|
|
214
|
+
onReady(callback: () => void): () => void;
|
|
215
|
+
private notifyListeners;
|
|
216
|
+
clearData(): Promise<void>;
|
|
217
|
+
destroy(): void;
|
|
218
|
+
}
|
|
219
|
+
export interface CollabProviderWebsocketOptions extends Omit<HocuspocusProviderWebsocketConfiguration, "url"> {
|
|
220
|
+
baseUrl: string;
|
|
221
|
+
spaceId: string;
|
|
222
|
+
auth?: AuthClient;
|
|
223
|
+
token?: string;
|
|
224
|
+
}
|
|
225
|
+
export declare class CollabProviderWebsocket extends HocuspocusProviderWebsocket {
|
|
226
|
+
private _authUnsubscribe;
|
|
227
|
+
readonly spaceId: string;
|
|
228
|
+
private _token;
|
|
229
|
+
private _readyPromise;
|
|
230
|
+
private _readyResolve;
|
|
231
|
+
private _spaceDoc;
|
|
232
|
+
constructor(options: CollabProviderWebsocketOptions);
|
|
233
|
+
/**
|
|
234
|
+
* Wait for the websocket to be connected and ready
|
|
235
|
+
*/
|
|
236
|
+
waitForReady(): Promise<void>;
|
|
237
|
+
private setupAuth;
|
|
238
|
+
private updateToken;
|
|
239
|
+
getToken(): string | undefined;
|
|
240
|
+
getSpaceDoc(): any;
|
|
241
|
+
destroy(): void;
|
|
242
|
+
}
|
|
243
|
+
export interface CollabProviderOptions {
|
|
244
|
+
websocketProvider?: HocuspocusProviderWebsocket | CollabProviderWebsocket;
|
|
245
|
+
baseUrl?: string;
|
|
246
|
+
spaceId?: string;
|
|
247
|
+
documentId: string;
|
|
248
|
+
auth?: AuthClient;
|
|
249
|
+
token?: string | null | (() => string) | (() => Promise<string>);
|
|
250
|
+
enablePersistence?: boolean;
|
|
251
|
+
persistenceDbName?: string;
|
|
252
|
+
document?: any;
|
|
253
|
+
awareness?: any;
|
|
254
|
+
onConnect?: () => void;
|
|
255
|
+
onSynced?: (data: any) => void;
|
|
256
|
+
onStatus?: (data: any) => void;
|
|
257
|
+
onAuthenticated?: (data: any) => void;
|
|
258
|
+
onAuthenticationFailed?: (data: any) => void;
|
|
259
|
+
onOpen?: (data: any) => void;
|
|
260
|
+
onMessage?: (data: any) => void;
|
|
261
|
+
onOutgoingMessage?: (data: any) => void;
|
|
262
|
+
onDisconnect?: (data: any) => void;
|
|
263
|
+
onClose?: (data: any) => void;
|
|
264
|
+
onDestroy?: () => void;
|
|
265
|
+
onAwarenessUpdate?: (data: any) => void;
|
|
266
|
+
onAwarenessChange?: (data: any) => void;
|
|
267
|
+
onStateless?: (data: any) => void;
|
|
268
|
+
forceSyncInterval?: number | false;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* HocuspocusProvider wrapper that handles constructing the correct name/url
|
|
272
|
+
* based on our platform's conventions.
|
|
273
|
+
*/
|
|
274
|
+
export declare class CollabProvider extends HocuspocusProvider {
|
|
275
|
+
private _authUnsubscribe;
|
|
276
|
+
readonly documentId: string;
|
|
277
|
+
private persistenceManager;
|
|
278
|
+
constructor(options: CollabProviderOptions);
|
|
279
|
+
private setupAuth;
|
|
280
|
+
setToken(token: string): void;
|
|
281
|
+
destroy(): void;
|
|
282
|
+
/**
|
|
283
|
+
* Wait for persistence to be ready
|
|
284
|
+
*/
|
|
285
|
+
waitForPersistence(): Promise<void>;
|
|
286
|
+
/**
|
|
287
|
+
* Check if persistence is ready
|
|
288
|
+
*/
|
|
289
|
+
isPersistenceReady(): boolean;
|
|
290
|
+
/**
|
|
291
|
+
* Clear local persistence data
|
|
292
|
+
*/
|
|
293
|
+
clearLocalData(): Promise<void>;
|
|
294
|
+
/**
|
|
295
|
+
* Send a comment action via stateless message
|
|
296
|
+
*/
|
|
297
|
+
sendComment(action: "create" | "update" | "delete" | "resolve", data: any): void;
|
|
298
|
+
/**
|
|
299
|
+
* Listen for real-time comment events
|
|
300
|
+
*/
|
|
301
|
+
onComment(callback: (event: CommentEvent) => void): () => void;
|
|
302
|
+
}
|
|
303
|
+
export declare class CollabClient {
|
|
304
|
+
readonly baseUrl: string;
|
|
305
|
+
readonly auth: AuthClient;
|
|
306
|
+
private readonly authManager;
|
|
307
|
+
private readonly offlineOptions;
|
|
308
|
+
private _sockets;
|
|
309
|
+
private _token;
|
|
310
|
+
private uploadQueue;
|
|
311
|
+
constructor(options: CollabClientOptions);
|
|
312
|
+
login(email: string, password: string): Promise<SessionData>;
|
|
313
|
+
signup(email: string, password: string, name: string): Promise<SessionData>;
|
|
314
|
+
logout(): Promise<void>;
|
|
315
|
+
getSession(): SessionData | null;
|
|
316
|
+
private getToken;
|
|
317
|
+
private fetch;
|
|
318
|
+
getExtensions(deps?: Record<string, any>): Promise<any[]>;
|
|
319
|
+
getWebsocketProvider(spaceId: string): Promise<CollabProviderWebsocket>;
|
|
320
|
+
/**
|
|
321
|
+
* Get a CollabProvider for a specific document.
|
|
322
|
+
* Uses a shared WebSocket for the space if possible.
|
|
323
|
+
*/
|
|
324
|
+
getProvider(spaceId: string, documentId: string, options?: Partial<HocuspocusProviderConfiguration>): Promise<CollabProvider>;
|
|
325
|
+
readonly documents: {
|
|
326
|
+
/**
|
|
327
|
+
* List documents in a space
|
|
328
|
+
* @param parentId - null for root only, undefined for all, string for specific parent
|
|
329
|
+
*/
|
|
330
|
+
list: (spaceId: string, params?: {
|
|
331
|
+
parentId?: string | null;
|
|
332
|
+
limit?: number;
|
|
333
|
+
offset?: number;
|
|
334
|
+
}) => Promise<{
|
|
335
|
+
items: Document[];
|
|
336
|
+
pagination: PaginationInfo;
|
|
337
|
+
}>;
|
|
338
|
+
get: (spaceId: string, docId: string) => Promise<Document>;
|
|
339
|
+
create: (spaceId: string, options?: {
|
|
340
|
+
name?: string;
|
|
341
|
+
parentId?: string | null;
|
|
342
|
+
}) => Promise<Document & {
|
|
343
|
+
wsUrl: string;
|
|
344
|
+
}>;
|
|
345
|
+
update: (spaceId: string, docId: string, data: {
|
|
346
|
+
name: string;
|
|
347
|
+
}) => Promise<{
|
|
348
|
+
success: true;
|
|
349
|
+
}>;
|
|
350
|
+
delete: (spaceId: string, docId: string) => Promise<{
|
|
351
|
+
success: true;
|
|
352
|
+
}>;
|
|
353
|
+
getContent: (spaceId: string, docId: string) => Promise<Record<string, unknown>>;
|
|
354
|
+
/**
|
|
355
|
+
* Update document content via patch (merge or replace strategy)
|
|
356
|
+
*/
|
|
357
|
+
patch: (spaceId: string, docId: string, content: any, options?: {
|
|
358
|
+
merge?: boolean;
|
|
359
|
+
strategy?: "replace" | "merge" | "append" | "prepend";
|
|
360
|
+
path?: number[];
|
|
361
|
+
}) => Promise<Document>;
|
|
362
|
+
/**
|
|
363
|
+
* Apply transformation operations to document
|
|
364
|
+
*/
|
|
365
|
+
transform: (spaceId: string, docId: string, operations: any[]) => Promise<Document>;
|
|
366
|
+
tree: (spaceId: string) => Promise<DocumentTreeNode[]>;
|
|
367
|
+
children: (spaceId: string, docId: string, params?: {
|
|
368
|
+
limit?: number;
|
|
369
|
+
offset?: number;
|
|
370
|
+
}) => Promise<{
|
|
371
|
+
items: Document[];
|
|
372
|
+
pagination: PaginationInfo;
|
|
373
|
+
}>;
|
|
374
|
+
ancestors: (spaceId: string, docId: string) => Promise<Document[]>;
|
|
375
|
+
move: (spaceId: string, docId: string, parentId: string | null, position?: number) => Promise<{
|
|
376
|
+
success: true;
|
|
377
|
+
}>;
|
|
378
|
+
getSnapshots: (spaceId: string, docId: string) => Promise<DocumentSnapshot[]>;
|
|
379
|
+
restoreSnapshot: (spaceId: string, docId: string, snapshotId: string) => Promise<{
|
|
380
|
+
success: true;
|
|
381
|
+
message: string;
|
|
382
|
+
}>;
|
|
383
|
+
listDeleted: (spaceId: string, params?: {
|
|
384
|
+
limit?: number;
|
|
385
|
+
offset?: number;
|
|
386
|
+
}) => Promise<{
|
|
387
|
+
items: Document[];
|
|
388
|
+
pagination: PaginationInfo;
|
|
389
|
+
}>;
|
|
390
|
+
restore: (spaceId: string, docId: string) => Promise<{
|
|
391
|
+
success: true;
|
|
392
|
+
}>;
|
|
393
|
+
deletePermanent: (spaceId: string, docId: string) => Promise<{
|
|
394
|
+
success: true;
|
|
395
|
+
}>;
|
|
396
|
+
export: (spaceId: string, docId: string, format?: "html" | "json") => Promise<any>;
|
|
397
|
+
};
|
|
398
|
+
readonly spaces: {
|
|
399
|
+
list: () => Promise<Space[]>;
|
|
400
|
+
get: (spaceId: string) => Promise<Space>;
|
|
401
|
+
getMembers: (spaceId: string) => Promise<SpaceMember[]>;
|
|
402
|
+
create: (data: {
|
|
403
|
+
name: string;
|
|
404
|
+
slug?: string;
|
|
405
|
+
}) => Promise<Space>;
|
|
406
|
+
/**
|
|
407
|
+
* Add a member to a space/organization
|
|
408
|
+
*/
|
|
409
|
+
addMember: (spaceId: string, email: string, role: string) => Promise<{
|
|
410
|
+
success: true;
|
|
411
|
+
memberId: string;
|
|
412
|
+
}>;
|
|
413
|
+
/**
|
|
414
|
+
* Update a member's role
|
|
415
|
+
*/
|
|
416
|
+
updateRole: (spaceId: string, userId: string, role: string) => Promise<{
|
|
417
|
+
success: true;
|
|
418
|
+
}>;
|
|
419
|
+
/**
|
|
420
|
+
* Remove a member from a space/organization
|
|
421
|
+
*/
|
|
422
|
+
removeMember: (spaceId: string, userId: string) => Promise<{
|
|
423
|
+
success: true;
|
|
424
|
+
}>;
|
|
425
|
+
};
|
|
426
|
+
readonly uploads: {
|
|
427
|
+
list: (spaceId: string, documentId?: string, params?: {
|
|
428
|
+
limit?: number;
|
|
429
|
+
offset?: number;
|
|
430
|
+
}) => Promise<{
|
|
431
|
+
items: FileUpload[];
|
|
432
|
+
pagination: PaginationInfo;
|
|
433
|
+
}>;
|
|
434
|
+
upload: (spaceId: string, file: File, documentId?: string) => Promise<FileUpload>;
|
|
435
|
+
delete: (spaceId: string, fileId: string) => Promise<{
|
|
436
|
+
success: true;
|
|
437
|
+
}>;
|
|
438
|
+
deletePermanent: (spaceId: string, fileId: string) => Promise<{
|
|
439
|
+
success: true;
|
|
440
|
+
}>;
|
|
441
|
+
};
|
|
442
|
+
readonly comments: {
|
|
443
|
+
/**
|
|
444
|
+
* List comments for a document (threaded)
|
|
445
|
+
*/
|
|
446
|
+
list: (spaceId: string, docId: string) => Promise<{
|
|
447
|
+
threads: CommentThread[];
|
|
448
|
+
meta: {
|
|
449
|
+
total: number;
|
|
450
|
+
resolved: number;
|
|
451
|
+
};
|
|
452
|
+
}>;
|
|
453
|
+
/**
|
|
454
|
+
* Get a single comment
|
|
455
|
+
*/
|
|
456
|
+
get: (spaceId: string, docId: string, commentId: string) => Promise<Comment>;
|
|
457
|
+
/**
|
|
458
|
+
* Create a new comment
|
|
459
|
+
*/
|
|
460
|
+
create: (spaceId: string, docId: string, data: {
|
|
461
|
+
content: string;
|
|
462
|
+
anchor?: CommentAnchor;
|
|
463
|
+
parentId?: string;
|
|
464
|
+
}) => Promise<Comment>;
|
|
465
|
+
/**
|
|
466
|
+
* Update a comment's content
|
|
467
|
+
*/
|
|
468
|
+
update: (spaceId: string, docId: string, commentId: string, content: string) => Promise<Comment>;
|
|
469
|
+
/**
|
|
470
|
+
* Delete a comment
|
|
471
|
+
*/
|
|
472
|
+
delete: (spaceId: string, docId: string, commentId: string) => Promise<{
|
|
473
|
+
success: true;
|
|
474
|
+
}>;
|
|
475
|
+
/**
|
|
476
|
+
* Resolve or unresolve a comment thread
|
|
477
|
+
*/
|
|
478
|
+
resolve: (spaceId: string, docId: string, commentId: string, resolved: boolean) => Promise<Comment>;
|
|
479
|
+
};
|
|
480
|
+
readonly share: {
|
|
481
|
+
/**
|
|
482
|
+
* Get share status for a document
|
|
483
|
+
*/
|
|
484
|
+
get: (spaceId: string, docId: string) => Promise<{
|
|
485
|
+
success: boolean;
|
|
486
|
+
data: {
|
|
487
|
+
enabled: boolean;
|
|
488
|
+
token?: string;
|
|
489
|
+
access?: string;
|
|
490
|
+
url?: string;
|
|
491
|
+
};
|
|
492
|
+
}>;
|
|
493
|
+
/**
|
|
494
|
+
* Enable sharing for a document
|
|
495
|
+
*/
|
|
496
|
+
enable: (spaceId: string, docId: string) => Promise<{
|
|
497
|
+
success: boolean;
|
|
498
|
+
data: {
|
|
499
|
+
token: string;
|
|
500
|
+
access: string;
|
|
501
|
+
url: string;
|
|
502
|
+
};
|
|
503
|
+
}>;
|
|
504
|
+
/**
|
|
505
|
+
* Disable sharing for a document
|
|
506
|
+
*/
|
|
507
|
+
disable: (spaceId: string, docId: string) => Promise<{
|
|
508
|
+
success: boolean;
|
|
509
|
+
}>;
|
|
510
|
+
};
|
|
511
|
+
/**
|
|
512
|
+
* Process the upload queue
|
|
513
|
+
*/
|
|
514
|
+
private processUploadQueue;
|
|
515
|
+
/**
|
|
516
|
+
* Get pending uploads count
|
|
517
|
+
*/
|
|
518
|
+
getPendingUploadsCount(): Promise<number>;
|
|
519
|
+
/**
|
|
520
|
+
* Get all pending uploads
|
|
521
|
+
*/
|
|
522
|
+
getPendingUploads(): Promise<PendingUpload[]>;
|
|
523
|
+
/**
|
|
524
|
+
* Subscribe to upload queue events
|
|
525
|
+
*/
|
|
526
|
+
onUploadQueue(event: 'queue-changed' | 'upload-complete' | 'upload-failed', callback: (data: any) => void): () => void;
|
|
527
|
+
/**
|
|
528
|
+
* Get storage quota information
|
|
529
|
+
*/
|
|
530
|
+
getStorageInfo(): Promise<{
|
|
531
|
+
usage: number;
|
|
532
|
+
quota: number;
|
|
533
|
+
percentUsed: number;
|
|
534
|
+
}>;
|
|
535
|
+
/**
|
|
536
|
+
* Clear all local data (IndexedDB and caches)
|
|
537
|
+
*/
|
|
538
|
+
clearAllLocalData(): Promise<void>;
|
|
539
|
+
/**
|
|
540
|
+
* Clear specific document cache
|
|
541
|
+
*/
|
|
542
|
+
clearDocumentCache(spaceId: string, docId: string): Promise<void>;
|
|
543
|
+
/**
|
|
544
|
+
* Perform cleanup when storage quota is exceeded
|
|
545
|
+
*/
|
|
546
|
+
private performCleanup;
|
|
547
|
+
/**
|
|
548
|
+
* Check storage quota and perform cleanup if needed
|
|
549
|
+
*/
|
|
550
|
+
checkStorageQuota(): Promise<void>;
|
|
551
|
+
/**
|
|
552
|
+
* Get document content using a share token (public access)
|
|
553
|
+
*/
|
|
554
|
+
getPublicContent(spaceId: string, docId: string, shareToken: string): Promise<{
|
|
555
|
+
id: string;
|
|
556
|
+
spaceId: string;
|
|
557
|
+
content: Record<string, unknown>;
|
|
558
|
+
}>;
|
|
559
|
+
}
|
|
560
|
+
export {};
|
|
561
|
+
//# sourceMappingURL=collab-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collab-provider.d.ts","sourceRoot":"","sources":["../src/collab-provider.ts"],"names":[],"mappings":"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"}
|