@esengine/ecs-framework 2.1.44 → 2.1.45

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/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @esengine/ecs-framework v2.1.44
2
+ * @esengine/ecs-framework v2.1.45
3
3
  * TypeScript definitions
4
4
  */
5
5
  /**
@@ -4571,6 +4571,453 @@ declare class ECSFluentAPI {
4571
4571
  */
4572
4572
  declare function createECSAPI(scene: IScene, querySystem: QuerySystem, eventSystem: TypeSafeEventSystem): ECSFluentAPI;
4573
4573
 
4574
+ /**
4575
+ * 全局系统接口
4576
+ * 全局系统是在World级别运行的系统,不依赖特定Scene
4577
+ */
4578
+ interface IGlobalSystem {
4579
+ /**
4580
+ * 系统名称
4581
+ */
4582
+ readonly name: string;
4583
+ /**
4584
+ * 初始化系统
4585
+ */
4586
+ initialize?(): void;
4587
+ /**
4588
+ * 更新系统
4589
+ */
4590
+ update(deltaTime?: number): void;
4591
+ /**
4592
+ * 重置系统
4593
+ */
4594
+ reset?(): void;
4595
+ /**
4596
+ * 销毁系统
4597
+ */
4598
+ destroy?(): void;
4599
+ }
4600
+ /**
4601
+ * World配置接口
4602
+ */
4603
+ interface IWorldConfig {
4604
+ /**
4605
+ * World名称
4606
+ */
4607
+ name?: string;
4608
+ /**
4609
+ * 是否启用调试模式
4610
+ */
4611
+ debug?: boolean;
4612
+ /**
4613
+ * 最大Scene数量限制
4614
+ */
4615
+ maxScenes?: number;
4616
+ /**
4617
+ * 是否自动清理空Scene
4618
+ */
4619
+ autoCleanup?: boolean;
4620
+ }
4621
+ /**
4622
+ * World类 - ECS世界管理器
4623
+ *
4624
+ * World是Scene的容器,每个World可以管理多个Scene。
4625
+ * 这种设计允许创建独立的游戏世界,如:
4626
+ * - 游戏房间(每个房间一个World)
4627
+ * - 不同的游戏模式
4628
+ * - 独立的模拟环境
4629
+ *
4630
+ * @example
4631
+ * ```typescript
4632
+ * // 创建游戏房间的World
4633
+ * const roomWorld = new World({ name: 'Room_001' });
4634
+ *
4635
+ * // 在World中创建Scene
4636
+ * const gameScene = roomWorld.createScene('game', new Scene());
4637
+ * const uiScene = roomWorld.createScene('ui', new Scene());
4638
+ *
4639
+ * // 更新整个World
4640
+ * roomWorld.update(deltaTime);
4641
+ * ```
4642
+ */
4643
+ declare class World {
4644
+ readonly name: string;
4645
+ private readonly _config;
4646
+ private readonly _scenes;
4647
+ private readonly _activeScenes;
4648
+ private readonly _globalSystems;
4649
+ private _isActive;
4650
+ private _createdAt;
4651
+ constructor(config?: IWorldConfig);
4652
+ /**
4653
+ * 创建并添加Scene到World
4654
+ */
4655
+ createScene<T extends IScene>(sceneId: string, sceneInstance?: T): T;
4656
+ /**
4657
+ * 移除Scene
4658
+ */
4659
+ removeScene(sceneId: string): boolean;
4660
+ /**
4661
+ * 获取Scene
4662
+ */
4663
+ getScene<T extends IScene>(sceneId: string): T | null;
4664
+ /**
4665
+ * 获取所有Scene ID
4666
+ */
4667
+ getSceneIds(): string[];
4668
+ /**
4669
+ * 获取所有Scene
4670
+ */
4671
+ getAllScenes(): IScene[];
4672
+ /**
4673
+ * 设置Scene激活状态
4674
+ */
4675
+ setSceneActive(sceneId: string, active: boolean): void;
4676
+ /**
4677
+ * 检查Scene是否激活
4678
+ */
4679
+ isSceneActive(sceneId: string): boolean;
4680
+ /**
4681
+ * 获取活跃Scene数量
4682
+ */
4683
+ getActiveSceneCount(): number;
4684
+ /**
4685
+ * 添加全局System
4686
+ * 全局System会在所有激活Scene之前更新
4687
+ */
4688
+ addGlobalSystem<T extends IGlobalSystem>(system: T): T;
4689
+ /**
4690
+ * 移除全局System
4691
+ */
4692
+ removeGlobalSystem(system: IGlobalSystem): boolean;
4693
+ /**
4694
+ * 获取全局System
4695
+ */
4696
+ getGlobalSystem<T extends IGlobalSystem>(type: new (...args: any[]) => T): T | null;
4697
+ /**
4698
+ * 启动World
4699
+ */
4700
+ start(): void;
4701
+ /**
4702
+ * 停止World
4703
+ */
4704
+ stop(): void;
4705
+ /**
4706
+ * 更新World中的全局System
4707
+ * 注意:此方法由Core.update()调用,不应直接调用
4708
+ */
4709
+ updateGlobalSystems(): void;
4710
+ /**
4711
+ * 更新World中的所有激活Scene
4712
+ * 注意:此方法由Core.update()调用,不应直接调用
4713
+ */
4714
+ updateScenes(): void;
4715
+ /**
4716
+ * 销毁World
4717
+ */
4718
+ destroy(): void;
4719
+ /**
4720
+ * 获取World状态
4721
+ */
4722
+ getStatus(): {
4723
+ name: string;
4724
+ isActive: boolean;
4725
+ sceneCount: number;
4726
+ activeSceneCount: number;
4727
+ globalSystemCount: number;
4728
+ createdAt: number;
4729
+ config: {
4730
+ /**
4731
+ * World名称
4732
+ */
4733
+ name?: string;
4734
+ /**
4735
+ * 是否启用调试模式
4736
+ */
4737
+ debug?: boolean;
4738
+ /**
4739
+ * 最大Scene数量限制
4740
+ */
4741
+ maxScenes?: number;
4742
+ /**
4743
+ * 是否自动清理空Scene
4744
+ */
4745
+ autoCleanup?: boolean;
4746
+ };
4747
+ scenes: {
4748
+ id: string;
4749
+ isActive: boolean;
4750
+ name: string;
4751
+ }[];
4752
+ };
4753
+ /**
4754
+ * 获取World统计信息
4755
+ */
4756
+ getStats(): {
4757
+ totalEntities: number;
4758
+ totalSystems: number;
4759
+ memoryUsage: number;
4760
+ performance: {
4761
+ averageUpdateTime: number;
4762
+ maxUpdateTime: number;
4763
+ };
4764
+ };
4765
+ /**
4766
+ * 检查是否应该执行自动清理
4767
+ */
4768
+ private shouldAutoCleanup;
4769
+ /**
4770
+ * 执行清理操作
4771
+ */
4772
+ private cleanup;
4773
+ /**
4774
+ * 检查World是否激活
4775
+ */
4776
+ get isActive(): boolean;
4777
+ /**
4778
+ * 获取Scene数量
4779
+ */
4780
+ get sceneCount(): number;
4781
+ /**
4782
+ * 获取创建时间
4783
+ */
4784
+ get createdAt(): number;
4785
+ }
4786
+
4787
+ /**
4788
+ * WorldManager配置接口
4789
+ */
4790
+ interface IWorldManagerConfig {
4791
+ /**
4792
+ * 最大World数量
4793
+ */
4794
+ maxWorlds?: number;
4795
+ /**
4796
+ * 是否自动清理空World
4797
+ */
4798
+ autoCleanup?: boolean;
4799
+ /**
4800
+ * 清理间隔(毫秒)
4801
+ */
4802
+ cleanupInterval?: number;
4803
+ /**
4804
+ * 是否启用调试模式
4805
+ */
4806
+ debug?: boolean;
4807
+ }
4808
+ /**
4809
+ * World管理器 - 管理所有World实例
4810
+ *
4811
+ * WorldManager是全局单例,负责管理所有World的生命周期。
4812
+ * 每个World都是独立的ECS环境,可以包含多个Scene。
4813
+ *
4814
+ * 设计理念:
4815
+ * - Core负责单Scene的传统ECS管理
4816
+ * - World负责多Scene的管理和协调
4817
+ * - WorldManager负责多World的全局管理
4818
+ *
4819
+ * @example
4820
+ * ```typescript
4821
+ * // 获取全局WorldManager
4822
+ * const worldManager = WorldManager.getInstance();
4823
+ *
4824
+ * // 创建游戏房间World
4825
+ * const roomWorld = worldManager.createWorld('room_001', {
4826
+ * name: 'GameRoom_001',
4827
+ * maxScenes: 5
4828
+ * });
4829
+ *
4830
+ * // 在游戏循环中更新所有World
4831
+ * worldManager.updateAll(deltaTime);
4832
+ * ```
4833
+ */
4834
+ declare class WorldManager {
4835
+ private static _instance;
4836
+ private readonly _config;
4837
+ private readonly _worlds;
4838
+ private readonly _activeWorlds;
4839
+ private _cleanupTimer;
4840
+ private _isRunning;
4841
+ private constructor();
4842
+ /**
4843
+ * 获取WorldManager单例实例
4844
+ */
4845
+ static getInstance(config?: IWorldManagerConfig): WorldManager;
4846
+ /**
4847
+ * 重置WorldManager实例(主要用于测试)
4848
+ */
4849
+ static reset(): void;
4850
+ /**
4851
+ * 创建新World
4852
+ */
4853
+ createWorld(worldId: string, config?: IWorldConfig): World;
4854
+ /**
4855
+ * 移除World
4856
+ */
4857
+ removeWorld(worldId: string): boolean;
4858
+ /**
4859
+ * 获取World
4860
+ */
4861
+ getWorld(worldId: string): World | null;
4862
+ /**
4863
+ * 获取所有World ID
4864
+ */
4865
+ getWorldIds(): string[];
4866
+ /**
4867
+ * 获取所有World
4868
+ */
4869
+ getAllWorlds(): World[];
4870
+ /**
4871
+ * 设置World激活状态
4872
+ */
4873
+ setWorldActive(worldId: string, active: boolean): void;
4874
+ /**
4875
+ * 检查World是否激活
4876
+ */
4877
+ isWorldActive(worldId: string): boolean;
4878
+ /**
4879
+ * 获取所有激活的World
4880
+ * 注意:此方法供Core.update()使用
4881
+ */
4882
+ getActiveWorlds(): World[];
4883
+ /**
4884
+ * 启动所有World
4885
+ */
4886
+ startAll(): void;
4887
+ /**
4888
+ * 停止所有World
4889
+ */
4890
+ stopAll(): void;
4891
+ /**
4892
+ * 查找满足条件的World
4893
+ */
4894
+ findWorlds(predicate: (world: World) => boolean): World[];
4895
+ /**
4896
+ * 根据名称查找World
4897
+ */
4898
+ findWorldByName(name: string): World | null;
4899
+ /**
4900
+ * 获取WorldManager统计信息
4901
+ */
4902
+ getStats(): {
4903
+ totalWorlds: number;
4904
+ activeWorlds: number;
4905
+ totalScenes: number;
4906
+ totalEntities: number;
4907
+ totalSystems: number;
4908
+ memoryUsage: number;
4909
+ isRunning: boolean;
4910
+ config: {
4911
+ /**
4912
+ * 最大World数量
4913
+ */
4914
+ maxWorlds?: number;
4915
+ /**
4916
+ * 是否自动清理空World
4917
+ */
4918
+ autoCleanup?: boolean;
4919
+ /**
4920
+ * 清理间隔(毫秒)
4921
+ */
4922
+ cleanupInterval?: number;
4923
+ /**
4924
+ * 是否启用调试模式
4925
+ */
4926
+ debug?: boolean;
4927
+ };
4928
+ worlds: any[];
4929
+ };
4930
+ /**
4931
+ * 获取详细状态信息
4932
+ */
4933
+ getDetailedStatus(): {
4934
+ worlds: {
4935
+ id: string;
4936
+ isActive: boolean;
4937
+ status: {
4938
+ name: string;
4939
+ isActive: boolean;
4940
+ sceneCount: number;
4941
+ activeSceneCount: number;
4942
+ globalSystemCount: number;
4943
+ createdAt: number;
4944
+ config: {
4945
+ name?: string;
4946
+ debug?: boolean;
4947
+ maxScenes?: number;
4948
+ autoCleanup?: boolean;
4949
+ };
4950
+ scenes: {
4951
+ id: string;
4952
+ isActive: boolean;
4953
+ name: string;
4954
+ }[];
4955
+ };
4956
+ }[];
4957
+ totalWorlds: number;
4958
+ activeWorlds: number;
4959
+ totalScenes: number;
4960
+ totalEntities: number;
4961
+ totalSystems: number;
4962
+ memoryUsage: number;
4963
+ isRunning: boolean;
4964
+ config: {
4965
+ /**
4966
+ * 最大World数量
4967
+ */
4968
+ maxWorlds?: number;
4969
+ /**
4970
+ * 是否自动清理空World
4971
+ */
4972
+ autoCleanup?: boolean;
4973
+ /**
4974
+ * 清理间隔(毫秒)
4975
+ */
4976
+ cleanupInterval?: number;
4977
+ /**
4978
+ * 是否启用调试模式
4979
+ */
4980
+ debug?: boolean;
4981
+ };
4982
+ };
4983
+ /**
4984
+ * 清理空World
4985
+ */
4986
+ cleanup(): number;
4987
+ /**
4988
+ * 销毁WorldManager
4989
+ */
4990
+ destroy(): void;
4991
+ /**
4992
+ * 启动清理定时器
4993
+ */
4994
+ private startCleanupTimer;
4995
+ /**
4996
+ * 停止清理定时器
4997
+ */
4998
+ private stopCleanupTimer;
4999
+ /**
5000
+ * 判断World是否应该被清理
5001
+ */
5002
+ private shouldCleanupWorld;
5003
+ /**
5004
+ * 获取World总数
5005
+ */
5006
+ get worldCount(): number;
5007
+ /**
5008
+ * 获取激活World数量
5009
+ */
5010
+ get activeWorldCount(): number;
5011
+ /**
5012
+ * 检查是否正在运行
5013
+ */
5014
+ get isRunning(): boolean;
5015
+ /**
5016
+ * 获取配置
5017
+ */
5018
+ get config(): IWorldManagerConfig;
5019
+ }
5020
+
4574
5021
  /**
4575
5022
  * 实体数据收集器
4576
5023
  */
@@ -4934,6 +5381,18 @@ declare class Core {
4934
5381
  * 当设置为true时,游戏循环将暂停执行。
4935
5382
  */
4936
5383
  static paused: boolean;
5384
+ /**
5385
+ * 默认World ID
5386
+ *
5387
+ * 用于单Scene模式的默认World标识
5388
+ */
5389
+ private static readonly DEFAULT_WORLD_ID;
5390
+ /**
5391
+ * 默认Scene ID
5392
+ *
5393
+ * 用于单Scene模式的默认Scene标识
5394
+ */
5395
+ private static readonly DEFAULT_SCENE_ID;
4937
5396
  /**
4938
5397
  * 全局核心实例
4939
5398
  */
@@ -4954,12 +5413,6 @@ declare class Core {
4954
5413
  * 在调试模式下会启用额外的性能监控和错误检查。
4955
5414
  */
4956
5415
  readonly debug: boolean;
4957
- /**
4958
- * 待切换的场景
4959
- *
4960
- * 存储下一帧要切换到的场景实例。
4961
- */
4962
- _nextScene: IScene | null;
4963
5416
  /**
4964
5417
  * 全局管理器集合
4965
5418
  *
@@ -4990,16 +5443,18 @@ declare class Core {
4990
5443
  * 提供便捷的ECS操作接口。
4991
5444
  */
4992
5445
  _ecsAPI?: ECSFluentAPI;
4993
- /**
4994
- * 当前活动场景
4995
- */
4996
- _scene?: IScene;
4997
5446
  /**
4998
5447
  * 调试管理器
4999
5448
  *
5000
5449
  * 负责收集和发送调试数据。
5001
5450
  */
5002
5451
  _debugManager?: DebugManager;
5452
+ /**
5453
+ * World管理器
5454
+ *
5455
+ * 管理多个World实例,支持多房间/多世界架构。
5456
+ */
5457
+ _worldManager?: WorldManager;
5003
5458
  /**
5004
5459
  * Core配置
5005
5460
  */
@@ -5021,58 +5476,24 @@ declare class Core {
5021
5476
  */
5022
5477
  static get Instance(): Core;
5023
5478
  /**
5024
- * 获取当前活动的场景
5479
+ * 获取当前活动的场景(属性访问器)
5025
5480
  *
5026
5481
  * @returns 当前场景实例,如果没有则返回null
5027
5482
  */
5028
5483
  static get scene(): IScene | null;
5029
5484
  /**
5030
- * 设置当前场景(已废弃)
5031
- *
5032
- * @deprecated 请使用 Core.setScene() 方法代替。scene setter 可能导致场景延迟激活的时序问题,
5033
- * 而 setScene() 提供更好的类型安全性和可预测的激活时序。
5034
- *
5035
- * 迁移示例:
5036
- * ```typescript
5037
- * // 旧方式(已废弃)
5038
- * Core.scene = myScene;
5039
- *
5040
- * // 新方式(推荐)
5041
- * Core.setScene(myScene);
5042
- * ```
5485
+ * 获取当前活动的场景(方法调用)
5043
5486
  *
5044
- * 如果当前没有场景,会立即切换;否则会在下一帧切换。
5045
- *
5046
- * @param value - 场景实例
5487
+ * @returns 当前场景实例,如果没有则返回null
5047
5488
  */
5048
- static set scene(value: IScene | null);
5489
+ static getScene<T extends IScene>(): T | null;
5049
5490
  /**
5050
- * 类型安全的场景设置方法(推荐)
5051
- *
5052
- * 这是设置场景的推荐方法,提供更好的类型安全性和可预测的激活时序。
5053
- * 相比于 scene setter,此方法能确保场景正确初始化和激活。
5054
- *
5055
- * 如果当前没有场景,会立即切换;否则会在下一帧切换。
5491
+ * 设置当前场景
5056
5492
  *
5057
5493
  * @param scene - 要设置的场景实例
5058
5494
  * @returns 设置的场景实例,便于链式调用
5059
- *
5060
- * @example
5061
- * ```typescript
5062
- * const myScene = new MyScene();
5063
- * Core.setScene(myScene);
5064
- *
5065
- * // 链式调用
5066
- * const scene = Core.setScene(new MyScene()).addSystem(new MySystem());
5067
- * ```
5068
5495
  */
5069
5496
  static setScene<T extends IScene>(scene: T): T;
5070
- /**
5071
- * 类型安全的场景获取方法
5072
- *
5073
- * @returns 当前场景实例
5074
- */
5075
- static getScene<T extends IScene>(): T | null;
5076
5497
  /**
5077
5498
  * 创建Core实例
5078
5499
  *
@@ -5182,11 +5603,23 @@ declare class Core {
5182
5603
  */
5183
5604
  static get supportsBigInt(): boolean;
5184
5605
  /**
5185
- * 内部场景设置方法
5606
+ * 获取WorldManager实例
5186
5607
  *
5187
- * @param scene - 要设置的场景实例
5608
+ * @returns WorldManager实例,如果未初始化则自动创建
5609
+ */
5610
+ static getWorldManager(): WorldManager;
5611
+ /**
5612
+ * 启用World管理
5613
+ *
5614
+ * 显式启用World功能,用于多房间/多世界架构
5615
+ */
5616
+ static enableWorldManager(): WorldManager;
5617
+ /**
5618
+ * 确保默认World存在
5619
+ *
5620
+ * 内部方法,用于懒初始化默认World
5188
5621
  */
5189
- private setSceneInternal;
5622
+ private ensureDefaultWorld;
5190
5623
  /**
5191
5624
  * 场景切换回调
5192
5625
  *
@@ -6879,5 +7312,5 @@ declare class Time {
6879
7312
  static checkEvery(interval: number, lastTime: number): boolean;
6880
7313
  }
6881
7314
 
6882
- export { ArchetypeSystem, AsyncEventHandler, BigIntFactory, Bits, COMPONENT_TYPE_NAME, Component, ComponentDataCollector, ComponentIndex, ComponentIndexManager, ComponentPool, ComponentPoolManager, ComponentRegistry, ComponentSparseSet, ComponentStorage, ComponentTypeManager, ConsoleLogger, Core, DebugManager, DirtyFlag, DirtyTrackingSystem, ECSComponent, ECSEventType, ECSFluentAPI, ECSSystem, EVENT_TYPES, Emitter, EnableSoA, Entity, EntityDataCollector, EntityList, EntityManager, EntityProcessorList, EntityQueryBuilder, EntitySystem, EventBus, EventHandler, EventPriority, EventTypeValidator, Float32, Float64, FuncPack, GlobalEventBus, GlobalManager, HighPrecision, IdentifierPool, Int32, IntervalSystem, LogLevel, Logger, LoggerManager, Matcher, NumberExtension, PassiveSystem, PerformanceDataCollector, PerformanceMonitor, PerformanceWarningType, Pool, PoolManager, ProcessingSystem, QuerySystem, SYSTEM_TYPE_NAME, Scene, SceneDataCollector, SerializeMap, SoAStorage, SparseSet, SystemDataCollector, Time, Timer, TimerManager, TypeSafeEventSystem, TypeUtils, WebSocketManager, createECSAPI, createLogger, getComponentInstanceTypeName, getComponentTypeName, getSystemInstanceTypeName, getSystemTypeName, setGlobalLogLevel };
6883
- export type { Archetype, ArchetypeQueryResult, ComponentType$1 as ComponentType, DirtyData, DirtyListener, EventListenerConfig, EventStats, IComponent, IComponentDebugData, IComponentEventData, IComponentIndex, ICoreConfig, IECSDebugConfig, IECSDebugData, IEntityDebugData, IEntityEventData, IEntityHierarchyNode, IEventBus, IEventData, IEventListenerConfig, IEventStats, ILogger, IPerformanceDebugData, IPerformanceEventData, IPoolable, IScene, ISceneConfig, ISceneDebugData, ISceneEventData, ISceneFactory, ISystemBase, ISystemDebugData, ISystemEventData, ITimer, IndexStats, LoggerConfig, PerformanceData, PerformanceStats, PerformanceThresholds, PerformanceWarning, PoolStats };
7315
+ export { ArchetypeSystem, AsyncEventHandler, BigIntFactory, Bits, COMPONENT_TYPE_NAME, Component, ComponentDataCollector, ComponentIndex, ComponentIndexManager, ComponentPool, ComponentPoolManager, ComponentRegistry, ComponentSparseSet, ComponentStorage, ComponentTypeManager, ConsoleLogger, Core, DebugManager, DirtyFlag, DirtyTrackingSystem, ECSComponent, ECSEventType, ECSFluentAPI, ECSSystem, EVENT_TYPES, Emitter, EnableSoA, Entity, EntityDataCollector, EntityList, EntityManager, EntityProcessorList, EntityQueryBuilder, EntitySystem, EventBus, EventHandler, EventPriority, EventTypeValidator, Float32, Float64, FuncPack, GlobalEventBus, GlobalManager, HighPrecision, IdentifierPool, Int32, IntervalSystem, LogLevel, Logger, LoggerManager, Matcher, NumberExtension, PassiveSystem, PerformanceDataCollector, PerformanceMonitor, PerformanceWarningType, Pool, PoolManager, ProcessingSystem, QuerySystem, SYSTEM_TYPE_NAME, Scene, SceneDataCollector, SerializeMap, SoAStorage, SparseSet, SystemDataCollector, Time, Timer, TimerManager, TypeSafeEventSystem, TypeUtils, WebSocketManager, World, WorldManager, createECSAPI, createLogger, getComponentInstanceTypeName, getComponentTypeName, getSystemInstanceTypeName, getSystemTypeName, setGlobalLogLevel };
7316
+ export type { Archetype, ArchetypeQueryResult, ComponentType$1 as ComponentType, DirtyData, DirtyListener, EventListenerConfig, EventStats, IComponent, IComponentDebugData, IComponentEventData, IComponentIndex, ICoreConfig, IECSDebugConfig, IECSDebugData, IEntityDebugData, IEntityEventData, IEntityHierarchyNode, IEventBus, IEventData, IEventListenerConfig, IEventStats, ILogger, IPerformanceDebugData, IPerformanceEventData, IPoolable, IScene, ISceneConfig, ISceneDebugData, ISceneEventData, ISceneFactory, ISystemBase, ISystemDebugData, ISystemEventData, ITimer, IWorldConfig, IWorldManagerConfig, IndexStats, LoggerConfig, PerformanceData, PerformanceStats, PerformanceThresholds, PerformanceWarning, PoolStats };