@rool-dev/svelte 0.10.2-dev.47747e3 → 0.10.2-dev.550002

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.
@@ -163,6 +163,15 @@ class RoolImpl {
163
163
  this.#openSpaces.add(reactive);
164
164
  return reactive;
165
165
  }
166
+ /**
167
+ * Duplicate an existing space. Returns a ReactiveSpace.
168
+ */
169
+ async duplicateSpace(sourceSpaceId, name) {
170
+ const raw = await this.#client.duplicateSpace(sourceSpaceId, name);
171
+ const reactive = wrapSpace(raw);
172
+ this.#openSpaces.add(reactive);
173
+ return reactive;
174
+ }
166
175
  /**
167
176
  * Manually refresh the spaces list.
168
177
  */
@@ -175,6 +184,30 @@ class RoolImpl {
175
184
  deleteSpace(spaceId) {
176
185
  return this.#client.deleteSpace(spaceId);
177
186
  }
187
+ /**
188
+ * Mark the current user for deletion, then log out locally.
189
+ */
190
+ deleteCurrentUser() {
191
+ return this.#client.deleteCurrentUser();
192
+ }
193
+ /**
194
+ * Set or change the current user's password.
195
+ */
196
+ setPassword(password) {
197
+ return this.#client.setPassword(password);
198
+ }
199
+ /**
200
+ * Get a value from user storage.
201
+ */
202
+ getUserStorage(key) {
203
+ return this.#client.getUserStorage(key);
204
+ }
205
+ /**
206
+ * Get all user storage data.
207
+ */
208
+ getAllUserStorage() {
209
+ return this.#client.getAllUserStorage();
210
+ }
178
211
  /**
179
212
  * Set a value in user storage.
180
213
  * Updates reactive state immediately, then syncs to server.
@@ -227,45 +260,6 @@ class RoolImpl {
227
260
  this.currentUser = user;
228
261
  return user;
229
262
  }
230
- /**
231
- * Install an extension into a space.
232
- * Creates/updates a channel with the extension's manifest settings.
233
- * Returns the channel ID.
234
- */
235
- // --- User Extensions (your personal library) ---
236
- /** Upload or update a user extension bundle. */
237
- uploadExtension(extensionId, options) {
238
- return this.#client.uploadExtension(extensionId, options);
239
- }
240
- /** Delete a user extension permanently. */
241
- deleteExtension(extensionId) {
242
- return this.#client.deleteExtension(extensionId);
243
- }
244
- /** List the current user's extensions. */
245
- listExtensions() {
246
- return this.#client.listExtensions();
247
- }
248
- /** Get info for a specific user extension. */
249
- getExtensionInfo(extensionId) {
250
- return this.#client.getExtensionInfo(extensionId);
251
- }
252
- // --- Published Extensions (public discovery & install) ---
253
- /** Search published extensions. */
254
- findExtensions(options) {
255
- return this.#client.findExtensions(options);
256
- }
257
- /** Respond to a server-initiated probe with a method-specific result or error. */
258
- probeResponse(requestId, result, error) {
259
- return this.#client.probeResponse(requestId, result, error);
260
- }
261
- /** Publish a user extension (make it publicly discoverable). */
262
- publishToPublic(extensionId) {
263
- return this.#client.publishToPublic(extensionId);
264
- }
265
- /** Unpublish an extension (remove from public listing). */
266
- unpublishFromPublic(extensionId) {
267
- return this.#client.unpublishFromPublic(extensionId);
268
- }
269
263
  /**
270
264
  * Create a reactive channel list for a space.
271
265
  * Auto-updates when channels are created, updated, or deleted.
@@ -1,5 +1,6 @@
1
1
  import type { RoolSpace, ChannelInfo, ConnectionState, RoolUserRole, LinkAccess, SpaceMember } from '@rool-dev/sdk';
2
2
  import { type ReactiveChannel } from './channel.svelte.js';
3
+ import { ReactiveFileTree } from './file-tree.svelte.js';
3
4
  /**
4
5
  * A reactive wrapper around a RoolSpace. Exposes reactive `channels` and
5
6
  * `connectionState`, and provides `openChannel()` that returns a ReactiveChannel.
@@ -29,8 +30,9 @@ declare class ReactiveSpaceImpl {
29
30
  get linkAccess(): LinkAccess;
30
31
  get memberCount(): number;
31
32
  get webdav(): import("@rool-dev/sdk").RoolWebDAV;
33
+ get fileTree(): ReactiveFileTree;
32
34
  getStorageUsage(...args: Parameters<RoolSpace['getStorageUsage']>): Promise<import("@rool-dev/sdk").SpaceFileStorageUsage>;
33
- fetchMachineResource(...args: Parameters<RoolSpace['fetchMachineResource']>): Promise<Response>;
35
+ fetchPath(...args: Parameters<RoolSpace['fetchPath']>): Promise<Response>;
34
36
  rename(newName: string): Promise<void>;
35
37
  delete(): Promise<void>;
36
38
  listUsers(): Promise<SpaceMember[]>;
@@ -39,7 +41,6 @@ declare class ReactiveSpaceImpl {
39
41
  setLinkAccess(...args: Parameters<RoolSpace['setLinkAccess']>): Promise<void>;
40
42
  renameChannel(channelId: string, name: string): Promise<void>;
41
43
  deleteChannel(channelId: string): Promise<void>;
42
- installExtension(extensionId: string, channelId: string): Promise<string>;
43
44
  exportArchive(): Promise<Blob>;
44
45
  refresh(): Promise<void>;
45
46
  on(...args: Parameters<RoolSpace['on']>): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"space.svelte.d.ts","sourceRoot":"","sources":["../src/space.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpH,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAExE;;;;;;GAMG;AACH,cAAM,iBAAiB;;IAQrB,eAAe,kBAA2C;gBAE9C,KAAK,EAAE,SAAS;IAmB5B,IAAI,QAAQ,YAA2B;IAEvC;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAY9D;;;OAGG;IACH,KAAK,IAAI,IAAI;IAgBb,IAAI,QAAQ,IAAI,WAAW,EAAE,CAA8B;IAG3D,IAAI,EAAE,IAAI,MAAM,CAA2B;IAC3C,IAAI,IAAI,IAAI,MAAM,CAA6B;IAC/C,IAAI,IAAI,IAAI,YAAY,CAA6B;IACrD,IAAI,UAAU,IAAI,UAAU,CAAmC;IAC/D,IAAI,WAAW,IAAI,MAAM,CAAoC;IAC7D,IAAI,MAAM,uCAAiC;IAG3C,eAAe,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACjE,oBAAoB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAG3E,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IACvB,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IACnC,OAAO,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACzC,aAAa,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC7D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/C,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACzE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAGxB,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;CAC1C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,CAEzD;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"space.svelte.d.ts","sourceRoot":"","sources":["../src/space.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpH,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,cAAM,iBAAiB;;IASrB,eAAe,kBAA2C;gBAE9C,KAAK,EAAE,SAAS;IAoB5B,IAAI,QAAQ,YAA2B;IAEvC;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAY9D;;;OAGG;IACH,KAAK,IAAI,IAAI;IAiBb,IAAI,QAAQ,IAAI,WAAW,EAAE,CAA8B;IAG3D,IAAI,EAAE,IAAI,MAAM,CAA2B;IAC3C,IAAI,IAAI,IAAI,MAAM,CAA6B;IAC/C,IAAI,IAAI,IAAI,YAAY,CAA6B;IACrD,IAAI,UAAU,IAAI,UAAU,CAAmC;IAC/D,IAAI,WAAW,IAAI,MAAM,CAAoC;IAC7D,IAAI,MAAM,uCAAiC;IAC3C,IAAI,QAAQ,IAAI,gBAAgB,CAA2B;IAG3D,eAAe,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACjE,SAAS,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAGrD,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IACvB,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IACnC,OAAO,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACzC,aAAa,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC7D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAGxB,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;CAC1C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,CAEzD;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { wrapChannel } from './channel.svelte.js';
2
+ import { ReactiveFileTree } from './file-tree.svelte.js';
2
3
  /**
3
4
  * A reactive wrapper around a RoolSpace. Exposes reactive `channels` and
4
5
  * `connectionState`, and provides `openChannel()` that returns a ReactiveChannel.
@@ -10,12 +11,14 @@ class ReactiveSpaceImpl {
10
11
  #space;
11
12
  #channels = new Map();
12
13
  #unsubscribers = [];
14
+ #fileTree;
13
15
  #closed = false;
14
16
  // Reactive state mirroring the underlying space
15
17
  #channelList = $state([]);
16
18
  connectionState = $state('reconnecting');
17
19
  constructor(space) {
18
20
  this.#space = space;
21
+ this.#fileTree = new ReactiveFileTree(space);
19
22
  this.#channelList = space.channels;
20
23
  const refreshChannels = () => { this.#channelList = space.channels; };
21
24
  space.on('channelCreated', refreshChannels);
@@ -42,7 +45,7 @@ class ReactiveSpaceImpl {
42
45
  if (existing && !existing.isClosed)
43
46
  return existing;
44
47
  const raw = await this.#space.openChannel(channelId);
45
- const reactive = wrapChannel(raw);
48
+ const reactive = wrapChannel(raw, this.#fileTree);
46
49
  this.#channels.set(channelId, reactive);
47
50
  return reactive;
48
51
  }
@@ -61,6 +64,7 @@ class ReactiveSpaceImpl {
61
64
  for (const unsub of this.#unsubscribers)
62
65
  unsub();
63
66
  this.#unsubscribers.length = 0;
67
+ this.#fileTree.close();
64
68
  this.#space.close();
65
69
  }
66
70
  // Reactive getters
@@ -72,9 +76,10 @@ class ReactiveSpaceImpl {
72
76
  get linkAccess() { return this.#space.linkAccess; }
73
77
  get memberCount() { return this.#space.memberCount; }
74
78
  get webdav() { return this.#space.webdav; }
79
+ get fileTree() { return this.#fileTree; }
75
80
  // Proxy resource methods
76
81
  getStorageUsage(...args) { return this.#space.getStorageUsage(...args); }
77
- fetchMachineResource(...args) { return this.#space.fetchMachineResource(...args); }
82
+ fetchPath(...args) { return this.#space.fetchPath(...args); }
78
83
  // Proxy admin methods
79
84
  rename(newName) { return this.#space.rename(newName); }
80
85
  delete() { return this.#space.delete(); }
@@ -84,7 +89,6 @@ class ReactiveSpaceImpl {
84
89
  setLinkAccess(...args) { return this.#space.setLinkAccess(...args); }
85
90
  renameChannel(channelId, name) { return this.#space.renameChannel(channelId, name); }
86
91
  deleteChannel(channelId) { return this.#space.deleteChannel(channelId); }
87
- installExtension(extensionId, channelId) { return this.#space.installExtension(extensionId, channelId); }
88
92
  exportArchive() { return this.#space.exportArchive(); }
89
93
  refresh() { return this.#space.refresh(); }
90
94
  // Events on the underlying space (channelCreated/Updated/Deleted, connectionStateChanged)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rool-dev/svelte",
3
- "version": "0.10.2-dev.47747e3",
3
+ "version": "0.10.2-dev.550002",
4
4
  "description": "Svelte 5 runes for Rool Spaces",
5
5
  "type": "module",
6
6
  "svelte": "./dist/index.js",
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "license": "MIT",
43
43
  "dependencies": {
44
- "@rool-dev/sdk": "0.10.2-dev.47747e3"
44
+ "@rool-dev/sdk": "0.10.2-dev.550002"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "svelte": "^5.0.0"