@esengine/cocos-nexus
Version:
类似Unity Odin Inspector的Cocos Creator插件开发框架 - 用TypeScript完全重新定义插件UI开发体验
2,489 lines (2,477 loc) • 107 kB
TypeScript
interface NexusRect {
x: number;
y: number;
width: number;
height: number;
}
interface NexusColor {
r: number;
g: number;
b: number;
a: number;
}
interface NexusVector2 {
x: number;
y: number;
}
interface NexusTheme {
name: string;
colors: {
primary: string;
primaryDark: string;
secondary: string;
secondaryDark: string;
background: string;
surface: string;
surfaceVariant: string;
text: string;
textSecondary: string;
textOnPrimary: string;
border: string;
borderLight: string;
success: string;
warning: string;
error: string;
info: string;
};
spacing: {
xs: number;
sm: number;
md: number;
lg: number;
xl: number;
};
fonts: {
primary: string;
secondary: string;
mono: string;
};
fontSize: {
xs: number;
sm: number;
md: number;
lg: number;
xl: number;
};
borderRadius: {
sm: number;
md: number;
lg: number;
};
shadows: {
sm: string;
md: string;
lg: string;
};
animations: {
duration: {
fast: number;
normal: number;
slow: number;
};
easing: {
ease: string;
easeIn: string;
easeOut: string;
easeInOut: string;
};
};
}
interface NexusThemeVariables {
[key: string]: string | number;
}
interface NexusStyle {
backgroundColor?: NexusColor;
borderColor?: NexusColor;
borderWidth?: number;
borderRadius?: number;
padding?: number | {
top?: number;
right?: number;
bottom?: number;
left?: number;
};
margin?: number | {
top?: number;
right?: number;
bottom?: number;
left?: number;
};
fontSize?: number;
fontColor?: NexusColor;
fontWeight?: 'normal' | 'bold';
textAlign?: 'left' | 'center' | 'right';
width?: number | string;
height?: number | string;
minWidth?: number;
minHeight?: number;
maxWidth?: number;
maxHeight?: number;
theme?: string;
variant?: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
}
interface NexusLayoutOptions {
direction?: 'horizontal' | 'vertical';
spacing?: number;
align?: 'start' | 'center' | 'end' | 'stretch';
justify?: 'start' | 'center' | 'end' | 'space-between' | 'space-around';
wrap?: boolean;
}
interface NexusEvent {
type: string;
target?: any;
preventDefault(): void;
stopPropagation(): void;
}
interface NexusMouseEvent extends NexusEvent {
x: number;
y: number;
button: number;
ctrlKey: boolean;
shiftKey: boolean;
altKey: boolean;
}
interface NexusKeyboardEvent extends NexusEvent {
key: string;
keyCode: number;
ctrlKey: boolean;
shiftKey: boolean;
altKey: boolean;
}
interface NexusComponent {
render(): void;
update?(): void;
destroy?(): void;
}
interface NexusPanelConfig {
title: string;
width?: number;
height?: number;
minWidth?: number;
minHeight?: number;
resizable?: boolean;
closable?: boolean;
dockable?: boolean;
modal?: boolean;
theme?: string;
}
interface NexusPluginConfig {
name: string;
version: string;
description?: string;
author?: string;
dependencies?: string[];
panels?: {
[key: string]: NexusPanelConfig;
};
menu?: NexusMenuConfig[];
assets?: NexusAssetConfig;
theme?: NexusTheme | string;
permissions?: string[];
sandbox?: boolean;
hotReload?: boolean;
errorHandling?: {
isolate?: boolean;
fallback?: () => void;
retry?: boolean;
maxRetries?: number;
};
}
interface NexusMenuConfig {
path: string;
label: string;
action: string;
enabled?: boolean;
icon?: string;
}
interface NexusAssetConfig {
menu?: {
methods: string;
assetMenu: string;
};
}
interface NexusError {
code: string;
message: string;
stack?: string;
source?: string;
recoverable?: boolean;
}
interface NexusErrorHandler {
handle(error: NexusError): void;
canRecover(error: NexusError): boolean;
recover(error: NexusError): Promise<boolean>;
}
interface NexusDependency {
name: string;
version: string;
required?: boolean;
optional?: boolean;
}
interface NexusVersion {
major: number;
minor: number;
patch: number;
preRelease?: string;
build?: string;
}
declare const NEXUS_PLUGIN_METADATA: unique symbol;
declare const NEXUS_PANEL_METADATA: unique symbol;
declare const NEXUS_COMPONENT_METADATA: unique symbol;
declare const NEXUS_PROPERTY_METADATA: unique symbol;
declare const NEXUS_THEME_METADATA: unique symbol;
interface NexusPropertyOptions {
label?: string;
tooltip?: string;
readonly?: boolean;
min?: number;
max?: number;
step?: number;
multiline?: boolean;
password?: boolean;
placeholder?: string;
options?: string[] | {
[key: string]: any;
};
validator?: (value: any) => boolean | string;
onChange?: (value: any) => void;
}
/**
* 依赖注入令牌
*/
interface InjectionToken<T = any> {
description?: string;
providedIn?: 'root' | 'plugin' | 'panel';
}
/**
* 依赖提供者
*/
interface Provider<T = any> {
provide: InjectionToken<T> | string;
useClass?: new (...args: any[]) => T;
useValue?: T;
useFactory?: (...args: any[]) => T;
deps?: (InjectionToken<any> | string)[];
multi?: boolean;
}
/**
* 依赖注入容器
*/
declare class DependencyInjector {
private providers;
private instances;
private resolving;
/**
* 注册提供者
*/
register<T>(provider: Provider<T>): void;
/**
* 解析依赖
*/
resolve<T>(token: InjectionToken<T> | string): T;
/**
* 获取令牌描述
*/
private getTokenDescription;
/**
* 清空容器
*/
clear(): void;
}
/**
* 版本比较工具
*/
declare class VersionComparator {
/**
* 解析版本字符串
*/
static parseVersion(version: string): NexusVersion;
/**
* 比较版本
* @returns -1 if a < b, 0 if a == b, 1 if a > b
*/
static compareVersions(a: string | NexusVersion, b: string | NexusVersion): number;
/**
* 检查版本是否兼容
*/
static isCompatible(required: string, actual: string): boolean;
/**
* 获取版本范围内的最新版本
*/
static getLatestCompatibleVersion(required: string, availableVersions: string[]): string | null;
}
/**
* 依赖解析结果
*/
interface DependencyResolutionResult {
resolved: Map<string, {
version: string;
instance?: any;
}>;
missing: string[];
incompatible: Array<{
name: string;
required: string;
actual: string;
}>;
circular: string[];
}
/**
* Nexus依赖管理器
*/
declare class NexusDependencyManager {
private static instance;
private registeredDependencies;
private dependencyGraph;
private injector;
private loadOrder;
private constructor();
static getInstance(): NexusDependencyManager;
/**
* 注册核心依赖
*/
private registerCoreDependencies;
/**
* 注册依赖
*/
registerDependency(name: string, version: string, instance?: any): void;
/**
* 注册依赖图
*/
registerDependencyGraph(pluginName: string, dependencies: NexusDependency[]): void;
/**
* 解析依赖
*/
resolveDependencies(pluginName: string): DependencyResolutionResult;
/**
* 计算加载顺序
*/
calculateLoadOrder(plugins: string[]): string[];
/**
* 获取依赖实例
*/
getDependency<T>(name: string): T | undefined;
/**
* 注入依赖
*/
inject<T>(token: InjectionToken<T> | string): T;
/**
* 注册提供者
*/
registerProvider<T>(provider: Provider<T>): void;
/**
* 获取依赖图
*/
getDependencyGraph(): Map<string, NexusDependency[]>;
/**
* 获取已注册的依赖
*/
getRegisteredDependencies(): Map<string, {
version: string;
instance?: any;
}>;
/**
* 检查依赖健康状态
*/
checkDependencyHealth(): {
healthy: boolean;
issues: Array<{
type: 'missing' | 'incompatible' | 'circular';
plugin: string;
dependency?: string;
message: string;
}>;
};
/**
* 获取依赖统计
*/
getDependencyStats(): {
totalDependencies: number;
totalPlugins: number;
averageDependenciesPerPlugin: number;
mostDependentPlugin: {
name: string;
count: number;
};
circularDependencies: number;
};
/**
* 导出依赖图
*/
exportDependencyGraph(): string;
/**
* 导入依赖图
*/
importDependencyGraph(graphJson: string): void;
/**
* 清空依赖管理器
*/
clear(): void;
}
declare function Injectable(token?: string): ClassDecorator;
declare function Inject(token: string | InjectionToken): ParameterDecorator;
declare const DependencyManager: NexusDependencyManager;
/**
* @fileoverview Nexus错误管理系统 - 智能错误处理和恢复机制
* @description 提供完整的错误处理功能,包含错误分类、智能恢复、插件沙盒等
*
* @author ESEngine Team
* @version 2.1.0
* @since 1.0.0
* @license MIT
*
* @example
* ```typescript
* const errorManager = NexusErrorManager.getInstance();
*
* // 创建插件沙盒
* const sandbox = errorManager.createPluginSandbox('my-plugin');
*
* // 安全执行代码
* sandbox.execute(() => {
* // 可能出错的代码
* });
*
* // 注册恢复策略
* errorManager.registerRecoveryStrategy('TypeError', new TypeErrorRecoveryStrategy());
* ```
*/
/**
* 错误级别枚举
*
* @description 定义错误的严重程度级别,从低到高依次为:DEBUG < INFO < WARN < ERROR < FATAL
* @enum {string}
* @since 1.0.0
*/
declare enum ErrorLevel {
/** 调试信息 - 仅在开发环境显示 */
DEBUG = "debug",
/** 一般信息 - 正常运行日志 */
INFO = "info",
/** 警告信息 - 需要注意但不影响运行 */
WARN = "warn",
/** 错误信息 - 影响功能但可恢复 */
ERROR = "error",
/** 致命错误 - 导致系统崩溃 */
FATAL = "fatal"
}
/**
* 插件状态枚举
*
* @description 定义插件的运行状态
* @enum {string}
* @since 2.1.0
*/
declare enum PluginState {
/** 未知状态 */
UNKNOWN = "unknown",
/** 正在加载 */
LOADING = "loading",
/** 已加载 */
LOADED = "loaded",
/** 运行中 */
RUNNING = "running",
/** 出现错误 */
ERROR = "error",
/** 已隔离 */
QUARANTINED = "quarantined",
/** 恢复中 */
RECOVERING = "recovering"
}
/**
* 错误分类枚举
*
* @description 定义错误的分类类型
* @enum {string}
* @since 2.1.0
*/
declare enum ErrorCategory {
/** 类型错误 */
TYPE_ERROR = "TYPE_ERROR",
/** 引用错误 */
REFERENCE_ERROR = "REFERENCE_ERROR",
/** 依赖错误 */
DEPENDENCY_ERROR = "DEPENDENCY_ERROR",
/** 权限错误 */
PERMISSION_ERROR = "PERMISSION_ERROR",
/** 网络错误 */
NETWORK_ERROR = "NETWORK_ERROR",
/** 语法错误 */
SYNTAX_ERROR = "SYNTAX_ERROR",
/** 运行时错误 */
RUNTIME_ERROR = "RUNTIME_ERROR",
/** 资源错误 */
RESOURCE_ERROR = "RESOURCE_ERROR",
/** 未知错误 */
UNKNOWN_ERROR = "UNKNOWN_ERROR"
}
/**
* 错误上下文接口
*
* @description 提供错误发生时的详细上下文信息
* @interface ErrorContext
* @since 1.0.0
*/
interface ErrorContext {
/** 插件名称 */
pluginName?: string;
/** 面板名称 */
panelName?: string;
/** 组件名称 */
componentName?: string;
/** 方法名称 */
methodName?: string;
/** 时间戳 */
timestamp: number;
/** 用户代理 */
userAgent?: string;
/** 页面URL */
url?: string;
/** 用户ID */
userId?: string;
/** 会话ID */
sessionId?: string;
/** 额外信息 */
additionalInfo?: any;
/** 错误分类 */
category?: ErrorCategory;
/** 是否可恢复 */
recoverable?: boolean;
}
/**
* 错误恢复策略接口
*
* @description 定义错误恢复策略的标准接口
* @interface RecoveryStrategy
* @since 2.1.0
*/
interface RecoveryStrategy {
/**
* 检查是否可以恢复指定错误
*
* @param error 错误对象
* @param context 错误上下文
* @returns 是否可以恢复
*/
canRecover(error: any, context: ErrorContext): boolean;
/**
* 执行错误恢复
*
* @param error 错误对象
* @param context 错误上下文
* @param pluginState 插件状态
* @returns 恢复结果
*/
recover(error: any, context: ErrorContext, pluginState: PluginState): Promise<boolean>;
/**
* 获取策略描述
*
* @returns 策略描述
*/
getDescription(): string;
}
/**
* 错误监听器类型
*
* @description 错误事件监听器函数类型
* @since 1.0.0
*/
interface ErrorListener {
(error: NexusError, context: ErrorContext): void;
}
/**
* 插件沙盒
*/
declare class PluginSandbox {
private pluginName;
private errorManager;
private isolateErrors;
private maxRetries;
private currentRetries;
private isQuarantined;
constructor(pluginName: string, errorManager: NexusErrorManager, isolateErrors?: boolean, maxRetries?: number);
/**
* 在沙盒中执行函数
*/
execute<T>(fn: () => T, context?: Partial<ErrorContext>): T | null;
/**
* 在沙盒中执行异步函数
*/
executeAsync<T>(fn: () => Promise<T>, context?: Partial<ErrorContext>): Promise<T | null>;
/**
* 处理错误
*/
private handleError;
/**
* 隔离插件
*/
private quarantine;
/**
* 重置沙盒状态
*/
reset(): void;
/**
* 获取沙盒状态
*/
getStatus(): {
isQuarantined: boolean;
currentRetries: number;
maxRetries: number;
};
}
/**
* Nexus错误管理器
*/
declare class NexusErrorManager {
private static instance;
private errorHandlers;
private errorListeners;
private errorHistory;
private sandboxes;
private maxHistorySize;
private globalErrorHandlingEnabled;
private constructor();
static getInstance(): NexusErrorManager;
/**
* 设置全局错误处理
*/
private setupGlobalErrorHandling;
/**
* 处理全局错误
*/
private handleGlobalError;
/**
* 注册错误处理器
*/
registerErrorHandler(name: string, handler: NexusErrorHandler): void;
/**
* 注销错误处理器
*/
unregisterErrorHandler(name: string): void;
/**
* 添加错误监听器
*/
addErrorListener(listener: ErrorListener): void;
/**
* 移除错误监听器
*/
removeErrorListener(listener: ErrorListener): void;
/**
* 创建插件沙盒
*/
createPluginSandbox(pluginName: string, isolateErrors?: boolean, maxRetries?: number): PluginSandbox;
/**
* 获取插件沙盒
*/
getPluginSandbox(pluginName: string): PluginSandbox | undefined;
/**
* 报告错误
*/
reportError(error: NexusError, context: ErrorContext): void;
/**
* 添加到历史记录
*/
private addToHistory;
/**
* 调用错误处理器
*/
private invokeErrorHandlers;
/**
* 通知监听器
*/
private notifyListeners;
/**
* 记录错误日志
*/
private logError;
/**
* 获取日志级别
*/
private getLogLevel;
/**
* 格式化日志消息
*/
private formatLogMessage;
/**
* 通知插件被隔离
*/
notifyPluginQuarantined(pluginName: string): void;
/**
* 获取错误历史
*/
getErrorHistory(): Array<{
error: NexusError;
context: ErrorContext;
}>;
/**
* 清空错误历史
*/
clearErrorHistory(): void;
/**
* 获取错误统计
*/
getErrorStats(): {
totalErrors: number;
errorsBySource: Map<string, number>;
errorsByCode: Map<string, number>;
recentErrors: number;
};
/**
* 启用/禁用全局错误处理
*/
setGlobalErrorHandling(enabled: boolean): void;
/**
* 获取所有沙盒状态
*/
getSandboxStatuses(): Map<string, any>;
/**
* 重置所有沙盒
*/
resetAllSandboxes(): void;
/**
* 销毁错误管理器
*/
destroy(): void;
}
/**
* 默认错误处理器
*/
declare class DefaultErrorHandler implements NexusErrorHandler {
handle(error: NexusError): void;
canRecover(error: NexusError): boolean;
recover(error: NexusError): Promise<boolean>;
}
declare const ErrorManager: NexusErrorManager;
/**
* Nexus主题管理器
* 负责主题注册、切换、CSS变量管理等
*/
declare class NexusThemeManager {
private static instance;
private themes;
private currentTheme;
private cssVariables;
private styleElement;
private constructor();
static getInstance(): NexusThemeManager;
/**
* 初始化默认主题
*/
private initializeDefaultThemes;
/**
* 创建样式元素
*/
private createStyleElement;
/**
* 注册主题
*/
registerTheme(name: string, theme: NexusTheme): void;
/**
* 获取主题
*/
getTheme(name: string): NexusTheme | undefined;
/**
* 获取当前主题
*/
getCurrentTheme(): NexusTheme | undefined;
/**
* 获取所有主题名称
*/
getThemeNames(): string[];
/**
* 切换主题
*/
setTheme(name: string): boolean;
/**
* 更新CSS变量
*/
private updateCSSVariables;
/**
* 生成CSS变量
*/
private generateCSSVariables;
/**
* 将驼峰命名转换为kebab-case
*/
private kebabCase;
/**
* 触发主题变更事件
*/
private dispatchThemeChangeEvent;
/**
* 获取CSS变量值
*/
getCSSVariable(name: string): string;
/**
* 设置CSS变量
*/
setCSSVariable(name: string, value: string): void;
/**
* 获取主题变量
*/
getThemeVariables(themeName?: string): NexusThemeVariables;
/**
* 重置为默认主题
*/
resetToDefault(): void;
/**
* 销毁主题管理器
*/
destroy(): void;
}
declare const ThemeManager: NexusThemeManager;
/**
* Nexus插件基类
*
* @description 提供插件开发的核心功能,包括:
* - 插件生命周期管理
* - 错误处理和插件沙盒
* - 主题系统集成
* - 依赖管理
* - 自动注册和安装
*
* @public
* @abstract
* @since 1.0.0
* @version 2.0.0
*
* @example
* ```typescript
* @Plugin({
* name: 'example-plugin',
* version: '1.0.0'
* })
* class ExamplePlugin extends NexusPlugin {
* public onLoad(): void {
* console.log('插件加载完成');
* }
*
* public onUnload(): void {
* console.log('插件卸载');
* }
* }
* ```
*
* @see {@link NexusPluginConfig} 插件配置接口
* @see {@link NexusExtension} 扩展管理器
*/
declare abstract class NexusPlugin {
/**
* 插件配置对象
*
* @description 包含插件的基本信息和配置选项,在插件实例化时传入。
* 配置内容包括插件名称、版本、依赖关系、主题设置等。
*
* @protected
* @readonly
* @since 1.0.0
*
* @example
* ```typescript
* const config: NexusPluginConfig = {
* name: 'my-plugin',
* version: '1.0.0',
* dependencies: ['other-plugin']
* };
* ```
*/
protected readonly config: NexusPluginConfig;
/**
* 主题管理器实例
*
* @description 用于管理插件的主题样式,支持动态主题切换
* @protected
* @readonly
* @since 1.0.0
*/
protected readonly themeManager: NexusThemeManager;
/**
* 错误管理器实例
*
* @description 用于处理插件运行过程中的错误,提供错误隔离和恢复机制
* @protected
* @readonly
* @since 1.0.0
*/
protected readonly errorManager: NexusErrorManager;
/**
* 依赖管理器实例
*
* @description 用于管理插件间的依赖关系,确保正确的加载顺序
* @protected
* @readonly
* @since 1.0.0
*/
protected readonly dependencyManager: NexusDependencyManager;
/**
* 插件沙盒实例
*
* @description 提供插件运行的隔离环境,防止错误影响其他插件
* @protected
* @readonly
* @since 2.0.0
*/
protected readonly sandbox: PluginSandbox;
/**
* 插件初始化状态
*
* @description 标识插件是否已经初始化完成
* @protected
* @since 1.0.0
*/
protected isInitialized: boolean;
/**
* 构造函数
*
* @description 初始化插件实例,创建沙盒环境并注册依赖
* @param config 插件配置对象
*
* @since 1.0.0
* @version 2.0.0
*/
constructor(config: NexusPluginConfig);
/**
* 初始化主题
*
* @description 根据插件配置初始化主题,支持字符串主题名称或自定义主题对象
* @protected
* @since 2.0.0
*/
protected initializeTheme(): void;
/**
* 注册依赖
*
* @description 将插件及其依赖关系注册到依赖管理器中
* @protected
* @since 2.0.0
*/
protected registerDependencies(): void;
/**
* 插件加载时调用
*
* @description 插件加载时的生命周期方法,子类必须实现。
* 在此方法中进行插件的初始化工作,如注册面板、菜单项等。
*
* @public
* @abstract
* @since 1.0.0
*
* @example
* ```typescript
* public onLoad(): void {
* console.log('插件加载完成');
* this.registerPanel('my-panel', new MyPanel());
* }
* ```
*/
abstract onLoad(): void;
/**
* 插件卸载时调用
*
* @description 插件卸载时的生命周期方法,子类必须实现。
* 在此方法中进行插件的清理工作,如注销面板、清理资源等。
*
* @public
* @abstract
* @since 1.0.0
*
* @example
* ```typescript
* public onUnload(): void {
* console.log('插件卸载');
* this.clearAllPanels();
* }
* ```
*/
abstract onUnload(): void;
/**
* 获取插件配置
*
* @description 返回插件的配置对象,包含插件的元数据和设置
* @returns 插件配置对象
* @public
* @since 1.0.0
*/
getConfig(): NexusPluginConfig;
/**
* 获取插件名称
*
* @description 返回插件的唯一标识符
* @returns 插件名称字符串
* @public
* @since 1.0.0
*/
getName(): string;
/**
* 获取插件版本
*
* @description 返回插件的版本号,遵循语义化版本规范
* @returns 插件版本字符串
* @public
* @since 1.0.0
*/
getVersion(): string;
/**
* 安全加载插件
*
* @description 在错误隔离的沙盒环境中加载插件,确保插件错误不会影响框架稳定性。
* 如果插件加载失败,会记录错误信息并尝试恢复。
*
* @public
* @returns {boolean} 加载成功返回true,失败返回false
*
* @throws {NexusError} 当插件配置无效时抛出
*
* @example
* ```typescript
* const plugin = new MyPlugin(config);
* if (plugin.safeLoad()) {
* console.log('插件加载成功');
* } else {
* console.error('插件加载失败');
* }
* ```
*
* @since 2.0.0
* @version 2.0.0
*/
safeLoad(): boolean;
/**
* 安全卸载插件
*
* @description 在错误隔离的沙盒环境中卸载插件,确保卸载过程不会影响其他插件。
* 如果卸载失败,会记录错误信息并尝试强制清理。
*
* @public
* @returns {boolean} 卸载成功返回true,失败返回false
*
* @example
* ```typescript
* if (plugin.safeUnload()) {
* console.log('插件卸载成功');
* } else {
* console.error('插件卸载失败');
* }
* ```
*
* @since 2.0.0
* @version 2.0.0
*/
safeUnload(): boolean;
/**
* 获取插件状态
*
* @description 返回插件的详细状态信息,包括初始化状态、沙盒状态、主题状态和依赖状态
* @returns 插件状态对象
* @public
* @since 2.0.0
*
* @example
* ```typescript
* const status = plugin.getStatus();
* console.log(`插件 ${status.name} 状态:`, status);
* ```
*/
getStatus(): {
name: string;
version: string;
initialized: boolean;
sandboxStatus: any;
themeApplied: boolean;
dependenciesResolved: boolean;
};
/**
* 自动注册插件到Nexus系统
*
* @description 将插件实例自动注册到Nexus扩展系统中,无需手动调用。
* 这是框架的核心功能之一,实现了插件的自动发现和注册机制。
*
* @public
* @since 2.0.0
*
* @example
* ```typescript
* const plugin = new MyPlugin(config);
* plugin.autoRegister(); // 自动注册到系统
* ```
*/
autoRegister(): void;
/**
* 自动生成并安装到Cocos Creator
*
* @description 一键生成所有必要的文件和配置,包括main.ts、package.json、面板文件等。
* 这是框架的终极功能,实现了从插件代码到Cocos Creator扩展的完全自动化。
*
* @public
* @returns 安装结果对象,包含成功状态、生成的文件列表和消息
* @since 2.0.0
*
* @example
* ```typescript
* const plugin = new MyPlugin(config);
* const result = plugin.autoInstall();
* if (result.success) {
* console.log('插件安装成功');
* console.log('生成的文件:', result.files);
* } else {
* console.error('插件安装失败:', result.message);
* }
* ```
*/
autoInstall(): {
success: boolean;
files: {
[path: string]: string;
};
message: string;
};
}
/**
* 插件装饰器
*
* @description 用于标记类为Nexus插件的装饰器,将插件配置信息附加到类的元数据中。
* 框架会在运行时读取这些元数据来管理插件的生命周期。
*
* @param config 插件配置对象
* @returns 装饰器函数
*
* @public
* @decorator
* @since 1.0.0
*
* @example
* ```typescript
* @Plugin({
* name: 'my-plugin',
* version: '1.0.0',
* description: '我的第一个插件'
* })
* class MyPlugin extends NexusPlugin {
* public onLoad(): void {
* console.log('插件加载完成');
* }
*
* public onUnload(): void {
* console.log('插件卸载');
* }
* }
* ```
*/
declare function Plugin(config: NexusPluginConfig): <T extends {
new (...args: any[]): NexusPlugin;
}>(constructor: T) => T;
/**
* @fileoverview Cocos Creator 扩展配置生成器
* @description 自动生成符合 Cocos Creator 标准的扩展配置,提供完整的集成支持
*
* @author ESEngine Team
* @version 2.1.0
* @since 2.1.0
* @license MIT
*
* @example
* ```typescript
* const generator = new CocosExtensionGenerator();
*
* // 生成扩展配置
* const config = generator.generateExtensionConfig(pluginInstance);
*
* // 写入配置文件
* generator.writeExtensionFiles('./extensions/my-extension', config);
* ```
*/
/**
* 增强的插件配置接口
*
* @description 符合 Cocos Creator 扩展标准的完整配置接口
* @interface EnhancedNexusPluginConfig
* @since 2.1.0
*/
interface EnhancedNexusPluginConfig {
/** 插件名称 */
name: string;
/** 插件版本 */
version: string;
/** 插件描述 */
description?: string;
/** 作者信息 */
author?: string;
/** 显示名称 */
displayName?: string;
/** 扩展图标路径 */
icon?: string;
/** 主入口文件 */
main?: string;
/** 支持的 Cocos Creator 版本 */
engines?: {
'cocos-creator': string;
};
/** 依赖列表 */
dependencies?: string[];
/** 面板配置 */
panels?: {
[key: string]: {
title: string;
type?: 'dockable' | 'simple';
main?: string;
icon?: string;
dockable?: boolean;
resizable?: boolean;
minWidth?: number;
minHeight?: number;
width?: number;
height?: number;
};
};
/** 菜单配置 */
menu?: Array<{
path: string;
label: string;
message: string;
group?: string;
order?: number;
}>;
/** 快捷键配置 */
shortcuts?: Array<{
message: string;
when: string;
win: string;
mac: string;
}>;
/** 扩展贡献配置 */
contributions?: {
profile?: {
editor?: {
label: string;
icon?: string;
};
project?: {
label: string;
icon?: string;
};
};
menu?: Array<{
path: string;
label: string;
message: string;
group?: string;
order?: number;
}>;
messages?: {
[key: string]: {
methods: string[];
public?: boolean;
doc?: string;
};
};
shortcuts?: Array<{
message: string;
when: string;
win: string;
mac: string;
}>;
panels?: {
[key: string]: {
title: string;
type: 'dockable' | 'simple';
main: string;
icon?: string;
flags?: {
resizable?: boolean;
save_layout?: boolean;
};
size?: {
'min-width'?: number;
'min-height'?: number;
width?: number;
height?: number;
};
};
};
};
}
/**
* Cocos Creator 扩展配置接口
*
* @description 标准的 Cocos Creator 扩展配置格式
* @interface CocosExtensionConfig
* @since 2.1.0
*/
interface CocosExtensionConfig {
/** 扩展名称 */
name: string;
/** 扩展版本 */
version: string;
/** 扩展描述 */
description: string;
/** 作者信息 */
author: string;
/** 主入口文件 */
main: string;
/** 扩展贡献 */
contributions: {
profile?: {
editor?: {
label: string;
icon?: string;
};
project?: {
label: string;
icon?: string;
};
};
menu?: Array<{
path: string;
label: string;
message: string;
group?: string;
order?: number;
}>;
messages?: {
[key: string]: {
methods: string[];
public?: boolean;
doc?: string;
};
};
shortcuts?: Array<{
message: string;
when: string;
win: string;
mac: string;
}>;
panels?: {
[key: string]: {
title: string;
type: 'dockable' | 'simple';
main: string;
icon?: string;
flags?: {
resizable?: boolean;
save_layout?: boolean;
};
size?: {
'min-width'?: number;
'min-height'?: number;
width?: number;
height?: number;
};
};
};
};
/** 支持的引擎版本 */
engines: {
'cocos-creator': string;
};
/** 依赖项 */
dependencies?: {
[key: string]: string;
};
/** Nexus 特定配置 */
nexus?: {
generated: boolean;
timestamp: string;
version: string;
};
}
/**
* Cocos Creator 扩展配置生成器
*
* @description 自动生成符合 Cocos Creator 标准的扩展配置和文件结构
* 支持以下功能:
* - 自动生成 package.json 配置
* - 创建标准的文件结构
* - 生成面板和消息配置
* - 支持菜单和快捷键集成
* - 提供完整的开发工具支持
*
* @class CocosExtensionGenerator
* @since 2.1.0
*
* @example
* ```typescript
* const generator = new CocosExtensionGenerator();
*
* // 从插件实例生成配置
* const plugin = new MyPlugin();
* const config = generator.generateFromPlugin(plugin);
*
* // 写入扩展文件
* await generator.writeExtensionFiles('./extensions/my-extension', config);
*
* // 验证配置
* const validation = generator.validateConfig(config);
* if (validation.valid) {
* console.log('配置验证通过');
* }
* ```
*/
declare class CocosExtensionGenerator {
private readonly TEMPLATE_VERSION;
private readonly DEFAULT_COCOS_VERSION;
/**
* 构造函数
*
* @since 2.1.0
*/
constructor();
/**
* 从插件实例生成扩展配置
*
* @param plugin 插件实例
* @returns 生成的扩展配置
*
* @public
* @since 2.1.0
*/
generateFromPlugin(plugin: NexusPlugin): CocosExtensionConfig;
/**
* 生成完整的扩展配置
*
* @param config 插件配置
* @returns 扩展配置对象
*
* @public
* @since 2.1.0
*/
generateExtensionConfig(config: EnhancedNexusPluginConfig): CocosExtensionConfig;
/**
* 生成扩展配置文件
*
* @param config 扩展配置
* @returns JSON 字符串
*
* @public
* @since 2.1.0
*/
generatePackageJson(config: CocosExtensionConfig): string;
/**
* 生成主入口文件
*
* @param config 扩展配置
* @returns 主文件内容
*
* @public
* @since 2.1.0
*/
generateMainFile(config: CocosExtensionConfig): string;
/**
* 生成面板文件
*
* @param panelName 面板名称
* @param panelConfig 面板配置
* @returns 面板文件内容
*
* @public
* @since 2.1.0
*/
generatePanelFile(panelName: string, panelConfig: any): string;
/**
* 写入扩展文件到指定目录
*
* @param outputDir 输出目录
* @param config 扩展配置
* @returns 写入结果
*
* @public
* @since 2.1.0
*/
writeExtensionFiles(outputDir: string, config: CocosExtensionConfig): Promise<{
success: boolean;
files: string[];
errors: string[];
}>;
/**
* 验证扩展配置
*
* @param config 扩展配置
* @returns 验证结果
*
* @public
* @since 2.1.0
*/
validateConfig(config: CocosExtensionConfig): {
valid: boolean;
errors: string[];
warnings: string[];
};
/**
* 规范化扩展名称
*
* @private
* @param name 原始名称
* @returns 规范化后的名称
*/
private sanitizeName;
/**
* 生成Profile贡献
*
* @private
* @param config 插件配置
* @returns Profile贡献配置
*/
private generateProfileContributions;
/**
* 生成菜单贡献
*
* @private
* @param config 插件配置
* @returns 菜单贡献配置
*/
private generateMenuContributions;
/**
* 生成消息贡献
*
* @private
* @param config 插件配置
* @returns 消息贡献配置
*/
private generateMessageContributions;
/**
* 生成面板贡献
*
* @private
* @param config 插件配置
* @returns 面板贡献配置
*/
private generatePanelContributions;
/**
* 生成快捷键贡献
*
* @private
* @param config 插件配置
* @returns 快捷键贡献配置
*/
private generateShortcutContributions;
/**
* 生成依赖项
*
* @private
* @param config 插件配置
* @returns 依赖项配置
*/
private generateDependencies;
/**
* 生成面板方法
*
* @private
* @param config 扩展配置
* @returns 面板方法代码
*/
private generatePanelMethods;
/**
* 生成消息方法
*
* @private
* @param config 扩展配置
* @returns 消息方法代码
*/
private generateMessageMethods;
/**
* 生成 README 内容
*
* @private
* @param config 扩展配置
* @returns README 内容
*/
private generateReadme;
/**
* 创建默认图标
*
* @private
* @param iconPath 图标路径
*/
private createDefaultIcon;
/**
* 首字母大写
*
* @private
* @param str 字符串
* @returns 首字母大写的字符串
*/
private capitalize;
}
declare const ExtensionGenerator: CocosExtensionGenerator;
/**
* @fileoverview Nexus自动文件监听器 - 高性能零配置文件监听系统
* @description 提供高性能的文件监听功能,包含防抖机制、智能过滤、性能监控和内存优化
*
* @author ESEngine Team
* @version 2.1.0
* @since 1.0.0
* @license MIT
*
* @example
* ```typescript
* const watcher = NexusAutoWatcher.getInstance();
* watcher.start();
*
* // 获取性能指标
* const metrics = watcher.getPerformanceMetrics();
* console.log('监听性能:', metrics);
*
* // 自定义过滤规则
* watcher.addFilterRule(/\.test\.ts$/, 'exclude', 10);
* ```
*/
/**
* 自动监听器配置接口
*
* @interface AutoWatcherConfig
* @since 1.0.0
*/
interface AutoWatcherConfig {
/** 是否启用监听 */
enabled: boolean;
/** 防抖延迟时间(毫秒) */
debounceTime: number;
/** 是否自动启动 */
autoStart: boolean;
/** 最大监听文件数量 */
maxFiles?: number;
/** 内存使用阈值(MB) */
memoryThreshold?: number;
}
/**
* 文件过滤规则接口
*
* @interface FilterRule
* @since 2.1.0
*/
interface FilterRule {
/** 匹配模式(正则表达式) */
pattern: RegExp;
/** 过滤动作 */
action: 'include' | 'exclude';
/** 优先级(数字越大优先级越高) */
priority: number;
/** 规则描述 */
description?: string;
}
/**
* 性能监控指标接口
*
* @interface PerformanceMetrics
* @since 2.1.0
*/
interface PerformanceMetrics$1 {
/** 监听触发次数 */
watchCount: number;
/** 文件处理次数 */
processCount: number;
/** 过滤掉的文件数 */
filteredCount: number;
/** 平均响应时间(毫秒) */
averageResponseTime: number;
/** 最后触发时间 */
lastTriggerTime: number;
/** 内存使用量(MB) */
memoryUsage: number;
/** 监听的目录数 */
watchedDirectories: number;
/** 缓存命中率 */
cacheHitRate: number;
}
/**
* 智能文件过滤器
*
* @description 提供基于规则的文件过滤功能,支持自定义过滤条件和优先级
* @class SmartFileFilter
* @since 2.1.0
*/
declare class SmartFileFilter {
private filterRules;
private cache;
private cacheHits;
private cacheTotal;
/**
* 构造函数,初始化默认过滤规则
*
* @since 2.1.0
*/
constructor();
/**
* 初始化默认过滤规则
*
* @private
* @since 2.1.0
*/
private initializeDefaultRules;
/**
* 添加过滤规则
*
* @param pattern 正则表达式模式
* @param action 动作类型
* @param priority 优先级(数字越大优先级越高)
* @param description 规则描述
*
* @since 2.1.0
*/
addRule(pattern: RegExp, action: 'include' | 'exclude', priority?: number, description?: string): void;
/**
* 移除过滤规则
*
* @param pattern 要移除的规则模式
* @returns 是否成功移除
*
* @since 2.1.0
*/
removeRule(pattern: RegExp): boolean;
/**
* 检查文件是否应该被处理
*
* @param filePath 文件路径
* @returns 是否应该处理
*
* @since 2.1.0
*/
shouldProcess(filePath: string): boolean;
/**
* 获取缓存命中率
*
* @returns 缓存命中率 (0-1)
*
* @since 2.1.0
*/
getCacheHitRate(): number;
/**
* 清理缓存
*
* @since 2.1.0
*/
clearCache(): void;
/**
* 获取所有过滤规则
*
* @returns 过滤规则数组
*
* @since 2.1.0
*/
getRules(): FilterRule[];
}
/**
* Nexus自动文件监听器
*
* @description 提供高性能的零配置文件监听功能,包含:
* - 防抖机制和性能优化
* - 智能文件过滤系统
* - 内存管理和监控
* - 详细的性能指标
*
* @class NexusAutoWatcher
* @since 1.0.0
* @version 2.1.0
*
* @example
* ```typescript
* const watcher = NexusAutoWatcher.getInstance();
*
* // 启动监听
* watcher.start();
*
* // 添加自定义过滤规则
* watcher.addFilterRule(/\.spec\.ts$/, 'exclude', 120);
*
* // 获取性能指标
* const metrics = watcher.getPerformanceMetrics();
* console.log('平均响应时间:', metrics.averageResponseTime);
*
* // 停止监听
* watcher.stop();
* ```
*/
declare class NexusAutoWatcher {
private static instance;
private watchers;
private debounceTimers;
private isWatching;
private fileFilter;
private performanceMetrics;
private processingQueue;
/** 自动监听器配置 */
private config;
/**
* 私有构造函数(单例模式)
*
* @private
* @since 1.0.0
*/
private constructor();
/**
* 获取单例实例
*
* @returns NexusAutoWatcher实例
* @since 1.0.0
*/
static getInstance(): NexusAutoWatcher;
/**
* 初始化性能指标
*
* @private
* @returns 初始化的性能指标
* @since 2.1.0
*/
private initializeMetrics;
/**
* 设置内存监控
*
* @private
* @since 2.1.0
*/
private setupMemoryMonitoring;
/**
* 执行内存优化
*
* @private
* @since 2.1.0
*/
private performMemoryOptimization;
/**
* 启动自动监听
*
* @description 在错误隔离环境中启动文件监听,确保监听器错误不会影响主程序
* @public
* @since 1.0.0
*/
start(): void;
/**
* 停止监听
*
* @description 停止所有文件监听并清理资源
* @public
* @since 1.0.0
*/
stop(): void;
/**
* 查找源代码目录
*
* @private
* @returns 源代码目录路径或null
* @since 1.0.0
*/
private findSourceDirectory;
/**
* 监听目录
*
* @private
* @param dirPath 目录路径
* @since 1.0.0
*/
private watchDirectory;
/**
* 处理文件变化
*
* @private
* @param filePath 文件路径
* @param eventType 事件类型
* @since 1.0.0
*/
private handleFileChange;
/**
* 处理文件变化(防抖后)
*
* @private
* @param filePath 文件路径
* @param eventType 事件类型
* @param startTime 开始时间
* @since 1.0.0
*/
private processFileChange;
/**
* 更新性能指标
*
* @private
* @param responseTime 响应时间
* @since 2.1.0
*/
private updatePerformanceMetrics;
/**
* 检查是否是Nexus文件
*
* @private
* @param content 文件内容
* @returns 是否是Nexus文件
* @since 1.0.0
*/
private isNexusFile;
/**
* 重新生成插件
*
* @private
* @param filePath 文件路径
* @param content 文件内容
* @since 1.0.0
*/
private regeneratePlugin;
/**
* 提取插件名称
*
* @private
* @param content 文件内容
* @returns 插件名称或null
* @since 1.0.0
*/
private extractPluginName;
/**
* 获取输出目录
*
* @private
* @returns 输出目录路径或null
* @since 1.0.0
*/
private getOutputDirectory;
/**
* 生成主文件内容
*
* @private
* @param sourceContent 源文件内容
* @returns 生成的主文件内容
* @since 1.0.0
*/
private generateMainFile;
/**
* 生成package.json内容
*
* @private
* @param pluginName 插件名称
* @returns 生成的package.json内容
* @since 1.0.0
*/
private generatePackageJson;
/**
* 清理所有定时器
*
* @private
* @since 1.0.0
*/
private clearAllTimers;
/**
* 添加文件过滤规则
*
* @param pattern 正则表达式模式
* @param action 过滤动作
* @param priority 优先级
* @param description 规则描述
*
* @public
* @since 2.1.0
*/
addFilterRule(pattern: RegExp, action: 'include' | 'exclude', priority?: number, description?: string): void;
/**
* 移除文件过滤规则
*
* @param pattern 要移除的规则模式
* @returns 是否成功移除
*
* @public
* @since 2.1.0
*/
removeFilterRule(pattern: RegExp): boolean;
/**
* 获取监听状态
*
* @returns 监听状态对象
* @since 1.0.0
*/
getStatus(): {
watching: boolean;
watchedDirectories: number;
config: AutoWatcherConfig;
};
/**
* 获取性能监控数据
*
* @returns 性能监控数据
* @since 2.1.0
*/
getPerformanceMetrics(): PerformanceMetrics$1;
/**
* 重置性能监控数据
*
* @since 2.1.0
*/
resetPerformanceMetrics(): void;
/**
* 打印性能报告
*
* @since 2.1.0
*/
printPerformanceReport(): void;
/**
* 更新配置
*
* @param newConfig 新配置
* @since 1.0.0
*/
updateConfig(newConfig: Partial<AutoWatcherConfig>): void;
/**
* 获取所有过滤规则
*
* @returns 过滤规则数组
* @since 2.1.0
*/
getFilterRules(): FilterRule[];
/**
* 清理缓存
*
* @since 2.1.0
*/
clearCache(): void;
}
declare const AutoWatcher: NexusAutoWatcher;
/**
* Nexus面板基类
*
* @description 提供即时模式UI面板开发的核心功能,包括:
* - 即时模式GUI渲染
* - 主题系统集成
* - 错误处理和性能监控
* - 面板生命周期管理
* - 自动注册和配置生成
*
* @public
* @abstract
* @since 1.0.0
* @version 2.0.0
*
* @example
* ```typescript
* @Panel({
* title: '示例面板',
* width: 800,
* height: 600,
* dockable: true
* })
* class ExamplePanel extends NexusPanel {
* private counter = 0;
*
* public onGUI(): void {
* NexusGUI.Label(`计数器: ${this.counter}`);
* if (NexusGUI.Button('增加')) {
* this.counter++;
* this.forceUpdate();
* }
* }
* }
* ```
*
* @see {@link NexusPanelConfig} 面板配置接口
* @see {@link NexusGUI} GUI渲染系统
*/
declare abstract class NexusPanel {
/**
* 面板配置对象
*
* @description 包含面板的基本信息和配置选项,如标题、尺寸、可停靠性等
* @protected
* @readonly
* @since 1.0.0
*/
protected readonly config: NexusPanelConfig;
/**
* 面板DOM容器元素
*
* @description 面板内容渲染的DOM容器,由框架自动管理
* @protected
* @since 1.0.0
*/
protected container: HTMLElement | null;
/**
* 面板可见状态
*
* @description 标识面板当前是否可见
* @protected
* @since 1.0.0
*/
protected isVisible: boolean;
/**
* 主题管理器实例
*
* @description 用于管理面板的主题样式,支持动态主题切换
* @protected
* @readonly
* @since 1.0.0
*/
protected readonly themeManager: NexusThemeManager;
/**
* 错误管理器实例
*
* @description 用于处理面板运行过程中的错误
* @protected
* @readonly
* @since 1.0.0
*/
protected readonly errorManager: NexusErrorManager;
/**
* 渲染次数计数器
*
* @description 记录面板的渲染次数,用于性能监控
* @private
* @since 2.0.0
*/
private renderCount;
/**
* 最后一次渲染耗时
*
* @description 记录最后一次渲染的耗时(毫秒),用于性能监控
* @private
* @since 2.0.0
*/
private lastRenderTime;
/**
* 构造函数
*
* @description 初始化面板实例,应用主题并设置主题监听器
* @param config 面板配置对象
*
* @since 1.0.0
* @version 2.0.0
*/
constructor(config: NexusPanelConfig);
/**
* 应用主题
*
* @description 根据主题名称应用相应的主题样式
* @param themeName 主题名称
* @protected
* @since 2.0.0
*/
protected applyTheme(themeName: string): void;
/**
* 设置主题监听器
*
* @description 监听全局主题变化事件,自动更新面板主题
* @protected
* @since 2.0.0
*/
protected setupThemeListener(): void;
/**
* 处理主题变化
*
* @description 主题变化时的回调函数,强制重新渲染以应用新主题
* @protected
* @since 2.0.0
*/
protected handleThemeChange(): void;
/**
* 面板初始化
*
* @description 面板初始化时调用,带性能监控功能。
* 子类可以重写safeInit方法来实现自定义初始化逻辑。
*
* @public
* @since 1.0.0
* @version 2.0.0
*
* @example
* ```typescript
* public onInit(): void {
* super.onInit();
* // 自定义初始化逻辑
* }
* ```
*/
onInit(): void;
/**
* 安全的初始化方法
*
* @description 在错误处理包装中执行的初始化逻辑,子类可以重写
* @protected
* @since 2.0.0
*
* @example
* ```typescript
* protected safeInit(): void {
* console.log('面板初始化');
* // 自定义初始化逻辑
* }
* ```
*/
protected safeInit(): void;
/**
* 面板GUI渲染方法
*
* @description 面板的即时模式GUI渲染方法,子类必须实现。
* 在此方法中使用NexusGUI的API来构建用户界面。
*
* @public
* @abstract
* @since 1.0.0
*
* @example
* ```typescript
* public onGUI(): void {
* NexusGUI.Label('标题', NexusStyles.Title);
* NexusGUI.Separator();
*
* if (NexusGUI.Button('点击我')) {
* console.log('按钮被点击');
* }
*
* this.inputText = NexusGUI.TextField('输入框', this.inputText);
* }
* ```
*/
abstract onGUI(): void;
/**
* 面板销毁
*
* @description 面板销毁时调用,清理GUI组件和资源。
* 子类可以重写此方法来实现自定义清理逻辑。
*
* @public
* @since 1.0.0
*
* @example
* ```typescript
* public onDestroy(): void {
* super.onDestroy();
* // 自定义清理逻辑
* this.clearData();
* }
* ```
*/
onDestroy(): void;
/**
* 设置容器
*/
setContainer(container: HTMLElement): void;
/**
* 渲染面板 - 基于优化NexusGUI的现代系统,带性能监控
*/
render(): void;
/**
* 强制更新面板 - React系统会自动处理重新渲染
*/
forceUpdate(): void;
/**
* 显示面板
*/
show(): void;
/**
* 隐藏面板
*/
hide(): void;
/**
* 获取面板配置
*/
getConfig(): NexusPanelConfig;
/**
* 获取面板标题
*/
getTitle(): string;
/**
* 是否可见
*/
getVisible(): boolean;
/**
* 自动注册面板到Nexus系统
*/
autoRegister(name?: string): void;
/**
* 自动生成Cocos面板文件
*/
generateCocosPanel(panelName?: string): string;
/**
* 快速显示面板为独立窗口(无需复杂配置)
* @param panelClass 面板类
* @param config 可选配置
*/
static showAsWindow<T extends NexusPanel>(panelClass: new (config: NexusPanelConfig) => T, config?: Partial<NexusPanelConfig>): T;
/**
* 生成窗口HTML内容 - 为React渲染系统优化
*/
private static generateWindowHTML;
}
/**
* 面板装饰器
* @param config 面板配置信息
* @returns 装饰器函数
*/
declare function Panel(config: NexusPanelConfig): <T extends {
new (...args: any[]): NexusPanel;
}>(constructor: T) => T;
/**
* Nexus独立窗口管理器
* 允许直接创建独立窗口,无需依赖Cocos Creator的面板系统
*/
declare class NexusWindow {
private static windows;
private windowElement;
private panel;
private config;
private isVisible;
constructor(panel: NexusPanel, config: NexusPanelConfig);
/**
* 创建并显示独立窗口
*/
static create(panel: NexusPanel, config?: Partial<NexusPanelConfig>): NexusWindow;
/**
* 显示窗口
*/
show(): void;
/**
* 隐藏窗口
*/
hide(): void;
/**
* 关闭窗口
*/
close(): void;
/**
* 创建窗口元素
*/
private createWindowElement;
/**
* 添加拖拽功能
*/
private addDragFunctionality;
/**
* 开始渲染循环
*/
private startRenderLoop;
/**
* 获取所有打开的窗口
*/
static getAllWindows(): NexusWindow[];
/**
* 关闭所有窗口
*/
static closeAll(): void;
}
/**
* Nexus扩展管理器
* 用于集成到Cocos Creator的扩展系统
*/
declare class NexusExtension {
private static instance;
private plugins;
private panels;
static get Instance(): NexusExtension;
/**
* 注册插件
*/
registerPlugin(plugin: NexusPlugin): void;
/**
* 注册面板
*/
registerPanel(name: string, panel: NexusPanel): void;
/**
* 获取插件
*/
getPlugin(name: string): NexusPlugin | undefined;
/**
* 获取面板
*/
getPanel(name: string): NexusPanel | undefined;
/**
* 获取所有插件
*/
getAllPlugins(): NexusPlugin[];
/**
* 获取所有面板
*/
getAllPanels(): NexusPanel[];
/**
* 卸载插件
*/
unregisterPlugin(name: string): void;
/**
* 卸载面板
*/
unregisterPanel(name: string): void;
/**
* 启动扩展系统
*/
static start(): Promise<void>;
/**
* 停止扩展系统
*/
static stop(): Promise<void>;
/**
* 创建标准的Cocos面板定义
* 这是核心功能:将Nexus面板转换为Cocos面板
*/
createCocosPanel(nexusPanel: NexusPanel, panelName: string): any;
/**
* 生成面板样式
*/
private generatePanelStyles;
/**
* 生成Cocos Creator扩展的main.ts
*/
generateMainTs(): string;
/**
* 生成面板文件内容
* 这是关键功能:自动生成符合Cocos标准的面板文件
*/
generatePanelFile(nexusPanel: NexusPanel, panelName: string): string;
/**
* 自动化插件集成
* 这是你需要的核心功能:让插件遵循你的规范
*/
integratePlugin(plugin: NexusPlugin): {
mainTs: string;
panelFiles: Map<string, string>;
packageJson: any;
};
/**
* 生成插件的main.ts文件
*/
private generatePluginMainTs;
/**
* 生成package.json配置
*/
private generatePackageJson;
}
interface NexusMessageHandler {
(data: any): Promise<any> | any;
}
/**
* 消息通信管理器
*/
declare class NexusMessage {
private static handlers;
private static messageId;
private static pendingMessages;
/**
* 发送请求消息到编辑器
* @param message 消息名称
* @param args 消息参数
* @returns Promise<any>
*/
static request(message: string, ...args: any[]): Promise<any>;
/**
* 发送消息到编辑器(不等待响应)
* @param message 消息名称
* @param data 消息数据
*/
static send(message: string, data?: any): void;
/**
* 广播消息到所有面板
* @param message 消息名称
* @param data 消息数据
*/
static broadcast(message: string, data?: any): void;
/**
* 注册消息处理器
* @param message 消息名称
* @param handler 处理函数
*/
static on(message: string, handler: NexusMessageHandler): void;
/**
* 移除消息处理器
* @param message 消息名称
* @param handler 处理函数
*/
static off(message: string, handler?: NexusMessageHandler): void;
/**
* 处理接收到的消息
* @param message 消息名称
* @param data 消息数据
*/
static handle(message: string, data?: any): Promise<any>;
/**
* 场景相关操作
*/
static Sc