native-file-system-adapter-ts
Version:
Native File System API
112 lines (111 loc) • 4.54 kB
TypeScript
export {};
export interface FileSystemHandle {
readonly kind: 'file' | 'directory';
readonly name: string;
isSameEntry(other: FileSystemHandle): Promise<boolean>;
queryPermission(descriptor?: FileSystemHandlePermissionDescriptor): Promise<PermissionState>;
requestPermission(descriptor?: FileSystemHandlePermissionDescriptor): Promise<PermissionState>;
}
export declare type FileSystemHandleUnion = FileSystemFileHandle | FileSystemDirectoryHandle;
export interface FilePickerAcceptType {
description?: string | undefined;
accept: Record<string, string | string[]>;
}
export interface FilePickerOptions {
types?: FilePickerAcceptType[] | undefined;
excludeAcceptAllOption?: boolean | undefined;
}
export interface OpenFilePickerOptions extends FilePickerOptions {
multiple?: boolean | undefined;
}
export interface SaveFilePickerOptions extends FilePickerOptions {
suggestedName?: string;
}
export interface DirectoryPickerOptions {
}
export declare type FileSystemPermissionMode = 'read' | 'readwrite';
export interface FileSystemPermissionDescriptor extends PermissionDescriptor {
handle: FileSystemHandle;
mode?: FileSystemPermissionMode | undefined;
}
export interface FileSystemHandlePermissionDescriptor {
mode?: FileSystemPermissionMode | undefined;
}
export interface FileSystemCreateWritableOptions {
keepExistingData?: boolean | undefined;
}
export interface FileSystemGetFileOptions {
create?: boolean | undefined;
}
export interface FileSystemGetDirectoryOptions {
create?: boolean | undefined;
}
export interface FileSystemRemoveOptions {
recursive?: boolean | undefined;
}
export declare type WriteParams = {
type: 'write';
position?: number | undefined;
data: BufferSource | Blob | string;
} | {
type: 'seek';
position: number;
} | {
type: 'truncate';
size: number;
};
export declare type FileSystemWriteChunkType = BufferSource | Blob | string | WriteParams;
export interface WritableStream {
close(): Promise<void>;
}
export interface FileSystemWritableFileStream extends WritableStream {
write(data: FileSystemWriteChunkType): Promise<void>;
seek(position: number): Promise<void>;
truncate(size: number): Promise<void>;
}
export interface FileSystemFileHandle extends FileSystemHandle {
readonly kind: 'file';
getFile(): Promise<File>;
createWritable(options?: FileSystemCreateWritableOptions): Promise<FileSystemWritableFileStream>;
}
export interface FileSystemDirectoryHandle extends FileSystemHandle {
readonly kind: 'directory';
getDirectoryHandle(name: string, options?: FileSystemGetDirectoryOptions): Promise<FileSystemDirectoryHandle>;
getFileHandle(name: string, options?: FileSystemGetFileOptions): Promise<FileSystemFileHandle>;
removeEntry(name: string, options?: FileSystemRemoveOptions): Promise<void>;
resolve(possibleDescendant: FileSystemHandle): Promise<string[] | null>;
keys(): AsyncIterableIterator<string>;
values(): AsyncIterableIterator<FileSystemDirectoryHandle | FileSystemFileHandle>;
entries(): AsyncIterableIterator<[string, FileSystemDirectoryHandle | FileSystemFileHandle]>;
[Symbol.asyncIterator]: FileSystemDirectoryHandle['entries'];
}
export interface DataTransferItem {
getAsFileSystemHandle(): Promise<FileSystemHandle | null>;
}
export interface StorageManager {
getDirectory(): Promise<FileSystemDirectoryHandle>;
}
export declare function showOpenFilePicker(options?: OpenFilePickerOptions & {
multiple?: false | undefined;
}): Promise<[FileSystemFileHandle]>;
export declare function showOpenFilePicker(options?: OpenFilePickerOptions): Promise<FileSystemFileHandle[]>;
export declare function showSaveFilePicker(options?: SaveFilePickerOptions): Promise<FileSystemFileHandle>;
export declare function showDirectoryPicker(options?: DirectoryPickerOptions): Promise<FileSystemDirectoryHandle>;
export interface ChooseFileSystemEntriesOptionsAccepts {
description?: string | undefined;
mimeTypes?: string[] | undefined;
extensions?: string[] | undefined;
}
export interface ChooseFileSystemEntriesFileOptions {
accepts?: ChooseFileSystemEntriesOptionsAccepts[] | undefined;
excludeAcceptAllOption?: boolean | undefined;
}
export interface GetSystemDirectoryOptions {
type: 'sandbox';
}
export interface FileSystemHandlePermissionDescriptor {
/**
* @deprecated Old property just for Chromium <=85. Use `mode: ...` in the new API.
*/
writable?: boolean | undefined;
}