@rool-dev/sdk 0.12.5 → 2.0.0-dev.03df95a

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.
Files changed (108) hide show
  1. package/README.md +460 -783
  2. package/dist/agents.d.ts +138 -0
  3. package/dist/agents.d.ts.map +1 -0
  4. package/dist/agents.js +563 -0
  5. package/dist/agents.js.map +1 -0
  6. package/dist/auth-base.d.ts +43 -88
  7. package/dist/auth-base.d.ts.map +1 -1
  8. package/dist/auth-base.js +178 -302
  9. package/dist/auth-base.js.map +1 -1
  10. package/dist/auth-browser.d.ts +7 -25
  11. package/dist/auth-browser.d.ts.map +1 -1
  12. package/dist/auth-browser.js +45 -82
  13. package/dist/auth-browser.js.map +1 -1
  14. package/dist/auth-native.d.ts +9 -56
  15. package/dist/auth-native.d.ts.map +1 -1
  16. package/dist/auth-native.js +88 -177
  17. package/dist/auth-native.js.map +1 -1
  18. package/dist/auth-node.d.ts +32 -36
  19. package/dist/auth-node.d.ts.map +1 -1
  20. package/dist/auth-node.js +338 -265
  21. package/dist/auth-node.js.map +1 -1
  22. package/dist/auth-url.d.ts +6 -0
  23. package/dist/auth-url.d.ts.map +1 -0
  24. package/dist/auth-url.js +30 -0
  25. package/dist/auth-url.js.map +1 -0
  26. package/dist/client.d.ts +37 -290
  27. package/dist/client.d.ts.map +1 -1
  28. package/dist/client.js +331 -635
  29. package/dist/client.js.map +1 -1
  30. package/dist/events.d.ts +40 -0
  31. package/dist/events.d.ts.map +1 -0
  32. package/dist/events.js +175 -0
  33. package/dist/events.js.map +1 -0
  34. package/dist/files.d.ts +174 -0
  35. package/dist/files.d.ts.map +1 -0
  36. package/dist/files.js +846 -0
  37. package/dist/files.js.map +1 -0
  38. package/dist/index.d.ts +16 -19
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +7 -20
  41. package/dist/index.js.map +1 -1
  42. package/dist/machine.d.ts +51 -0
  43. package/dist/machine.d.ts.map +1 -0
  44. package/dist/machine.js +142 -0
  45. package/dist/machine.js.map +1 -0
  46. package/dist/problem.d.ts +11 -0
  47. package/dist/problem.d.ts.map +1 -0
  48. package/dist/problem.js +20 -0
  49. package/dist/problem.js.map +1 -0
  50. package/dist/structured.d.ts +84 -0
  51. package/dist/structured.d.ts.map +1 -0
  52. package/dist/structured.js +405 -0
  53. package/dist/structured.js.map +1 -0
  54. package/dist/types.d.ts +131 -520
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +11 -16
  57. package/dist/auth.d.ts +0 -99
  58. package/dist/auth.d.ts.map +0 -1
  59. package/dist/auth.js +0 -217
  60. package/dist/auth.js.map +0 -1
  61. package/dist/client-info.d.ts +0 -18
  62. package/dist/client-info.d.ts.map +0 -1
  63. package/dist/client-info.js +0 -25
  64. package/dist/client-info.js.map +0 -1
  65. package/dist/event-emitter.d.ts +0 -45
  66. package/dist/event-emitter.d.ts.map +0 -1
  67. package/dist/event-emitter.js +0 -86
  68. package/dist/event-emitter.js.map +0 -1
  69. package/dist/graphql.d.ts +0 -90
  70. package/dist/graphql.d.ts.map +0 -1
  71. package/dist/graphql.js +0 -471
  72. package/dist/graphql.js.map +0 -1
  73. package/dist/logger.d.ts +0 -13
  74. package/dist/logger.d.ts.map +0 -1
  75. package/dist/logger.js +0 -17
  76. package/dist/logger.js.map +0 -1
  77. package/dist/path.d.ts +0 -6
  78. package/dist/path.d.ts.map +0 -1
  79. package/dist/path.js +0 -47
  80. package/dist/path.js.map +0 -1
  81. package/dist/reroute.d.ts +0 -22
  82. package/dist/reroute.d.ts.map +0 -1
  83. package/dist/reroute.js +0 -70
  84. package/dist/reroute.js.map +0 -1
  85. package/dist/rest.d.ts +0 -54
  86. package/dist/rest.d.ts.map +0 -1
  87. package/dist/rest.js +0 -171
  88. package/dist/rest.js.map +0 -1
  89. package/dist/router.d.ts +0 -20
  90. package/dist/router.d.ts.map +0 -1
  91. package/dist/router.js +0 -54
  92. package/dist/router.js.map +0 -1
  93. package/dist/space-session.d.ts +0 -30
  94. package/dist/space-session.d.ts.map +0 -1
  95. package/dist/space-session.js +0 -83
  96. package/dist/space-session.js.map +0 -1
  97. package/dist/space.d.ts +0 -161
  98. package/dist/space.d.ts.map +0 -1
  99. package/dist/space.js +0 -618
  100. package/dist/space.js.map +0 -1
  101. package/dist/subscription.d.ts +0 -36
  102. package/dist/subscription.d.ts.map +0 -1
  103. package/dist/subscription.js +0 -419
  104. package/dist/subscription.js.map +0 -1
  105. package/dist/webdav.d.ts +0 -171
  106. package/dist/webdav.d.ts.map +0 -1
  107. package/dist/webdav.js +0 -481
  108. package/dist/webdav.js.map +0 -1
@@ -1,36 +0,0 @@
1
- import type { ConnectionState, ClientEvent, SpaceEvent } from './types.js';
2
- import type { AuthManager } from './auth.js';
3
- import type { Logger } from './logger.js';
4
- import { type RoolClientInfo } from './client-info.js';
5
- export interface ClientSubscriptionConfig {
6
- graphqlUrl: string;
7
- authManager: AuthManager;
8
- logger: Logger;
9
- clientInfo: RoolClientInfo;
10
- onEvent: (event: ClientEvent) => void;
11
- onConnectionStateChanged: (state: ConnectionState) => void;
12
- onError: (error: Error) => void;
13
- }
14
- export declare class ClientSubscriptionManager {
15
- private subscription;
16
- constructor(config: ClientSubscriptionConfig);
17
- subscribe(): Promise<void>;
18
- destroy(): void;
19
- }
20
- export interface SpaceSubscriptionConfig {
21
- getGraphqlUrl: () => Promise<string>;
22
- authManager: AuthManager;
23
- logger: Logger;
24
- clientInfo: RoolClientInfo;
25
- spaceId: string;
26
- onEvent: (event: SpaceEvent) => void;
27
- onConnectionStateChanged: (state: ConnectionState) => void;
28
- onError: (error: Error) => void;
29
- }
30
- export declare class SpaceSubscriptionManager {
31
- private subscription;
32
- constructor(config: SpaceSubscriptionConfig);
33
- subscribe(): Promise<void>;
34
- destroy(): void;
35
- }
36
- //# sourceMappingURL=subscription.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAuB,UAAU,EAAiC,MAAM,YAAY,CAAC;AAC/H,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAuX/E,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,cAAc,CAAC;IAC3B,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;IAqBtC,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,UAAU,EAAE,cAAc,CAAC;IAC3B,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;IAsBrC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,OAAO,IAAI,IAAI;CAGhB"}
@@ -1,419 +0,0 @@
1
- // =============================================================================
2
- // Subscription Managers
3
- // SSE-based GraphQL subscriptions with auto-reconnect.
4
- // See SUBSCRIPTION.md for the state machine spec.
5
- // =============================================================================
6
- import { createClient } from 'graphql-sse';
7
- import { clientInfoHeaderRecord } from './client-info.js';
8
- const INITIAL_RECONNECT_DELAY = 1000;
9
- const MAX_RECONNECT_DELAY = 30000;
10
- const RECONNECT_MULTIPLIER = 2;
11
- const HEARTBEAT_TIMEOUT = 5_000; // Server sends heartbeats every 2s; reconnect if no message within 5s
12
- const HEARTBEAT_CHECK_INTERVAL = 1_000;
13
- function makeDeferred() {
14
- let resolve;
15
- let reject;
16
- const promise = new Promise((res, rej) => { resolve = res; reject = rej; });
17
- return { promise, resolve, reject };
18
- }
19
- function isRecord(value) {
20
- return !!value && typeof value === 'object' && !Array.isArray(value);
21
- }
22
- class Subscription {
23
- config;
24
- state = { kind: 'idle' };
25
- backoffDelay = INITIAL_RECONNECT_DELAY;
26
- lastMessageAt = 0;
27
- initDeferred = null;
28
- boundOnlineHandler = null;
29
- constructor(config) {
30
- this.config = config;
31
- }
32
- get isLive() {
33
- return this.state.kind === 'live';
34
- }
35
- start() {
36
- if (this.state.kind === 'live')
37
- return Promise.resolve();
38
- if (this.state.kind === 'closed')
39
- return Promise.reject(new Error('Subscription is closed'));
40
- if (this.initDeferred)
41
- return this.initDeferred.promise;
42
- this.initDeferred = makeDeferred();
43
- if (this.state.kind === 'idle') {
44
- this.listenForOnline();
45
- this.handle({ kind: 'start' });
46
- }
47
- // Otherwise the subscription is already running (backoff/awaiting_auth/probing)
48
- // and the new deferred will resolve/reject on the next terminal transition.
49
- return this.initDeferred.promise;
50
- }
51
- stop() {
52
- this.handle({ kind: 'stop' });
53
- }
54
- // ===========================================================================
55
- // State machine — the only place this.state is written.
56
- // ===========================================================================
57
- handle(input) {
58
- const state = this.state;
59
- switch (input.kind) {
60
- case 'start':
61
- if (state.kind !== 'idle')
62
- return;
63
- this.enterAwaitingAuth();
64
- return;
65
- case 'stop':
66
- if (state.kind === 'closed')
67
- return;
68
- this.enterClosed();
69
- return;
70
- case 'auth_resolved':
71
- if (state.kind !== 'awaiting_auth')
72
- return;
73
- this.enterProbing(input.tokens, input.url);
74
- return;
75
- case 'auth_failed':
76
- if (state.kind !== 'awaiting_auth')
77
- return;
78
- this.config.onError(input.error);
79
- this.rejectInitIfPending(input.error);
80
- this.enterBackoff('auth failed');
81
- return;
82
- case 'message_received':
83
- if (state.kind !== 'probing' && state.kind !== 'live')
84
- return;
85
- this.handleMessage(input.raw);
86
- return;
87
- case 'stream_closing':
88
- if (state.kind !== 'probing' && state.kind !== 'live')
89
- return;
90
- // The server is ending this stream (shutdown/handoff/recycle), so
91
- // re-resolve and reconnect at once — no backoff wait, this isn't a failure.
92
- this.backoffDelay = INITIAL_RECONNECT_DELAY;
93
- this.config.onConnectionStateChanged('disconnected');
94
- this.tearDown(state);
95
- this.enterAwaitingAuth();
96
- return;
97
- case 'watchdog_stale':
98
- if (state.kind !== 'probing' && state.kind !== 'live')
99
- return;
100
- this.rejectInitIfPending(new Error('Heartbeat timeout'));
101
- // A previously-live connection dropping warrants a fast reconnect.
102
- if (state.kind === 'live')
103
- this.backoffDelay = INITIAL_RECONNECT_DELAY;
104
- this.enterBackoff('heartbeat timeout');
105
- return;
106
- case 'backoff_fired':
107
- if (state.kind !== 'backoff')
108
- return;
109
- this.enterAwaitingAuth();
110
- return;
111
- case 'online_event':
112
- if (state.kind === 'closed')
113
- return;
114
- this.backoffDelay = INITIAL_RECONNECT_DELAY;
115
- return;
116
- }
117
- }
118
- // ===========================================================================
119
- // State entry functions.
120
- // INVARIANT: update this.state BEFORE any side effects so that re-entrant
121
- // callbacks (e.g., graphql-sse firing complete inside unsubscribe()) observe
122
- // the new state and no-op.
123
- // ===========================================================================
124
- enterAwaitingAuth() {
125
- // From idle or backoff.
126
- const prev = this.state;
127
- if (prev.kind === 'backoff') {
128
- clearTimeout(prev.timer);
129
- }
130
- this.state = { kind: 'awaiting_auth' };
131
- this.config.onConnectionStateChanged('reconnecting');
132
- Promise.all([
133
- this.config.authManager.getTokens(),
134
- this.config.getGraphqlUrl(),
135
- ]).then(([tokens, url]) => {
136
- if (tokens)
137
- this.handle({ kind: 'auth_resolved', tokens, url });
138
- else
139
- this.handle({ kind: 'auth_failed', error: new Error('Not authenticated') });
140
- }, (err) => {
141
- this.handle({ kind: 'auth_failed', error: err instanceof Error ? err : new Error(String(err)) });
142
- });
143
- }
144
- enterProbing(tokens, url) {
145
- // From awaiting_auth. The watchdog is the sole liveness detector: every
146
- // failure mode manifests as heartbeats no longer arriving, and the
147
- // watchdog fires watchdog_stale within HEARTBEAT_TIMEOUT.
148
- let client;
149
- try {
150
- client = createClient({
151
- url,
152
- headers: () => ({
153
- Authorization: `Bearer ${tokens.accessToken}`,
154
- 'X-Rool-Token': tokens.roolToken,
155
- ...clientInfoHeaderRecord(this.config.clientInfo),
156
- }),
157
- });
158
- }
159
- catch (error) {
160
- const err = error instanceof Error ? error : new Error(String(error));
161
- this.config.logger.error(`${this.config.logPrefix} failed to create client:`, err);
162
- this.config.onError(err);
163
- this.rejectInitIfPending(err);
164
- this.enterBackoff('client error');
165
- return;
166
- }
167
- this.lastMessageAt = Date.now();
168
- const watchdog = setInterval(() => {
169
- if (Date.now() - this.lastMessageAt > HEARTBEAT_TIMEOUT) {
170
- this.handle({ kind: 'watchdog_stale' });
171
- }
172
- }, HEARTBEAT_CHECK_INTERVAL);
173
- // Indirect unsubscribe so state can be set before client.subscribe() is
174
- // called, even though the real unsubscribe fn isn't available until it
175
- // returns.
176
- let realUnsubscribe = () => { };
177
- const unsubscribe = () => realUnsubscribe();
178
- this.state = { kind: 'probing', client, unsubscribe, watchdog };
179
- realUnsubscribe = client.subscribe({ query: this.config.query, variables: this.config.variables }, {
180
- next: (result) => {
181
- const data = result.data?.[this.config.dataField];
182
- if (!isRecord(data))
183
- return;
184
- this.handle({ kind: 'message_received', raw: data });
185
- },
186
- // error/complete intentionally not observed.
187
- error: () => { },
188
- complete: () => { },
189
- });
190
- }
191
- enterBackoff(reason) {
192
- // From awaiting_auth (after auth_failed) or probing/live (after watchdog_stale).
193
- const prev = this.state;
194
- const delay = this.backoffDelay;
195
- const timer = setTimeout(() => this.handle({ kind: 'backoff_fired' }), delay);
196
- this.state = { kind: 'backoff', timer };
197
- this.backoffDelay = Math.min(this.backoffDelay * RECONNECT_MULTIPLIER, MAX_RECONNECT_DELAY);
198
- this.config.logger.info(`${this.config.logPrefix} ${reason}, reconnecting in ${delay}ms`);
199
- if (prev.kind === 'probing' || prev.kind === 'live') {
200
- this.config.onConnectionStateChanged('disconnected');
201
- this.tearDown(prev);
202
- this.config.onConnectionStateChanged('reconnecting');
203
- }
204
- // awaiting_auth → backoff: consumer was already in 'reconnecting', no emission.
205
- }
206
- enterClosed() {
207
- // From any non-closed state.
208
- const prev = this.state;
209
- this.state = { kind: 'closed' };
210
- switch (prev.kind) {
211
- case 'probing':
212
- case 'live':
213
- this.config.onConnectionStateChanged('disconnected');
214
- this.tearDown(prev);
215
- break;
216
- case 'backoff':
217
- clearTimeout(prev.timer);
218
- this.config.onConnectionStateChanged('disconnected');
219
- break;
220
- case 'awaiting_auth':
221
- this.config.onConnectionStateChanged('disconnected');
222
- break;
223
- case 'idle':
224
- case 'closed':
225
- break;
226
- }
227
- this.removeOnlineListener();
228
- this.rejectInitIfPending(new Error('Subscription stopped before connected'));
229
- }
230
- handleMessage(raw) {
231
- const state = this.state;
232
- if (state.kind !== 'probing' && state.kind !== 'live')
233
- return;
234
- // Every message (including heartbeats) counts for liveness and backoff reset.
235
- this.lastMessageAt = Date.now();
236
- this.backoffDelay = INITIAL_RECONNECT_DELAY;
237
- // Control event: the server is ending this stream; re-resolve and reconnect now.
238
- if (raw.type === 'stream_closing') {
239
- this.config.logger.info(`${this.config.logPrefix} server closing stream (reason: ${raw.reason ?? 'unknown'}), reconnecting`);
240
- this.handle({ kind: 'stream_closing' });
241
- return;
242
- }
243
- const event = this.config.parseEvent(raw);
244
- if (!event)
245
- return;
246
- if (state.kind === 'probing' && this.config.isConnectedEvent(event)) {
247
- this.state = {
248
- kind: 'live',
249
- client: state.client,
250
- unsubscribe: state.unsubscribe,
251
- watchdog: state.watchdog,
252
- };
253
- this.config.logger.info(`${this.config.logPrefix} connected`);
254
- this.config.onConnectionStateChanged('connected');
255
- if (this.initDeferred) {
256
- const { resolve } = this.initDeferred;
257
- this.initDeferred = null;
258
- resolve();
259
- }
260
- }
261
- this.config.onEvent(event);
262
- }
263
- // ===========================================================================
264
- // Helpers.
265
- // ===========================================================================
266
- tearDown(prev) {
267
- clearInterval(prev.watchdog);
268
- try {
269
- prev.unsubscribe();
270
- }
271
- catch (e) {
272
- this.config.logger.warn(`${this.config.logPrefix} unsubscribe threw:`, e);
273
- }
274
- }
275
- rejectInitIfPending(error) {
276
- if (!this.initDeferred)
277
- return;
278
- const { reject } = this.initDeferred;
279
- this.initDeferred = null;
280
- reject(error);
281
- }
282
- listenForOnline() {
283
- if (typeof window === 'undefined')
284
- return;
285
- if (this.boundOnlineHandler)
286
- return;
287
- this.boundOnlineHandler = () => this.handle({ kind: 'online_event' });
288
- window.addEventListener('online', this.boundOnlineHandler);
289
- }
290
- removeOnlineListener() {
291
- if (typeof window === 'undefined')
292
- return;
293
- if (!this.boundOnlineHandler)
294
- return;
295
- window.removeEventListener('online', this.boundOnlineHandler);
296
- this.boundOnlineHandler = null;
297
- }
298
- }
299
- export class ClientSubscriptionManager {
300
- subscription;
301
- constructor(config) {
302
- this.subscription = new Subscription({
303
- getGraphqlUrl: () => Promise.resolve(config.graphqlUrl),
304
- authManager: config.authManager,
305
- logger: config.logger,
306
- clientInfo: config.clientInfo,
307
- logPrefix: '[RoolClient]',
308
- query: `
309
- subscription ClientEvents {
310
- clientEvents
311
- }
312
- `,
313
- dataField: 'clientEvents',
314
- parseEvent: (raw) => parseClientEvent(raw, config.logger),
315
- isConnectedEvent: (event) => event.type === 'connected',
316
- onEvent: config.onEvent,
317
- onConnectionStateChanged: config.onConnectionStateChanged,
318
- onError: config.onError,
319
- });
320
- }
321
- async subscribe() {
322
- await this.subscription.start();
323
- }
324
- destroy() {
325
- this.subscription.stop();
326
- }
327
- }
328
- function parseClientEvent(raw, logger) {
329
- if (raw.type === 'heartbeat')
330
- return null;
331
- const type = raw.type;
332
- const timestamp = raw.timestamp;
333
- if (!type)
334
- return null;
335
- switch (type) {
336
- case 'connected':
337
- return { type, timestamp, serverVersion: raw.serverVersion, minimumSdkVersion: raw.minimumSdkVersion, compatibility: raw.compatibility };
338
- case 'space_created':
339
- return {
340
- type, timestamp, spaceId: raw.spaceId, name: raw.name,
341
- inboundEmailAddress: raw.inboundEmailAddress,
342
- ownerId: raw.ownerId, size: raw.size,
343
- createdAt: raw.createdAt, updatedAt: raw.updatedAt,
344
- role: raw.role,
345
- };
346
- case 'space_renamed':
347
- return { type, timestamp, spaceId: raw.spaceId, name: raw.name };
348
- case 'space_deleted':
349
- return { type, timestamp, spaceId: raw.spaceId };
350
- case 'space_access_changed':
351
- return {
352
- type, timestamp, spaceId: raw.spaceId, name: raw.name,
353
- inboundEmailAddress: raw.inboundEmailAddress,
354
- ownerId: raw.ownerId, size: raw.size,
355
- createdAt: raw.createdAt, updatedAt: raw.updatedAt,
356
- role: raw.role,
357
- memberCount: raw.memberCount,
358
- };
359
- case 'user_storage_changed':
360
- return { type, timestamp, key: raw.key, value: raw.value };
361
- default:
362
- logger.warn('[RoolClient] Unknown client event type:', type);
363
- return null;
364
- }
365
- }
366
- export class SpaceSubscriptionManager {
367
- subscription;
368
- constructor(config) {
369
- this.subscription = new Subscription({
370
- getGraphqlUrl: config.getGraphqlUrl,
371
- authManager: config.authManager,
372
- logger: config.logger,
373
- clientInfo: config.clientInfo,
374
- logPrefix: `[RoolSpace] Space ${config.spaceId}`,
375
- query: `
376
- subscription SpaceEvents($spaceId: String!) {
377
- spaceEvents(spaceId: $spaceId)
378
- }
379
- `,
380
- variables: { spaceId: config.spaceId },
381
- dataField: 'spaceEvents',
382
- parseEvent: (raw) => parseSpaceEvent(raw, config.logger),
383
- isConnectedEvent: (event) => event.type === 'connected',
384
- onEvent: config.onEvent,
385
- onConnectionStateChanged: config.onConnectionStateChanged,
386
- onError: config.onError,
387
- });
388
- }
389
- async subscribe() {
390
- await this.subscription.start();
391
- }
392
- destroy() {
393
- this.subscription.stop();
394
- }
395
- }
396
- function parseSpaceEvent(raw, logger) {
397
- if (raw.type === 'heartbeat')
398
- return null;
399
- const rawType = raw.type;
400
- const spaceId = raw.spaceId;
401
- const timestamp = raw.timestamp;
402
- const source = raw.source ?? 'user';
403
- if (!rawType || !spaceId)
404
- return null;
405
- switch (rawType) {
406
- case 'connected':
407
- return { type: 'connected', spaceId, timestamp, source, serverVersion: raw.serverVersion };
408
- case 'conversation_updated':
409
- return { type: 'conversation_updated', spaceId, timestamp, source, conversationId: raw.conversationId, conversation: raw.conversation };
410
- case 'space_files_changed':
411
- return { type: 'space_files_changed', spaceId, timestamp, source };
412
- case 'space_files_reset':
413
- return { type: 'space_files_reset', spaceId, timestamp, source };
414
- default:
415
- logger.warn('[RoolSpace] Unknown space event type:', rawType);
416
- return null;
417
- }
418
- }
419
- //# sourceMappingURL=subscription.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"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"}
package/dist/webdav.d.ts DELETED
@@ -1,171 +0,0 @@
1
- import type { AuthManager } from './auth.js';
2
- import { type RoolClientInfo } from './client-info.js';
3
- export type WebDAVDepth = '0' | '1' | 'infinity';
4
- export type WebDAVSyncLevel = '1' | 'infinite';
5
- export type WebDAVLockDepth = '0' | 'infinity';
6
- export type WebDAVPropName = 'creationdate' | 'displayname' | 'getcontentlength' | 'getcontenttype' | 'getetag' | 'getlastmodified' | 'lockdiscovery' | 'quota-available-bytes' | 'quota-used-bytes' | 'resourcetype' | 'supportedlock' | 'current-user-privilege-set' | 'supported-report-set' | 'sync-token' | (string & {});
7
- export interface WebDAVConfig {
8
- webdavUrl: string;
9
- spaceId: string;
10
- authManager: AuthManager;
11
- clientInfo?: RoolClientInfo;
12
- /** Called on shard refusal/drain (421/503). Return the new WebDAV base URL. */
13
- onRefused?: () => Promise<string>;
14
- }
15
- export interface WebDAVRequestInit extends RequestInit {
16
- /** Treat the path as a collection URL, i.e. include the trailing slash. */
17
- collection?: boolean;
18
- }
19
- export interface WebDAVWriteResult {
20
- status: 200 | 201 | 204;
21
- etag: string | null;
22
- location: string | null;
23
- }
24
- export interface WebDAVLockResult {
25
- status: 200 | 201;
26
- token: string;
27
- timeoutSeconds: number | null;
28
- locks: WebDAVActiveLock[];
29
- xml: string;
30
- }
31
- export interface WebDAVMultiStatus {
32
- status: 207;
33
- xml: string;
34
- responses: WebDAVResponse[];
35
- }
36
- export interface WebDAVSyncCollectionResult extends WebDAVMultiStatus {
37
- token: string;
38
- }
39
- export interface WebDAVResponse {
40
- href: string;
41
- path: string;
42
- isCollection: boolean;
43
- status: number | null;
44
- props: WebDAVProps;
45
- propstats: WebDAVPropstat[];
46
- }
47
- export interface WebDAVPropstat {
48
- status: number;
49
- props: Record<string, unknown>;
50
- }
51
- export interface WebDAVProps {
52
- creationdate?: string;
53
- displayname?: string;
54
- getcontentlength?: number;
55
- getcontenttype?: string;
56
- getetag?: string;
57
- getlastmodified?: string;
58
- resourcetype?: 'collection' | '';
59
- quotaUsedBytes?: number;
60
- quotaAvailableBytes?: number | null;
61
- canWrite?: boolean;
62
- locks?: WebDAVActiveLock[];
63
- syncToken?: string;
64
- supportedReports?: string[];
65
- [key: string]: unknown;
66
- }
67
- export interface WebDAVActiveLock {
68
- token: string | null;
69
- owner: string | null;
70
- depth: WebDAVLockDepth | null;
71
- timeoutSeconds: number | null;
72
- root: string | null;
73
- scope: 'exclusive' | 'shared' | null;
74
- type: 'write' | null;
75
- }
76
- export declare class WebDAVError extends Error {
77
- status: number;
78
- statusText: string;
79
- body: string;
80
- constructor(response: Response, body: string);
81
- }
82
- /** WebDAV client for a space's authenticated file storage. */
83
- export declare class RoolWebDAV {
84
- private webdavUrl;
85
- private spaceId;
86
- private authManager;
87
- private onRefused?;
88
- private clientInfo;
89
- constructor(config: WebDAVConfig);
90
- /** Update the WebDAV base URL (used after shard rerouting). */
91
- setWebDAVUrl(webdavUrl: string): void;
92
- /** Return the WebDAV href for a machine path. */
93
- href(path?: string, options?: {
94
- collection?: boolean;
95
- }): string;
96
- /** Return the absolute WebDAV URL for a machine path. */
97
- url(path?: string, options?: {
98
- collection?: boolean;
99
- }): string;
100
- /** Low-level WebDAV request for a machine path. Adds Rool auth and returns the raw Response. */
101
- request(method: string, path?: string, init?: WebDAVRequestInit): Promise<Response>;
102
- options(path?: string): Promise<Response>;
103
- propfind(path: string, options: {
104
- depth: WebDAVDepth;
105
- props?: 'allprop' | 'propname' | WebDAVPropName[];
106
- signal?: AbortSignal;
107
- }): Promise<WebDAVMultiStatus>;
108
- syncCollection(path: string, options: {
109
- token?: string | null;
110
- level: WebDAVSyncLevel;
111
- props?: 'allprop' | WebDAVPropName[];
112
- limit?: number;
113
- signal?: AbortSignal;
114
- }): Promise<WebDAVSyncCollectionResult>;
115
- get(path: string, options?: {
116
- range?: string | {
117
- start: number;
118
- end?: number;
119
- };
120
- signal?: AbortSignal;
121
- }): Promise<Response>;
122
- head(path: string): Promise<Response>;
123
- put(path: string, body: BodyInit, options?: {
124
- contentType?: string;
125
- /** Create missing parent collections atomically (Rool-Create-Parents). */
126
- createParents?: boolean;
127
- ifMatch?: string;
128
- ifNoneMatch?: string;
129
- lockToken?: string;
130
- signal?: AbortSignal;
131
- headers?: HeadersInit;
132
- }): Promise<WebDAVWriteResult>;
133
- delete(path: string, options?: {
134
- collection?: boolean;
135
- ifMatch?: string;
136
- lockToken?: string;
137
- headers?: HeadersInit;
138
- }): Promise<void>;
139
- mkcol(path: string, options?: {
140
- lockToken?: string;
141
- headers?: HeadersInit;
142
- }): Promise<void>;
143
- copy(source: string, destination: string, options?: {
144
- depth?: '0' | 'infinity';
145
- overwrite?: boolean;
146
- lockToken?: string;
147
- headers?: HeadersInit;
148
- }): Promise<WebDAVWriteResult>;
149
- move(source: string, destination: string, options?: {
150
- overwrite?: boolean;
151
- lockToken?: string;
152
- headers?: HeadersInit;
153
- }): Promise<WebDAVWriteResult>;
154
- lock(path: string, options: {
155
- collection?: boolean;
156
- depth: WebDAVLockDepth;
157
- owner?: string;
158
- timeoutSeconds?: number;
159
- signal?: AbortSignal;
160
- }): Promise<WebDAVLockResult>;
161
- refreshLock(path: string, token: string, options?: {
162
- collection?: boolean;
163
- timeoutSeconds?: number;
164
- signal?: AbortSignal;
165
- }): Promise<WebDAVLockResult>;
166
- unlock(token: string): Promise<void>;
167
- private moveOrCopy;
168
- private authenticatedFetch;
169
- private pathUrl;
170
- }
171
- //# sourceMappingURL=webdav.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webdav.d.ts","sourceRoot":"","sources":["../src/webdav.ts"],"names":[],"mappings":"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"}