UNPKG

use-fs

Version:

A React hook for integrating with the File System Access API. Enables web applications to seamlessly work with files on a user's local system.

70 lines (67 loc) 3.5 kB
import * as react from 'react'; type FileWriteOptions = { /** Whether to create the file if it doesn't exist */ create?: boolean; /** Whether to truncate the file if it exists */ truncate?: boolean; }; type FileOperations = { /** Write data to a file at the specified path */ writeFile: (path: string, data: string | ArrayBuffer | Blob, options?: FileWriteOptions) => Promise<void>; /** Create a new file at the specified path */ createFile: (path: string, initialData?: string | ArrayBuffer | Blob) => Promise<FileSystemFileHandle>; /** Delete a file at the specified path */ deleteFile: (path: string) => Promise<void>; }; type Filter = { shouldIncludeFile: (filepath: string, handle: FileSystemHandle) => Promise<boolean>; shouldProcessDirectory: (filepath: string, handle: FileSystemHandle) => Promise<boolean>; }; type FilterFn = () => Promise<Filter>; declare const gitFilter: FilterFn; declare const distFilter: FilterFn; declare const miscFilter: FilterFn; declare const commonFilters: FilterFn[]; declare const processDirectory: (directoryHandle: FileSystemDirectoryHandle, directoryPath: string, filters: Filter[], includeFiles: Map<string, FileSystemFileHandle>, ignoreFilePaths: Set<string>) => Promise<Map<string, FileSystemFileHandle>>; interface UseFileHandlingHookProps { filters?: FilterFn[]; onFilesAdded?: (newFiles: Map<string, string>, previousFiles: Map<string, string>) => void; onFilesChanged?: (changedFiles: Map<string, string>, previousFiles: Map<string, string>) => void; onFilesDeleted?: (deletedFiles: Map<string, string>, previousFiles: Map<string, string>) => void; pollInterval?: number; batchSize?: number; debounceInterval?: number; /** Time in milliseconds to cache file contents before re-reading from disk. Defaults to 5000ms (5 seconds) */ fileCacheTtl?: number; } declare const useFileSystem: (props: UseFileHandlingHookProps) => { handles: Map<string, FileSystemFileHandle>; onDirectorySelection: () => Promise<void>; onClear: () => void; files: Map<string, string>; setFiles: react.Dispatch<react.SetStateAction<Map<string, string>>>; isProcessing: boolean; isBrowserSupported: boolean; writeFile: (path: string, data: string | ArrayBuffer | Blob, options?: FileWriteOptions) => Promise<void>; createFile: (path: string, initialData?: string | ArrayBuffer | Blob) => Promise<FileSystemFileHandle>; deleteFile: (path: string) => Promise<void>; stopPolling: () => void; startPolling: () => void; isPolling: boolean; }; declare const useFs: (props: UseFileHandlingHookProps) => { handles: Map<string, FileSystemFileHandle>; onDirectorySelection: () => Promise<void>; onClear: () => void; files: Map<string, string>; setFiles: react.Dispatch<react.SetStateAction<Map<string, string>>>; isProcessing: boolean; isBrowserSupported: boolean; writeFile: (path: string, data: string | ArrayBuffer | Blob, options?: FileWriteOptions) => Promise<void>; createFile: (path: string, initialData?: string | ArrayBuffer | Blob) => Promise<FileSystemFileHandle>; deleteFile: (path: string) => Promise<void>; stopPolling: () => void; startPolling: () => void; isPolling: boolean; }; export { type FileOperations, type FileWriteOptions, type Filter, type FilterFn, type UseFileHandlingHookProps, commonFilters, distFilter, gitFilter, miscFilter, processDirectory, useFileSystem, useFs };