UNPKG

scriptable-testlab

Version:

A lightweight, efficient tool designed to manage and update scripts for Scriptable.

104 lines (101 loc) 2.68 kB
import { DEFAULT_BASE_DIRECTORIES } from '../utils/paths.js'; type BookmarkSource = 'local' | 'icloud'; interface FileManagerOptions { rootPath?: string; baseDirectories?: Partial<typeof DEFAULT_BASE_DIRECTORIES>; } /** * File system node metadata */ interface FileSystemMetadata { creationDate: Date; modificationDate: Date; size: number; isInCloud?: boolean; isDownloaded?: boolean; extendedAttributes?: Map<string, string>; tags?: Set<string>; } /** * File system node types */ type FileSystemNodeType = 'file' | 'directory'; /** * Base file system node interface */ interface FileSystemNodeBase { type: FileSystemNodeType; metadata: FileSystemMetadata; } /** * File node interface */ interface FileNode extends FileSystemNodeBase { type: 'file'; content: string; } /** * Directory node interface */ interface DirectoryNode extends FileSystemNodeBase { type: 'directory'; children: Map<string, FileNode | DirectoryNode>; } /** * File system node union type */ type FileSystemNode = FileNode | DirectoryNode; /** * Type guard for DirectoryNode */ declare function isDirectoryNode(node: FileSystemNode): node is DirectoryNode; /** * Type guard for FileNode */ declare function isFileNode(node: FileSystemNode): node is FileNode; /** * File manager state interface */ interface FileManagerState { store: Record<string, any>; rootPath: string; baseDirectories: typeof DEFAULT_BASE_DIRECTORIES; type: 'local' | 'icloud'; fileSystem: DirectoryNode; } /** * File operation result interface */ interface FileOperationResult { success: boolean; error?: Error; data?: any; } /** * File system event types */ type FileSystemEventType = 'create' | 'modify' | 'delete' | 'move' | 'copy' | 'attribute_change'; /** * File system event interface */ interface FileSystemEvent { type: FileSystemEventType; path: string; timestamp: Date; metadata?: FileSystemMetadata; } /** * File manager reset options */ interface FileManagerResetOptions { preserveBookmarks?: boolean; preserveBaseDirectories?: boolean; preserveInstances?: boolean; } /** * File manager instance interface */ interface FileManagerInstance { resetInstance(options?: FileManagerResetOptions): void; } export { type BookmarkSource, type DirectoryNode, type FileManagerInstance, type FileManagerOptions, type FileManagerResetOptions, type FileManagerState, type FileNode, type FileOperationResult, type FileSystemEvent, type FileSystemEventType, type FileSystemMetadata, type FileSystemNode, type FileSystemNodeBase, type FileSystemNodeType, isDirectoryNode, isFileNode };