scriptable-testlab
Version:
A lightweight, efficient tool designed to manage and update scripts for Scriptable.
119 lines (103 loc) • 2.42 kB
text/typescript
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;
}