@rool-dev/client 0.3.1 → 0.4.0-dev.22f8ef0
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 +189 -90
- package/dist/auth-browser.d.ts.map +1 -1
- package/dist/auth-browser.js +45 -27
- package/dist/auth-browser.js.map +1 -1
- package/dist/client.d.ts +29 -26
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +90 -88
- package/dist/client.js.map +1 -1
- package/dist/graphql.d.ts +16 -13
- package/dist/graphql.d.ts.map +1 -1
- package/dist/graphql.js +113 -93
- package/dist/graphql.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/media.d.ts +7 -7
- package/dist/media.js +14 -14
- package/dist/space.d.ts +256 -0
- package/dist/space.d.ts.map +1 -0
- package/dist/space.js +730 -0
- package/dist/space.js.map +1 -0
- package/dist/subscription.d.ts +2 -2
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +14 -17
- package/dist/subscription.js.map +1 -1
- package/dist/types.d.ts +101 -62
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/package.json +1 -1
- package/dist/graph.d.ts +0 -240
- package/dist/graph.d.ts.map +0 -1
- package/dist/graph.js +0 -581
- package/dist/graph.js.map +0 -1
package/dist/client.d.ts
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { EventEmitter } from './event-emitter.js';
|
|
2
|
-
import {
|
|
3
|
-
import type { RoolClientConfig, RoolClientEvents,
|
|
2
|
+
import { RoolSpace } from './space.js';
|
|
3
|
+
import type { RoolClientConfig, RoolClientEvents, RoolSpaceInfo, Account, UserResult, UserInfo } from './types.js';
|
|
4
4
|
/**
|
|
5
|
-
* Rool Client - Manages authentication,
|
|
5
|
+
* Rool Client - Manages authentication, space lifecycle, and shared infrastructure.
|
|
6
6
|
*
|
|
7
|
-
* The client is lightweight - most
|
|
8
|
-
* obtained via openGraph() or createGraph().
|
|
7
|
+
* The client is lightweight - most operations happen on Space instances
|
|
9
8
|
*
|
|
10
9
|
* Features:
|
|
11
10
|
* - Authentication (login, logout, token management)
|
|
12
|
-
* -
|
|
11
|
+
* - Spaces lifecycle (list, open, create, delete)
|
|
13
12
|
* - Shared SSE subscription with event routing
|
|
14
13
|
* - Media operations
|
|
15
|
-
* - AI operations (
|
|
14
|
+
* - AI operations (prompt, image generation)
|
|
16
15
|
*/
|
|
17
16
|
export declare class RoolClient extends EventEmitter<RoolClientEvents> {
|
|
18
17
|
private urls;
|
|
@@ -20,7 +19,7 @@ export declare class RoolClient extends EventEmitter<RoolClientEvents> {
|
|
|
20
19
|
private graphqlClient;
|
|
21
20
|
private subscriptionManager;
|
|
22
21
|
private connectionId;
|
|
23
|
-
private
|
|
22
|
+
private subscribedSpaces;
|
|
24
23
|
constructor(config: RoolClientConfig);
|
|
25
24
|
/**
|
|
26
25
|
* Initialize the client - should be called on app startup.
|
|
@@ -59,24 +58,24 @@ export declare class RoolClient extends EventEmitter<RoolClientEvents> {
|
|
|
59
58
|
*/
|
|
60
59
|
getUser(): UserInfo;
|
|
61
60
|
/**
|
|
62
|
-
* List all
|
|
61
|
+
* List all spaces accessible to the user.
|
|
63
62
|
*/
|
|
64
|
-
|
|
63
|
+
listSpaces(): Promise<RoolSpaceInfo[]>;
|
|
65
64
|
/**
|
|
66
|
-
* Open an existing
|
|
67
|
-
* Loads the
|
|
65
|
+
* Open an existing space.
|
|
66
|
+
* Loads the space data from the server and returns a Space instance.
|
|
68
67
|
*/
|
|
69
|
-
|
|
68
|
+
openSpace(spaceId: string): Promise<RoolSpace>;
|
|
70
69
|
/**
|
|
71
|
-
* Create a new
|
|
72
|
-
* Creates on server and returns a
|
|
70
|
+
* Create a new space.
|
|
71
|
+
* Creates on server and returns a Space instance.
|
|
73
72
|
*/
|
|
74
|
-
|
|
73
|
+
createSpace(name?: string): Promise<RoolSpace>;
|
|
75
74
|
/**
|
|
76
|
-
* Delete a
|
|
77
|
-
* Note: This does not affect any open
|
|
75
|
+
* Delete a space.
|
|
76
|
+
* Note: This does not affect any open Space instances - they become stale.
|
|
78
77
|
*/
|
|
79
|
-
|
|
78
|
+
deleteSpace(spaceId: string): Promise<void>;
|
|
80
79
|
/**
|
|
81
80
|
* Get account info from server (plan, credits, etc).
|
|
82
81
|
*/
|
|
@@ -88,8 +87,8 @@ export declare class RoolClient extends EventEmitter<RoolClientEvents> {
|
|
|
88
87
|
private get mediaClient();
|
|
89
88
|
/**
|
|
90
89
|
* Subscribe to real-time events.
|
|
91
|
-
* Client receives
|
|
92
|
-
* to subscribed
|
|
90
|
+
* Client receives lifecycle events; space-level events are routed
|
|
91
|
+
* to subscribed Space instances.
|
|
93
92
|
*/
|
|
94
93
|
subscribe(): Promise<void>;
|
|
95
94
|
/**
|
|
@@ -117,13 +116,17 @@ export declare class RoolClient extends EventEmitter<RoolClientEvents> {
|
|
|
117
116
|
*
|
|
118
117
|
* @example
|
|
119
118
|
* const result = await client.graphql<{ lastMessages: Message[] }>(
|
|
120
|
-
* `query
|
|
121
|
-
* {
|
|
119
|
+
* `query trace($spaceId: String!) { trace(spaceId: $spaceId) }`,
|
|
120
|
+
* { spaceId: 'abc123' }
|
|
122
121
|
* );
|
|
123
122
|
*/
|
|
124
123
|
graphql<T>(query: string, variables?: Record<string, unknown>): Promise<T>;
|
|
125
|
-
private
|
|
126
|
-
private
|
|
127
|
-
|
|
124
|
+
private registerSpaceForEvents;
|
|
125
|
+
private unregisterSpaceFromEvents;
|
|
126
|
+
/**
|
|
127
|
+
* Handle a raw event message from the subscription manager.
|
|
128
|
+
* @internal
|
|
129
|
+
*/
|
|
130
|
+
private handleEvent;
|
|
128
131
|
}
|
|
129
132
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD,OAAO,EAAE,SAAS,EAAoB,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EAGb,OAAO,EACP,UAAU,EACV,QAAQ,EAET,MAAM,YAAY,CAAC;AAUpB;;;;;;;;;;;GAWG;AACH,qBAAa,UAAW,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,gBAAgB,CAAgC;gBAE5C,MAAM,EAAE,gBAAgB;IA+BpC;;;;OAIG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,OAAO,IAAI,IAAI;IAiBf;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACH,MAAM,IAAI,IAAI;IAWd;;;OAGG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI7C;;OAEG;IACH,OAAO,IAAI,QAAQ;IAQnB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAI5C;;;OAGG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAoBpD;;;OAGG;IACG,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAoBpD;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQ3D,OAAO,KAAK,WAAW,GAKtB;IAMD;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBhC;;OAEG;IACH,WAAW,IAAI,IAAI;IAOnB;;OAEG;IACH,YAAY,IAAI,OAAO;IAQvB;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;OAIG;IACH,MAAM,CAAC,UAAU,IAAI,MAAM;IAI3B;;;;;;;;;OASG;IACG,OAAO,CAAC,CAAC,EACb,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC;IAQb,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,yBAAyB;IAQjC;;;OAGG;IACH,OAAO,CAAC,WAAW;CAwDpB"}
|
package/dist/client.js
CHANGED
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// Rool Client
|
|
3
|
-
// Lightweight client for auth, graph lifecycle, and shared infrastructure
|
|
4
3
|
// =============================================================================
|
|
5
4
|
import { EventEmitter } from './event-emitter.js';
|
|
6
5
|
import { AuthManager } from './auth.js';
|
|
7
6
|
import { GraphQLClient } from './graphql.js';
|
|
8
7
|
import { SubscriptionManager } from './subscription.js';
|
|
9
8
|
import { MediaClient } from './media.js';
|
|
10
|
-
import {
|
|
9
|
+
import { RoolSpace, generateEntityId } from './space.js';
|
|
11
10
|
/**
|
|
12
|
-
* Rool Client - Manages authentication,
|
|
11
|
+
* Rool Client - Manages authentication, space lifecycle, and shared infrastructure.
|
|
13
12
|
*
|
|
14
|
-
* The client is lightweight - most
|
|
15
|
-
* obtained via openGraph() or createGraph().
|
|
13
|
+
* The client is lightweight - most operations happen on Space instances
|
|
16
14
|
*
|
|
17
15
|
* Features:
|
|
18
16
|
* - Authentication (login, logout, token management)
|
|
19
|
-
* -
|
|
17
|
+
* - Spaces lifecycle (list, open, create, delete)
|
|
20
18
|
* - Shared SSE subscription with event routing
|
|
21
19
|
* - Media operations
|
|
22
|
-
* - AI operations (
|
|
20
|
+
* - AI operations (prompt, image generation)
|
|
23
21
|
*/
|
|
24
22
|
export class RoolClient extends EventEmitter {
|
|
25
23
|
urls;
|
|
@@ -27,8 +25,8 @@ export class RoolClient extends EventEmitter {
|
|
|
27
25
|
graphqlClient;
|
|
28
26
|
subscriptionManager = null;
|
|
29
27
|
connectionId;
|
|
30
|
-
// Registry of open
|
|
31
|
-
|
|
28
|
+
// Registry of open spaces for event routing
|
|
29
|
+
subscribedSpaces = new Map();
|
|
32
30
|
constructor(config) {
|
|
33
31
|
super();
|
|
34
32
|
const baseUrl = config.baseUrl.replace(/\/+$/, ''); // Remove trailing slashes
|
|
@@ -68,11 +66,11 @@ export class RoolClient extends EventEmitter {
|
|
|
68
66
|
destroy() {
|
|
69
67
|
this.authManager.destroy();
|
|
70
68
|
this.subscriptionManager?.destroy();
|
|
71
|
-
// Close all open
|
|
72
|
-
for (const
|
|
73
|
-
|
|
69
|
+
// Close all open spaces
|
|
70
|
+
for (const space of this.subscribedSpaces.values()) {
|
|
71
|
+
space.close();
|
|
74
72
|
}
|
|
75
|
-
this.
|
|
73
|
+
this.subscribedSpaces.clear();
|
|
76
74
|
this.removeAllListeners();
|
|
77
75
|
}
|
|
78
76
|
// ===========================================================================
|
|
@@ -90,11 +88,11 @@ export class RoolClient extends EventEmitter {
|
|
|
90
88
|
logout() {
|
|
91
89
|
this.authManager.logout();
|
|
92
90
|
this.unsubscribe();
|
|
93
|
-
// Close all open
|
|
94
|
-
for (const
|
|
95
|
-
|
|
91
|
+
// Close all open spaces
|
|
92
|
+
for (const space of this.subscribedSpaces.values()) {
|
|
93
|
+
space.close();
|
|
96
94
|
}
|
|
97
|
-
this.
|
|
95
|
+
this.subscribedSpaces.clear();
|
|
98
96
|
}
|
|
99
97
|
/**
|
|
100
98
|
* Process auth callback from URL fragment.
|
|
@@ -123,62 +121,62 @@ export class RoolClient extends EventEmitter {
|
|
|
123
121
|
return this.authManager.getUser();
|
|
124
122
|
}
|
|
125
123
|
// ===========================================================================
|
|
126
|
-
//
|
|
124
|
+
// Space Lifecycle
|
|
127
125
|
// ===========================================================================
|
|
128
126
|
/**
|
|
129
|
-
* List all
|
|
127
|
+
* List all spaces accessible to the user.
|
|
130
128
|
*/
|
|
131
|
-
async
|
|
132
|
-
return this.graphqlClient.
|
|
129
|
+
async listSpaces() {
|
|
130
|
+
return this.graphqlClient.listSpaces();
|
|
133
131
|
}
|
|
134
132
|
/**
|
|
135
|
-
* Open an existing
|
|
136
|
-
* Loads the
|
|
133
|
+
* Open an existing space.
|
|
134
|
+
* Loads the space data from the server and returns a Space instance.
|
|
137
135
|
*/
|
|
138
|
-
async
|
|
139
|
-
const [
|
|
140
|
-
this.graphqlClient.
|
|
141
|
-
this.graphqlClient.
|
|
136
|
+
async openSpace(spaceId) {
|
|
137
|
+
const [spaceData, spaceList] = await Promise.all([
|
|
138
|
+
this.graphqlClient.getSpace(spaceId),
|
|
139
|
+
this.graphqlClient.listSpaces(),
|
|
142
140
|
]);
|
|
143
|
-
const
|
|
144
|
-
return new
|
|
145
|
-
id:
|
|
146
|
-
name:
|
|
147
|
-
role:
|
|
148
|
-
initialData:
|
|
141
|
+
const spaceInfo = spaceList.find(g => g.id === spaceId);
|
|
142
|
+
return new RoolSpace({
|
|
143
|
+
id: spaceId,
|
|
144
|
+
name: spaceInfo?.name ?? spaceId,
|
|
145
|
+
role: spaceInfo?.role ?? 'viewer',
|
|
146
|
+
initialData: spaceData,
|
|
149
147
|
graphqlClient: this.graphqlClient,
|
|
150
148
|
mediaClient: this.mediaClient,
|
|
151
|
-
onRegisterForEvents: (id,
|
|
152
|
-
onUnregisterFromEvents: (id) => this.
|
|
149
|
+
onRegisterForEvents: (id, space) => this.registerSpaceForEvents(id, space),
|
|
150
|
+
onUnregisterFromEvents: (id) => this.unregisterSpaceFromEvents(id),
|
|
153
151
|
});
|
|
154
152
|
}
|
|
155
153
|
/**
|
|
156
|
-
* Create a new
|
|
157
|
-
* Creates on server and returns a
|
|
154
|
+
* Create a new space.
|
|
155
|
+
* Creates on server and returns a Space instance.
|
|
158
156
|
*/
|
|
159
|
-
async
|
|
160
|
-
const
|
|
161
|
-
const
|
|
162
|
-
const initialData = {
|
|
157
|
+
async createSpace(name) {
|
|
158
|
+
const spaceId = generateEntityId();
|
|
159
|
+
const spaceName = name ?? spaceId;
|
|
160
|
+
const initialData = { objects: {}, meta: {} };
|
|
163
161
|
// Create on server
|
|
164
|
-
await this.graphqlClient.
|
|
165
|
-
return new
|
|
166
|
-
id:
|
|
167
|
-
name:
|
|
162
|
+
await this.graphqlClient.setSpace(spaceId, initialData);
|
|
163
|
+
return new RoolSpace({
|
|
164
|
+
id: spaceId,
|
|
165
|
+
name: spaceName,
|
|
168
166
|
role: 'owner',
|
|
169
167
|
initialData,
|
|
170
168
|
graphqlClient: this.graphqlClient,
|
|
171
169
|
mediaClient: this.mediaClient,
|
|
172
|
-
onRegisterForEvents: (id,
|
|
173
|
-
onUnregisterFromEvents: (id) => this.
|
|
170
|
+
onRegisterForEvents: (id, space) => this.registerSpaceForEvents(id, space),
|
|
171
|
+
onUnregisterFromEvents: (id) => this.unregisterSpaceFromEvents(id),
|
|
174
172
|
});
|
|
175
173
|
}
|
|
176
174
|
/**
|
|
177
|
-
* Delete a
|
|
178
|
-
* Note: This does not affect any open
|
|
175
|
+
* Delete a space.
|
|
176
|
+
* Note: This does not affect any open Space instances - they become stale.
|
|
179
177
|
*/
|
|
180
|
-
async
|
|
181
|
-
await this.graphqlClient.
|
|
178
|
+
async deleteSpace(spaceId) {
|
|
179
|
+
await this.graphqlClient.deleteSpace(spaceId);
|
|
182
180
|
// Client-level event will be emitted via SSE subscription
|
|
183
181
|
}
|
|
184
182
|
// ===========================================================================
|
|
@@ -197,7 +195,7 @@ export class RoolClient extends EventEmitter {
|
|
|
197
195
|
return this.graphqlClient.searchUser(email);
|
|
198
196
|
}
|
|
199
197
|
// ===========================================================================
|
|
200
|
-
// Media Client (used internally by
|
|
198
|
+
// Media Client (used internally by Space instances)
|
|
201
199
|
// ===========================================================================
|
|
202
200
|
get mediaClient() {
|
|
203
201
|
return new MediaClient({
|
|
@@ -210,8 +208,8 @@ export class RoolClient extends EventEmitter {
|
|
|
210
208
|
// ===========================================================================
|
|
211
209
|
/**
|
|
212
210
|
* Subscribe to real-time events.
|
|
213
|
-
* Client receives
|
|
214
|
-
* to subscribed
|
|
211
|
+
* Client receives lifecycle events; space-level events are routed
|
|
212
|
+
* to subscribed Space instances.
|
|
215
213
|
*/
|
|
216
214
|
async subscribe() {
|
|
217
215
|
if (this.subscriptionManager)
|
|
@@ -220,7 +218,7 @@ export class RoolClient extends EventEmitter {
|
|
|
220
218
|
graphqlUrl: this.urls.graphql,
|
|
221
219
|
authManager: this.authManager,
|
|
222
220
|
connectionId: this.connectionId,
|
|
223
|
-
onEvent: (event) => this.
|
|
221
|
+
onEvent: (event) => this.handleEvent(event),
|
|
224
222
|
onConnectionStateChanged: (state) => {
|
|
225
223
|
this.emit('connectionStateChanged', state);
|
|
226
224
|
},
|
|
@@ -269,73 +267,77 @@ export class RoolClient extends EventEmitter {
|
|
|
269
267
|
*
|
|
270
268
|
* @example
|
|
271
269
|
* const result = await client.graphql<{ lastMessages: Message[] }>(
|
|
272
|
-
* `query
|
|
273
|
-
* {
|
|
270
|
+
* `query trace($spaceId: String!) { trace(spaceId: $spaceId) }`,
|
|
271
|
+
* { spaceId: 'abc123' }
|
|
274
272
|
* );
|
|
275
273
|
*/
|
|
276
274
|
async graphql(query, variables) {
|
|
277
275
|
return this.graphqlClient.query(query, variables);
|
|
278
276
|
}
|
|
279
277
|
// ===========================================================================
|
|
280
|
-
// Private Methods -
|
|
278
|
+
// Private Methods - Space Registry
|
|
281
279
|
// ===========================================================================
|
|
282
|
-
|
|
283
|
-
this.
|
|
280
|
+
registerSpaceForEvents(spaceId, space) {
|
|
281
|
+
this.subscribedSpaces.set(spaceId, space);
|
|
284
282
|
}
|
|
285
|
-
|
|
286
|
-
this.
|
|
283
|
+
unregisterSpaceFromEvents(spaceId) {
|
|
284
|
+
this.subscribedSpaces.delete(spaceId);
|
|
287
285
|
}
|
|
288
286
|
// ===========================================================================
|
|
289
287
|
// Private Methods - Event Handling
|
|
290
288
|
// ===========================================================================
|
|
291
|
-
|
|
292
|
-
|
|
289
|
+
/**
|
|
290
|
+
* Handle a raw event message from the subscription manager.
|
|
291
|
+
* @internal
|
|
292
|
+
*/
|
|
293
|
+
handleEvent(event) {
|
|
294
|
+
const { type, spaceId, patch, source } = event;
|
|
293
295
|
switch (type) {
|
|
294
|
-
case '
|
|
295
|
-
// Route to subscribed
|
|
296
|
+
case 'space_patched':
|
|
297
|
+
// Route to subscribed Space instance
|
|
296
298
|
if (patch) {
|
|
297
|
-
const
|
|
298
|
-
if (
|
|
299
|
-
|
|
299
|
+
const space = this.subscribedSpaces.get(spaceId);
|
|
300
|
+
if (space) {
|
|
301
|
+
space.handleRemotePatch(patch, source);
|
|
300
302
|
}
|
|
301
303
|
}
|
|
302
304
|
break;
|
|
303
|
-
case '
|
|
304
|
-
// Route to subscribed
|
|
305
|
+
case 'space_changed':
|
|
306
|
+
// Route to subscribed Space instance
|
|
305
307
|
{
|
|
306
|
-
const
|
|
307
|
-
if (
|
|
308
|
+
const space = this.subscribedSpaces.get(spaceId);
|
|
309
|
+
if (space) {
|
|
308
310
|
// Reload graph data and notify
|
|
309
|
-
void this.graphqlClient.
|
|
310
|
-
|
|
311
|
+
void this.graphqlClient.getSpace(spaceId).then((data) => {
|
|
312
|
+
space.handleRemoteChange(data);
|
|
311
313
|
});
|
|
312
314
|
}
|
|
313
315
|
}
|
|
314
316
|
break;
|
|
315
|
-
case '
|
|
316
|
-
// Emit client-level event and update any open
|
|
317
|
+
case 'space_name_changed':
|
|
318
|
+
// Emit client-level event and update any open Space
|
|
317
319
|
{
|
|
318
320
|
// Fetch updated name
|
|
319
|
-
void this.graphqlClient.
|
|
320
|
-
const info =
|
|
321
|
+
void this.graphqlClient.listSpaces().then((spaces) => {
|
|
322
|
+
const info = spaces.find(g => g.id === spaceId);
|
|
321
323
|
if (info) {
|
|
322
|
-
const
|
|
323
|
-
if (
|
|
324
|
-
|
|
324
|
+
const space = this.subscribedSpaces.get(spaceId);
|
|
325
|
+
if (space) {
|
|
326
|
+
space.handleRemoteRename(info.name);
|
|
325
327
|
}
|
|
326
|
-
this.emit('
|
|
328
|
+
this.emit('spaceRenamed', spaceId, info.name);
|
|
327
329
|
}
|
|
328
330
|
});
|
|
329
331
|
}
|
|
330
332
|
break;
|
|
331
|
-
case '
|
|
333
|
+
case 'space_created':
|
|
332
334
|
// Client-level event only
|
|
333
|
-
this.emit('
|
|
335
|
+
this.emit('spaceCreated', spaceId);
|
|
334
336
|
break;
|
|
335
|
-
case '
|
|
337
|
+
case 'space_deleted':
|
|
336
338
|
// Client-level event
|
|
337
|
-
this.emit('
|
|
338
|
-
// Note: Any open
|
|
339
|
+
this.emit('spaceDeleted', spaceId);
|
|
340
|
+
// Note: Any open Space instances become stale
|
|
339
341
|
break;
|
|
340
342
|
}
|
|
341
343
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,cAAc;AACd,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/graphql.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PromptOptions, RoolSpaceInfo, RoolSpaceData, RoolUser, Account, UserResult } from './types.js';
|
|
2
2
|
import type { AuthManager } from './auth.js';
|
|
3
3
|
export interface GraphQLClientConfig {
|
|
4
4
|
graphqlUrl: string;
|
|
@@ -9,20 +9,23 @@ export declare class GraphQLClient {
|
|
|
9
9
|
private config;
|
|
10
10
|
constructor(config: GraphQLClientConfig);
|
|
11
11
|
private get graphqlUrl();
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
listSpaces(): Promise<RoolSpaceInfo[]>;
|
|
13
|
+
getSpace(spaceId: string): Promise<RoolSpaceData>;
|
|
14
|
+
setSpace(spaceId: string, space: RoolSpaceData): Promise<void>;
|
|
15
|
+
deleteSpace(spaceId: string): Promise<void>;
|
|
16
|
+
renameSpace(spaceId: string, name: string): Promise<void>;
|
|
17
|
+
setSpaceMeta(spaceId: string, meta: Record<string, unknown>): Promise<void>;
|
|
18
|
+
link(spaceId: string, source: string, target: string, type: string): Promise<void>;
|
|
19
|
+
unlink(spaceId: string, source: string, target: string): Promise<void>;
|
|
20
|
+
deleteObjects(spaceId: string, ids: string[]): Promise<void>;
|
|
21
|
+
createObject(spaceId: string, id: string, data: Record<string, unknown>, meta?: Record<string, unknown>, prompt?: string): Promise<string>;
|
|
22
|
+
updateObject(spaceId: string, id: string, data?: Record<string, unknown>, meta?: Record<string, unknown>, prompt?: string): Promise<string>;
|
|
23
|
+
prompt(spaceId: string, prompt: string, options?: PromptOptions): Promise<string | null>;
|
|
21
24
|
getAccount(): Promise<Account>;
|
|
22
25
|
searchUser(email: string): Promise<UserResult | null>;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
listSpaceUsers(spaceId: string): Promise<RoolUser[]>;
|
|
27
|
+
addSpaceUser(spaceId: string, userId: string, role: string): Promise<void>;
|
|
28
|
+
removeSpaceUser(spaceId: string, userId: string): Promise<void>;
|
|
26
29
|
/**
|
|
27
30
|
* Execute an arbitrary GraphQL query or mutation.
|
|
28
31
|
* Use this for app-specific operations not covered by the typed methods.
|
package/dist/graphql.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,QAAQ,EACR,OAAO,EACP,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,MAAM,MAAM,CAAC;CAC/B;AAOD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB;IAIvC,OAAO,KAAK,UAAU,GAErB;IAEK,UAAU,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IActC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAUjD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3E,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAelF,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IActE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5D,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAiBZ,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAqBZ,MAAM,CACV,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoBnB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAgB9B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAiBrD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAcpD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1E,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAarE;;;OAGG;IACG,KAAK,CAAC,CAAC,EACX,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC;YAQC,OAAO;CAqDtB"}
|