scriptable-testlab
Version:
A lightweight, efficient tool designed to manage and update scripts for Scriptable.
104 lines (101 loc) • 2.68 kB
TypeScript
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 };