@bendyline/docblocks 1.0.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.
- package/dist/{chunk-NSVTXALR.js → chunk-LORJUBON.js} +314 -25
- package/dist/chunk-LORJUBON.js.map +1 -0
- package/dist/chunk-ME76RUMR.js +23 -0
- package/dist/chunk-ME76RUMR.js.map +1 -0
- package/dist/filesystem/electron-provider.d.ts +32 -0
- package/dist/filesystem/electron-provider.d.ts.map +1 -0
- package/dist/filesystem/electron-provider.js +64 -0
- package/dist/filesystem/electron-provider.js.map +1 -0
- package/dist/filesystem/file-media-provider.d.ts +23 -0
- package/dist/filesystem/file-media-provider.d.ts.map +1 -0
- package/dist/filesystem/file-media-provider.js +85 -0
- package/dist/filesystem/file-media-provider.js.map +1 -0
- package/dist/filesystem/filesystem-content-container.d.ts +24 -0
- package/dist/filesystem/filesystem-content-container.d.ts.map +1 -0
- package/dist/filesystem/filesystem-content-container.js +116 -0
- package/dist/filesystem/filesystem-content-container.js.map +1 -0
- package/dist/filesystem/index.d.ts +3 -0
- package/dist/filesystem/index.d.ts.map +1 -1
- package/dist/filesystem/index.js +3 -0
- package/dist/filesystem/index.js.map +1 -1
- package/dist/filesystem/indexeddb-provider.d.ts.map +1 -1
- package/dist/filesystem/indexeddb-provider.js +60 -18
- package/dist/filesystem/indexeddb-provider.js.map +1 -1
- package/dist/filesystem/native-provider.d.ts +1 -0
- package/dist/filesystem/native-provider.d.ts.map +1 -1
- package/dist/filesystem/native-provider.js +40 -8
- package/dist/filesystem/native-provider.js.map +1 -1
- package/dist/host/index.d.ts +14 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +28 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/types.d.ts +149 -0
- package/dist/host/types.d.ts.map +1 -0
- package/dist/host/types.js +10 -0
- package/dist/host/types.js.map +1 -0
- package/dist/index-Bunj8Kb_.d.ts +213 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/workspace/types.d.ts +16 -2
- package/dist/workspace/types.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/filesystem/electron-provider.ts +88 -0
- package/src/filesystem/file-media-provider.ts +103 -0
- package/src/filesystem/filesystem-content-container.ts +126 -0
- package/src/filesystem/index.ts +4 -0
- package/src/filesystem/indexeddb-provider.ts +65 -19
- package/src/filesystem/native-provider.ts +41 -8
- package/src/host/index.ts +47 -0
- package/src/host/types.ts +153 -0
- package/src/index.ts +2 -1
- package/src/workspace/types.ts +16 -2
- package/dist/chunk-NSVTXALR.js.map +0 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ElectronFileSystemProvider — implements FileSystemProvider by delegating
|
|
3
|
+
* to the Electron desktop host's fs IPC bridge. Every operation is scoped
|
|
4
|
+
* to an absolute root path that the main process validates against a
|
|
5
|
+
* whitelist of registered workspace roots.
|
|
6
|
+
*
|
|
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.
|
|
9
|
+
*/
|
|
10
|
+
import { maybeGetDocBlocksHost } from '../host/index.js';
|
|
11
|
+
export { isElectronHost } from '../host/index.js';
|
|
12
|
+
function getHostFs() {
|
|
13
|
+
const host = maybeGetDocBlocksHost();
|
|
14
|
+
if (!host) {
|
|
15
|
+
throw new Error('ElectronFileSystemProvider: docBlocksHost is not available — not running under Electron?');
|
|
16
|
+
}
|
|
17
|
+
return host.fs;
|
|
18
|
+
}
|
|
19
|
+
export class ElectronFileSystemProvider {
|
|
20
|
+
constructor(id, label, rootPath) {
|
|
21
|
+
this.id = id;
|
|
22
|
+
this.label = label;
|
|
23
|
+
this.rootPath = rootPath;
|
|
24
|
+
}
|
|
25
|
+
/** Absolute path this provider is rooted at. */
|
|
26
|
+
getRootPath() {
|
|
27
|
+
return this.rootPath;
|
|
28
|
+
}
|
|
29
|
+
readFile(path) {
|
|
30
|
+
return getHostFs().readFile(this.rootPath, path);
|
|
31
|
+
}
|
|
32
|
+
writeFile(path, content) {
|
|
33
|
+
return getHostFs().writeFile(this.rootPath, path, content);
|
|
34
|
+
}
|
|
35
|
+
delete(path) {
|
|
36
|
+
return getHostFs().delete(this.rootPath, path);
|
|
37
|
+
}
|
|
38
|
+
rename(oldPath, newPath) {
|
|
39
|
+
return getHostFs().rename(this.rootPath, oldPath, newPath);
|
|
40
|
+
}
|
|
41
|
+
readDirectory(path) {
|
|
42
|
+
return getHostFs().readDirectory(this.rootPath, path);
|
|
43
|
+
}
|
|
44
|
+
exists(path) {
|
|
45
|
+
return getHostFs().exists(this.rootPath, path);
|
|
46
|
+
}
|
|
47
|
+
createDirectory(path) {
|
|
48
|
+
return getHostFs().createDirectory(this.rootPath, path);
|
|
49
|
+
}
|
|
50
|
+
stat(path) {
|
|
51
|
+
return getHostFs().stat(this.rootPath, path);
|
|
52
|
+
}
|
|
53
|
+
readBinary(path) {
|
|
54
|
+
return getHostFs().readBinary(this.rootPath, path);
|
|
55
|
+
}
|
|
56
|
+
writeBinary(path, data) {
|
|
57
|
+
return getHostFs().writeBinary(this.rootPath, path, data);
|
|
58
|
+
}
|
|
59
|
+
/** Subscribe to external change notifications under this root. */
|
|
60
|
+
watch(onChange) {
|
|
61
|
+
return getHostFs().watch(this.rootPath, onChange);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=electron-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"electron-provider.js","sourceRoot":"","sources":["../../src/filesystem/electron-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,OAAO,0BAA0B;IAMrC,YAAY,EAAU,EAAE,KAAa,EAAE,QAAgB;QACrD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,gDAAgD;IAChD,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,SAAS,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,OAAe;QACrC,OAAO,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,OAAe,EAAE,OAAe;QACrC,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,aAAa,CAAC,IAAY;QACxB,OAAO,SAAS,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,eAAe,CAAC,IAAY;QAC1B,OAAO,SAAS,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,IAA8B;QACtD,OAAO,SAAS,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,kEAAkE;IAClE,KAAK,CAAC,QAAuC;QAC3C,OAAO,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* createFileMediaProvider — per-file media storage following the pandoc /
|
|
3
|
+
* Word convention: a markdown file `notes.md` gets a sibling folder
|
|
4
|
+
* `notes_files/` that holds its images, audio, and video.
|
|
5
|
+
*
|
|
6
|
+
* Given:
|
|
7
|
+
* • `container` — a ContentContainer scoped to the markdown file's
|
|
8
|
+
* parent directory (so `readFile('notes_files/image.png')` maps to the
|
|
9
|
+
* parent-relative path)
|
|
10
|
+
* • `markdownBasename` — e.g. `"notes.md"`
|
|
11
|
+
*
|
|
12
|
+
* Returns a MediaProvider that:
|
|
13
|
+
* • Writes new media under `{basename}_files/{name}` in the parent dir
|
|
14
|
+
* • Returns the folder-qualified path (`notes_files/image.png`) from
|
|
15
|
+
* addMedia so the markdown stays portable outside DocBlocks
|
|
16
|
+
* • Resolves both bare (`image.png`) and folder-qualified
|
|
17
|
+
* (`notes_files/image.png`) references — so legacy markdown and
|
|
18
|
+
* exports from other tools both work
|
|
19
|
+
*/
|
|
20
|
+
import type { MediaProvider } from '@bendyline/squisq/schemas';
|
|
21
|
+
import type { ContentContainer } from '@bendyline/squisq/storage';
|
|
22
|
+
export declare function createFileMediaProvider(container: ContentContainer, markdownBasename: string): MediaProvider;
|
|
23
|
+
//# sourceMappingURL=file-media-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-media-provider.d.ts","sourceRoot":"","sources":["../../src/filesystem/file-media-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAMlE,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,gBAAgB,EAC3B,gBAAgB,EAAE,MAAM,GACvB,aAAa,CAwEf"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* createFileMediaProvider — per-file media storage following the pandoc /
|
|
3
|
+
* Word convention: a markdown file `notes.md` gets a sibling folder
|
|
4
|
+
* `notes_files/` that holds its images, audio, and video.
|
|
5
|
+
*
|
|
6
|
+
* Given:
|
|
7
|
+
* • `container` — a ContentContainer scoped to the markdown file's
|
|
8
|
+
* parent directory (so `readFile('notes_files/image.png')` maps to the
|
|
9
|
+
* parent-relative path)
|
|
10
|
+
* • `markdownBasename` — e.g. `"notes.md"`
|
|
11
|
+
*
|
|
12
|
+
* Returns a MediaProvider that:
|
|
13
|
+
* • Writes new media under `{basename}_files/{name}` in the parent dir
|
|
14
|
+
* • Returns the folder-qualified path (`notes_files/image.png`) from
|
|
15
|
+
* addMedia so the markdown stays portable outside DocBlocks
|
|
16
|
+
* • Resolves both bare (`image.png`) and folder-qualified
|
|
17
|
+
* (`notes_files/image.png`) references — so legacy markdown and
|
|
18
|
+
* exports from other tools both work
|
|
19
|
+
*/
|
|
20
|
+
function stripExt(name) {
|
|
21
|
+
return name.replace(/\.[^.]+$/, '');
|
|
22
|
+
}
|
|
23
|
+
export function createFileMediaProvider(container, markdownBasename) {
|
|
24
|
+
const folder = stripExt(markdownBasename) + '_files';
|
|
25
|
+
const prefix = folder + '/';
|
|
26
|
+
const blobUrlCache = new Map();
|
|
27
|
+
function toKey(ref) {
|
|
28
|
+
const clean = ref.replace(/^\/+/, '');
|
|
29
|
+
return clean.startsWith(prefix) ? clean : prefix + clean;
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
async resolveUrl(ref) {
|
|
33
|
+
const key = toKey(ref);
|
|
34
|
+
const cached = blobUrlCache.get(key);
|
|
35
|
+
if (cached)
|
|
36
|
+
return cached;
|
|
37
|
+
const data = await container.readFile(key);
|
|
38
|
+
if (!data)
|
|
39
|
+
return ref;
|
|
40
|
+
const entries = await container.listFiles();
|
|
41
|
+
const entry = entries.find((e) => e.path === key);
|
|
42
|
+
const mimeType = entry?.mimeType ?? 'application/octet-stream';
|
|
43
|
+
const url = URL.createObjectURL(new Blob([data], { type: mimeType }));
|
|
44
|
+
blobUrlCache.set(key, url);
|
|
45
|
+
return url;
|
|
46
|
+
},
|
|
47
|
+
async listMedia() {
|
|
48
|
+
const entries = await container.listFiles(prefix);
|
|
49
|
+
return entries
|
|
50
|
+
.filter((e) => !e.path.toLowerCase().endsWith('.md'))
|
|
51
|
+
.map((e) => ({
|
|
52
|
+
name: e.path,
|
|
53
|
+
mimeType: e.mimeType,
|
|
54
|
+
size: e.size,
|
|
55
|
+
}));
|
|
56
|
+
},
|
|
57
|
+
async addMedia(name, data, mimeType) {
|
|
58
|
+
const key = toKey(name);
|
|
59
|
+
const cached = blobUrlCache.get(key);
|
|
60
|
+
if (cached) {
|
|
61
|
+
URL.revokeObjectURL(cached);
|
|
62
|
+
blobUrlCache.delete(key);
|
|
63
|
+
}
|
|
64
|
+
const buffer = data instanceof Blob ? new Uint8Array(await data.arrayBuffer()) : data;
|
|
65
|
+
await container.writeFile(key, buffer, mimeType);
|
|
66
|
+
return key;
|
|
67
|
+
},
|
|
68
|
+
async removeMedia(ref) {
|
|
69
|
+
const key = toKey(ref);
|
|
70
|
+
const cached = blobUrlCache.get(key);
|
|
71
|
+
if (cached) {
|
|
72
|
+
URL.revokeObjectURL(cached);
|
|
73
|
+
blobUrlCache.delete(key);
|
|
74
|
+
}
|
|
75
|
+
await container.removeFile(key);
|
|
76
|
+
},
|
|
77
|
+
dispose() {
|
|
78
|
+
for (const url of blobUrlCache.values()) {
|
|
79
|
+
URL.revokeObjectURL(url);
|
|
80
|
+
}
|
|
81
|
+
blobUrlCache.clear();
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=file-media-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-media-provider.js","sourceRoot":"","sources":["../../src/filesystem/file-media-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FileSystemContentContainer — a ContentContainer backed by any
|
|
3
|
+
* FileSystemProvider, scoped to a sub-path (e.g., ".docblocks/media/").
|
|
4
|
+
*
|
|
5
|
+
* Used by the Electron desktop app so media lives inside the workspace
|
|
6
|
+
* folder (visible as regular files) rather than in a separate IndexedDB
|
|
7
|
+
* origin that only the app can see.
|
|
8
|
+
*/
|
|
9
|
+
import type { ContentContainer, ContentEntry } from '@bendyline/squisq/storage';
|
|
10
|
+
import type { FileSystemProvider } from './types.js';
|
|
11
|
+
export declare class FileSystemContentContainer implements ContentContainer {
|
|
12
|
+
private readonly provider;
|
|
13
|
+
private readonly prefix;
|
|
14
|
+
constructor(provider: FileSystemProvider, prefix?: string);
|
|
15
|
+
readFile(path: string): Promise<ArrayBuffer | null>;
|
|
16
|
+
writeFile(path: string, data: ArrayBuffer | Uint8Array, _mimeType?: string): Promise<void>;
|
|
17
|
+
removeFile(path: string): Promise<void>;
|
|
18
|
+
listFiles(prefix?: string): Promise<ContentEntry[]>;
|
|
19
|
+
exists(path: string): Promise<boolean>;
|
|
20
|
+
getDocumentPath(): Promise<string | null>;
|
|
21
|
+
readDocument(): Promise<string | null>;
|
|
22
|
+
writeDocument(markdown: string, filename?: string): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=filesystem-content-container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem-content-container.d.ts","sourceRoot":"","sources":["../../src/filesystem/filesystem-content-container.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAgCrD,qBAAa,0BAA2B,YAAW,gBAAgB;IAI/D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAH3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAGb,QAAQ,EAAE,kBAAkB,EAC7C,MAAM,SAAqB;IAKvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAenD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA4BnD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItC,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIzC,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQtC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKxE"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FileSystemContentContainer — a ContentContainer backed by any
|
|
3
|
+
* FileSystemProvider, scoped to a sub-path (e.g., ".docblocks/media/").
|
|
4
|
+
*
|
|
5
|
+
* Used by the Electron desktop app so media lives inside the workspace
|
|
6
|
+
* folder (visible as regular files) rather than in a separate IndexedDB
|
|
7
|
+
* origin that only the app can see.
|
|
8
|
+
*/
|
|
9
|
+
import { findDocumentPath } from '@bendyline/squisq/storage';
|
|
10
|
+
const EXTENSION_MIME_MAP = {
|
|
11
|
+
'.md': 'text/markdown',
|
|
12
|
+
'.txt': 'text/plain',
|
|
13
|
+
'.json': 'application/json',
|
|
14
|
+
'.jpg': 'image/jpeg',
|
|
15
|
+
'.jpeg': 'image/jpeg',
|
|
16
|
+
'.png': 'image/png',
|
|
17
|
+
'.gif': 'image/gif',
|
|
18
|
+
'.svg': 'image/svg+xml',
|
|
19
|
+
'.webp': 'image/webp',
|
|
20
|
+
'.avif': 'image/avif',
|
|
21
|
+
'.mp4': 'video/mp4',
|
|
22
|
+
'.webm': 'video/webm',
|
|
23
|
+
'.mp3': 'audio/mpeg',
|
|
24
|
+
'.wav': 'audio/wav',
|
|
25
|
+
'.ogg': 'audio/ogg',
|
|
26
|
+
};
|
|
27
|
+
function guessMimeType(path) {
|
|
28
|
+
const dot = path.lastIndexOf('.');
|
|
29
|
+
if (dot === -1)
|
|
30
|
+
return 'application/octet-stream';
|
|
31
|
+
const ext = path.slice(dot).toLowerCase();
|
|
32
|
+
return EXTENSION_MIME_MAP[ext] ?? 'application/octet-stream';
|
|
33
|
+
}
|
|
34
|
+
function joinPrefix(prefix, p) {
|
|
35
|
+
const clean = p.replace(/^\/+/, '');
|
|
36
|
+
return prefix.replace(/\/+$/, '') + '/' + clean;
|
|
37
|
+
}
|
|
38
|
+
export class FileSystemContentContainer {
|
|
39
|
+
constructor(provider, prefix = '.docblocks/media') {
|
|
40
|
+
this.provider = provider;
|
|
41
|
+
this.prefix = prefix.replace(/^\/+/, '').replace(/\/+$/, '');
|
|
42
|
+
}
|
|
43
|
+
async readFile(path) {
|
|
44
|
+
const full = joinPrefix(this.prefix, path);
|
|
45
|
+
const binary = await this.provider.readBinary(full);
|
|
46
|
+
if (binary)
|
|
47
|
+
return binary;
|
|
48
|
+
// IndexedDB-backed workspaces store text via `writeFile(string)` and
|
|
49
|
+
// binary via `writeBinary(ArrayBuffer)` under separate keys, so a
|
|
50
|
+
// markdown file written through the text API is invisible to
|
|
51
|
+
// `readBinary`. Fall back to text-then-UTF-8 so consumers like the
|
|
52
|
+
// recursive HTML export can resolve sibling `.md` links uniformly
|
|
53
|
+
// across browser and native workspaces.
|
|
54
|
+
const text = await this.provider.readFile(full);
|
|
55
|
+
if (text === null)
|
|
56
|
+
return null;
|
|
57
|
+
return new TextEncoder().encode(text).buffer;
|
|
58
|
+
}
|
|
59
|
+
async writeFile(path, data, _mimeType) {
|
|
60
|
+
await this.provider.writeBinary(joinPrefix(this.prefix, path), data);
|
|
61
|
+
}
|
|
62
|
+
async removeFile(path) {
|
|
63
|
+
await this.provider.delete(joinPrefix(this.prefix, path));
|
|
64
|
+
}
|
|
65
|
+
async listFiles(prefix) {
|
|
66
|
+
const entries = [];
|
|
67
|
+
const walk = async (dir) => {
|
|
68
|
+
let children;
|
|
69
|
+
try {
|
|
70
|
+
children = await this.provider.readDirectory(dir);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
for (const child of children) {
|
|
76
|
+
if (child.kind === 'directory') {
|
|
77
|
+
await walk(child.path);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
const rel = child.path.replace(new RegExp('^/?' + this.prefix + '/?'), '');
|
|
81
|
+
if (prefix && !rel.startsWith(prefix))
|
|
82
|
+
continue;
|
|
83
|
+
const meta = await this.provider.stat(child.path);
|
|
84
|
+
entries.push({
|
|
85
|
+
path: rel,
|
|
86
|
+
mimeType: guessMimeType(rel),
|
|
87
|
+
size: meta?.size ?? 0,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
await walk('/' + this.prefix);
|
|
93
|
+
return entries;
|
|
94
|
+
}
|
|
95
|
+
async exists(path) {
|
|
96
|
+
return this.provider.exists(joinPrefix(this.prefix, path));
|
|
97
|
+
}
|
|
98
|
+
async getDocumentPath() {
|
|
99
|
+
return findDocumentPath(await this.listFiles());
|
|
100
|
+
}
|
|
101
|
+
async readDocument() {
|
|
102
|
+
const docPath = await this.getDocumentPath();
|
|
103
|
+
if (!docPath)
|
|
104
|
+
return null;
|
|
105
|
+
const data = await this.readFile(docPath);
|
|
106
|
+
if (!data)
|
|
107
|
+
return null;
|
|
108
|
+
return new TextDecoder().decode(data);
|
|
109
|
+
}
|
|
110
|
+
async writeDocument(markdown, filename) {
|
|
111
|
+
const name = filename ?? 'index.md';
|
|
112
|
+
const data = new TextEncoder().encode(markdown);
|
|
113
|
+
await this.writeFile(name, data, 'text/markdown');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=filesystem-content-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem-content-container.js","sourceRoot":"","sources":["../../src/filesystem/filesystem-content-container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export type { FileSystemProvider, FileSystemEntry, FileEntry, FolderEntry, FileMeta, } from './types.js';
|
|
2
2
|
export { IndexedDBFileSystemProvider } from './indexeddb-provider.js';
|
|
3
3
|
export { IndexedDBContentContainer } from './indexeddb-content-container.js';
|
|
4
|
+
export { FileSystemContentContainer } from './filesystem-content-container.js';
|
|
5
|
+
export { createFileMediaProvider } from './file-media-provider.js';
|
|
4
6
|
export { NativeFileSystemProvider, isNativeFileSystemSupported, openNativeFolder, restoreNativeFolder, storeDirectoryHandle, loadDirectoryHandle, removeDirectoryHandle, } from './native-provider.js';
|
|
7
|
+
export { ElectronFileSystemProvider, isElectronHost } from './electron-provider.js';
|
|
5
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filesystem/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filesystem/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/filesystem/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { IndexedDBFileSystemProvider } from './indexeddb-provider.js';
|
|
2
2
|
export { IndexedDBContentContainer } from './indexeddb-content-container.js';
|
|
3
|
+
export { FileSystemContentContainer } from './filesystem-content-container.js';
|
|
4
|
+
export { createFileMediaProvider } from './file-media-provider.js';
|
|
3
5
|
export { NativeFileSystemProvider, isNativeFileSystemSupported, openNativeFolder, restoreNativeFolder, storeDirectoryHandle, loadDirectoryHandle, removeDirectoryHandle, } from './native-provider.js';
|
|
6
|
+
export { ElectronFileSystemProvider, isElectronHost } from './electron-provider.js';
|
|
4
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/filesystem/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/filesystem/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexeddb-provider.d.ts","sourceRoot":"","sources":["../../src/filesystem/indexeddb-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAuChF,qBAAa,2BAA4B,YAAW,kBAAkB;IACpE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,KAAK,CAAqB;gBAEtB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;YAWvB,OAAO;YAKP,QAAQ;IAItB,0DAA0D;YAC5C,SAAS;IAoBjB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK9C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BnC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"indexeddb-provider.d.ts","sourceRoot":"","sources":["../../src/filesystem/indexeddb-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAuChF,qBAAa,2BAA4B,YAAW,kBAAkB;IACpE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,KAAK,CAAqB;gBAEtB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;YAWvB,OAAO;YAKP,QAAQ;IAItB,0DAA0D;YAC5C,SAAS;IAoBjB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK9C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BnC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgGvD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAwDvD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQtC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAK5C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAKrD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAiB/E"}
|
|
@@ -122,6 +122,61 @@ export class IndexedDBFileSystemProvider {
|
|
|
122
122
|
async rename(oldPath, newPath) {
|
|
123
123
|
const op = normalisePath(oldPath);
|
|
124
124
|
const np = normalisePath(newPath);
|
|
125
|
+
if (op === np)
|
|
126
|
+
return;
|
|
127
|
+
if (!op || !np) {
|
|
128
|
+
throw new Error('Cannot rename the filesystem root');
|
|
129
|
+
}
|
|
130
|
+
if (np.startsWith(op + '/')) {
|
|
131
|
+
throw new Error('Cannot move a directory into itself');
|
|
132
|
+
}
|
|
133
|
+
const dirs = await this.getDirs();
|
|
134
|
+
// Handle directory rename by moving every tracked child directory and
|
|
135
|
+
// every file record keyed under the old directory prefix.
|
|
136
|
+
if (dirs.has(op)) {
|
|
137
|
+
const newParent = parentDir(np);
|
|
138
|
+
if (newParent) {
|
|
139
|
+
await this.ensureDir(newParent);
|
|
140
|
+
}
|
|
141
|
+
const allKeys = await this.store.keys();
|
|
142
|
+
const oldKeyPrefix = `fs:${op}/`;
|
|
143
|
+
const newKeyPrefix = `fs:${np}/`;
|
|
144
|
+
const metaSuffix = ':meta';
|
|
145
|
+
const keysToMove = allKeys.filter((k) => k.startsWith(oldKeyPrefix));
|
|
146
|
+
await Promise.all(keysToMove.map(async (oldKey) => {
|
|
147
|
+
const newKey = newKeyPrefix + oldKey.slice(oldKeyPrefix.length);
|
|
148
|
+
if (oldKey.endsWith(metaSuffix)) {
|
|
149
|
+
const meta = await this.store.get(oldKey);
|
|
150
|
+
if (meta) {
|
|
151
|
+
const newFilePath = newKey.slice(3, -metaSuffix.length);
|
|
152
|
+
await this.store.set(metaKey(newFilePath), {
|
|
153
|
+
...meta,
|
|
154
|
+
name: baseName(newFilePath),
|
|
155
|
+
path: newFilePath,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
const value = await this.store.get(oldKey);
|
|
161
|
+
if (value !== null) {
|
|
162
|
+
await this.store.set(newKey, value);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
await this.store.remove(oldKey);
|
|
166
|
+
}));
|
|
167
|
+
dirs.delete(op);
|
|
168
|
+
dirs.add(np);
|
|
169
|
+
const oldPrefix = op + '/';
|
|
170
|
+
const newPrefix = np + '/';
|
|
171
|
+
for (const d of [...dirs]) {
|
|
172
|
+
if (d.startsWith(oldPrefix)) {
|
|
173
|
+
dirs.delete(d);
|
|
174
|
+
dirs.add(newPrefix + d.slice(oldPrefix.length));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
await this.saveDirs(dirs);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
125
180
|
// Read existing data
|
|
126
181
|
const content = await this.store.get(contentKey(op));
|
|
127
182
|
const binary = await this.store.get(binaryKey(op));
|
|
@@ -134,9 +189,11 @@ export class IndexedDBFileSystemProvider {
|
|
|
134
189
|
await this.store.set(binaryKey(np), binary);
|
|
135
190
|
}
|
|
136
191
|
if (meta) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
192
|
+
await this.store.set(metaKey(np), {
|
|
193
|
+
...meta,
|
|
194
|
+
name: baseName(np),
|
|
195
|
+
path: np,
|
|
196
|
+
});
|
|
140
197
|
}
|
|
141
198
|
// Ensure parent dir of new path exists
|
|
142
199
|
const newParent = parentDir(np);
|
|
@@ -147,21 +204,6 @@ export class IndexedDBFileSystemProvider {
|
|
|
147
204
|
await this.store.remove(contentKey(op));
|
|
148
205
|
await this.store.remove(binaryKey(op));
|
|
149
206
|
await this.store.remove(metaKey(op));
|
|
150
|
-
// Handle directory rename
|
|
151
|
-
const dirs = await this.getDirs();
|
|
152
|
-
if (dirs.has(op)) {
|
|
153
|
-
dirs.delete(op);
|
|
154
|
-
dirs.add(np);
|
|
155
|
-
const oldPrefix = op + '/';
|
|
156
|
-
const newPrefix = np + '/';
|
|
157
|
-
for (const d of [...dirs]) {
|
|
158
|
-
if (d.startsWith(oldPrefix)) {
|
|
159
|
-
dirs.delete(d);
|
|
160
|
-
dirs.add(newPrefix + d.slice(oldPrefix.length));
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
await this.saveDirs(dirs);
|
|
164
|
-
}
|
|
165
207
|
}
|
|
166
208
|
async readDirectory(path) {
|
|
167
209
|
const p = normalisePath(path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexeddb-provider.js","sourceRoot":"","sources":["../../src/filesystem/indexeddb-provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"indexeddb-provider.js","sourceRoot":"","sources":["../../src/filesystem/indexeddb-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,sEAAsE;AAEtE,0EAA0E;AAC1E,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,0EAA0E;AAC1E,SAAS,SAAS,CAAC,CAAS;IAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,4CAA4C;AAC5C,SAAS,QAAQ,CAAC,CAAS;IACzB,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,sEAAsE;AAEtE,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,MAAM,IAAI,UAAU,CAAC;AAC9B,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,MAAM,IAAI,SAAS,CAAC;AAC7B,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,MAAM,IAAI,OAAO,CAAC;AAC3B,CAAC;AAED,MAAM,QAAQ,GAAG,SAAS,CAAC;AAE3B,sEAAsE;AAEtE,MAAM,OAAO,2BAA2B;IAMtC,YAAY,EAAU,EAAE,KAAa;QACnC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAkB,CAAC;YAClC,IAAI,EAAE,gBAAgB,EAAE,EAAE;YAC1B,SAAS,EAAE,OAAO;SACnB,CAAC,CAAC;IACL,CAAC;IAED,mEAAmE;IAE3D,KAAK,CAAC,OAAO;QACnB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,IAAiB;QACtC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,0DAA0D;IAClD,KAAK,CAAC,SAAS,CAAC,OAAe;QACrC,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAClB,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,mEAAmE;IAEnE,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAe;QAC3C,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,IAAI,GAAa;YACrB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YACjB,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YAC9B,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAE9B,mBAAmB;QACnB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpC,oDAAoD;QACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;YACvB,MAAM,QAAQ,GAAa,CAAC,CAAC,CAAC,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE1B,4CAA4C;YAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;YAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YACrE,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,OAAe;QAC3C,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO;QACtB,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAElC,sEAAsE;QACtE,0DAA0D;QAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,YAAY,GAAG,MAAM,EAAE,GAAG,CAAC;YACjC,MAAM,YAAY,GAAG,MAAM,EAAE,GAAG,CAAC;YACjC,MAAM,UAAU,GAAG,OAAO,CAAC;YAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;YAErE,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAChE,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,MAAM,CAAC,CAAC;oBACpD,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;wBACxD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;4BACzC,GAAG,IAAI;4BACP,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC;4BAC3B,IAAI,EAAE,WAAW;yBAClB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAU,MAAM,CAAC,CAAC;oBACpD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBACnB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,MAAM,SAAS,GAAG,EAAE,GAAG,GAAG,CAAC;YAC3B,MAAM,SAAS,GAAG,EAAE,GAAG,GAAG,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACf,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAS,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzD,wBAAwB;QACxB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBAChC,GAAG,IAAI;gBACP,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAClB,IAAI,EAAE,EAAE;aACT,CAAC,CAAC;QACL,CAAC;QAED,uCAAuC;QACvC,MAAM,SAAS,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QAED,aAAa;QACb,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,yBAAyB;QACzB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,uBAAuB;gBACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACZ,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,yBAAyB;oBACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACf,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC;QAE3B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,SAAS;YAEvE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,0BAA0B;YAC7E,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAEzD,4CAA4C;YAC5C,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,SAAS;YAEhC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACpB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;gBAAE,OAAO,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO,IAAI,KAAK,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,IAA8B;QAC5D,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,IAAI,GAAa;YACrB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YACjB,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -18,6 +18,7 @@ export declare class NativeFileSystemProvider implements FileSystemProvider {
|
|
|
18
18
|
readonly label: string;
|
|
19
19
|
private root;
|
|
20
20
|
constructor(id: string, root: FileSystemDirectoryHandle);
|
|
21
|
+
private copyDirectory;
|
|
21
22
|
readFile(path: string): Promise<string | null>;
|
|
22
23
|
writeFile(path: string, content: string): Promise<void>;
|
|
23
24
|
delete(path: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-provider.d.ts","sourceRoot":"","sources":["../../src/filesystem/native-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIhF,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAkBD,uEAAuE;AACvE,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,sEAAsE;AACtE,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAc3C;AAED,+DAA+D;AAC/D,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc9E;AAyDD,qBAAa,wBAAyB,YAAW,kBAAkB;IACjE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,IAAI,CAA4B;gBAE5B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB;
|
|
1
|
+
{"version":3,"file":"native-provider.d.ts","sourceRoot":"","sources":["../../src/filesystem/native-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIhF,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAkBD,uEAAuE;AACvE,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,sEAAsE;AACtE,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAc3C;AAED,+DAA+D;AAC/D,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc9E;AAyDD,qBAAa,wBAAyB,YAAW,kBAAkB;IACjE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,IAAI,CAA4B;gBAE5B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB;YAMzC,aAAa;IAsBrB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAa9C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASvD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASnC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCvD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA0BvD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBtC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAmB5C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAarD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAY/E;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAW1E;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAkB1C"}
|
|
@@ -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
|
-
//
|
|
160
|
-
const
|
|
161
|
-
if (
|
|
162
|
-
|
|
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
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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
|
}
|