UNPKG

scriptable-testlab

Version:

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

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