Skip to content

Instantly share code, notes, and snippets.

@screeny05
Last active October 21, 2021 19:16
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save screeny05/b1b7cbeb81479ece36dae21a9ee17d30 to your computer and use it in GitHub Desktop.
Save screeny05/b1b7cbeb81479ece36dae21a9ee17d30 to your computer and use it in GitHub Desktop.
Native File System Typescript Typings – https://wicg.github.io/native-file-system/
declare global {
enum ChooseFileSystemEntriesType {
'open-file',
'save-file',
'open-directory'
}
interface ChooseFileSystemEntriesOptionsAccepts {
description?: string;
mimeTypes?: string;
extensions?: string;
}
interface ChooseFileSystemEntriesOptions {
type?: ChooseFileSystemEntriesType;
multiple?: boolean;
accepts?: ChooseFileSystemEntriesOptionsAccepts[];
excludeAcceptAllOption?: boolean;
}
interface FileSystemHandlePermissionDescriptor {
writable?: boolean;
}
interface FileSystemCreateWriterOptions {
keepExistingData?: boolean;
}
interface FileSystemGetFileOptions {
create?: boolean;
}
interface FileSystemGetDirectoryOptions {
create?: boolean;
}
interface FileSystemRemoveOptions {
recursive?: boolean;
}
enum SystemDirectoryType {
'sandbox'
}
interface GetSystemDirectoryOptions {
type: SystemDirectoryType;
}
interface FileSystemWriter {
write(position: number, data: BufferSource | Blob | string): Promise<void>;
truncate(size: number): Promise<void>;
close(): Promise<void>;
}
interface FileSystemWriterConstructor {
new(): FileSystemWriter;
}
interface FileSystemHandle {
isFile: Readonly<boolean>;
isDirectory: Readonly<boolean>;
name: Readonly<string>;
queryPermission(descriptor?: FileSystemHandlePermissionDescriptor): Promise<PermissionState>;
requestPermission(descriptor?: FileSystemHandlePermissionDescriptor): Promise<PermissionState>;
}
interface FileSystemHandleConstructor {
new(): FileSystemHandle;
}
interface FileSystemFileHandle extends FileSystemHandle {
getFile(): Promise<File>;
createWriter(options?: FileSystemCreateWriterOptions): Promise<FileSystemWriter>;
}
interface FileSystemFileHandleConstructor {
new(): FileSystemFileHandle;
}
interface FileSystemDirectoryHandle extends FileSystemHandle {
getFile(name: string, options?: FileSystemGetFileOptions): Promise<FileSystemFileHandle>;
getDirectory(name: string, options?: FileSystemGetDirectoryOptions): Promise<FileSystemDirectoryHandle>;
getEntries(): AsyncIterable<FileSystemFileHandle | FileSystemDirectoryHandle>;
removeEntry(name: string, options?: FileSystemRemoveOptions): Promise<void>;
}
interface FileSystemDirectoryHandleConstructor {
new(): FileSystemDirectoryHandle;
getSystemDirectory(options: GetSystemDirectoryOptions): Promise<FileSystemDirectoryHandle>;
}
interface Window {
chooseFileSystemEntries(options?: ChooseFileSystemEntriesOptions): Promise<FileSystemHandle | FileSystemHandle[]>;
FileSystemHandle: FileSystemHandleConstructor;
FileSystemFileHandle: FileSystemFileHandleConstructor;
FileSystemDirectoryHandle: FileSystemDirectoryHandleConstructor;
FileSystemWriter: FileSystemWriterConstructor;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment