|
|
|
@ -1,71 +1,203 @@
|
|
|
|
|
// 导入 ConfigLocation 和 FileSystemConfig 类型
|
|
|
|
|
import type { ConfigLocation, FileSystemConfig } from './fileSystemConfig';
|
|
|
|
|
|
|
|
|
|
/* Type of messages*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个请求数据的消息类型
|
|
|
|
|
* @interface RequestDataMessage
|
|
|
|
|
* @property {string} type - 消息类型,固定值为 'requestData'
|
|
|
|
|
* @property {boolean} [reload] - 是否重新加载数据,可选参数,默认值为 false
|
|
|
|
|
*/
|
|
|
|
|
export interface RequestDataMessage {
|
|
|
|
|
// 消息类型,固定值为 'requestData'
|
|
|
|
|
type: 'requestData';
|
|
|
|
|
// 是否重新加载数据,可选参数,默认值为 false
|
|
|
|
|
reload?: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个响应数据的消息类型
|
|
|
|
|
* @interface ResponseDataMessage
|
|
|
|
|
* @property {string} type - 消息类型,固定值为 'responseData'
|
|
|
|
|
* @property {FileSystemConfig[]} configs - 文件系统配置数组
|
|
|
|
|
* @property {ConfigLocation[]} locations - 配置位置数组
|
|
|
|
|
*/
|
|
|
|
|
export interface ResponseDataMessage {
|
|
|
|
|
// 消息类型,固定值为 'responseData'
|
|
|
|
|
type: 'responseData';
|
|
|
|
|
// 文件系统配置数组
|
|
|
|
|
configs: FileSystemConfig[];
|
|
|
|
|
// 配置位置数组
|
|
|
|
|
locations: ConfigLocation[];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个保存配置的消息类型
|
|
|
|
|
* @interface SaveConfigMessage
|
|
|
|
|
* @property {string} type - 消息类型,固定值为 'saveConfig'
|
|
|
|
|
* @property {FileSystemConfig} config - 要保存的文件系统配置
|
|
|
|
|
* @property {string} [name] - 配置的名称,可选参数
|
|
|
|
|
* @property {string} [uniqueId] - 配置的唯一标识符,可选参数
|
|
|
|
|
* @property {boolean} [remove] - 是否删除配置,可选参数,默认值为 false
|
|
|
|
|
*/
|
|
|
|
|
export interface SaveConfigMessage {
|
|
|
|
|
// 消息类型,固定值为 'saveConfig'
|
|
|
|
|
type: 'saveConfig';
|
|
|
|
|
// 要保存的文件系统配置
|
|
|
|
|
config: FileSystemConfig;
|
|
|
|
|
// 配置的名称,可选参数
|
|
|
|
|
name?: string;
|
|
|
|
|
// 配置的唯一标识符,可选参数
|
|
|
|
|
uniqueId?: string;
|
|
|
|
|
// 是否删除配置,可选参数,默认值为 false
|
|
|
|
|
remove?: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个保存配置结果的消息类型
|
|
|
|
|
* @interface SaveConfigResultMessage
|
|
|
|
|
* @property {string} type - 消息类型,固定值为 'saveConfigResult'
|
|
|
|
|
* @property {string} [error] - 保存配置时发生的错误信息,可选参数
|
|
|
|
|
* @property {FileSystemConfig} config - 保存的文件系统配置
|
|
|
|
|
* @property {string} [uniqueId] - 配置的唯一标识符,可选参数
|
|
|
|
|
*/
|
|
|
|
|
export interface SaveConfigResultMessage {
|
|
|
|
|
// 消息类型,固定值为 'saveConfigResult'
|
|
|
|
|
type: 'saveConfigResult';
|
|
|
|
|
// 保存配置时发生的错误信息,可选参数
|
|
|
|
|
error?: string;
|
|
|
|
|
// 保存的文件系统配置
|
|
|
|
|
config: FileSystemConfig;
|
|
|
|
|
// 配置的唯一标识符,可选参数
|
|
|
|
|
uniqueId?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个提示路径的消息类型
|
|
|
|
|
* @interface PromptPathMessage
|
|
|
|
|
* @property {string} type - 消息类型,固定值为 'promptPath'
|
|
|
|
|
* @property {string} [uniqueId] - 提示路径的唯一标识符,可选参数
|
|
|
|
|
*/
|
|
|
|
|
export interface PromptPathMessage {
|
|
|
|
|
// 消息类型,固定值为 'promptPath'
|
|
|
|
|
type: 'promptPath';
|
|
|
|
|
// 提示路径的唯一标识符,可选参数
|
|
|
|
|
uniqueId?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个提示路径结果的消息类型
|
|
|
|
|
* @interface PromptPathResultMessage
|
|
|
|
|
* @property {string} type - 消息类型,固定值为 'promptPathResult'
|
|
|
|
|
* @property {string} [error] - 提示路径时发生的错误信息,可选参数
|
|
|
|
|
* @property {string} [path] - 用户选择的路径,可选参数
|
|
|
|
|
* @property {string} [uniqueId] - 提示路径的唯一标识符,可选参数
|
|
|
|
|
*/
|
|
|
|
|
export interface PromptPathResultMessage {
|
|
|
|
|
// 消息类型,固定值为 'promptPathResult'
|
|
|
|
|
type: 'promptPathResult';
|
|
|
|
|
// 提示路径时发生的错误信息,可选参数
|
|
|
|
|
error?: string;
|
|
|
|
|
// 用户选择的路径,可选参数
|
|
|
|
|
path?: string;
|
|
|
|
|
// 提示路径的唯一标识符,可选参数
|
|
|
|
|
uniqueId?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个导航消息类型
|
|
|
|
|
* @interface NavigateMessage
|
|
|
|
|
* @property {string} type - 消息类型,固定值为 'navigate'
|
|
|
|
|
* @property {Navigation} navigation - 导航对象,包含导航的类型和相关配置
|
|
|
|
|
*/
|
|
|
|
|
export interface NavigateMessage {
|
|
|
|
|
// 消息类型,固定值为 'navigate'
|
|
|
|
|
type: 'navigate';
|
|
|
|
|
// 导航对象,包含导航的类型和相关配置
|
|
|
|
|
navigation: Navigation;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个导航完成消息类型
|
|
|
|
|
* @interface NavigatedMessage
|
|
|
|
|
* @property {string} type - 消息类型,固定值为 'navigated'
|
|
|
|
|
* @property {string} view - 导航的视图类型,如 'startscreen', 'newconfig', 'configeditor', 'configlocator'
|
|
|
|
|
*/
|
|
|
|
|
export interface NavigatedMessage {
|
|
|
|
|
// 消息类型,固定值为 'navigated'
|
|
|
|
|
type: 'navigated';
|
|
|
|
|
// 导航的视图类型,如 'startscreen', 'newconfig', 'configeditor', 'configlocator'
|
|
|
|
|
view: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个消息类型的联合类型
|
|
|
|
|
* @type MessageTypes
|
|
|
|
|
* @property {RequestDataMessage} requestData - 请求数据消息类型
|
|
|
|
|
* @property {ResponseDataMessage} responseData - 响应数据消息类型
|
|
|
|
|
* @property {SaveConfigMessage} saveConfig - 保存配置消息类型
|
|
|
|
|
* @property {SaveConfigResultMessage} saveConfigResult - 保存配置结果消息类型
|
|
|
|
|
* @property {PromptPathMessage} promptPath - 提示路径消息类型
|
|
|
|
|
* @property {PromptPathResultMessage} promptPathResult - 提示路径结果消息类型
|
|
|
|
|
* @property {NavigateMessage} navigate - 导航消息类型
|
|
|
|
|
* @property {NavigatedMessage} navigated - 导航完成消息类型
|
|
|
|
|
*/
|
|
|
|
|
export interface MessageTypes {
|
|
|
|
|
// 请求数据消息类型
|
|
|
|
|
requestData: RequestDataMessage;
|
|
|
|
|
// 响应数据消息类型
|
|
|
|
|
responseData: ResponseDataMessage;
|
|
|
|
|
// 保存配置消息类型
|
|
|
|
|
saveConfig: SaveConfigMessage;
|
|
|
|
|
// 保存配置结果消息类型
|
|
|
|
|
saveConfigResult: SaveConfigResultMessage;
|
|
|
|
|
// 提示路径消息类型
|
|
|
|
|
promptPath: PromptPathMessage;
|
|
|
|
|
// 提示路径结果消息类型
|
|
|
|
|
promptPathResult: PromptPathResultMessage;
|
|
|
|
|
// 导航消息类型
|
|
|
|
|
navigate: NavigateMessage;
|
|
|
|
|
// 导航完成消息类型
|
|
|
|
|
navigated: NavigatedMessage;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个消息类型
|
|
|
|
|
* @type Message
|
|
|
|
|
* @property {MessageTypes[keyof MessageTypes]} value - 消息的值,是 MessageTypes 联合类型的一个实例
|
|
|
|
|
*/
|
|
|
|
|
export type Message = MessageTypes[keyof MessageTypes];
|
|
|
|
|
|
|
|
|
|
/* Types related to NavigateMessage */
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个新建配置导航对象
|
|
|
|
|
* @interface NewConfigNavigation
|
|
|
|
|
* @property {string} type - 导航类型,固定值为 'newconfig'
|
|
|
|
|
*/
|
|
|
|
|
export interface NewConfigNavigation {
|
|
|
|
|
// 导航类型,固定值为 'newconfig'
|
|
|
|
|
type: 'newconfig';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个编辑配置导航对象
|
|
|
|
|
* @interface EditConfigNavigation
|
|
|
|
|
* @property {string} type - 导航类型,固定值为 'editconfig'
|
|
|
|
|
* @property {FileSystemConfig | FileSystemConfig[]} config - 要编辑的文件系统配置,可以是单个配置或配置数组
|
|
|
|
|
*/
|
|
|
|
|
export interface EditConfigNavigation {
|
|
|
|
|
// 导航类型,固定值为 'editconfig'
|
|
|
|
|
type: 'editconfig';
|
|
|
|
|
// 要编辑的文件系统配置,可以是单个配置或配置数组
|
|
|
|
|
config: FileSystemConfig | FileSystemConfig[];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个导航对象
|
|
|
|
|
* @type Navigation
|
|
|
|
|
* @property {NewConfigNavigation} newconfig - 新建配置导航对象
|
|
|
|
|
* @property {EditConfigNavigation} editconfig - 编辑配置导航对象
|
|
|
|
|
*/
|
|
|
|
|
export type Navigation = NewConfigNavigation | EditConfigNavigation;
|
|
|
|
|