file-system-access
Version:
File System Access API implementation (ponyfill) with pluggable storage adapters via IndexedDB, Cache API, in-memory etc.
43 lines (42 loc) • 1.96 kB
TypeScript
/// <reference types="wicg-file-system-access" />
export interface AdapterModule<TOptions> {
default: Adapter<TOptions>;
}
export interface Adapter<TOptions> {
(opts: TOptions): FileSystemFolderHandleAdapter | Promise<FileSystemFolderHandleAdapter>;
}
export interface FileSystemHandleAdapter {
readonly kind: 'file' | 'directory';
readonly name: string;
writable: boolean;
isSameEntry(other: this): Promise<boolean>;
queryPermission?(descriptor?: FileSystemHandlePermissionDescriptor): Promise<PermissionState>;
requestPermission?(descriptor?: FileSystemHandlePermissionDescriptor): Promise<PermissionState>;
}
export interface FileSystemFileHandleAdapter<W = WriteChunk> extends FileSystemHandleAdapter {
readonly kind: 'file';
createWritable(options: FileSystemCreateWritableOptions): Promise<UnderlyingSink<W>>;
getFile(): Promise<File>;
}
export interface FileSystemFolderHandleAdapter extends FileSystemHandleAdapter {
readonly kind: 'directory';
entries(): AsyncGenerator<[string, FileSystemFileHandleAdapter | FileSystemFolderHandleAdapter], void, undefined>;
getFileHandle(name: string, options?: FileSystemGetFileOptions): Promise<FileSystemFileHandleAdapter>;
getDirectoryHandle(name: string, opts?: FileSystemGetDirectoryOptions): Promise<FileSystemFolderHandleAdapter>;
removeEntry(name: string, options?: FileSystemRemoveOptions): Promise<void>;
}
export declare type WriteChunk = BufferSource | Blob | string | WriteChunkObject;
export declare type WriteChunkObject = WriteChunkSeekObject | WriteChunkWriteObject | WriteChunkTruncateObject;
export interface WriteChunkSeekObject {
type: 'seek';
position: number;
}
export interface WriteChunkWriteObject {
type: 'write';
position?: number;
data: BufferSource | Blob | string;
}
export interface WriteChunkTruncateObject {
type: 'truncate';
size: number;
}