@rool-dev/sdk 0.11.3-dev.5dfa2e5 → 0.11.3-dev.7c57c94
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 +156 -105
- package/dist/auth-base.d.ts +100 -0
- package/dist/auth-base.d.ts.map +1 -0
- package/dist/auth-base.js +377 -0
- package/dist/auth-base.js.map +1 -0
- package/dist/auth-browser.d.ts +6 -77
- package/dist/auth-browser.d.ts.map +1 -1
- package/dist/auth-browser.js +32 -328
- package/dist/auth-browser.js.map +1 -1
- package/dist/auth-native.d.ts +72 -0
- package/dist/auth-native.d.ts.map +1 -0
- package/dist/auth-native.js +260 -0
- package/dist/auth-native.js.map +1 -0
- package/dist/auth.d.ts +17 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +36 -5
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +27 -8
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +52 -26
- package/dist/client.js.map +1 -1
- package/dist/graphql.d.ts +13 -19
- package/dist/graphql.d.ts.map +1 -1
- package/dist/graphql.js +35 -70
- package/dist/graphql.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/reroute.d.ts.map +1 -1
- package/dist/reroute.js +9 -0
- package/dist/reroute.js.map +1 -1
- package/dist/{channel.d.ts → space-session.d.ts} +44 -139
- package/dist/space-session.d.ts.map +1 -0
- package/dist/{channel.js → space-session.js} +111 -325
- package/dist/space-session.js.map +1 -0
- package/dist/space.d.ts +18 -48
- package/dist/space.d.ts.map +1 -1
- package/dist/space.js +84 -223
- package/dist/space.js.map +1 -1
- package/dist/subscription.d.ts +2 -2
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +6 -30
- package/dist/subscription.js.map +1 -1
- package/dist/types.d.ts +58 -83
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/channel.d.ts.map +0 -1
- package/dist/channel.js.map +0 -1
package/dist/space.js
CHANGED
|
@@ -1,102 +1,79 @@
|
|
|
1
|
-
import { EventEmitter } from './event-emitter.js';
|
|
2
1
|
import { SpaceSubscriptionManager } from './subscription.js';
|
|
3
|
-
import {
|
|
2
|
+
import { SpaceOperations } from './space-session.js';
|
|
4
3
|
import { RoolWebDAV } from './webdav.js';
|
|
5
4
|
import { machinePath } from './path.js';
|
|
6
|
-
/** Convert a full Channel object to a ChannelInfo summary. */
|
|
7
|
-
function channelToInfo(id, ch) {
|
|
8
|
-
return {
|
|
9
|
-
id,
|
|
10
|
-
name: ch.name ?? null,
|
|
11
|
-
createdAt: ch.createdAt,
|
|
12
|
-
createdBy: ch.createdBy,
|
|
13
|
-
createdByName: ch.createdByName ?? null,
|
|
14
|
-
interactionCount: Object.values(ch.conversations ?? {}).reduce((sum, conv) => sum + (conv.interactions ? Object.keys(conv.interactions).length : 0), 0),
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
5
|
/**
|
|
18
|
-
* A space is a container for objects, schema, metadata, and
|
|
6
|
+
* A space is a container for objects, schema, metadata, and conversations.
|
|
19
7
|
*
|
|
20
|
-
* RoolSpace owns the real-time SSE subscription for the space
|
|
21
|
-
*
|
|
22
|
-
* on a space to work with objects and AI.
|
|
8
|
+
* RoolSpace owns the real-time SSE subscription for the space and exposes
|
|
9
|
+
* space-level object, schema, metadata, and AI operations.
|
|
23
10
|
*
|
|
24
11
|
* Call close() when done to stop the subscription.
|
|
25
12
|
*/
|
|
26
|
-
export class RoolSpace extends
|
|
27
|
-
_id;
|
|
28
|
-
_name;
|
|
29
|
-
_role;
|
|
30
|
-
_userId;
|
|
13
|
+
export class RoolSpace extends SpaceOperations {
|
|
31
14
|
_memberCount;
|
|
32
|
-
|
|
33
|
-
_knownChannelIds;
|
|
34
|
-
graphqlClient;
|
|
35
|
-
restClient;
|
|
15
|
+
_conversationInfos;
|
|
36
16
|
authManager;
|
|
37
17
|
router;
|
|
38
18
|
_route;
|
|
39
|
-
_webdav;
|
|
40
|
-
logger;
|
|
41
19
|
onCloseCallback;
|
|
42
20
|
// Subscription
|
|
43
21
|
subscriptionManager = null;
|
|
44
|
-
_closed = false;
|
|
45
22
|
_resyncing = false;
|
|
46
23
|
_resyncPending = false;
|
|
47
24
|
_resyncTimer = null;
|
|
48
25
|
_subscriptionReady = null;
|
|
49
|
-
// Open channels on this space
|
|
50
|
-
openChannels = new Map();
|
|
51
|
-
// Full space data (for channel creation)
|
|
52
|
-
_objectStats;
|
|
53
|
-
_schema;
|
|
54
|
-
_meta;
|
|
55
|
-
_channelData;
|
|
56
26
|
constructor(config) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
27
|
+
let self;
|
|
28
|
+
const webdav = new RoolWebDAV({
|
|
29
|
+
webdavUrl: config.initialRoute.server,
|
|
30
|
+
spaceId: config.id,
|
|
31
|
+
authManager: config.authManager,
|
|
32
|
+
onRefused: async () => {
|
|
33
|
+
await self.reroute();
|
|
34
|
+
return self._route.server;
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
super({
|
|
38
|
+
id: config.id,
|
|
39
|
+
name: config.name,
|
|
40
|
+
role: config.role,
|
|
41
|
+
userId: config.userId,
|
|
42
|
+
objectStats: config.fullData.objectStats,
|
|
43
|
+
schema: config.fullData.schema,
|
|
44
|
+
meta: config.fullData.meta,
|
|
45
|
+
conversations: config.fullData.conversations,
|
|
46
|
+
graphqlClient: config.graphqlClient,
|
|
47
|
+
restClient: config.restClient,
|
|
48
|
+
webdav,
|
|
49
|
+
logger: config.logger,
|
|
50
|
+
onClose: () => { },
|
|
51
|
+
});
|
|
52
|
+
self = this;
|
|
63
53
|
this._memberCount = config.memberCount;
|
|
64
|
-
this.graphqlClient = config.graphqlClient;
|
|
65
|
-
this.restClient = config.restClient;
|
|
66
54
|
this.authManager = config.authManager;
|
|
67
55
|
this.router = config.router;
|
|
68
56
|
this._route = config.initialRoute;
|
|
69
|
-
this._webdav = new RoolWebDAV({
|
|
70
|
-
webdavUrl: this._route.server,
|
|
71
|
-
spaceId: this._id,
|
|
72
|
-
authManager: this.authManager,
|
|
73
|
-
onRefused: async () => {
|
|
74
|
-
await this.reroute();
|
|
75
|
-
return this._route.server;
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
this.logger = config.logger;
|
|
79
57
|
this.onCloseCallback = config.onClose;
|
|
80
|
-
this.
|
|
81
|
-
this.
|
|
58
|
+
this._conversationInfos = this.getConversations();
|
|
59
|
+
this.on('conversationUpdated', () => {
|
|
60
|
+
this._conversationInfos = this.getConversations();
|
|
61
|
+
});
|
|
62
|
+
this._graphqlClient.setOnRefused(() => this.reroute());
|
|
63
|
+
this._restClient.setOnRefused(async () => {
|
|
82
64
|
await this.reroute();
|
|
83
65
|
return this._route.server;
|
|
84
66
|
});
|
|
85
|
-
// Store full space data
|
|
86
|
-
const fd = config.fullData;
|
|
87
|
-
this._objectStats = fd.objectStats;
|
|
88
|
-
this._schema = fd.schema;
|
|
89
|
-
this._meta = fd.meta;
|
|
90
|
-
this._channelData = fd.channels;
|
|
91
|
-
// Build channel list from full data
|
|
92
|
-
this._channels = Object.entries(fd.channels).map(([id, ch]) => channelToInfo(id, ch));
|
|
93
|
-
this._knownChannelIds = new Set(this._channels.map(c => c.id));
|
|
94
67
|
// Start subscription
|
|
95
68
|
this.startSubscription();
|
|
96
69
|
}
|
|
97
70
|
get id() { return this._id; }
|
|
98
71
|
get name() { return this._name; }
|
|
99
72
|
get role() { return this._role; }
|
|
73
|
+
get userId() { return this._userId; }
|
|
74
|
+
get spaceId() { return this._id; }
|
|
75
|
+
get spaceName() { return this._name; }
|
|
76
|
+
get isReadOnly() { return this._role === 'viewer'; }
|
|
100
77
|
get memberCount() { return this._memberCount; }
|
|
101
78
|
get route() { return this._route; }
|
|
102
79
|
/** WebDAV client for this space's user-visible files and object filesystem. */
|
|
@@ -114,30 +91,27 @@ export class RoolSpace extends EventEmitter {
|
|
|
114
91
|
throw new Error('Path is not a fetchable file');
|
|
115
92
|
return this.webdav.get(canonical, options);
|
|
116
93
|
}
|
|
117
|
-
/**
|
|
118
|
-
|
|
119
|
-
* Auto-updates via SSE when channels are created, updated, or deleted.
|
|
120
|
-
*/
|
|
121
|
-
get channels() { return this._channels; }
|
|
94
|
+
/** Live list of conversations in this space. */
|
|
95
|
+
get conversations() { return this._conversationInfos; }
|
|
122
96
|
startSubscription() {
|
|
123
97
|
let firstProbe = true;
|
|
124
98
|
this.subscriptionManager = new SpaceSubscriptionManager({
|
|
125
99
|
getGraphqlUrl: async () => {
|
|
126
100
|
if (firstProbe) {
|
|
127
101
|
firstProbe = false;
|
|
128
|
-
return this.
|
|
102
|
+
return this._graphqlClient.graphqlUrl;
|
|
129
103
|
}
|
|
130
104
|
return this.reroute();
|
|
131
105
|
},
|
|
132
106
|
authManager: this.authManager,
|
|
133
|
-
logger: this.
|
|
107
|
+
logger: this._logger,
|
|
134
108
|
spaceId: this._id,
|
|
135
109
|
onEvent: (event) => this.handleSpaceEvent(event),
|
|
136
110
|
onConnectionStateChanged: (state) => {
|
|
137
111
|
this.emit('connectionStateChanged', state);
|
|
138
112
|
},
|
|
139
113
|
onError: (error) => {
|
|
140
|
-
this.
|
|
114
|
+
this._logger.error(`[RoolSpace] Space ${this._id} subscription error:`, error);
|
|
141
115
|
},
|
|
142
116
|
});
|
|
143
117
|
this._subscriptionReady = this.subscriptionManager.subscribe();
|
|
@@ -148,93 +122,48 @@ export class RoolSpace extends EventEmitter {
|
|
|
148
122
|
const route = await this.router.resolve(this._id);
|
|
149
123
|
this._route = route;
|
|
150
124
|
this._webdav.setWebDAVUrl(route.server);
|
|
151
|
-
this.
|
|
125
|
+
this._restClient.setApiUrl(route.server);
|
|
152
126
|
const url = `${route.server.replace(/\/+$/, '')}/graphql`;
|
|
153
|
-
this.
|
|
127
|
+
this._graphqlClient.setGraphqlUrl(url);
|
|
154
128
|
return url;
|
|
155
129
|
}
|
|
156
|
-
/**
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Open a channel on this space.
|
|
162
|
-
* If the channel doesn't exist, the server creates it.
|
|
163
|
-
*/
|
|
164
|
-
async openChannel(channelId) {
|
|
165
|
-
if (!channelId || channelId.length > 32 || !/^[a-zA-Z0-9_-]+$/.test(channelId)) {
|
|
166
|
-
throw new Error('channelId must be 1–32 characters containing only alphanumeric characters, hyphens, and underscores');
|
|
130
|
+
/** Get a handle for a conversation in this space. */
|
|
131
|
+
conversation(conversationId) {
|
|
132
|
+
if (!conversationId || conversationId.length > 32 || !/^[a-zA-Z0-9_-]+$/.test(conversationId)) {
|
|
133
|
+
throw new Error('conversationId must be 1–32 characters containing only alphanumeric characters, hyphens, and underscores');
|
|
167
134
|
}
|
|
168
|
-
|
|
169
|
-
let channelData = this._channelData[channelId];
|
|
170
|
-
if (!channelData) {
|
|
171
|
-
try {
|
|
172
|
-
channelData = await this.graphqlClient.createChannel(this._id, channelId);
|
|
173
|
-
this._channelData[channelId] = channelData;
|
|
174
|
-
}
|
|
175
|
-
catch {
|
|
176
|
-
// Race: another client may have created it. Re-fetch.
|
|
177
|
-
const refreshed = await this.graphqlClient.openSpaceFull(this._id);
|
|
178
|
-
this.applyFullData(refreshed);
|
|
179
|
-
channelData = this._channelData[channelId];
|
|
180
|
-
if (!channelData)
|
|
181
|
-
throw new Error(`Failed to create channel "${channelId}"`);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
const channel = new RoolChannel({
|
|
185
|
-
id: this._id,
|
|
186
|
-
name: this._name,
|
|
187
|
-
role: this._role,
|
|
188
|
-
userId: this._userId,
|
|
189
|
-
objectStats: this._objectStats,
|
|
190
|
-
schema: this._schema,
|
|
191
|
-
meta: this._meta,
|
|
192
|
-
channel: channelData,
|
|
193
|
-
channelId,
|
|
194
|
-
graphqlClient: this.graphqlClient,
|
|
195
|
-
restClient: this.restClient,
|
|
196
|
-
webdav: this.webdav,
|
|
197
|
-
logger: this.logger,
|
|
198
|
-
onClose: () => this.unregisterChannel(channelId),
|
|
199
|
-
});
|
|
200
|
-
this.openChannels.set(channelId, channel);
|
|
201
|
-
// Ensure subscription is connected before returning
|
|
202
|
-
await this.ensureSubscribed();
|
|
203
|
-
return channel;
|
|
204
|
-
}
|
|
205
|
-
unregisterChannel(channelId) {
|
|
206
|
-
this.openChannels.delete(channelId);
|
|
135
|
+
return super.conversation(conversationId);
|
|
207
136
|
}
|
|
208
137
|
/**
|
|
209
138
|
* Rename this space.
|
|
210
139
|
*/
|
|
211
140
|
async rename(newName) {
|
|
212
|
-
await this.
|
|
141
|
+
await this._graphqlClient.renameSpace(this._id, newName);
|
|
213
142
|
this._name = newName;
|
|
214
143
|
}
|
|
215
144
|
/**
|
|
216
145
|
* Delete this space permanently. Cannot be undone.
|
|
217
146
|
*/
|
|
218
147
|
async delete() {
|
|
219
|
-
await this.
|
|
148
|
+
await this._graphqlClient.deleteSpace(this._id);
|
|
220
149
|
}
|
|
221
150
|
/**
|
|
222
151
|
* List users with access to this space.
|
|
223
152
|
*/
|
|
224
153
|
async listUsers() {
|
|
225
|
-
return this.
|
|
154
|
+
return this._graphqlClient.listSpaceUsers(this._id);
|
|
226
155
|
}
|
|
227
156
|
/**
|
|
228
157
|
* Change an existing member's role. New members join via invites.
|
|
229
158
|
*/
|
|
230
159
|
async setUserRole(userId, role) {
|
|
231
|
-
return this.
|
|
160
|
+
return this._graphqlClient.setSpaceUserRole(this._id, userId, role);
|
|
232
161
|
}
|
|
233
162
|
/**
|
|
234
163
|
* Remove a user from this space.
|
|
235
164
|
*/
|
|
236
165
|
async removeUser(userId) {
|
|
237
|
-
return this.
|
|
166
|
+
return this._graphqlClient.removeSpaceUser(this._id, userId);
|
|
238
167
|
}
|
|
239
168
|
/**
|
|
240
169
|
* Mint an invite link for this space. Requires owner or admin role.
|
|
@@ -243,35 +172,19 @@ export class RoolSpace extends EventEmitter {
|
|
|
243
172
|
* and is only available here.
|
|
244
173
|
*/
|
|
245
174
|
async createInvite(role, options) {
|
|
246
|
-
return this.
|
|
175
|
+
return this._graphqlClient.createSpaceInvite(this._id, role, options);
|
|
247
176
|
}
|
|
248
177
|
/**
|
|
249
178
|
* List this space's currently redeemable invites. Requires owner or admin role.
|
|
250
179
|
*/
|
|
251
180
|
async listInvites() {
|
|
252
|
-
return this.
|
|
181
|
+
return this._graphqlClient.listSpaceInvites(this._id);
|
|
253
182
|
}
|
|
254
183
|
/**
|
|
255
184
|
* Revoke an invite so its link stops working. Requires owner or admin role.
|
|
256
185
|
*/
|
|
257
186
|
async revokeInvite(inviteId) {
|
|
258
|
-
return this.
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Rename a channel in this space.
|
|
262
|
-
*/
|
|
263
|
-
async renameChannel(channelId, name) {
|
|
264
|
-
await this.graphqlClient.renameChannel(this._id, channelId, name);
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Delete a channel from this space.
|
|
268
|
-
*/
|
|
269
|
-
async deleteChannel(channelId) {
|
|
270
|
-
await this.graphqlClient.deleteChannel(this._id, channelId);
|
|
271
|
-
// SSE will update the channel list; also update optimistically
|
|
272
|
-
this._channels = this._channels.filter(c => c.id !== channelId);
|
|
273
|
-
this._knownChannelIds.delete(channelId);
|
|
274
|
-
delete this._channelData[channelId];
|
|
187
|
+
return this._graphqlClient.revokeSpaceInvite(this._id, inviteId);
|
|
275
188
|
}
|
|
276
189
|
// Targets the owning shard
|
|
277
190
|
async exportArchive() {
|
|
@@ -297,14 +210,14 @@ export class RoolSpace extends EventEmitter {
|
|
|
297
210
|
}
|
|
298
211
|
/**
|
|
299
212
|
* Refresh space data from the server.
|
|
300
|
-
* Updates name, role,
|
|
213
|
+
* Updates name, role, conversation list, and all cached data.
|
|
301
214
|
*/
|
|
302
215
|
async refresh() {
|
|
303
|
-
const data = await this.
|
|
216
|
+
const data = await this._graphqlClient.openSpaceFull(this._id);
|
|
304
217
|
this.applyFullData(data);
|
|
305
218
|
}
|
|
306
219
|
/**
|
|
307
|
-
* Close the space subscription
|
|
220
|
+
* Close the space subscription.
|
|
308
221
|
*/
|
|
309
222
|
close() {
|
|
310
223
|
this._closed = true;
|
|
@@ -312,11 +225,6 @@ export class RoolSpace extends EventEmitter {
|
|
|
312
225
|
clearTimeout(this._resyncTimer);
|
|
313
226
|
this._resyncTimer = null;
|
|
314
227
|
}
|
|
315
|
-
// Close all open channels
|
|
316
|
-
for (const channel of this.openChannels.values()) {
|
|
317
|
-
channel.close();
|
|
318
|
-
}
|
|
319
|
-
this.openChannels.clear();
|
|
320
228
|
// Stop subscription
|
|
321
229
|
if (this.subscriptionManager) {
|
|
322
230
|
this.subscriptionManager.destroy();
|
|
@@ -328,71 +236,34 @@ export class RoolSpace extends EventEmitter {
|
|
|
328
236
|
}
|
|
329
237
|
/**
|
|
330
238
|
* Handle a space event from the SSE subscription.
|
|
331
|
-
*
|
|
239
|
+
* Applies bounded space-state events and emits space events.
|
|
332
240
|
*/
|
|
333
241
|
handleSpaceEvent(event) {
|
|
334
|
-
// Reconnect
|
|
335
|
-
if (event.type === 'connected'
|
|
242
|
+
// Reconnect: fetch the current full state once and apply it locally.
|
|
243
|
+
if (event.type === 'connected') {
|
|
336
244
|
this.handleResync();
|
|
337
245
|
return;
|
|
338
246
|
}
|
|
339
247
|
if (event.type === 'space_files_changed') {
|
|
340
248
|
this.emit('filesChanged', { spaceId: event.spaceId, source: event.source, timestamp: event.timestamp });
|
|
249
|
+
// WebDAV is now the source of truth for object/schema/meta writes. Keep
|
|
250
|
+
// the SDK's bounded caches (schema, metadata, object stats, conversations)
|
|
251
|
+
// coherent with remote/local file mutations; the file tree still handles
|
|
252
|
+
// path-level reconciliation via this event.
|
|
253
|
+
this.handleResync();
|
|
341
254
|
return;
|
|
342
255
|
}
|
|
343
256
|
if (event.type === 'space_files_reset') {
|
|
344
257
|
this.emit('filesReset', { spaceId: event.spaceId, source: event.source, timestamp: event.timestamp });
|
|
258
|
+
this.handleResync();
|
|
345
259
|
return;
|
|
346
260
|
}
|
|
347
|
-
|
|
348
|
-
if (event.type === 'channel_updated' && event.channelId && event.channel) {
|
|
349
|
-
const info = channelToInfo(event.channelId, event.channel);
|
|
350
|
-
// Update internal channel data
|
|
351
|
-
this._channelData[event.channelId] = event.channel;
|
|
352
|
-
if (this._knownChannelIds.has(event.channelId)) {
|
|
353
|
-
// Known channel — update in list
|
|
354
|
-
this._channels = this._channels.map(c => c.id === event.channelId ? info : c);
|
|
355
|
-
this.emit('channelUpdated', info);
|
|
356
|
-
}
|
|
357
|
-
else {
|
|
358
|
-
// New channel
|
|
359
|
-
this._knownChannelIds.add(event.channelId);
|
|
360
|
-
this._channels = [...this._channels, info];
|
|
361
|
-
this.emit('channelCreated', info);
|
|
362
|
-
}
|
|
363
|
-
// Also route to the open channel for channel-internal handling.
|
|
364
|
-
const channel = this.openChannels.get(event.channelId);
|
|
365
|
-
if (channel)
|
|
366
|
-
channel._handleEvent(event);
|
|
367
|
-
return;
|
|
368
|
-
}
|
|
369
|
-
if (event.type === 'channel_deleted' && event.channelId) {
|
|
370
|
-
this._knownChannelIds.delete(event.channelId);
|
|
371
|
-
this._channels = this._channels.filter(c => c.id !== event.channelId);
|
|
372
|
-
delete this._channelData[event.channelId];
|
|
373
|
-
this.emit('channelDeleted', event.channelId);
|
|
374
|
-
// Route to the open channel (so it can clean up)
|
|
375
|
-
const channel = this.openChannels.get(event.channelId);
|
|
376
|
-
if (channel)
|
|
377
|
-
channel._handleEvent(event);
|
|
378
|
-
return;
|
|
379
|
-
}
|
|
380
|
-
// Channel-specific events (conversation_updated): route to the matching channel only
|
|
381
|
-
if ('channelId' in event && event.channelId) {
|
|
382
|
-
const channel = this.openChannels.get(event.channelId);
|
|
383
|
-
if (channel)
|
|
384
|
-
channel._handleEvent(event);
|
|
385
|
-
return;
|
|
386
|
-
}
|
|
387
|
-
// Space-wide non-file events (schema, metadata): broadcast to all channels on this space
|
|
388
|
-
for (const channel of this.openChannels.values()) {
|
|
389
|
-
channel._handleEvent(event);
|
|
390
|
-
}
|
|
261
|
+
this._handleEvent(event);
|
|
391
262
|
}
|
|
392
263
|
// Reconnect resync: fetch full state and distribute. Retries until it lands —
|
|
393
264
|
// a single failure used to leave the client empty until reload. Single-flight:
|
|
394
265
|
// an event arriving mid-resync sets _resyncPending so we re-run once afterward,
|
|
395
|
-
// ensuring the final state reflects the latest
|
|
266
|
+
// ensuring the final state reflects the latest server-side file change.
|
|
396
267
|
handleResync() {
|
|
397
268
|
if (this._resyncing) {
|
|
398
269
|
this._resyncPending = true;
|
|
@@ -407,24 +278,13 @@ export class RoolSpace extends EventEmitter {
|
|
|
407
278
|
this._resyncing = false;
|
|
408
279
|
return;
|
|
409
280
|
}
|
|
410
|
-
void this.
|
|
281
|
+
void this._graphqlClient.openSpaceFull(this._id).then((result) => {
|
|
411
282
|
if (this._closed) {
|
|
412
283
|
this._resyncing = false;
|
|
413
284
|
return;
|
|
414
285
|
}
|
|
415
286
|
this.applyFullData(result);
|
|
416
|
-
|
|
417
|
-
const channelData = result.channels[channelId];
|
|
418
|
-
if (!channelData)
|
|
419
|
-
continue; // Channel deleted between fetch and distribution
|
|
420
|
-
channel._applyResyncData({
|
|
421
|
-
meta: result.meta,
|
|
422
|
-
schema: result.schema,
|
|
423
|
-
objectStats: result.objectStats,
|
|
424
|
-
channel: channelData,
|
|
425
|
-
});
|
|
426
|
-
}
|
|
427
|
-
this.logger.info(`[RoolSpace] Space ${this._id} resync complete`);
|
|
287
|
+
this._logger.info(`[RoolSpace] Space ${this._id} resync complete`);
|
|
428
288
|
this._finishResync();
|
|
429
289
|
}).catch((error) => {
|
|
430
290
|
if (this._closed) {
|
|
@@ -432,7 +292,7 @@ export class RoolSpace extends EventEmitter {
|
|
|
432
292
|
return;
|
|
433
293
|
}
|
|
434
294
|
const ms = Math.min(1000 * 2 ** attempt, 30000);
|
|
435
|
-
this.
|
|
295
|
+
this._logger.error(`[RoolSpace] Space ${this._id} resync failed (attempt ${attempt + 1}), retrying in ${ms}ms:`, error);
|
|
436
296
|
this._resyncTimer = setTimeout(() => this._resyncWithRetry(attempt + 1), ms);
|
|
437
297
|
});
|
|
438
298
|
}
|
|
@@ -451,12 +311,13 @@ export class RoolSpace extends EventEmitter {
|
|
|
451
311
|
this._name = data.name;
|
|
452
312
|
this._role = data.role;
|
|
453
313
|
this._memberCount = data.memberCount;
|
|
454
|
-
this._objectStats = data.objectStats;
|
|
455
314
|
this._schema = data.schema;
|
|
456
315
|
this._meta = data.meta;
|
|
457
|
-
this.
|
|
458
|
-
this.
|
|
459
|
-
this.
|
|
316
|
+
this._conversations = data.conversations;
|
|
317
|
+
this._objectStats = new Map(Object.entries(data.objectStats));
|
|
318
|
+
this._activeLeaves.clear();
|
|
319
|
+
this._conversationInfos = this.getConversations();
|
|
320
|
+
this.emit('reset', { source: 'system' });
|
|
460
321
|
}
|
|
461
322
|
}
|
|
462
323
|
//# sourceMappingURL=space.js.map
|
package/dist/space.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space.js","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"space.js","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"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"}
|
package/dist/subscription.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ConnectionState, ClientEvent,
|
|
1
|
+
import type { ConnectionState, ClientEvent, SpaceEvent } from './types.js';
|
|
2
2
|
import type { AuthManager } from './auth.js';
|
|
3
3
|
import type { Logger } from './logger.js';
|
|
4
4
|
export interface ClientSubscriptionConfig {
|
|
@@ -20,7 +20,7 @@ export interface SpaceSubscriptionConfig {
|
|
|
20
20
|
authManager: AuthManager;
|
|
21
21
|
logger: Logger;
|
|
22
22
|
spaceId: string;
|
|
23
|
-
onEvent: (event:
|
|
23
|
+
onEvent: (event: SpaceEvent) => void;
|
|
24
24
|
onConnectionStateChanged: (state: ConnectionState) => void;
|
|
25
25
|
onError: (error: Error) => void;
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAiC,MAAM,YAAY,CAAC;AAC1G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAqX1C,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,wBAAwB,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3D,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED,qBAAa,yBAAyB;IACpC,OAAO,CAAC,YAAY,CAA4B;gBAEpC,MAAM,EAAE,wBAAwB;IAoBtC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,OAAO,IAAI,IAAI;CAGhB;AA8CD,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,wBAAwB,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3D,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,YAAY,CAA2B;gBAEnC,MAAM,EAAE,uBAAuB;IAqBrC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,OAAO,IAAI,IAAI;CAGhB"}
|
package/dist/subscription.js
CHANGED
|
@@ -97,7 +97,9 @@ class Subscription {
|
|
|
97
97
|
if (state.kind !== 'probing' && state.kind !== 'live')
|
|
98
98
|
return;
|
|
99
99
|
this.rejectInitIfPending(new Error('Heartbeat timeout'));
|
|
100
|
-
|
|
100
|
+
// A previously-live connection dropping warrants a fast reconnect.
|
|
101
|
+
if (state.kind === 'live')
|
|
102
|
+
this.backoffDelay = INITIAL_RECONNECT_DELAY;
|
|
101
103
|
this.enterBackoff('heartbeat timeout');
|
|
102
104
|
return;
|
|
103
105
|
case 'backoff_fired':
|
|
@@ -353,18 +355,6 @@ function parseClientEvent(raw, logger) {
|
|
|
353
355
|
};
|
|
354
356
|
case 'user_storage_changed':
|
|
355
357
|
return { type, timestamp, key: raw.key, value: raw.value };
|
|
356
|
-
case 'channel_created':
|
|
357
|
-
return {
|
|
358
|
-
type, timestamp, spaceId: raw.spaceId,
|
|
359
|
-
channelId: raw.channelId, name: raw.name,
|
|
360
|
-
channelCreatedAt: raw.createdAt,
|
|
361
|
-
channelCreatedBy: raw.createdBy,
|
|
362
|
-
channelCreatedByName: raw.createdByName,
|
|
363
|
-
};
|
|
364
|
-
case 'channel_renamed':
|
|
365
|
-
return { type, timestamp, spaceId: raw.spaceId, channelId: raw.channelId, name: raw.name };
|
|
366
|
-
case 'channel_deleted':
|
|
367
|
-
return { type, timestamp, spaceId: raw.spaceId, channelId: raw.channelId };
|
|
368
358
|
default:
|
|
369
359
|
logger.warn('[RoolClient] Unknown client event type:', type);
|
|
370
360
|
return null;
|
|
@@ -377,7 +367,7 @@ export class SpaceSubscriptionManager {
|
|
|
377
367
|
getGraphqlUrl: config.getGraphqlUrl,
|
|
378
368
|
authManager: config.authManager,
|
|
379
369
|
logger: config.logger,
|
|
380
|
-
logPrefix: `[
|
|
370
|
+
logPrefix: `[RoolSpace] Space ${config.spaceId}`,
|
|
381
371
|
query: `
|
|
382
372
|
subscription SpaceEvents($spaceId: String!) {
|
|
383
373
|
spaceEvents(spaceId: $spaceId)
|
|
@@ -408,31 +398,17 @@ function parseSpaceEvent(raw, logger) {
|
|
|
408
398
|
const source = raw.source ?? 'user';
|
|
409
399
|
if (!rawType || !spaceId)
|
|
410
400
|
return null;
|
|
411
|
-
// Object/file reactivity is WebDAV sync based. Ignore old object
|
|
412
|
-
// notifications if an older server still emits them.
|
|
413
|
-
if (rawType.startsWith('object_'))
|
|
414
|
-
return null;
|
|
415
401
|
switch (rawType) {
|
|
416
402
|
case 'connected':
|
|
417
403
|
return { type: 'connected', spaceId, timestamp, source, serverVersion: raw.serverVersion };
|
|
418
|
-
case 'space_changed':
|
|
419
|
-
return { type: 'space_changed', spaceId, timestamp, source };
|
|
420
|
-
case 'schema_updated':
|
|
421
|
-
return { type: 'schema_updated', spaceId, timestamp, source, schema: raw.schema };
|
|
422
|
-
case 'metadata_updated':
|
|
423
|
-
return { type: 'metadata_updated', spaceId, timestamp, source, metadata: raw.metadata };
|
|
424
|
-
case 'channel_updated':
|
|
425
|
-
return { type: 'channel_updated', spaceId, timestamp, source, channelId: raw.channelId, channel: raw.channel };
|
|
426
404
|
case 'conversation_updated':
|
|
427
|
-
return { type: 'conversation_updated', spaceId, timestamp, source,
|
|
428
|
-
case 'channel_deleted':
|
|
429
|
-
return { type: 'channel_deleted', spaceId, timestamp, source, channelId: raw.channelId };
|
|
405
|
+
return { type: 'conversation_updated', spaceId, timestamp, source, conversationId: raw.conversationId, conversation: raw.conversation };
|
|
430
406
|
case 'space_files_changed':
|
|
431
407
|
return { type: 'space_files_changed', spaceId, timestamp, source };
|
|
432
408
|
case 'space_files_reset':
|
|
433
409
|
return { type: 'space_files_reset', spaceId, timestamp, source };
|
|
434
410
|
default:
|
|
435
|
-
logger.warn('[
|
|
411
|
+
logger.warn('[RoolSpace] Unknown space event type:', rawType);
|
|
436
412
|
return null;
|
|
437
413
|
}
|
|
438
414
|
}
|