@cypsela/browser-source
Version:
W3C's FileSystemEntry and FileSystemHandle as a sources for @helia/unixfs
57 lines • 2.07 kB
TypeScript
import type { Mtime } from "ipfs-unixfs";
export type BrowserFsEntry = FileSystemEntry;
export type BrowserFsHandle = FileSystemHandle;
export type BrowserFsItem = BrowserFsEntry | BrowserFsHandle;
export type BrowserFsDir<T extends BrowserFsItem> = T extends BrowserFsEntry ? FileSystemDirectoryEntry : T extends BrowserFsHandle ? FileSystemDirectoryHandle : never;
export type BrowserFsFile<T extends BrowserFsItem> = T extends FileSystemEntry ? FileSystemFileEntry : T extends FileSystemHandle ? FileSystemFileHandle : never;
export interface GetEntries<T extends BrowserFsItem> {
(dir: BrowserFsDir<T>): AsyncGenerator<T>;
}
export interface GetFile<T extends BrowserFsItem> {
(file: BrowserFsFile<T>): Promise<File>;
}
export interface GetKind<T extends BrowserFsItem> {
(item: T): FileSystemHandleKind;
}
export interface BrowserFsItemSourceResult {
path: string;
content: AsyncIterable<Uint8Array> | undefined;
mtime: Mtime | undefined;
mode: number | undefined;
}
export interface BrowserFsItemSourceOptions {
/**
* Include .dot files in matched paths.
*/
hidden?: boolean;
/**
* Include only output files
*/
onlyFiles?: boolean;
/**
* Path prefix, must end with '/'
*/
prefix?: string;
/**
* Preserve mtime
*/
preserveMtime?: boolean;
/**
* mode to use
*/
mode?: number;
/**
* mtime to use - if preserveMtime is true this will be ignored
*/
mtime?: Mtime;
}
export interface BrowserFsItemSource<T extends BrowserFsItem> {
(source: T, getEntries: GetEntries<T>, getFile: GetFile<T>, options?: BrowserFsItemSourceOptions): AsyncGenerator<BrowserFsItemSourceResult>;
}
export interface FileSystemEntrySource {
(source: FileSystemEntry, options?: BrowserFsItemSourceOptions): AsyncGenerator<BrowserFsItemSourceResult>;
}
export interface FileSystemHandleSource {
(source: FileSystemHandle, options?: BrowserFsItemSourceOptions): AsyncGenerator<BrowserFsItemSourceResult>;
}
//# sourceMappingURL=interface.d.ts.map