@yumerijs/core 1.1.0-alpha.1 → 1.1.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,363 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.Core = void 0;
40
+ /**
41
+ * @time: 2025/04/20 11:45
42
+ * @author: FireGuo
43
+ * WindyPear-Team All right reserved
44
+ **/
45
+ const yaml = __importStar(require("js-yaml"));
46
+ const fs = __importStar(require("fs"));
47
+ const path = __importStar(require("path"));
48
+ const config_1 = require("./config");
49
+ const logger_1 = require("./logger");
50
+ const command_1 = require("./command");
51
+ const chokidar_1 = __importDefault(require("chokidar"));
52
+ class Core {
53
+ constructor(pluginLoader) {
54
+ this.plugins = {};
55
+ this.config = null;
56
+ this.platforms = [];
57
+ this.eventListeners = {};
58
+ this.components = {};
59
+ this.commands = {};
60
+ this.logger = new logger_1.Logger('core');
61
+ this.providedComponents = {};
62
+ this.pluginModules = {};
63
+ this.pluginLoader = pluginLoader;
64
+ }
65
+ // 加载配置文件
66
+ async loadConfig(configPath) {
67
+ try {
68
+ const doc = yaml.load(fs.readFileSync(configPath, 'utf8'));
69
+ this.config = doc;
70
+ this.logger.info('Config loaded.');
71
+ }
72
+ catch (e) {
73
+ this.logger.error('Failed to load config:', e);
74
+ throw e; // 抛出异常,让上层处理
75
+ }
76
+ }
77
+ async getPluginConfig(pluginName) {
78
+ // 如果插件名以~开头,则去掉~前缀获取配置
79
+ const actualPluginName = pluginName.startsWith('~') ? pluginName.substring(1) : pluginName;
80
+ if (!this.config.plugins[actualPluginName]) {
81
+ return new config_1.Config(actualPluginName);
82
+ }
83
+ const config = new config_1.Config(actualPluginName, this.config.plugins[actualPluginName]);
84
+ return config;
85
+ }
86
+ // 加载插件
87
+ async loadPlugins() {
88
+ // 检查 plugins 配置是否存在且是对象类型
89
+ if (!this.config || typeof this.config.plugins !== 'object' || this.config.plugins === null) {
90
+ this.logger.info('No plugins configuration found or it is not an object. No plugins to load.');
91
+ return;
92
+ }
93
+ // 获取所有需要加载的插件名,过滤掉以~开头的插件(禁用的插件)
94
+ const pluginNamesToLoad = Object.keys(this.config.plugins).filter(name => !name.startsWith('~'));
95
+ if (pluginNamesToLoad.length === 0) {
96
+ this.logger.info('No enabled plugins found in configuration. All plugins might be disabled or configuration is empty.');
97
+ return;
98
+ }
99
+ // 记录被禁用的插件
100
+ const disabledPlugins = Object.keys(this.config.plugins).filter(name => name.startsWith('~'));
101
+ if (disabledPlugins.length > 0) {
102
+ this.logger.info(`Skipping disabled plugins: ${disabledPlugins.join(', ')}`);
103
+ }
104
+ const loadedPluginNames = [];
105
+ // 使用对象来跟踪尝试加载的插件名
106
+ let loadAttempted = {};
107
+ // 使用插件名数组来管理剩余待加载的插件
108
+ let remainingPluginNames = [...pluginNamesToLoad];
109
+ // 多次尝试加载插件,直到所有插件加载完毕或检测到循环依赖
110
+ while (remainingPluginNames.length > 0) {
111
+ let loadedInThisPass = false;
112
+ // 用于存储下一轮尝试加载的插件名
113
+ const nextRemainingPluginNames = [];
114
+ // 遍历当前剩余待加载的插件名
115
+ for (const pluginName of remainingPluginNames) {
116
+ // 如果插件已经加载或已尝试加载,则跳过
117
+ if (loadedPluginNames.includes(pluginName) || loadAttempted[`${pluginName}`]) {
118
+ continue;
119
+ }
120
+ // 标记该插件已尝试加载
121
+ loadAttempted[`${pluginName}`] = true;
122
+ try {
123
+ this.logger.info(`Attempting to load plugin: ${pluginName}`);
124
+ // 使用插件名加载插件实例和模块
125
+ const pluginInstance = await this.pluginLoader.load(pluginName);
126
+ //const pluginModule = await this.importPluginModule(pluginName);
127
+ if (pluginInstance) {
128
+ const depend = pluginInstance.depend;
129
+ const provide = pluginInstance.provide;
130
+ // 检查依赖是否满足 (此处仍然检查 this.components,请确保 this.components 在此阶段已包含必要的基准组件)
131
+ const unmetDependencies = depend?.filter(dep => !this.components.hasOwnProperty(dep)) || [];
132
+ if (unmetDependencies.length === 0) {
133
+ // 将加载成功并满足依赖的插件存储起来
134
+ this.plugins[`${pluginName}`] = Object.assign(pluginInstance, { depend, provide });
135
+ //this.pluginModules[`${pluginName}`] = pluginModule;
136
+ //this.logger.info(`Plugin ${pluginName} loaded.`);
137
+ loadedPluginNames.push(pluginName);
138
+ loadedInThisPass = true; // 标记本轮有插件加载成功
139
+ if (loadedInThisPass && pluginInstance && pluginInstance.apply) {
140
+ await pluginInstance.apply(this, await this.getPluginConfig(pluginName));
141
+ // 使用 pluginName
142
+ this.pluginLoader.logger.info(`apply plugin ${pluginName}`);
143
+ }
144
+ // 记录该插件提供了哪些组件
145
+ if (provide) {
146
+ for (const componentName of provide) {
147
+ if (this.providedComponents.hasOwnProperty(componentName)) {
148
+ this.logger.error(`Multiple plugins provide the component "${componentName}". Provided by "${this.providedComponents[`${componentName}`]}" and "${pluginName}". Only the first loaded will be active.`);
149
+ }
150
+ else {
151
+ this.providedComponents[`${componentName}`] = pluginName;
152
+ }
153
+ }
154
+ }
155
+ }
156
+ else {
157
+ // 如果存在未满足的依赖,将插件名放回下一轮尝试加载列表
158
+ nextRemainingPluginNames.push(pluginName);
159
+ /*this.logger.warn(
160
+ `Plugin ${pluginName} has unmet dependencies: ${unmetDependencies.join(', ')}. Will try again later.`
161
+ );*/
162
+ }
163
+ }
164
+ else {
165
+ //this.logger.warn(`Plugin "${pluginName}" could not be loaded or its module could not be imported.`);
166
+ }
167
+ }
168
+ catch (err) {
169
+ this.pluginLoader.logger.error(`Failed to load or process plugin ${pluginName}:`, err);
170
+ // 如果加载或处理失败,不将其加入下一轮尝试列表,但也不标记为已加载成功
171
+ }
172
+ }
173
+ // 如果本轮没有插件加载成功,并且剩余插件列表没有变化,则检测到循环或无法解决的依赖
174
+ if (!loadedInThisPass && nextRemainingPluginNames.length === remainingPluginNames.length && remainingPluginNames.length > 0) {
175
+ this.logger.error('Detected circular or unresolvable plugin dependencies. Remaining plugins:', nextRemainingPluginNames.map(name => name) // 映射回插件名
176
+ );
177
+ break; // 防止无限循环
178
+ }
179
+ // 更新剩余待加载插件列表为下一轮的列表
180
+ remainingPluginNames = nextRemainingPluginNames;
181
+ }
182
+ // 警告未加载成功的插件
183
+ if (remainingPluginNames.length > 0) {
184
+ this.logger.warn('Some plugins could not be fully loaded due to unresolved dependencies or errors:', remainingPluginNames.map(name => name) // 映射回插件名
185
+ );
186
+ }
187
+ // 开发环境下监听插件变化
188
+ if (process.env.NODE_ENV === 'development') {
189
+ this.watchPlugins(this);
190
+ }
191
+ }
192
+ /**
193
+ * 监听插件目录,实现热重载
194
+ * @param core Core实例
195
+ * @param pluginsDir 插件目录
196
+ */
197
+ watchPlugins(core, pluginsDir = 'plugins') {
198
+ const logger = new logger_1.Logger('hmr');
199
+ const watcher = chokidar_1.default.watch(pluginsDir, {
200
+ ignored: /(^|[/\\])\../, // 忽略点文件
201
+ persistent: true,
202
+ ignoreInitial: true,
203
+ awaitWriteFinish: {
204
+ stabilityThreshold: 200,
205
+ pollInterval: 100,
206
+ },
207
+ });
208
+ watcher.on('change', async (changePath) => {
209
+ if (!changePath.endsWith('.ts') && !changePath.endsWith('.js'))
210
+ return;
211
+ const parts = changePath.split(path.sep);
212
+ if (parts.length < 2)
213
+ return;
214
+ const pluginName = parts.slice(0, 2).join(path.sep);
215
+ const simplePluginName = parts.length >= 2 ? parts.slice(0, 2).join('/') : path.basename(changePath, path.extname(changePath));
216
+ this.logger.info(`Plugin file changed: ${simplePluginName}`);
217
+ this.reloadPlugin(pluginName, core);
218
+ });
219
+ watcher.on('add', async (changePath) => {
220
+ if (!changePath.endsWith('.ts') && !changePath.endsWith('.js'))
221
+ return;
222
+ const parts = changePath.split(path.sep);
223
+ if (parts.length < 2)
224
+ return;
225
+ const pluginName = parts.slice(0, 2).join(path.sep);
226
+ const simplePluginName = parts.length >= 2 ? parts.slice(0, 2).join('/') : path.basename(changePath, path.extname(changePath));
227
+ this.logger.info(`New plugin file added: ${simplePluginName}`);
228
+ this.reloadPlugin(pluginName, core);
229
+ });
230
+ watcher.on('unlink', async (changePath) => {
231
+ if (!changePath.endsWith('.ts') && !changePath.endsWith('.js'))
232
+ return;
233
+ const parts = changePath.split(path.sep);
234
+ if (parts.length < 2)
235
+ return;
236
+ const pluginName = parts.slice(0, 2).join(path.sep);
237
+ const simplePluginName = parts.length >= 2 ? parts.slice(0, 2).join('/') : path.basename(changePath, path.extname(changePath));
238
+ this.logger.info(`Plugin file removed: ${simplePluginName}`);
239
+ await this.unloadPluginAndEmit(pluginName, core);
240
+ });
241
+ logger.info(`Watching for plugin changes in ${pluginsDir}`);
242
+ }
243
+ /**
244
+ * 重新加载插件
245
+ * @param pluginName 插件名称
246
+ * @param core Core实例
247
+ */
248
+ async reloadPlugin(pluginName, core) {
249
+ try {
250
+ const config = await core.getPluginConfig(pluginName);
251
+ const plugin = await core.pluginLoader.load(pluginName);
252
+ if (plugin && plugin.disable) {
253
+ await plugin.disable(core);
254
+ }
255
+ if (plugin.provide) {
256
+ for (let providedmodules of plugin.provide) {
257
+ if (this.components[`${providedmodules}`]) {
258
+ this.unregisterComponent(providedmodules);
259
+ }
260
+ }
261
+ }
262
+ await core.pluginLoader.unloadPlugin(pluginName);
263
+ if (plugin && plugin.apply) {
264
+ await plugin.apply(core, config);
265
+ }
266
+ this.pluginLoader.logger.info(`apply plugin ${pluginName}`);
267
+ core.emit('plugin-reloaded', pluginName);
268
+ }
269
+ catch (error) {
270
+ this.logger.error(`Failed to reload plugin ${pluginName}:`, error);
271
+ }
272
+ }
273
+ /**
274
+ * 卸载插件并触发事件
275
+ * @param pluginName 插件名称
276
+ * @param core Core实例
277
+ */
278
+ async unloadPluginAndEmit(pluginName, core) {
279
+ try {
280
+ const plugin = core.plugins[`${pluginName}`];
281
+ if (plugin && plugin.disable) {
282
+ await plugin.disable(core);
283
+ }
284
+ await core.pluginLoader.unloadPlugin(pluginName);
285
+ delete core.plugins[`${pluginName}`];
286
+ delete this.pluginModules[`${pluginName}`];
287
+ // Remove provided components from this plugin
288
+ for (const componentName in this.providedComponents) {
289
+ if (this.providedComponents[`${componentName}`] === pluginName) {
290
+ delete this.components[`${componentName}`];
291
+ delete this.providedComponents[`${componentName}`];
292
+ }
293
+ }
294
+ core.emit('plugin-unloaded', pluginName);
295
+ }
296
+ catch (error) {
297
+ this.logger.error(`Failed to unload plugin ${pluginName}:`, error);
298
+ }
299
+ }
300
+ // 注册组件
301
+ registerComponent(name, component) {
302
+ if (this.components.hasOwnProperty(name)) {
303
+ this.logger.warn(`Component "${name}" already registered by plugin "${this.providedComponents[`${name}`]}".`);
304
+ return;
305
+ }
306
+ this.components[`${name}`] = component;
307
+ this.logger.info(`Component "${name}" registered.`);
308
+ }
309
+ // 获取组件
310
+ getComponent(name) {
311
+ return this.components[`${name}`];
312
+ }
313
+ // 取消注册组件
314
+ unregisterComponent(name) {
315
+ delete this.components[`${name}`];
316
+ delete this.providedComponents[`${name}`];
317
+ }
318
+ // 事件系统:监听事件
319
+ on(event, listener) {
320
+ if (!this.eventListeners[`${event}`]) {
321
+ this.eventListeners[`${event}`] = [];
322
+ }
323
+ this.eventListeners[`${event}`].push(listener);
324
+ //this.logger.info(`Listener added for event "${event}".`);
325
+ }
326
+ // 事件系统:触发事件
327
+ async emit(event, ...args) {
328
+ if (this.eventListeners[`${event}`]) {
329
+ this.logger.info(`Emitting event "${event}" with args:`, args);
330
+ for (const listener of this.eventListeners[`${event}`]) {
331
+ try {
332
+ await listener(...args);
333
+ }
334
+ catch (err) {
335
+ this.logger.error(`Error in event listener for "${event}":`, err);
336
+ }
337
+ }
338
+ }
339
+ else {
340
+ //this.logger.info(`No listeners for event "${event}".`);
341
+ }
342
+ }
343
+ // 定义指令
344
+ command(name) {
345
+ const command = new command_1.Command(this, name); // 传递 Core 实例
346
+ this.commands[`${name}`] = command;
347
+ return command;
348
+ }
349
+ // 执行指令
350
+ async executeCommand(name, session, ...args) {
351
+ const command = this.commands[`${name}`];
352
+ if (command) {
353
+ return await command.execute(session, ...args);
354
+ }
355
+ return null;
356
+ }
357
+ registerPlatform(platform) {
358
+ this.platforms.push(platform);
359
+ return platform.startPlatform(this);
360
+ }
361
+ }
362
+ exports.Core = Core;
363
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @time: 2025/03/24 12:26
3
+ * @author: FireGuo
4
+ * WindyPear-Team All right reserved
5
+ **/
6
+ export * from './core';
7
+ export * from './session';
8
+ export * from './command';
9
+ export * from './config';
10
+ export * from './logger';
11
+ export * from './platform';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * @time: 2025/03/24 12:26
4
+ * @author: FireGuo
5
+ * WindyPear-Team All right reserved
6
+ **/
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ __exportStar(require("./core"), exports);
23
+ __exportStar(require("./session"), exports);
24
+ __exportStar(require("./command"), exports);
25
+ __exportStar(require("./config"), exports);
26
+ __exportStar(require("./logger"), exports);
27
+ __exportStar(require("./platform"), exports);
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;IAII;;;;;;;;;;;;;;;;AAEJ,yCAAuB;AACvB,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @time: 2025/03/25 18:01
3
+ * @author: FireGuo
4
+ * WindyPear-Team All right reserved
5
+ */
6
+ export declare class Logger {
7
+ private title;
8
+ private titleColor;
9
+ constructor(title: string);
10
+ private getRandomColor;
11
+ private log;
12
+ info(...args: any[]): void;
13
+ warn(...args: any[]): void;
14
+ error(...args: any[]): void;
15
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * @time: 2025/03/25 18:01
4
+ * @author: FireGuo
5
+ * WindyPear-Team All right reserved
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.Logger = void 0;
12
+ const ansi_colors_1 = __importDefault(require("ansi-colors")); // 引入 ansi-colors
13
+ class Logger {
14
+ constructor(title) {
15
+ this.title = title;
16
+ this.titleColor = this.getRandomColor();
17
+ }
18
+ getRandomColor() {
19
+ const availableColors = [ansi_colors_1.default.red, ansi_colors_1.default.green, ansi_colors_1.default.yellow, ansi_colors_1.default.blue, ansi_colors_1.default.magenta, ansi_colors_1.default.cyan, ansi_colors_1.default.white, ansi_colors_1.default.gray];
20
+ const randomIndex = Math.floor(Math.random() * availableColors.length);
21
+ return availableColors[randomIndex];
22
+ }
23
+ log(level, ...args) {
24
+ const now = new Date();
25
+ const timestamp = `${now.getFullYear()}/${String(now.getMonth() + 1).padStart(2, '0')}/${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`;
26
+ console.log(`${timestamp} [${level}] ${this.titleColor(this.title)} `, ...args);
27
+ }
28
+ info(...args) {
29
+ this.log('I', ...args);
30
+ }
31
+ warn(...args) {
32
+ this.log('W', ...args);
33
+ }
34
+ error(...args) {
35
+ this.log('E', ...args);
36
+ }
37
+ }
38
+ exports.Logger = Logger;
39
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,8DAAiC,CAAC,iBAAiB;AAEnD,MAAa,MAAM;IAIjB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1C,CAAC;IAEO,cAAc;QACpB,MAAM,eAAe,GAAG,CAAC,qBAAM,CAAC,GAAG,EAAE,qBAAM,CAAC,KAAK,EAAE,qBAAM,CAAC,MAAM,EAAE,qBAAM,CAAC,IAAI,EAAE,qBAAM,CAAC,OAAO,EAAE,qBAAM,CAAC,IAAI,EAAE,qBAAM,CAAC,KAAK,EAAE,qBAAM,CAAC,IAAI,CAAC,CAAC;QACvI,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACvE,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAEO,GAAG,CAAC,KAAa,EAAE,GAAG,IAAW;QACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACvQ,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,KAAK,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,CAAC,GAAG,IAAW;QACjB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,GAAG,IAAW;QACjB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,GAAG,IAAW;QAClB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;CACF;AAhCD,wBAgCC"}
@@ -0,0 +1,159 @@
1
+ import { Session } from './session';
2
+ import { Core } from './core';
3
+ import { ConfigSchema } from './config';
4
+ /**
5
+ * Platform 基类
6
+ * 作为平台接入的基础类,提供标准化的接口和通用能力
7
+ * 各平台实现类需继承此类并实现所有抽象方法
8
+ */
9
+ export declare abstract class Platform {
10
+ protected status: 'idle' | 'starting' | 'running' | 'stopping' | 'error';
11
+ protected errorMessage: string | null;
12
+ protected config: Record<string, any>;
13
+ protected instanceId: string;
14
+ protected eventListeners: Record<string, Array<(...args: any[]) => void>>;
15
+ /**
16
+ * 构造函数
17
+ * @param config 平台配置
18
+ */
19
+ constructor(config?: Record<string, any>);
20
+ /**
21
+ * 生成平台实例ID
22
+ * @returns 实例ID字符串
23
+ */
24
+ protected generateInstanceId(): string;
25
+ /**
26
+ * 向客户端发送消息
27
+ * @param session 会话对象
28
+ * @param data 要发送的数据
29
+ * @returns 发送结果
30
+ */
31
+ abstract sendMessage(session: Session, data: any): any;
32
+ /**
33
+ * 结束会话
34
+ * @param session 会话对象
35
+ * @param message 结束消息
36
+ * @returns 结束结果
37
+ */
38
+ abstract terminationSession(session: Session, message: any): any;
39
+ /**
40
+ * 获取平台名称
41
+ * @returns 平台名称
42
+ */
43
+ abstract getPlatformName(): string;
44
+ /**
45
+ * 获取平台版本号
46
+ * @returns 平台版本号
47
+ */
48
+ abstract getPlatformVersionCode(): string;
49
+ /**
50
+ * 获取平台ID
51
+ * @returns 平台ID
52
+ */
53
+ abstract getPlatformId(): string;
54
+ /**
55
+ * 获取平台状态
56
+ * @returns 平台状态对象
57
+ */
58
+ abstract getPlatformStatus(): Record<string, any>;
59
+ /**
60
+ * 启动平台
61
+ * @param core Core实例
62
+ * @returns 启动结果
63
+ */
64
+ abstract startPlatform(core?: Core): Promise<any>;
65
+ /**
66
+ * 停止平台
67
+ * @returns 停止结果
68
+ */
69
+ abstract stopPlatform(): Promise<void>;
70
+ /**
71
+ * 重启平台
72
+ * @param core Core实例
73
+ * @returns 重启结果
74
+ */
75
+ restartPlatform(core?: Core): Promise<any>;
76
+ /**
77
+ * 设置平台配置
78
+ * @param key 配置键
79
+ * @param value 配置值
80
+ */
81
+ setConfig(key: string, value: any): void;
82
+ /**
83
+ * 获取平台配置
84
+ * @param key 配置键
85
+ * @param defaultValue 默认值
86
+ * @returns 配置值
87
+ */
88
+ getConfig<T>(key: string, defaultValue?: T): T;
89
+ /**
90
+ * 获取平台实例ID
91
+ * @returns 实例ID
92
+ */
93
+ getInstanceId(): string;
94
+ /**
95
+ * 获取当前平台状态
96
+ * @returns 状态字符串
97
+ */
98
+ getStatus(): 'idle' | 'starting' | 'running' | 'stopping' | 'error';
99
+ /**
100
+ * 获取错误信息
101
+ * @returns 错误信息
102
+ */
103
+ getErrorMessage(): string | null;
104
+ /**
105
+ * 添加平台事件监听器
106
+ * @param event 事件名称
107
+ * @param listener 监听器函数
108
+ */
109
+ on(event: string, listener: (...args: any[]) => void): void;
110
+ /**
111
+ * 移除平台事件监听器
112
+ * @param event 事件名称
113
+ * @param listener 监听器函数
114
+ */
115
+ off(event: string, listener: (...args: any[]) => void): void;
116
+ /**
117
+ * 触发平台事件
118
+ * @param event 事件名称
119
+ * @param args 事件参数
120
+ */
121
+ protected emit(event: string, ...args: any[]): void;
122
+ /**
123
+ * 创建会话
124
+ * @param ip 客户端IP
125
+ * @param cookie Cookie对象
126
+ * @param query 查询参数
127
+ * @returns 会话对象
128
+ */
129
+ createSession(ip: string, cookie: Record<string, string>, query?: Record<string, string>): Session;
130
+ /**
131
+ * 处理会话数据
132
+ * @param session 会话对象
133
+ * @param data 会话数据
134
+ * @returns 处理结果
135
+ */
136
+ processSessionData(session: Session, data: any): any;
137
+ /**
138
+ * 验证会话
139
+ * @param session 会话对象
140
+ * @returns 验证结果
141
+ */
142
+ validateSession(session: Session): boolean;
143
+ /**
144
+ * 获取平台支持的MIME类型
145
+ * @returns MIME类型数组
146
+ */
147
+ getSupportedMimeTypes(): string[];
148
+ /**
149
+ * 获取平台元数据
150
+ * @returns 平台元数据
151
+ */
152
+ getMetadata(): Record<string, any>;
153
+ /**
154
+ * 获取平台配置模式
155
+ * 子类可以覆盖此方法提供自定义配置模式
156
+ * @returns 配置模式对象
157
+ */
158
+ static getConfigSchema(): Record<string, ConfigSchema>;
159
+ }