@bendyline/docblocks 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/{chunk-OGJN2J4P.js → chunk-LORJUBON.js} +102 -29
  2. package/dist/chunk-LORJUBON.js.map +1 -0
  3. package/dist/chunk-ME76RUMR.js +23 -0
  4. package/dist/{chunk-AOBPNSU6.js.map → chunk-ME76RUMR.js.map} +1 -1
  5. package/dist/filesystem/electron-provider.d.ts +1 -1
  6. package/dist/filesystem/electron-provider.js +4 -4
  7. package/dist/filesystem/filesystem-content-container.d.ts.map +1 -1
  8. package/dist/filesystem/filesystem-content-container.js +14 -1
  9. package/dist/filesystem/filesystem-content-container.js.map +1 -1
  10. package/dist/filesystem/indexeddb-provider.d.ts.map +1 -1
  11. package/dist/filesystem/indexeddb-provider.js +60 -18
  12. package/dist/filesystem/indexeddb-provider.js.map +1 -1
  13. package/dist/filesystem/native-provider.d.ts +1 -0
  14. package/dist/filesystem/native-provider.d.ts.map +1 -1
  15. package/dist/filesystem/native-provider.js +40 -8
  16. package/dist/filesystem/native-provider.js.map +1 -1
  17. package/dist/host/index.d.ts +5 -5
  18. package/dist/host/index.js +7 -7
  19. package/dist/host/types.d.ts +13 -13
  20. package/dist/host/types.js +2 -2
  21. package/dist/{index-TtDaQ3vS.d.ts → index-Bunj8Kb_.d.ts} +17 -17
  22. package/dist/workspace/types.d.ts +7 -0
  23. package/dist/workspace/types.d.ts.map +1 -1
  24. package/package.json +2 -7
  25. package/src/filesystem/electron-provider.ts +6 -6
  26. package/src/filesystem/filesystem-content-container.ts +12 -1
  27. package/src/filesystem/indexeddb-provider.ts +65 -19
  28. package/src/filesystem/native-provider.ts +41 -8
  29. package/src/host/index.ts +14 -14
  30. package/src/host/types.ts +13 -13
  31. package/src/workspace/types.ts +7 -0
  32. package/dist/chunk-AOBPNSU6.js +0 -23
  33. package/dist/chunk-OGJN2J4P.js.map +0 -1
@@ -121,6 +121,25 @@ export class NativeFileSystemProvider {
121
121
  this.label = root.name;
122
122
  this.root = root;
123
123
  }
124
+ async copyDirectory(oldDirPath, newDirPath) {
125
+ const source = await resolveDir(this.root, oldDirPath);
126
+ if (!source)
127
+ return false;
128
+ await resolveDirCreate(this.root, newDirPath);
129
+ for await (const [name, handle] of source) {
130
+ const oldChild = oldDirPath ? `${oldDirPath}/${name}` : name;
131
+ const newChild = newDirPath ? `${newDirPath}/${name}` : name;
132
+ if (handle.kind === 'directory') {
133
+ await this.copyDirectory(oldChild, newChild);
134
+ }
135
+ else {
136
+ const fileHandle = await source.getFileHandle(name);
137
+ const file = await fileHandle.getFile();
138
+ await this.writeBinary(newChild, await file.arrayBuffer());
139
+ }
140
+ }
141
+ return true;
142
+ }
124
143
  async readFile(path) {
125
144
  const p = normalisePath(path);
126
145
  const dir = await resolveDir(this.root, parentDir(p));
@@ -155,18 +174,31 @@ export class NativeFileSystemProvider {
155
174
  async rename(oldPath, newPath) {
156
175
  const op = normalisePath(oldPath);
157
176
  const np = normalisePath(newPath);
177
+ if (op === np)
178
+ return;
179
+ if (!op || !np) {
180
+ throw new Error('Cannot rename the filesystem root');
181
+ }
182
+ if (np.startsWith(op + '/')) {
183
+ throw new Error('Cannot move a directory into itself');
184
+ }
158
185
  // The File System Access API doesn't have a native rename.
159
- // Readwrite → delete.
160
- const content = await this.readFile(op);
161
- if (content !== null) {
162
- await this.writeFile(np, content);
186
+ // Copy → delete.
187
+ const oldParent = await resolveDir(this.root, parentDir(op));
188
+ if (!oldParent)
189
+ return;
190
+ try {
191
+ const fileHandle = await oldParent.getFileHandle(baseName(op));
192
+ const file = await fileHandle.getFile();
193
+ await this.writeBinary(np, await file.arrayBuffer());
163
194
  await this.delete(op);
164
195
  return;
165
196
  }
166
- // Try binary
167
- const binary = await this.readBinary(op);
168
- if (binary !== null) {
169
- await this.writeBinary(np, binary);
197
+ catch {
198
+ // Not a file; try directory below.
199
+ }
200
+ const copied = await this.copyDirectory(op, np);
201
+ if (copied) {
170
202
  await this.delete(op);
171
203
  }
172
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"native-provider.js","sourceRoot":"","sources":["../../src/filesystem/native-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-provider.js","sourceRoot":"","sources":["../../src/filesystem/native-provider.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * Host bridge — shared types + runtime access for the Electron desktop
3
- * host. The renderer calls `getDocblocksHost()` to reach the preload
3
+ * host. The renderer calls `getDocBlocksHost()` to reach the preload
4
4
  * contextBridge; `isElectronHost()` gates desktop-only UI branches.
5
5
  */
6
- export type { DocblocksHostAPI, DocblocksHostFsAPI, DocblocksHostWorkspacesAPI, DocblocksHostShellAPI, DocblocksHostFfmpegAPI, DocblocksHostUpdaterAPI, ElectronWorkspaceInfo, HostEnvironment, MenuCommand, OpenRequest, UpdaterStatus, } from './types.js';
7
- import type { DocblocksHostAPI } from './types.js';
6
+ export type { DocBlocksHostAPI, DocBlocksHostFsAPI, DocBlocksHostWorkspacesAPI, DocBlocksHostShellAPI, DocBlocksHostFfmpegAPI, DocBlocksHostUpdaterAPI, ElectronWorkspaceInfo, HostEnvironment, MenuCommand, OpenRequest, UpdaterStatus, } from './types.js';
7
+ import type { DocBlocksHostAPI } from './types.js';
8
8
  /** True when running inside the Electron desktop shell. */
9
9
  export declare function isElectronHost(): boolean;
10
10
  /** Return the host API, or throw if not running under Electron. */
11
- export declare function getDocblocksHost(): DocblocksHostAPI;
11
+ export declare function getDocBlocksHost(): DocBlocksHostAPI;
12
12
  /** Return the host API, or null if not running under Electron. */
13
- export declare function maybeGetDocblocksHost(): DocblocksHostAPI | null;
13
+ export declare function maybeGetDocBlocksHost(): DocBlocksHostAPI | null;
14
14
  //# sourceMappingURL=index.d.ts.map
@@ -1,28 +1,28 @@
1
1
  /**
2
2
  * Host bridge — shared types + runtime access for the Electron desktop
3
- * host. The renderer calls `getDocblocksHost()` to reach the preload
3
+ * host. The renderer calls `getDocBlocksHost()` to reach the preload
4
4
  * contextBridge; `isElectronHost()` gates desktop-only UI branches.
5
5
  */
6
6
  /** True when running inside the Electron desktop shell. */
7
7
  export function isElectronHost() {
8
8
  if (typeof globalThis === 'undefined')
9
9
  return false;
10
- const host = globalThis.docblocksHost;
10
+ const host = globalThis.docBlocksHost;
11
11
  return (typeof host === 'object' &&
12
12
  host !== null &&
13
13
  typeof host.fs === 'object' &&
14
14
  host.fs !== null);
15
15
  }
16
16
  /** Return the host API, or throw if not running under Electron. */
17
- export function getDocblocksHost() {
18
- const host = globalThis.docblocksHost;
17
+ export function getDocBlocksHost() {
18
+ const host = globalThis.docBlocksHost;
19
19
  if (!host) {
20
- throw new Error('docblocksHost is not available — not running under Electron?');
20
+ throw new Error('docBlocksHost is not available — not running under Electron?');
21
21
  }
22
22
  return host;
23
23
  }
24
24
  /** Return the host API, or null if not running under Electron. */
25
- export function maybeGetDocblocksHost() {
26
- return globalThis.docblocksHost ?? null;
25
+ export function maybeGetDocBlocksHost() {
26
+ return globalThis.docBlocksHost ?? null;
27
27
  }
28
28
  //# sourceMappingURL=index.js.map
@@ -1,14 +1,14 @@
1
1
  /**
2
- * DocblocksHostAPI — the contract exposed by the Electron desktop shell
2
+ * DocBlocksHostAPI — the contract exposed by the Electron desktop shell
3
3
  * to its renderer process via contextBridge.
4
4
  *
5
5
  * This file is the single source of truth for the host ↔ renderer
6
6
  * bridge. The Electron preload script exposes an implementation matching
7
- * this shape; the React renderer calls it through `window.docblocksHost`.
7
+ * this shape; the React renderer calls it through `window.docBlocksHost`.
8
8
  */
9
9
  import type { FileSystemEntry, FileMeta } from '../filesystem/types.js';
10
10
  /** Filesystem operations scoped to a registered absolute root path. */
11
- export interface DocblocksHostFsAPI {
11
+ export interface DocBlocksHostFsAPI {
12
12
  readFile(rootPath: string, path: string): Promise<string | null>;
13
13
  writeFile(rootPath: string, path: string, content: string): Promise<void>;
14
14
  delete(rootPath: string, path: string): Promise<void>;
@@ -32,7 +32,7 @@ export interface ElectronWorkspaceInfo {
32
32
  rootPath: string;
33
33
  }
34
34
  /** Workspace-management operations exposed to the renderer. */
35
- export interface DocblocksHostWorkspacesAPI {
35
+ export interface DocBlocksHostWorkspacesAPI {
36
36
  /**
37
37
  * Return the default workspace (creating ~/Documents/DocBlocks on first
38
38
  * call, or the user's configured default).
@@ -53,14 +53,14 @@ export interface DocblocksHostWorkspacesAPI {
53
53
  unregister(id: string): Promise<void>;
54
54
  }
55
55
  /** Shell operations — reveal in Finder/Explorer, open external URLs. */
56
- export interface DocblocksHostShellAPI {
56
+ export interface DocBlocksHostShellAPI {
57
57
  /** Reveal a file (by absolute path) in the OS file manager. */
58
58
  revealInFolder(absolutePath: string): Promise<void>;
59
59
  /** Open a URL in the default browser. */
60
60
  openExternal(url: string): Promise<void>;
61
61
  }
62
62
  /** System ffmpeg detection and invocation. */
63
- export interface DocblocksHostFfmpegAPI {
63
+ export interface DocBlocksHostFfmpegAPI {
64
64
  /** True if `ffmpeg` is available on PATH (or bundled). */
65
65
  available(): Promise<boolean>;
66
66
  /** Version string from `ffmpeg -version`, or null if unavailable. */
@@ -76,7 +76,7 @@ export interface DocblocksHostFfmpegAPI {
76
76
  }): Promise<string>;
77
77
  }
78
78
  /** Auto-updater control. */
79
- export interface DocblocksHostUpdaterAPI {
79
+ export interface DocBlocksHostUpdaterAPI {
80
80
  /** Kick off a check; resolves to true if an update is available. */
81
81
  checkForUpdates(): Promise<boolean>;
82
82
  /** Current app version string. */
@@ -128,13 +128,13 @@ export interface HostEnvironment {
128
128
  isDev: boolean;
129
129
  }
130
130
  /** The full DocBlocks desktop host API. */
131
- export interface DocblocksHostAPI {
131
+ export interface DocBlocksHostAPI {
132
132
  env: HostEnvironment;
133
- fs: DocblocksHostFsAPI;
134
- workspaces: DocblocksHostWorkspacesAPI;
135
- shell: DocblocksHostShellAPI;
136
- ffmpeg: DocblocksHostFfmpegAPI;
137
- updater: DocblocksHostUpdaterAPI;
133
+ fs: DocBlocksHostFsAPI;
134
+ workspaces: DocBlocksHostWorkspacesAPI;
135
+ shell: DocBlocksHostShellAPI;
136
+ ffmpeg: DocBlocksHostFfmpegAPI;
137
+ updater: DocBlocksHostUpdaterAPI;
138
138
  /**
139
139
  * Subscribe to menu commands dispatched by the native menu.
140
140
  * Returns an unsubscribe function.
@@ -1,10 +1,10 @@
1
1
  /**
2
- * DocblocksHostAPI — the contract exposed by the Electron desktop shell
2
+ * DocBlocksHostAPI — the contract exposed by the Electron desktop shell
3
3
  * to its renderer process via contextBridge.
4
4
  *
5
5
  * This file is the single source of truth for the host ↔ renderer
6
6
  * bridge. The Electron preload script exposes an implementation matching
7
- * this shape; the React renderer calls it through `window.docblocksHost`.
7
+ * this shape; the React renderer calls it through `window.docBlocksHost`.
8
8
  */
9
9
  export {};
10
10
  //# sourceMappingURL=types.js.map
@@ -49,16 +49,16 @@ interface FileSystemProvider {
49
49
  }
50
50
 
51
51
  /**
52
- * DocblocksHostAPI — the contract exposed by the Electron desktop shell
52
+ * DocBlocksHostAPI — the contract exposed by the Electron desktop shell
53
53
  * to its renderer process via contextBridge.
54
54
  *
55
55
  * This file is the single source of truth for the host ↔ renderer
56
56
  * bridge. The Electron preload script exposes an implementation matching
57
- * this shape; the React renderer calls it through `window.docblocksHost`.
57
+ * this shape; the React renderer calls it through `window.docBlocksHost`.
58
58
  */
59
59
 
60
60
  /** Filesystem operations scoped to a registered absolute root path. */
61
- interface DocblocksHostFsAPI {
61
+ interface DocBlocksHostFsAPI {
62
62
  readFile(rootPath: string, path: string): Promise<string | null>;
63
63
  writeFile(rootPath: string, path: string, content: string): Promise<void>;
64
64
  delete(rootPath: string, path: string): Promise<void>;
@@ -82,7 +82,7 @@ interface ElectronWorkspaceInfo {
82
82
  rootPath: string;
83
83
  }
84
84
  /** Workspace-management operations exposed to the renderer. */
85
- interface DocblocksHostWorkspacesAPI {
85
+ interface DocBlocksHostWorkspacesAPI {
86
86
  /**
87
87
  * Return the default workspace (creating ~/Documents/DocBlocks on first
88
88
  * call, or the user's configured default).
@@ -103,14 +103,14 @@ interface DocblocksHostWorkspacesAPI {
103
103
  unregister(id: string): Promise<void>;
104
104
  }
105
105
  /** Shell operations — reveal in Finder/Explorer, open external URLs. */
106
- interface DocblocksHostShellAPI {
106
+ interface DocBlocksHostShellAPI {
107
107
  /** Reveal a file (by absolute path) in the OS file manager. */
108
108
  revealInFolder(absolutePath: string): Promise<void>;
109
109
  /** Open a URL in the default browser. */
110
110
  openExternal(url: string): Promise<void>;
111
111
  }
112
112
  /** System ffmpeg detection and invocation. */
113
- interface DocblocksHostFfmpegAPI {
113
+ interface DocBlocksHostFfmpegAPI {
114
114
  /** True if `ffmpeg` is available on PATH (or bundled). */
115
115
  available(): Promise<boolean>;
116
116
  /** Version string from `ffmpeg -version`, or null if unavailable. */
@@ -126,7 +126,7 @@ interface DocblocksHostFfmpegAPI {
126
126
  }): Promise<string>;
127
127
  }
128
128
  /** Auto-updater control. */
129
- interface DocblocksHostUpdaterAPI {
129
+ interface DocBlocksHostUpdaterAPI {
130
130
  /** Kick off a check; resolves to true if an update is available. */
131
131
  checkForUpdates(): Promise<boolean>;
132
132
  /** Current app version string. */
@@ -178,13 +178,13 @@ interface HostEnvironment {
178
178
  isDev: boolean;
179
179
  }
180
180
  /** The full DocBlocks desktop host API. */
181
- interface DocblocksHostAPI {
181
+ interface DocBlocksHostAPI {
182
182
  env: HostEnvironment;
183
- fs: DocblocksHostFsAPI;
184
- workspaces: DocblocksHostWorkspacesAPI;
185
- shell: DocblocksHostShellAPI;
186
- ffmpeg: DocblocksHostFfmpegAPI;
187
- updater: DocblocksHostUpdaterAPI;
183
+ fs: DocBlocksHostFsAPI;
184
+ workspaces: DocBlocksHostWorkspacesAPI;
185
+ shell: DocBlocksHostShellAPI;
186
+ ffmpeg: DocBlocksHostFfmpegAPI;
187
+ updater: DocBlocksHostUpdaterAPI;
188
188
  /**
189
189
  * Subscribe to menu commands dispatched by the native menu.
190
190
  * Returns an unsubscribe function.
@@ -199,15 +199,15 @@ interface DocblocksHostAPI {
199
199
 
200
200
  /**
201
201
  * Host bridge — shared types + runtime access for the Electron desktop
202
- * host. The renderer calls `getDocblocksHost()` to reach the preload
202
+ * host. The renderer calls `getDocBlocksHost()` to reach the preload
203
203
  * contextBridge; `isElectronHost()` gates desktop-only UI branches.
204
204
  */
205
205
 
206
206
  /** True when running inside the Electron desktop shell. */
207
207
  declare function isElectronHost(): boolean;
208
208
  /** Return the host API, or throw if not running under Electron. */
209
- declare function getDocblocksHost(): DocblocksHostAPI;
209
+ declare function getDocBlocksHost(): DocBlocksHostAPI;
210
210
  /** Return the host API, or null if not running under Electron. */
211
- declare function maybeGetDocblocksHost(): DocblocksHostAPI | null;
211
+ declare function maybeGetDocBlocksHost(): DocBlocksHostAPI | null;
212
212
 
213
- export { type DocblocksHostAPI as D, type ElectronWorkspaceInfo as E, type FileEntry as F, type HostEnvironment as H, type MenuCommand as M, type OpenRequest as O, type UpdaterStatus as U, type DocblocksHostFfmpegAPI as a, type DocblocksHostFsAPI as b, type DocblocksHostShellAPI as c, type DocblocksHostUpdaterAPI as d, type DocblocksHostWorkspacesAPI as e, type FileMeta as f, type FileSystemEntry as g, type FileSystemProvider as h, type FolderEntry as i, getDocblocksHost as j, isElectronHost as k, maybeGetDocblocksHost as m };
213
+ export { type DocBlocksHostAPI as D, type ElectronWorkspaceInfo as E, type FileEntry as F, type HostEnvironment as H, type MenuCommand as M, type OpenRequest as O, type UpdaterStatus as U, type DocBlocksHostFfmpegAPI as a, type DocBlocksHostFsAPI as b, type DocBlocksHostShellAPI as c, type DocBlocksHostUpdaterAPI as d, type DocBlocksHostWorkspacesAPI as e, type FileMeta as f, type FileSystemEntry as g, type FileSystemProvider as h, type FolderEntry as i, getDocBlocksHost as j, isElectronHost as k, maybeGetDocBlocksHost as m };
@@ -18,5 +18,12 @@ export interface WorkspaceDescriptor {
18
18
  lastOpened: string;
19
19
  /** Absolute filesystem path for 'electron-native' workspaces. */
20
20
  rootPath?: string;
21
+ /**
22
+ * Per-workspace override for the global versioning preference. When
23
+ * `'inherit'` (or absent), the global preference applies. `'on'` /
24
+ * `'off'` force the corresponding behavior regardless of the global
25
+ * setting. See `resolveVersioningEnabled` in the preferences module.
26
+ */
27
+ versioningOverride?: 'inherit' | 'on' | 'off';
21
28
  }
22
29
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workspace/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,IAAI,EAAE,WAAW,GAAG,QAAQ,GAAG,iBAAiB,CAAC;IACjD,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workspace/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,IAAI,EAAE,WAAW,GAAG,QAAQ,GAAG,iBAAiB,CAAC;IACjD,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;CAC/C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/docblocks",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "Core data structures and filesystem abstractions for DocBlocks",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -54,11 +54,6 @@
54
54
  "typecheck": "tsc --noEmit"
55
55
  },
56
56
  "dependencies": {
57
- "@bendyline/squisq": "1.3.0",
58
- "@bendyline/squisq-editor-react": "1.4.0",
59
- "@bendyline/squisq-formats": "1.2.3",
60
- "@bendyline/squisq-react": "1.2.0",
61
- "@bendyline/squisq-video": "1.0.5",
62
- "@bendyline/squisq-video-react": "1.0.5"
57
+ "@bendyline/squisq": "1.4.1"
63
58
  }
64
59
  }
@@ -5,20 +5,20 @@
5
5
  * whitelist of registered workspace roots.
6
6
  *
7
7
  * This file has no Electron dependency — it is a pure IPC client that
8
- * relies on the `docblocksHost` global installed by the preload script.
8
+ * relies on the `docBlocksHost` global installed by the preload script.
9
9
  */
10
10
 
11
11
  import type { FileSystemProvider, FileSystemEntry, FileMeta } from './types.js';
12
- import { maybeGetDocblocksHost } from '../host/index.js';
13
- import type { DocblocksHostFsAPI } from '../host/types.js';
12
+ import { maybeGetDocBlocksHost } from '../host/index.js';
13
+ import type { DocBlocksHostFsAPI } from '../host/types.js';
14
14
 
15
15
  export { isElectronHost } from '../host/index.js';
16
16
 
17
- function getHostFs(): DocblocksHostFsAPI {
18
- const host = maybeGetDocblocksHost();
17
+ function getHostFs(): DocBlocksHostFsAPI {
18
+ const host = maybeGetDocBlocksHost();
19
19
  if (!host) {
20
20
  throw new Error(
21
- 'ElectronFileSystemProvider: docblocksHost is not available — not running under Electron?',
21
+ 'ElectronFileSystemProvider: docBlocksHost is not available — not running under Electron?',
22
22
  );
23
23
  }
24
24
  return host.fs;
@@ -52,7 +52,18 @@ export class FileSystemContentContainer implements ContentContainer {
52
52
  }
53
53
 
54
54
  async readFile(path: string): Promise<ArrayBuffer | null> {
55
- return this.provider.readBinary(joinPrefix(this.prefix, path));
55
+ const full = joinPrefix(this.prefix, path);
56
+ const binary = await this.provider.readBinary(full);
57
+ if (binary) return binary;
58
+ // IndexedDB-backed workspaces store text via `writeFile(string)` and
59
+ // binary via `writeBinary(ArrayBuffer)` under separate keys, so a
60
+ // markdown file written through the text API is invisible to
61
+ // `readBinary`. Fall back to text-then-UTF-8 so consumers like the
62
+ // recursive HTML export can resolve sibling `.md` links uniformly
63
+ // across browser and native workspaces.
64
+ const text = await this.provider.readFile(full);
65
+ if (text === null) return null;
66
+ return new TextEncoder().encode(text).buffer as ArrayBuffer;
56
67
  }
57
68
 
58
69
  async writeFile(path: string, data: ArrayBuffer | Uint8Array, _mimeType?: string): Promise<void> {
@@ -153,6 +153,66 @@ export class IndexedDBFileSystemProvider implements FileSystemProvider {
153
153
  async rename(oldPath: string, newPath: string): Promise<void> {
154
154
  const op = normalisePath(oldPath);
155
155
  const np = normalisePath(newPath);
156
+ if (op === np) return;
157
+ if (!op || !np) {
158
+ throw new Error('Cannot rename the filesystem root');
159
+ }
160
+ if (np.startsWith(op + '/')) {
161
+ throw new Error('Cannot move a directory into itself');
162
+ }
163
+
164
+ const dirs = await this.getDirs();
165
+
166
+ // Handle directory rename by moving every tracked child directory and
167
+ // every file record keyed under the old directory prefix.
168
+ if (dirs.has(op)) {
169
+ const newParent = parentDir(np);
170
+ if (newParent) {
171
+ await this.ensureDir(newParent);
172
+ }
173
+
174
+ const allKeys = await this.store.keys();
175
+ const oldKeyPrefix = `fs:${op}/`;
176
+ const newKeyPrefix = `fs:${np}/`;
177
+ const metaSuffix = ':meta';
178
+ const keysToMove = allKeys.filter((k) => k.startsWith(oldKeyPrefix));
179
+
180
+ await Promise.all(
181
+ keysToMove.map(async (oldKey) => {
182
+ const newKey = newKeyPrefix + oldKey.slice(oldKeyPrefix.length);
183
+ if (oldKey.endsWith(metaSuffix)) {
184
+ const meta = await this.store.get<FileMeta>(oldKey);
185
+ if (meta) {
186
+ const newFilePath = newKey.slice(3, -metaSuffix.length);
187
+ await this.store.set(metaKey(newFilePath), {
188
+ ...meta,
189
+ name: baseName(newFilePath),
190
+ path: newFilePath,
191
+ });
192
+ }
193
+ } else {
194
+ const value = await this.store.get<unknown>(oldKey);
195
+ if (value !== null) {
196
+ await this.store.set(newKey, value);
197
+ }
198
+ }
199
+ await this.store.remove(oldKey);
200
+ }),
201
+ );
202
+
203
+ dirs.delete(op);
204
+ dirs.add(np);
205
+ const oldPrefix = op + '/';
206
+ const newPrefix = np + '/';
207
+ for (const d of [...dirs]) {
208
+ if (d.startsWith(oldPrefix)) {
209
+ dirs.delete(d);
210
+ dirs.add(newPrefix + d.slice(oldPrefix.length));
211
+ }
212
+ }
213
+ await this.saveDirs(dirs);
214
+ return;
215
+ }
156
216
 
157
217
  // Read existing data
158
218
  const content = await this.store.get<string>(contentKey(op));
@@ -167,9 +227,11 @@ export class IndexedDBFileSystemProvider implements FileSystemProvider {
167
227
  await this.store.set(binaryKey(np), binary);
168
228
  }
169
229
  if (meta) {
170
- meta.name = baseName(np);
171
- meta.path = np;
172
- await this.store.set(metaKey(np), meta);
230
+ await this.store.set(metaKey(np), {
231
+ ...meta,
232
+ name: baseName(np),
233
+ path: np,
234
+ });
173
235
  }
174
236
 
175
237
  // Ensure parent dir of new path exists
@@ -182,22 +244,6 @@ export class IndexedDBFileSystemProvider implements FileSystemProvider {
182
244
  await this.store.remove(contentKey(op));
183
245
  await this.store.remove(binaryKey(op));
184
246
  await this.store.remove(metaKey(op));
185
-
186
- // Handle directory rename
187
- const dirs = await this.getDirs();
188
- if (dirs.has(op)) {
189
- dirs.delete(op);
190
- dirs.add(np);
191
- const oldPrefix = op + '/';
192
- const newPrefix = np + '/';
193
- for (const d of [...dirs]) {
194
- if (d.startsWith(oldPrefix)) {
195
- dirs.delete(d);
196
- dirs.add(newPrefix + d.slice(oldPrefix.length));
197
- }
198
- }
199
- await this.saveDirs(dirs);
200
- }
201
247
  }
202
248
 
203
249
  async readDirectory(path: string): Promise<FileSystemEntry[]> {
@@ -153,6 +153,28 @@ export class NativeFileSystemProvider implements FileSystemProvider {
153
153
  this.root = root;
154
154
  }
155
155
 
156
+ private async copyDirectory(oldDirPath: string, newDirPath: string): Promise<boolean> {
157
+ const source = await resolveDir(this.root, oldDirPath);
158
+ if (!source) return false;
159
+ await resolveDirCreate(this.root, newDirPath);
160
+
161
+ for await (const [name, handle] of source as unknown as AsyncIterable<
162
+ [string, FileSystemHandle]
163
+ >) {
164
+ const oldChild = oldDirPath ? `${oldDirPath}/${name}` : name;
165
+ const newChild = newDirPath ? `${newDirPath}/${name}` : name;
166
+ if (handle.kind === 'directory') {
167
+ await this.copyDirectory(oldChild, newChild);
168
+ } else {
169
+ const fileHandle = await source.getFileHandle(name);
170
+ const file = await fileHandle.getFile();
171
+ await this.writeBinary(newChild, await file.arrayBuffer());
172
+ }
173
+ }
174
+
175
+ return true;
176
+ }
177
+
156
178
  async readFile(path: string): Promise<string | null> {
157
179
  const p = normalisePath(path);
158
180
  const dir = await resolveDir(this.root, parentDir(p));
@@ -187,20 +209,31 @@ export class NativeFileSystemProvider implements FileSystemProvider {
187
209
  async rename(oldPath: string, newPath: string): Promise<void> {
188
210
  const op = normalisePath(oldPath);
189
211
  const np = normalisePath(newPath);
212
+ if (op === np) return;
213
+ if (!op || !np) {
214
+ throw new Error('Cannot rename the filesystem root');
215
+ }
216
+ if (np.startsWith(op + '/')) {
217
+ throw new Error('Cannot move a directory into itself');
218
+ }
190
219
 
191
220
  // The File System Access API doesn't have a native rename.
192
- // Readwrite → delete.
193
- const content = await this.readFile(op);
194
- if (content !== null) {
195
- await this.writeFile(np, content);
221
+ // Copy → delete.
222
+ const oldParent = await resolveDir(this.root, parentDir(op));
223
+ if (!oldParent) return;
224
+
225
+ try {
226
+ const fileHandle = await oldParent.getFileHandle(baseName(op));
227
+ const file = await fileHandle.getFile();
228
+ await this.writeBinary(np, await file.arrayBuffer());
196
229
  await this.delete(op);
197
230
  return;
231
+ } catch {
232
+ // Not a file; try directory below.
198
233
  }
199
234
 
200
- // Try binary
201
- const binary = await this.readBinary(op);
202
- if (binary !== null) {
203
- await this.writeBinary(np, binary);
235
+ const copied = await this.copyDirectory(op, np);
236
+ if (copied) {
204
237
  await this.delete(op);
205
238
  }
206
239
  }