// File System Access API
// Specification: https://wicg.github.io/file-system-access/
// Repository: https://github.com/WICG/file-system-access
///
type FileSystemPermissionMode = (
| "read"
| "readwrite"
);
interface FileSystemPermissionDescriptor extends PermissionDescriptor {
handle: FileSystemHandle;
mode?: FileSystemPermissionMode;
}
interface FileSystemHandlePermissionDescriptor {
mode?: FileSystemPermissionMode;
}
interface FileSystemHandle {
queryPermission(descriptor?: FileSystemHandlePermissionDescriptor): Promise;
requestPermission(descriptor?: FileSystemHandlePermissionDescriptor): Promise;
}
type WellKnownDirectory = (
| "desktop"
| "documents"
| "downloads"
| "music"
| "pictures"
| "videos"
);
type StartInDirectory = WellKnownDirectory | FileSystemHandle;
interface FilePickerAcceptType {
description?: string;
accept?: Record;
}
interface FilePickerOptions {
types?: FilePickerAcceptType[];
excludeAcceptAllOption?: boolean;
id?: string;
startIn?: StartInDirectory;
}
interface OpenFilePickerOptions extends FilePickerOptions {
multiple?: boolean;
}
interface SaveFilePickerOptions extends FilePickerOptions {
suggestedName?: string;
}
interface DirectoryPickerOptions {
id?: string;
startIn?: StartInDirectory;
mode?: FileSystemPermissionMode;
}
declare function showOpenFilePicker(options?: OpenFilePickerOptions): Promise;
declare function showSaveFilePicker(options?: SaveFilePickerOptions): Promise;
declare function showDirectoryPicker(options?: DirectoryPickerOptions): Promise;
interface DataTransferItem {
getAsFileSystemHandle(): Promise;
}