@flighthq/filesystem 0.5.1-next.658.9cb44d7 → 0.5.1-next.685.f72fc7f

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 CHANGED
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/filesystem`. The `@f
13
13
  This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
14
14
 
15
15
  - [Flight project](https://github.com/flighthq/flight)
16
- - [Source for @flighthq/filesystem@0.5.1-next.658.9cb44d7](https://github.com/flighthq/flight/tree/9cb44d76b981adad2503d5e62207be99adb35c55/packages/filesystem)
17
- - [License](https://github.com/flighthq/flight/blob/9cb44d76b981adad2503d5e62207be99adb35c55/LICENSE.md)
16
+ - [Source for @flighthq/filesystem@0.5.1-next.685.f72fc7f](https://github.com/flighthq/flight/tree/f72fc7feaa9653d950f39c7d2fe6365f48e82e51/packages/filesystem)
17
+ - [License](https://github.com/flighthq/flight/blob/f72fc7feaa9653d950f39c7d2fe6365f48e82e51/LICENSE.md)
@@ -1,11 +1,11 @@
1
1
  import type { FileDialogHandle, FileEntry, FilePermissions, FileStat, FileSystemPathKind, FileSystemUsage, FileWalkOptions, FileWatchEvent, HasStorageFileSystem } from '@flighthq/types/contract';
2
- export declare function appendTextFile(host: HasStorageFileSystem, path: string, data: string): Promise<boolean>;
2
+ export declare function appendTextFile(host: HasStorageFileSystem, path: string, data: string, signal?: AbortSignal): Promise<boolean>;
3
3
  export declare function canAccessFile(host: HasStorageFileSystem, path: string, mode: 'readable' | 'writable' | 'executable'): Promise<boolean>;
4
4
  export declare function copyFile(host: HasStorageFileSystem, from: string, to: string): Promise<boolean>;
5
5
  export declare function createFileSymlink(_host: HasStorageFileSystem, _target: string, _linkPath: string): Promise<boolean>;
6
6
  export declare function directoryExists(host: HasStorageFileSystem, path: string): Promise<boolean>;
7
7
  export declare function fileExists(host: HasStorageFileSystem, path: string): Promise<boolean>;
8
- export declare function findFiles(host: HasStorageFileSystem, rootPath: string, pattern: string): Promise<readonly FileEntry[]>;
8
+ export declare function findFiles(host: HasStorageFileSystem, rootPath: string, pattern: string, options?: Readonly<FileWalkOptions>): Promise<readonly FileEntry[]>;
9
9
  export declare function getFileBaseName(path: string): string;
10
10
  export declare function getFileDirectoryName(path: string): string;
11
11
  export declare function getFileExtensionName(path: string): string;
@@ -17,26 +17,26 @@ export declare function isAbsoluteFilePath(path: string): boolean;
17
17
  export declare function joinFilePath(...segments: readonly string[]): string;
18
18
  export declare function makeDirectory(host: HasStorageFileSystem, path: string): Promise<boolean>;
19
19
  export declare function normalizeFilePath(path: string): string;
20
- export declare function openFileReadStream(host: HasStorageFileSystem, path: string): Promise<ReadableStream<Uint8Array> | null>;
21
- export declare function openFileWriteStream(host: HasStorageFileSystem, path: string): Promise<WritableStream<Uint8Array> | null>;
22
- export declare function readBinaryFile(host: HasStorageFileSystem, path: string): Promise<Uint8Array | null>;
23
- export declare function readBinaryFileRange(host: HasStorageFileSystem, path: string, offset: number, length: number): Promise<Uint8Array | null>;
24
- export declare function readDialogHandleBinaryFile(host: HasStorageFileSystem, handle: Readonly<FileDialogHandle>): Promise<Uint8Array | null>;
25
- export declare function readDialogHandleTextFile(host: HasStorageFileSystem, handle: Readonly<FileDialogHandle>): Promise<string | null>;
26
- export declare function readDirectory(host: HasStorageFileSystem, path: string): Promise<FileEntry[]>;
20
+ export declare function openFileReadStream(host: HasStorageFileSystem, path: string, signal?: AbortSignal): Promise<ReadableStream<Uint8Array> | null>;
21
+ export declare function openFileWriteStream(host: HasStorageFileSystem, path: string, signal?: AbortSignal): Promise<WritableStream<Uint8Array> | null>;
22
+ export declare function readBinaryFile(host: HasStorageFileSystem, path: string, signal?: AbortSignal): Promise<Uint8Array | null>;
23
+ export declare function readBinaryFileRange(host: HasStorageFileSystem, path: string, offset: number, length: number, signal?: AbortSignal): Promise<Uint8Array | null>;
24
+ export declare function readDialogHandleBinaryFile(host: HasStorageFileSystem, handle: Readonly<FileDialogHandle>, signal?: AbortSignal): Promise<Uint8Array | null>;
25
+ export declare function readDialogHandleTextFile(host: HasStorageFileSystem, handle: Readonly<FileDialogHandle>, signal?: AbortSignal): Promise<string | null>;
26
+ export declare function readDirectory(host: HasStorageFileSystem, path: string, signal?: AbortSignal): Promise<FileEntry[]>;
27
27
  export declare function readDirectoryRecursive(host: HasStorageFileSystem, path: string, options?: Readonly<FileWalkOptions>): Promise<readonly FileEntry[]>;
28
28
  export declare function readFileSymlink(_host: HasStorageFileSystem, _path: string): Promise<string | null>;
29
- export declare function readTextFile(host: HasStorageFileSystem, path: string): Promise<string | null>;
29
+ export declare function readTextFile(host: HasStorageFileSystem, path: string, signal?: AbortSignal): Promise<string | null>;
30
30
  export declare function removeDirectory(host: HasStorageFileSystem, path: string, recursive?: boolean): Promise<boolean>;
31
31
  export declare function removeFile(host: HasStorageFileSystem, path: string): Promise<boolean>;
32
32
  export declare function renameFile(host: HasStorageFileSystem, from: string, to: string): Promise<boolean>;
33
33
  export declare function setFilePermissions(_host: HasStorageFileSystem, _path: string, _permissions: Readonly<FilePermissions>): Promise<boolean>;
34
34
  export declare function statFile(host: HasStorageFileSystem, path: string): Promise<FileStat | null>;
35
35
  export declare function watchPath(_host: HasStorageFileSystem, _path: string, _listener: (event: Readonly<FileWatchEvent>) => void): () => void;
36
- export declare function writeBinaryFile(host: HasStorageFileSystem, path: string, data: Readonly<Uint8Array>): Promise<boolean>;
37
- export declare function writeBinaryFileChunks(host: HasStorageFileSystem, path: string, chunks: AsyncIterable<Readonly<Uint8Array>>): Promise<boolean>;
38
- export declare function writeDialogHandleBinaryFile(host: HasStorageFileSystem, handle: Readonly<FileDialogHandle>, data: Readonly<Uint8Array>): Promise<boolean>;
39
- export declare function writeDialogHandleTextFile(host: HasStorageFileSystem, handle: Readonly<FileDialogHandle>, data: string): Promise<boolean>;
40
- export declare function writeFileAtomic(host: HasStorageFileSystem, path: string, data: Readonly<Uint8Array> | string): Promise<boolean>;
41
- export declare function writeTextFile(host: HasStorageFileSystem, path: string, data: string): Promise<boolean>;
36
+ export declare function writeBinaryFile(host: HasStorageFileSystem, path: string, data: Readonly<Uint8Array>, signal?: AbortSignal): Promise<boolean>;
37
+ export declare function writeBinaryFileChunks(host: HasStorageFileSystem, path: string, chunks: AsyncIterable<Readonly<Uint8Array>>, signal?: AbortSignal): Promise<boolean>;
38
+ export declare function writeDialogHandleBinaryFile(host: HasStorageFileSystem, handle: Readonly<FileDialogHandle>, data: Readonly<Uint8Array>, signal?: AbortSignal): Promise<boolean>;
39
+ export declare function writeDialogHandleTextFile(host: HasStorageFileSystem, handle: Readonly<FileDialogHandle>, data: string, signal?: AbortSignal): Promise<boolean>;
40
+ export declare function writeFileAtomic(host: HasStorageFileSystem, path: string, data: Readonly<Uint8Array> | string, signal?: AbortSignal): Promise<boolean>;
41
+ export declare function writeTextFile(host: HasStorageFileSystem, path: string, data: string, signal?: AbortSignal): Promise<boolean>;
42
42
  //# sourceMappingURL=filesystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,cAAc,EACd,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvG;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,GAC3C,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/F;AAGD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnH;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE1F;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAErF;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAK/B;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIzD;AAGD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAE9G;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAElG;AAGD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAEhG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAE9F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIxD;AAED,wBAAgB,YAAY,CAAC,GAAG,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAUnE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAExF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAE5C;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAE5C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAEnG;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAE5B;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAI5B;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAE5F;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAClC,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAE/B;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAElG;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE7F;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/G;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAErF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjG;AAGD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,GACtC,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAE3F;AAGD,wBAAgB,SAAS,CACvB,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,KAAK,IAAI,GACnD,MAAM,IAAI,CAEZ;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,GACzB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAC1C,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,GACzB,OAAO,CAAC,OAAO,CAAC,CAIlB;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CAIlB;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,GAClC,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEtG"}
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
1
  import { getFileDialogHandleOperations } from '@flighthq/dialog/contract';
2
- export function appendTextFile(host, path, data) {
3
- return host.storage.fileSystem.appendTextFile?.(path, data) ?? Promise.resolve(false);
2
+ export function appendTextFile(host, path, data, signal) {
3
+ if (signal?.aborted)
4
+ return Promise.reject(signal.reason);
5
+ const append = host.storage.fileSystem.appendTextFile;
6
+ if (append === undefined)
7
+ return Promise.resolve(false);
8
+ return signal === undefined ? append(path, data) : append(path, data, signal);
4
9
  }
5
10
  export function canAccessFile(host, path, mode) {
6
11
  return host.storage.fileSystem.canAccessFile?.(path, mode) ?? Promise.resolve(false);
@@ -18,8 +23,8 @@ export function directoryExists(host, path) {
18
23
  export function fileExists(host, path) {
19
24
  return host.storage.fileSystem.fileExists?.(path) ?? Promise.resolve(false);
20
25
  }
21
- export async function findFiles(host, rootPath, pattern) {
22
- const all = await readDirectoryRecursive(host, rootPath);
26
+ export async function findFiles(host, rootPath, pattern, options) {
27
+ const all = await readDirectoryRecursive(host, rootPath, options);
23
28
  if (all.length === 0)
24
29
  return [];
25
30
  const re = globToRegExp(pattern);
@@ -81,42 +86,84 @@ export function normalizeFilePath(path) {
81
86
  const prefix = path.startsWith('/') ? '/' : '';
82
87
  return prefix + splitPath(path).join('/');
83
88
  }
84
- export function openFileReadStream(host, path) {
85
- return host.storage.fileSystem.openFileReadStream?.(path) ?? Promise.resolve(null);
86
- }
87
- export function openFileWriteStream(host, path) {
88
- return host.storage.fileSystem.openFileWriteStream?.(path) ?? Promise.resolve(null);
89
- }
90
- export function readBinaryFile(host, path) {
91
- return host.storage.fileSystem.readBinaryFile?.(path) ?? Promise.resolve(null);
92
- }
93
- export function readBinaryFileRange(host, path, offset, length) {
94
- return host.storage.fileSystem.readBinaryFileRange?.(path, offset, length) ?? Promise.resolve(null);
95
- }
96
- export async function readDialogHandleBinaryFile(host, handle) {
89
+ export function openFileReadStream(host, path, signal) {
90
+ if (signal?.aborted)
91
+ return Promise.reject(signal.reason);
92
+ const open = host.storage.fileSystem.openFileReadStream;
93
+ if (open === undefined)
94
+ return Promise.resolve(null);
95
+ return signal === undefined ? open(path) : open(path, signal);
96
+ }
97
+ export function openFileWriteStream(host, path, signal) {
98
+ if (signal?.aborted)
99
+ return Promise.reject(signal.reason);
100
+ const open = host.storage.fileSystem.openFileWriteStream;
101
+ if (open === undefined)
102
+ return Promise.resolve(null);
103
+ return signal === undefined ? open(path) : open(path, signal);
104
+ }
105
+ export function readBinaryFile(host, path, signal) {
106
+ if (signal?.aborted)
107
+ return Promise.reject(signal.reason);
108
+ const read = host.storage.fileSystem.readBinaryFile;
109
+ if (read === undefined)
110
+ return Promise.resolve(null);
111
+ return signal === undefined ? read(path) : read(path, signal);
112
+ }
113
+ export function readBinaryFileRange(host, path, offset, length, signal) {
114
+ if (signal?.aborted)
115
+ return Promise.reject(signal.reason);
116
+ const read = host.storage.fileSystem.readBinaryFileRange;
117
+ if (read === undefined)
118
+ return Promise.resolve(null);
119
+ return signal === undefined ? read(path, offset, length) : read(path, offset, length, signal);
120
+ }
121
+ export async function readDialogHandleBinaryFile(host, handle, signal) {
122
+ if (signal?.aborted)
123
+ return Promise.reject(signal.reason);
97
124
  if (handle.path !== null)
98
- return readBinaryFile(host, handle.path);
125
+ return readBinaryFile(host, handle.path, signal);
99
126
  const read = getFileDialogHandleOperations(handle)?.readBinary;
100
- return read === undefined ? null : read();
127
+ if (read === undefined)
128
+ return null;
129
+ return signal === undefined ? read() : read(signal);
101
130
  }
102
- export async function readDialogHandleTextFile(host, handle) {
131
+ export async function readDialogHandleTextFile(host, handle, signal) {
132
+ signal?.throwIfAborted();
103
133
  if (handle.path !== null)
104
- return readTextFile(host, handle.path);
134
+ return readTextFile(host, handle.path, signal);
105
135
  const read = getFileDialogHandleOperations(handle)?.readText;
106
- return read === undefined ? null : read();
107
- }
108
- export function readDirectory(host, path) {
109
- return host.storage.fileSystem.readDirectory?.(path) ?? Promise.resolve([]);
136
+ if (read === undefined)
137
+ return null;
138
+ return signal === undefined ? read() : read(signal);
139
+ }
140
+ export function readDirectory(host, path, signal) {
141
+ if (signal?.aborted)
142
+ return Promise.reject(signal.reason);
143
+ const read = host.storage.fileSystem.readDirectory;
144
+ if (read === undefined)
145
+ return Promise.resolve([]);
146
+ return signal === undefined ? read(path) : read(path, signal);
110
147
  }
111
148
  export function readDirectoryRecursive(host, path, options) {
112
- return host.storage.fileSystem.readDirectoryRecursive?.(path, options) ?? Promise.resolve([]);
149
+ if (options?.signal?.aborted)
150
+ return Promise.reject(options.signal.reason);
151
+ const read = host.storage.fileSystem.readDirectoryRecursive;
152
+ if (read === undefined)
153
+ return Promise.resolve([]);
154
+ return options === undefined ? read(path) : read(path, options);
113
155
  }
114
156
  // Symlinks are outside the honest host-provider surface until a real provider exists.
115
157
  export function readFileSymlink(_host, _path) {
116
158
  return Promise.resolve(null);
117
159
  }
118
- export function readTextFile(host, path) {
119
- return host.storage.fileSystem.readTextFile?.(path) ?? Promise.resolve(null);
160
+ export function readTextFile(host, path, signal) {
161
+ if (signal?.aborted)
162
+ return Promise.reject(signal.reason);
163
+ const read = host.storage.fileSystem.readTextFile;
164
+ if (read === undefined)
165
+ return Promise.resolve(null);
166
+ return signal === undefined ? read(path) : read(path, signal);
120
167
  }
121
168
  export function removeDirectory(host, path, recursive) {
122
169
  return host.storage.fileSystem.removeDirectory?.(path, recursive) ?? Promise.resolve(false);
@@ -138,42 +185,86 @@ export function statFile(host, path) {
138
185
  export function watchPath(_host, _path, _listener) {
139
186
  return () => { };
140
187
  }
141
- export function writeBinaryFile(host, path, data) {
142
- return host.storage.fileSystem.writeBinaryFile?.(path, data) ?? Promise.resolve(false);
143
- }
144
- export async function writeBinaryFileChunks(host, path, chunks) {
145
- const stream = await openFileWriteStream(host, path);
188
+ export function writeBinaryFile(host, path, data, signal) {
189
+ if (signal?.aborted)
190
+ return Promise.reject(signal.reason);
191
+ const write = host.storage.fileSystem.writeBinaryFile;
192
+ if (write === undefined)
193
+ return Promise.resolve(false);
194
+ return signal === undefined ? write(path, data) : write(path, data, signal);
195
+ }
196
+ export async function writeBinaryFileChunks(host, path, chunks, signal) {
197
+ signal?.throwIfAborted();
198
+ const stream = await openFileWriteStream(host, path, signal);
146
199
  if (stream === null)
147
200
  return false;
148
201
  const writer = stream.getWriter();
202
+ if (signal?.aborted) {
203
+ await writer.abort(signal.reason).catch(() => { });
204
+ throw signal.reason;
205
+ }
206
+ let aborted = false;
207
+ let abortPromise = null;
208
+ const onAbort = () => {
209
+ aborted = true;
210
+ abortPromise = writer.abort(signal?.reason).catch(() => { });
211
+ };
212
+ signal?.addEventListener('abort', onAbort, { once: true });
149
213
  try {
150
- for await (const chunk of chunks)
214
+ for await (const chunk of chunks) {
215
+ signal?.throwIfAborted();
151
216
  await writer.write(chunk.slice());
217
+ }
218
+ signal?.throwIfAborted();
152
219
  await writer.close();
153
220
  return true;
154
221
  }
155
222
  catch {
156
- await writer.abort();
223
+ if (abortPromise === null)
224
+ await writer.abort().catch(() => { });
225
+ else
226
+ await abortPromise;
227
+ if (aborted)
228
+ throw signal?.reason;
157
229
  return false;
158
230
  }
231
+ finally {
232
+ signal?.removeEventListener('abort', onAbort);
233
+ }
159
234
  }
160
- export async function writeDialogHandleBinaryFile(host, handle, data) {
235
+ export async function writeDialogHandleBinaryFile(host, handle, data, signal) {
236
+ signal?.throwIfAborted();
161
237
  if (handle.path !== null)
162
- return writeBinaryFile(host, handle.path, data);
238
+ return writeBinaryFile(host, handle.path, data, signal);
163
239
  const write = getFileDialogHandleOperations(handle)?.writeBinary;
164
- return write === undefined ? false : write(data);
240
+ if (write === undefined)
241
+ return false;
242
+ return signal === undefined ? write(data) : write(data, signal);
165
243
  }
166
- export async function writeDialogHandleTextFile(host, handle, data) {
244
+ export async function writeDialogHandleTextFile(host, handle, data, signal) {
245
+ signal?.throwIfAborted();
167
246
  if (handle.path !== null)
168
- return writeTextFile(host, handle.path, data);
247
+ return writeTextFile(host, handle.path, data, signal);
169
248
  const write = getFileDialogHandleOperations(handle)?.writeText;
170
- return write === undefined ? false : write(data);
171
- }
172
- export function writeFileAtomic(host, path, data) {
173
- return host.storage.fileSystem.writeFileAtomic?.(path, data) ?? Promise.resolve(false);
174
- }
175
- export function writeTextFile(host, path, data) {
176
- return host.storage.fileSystem.writeTextFile?.(path, data) ?? Promise.resolve(false);
249
+ if (write === undefined)
250
+ return false;
251
+ return signal === undefined ? write(data) : write(data, signal);
252
+ }
253
+ export function writeFileAtomic(host, path, data, signal) {
254
+ if (signal?.aborted)
255
+ return Promise.reject(signal.reason);
256
+ const write = host.storage.fileSystem.writeFileAtomic;
257
+ if (write === undefined)
258
+ return Promise.resolve(false);
259
+ return signal === undefined ? write(path, data) : write(path, data, signal);
260
+ }
261
+ export function writeTextFile(host, path, data, signal) {
262
+ if (signal?.aborted)
263
+ return Promise.reject(signal.reason);
264
+ const write = host.storage.fileSystem.writeTextFile;
265
+ if (write === undefined)
266
+ return Promise.resolve(false);
267
+ return signal === undefined ? write(path, data) : write(path, data, signal);
177
268
  }
178
269
  function globToRegExp(pattern) {
179
270
  let re = '^';
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAa1E,MAAM,UAAU,cAAc,CAAC,IAA0B,EAAE,IAAY,EAAE,IAAY;IACnF,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,IAA0B,EAC1B,IAAY,EACZ,IAA4C;IAE5C,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAA0B,EAAE,IAAY,EAAE,EAAU;IAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,iBAAiB,CAAC,KAA2B,EAAE,OAAe,EAAE,SAAiB;IAC/F,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAA0B,EAAE,IAAY;IACtE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAA0B,EAAE,IAAY;IACjE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAA0B,EAC1B,QAAgB,EAChB,OAAe;IAEf,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAY,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,kBAAkB,CAAC,KAA2B,EAAE,KAAa;IAC3E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,eAAe,CAAC,KAA2B,EAAE,KAAa;IACxE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,iBAAiB,CAAC,KAA2B,EAAE,KAAyB;IACtF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAA0B;IAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAG,QAA2B;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG;gBAAE,SAAS;YAC1C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACvF,OAAO,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAA0B,EAAE,IAAY;IACpE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,OAAO,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAA0B,EAC1B,IAAY;IAEZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAA0B,EAC1B,IAAY;IAEZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAA0B,EAAE,IAAY;IACrE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAA0B,EAC1B,IAAY,EACZ,MAAc,EACd,MAAc;IAEd,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAA0B,EAC1B,MAAkC;IAElC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,6BAA6B,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC/D,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAA0B,EAC1B,MAAkC;IAElC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,6BAA6B,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAC7D,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAA0B,EAAE,IAAY;IACpE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAA0B,EAC1B,IAAY,EACZ,OAAmC;IAEnC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,eAAe,CAAC,KAA2B,EAAE,KAAa;IACxE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAA0B,EAAE,IAAY;IACnE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAA0B,EAAE,IAAY,EAAE,SAAmB;IAC3F,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAA0B,EAAE,IAAY;IACjE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAA0B,EAAE,IAAY,EAAE,EAAU;IAC7E,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,kBAAkB,CAChC,KAA2B,EAC3B,KAAa,EACb,YAAuC;IAEvC,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAA0B,EAAE,IAAY;IAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,SAAS,CACvB,KAA2B,EAC3B,KAAa,EACb,SAAoD;IAEpD,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAA0B,EAC1B,IAAY,EACZ,IAA0B;IAE1B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAA0B,EAC1B,IAAY,EACZ,MAA2C;IAE3C,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAA0B,EAC1B,MAAkC,EAClC,IAA0B;IAE1B,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,6BAA6B,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IACjE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAA0B,EAC1B,MAAkC,EAClC,IAAY;IAEZ,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,6BAA6B,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC/D,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAA0B,EAC1B,IAAY,EACZ,IAAmC;IAEnC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAA0B,EAAE,IAAY,EAAE,IAAY;IAClF,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,IAAI,EAAE,GAAG,GAAG,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAW,CAAC;QAChC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC3B,EAAE,IAAI,IAAI,CAAC;gBACX,CAAC,EAAE,CAAC;gBACJ,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;oBAAE,CAAC,EAAE,CAAC;YAClC,CAAC;;gBAAM,EAAE,IAAI,OAAO,CAAC;QACvB,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG;YAAE,EAAE,IAAI,MAAM,CAAC;aAC/B,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;;YACjD,EAAE,IAAI,EAAE,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/filesystem",
3
- "version": "0.5.1-next.658.9cb44d7",
3
+ "version": "0.5.1-next.685.f72fc7f",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,8 +38,8 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/dialog": "0.5.1-next.658.9cb44d7",
42
- "@flighthq/types": "0.5.1-next.658.9cb44d7"
41
+ "@flighthq/dialog": "0.5.1-next.685.f72fc7f",
42
+ "@flighthq/types": "0.5.1-next.685.f72fc7f"
43
43
  },
44
44
  "devDependencies": {
45
45
  "typescript": "^5.3.0"
@@ -132,26 +132,42 @@ describe('readBinaryFile', () => {
132
132
  bytes,
133
133
  );
134
134
  });
135
+
136
+ it('rejects pre-aborted reads without starting provider work', async () => {
137
+ const reason = new Error('cancel read');
138
+ const controller = new AbortController();
139
+ const readBinaryFile = vi.fn(async () => new Uint8Array());
140
+ controller.abort(reason);
141
+ await expect(filesystem.readBinaryFile(hostWith({ readBinaryFile }), 'a', controller.signal)).rejects.toBe(reason);
142
+ expect(readBinaryFile).not.toHaveBeenCalled();
143
+ });
135
144
  });
136
145
 
137
146
  describe('readBinaryFileRange', () => {
138
147
  it('forwards the range', async () => {
139
148
  const readBinaryFileRange = vi.fn(async () => new Uint8Array([2]));
140
- await filesystem.readBinaryFileRange(hostWith({ readBinaryFileRange }), 'a', 1, 1);
141
- expect(readBinaryFileRange).toHaveBeenCalledWith('a', 1, 1);
149
+ const signal = new AbortController().signal;
150
+ await filesystem.readBinaryFileRange(hostWith({ readBinaryFileRange }), 'a', 1, 1, signal);
151
+ expect(readBinaryFileRange).toHaveBeenCalledWith('a', 1, 1, signal);
142
152
  });
143
153
  });
144
154
 
145
155
  describe('readDialogHandleBinaryFile', () => {
146
156
  it('uses retained handle operations when there is no native path', async () => {
147
157
  const bytes = new Uint8Array([3]);
158
+ let observedSignal: AbortSignal | undefined;
148
159
  const handle = createFileDialogHandle('File', 'a', null, {
149
- readBinary: async () => bytes,
160
+ readBinary: async (signal?: AbortSignal) => {
161
+ observedSignal = signal;
162
+ return bytes;
163
+ },
150
164
  readText: async () => 'x',
151
165
  writeBinary: async () => true,
152
166
  writeText: async () => true,
153
167
  });
154
- await expect(filesystem.readDialogHandleBinaryFile(hostWith(), handle)).resolves.toBe(bytes);
168
+ const signal = new AbortController().signal;
169
+ await expect(filesystem.readDialogHandleBinaryFile(hostWith(), handle, signal)).resolves.toBe(bytes);
170
+ expect(observedSignal).toBe(signal);
155
171
  });
156
172
  });
157
173
 
@@ -238,8 +254,9 @@ describe('writeBinaryFile', () => {
238
254
  it('forwards bytes without mutation', async () => {
239
255
  const writeBinaryFile = vi.fn(async () => true);
240
256
  const bytes = new Uint8Array([1]);
241
- await filesystem.writeBinaryFile(hostWith({ writeBinaryFile }), 'a', bytes);
242
- expect(writeBinaryFile).toHaveBeenCalledWith('a', bytes);
257
+ const signal = new AbortController().signal;
258
+ await filesystem.writeBinaryFile(hostWith({ writeBinaryFile }), 'a', bytes, signal);
259
+ expect(writeBinaryFile).toHaveBeenCalledWith('a', bytes, signal);
243
260
  });
244
261
  });
245
262
 
@@ -255,6 +272,27 @@ describe('writeBinaryFileChunks', () => {
255
272
  await expect(filesystem.writeBinaryFileChunks(host, 'a', chunks())).resolves.toBe(true);
256
273
  expect(written).toEqual([[1], [2]]);
257
274
  });
275
+
276
+ it('aborts its owned writer, rejects with the abort reason, and removes its listener', async () => {
277
+ const reason = new Error('cancel chunks');
278
+ const controller = new AbortController();
279
+ const remove = vi.spyOn(controller.signal, 'removeEventListener');
280
+ const abort = vi.fn(async () => {});
281
+ const stream = new WritableStream<Uint8Array>({
282
+ abort,
283
+ async write() {
284
+ controller.abort(reason);
285
+ throw reason;
286
+ },
287
+ });
288
+ const host = hostWith({ openFileWriteStream: vi.fn(async () => stream) });
289
+ async function* chunks() {
290
+ yield new Uint8Array([1]);
291
+ }
292
+ await expect(filesystem.writeBinaryFileChunks(host, 'a', chunks(), controller.signal)).rejects.toBe(reason);
293
+ expect(abort).toHaveBeenCalledWith(reason);
294
+ expect(remove).toHaveBeenCalledWith('abort', expect.any(Function));
295
+ });
258
296
  });
259
297
 
260
298
  describe('writeDialogHandleBinaryFile', () => {
@@ -268,7 +306,11 @@ describe('writeDialogHandleTextFile', () => {
268
306
  it('uses the passed host for a native path', async () => {
269
307
  const writeTextFile = vi.fn(async () => true);
270
308
  const handle = createFileDialogHandle('File', 'a', '/a');
271
- await expect(filesystem.writeDialogHandleTextFile(hostWith({ writeTextFile }), handle, 'x')).resolves.toBe(true);
309
+ const signal = new AbortController().signal;
310
+ await expect(filesystem.writeDialogHandleTextFile(hostWith({ writeTextFile }), handle, 'x', signal)).resolves.toBe(
311
+ true,
312
+ );
313
+ expect(writeTextFile).toHaveBeenCalledWith('/a', 'x', signal);
272
314
  });
273
315
  });
274
316