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

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.
package/dist/core.js CHANGED
@@ -49,6 +49,7 @@ const config_1 = require("./config");
49
49
  const logger_1 = require("./logger");
50
50
  const command_1 = require("./command");
51
51
  const chokidar_1 = __importDefault(require("chokidar"));
52
+ const context_1 = require("./context");
52
53
  class Core {
53
54
  constructor(pluginLoader) {
54
55
  this.plugins = {};
@@ -60,25 +61,80 @@ class Core {
60
61
  this.logger = new logger_1.Logger('core');
61
62
  this.providedComponents = {};
62
63
  this.pluginModules = {};
64
+ this.configPath = ''; // 存储配置文件路径
65
+ this.globalMiddlewares = {}; // 全局中间件数组
66
+ this.cmdtoplu = {}; // 存储命令与插件名的映射关系
67
+ this.comtoplu = {}; // 存储组件与插件名的映射关系
68
+ this.evttoplu = {}; // 存储事件与插件名的映射关系
69
+ this.mdwtoplu = {}; // 存储中间件与插件名的映射关系
70
+ this.plftoplu = {}; // 存储平台与插件名的映射关系
63
71
  this.pluginLoader = pluginLoader;
64
72
  }
65
73
  // 加载配置文件
66
74
  async loadConfig(configPath) {
67
75
  try {
76
+ this.configPath = configPath; // 保存配置文件路径
68
77
  const doc = yaml.load(fs.readFileSync(configPath, 'utf8'));
69
78
  this.config = doc;
70
79
  this.logger.info('Config loaded.');
80
+ // 开发环境下监听配置文件变化
81
+ if (process.env.NODE_ENV === 'development') {
82
+ this.watchConfig(configPath);
83
+ }
71
84
  }
72
85
  catch (e) {
73
86
  this.logger.error('Failed to load config:', e);
74
87
  throw e; // 抛出异常,让上层处理
75
88
  }
76
89
  }
90
+ /**
91
+ * 监听配置文件变化
92
+ * @param configPath 配置文件路径
93
+ */
94
+ watchConfig(configPath) {
95
+ const watcher = chokidar_1.default.watch(configPath, {
96
+ persistent: true,
97
+ ignoreInitial: true,
98
+ awaitWriteFinish: {
99
+ stabilityThreshold: 300,
100
+ pollInterval: 100,
101
+ },
102
+ });
103
+ watcher.on('change', async () => {
104
+ //this.logger.info('Config file changed, reloading...');
105
+ try {
106
+ // 重新加载配置文件
107
+ const doc = yaml.load(fs.readFileSync(configPath, 'utf8'));
108
+ this.config = doc;
109
+ // this.logger.info('Config reloaded successfully.');
110
+ // 触发配置变更事件
111
+ await this.emit('config-changed', this.config);
112
+ }
113
+ catch (error) {
114
+ // this.logger.error('Failed to reload config:', error);
115
+ }
116
+ });
117
+ this.logger.info(`Watching for config changes at ${configPath}`);
118
+ }
77
119
  async getPluginConfig(pluginName) {
78
- if (!this.config.plugins[pluginName]) {
79
- return new config_1.Config(pluginName);
120
+ // 如果插件名以~开头,则去掉~前缀获取配置
121
+ const actualPluginName = pluginName.startsWith('~') ? pluginName.substring(1) : pluginName;
122
+ // 如果配置文件路径存在且处于开发模式,每次都重新读取配置文件
123
+ if (this.configPath && process.env.NODE_ENV === 'development') {
124
+ try {
125
+ const doc = yaml.load(fs.readFileSync(this.configPath, 'utf8'));
126
+ if (doc && doc.plugins) {
127
+ this.config.plugins = doc.plugins;
128
+ }
129
+ }
130
+ catch (error) {
131
+ this.logger.warn('Failed to refresh config for hot reload:', error);
132
+ }
133
+ }
134
+ if (!this.config.plugins[actualPluginName]) {
135
+ return new config_1.Config(actualPluginName);
80
136
  }
81
- const config = new config_1.Config(pluginName, this.config.plugins[pluginName]);
137
+ const config = new config_1.Config(actualPluginName, this.config.plugins[actualPluginName]);
82
138
  return config;
83
139
  }
84
140
  // 加载插件
@@ -88,12 +144,17 @@ class Core {
88
144
  this.logger.info('No plugins configuration found or it is not an object. No plugins to load.');
89
145
  return;
90
146
  }
91
- // 获取所有需要加载的插件名
92
- const pluginNamesToLoad = Object.keys(this.config.plugins);
147
+ // 获取所有需要加载的插件名,过滤掉以~开头的插件(禁用的插件)
148
+ const pluginNamesToLoad = Object.keys(this.config.plugins).filter(name => !name.startsWith('~'));
93
149
  if (pluginNamesToLoad.length === 0) {
94
- this.logger.info('Plugins configuration is empty. No plugins to load.');
150
+ this.logger.info('No enabled plugins found in configuration. All plugins might be disabled or configuration is empty.');
95
151
  return;
96
152
  }
153
+ // 记录被禁用的插件
154
+ const disabledPlugins = Object.keys(this.config.plugins).filter(name => name.startsWith('~'));
155
+ if (disabledPlugins.length > 0) {
156
+ this.logger.info(`Skipping disabled plugins: ${disabledPlugins.join(', ')}`);
157
+ }
97
158
  const loadedPluginNames = [];
98
159
  // 使用对象来跟踪尝试加载的插件名
99
160
  let loadAttempted = {};
@@ -130,7 +191,7 @@ class Core {
130
191
  loadedPluginNames.push(pluginName);
131
192
  loadedInThisPass = true; // 标记本轮有插件加载成功
132
193
  if (loadedInThisPass && pluginInstance && pluginInstance.apply) {
133
- await pluginInstance.apply(this, await this.getPluginConfig(pluginName));
194
+ await pluginInstance.apply(new context_1.Context(this, pluginName), await this.getPluginConfig(pluginName));
134
195
  // 使用 pluginName
135
196
  this.pluginLoader.logger.info(`apply plugin ${pluginName}`);
136
197
  }
@@ -204,9 +265,8 @@ class Core {
204
265
  const parts = changePath.split(path.sep);
205
266
  if (parts.length < 2)
206
267
  return;
207
- const pluginName = parts.slice(0, 2).join(path.sep);
208
- const simplePluginName = parts.length >= 2 ? parts.slice(0, 2).join('/') : path.basename(changePath, path.extname(changePath));
209
- this.logger.info(`Plugin file changed: ${simplePluginName}`);
268
+ const pluginName = parts[1];
269
+ this.logger.info(`Plugin file changed: ${changePath}`);
210
270
  this.reloadPlugin(pluginName, core);
211
271
  });
212
272
  watcher.on('add', async (changePath) => {
@@ -215,9 +275,8 @@ class Core {
215
275
  const parts = changePath.split(path.sep);
216
276
  if (parts.length < 2)
217
277
  return;
218
- const pluginName = parts.slice(0, 2).join(path.sep);
219
- const simplePluginName = parts.length >= 2 ? parts.slice(0, 2).join('/') : path.basename(changePath, path.extname(changePath));
220
- this.logger.info(`New plugin file added: ${simplePluginName}`);
278
+ const pluginName = parts[1];
279
+ this.logger.info(`New plugin file added: ${changePath}`);
221
280
  this.reloadPlugin(pluginName, core);
222
281
  });
223
282
  watcher.on('unlink', async (changePath) => {
@@ -226,54 +285,83 @@ class Core {
226
285
  const parts = changePath.split(path.sep);
227
286
  if (parts.length < 2)
228
287
  return;
229
- const pluginName = parts.slice(0, 2).join(path.sep);
230
- const simplePluginName = parts.length >= 2 ? parts.slice(0, 2).join('/') : path.basename(changePath, path.extname(changePath));
231
- this.logger.info(`Plugin file removed: ${simplePluginName}`);
288
+ const pluginName = parts[1];
289
+ this.logger.info(`Plugin file removed: ${changePath}`);
232
290
  await this.unloadPluginAndEmit(pluginName, core);
233
291
  });
234
292
  logger.info(`Watching for plugin changes in ${pluginsDir}`);
235
293
  }
294
+ /**
295
+ * 重新加载插件
296
+ * @param pluginName 插件名称
297
+ * @param core Core实例
298
+ */
236
299
  async reloadPlugin(pluginName, core) {
237
300
  try {
301
+ // 强制重新读取配置文件,确保获取最新配置
302
+ if (this.configPath && process.env.NODE_ENV === 'development') {
303
+ try {
304
+ const doc = yaml.load(fs.readFileSync(this.configPath, 'utf8'));
305
+ if (doc && doc.plugins) {
306
+ this.config.plugins = doc.plugins;
307
+ }
308
+ }
309
+ catch (error) {
310
+ this.logger.warn('Failed to refresh config for plugin reload:', error);
311
+ }
312
+ }
313
+ // 获取最新的插件配置
238
314
  const config = await core.getPluginConfig(pluginName);
315
+ // 加载插件实例
239
316
  const plugin = await core.pluginLoader.load(pluginName);
317
+ // 如果插件存在,先禁用旧实例
240
318
  if (plugin && plugin.disable) {
241
- await plugin.disable(core);
319
+ await plugin.disable(new context_1.Context(this, pluginName));
242
320
  }
243
- if (plugin.provide) {
244
- for (let providedmodules of plugin.provide) {
245
- if (this.components[`${providedmodules}`]) {
246
- this.unregisterComponent(providedmodules);
247
- }
248
- }
249
- }
250
- await core.pluginLoader.unloadPlugin(pluginName);
321
+ // 清理插件提供的组件
322
+ // if (plugin.provide) {
323
+ // for (let providedmodules of plugin.provide) {
324
+ // if (this.components[`${providedmodules}`]) {
325
+ // this.unregisterComponent(providedmodules);
326
+ // }
327
+ // }
328
+ // }
329
+ // 卸载插件
330
+ await core.unloadPluginAndEmit(pluginName, core);
331
+ // 应用新的插件实例
251
332
  if (plugin && plugin.apply) {
252
- await plugin.apply(core, config);
333
+ await plugin.apply(new context_1.Context(this, pluginName), config);
253
334
  }
254
335
  this.pluginLoader.logger.info(`apply plugin ${pluginName}`);
336
+ // 触发插件重载事件
255
337
  core.emit('plugin-reloaded', pluginName);
256
338
  }
257
339
  catch (error) {
258
340
  this.logger.error(`Failed to reload plugin ${pluginName}:`, error);
259
341
  }
260
342
  }
343
+ /**
344
+ * 卸载插件并触发事件
345
+ * @param pluginName 插件名称
346
+ * @param core Core实例
347
+ */
261
348
  async unloadPluginAndEmit(pluginName, core) {
262
349
  try {
263
350
  const plugin = core.plugins[`${pluginName}`];
264
351
  if (plugin && plugin.disable) {
265
- await plugin.disable(core);
352
+ await plugin.disable(new context_1.Context(this, pluginName));
266
353
  }
267
354
  await core.pluginLoader.unloadPlugin(pluginName);
268
355
  delete core.plugins[`${pluginName}`];
269
356
  delete this.pluginModules[`${pluginName}`];
270
357
  // Remove provided components from this plugin
271
- for (const componentName in this.providedComponents) {
272
- if (this.providedComponents[`${componentName}`] === pluginName) {
273
- delete this.components[`${componentName}`];
274
- delete this.providedComponents[`${componentName}`];
275
- }
276
- }
358
+ // for (const componentName in this.providedComponents) {
359
+ // if (this.providedComponents[`${componentName}`] === pluginName) {
360
+ // delete this.components[`${componentName}`];
361
+ // delete this.providedComponents[`${componentName}`];
362
+ // }
363
+ // }
364
+ this.unregall(pluginName);
277
365
  core.emit('plugin-unloaded', pluginName);
278
366
  }
279
367
  catch (error) {
@@ -297,6 +385,7 @@ class Core {
297
385
  unregisterComponent(name) {
298
386
  delete this.components[`${name}`];
299
387
  delete this.providedComponents[`${name}`];
388
+ delete this.comtoplu[`${name}`];
300
389
  }
301
390
  // 事件系统:监听事件
302
391
  on(event, listener) {
@@ -309,7 +398,7 @@ class Core {
309
398
  // 事件系统:触发事件
310
399
  async emit(event, ...args) {
311
400
  if (this.eventListeners[`${event}`]) {
312
- this.logger.info(`Emitting event "${event}" with args:`, args);
401
+ // this.logger.info(`Emitting event "${event}" with args:`, args);
313
402
  for (const listener of this.eventListeners[`${event}`]) {
314
403
  try {
315
404
  await listener(...args);
@@ -323,6 +412,11 @@ class Core {
323
412
  //this.logger.info(`No listeners for event "${event}".`);
324
413
  }
325
414
  }
415
+ // 注册全局中间件
416
+ use(name, middleware) {
417
+ this.globalMiddlewares[name] = middleware;
418
+ return this;
419
+ }
326
420
  // 定义指令
327
421
  command(name) {
328
422
  const command = new command_1.Command(this, name); // 传递 Core 实例
@@ -333,7 +427,27 @@ class Core {
333
427
  async executeCommand(name, session, ...args) {
334
428
  const command = this.commands[`${name}`];
335
429
  if (command) {
336
- return await command.execute(session, ...args);
430
+ // 将 globalMiddlewares 从对象转为数组
431
+ const globalMiddlewareList = Object.values(this.globalMiddlewares || {});
432
+ const commandMiddlewareList = command.middlewares || [];
433
+ // 如果有中间件,执行中间件链
434
+ if (globalMiddlewareList.length > 0 || commandMiddlewareList.length > 0) {
435
+ const middlewares = [...globalMiddlewareList, ...commandMiddlewareList];
436
+ let index = 0;
437
+ const runner = async () => {
438
+ if (index >= middlewares.length) {
439
+ await command.executeHandler(session, ...args);
440
+ return;
441
+ }
442
+ const middleware = middlewares[index++];
443
+ await middleware(session, runner);
444
+ };
445
+ await runner();
446
+ return session;
447
+ }
448
+ else {
449
+ return await command.execute(session, ...args);
450
+ }
337
451
  }
338
452
  return null;
339
453
  }
@@ -341,6 +455,53 @@ class Core {
341
455
  this.platforms.push(platform);
342
456
  return platform.startPlatform(this);
343
457
  }
458
+ unregall(pluginname) {
459
+ let cmdtodel = [];
460
+ for (const cmd in this.cmdtoplu) {
461
+ if (this.cmdtoplu[cmd] === pluginname) {
462
+ cmdtodel.push(cmd);
463
+ }
464
+ }
465
+ for (const cmd of cmdtodel) {
466
+ delete this.cmdtoplu[cmd];
467
+ delete this.commands[cmd];
468
+ }
469
+ let comptodel = [];
470
+ for (const comp in this.comtoplu) {
471
+ if (this.comtoplu[comp] === pluginname) {
472
+ comptodel.push(comp);
473
+ }
474
+ }
475
+ for (const comp of comptodel) {
476
+ delete this.comtoplu[comp];
477
+ delete this.components[comp];
478
+ delete this.providedComponents[comp];
479
+ }
480
+ let evttodel = [];
481
+ for (const evt in this.evttoplu) {
482
+ if (this.evttoplu[evt][pluginname]) {
483
+ // 清除插件在 evttoplu 中的记录
484
+ delete this.evttoplu[evt][pluginname];
485
+ // 如果该事件的插件已经全部清除了,也可以选择删掉整个事件
486
+ if (Object.keys(this.evttoplu[evt]).length === 0) {
487
+ evttodel.push(evt);
488
+ }
489
+ // 同时在 this.eventListeners 中删掉对应 listener
490
+ const pluginListeners = this.evttoplu[evt][pluginname] || [];
491
+ this.eventListeners[evt] = this.eventListeners[evt]?.filter(l => !pluginListeners.includes(l)) || [];
492
+ }
493
+ }
494
+ let mdwtodel = [];
495
+ for (const mdw in this.mdwtoplu) {
496
+ if (this.mdwtoplu[mdw] === pluginname) {
497
+ mdwtodel.push(mdw);
498
+ }
499
+ }
500
+ for (const mdw of mdwtodel) {
501
+ delete this.mdwtoplu[mdw];
502
+ delete this.globalMiddlewares[mdw];
503
+ }
504
+ }
344
505
  }
345
506
  exports.Core = Core;
346
507
  //# sourceMappingURL=core.js.map
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,10 +3,10 @@
3
3
  * @author: FireGuo
4
4
  * WindyPear-Team All right reserved
5
5
  **/
6
- import { Core } from './core';
7
- import { Session } from './session';
8
- import { Command } from './command';
9
- import { Config } from './config';
10
- import { Logger } from './logger';
11
- import { Platform } from './platform';
12
- export { Core, Session, Command, Config, Logger, Platform };
6
+ export * from './core';
7
+ export * from './session';
8
+ export * from './command';
9
+ export * from './config';
10
+ export * from './logger';
11
+ export * from './platform';
12
+ export * from './context';
package/dist/index.js CHANGED
@@ -4,18 +4,26 @@
4
4
  * @author: FireGuo
5
5
  * WindyPear-Team All right reserved
6
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
+ };
7
21
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.Platform = exports.Logger = exports.Config = exports.Command = exports.Session = exports.Core = void 0;
9
- const core_1 = require("./core");
10
- Object.defineProperty(exports, "Core", { enumerable: true, get: function () { return core_1.Core; } });
11
- const session_1 = require("./session");
12
- Object.defineProperty(exports, "Session", { enumerable: true, get: function () { return session_1.Session; } });
13
- const command_1 = require("./command");
14
- Object.defineProperty(exports, "Command", { enumerable: true, get: function () { return command_1.Command; } });
15
- const config_1 = require("./config");
16
- Object.defineProperty(exports, "Config", { enumerable: true, get: function () { return config_1.Config; } });
17
- const logger_1 = require("./logger");
18
- Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
19
- const platform_1 = require("./platform");
20
- Object.defineProperty(exports, "Platform", { enumerable: true, get: function () { return platform_1.Platform; } });
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
+ __exportStar(require("./context"), exports);
21
29
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;IAII;;;AAEJ,iCAA8B;AAOrB,qFAPA,WAAI,OAOA;AANb,uCAAoC;AAMrB,wFANN,iBAAO,OAMM;AALtB,uCAAoC;AAKZ,wFALf,iBAAO,OAKe;AAJ/B,qCAAkC;AAID,uFAJxB,eAAM,OAIwB;AAHvC,qCAAkC;AAGO,uFAHhC,eAAM,OAGgC;AAF/C,yCAAsC;AAEW,yFAFxC,mBAAQ,OAEwC"}
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;AAC3B,4CAA0B"}
package/dist/logger.d.ts CHANGED
@@ -3,9 +3,13 @@
3
3
  * @author: FireGuo
4
4
  * WindyPear-Team All right reserved
5
5
  */
6
+ import { Core } from './core';
6
7
  export declare class Logger {
7
8
  private title;
8
9
  private titleColor;
10
+ static coreInstance: Core | null;
11
+ static logs: string[];
12
+ static setCore(core: Core): void;
9
13
  constructor(title: string);
10
14
  private getRandomColor;
11
15
  private log;
package/dist/logger.js CHANGED
@@ -11,6 +11,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.Logger = void 0;
12
12
  const ansi_colors_1 = __importDefault(require("ansi-colors")); // 引入 ansi-colors
13
13
  class Logger {
14
+ static setCore(core) {
15
+ if (Logger.coreInstance !== null) {
16
+ const logger = new Logger('Logger');
17
+ logger.warn("Logger.coreInstance is already set. Overwriting would cause confusion.");
18
+ }
19
+ Logger.coreInstance = core;
20
+ }
14
21
  constructor(title) {
15
22
  this.title = title;
16
23
  this.titleColor = this.getRandomColor();
@@ -24,6 +31,7 @@ class Logger {
24
31
  const now = new Date();
25
32
  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
33
  console.log(`${timestamp} [${level}] ${this.titleColor(this.title)} `, ...args);
34
+ Logger.coreInstance?.emit('log', { level, message: args.join(' ') });
27
35
  }
28
36
  info(...args) {
29
37
  this.log('I', ...args);
@@ -36,4 +44,108 @@ class Logger {
36
44
  }
37
45
  }
38
46
  exports.Logger = Logger;
47
+ Logger.coreInstance = null;
48
+ Logger.logs = [];
49
+ function stringifyDebug(value, seen = new WeakSet(), depth = 0, indent = 2, maxDepth = 5) {
50
+ const pad = ' '.repeat(depth * indent);
51
+ const nextPad = ' '.repeat((depth + 1) * indent);
52
+ // --- 1. 处理基本类型和 null ---
53
+ if (value === null) {
54
+ return 'null';
55
+ }
56
+ const type = typeof value;
57
+ if (type === 'string') {
58
+ // 确保 value 是字符串,并正确转义内部单引号
59
+ return `'${value.replace(/'/g, "\\'")}'`;
60
+ }
61
+ if (type === 'number' || type === 'boolean') {
62
+ return String(value);
63
+ }
64
+ if (type === 'undefined') {
65
+ return 'undefined';
66
+ }
67
+ if (type === 'symbol') {
68
+ return value.toString();
69
+ }
70
+ if (type === 'function') {
71
+ // 类型断言,确保可以访问函数的 name 属性
72
+ return `[Function: ${value.name || '(anonymous)'}]`;
73
+ }
74
+ if (type === 'bigint') {
75
+ // BigInt 的特殊表示,确保 value 是 BigInt 类型
76
+ return `${String(value)}n`;
77
+ }
78
+ // At this point, 'value' must be a non-primitive object type (object, array, Map, Set, Date, RegExp, custom class)
79
+ // --- 2. 处理简单的内置对象 (它们不会有循环引用问题) ---
80
+ if (value instanceof RegExp) {
81
+ return value.toString();
82
+ }
83
+ if (value instanceof Date) {
84
+ return value.toISOString();
85
+ }
86
+ // --- 3. 深度限制检查 ---
87
+ // 此时 value 确定是一个可以被 seen WeakSet 存储的对象
88
+ if (depth >= maxDepth) {
89
+ return '[Object]';
90
+ }
91
+ // --- 4. 循环引用检测 ---
92
+ // 将当前对象添加到 seen Set,以便在后续递归中检测循环引用
93
+ // 这里需要断言 value 是一个 object 类型,因为 WeakSet 只能存储对象
94
+ if (seen.has(value)) {
95
+ return '[Circular]';
96
+ }
97
+ seen.add(value); // 添加到已访问集合
98
+ // --- 5. 处理复杂内置对象 (Array, Map, Set) ---
99
+ if (Array.isArray(value)) {
100
+ // 在这一分支中,TypeScript 已经把 value 缩小为 unknown[] 类型
101
+ if (value.length === 0)
102
+ return '[]';
103
+ const elements = value.map(el => stringifyDebug(el, seen, depth + 1, indent, maxDepth));
104
+ return `[\n${nextPad}${elements.join(`,\n${nextPad}`)}\n${pad}]`;
105
+ }
106
+ if (value instanceof Map) {
107
+ // 在这一分支中,TypeScript 已经把 value 缩小为 Map<unknown, unknown> 类型
108
+ if (value.size === 0)
109
+ return 'Map(0) {}';
110
+ const entries = Array.from(value.entries()).map(([k, v]) => `${stringifyDebug(k, seen, depth + 1, indent, maxDepth)} => ${stringifyDebug(v, seen, depth + 1, indent, maxDepth)}`);
111
+ return `Map(${value.size}) {\n${nextPad}${entries.join(`,\n${nextPad}`)}\n${pad}}`;
112
+ }
113
+ if (value instanceof Set) {
114
+ // 在这一分支中,TypeScript 已经把 value 缩小为 Set<unknown> 类型
115
+ if (value.size === 0)
116
+ return 'Set(0) {}';
117
+ const elements = Array.from(value.values()).map(el => stringifyDebug(el, seen, depth + 1, indent, maxDepth));
118
+ return `Set(${value.size}) {\n${nextPad}${elements.join(`,\n${nextPad}`)}\n${pad}}`;
119
+ }
120
+ // --- 6. 处理普通对象和自定义类的实例 ---
121
+ // 此时,value 确定是一个对象 (除了上面已处理的 Array, Map, Set, Date, RegExp, primitive, null)
122
+ // 并且它已经添加到了 seen 集合
123
+ const keys = Object.keys(value); // 将 value 断言为 object,确保 Object.keys 可以接受
124
+ // 获取构造函数名(如果不是普通的 Object)
125
+ let constructorName = '';
126
+ // 同样,确保 value 被视为 object 以访问 constructor 属性
127
+ if (value.constructor && value.constructor.name && value.constructor.name !== 'Object') {
128
+ constructorName = `${value.constructor.name} `;
129
+ }
130
+ if (keys.length === 0) {
131
+ return `${constructorName}{}`; // 空对象/空类实例
132
+ }
133
+ const properties = keys.map(key => {
134
+ // 将 value 断言为带有索引签名的 Record,以便可以通过字符串键访问属性
135
+ const propValue = value[key];
136
+ return `${nextPad}${normalizeObjectKey(key)}: ${stringifyDebug(propValue, seen, depth + 1, indent, maxDepth)}`;
137
+ });
138
+ return `${constructorName}{\n${properties.join(',\n')}\n${pad}}`;
139
+ }
140
+ // 辅助函数:格式化对象键名,确保它在字面量中是有效的
141
+ function normalizeObjectKey(key) {
142
+ // 检查 key 是否是有效的 JavaScript 标识符,且不是保留字
143
+ // 简化的判断:如果包含非字母数字下划线,或以数字开头,则需要引用。
144
+ // 更严谨的判断需要解析器级别的检查。这里我们简单处理为如果包含特殊字符或空格就引用。
145
+ if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key) && !['null', 'undefined', 'true', 'false'].includes(key)) {
146
+ return key; // 不需要引用
147
+ }
148
+ // 引用并转义内部的单引号
149
+ return `'${key.replace(/'/g, "\\'")}'`;
150
+ }
39
151
  //# sourceMappingURL=logger.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}