yukinovel
Version:
Yukinovel is a simple web visual novel engine.
51 lines (50 loc) • 1.49 kB
TypeScript
import { Game } from '../core/Game.js';
import { PluginManager } from '../core/PluginManager.js';
import { Plugin, PluginMetadata, PluginHooks } from '../types/index.js';
/**
* Helper function để tạo plugin dễ dàng hơn
*/
export declare function createPlugin(options: {
metadata: PluginMetadata;
hooks?: PluginHooks;
initialize?: (game: any, pluginManager: any) => void | Promise<void>;
dispose?: () => void | Promise<void>;
api?: {
[key: string]: any;
};
}): Plugin;
/**
* Decorator để đánh dấu plugin method hooks
*/
export declare function hook(eventType: keyof PluginHooks): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
/**
* Class-based Plugin helper
*/
export declare abstract class PluginBase implements Plugin {
abstract metadata: PluginMetadata;
hooks?: PluginHooks;
api?: {
[key: string]: any;
};
constructor();
private collectHooks;
initialize?(game: Game, pluginManager: PluginManager): Promise<void>;
dispose?(): Promise<void>;
}
/**
* Plugin Registry Builder để quản lý nhiều plugins :v
*/
export declare class PluginRegistryBuilder {
private plugins;
add(plugin: Plugin): this;
addMultiple(plugins: Plugin[]): this;
build(): Plugin[];
registerAll(game: Game): Promise<void>;
}
/**
* Validation helper cho plugin
*/
export declare function validatePlugin(plugin: Plugin): {
valid: boolean;
errors: string[];
};