@esengine/ecs-framework 2.2.20 → 2.3.0

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.
Files changed (491) hide show
  1. package/bin/Core/DI/Decorators.d.ts +206 -0
  2. package/bin/Core/DI/Decorators.d.ts.map +1 -0
  3. package/bin/Core/DI/Decorators.js +253 -0
  4. package/bin/Core/DI/Decorators.js.map +1 -0
  5. package/bin/Core/DI/index.d.ts +8 -0
  6. package/bin/Core/DI/index.d.ts.map +1 -0
  7. package/bin/Core/DI/index.js +7 -0
  8. package/bin/Core/DI/index.js.map +1 -0
  9. package/bin/Core/Plugin.d.ts +112 -0
  10. package/bin/Core/Plugin.d.ts.map +1 -0
  11. package/bin/Core/Plugin.js +19 -0
  12. package/bin/Core/Plugin.js.map +1 -0
  13. package/bin/Core/PluginManager.d.ts +118 -0
  14. package/bin/Core/PluginManager.d.ts.map +1 -0
  15. package/bin/Core/PluginManager.js +229 -0
  16. package/bin/Core/PluginManager.js.map +1 -0
  17. package/bin/Core/ServiceContainer.d.ts +221 -0
  18. package/bin/Core/ServiceContainer.d.ts.map +1 -0
  19. package/bin/Core/ServiceContainer.js +352 -0
  20. package/bin/Core/ServiceContainer.js.map +1 -0
  21. package/bin/Core.d.ts +379 -0
  22. package/bin/Core.d.ts.map +1 -0
  23. package/bin/Core.js +553 -0
  24. package/bin/Core.js.map +1 -0
  25. package/bin/ECS/Component.d.ts +104 -0
  26. package/bin/ECS/Component.d.ts.map +1 -0
  27. package/bin/ECS/Component.js +105 -0
  28. package/bin/ECS/Component.js.map +1 -0
  29. package/bin/ECS/Components/HierarchyComponent.d.ts +46 -0
  30. package/bin/ECS/Components/HierarchyComponent.d.ts.map +1 -0
  31. package/bin/ECS/Components/HierarchyComponent.js +65 -0
  32. package/bin/ECS/Components/HierarchyComponent.js.map +1 -0
  33. package/bin/ECS/Components/index.d.ts +2 -0
  34. package/bin/ECS/Components/index.d.ts.map +1 -0
  35. package/bin/ECS/Components/index.js +2 -0
  36. package/bin/ECS/Components/index.js.map +1 -0
  37. package/bin/ECS/Core/ArchetypeSystem.d.ts +103 -0
  38. package/bin/ECS/Core/ArchetypeSystem.d.ts.map +1 -0
  39. package/bin/ECS/Core/ArchetypeSystem.js +244 -0
  40. package/bin/ECS/Core/ArchetypeSystem.js.map +1 -0
  41. package/bin/ECS/Core/CommandBuffer.d.ts +154 -0
  42. package/bin/ECS/Core/CommandBuffer.d.ts.map +1 -0
  43. package/bin/ECS/Core/CommandBuffer.js +244 -0
  44. package/bin/ECS/Core/CommandBuffer.js.map +1 -0
  45. package/bin/ECS/Core/ComponentPool.d.ts +139 -0
  46. package/bin/ECS/Core/ComponentPool.d.ts.map +1 -0
  47. package/bin/ECS/Core/ComponentPool.js +276 -0
  48. package/bin/ECS/Core/ComponentPool.js.map +1 -0
  49. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts +127 -0
  50. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts.map +1 -0
  51. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js +235 -0
  52. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js.map +1 -0
  53. package/bin/ECS/Core/ComponentStorage.d.ts +185 -0
  54. package/bin/ECS/Core/ComponentStorage.d.ts.map +1 -0
  55. package/bin/ECS/Core/ComponentStorage.js +321 -0
  56. package/bin/ECS/Core/ComponentStorage.js.map +1 -0
  57. package/bin/ECS/Core/EntityLifecyclePolicy.d.ts +26 -0
  58. package/bin/ECS/Core/EntityLifecyclePolicy.d.ts.map +1 -0
  59. package/bin/ECS/Core/EntityLifecyclePolicy.js +2 -0
  60. package/bin/ECS/Core/EntityLifecyclePolicy.js.map +1 -0
  61. package/bin/ECS/Core/EventBus.d.ts +210 -0
  62. package/bin/ECS/Core/EventBus.d.ts.map +1 -0
  63. package/bin/ECS/Core/EventBus.js +370 -0
  64. package/bin/ECS/Core/EventBus.js.map +1 -0
  65. package/bin/ECS/Core/EventSystem.d.ts +225 -0
  66. package/bin/ECS/Core/EventSystem.d.ts.map +1 -0
  67. package/bin/ECS/Core/EventSystem.js +448 -0
  68. package/bin/ECS/Core/EventSystem.js.map +1 -0
  69. package/bin/ECS/Core/Events/index.d.ts +3 -0
  70. package/bin/ECS/Core/Events/index.d.ts.map +1 -0
  71. package/bin/ECS/Core/Events/index.js +3 -0
  72. package/bin/ECS/Core/Events/index.js.map +1 -0
  73. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts +35 -0
  74. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts.map +1 -0
  75. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js +48 -0
  76. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js.map +1 -0
  77. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts +135 -0
  78. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts.map +1 -0
  79. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js +166 -0
  80. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js.map +1 -0
  81. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts +58 -0
  82. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts.map +1 -0
  83. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js +85 -0
  84. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js.map +1 -0
  85. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts +110 -0
  86. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts.map +1 -0
  87. package/bin/ECS/Core/FluentAPI/EntityBuilder.js +181 -0
  88. package/bin/ECS/Core/FluentAPI/EntityBuilder.js.map +1 -0
  89. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts +53 -0
  90. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts.map +1 -0
  91. package/bin/ECS/Core/FluentAPI/SceneBuilder.js +79 -0
  92. package/bin/ECS/Core/FluentAPI/SceneBuilder.js.map +1 -0
  93. package/bin/ECS/Core/FluentAPI/index.d.ts +6 -0
  94. package/bin/ECS/Core/FluentAPI/index.d.ts.map +1 -0
  95. package/bin/ECS/Core/FluentAPI/index.js +6 -0
  96. package/bin/ECS/Core/FluentAPI/index.js.map +1 -0
  97. package/bin/ECS/Core/FluentAPI.d.ts +2 -0
  98. package/bin/ECS/Core/FluentAPI.d.ts.map +1 -0
  99. package/bin/ECS/Core/FluentAPI.js +3 -0
  100. package/bin/ECS/Core/FluentAPI.js.map +1 -0
  101. package/bin/ECS/Core/Query/TypedQuery.d.ts +214 -0
  102. package/bin/ECS/Core/Query/TypedQuery.d.ts.map +1 -0
  103. package/bin/ECS/Core/Query/TypedQuery.js +294 -0
  104. package/bin/ECS/Core/Query/TypedQuery.js.map +1 -0
  105. package/bin/ECS/Core/Query/index.d.ts +3 -0
  106. package/bin/ECS/Core/Query/index.d.ts.map +1 -0
  107. package/bin/ECS/Core/Query/index.js +3 -0
  108. package/bin/ECS/Core/Query/index.js.map +1 -0
  109. package/bin/ECS/Core/QuerySystem.d.ts +458 -0
  110. package/bin/ECS/Core/QuerySystem.d.ts.map +1 -0
  111. package/bin/ECS/Core/QuerySystem.js +1069 -0
  112. package/bin/ECS/Core/QuerySystem.js.map +1 -0
  113. package/bin/ECS/Core/QueryTypes.d.ts +34 -0
  114. package/bin/ECS/Core/QueryTypes.d.ts.map +1 -0
  115. package/bin/ECS/Core/QueryTypes.js +13 -0
  116. package/bin/ECS/Core/QueryTypes.js.map +1 -0
  117. package/bin/ECS/Core/ReactiveQuery.d.ts +211 -0
  118. package/bin/ECS/Core/ReactiveQuery.d.ts.map +1 -0
  119. package/bin/ECS/Core/ReactiveQuery.js +401 -0
  120. package/bin/ECS/Core/ReactiveQuery.js.map +1 -0
  121. package/bin/ECS/Core/ReferenceTracker.d.ts +111 -0
  122. package/bin/ECS/Core/ReferenceTracker.d.ts.map +1 -0
  123. package/bin/ECS/Core/ReferenceTracker.js +254 -0
  124. package/bin/ECS/Core/ReferenceTracker.js.map +1 -0
  125. package/bin/ECS/Core/SoASerializer.d.ts +28 -0
  126. package/bin/ECS/Core/SoASerializer.d.ts.map +1 -0
  127. package/bin/ECS/Core/SoASerializer.js +85 -0
  128. package/bin/ECS/Core/SoASerializer.js.map +1 -0
  129. package/bin/ECS/Core/SoAStorage.d.ts +129 -0
  130. package/bin/ECS/Core/SoAStorage.d.ts.map +1 -0
  131. package/bin/ECS/Core/SoAStorage.js +685 -0
  132. package/bin/ECS/Core/SoAStorage.js.map +1 -0
  133. package/bin/ECS/Core/SoATypeRegistry.d.ts +50 -0
  134. package/bin/ECS/Core/SoATypeRegistry.d.ts.map +1 -0
  135. package/bin/ECS/Core/SoATypeRegistry.js +135 -0
  136. package/bin/ECS/Core/SoATypeRegistry.js.map +1 -0
  137. package/bin/ECS/Core/Storage/index.d.ts +4 -0
  138. package/bin/ECS/Core/Storage/index.d.ts.map +1 -0
  139. package/bin/ECS/Core/Storage/index.js +4 -0
  140. package/bin/ECS/Core/Storage/index.js.map +1 -0
  141. package/bin/ECS/Core/StorageDecorators.d.ts +20 -0
  142. package/bin/ECS/Core/StorageDecorators.d.ts.map +1 -0
  143. package/bin/ECS/Core/StorageDecorators.js +27 -0
  144. package/bin/ECS/Core/StorageDecorators.js.map +1 -0
  145. package/bin/ECS/CoreEvents.d.ts +131 -0
  146. package/bin/ECS/CoreEvents.d.ts.map +1 -0
  147. package/bin/ECS/CoreEvents.js +163 -0
  148. package/bin/ECS/CoreEvents.js.map +1 -0
  149. package/bin/ECS/Decorators/EntityRefDecorator.d.ts +46 -0
  150. package/bin/ECS/Decorators/EntityRefDecorator.d.ts.map +1 -0
  151. package/bin/ECS/Decorators/EntityRefDecorator.js +118 -0
  152. package/bin/ECS/Decorators/EntityRefDecorator.js.map +1 -0
  153. package/bin/ECS/Decorators/PropertyDecorator.d.ts +168 -0
  154. package/bin/ECS/Decorators/PropertyDecorator.d.ts.map +1 -0
  155. package/bin/ECS/Decorators/PropertyDecorator.js +40 -0
  156. package/bin/ECS/Decorators/PropertyDecorator.js.map +1 -0
  157. package/bin/ECS/Decorators/TypeDecorators.d.ts +124 -0
  158. package/bin/ECS/Decorators/TypeDecorators.d.ts.map +1 -0
  159. package/bin/ECS/Decorators/TypeDecorators.js +151 -0
  160. package/bin/ECS/Decorators/TypeDecorators.js.map +1 -0
  161. package/bin/ECS/Decorators/index.d.ts +7 -0
  162. package/bin/ECS/Decorators/index.d.ts.map +1 -0
  163. package/bin/ECS/Decorators/index.js +4 -0
  164. package/bin/ECS/Decorators/index.js.map +1 -0
  165. package/bin/ECS/Entity.d.ts +415 -0
  166. package/bin/ECS/Entity.d.ts.map +1 -0
  167. package/bin/ECS/Entity.js +683 -0
  168. package/bin/ECS/Entity.js.map +1 -0
  169. package/bin/ECS/EntityTags.d.ts +71 -0
  170. package/bin/ECS/EntityTags.d.ts.map +1 -0
  171. package/bin/ECS/EntityTags.js +82 -0
  172. package/bin/ECS/EntityTags.js.map +1 -0
  173. package/bin/ECS/IScene.d.ts +308 -0
  174. package/bin/ECS/IScene.d.ts.map +1 -0
  175. package/bin/ECS/IScene.js +2 -0
  176. package/bin/ECS/IScene.js.map +1 -0
  177. package/bin/ECS/Scene.d.ts +799 -0
  178. package/bin/ECS/Scene.d.ts.map +1 -0
  179. package/bin/ECS/Scene.js +1203 -0
  180. package/bin/ECS/Scene.js.map +1 -0
  181. package/bin/ECS/SceneManager.d.ts +197 -0
  182. package/bin/ECS/SceneManager.d.ts.map +1 -0
  183. package/bin/ECS/SceneManager.js +264 -0
  184. package/bin/ECS/SceneManager.js.map +1 -0
  185. package/bin/ECS/Serialization/ComponentSerializer.d.ts +106 -0
  186. package/bin/ECS/Serialization/ComponentSerializer.d.ts.map +1 -0
  187. package/bin/ECS/Serialization/ComponentSerializer.js +251 -0
  188. package/bin/ECS/Serialization/ComponentSerializer.js.map +1 -0
  189. package/bin/ECS/Serialization/EntitySerializer.d.ts +111 -0
  190. package/bin/ECS/Serialization/EntitySerializer.d.ts.map +1 -0
  191. package/bin/ECS/Serialization/EntitySerializer.js +155 -0
  192. package/bin/ECS/Serialization/EntitySerializer.js.map +1 -0
  193. package/bin/ECS/Serialization/IncrementalSerializer.d.ts +259 -0
  194. package/bin/ECS/Serialization/IncrementalSerializer.d.ts.map +1 -0
  195. package/bin/ECS/Serialization/IncrementalSerializer.js +500 -0
  196. package/bin/ECS/Serialization/IncrementalSerializer.js.map +1 -0
  197. package/bin/ECS/Serialization/SceneSerializer.d.ts +213 -0
  198. package/bin/ECS/Serialization/SceneSerializer.d.ts.map +1 -0
  199. package/bin/ECS/Serialization/SceneSerializer.js +387 -0
  200. package/bin/ECS/Serialization/SceneSerializer.js.map +1 -0
  201. package/bin/ECS/Serialization/SerializationDecorators.d.ts +136 -0
  202. package/bin/ECS/Serialization/SerializationDecorators.d.ts.map +1 -0
  203. package/bin/ECS/Serialization/SerializationDecorators.js +216 -0
  204. package/bin/ECS/Serialization/SerializationDecorators.js.map +1 -0
  205. package/bin/ECS/Serialization/VersionMigration.d.ts +156 -0
  206. package/bin/ECS/Serialization/VersionMigration.d.ts.map +1 -0
  207. package/bin/ECS/Serialization/VersionMigration.js +279 -0
  208. package/bin/ECS/Serialization/VersionMigration.js.map +1 -0
  209. package/bin/ECS/Serialization/index.d.ts +18 -0
  210. package/bin/ECS/Serialization/index.d.ts.map +1 -0
  211. package/bin/ECS/Serialization/index.js +18 -0
  212. package/bin/ECS/Serialization/index.js.map +1 -0
  213. package/bin/ECS/Systems/EntityCache.d.ts +114 -0
  214. package/bin/ECS/Systems/EntityCache.d.ts.map +1 -0
  215. package/bin/ECS/Systems/EntityCache.js +145 -0
  216. package/bin/ECS/Systems/EntityCache.js.map +1 -0
  217. package/bin/ECS/Systems/EntitySystem.d.ts +591 -0
  218. package/bin/ECS/Systems/EntitySystem.d.ts.map +1 -0
  219. package/bin/ECS/Systems/EntitySystem.js +1102 -0
  220. package/bin/ECS/Systems/EntitySystem.js.map +1 -0
  221. package/bin/ECS/Systems/HierarchySystem.d.ts +155 -0
  222. package/bin/ECS/Systems/HierarchySystem.d.ts.map +1 -0
  223. package/bin/ECS/Systems/HierarchySystem.js +498 -0
  224. package/bin/ECS/Systems/HierarchySystem.js.map +1 -0
  225. package/bin/ECS/Systems/IntervalSystem.d.ts +33 -0
  226. package/bin/ECS/Systems/IntervalSystem.d.ts.map +1 -0
  227. package/bin/ECS/Systems/IntervalSystem.js +50 -0
  228. package/bin/ECS/Systems/IntervalSystem.js.map +1 -0
  229. package/bin/ECS/Systems/PassiveSystem.d.ts +17 -0
  230. package/bin/ECS/Systems/PassiveSystem.d.ts.map +1 -0
  231. package/bin/ECS/Systems/PassiveSystem.js +19 -0
  232. package/bin/ECS/Systems/PassiveSystem.js.map +1 -0
  233. package/bin/ECS/Systems/ProcessingSystem.d.ts +21 -0
  234. package/bin/ECS/Systems/ProcessingSystem.d.ts.map +1 -0
  235. package/bin/ECS/Systems/ProcessingSystem.js +20 -0
  236. package/bin/ECS/Systems/ProcessingSystem.js.map +1 -0
  237. package/bin/ECS/Systems/WorkerEntitySystem.d.ts +313 -0
  238. package/bin/ECS/Systems/WorkerEntitySystem.d.ts.map +1 -0
  239. package/bin/ECS/Systems/WorkerEntitySystem.js +792 -0
  240. package/bin/ECS/Systems/WorkerEntitySystem.js.map +1 -0
  241. package/bin/ECS/Systems/index.d.ts +8 -0
  242. package/bin/ECS/Systems/index.d.ts.map +1 -0
  243. package/bin/ECS/Systems/index.js +8 -0
  244. package/bin/ECS/Systems/index.js.map +1 -0
  245. package/bin/ECS/TypedEntity.d.ts +192 -0
  246. package/bin/ECS/TypedEntity.d.ts.map +1 -0
  247. package/bin/ECS/TypedEntity.js +254 -0
  248. package/bin/ECS/TypedEntity.js.map +1 -0
  249. package/bin/ECS/Utils/BigIntCompatibility.d.ts +151 -0
  250. package/bin/ECS/Utils/BigIntCompatibility.d.ts.map +1 -0
  251. package/bin/ECS/Utils/BigIntCompatibility.js +476 -0
  252. package/bin/ECS/Utils/BigIntCompatibility.js.map +1 -0
  253. package/bin/ECS/Utils/BitMaskHashMap.d.ts +28 -0
  254. package/bin/ECS/Utils/BitMaskHashMap.d.ts.map +1 -0
  255. package/bin/ECS/Utils/BitMaskHashMap.js +127 -0
  256. package/bin/ECS/Utils/BitMaskHashMap.js.map +1 -0
  257. package/bin/ECS/Utils/Bits.d.ts +154 -0
  258. package/bin/ECS/Utils/Bits.d.ts.map +1 -0
  259. package/bin/ECS/Utils/Bits.js +331 -0
  260. package/bin/ECS/Utils/Bits.js.map +1 -0
  261. package/bin/ECS/Utils/ComponentSparseSet.d.ts +143 -0
  262. package/bin/ECS/Utils/ComponentSparseSet.d.ts.map +1 -0
  263. package/bin/ECS/Utils/ComponentSparseSet.js +347 -0
  264. package/bin/ECS/Utils/ComponentSparseSet.js.map +1 -0
  265. package/bin/ECS/Utils/EntityList.d.ts +115 -0
  266. package/bin/ECS/Utils/EntityList.d.ts.map +1 -0
  267. package/bin/ECS/Utils/EntityList.js +258 -0
  268. package/bin/ECS/Utils/EntityList.js.map +1 -0
  269. package/bin/ECS/Utils/EntityProcessorList.d.ts +56 -0
  270. package/bin/ECS/Utils/EntityProcessorList.d.ts.map +1 -0
  271. package/bin/ECS/Utils/EntityProcessorList.js +113 -0
  272. package/bin/ECS/Utils/EntityProcessorList.js.map +1 -0
  273. package/bin/ECS/Utils/IdentifierPool.d.ts +203 -0
  274. package/bin/ECS/Utils/IdentifierPool.d.ts.map +1 -0
  275. package/bin/ECS/Utils/IdentifierPool.js +325 -0
  276. package/bin/ECS/Utils/IdentifierPool.js.map +1 -0
  277. package/bin/ECS/Utils/Matcher.d.ts +171 -0
  278. package/bin/ECS/Utils/Matcher.d.ts.map +1 -0
  279. package/bin/ECS/Utils/Matcher.js +293 -0
  280. package/bin/ECS/Utils/Matcher.js.map +1 -0
  281. package/bin/ECS/Utils/SparseSet.d.ts +170 -0
  282. package/bin/ECS/Utils/SparseSet.d.ts.map +1 -0
  283. package/bin/ECS/Utils/SparseSet.js +280 -0
  284. package/bin/ECS/Utils/SparseSet.js.map +1 -0
  285. package/bin/ECS/Utils/index.d.ts +9 -0
  286. package/bin/ECS/Utils/index.d.ts.map +1 -0
  287. package/bin/ECS/Utils/index.js +10 -0
  288. package/bin/ECS/Utils/index.js.map +1 -0
  289. package/bin/ECS/World.d.ts +238 -0
  290. package/bin/ECS/World.d.ts.map +1 -0
  291. package/bin/ECS/World.js +416 -0
  292. package/bin/ECS/World.js.map +1 -0
  293. package/bin/ECS/WorldManager.d.ts +224 -0
  294. package/bin/ECS/WorldManager.d.ts.map +1 -0
  295. package/bin/ECS/WorldManager.js +365 -0
  296. package/bin/ECS/WorldManager.js.map +1 -0
  297. package/bin/ECS/index.d.ts +26 -0
  298. package/bin/ECS/index.d.ts.map +1 -0
  299. package/bin/ECS/index.js +21 -0
  300. package/bin/ECS/index.js.map +1 -0
  301. package/bin/Platform/IPlatformAdapter.d.ts +169 -0
  302. package/bin/Platform/IPlatformAdapter.d.ts.map +1 -0
  303. package/bin/Platform/IPlatformAdapter.js +2 -0
  304. package/bin/Platform/IPlatformAdapter.js.map +1 -0
  305. package/bin/Platform/PlatformDetector.d.ts +56 -0
  306. package/bin/Platform/PlatformDetector.d.ts.map +1 -0
  307. package/bin/Platform/PlatformDetector.js +247 -0
  308. package/bin/Platform/PlatformDetector.js.map +1 -0
  309. package/bin/Platform/PlatformManager.d.ts +50 -0
  310. package/bin/Platform/PlatformManager.d.ts.map +1 -0
  311. package/bin/Platform/PlatformManager.js +114 -0
  312. package/bin/Platform/PlatformManager.js.map +1 -0
  313. package/bin/Platform/index.d.ts +19 -0
  314. package/bin/Platform/index.d.ts.map +1 -0
  315. package/bin/Platform/index.js +29 -0
  316. package/bin/Platform/index.js.map +1 -0
  317. package/bin/Plugins/DebugPlugin.d.ts +156 -0
  318. package/bin/Plugins/DebugPlugin.d.ts.map +1 -0
  319. package/bin/Plugins/DebugPlugin.js +248 -0
  320. package/bin/Plugins/DebugPlugin.js.map +1 -0
  321. package/bin/Plugins/index.d.ts +2 -0
  322. package/bin/Plugins/index.d.ts.map +1 -0
  323. package/bin/Plugins/index.js +2 -0
  324. package/bin/Plugins/index.js.map +1 -0
  325. package/bin/Types/IUpdatable.d.ts +18 -0
  326. package/bin/Types/IUpdatable.d.ts.map +1 -0
  327. package/bin/Types/IUpdatable.js +7 -0
  328. package/bin/Types/IUpdatable.js.map +1 -0
  329. package/bin/Types/TypeHelpers.d.ts +238 -0
  330. package/bin/Types/TypeHelpers.d.ts.map +1 -0
  331. package/bin/Types/TypeHelpers.js +19 -0
  332. package/bin/Types/TypeHelpers.js.map +1 -0
  333. package/bin/Types/index.d.ts +466 -0
  334. package/bin/Types/index.d.ts.map +1 -0
  335. package/bin/Types/index.js +7 -0
  336. package/bin/Types/index.js.map +1 -0
  337. package/bin/Utils/BinarySerializer.d.ts +23 -0
  338. package/bin/Utils/BinarySerializer.d.ts.map +1 -0
  339. package/bin/Utils/BinarySerializer.js +100 -0
  340. package/bin/Utils/BinarySerializer.js.map +1 -0
  341. package/bin/Utils/Debug/AdvancedProfilerCollector.d.ts +153 -0
  342. package/bin/Utils/Debug/AdvancedProfilerCollector.d.ts.map +1 -0
  343. package/bin/Utils/Debug/AdvancedProfilerCollector.js +406 -0
  344. package/bin/Utils/Debug/AdvancedProfilerCollector.js.map +1 -0
  345. package/bin/Utils/Debug/ComponentDataCollector.d.ts +32 -0
  346. package/bin/Utils/Debug/ComponentDataCollector.d.ts.map +1 -0
  347. package/bin/Utils/Debug/ComponentDataCollector.js +250 -0
  348. package/bin/Utils/Debug/ComponentDataCollector.js.map +1 -0
  349. package/bin/Utils/Debug/DebugConfigService.d.ts +16 -0
  350. package/bin/Utils/Debug/DebugConfigService.d.ts.map +1 -0
  351. package/bin/Utils/Debug/DebugConfigService.js +42 -0
  352. package/bin/Utils/Debug/DebugConfigService.js.map +1 -0
  353. package/bin/Utils/Debug/DebugManager.d.ts +131 -0
  354. package/bin/Utils/Debug/DebugManager.d.ts.map +1 -0
  355. package/bin/Utils/Debug/DebugManager.js +848 -0
  356. package/bin/Utils/Debug/DebugManager.js.map +1 -0
  357. package/bin/Utils/Debug/EntityDataCollector.d.ts +115 -0
  358. package/bin/Utils/Debug/EntityDataCollector.d.ts.map +1 -0
  359. package/bin/Utils/Debug/EntityDataCollector.js +870 -0
  360. package/bin/Utils/Debug/EntityDataCollector.js.map +1 -0
  361. package/bin/Utils/Debug/PerformanceDataCollector.d.ts +31 -0
  362. package/bin/Utils/Debug/PerformanceDataCollector.d.ts.map +1 -0
  363. package/bin/Utils/Debug/PerformanceDataCollector.js +203 -0
  364. package/bin/Utils/Debug/PerformanceDataCollector.js.map +1 -0
  365. package/bin/Utils/Debug/SceneDataCollector.d.ts +18 -0
  366. package/bin/Utils/Debug/SceneDataCollector.d.ts.map +1 -0
  367. package/bin/Utils/Debug/SceneDataCollector.js +43 -0
  368. package/bin/Utils/Debug/SceneDataCollector.js.map +1 -0
  369. package/bin/Utils/Debug/SystemDataCollector.d.ts +14 -0
  370. package/bin/Utils/Debug/SystemDataCollector.d.ts.map +1 -0
  371. package/bin/Utils/Debug/SystemDataCollector.js +60 -0
  372. package/bin/Utils/Debug/SystemDataCollector.js.map +1 -0
  373. package/bin/Utils/Debug/WebSocketManager.d.ts +54 -0
  374. package/bin/Utils/Debug/WebSocketManager.d.ts.map +1 -0
  375. package/bin/Utils/Debug/WebSocketManager.js +141 -0
  376. package/bin/Utils/Debug/WebSocketManager.js.map +1 -0
  377. package/bin/Utils/Debug/index.d.ts +11 -0
  378. package/bin/Utils/Debug/index.d.ts.map +1 -0
  379. package/bin/Utils/Debug/index.js +10 -0
  380. package/bin/Utils/Debug/index.js.map +1 -0
  381. package/bin/Utils/Emitter.d.ts +61 -0
  382. package/bin/Utils/Emitter.d.ts.map +1 -0
  383. package/bin/Utils/Emitter.js +101 -0
  384. package/bin/Utils/Emitter.js.map +1 -0
  385. package/bin/Utils/Extensions/NumberExtension.d.ts +13 -0
  386. package/bin/Utils/Extensions/NumberExtension.d.ts.map +1 -0
  387. package/bin/Utils/Extensions/NumberExtension.js +17 -0
  388. package/bin/Utils/Extensions/NumberExtension.js.map +1 -0
  389. package/bin/Utils/Extensions/TypeUtils.d.ts +13 -0
  390. package/bin/Utils/Extensions/TypeUtils.d.ts.map +1 -0
  391. package/bin/Utils/Extensions/TypeUtils.js +15 -0
  392. package/bin/Utils/Extensions/TypeUtils.js.map +1 -0
  393. package/bin/Utils/Extensions/index.d.ts +3 -0
  394. package/bin/Utils/Extensions/index.d.ts.map +1 -0
  395. package/bin/Utils/Extensions/index.js +4 -0
  396. package/bin/Utils/Extensions/index.js.map +1 -0
  397. package/bin/Utils/GlobalManager.d.ts +29 -0
  398. package/bin/Utils/GlobalManager.d.ts.map +1 -0
  399. package/bin/Utils/GlobalManager.js +50 -0
  400. package/bin/Utils/GlobalManager.js.map +1 -0
  401. package/bin/Utils/Logger/ConsoleLogger.d.ts +74 -0
  402. package/bin/Utils/Logger/ConsoleLogger.d.ts.map +1 -0
  403. package/bin/Utils/Logger/ConsoleLogger.js +187 -0
  404. package/bin/Utils/Logger/ConsoleLogger.js.map +1 -0
  405. package/bin/Utils/Logger/Constants.d.ts +36 -0
  406. package/bin/Utils/Logger/Constants.d.ts.map +1 -0
  407. package/bin/Utils/Logger/Constants.js +40 -0
  408. package/bin/Utils/Logger/Constants.js.map +1 -0
  409. package/bin/Utils/Logger/LoggerManager.d.ts +91 -0
  410. package/bin/Utils/Logger/LoggerManager.d.ts.map +1 -0
  411. package/bin/Utils/Logger/LoggerManager.js +167 -0
  412. package/bin/Utils/Logger/LoggerManager.js.map +1 -0
  413. package/bin/Utils/Logger/Types.d.ts +40 -0
  414. package/bin/Utils/Logger/Types.d.ts.map +1 -0
  415. package/bin/Utils/Logger/Types.js +2 -0
  416. package/bin/Utils/Logger/Types.js.map +1 -0
  417. package/bin/Utils/Logger/index.d.ts +5 -0
  418. package/bin/Utils/Logger/index.d.ts.map +1 -0
  419. package/bin/Utils/Logger/index.js +5 -0
  420. package/bin/Utils/Logger/index.js.map +1 -0
  421. package/bin/Utils/PerformanceMonitor.d.ts +196 -0
  422. package/bin/Utils/PerformanceMonitor.d.ts.map +1 -0
  423. package/bin/Utils/PerformanceMonitor.js +244 -0
  424. package/bin/Utils/PerformanceMonitor.js.map +1 -0
  425. package/bin/Utils/Pool/IPoolable.d.ts +29 -0
  426. package/bin/Utils/Pool/IPoolable.d.ts.map +1 -0
  427. package/bin/Utils/Pool/IPoolable.js +2 -0
  428. package/bin/Utils/Pool/IPoolable.js.map +1 -0
  429. package/bin/Utils/Pool/Pool.d.ts +109 -0
  430. package/bin/Utils/Pool/Pool.d.ts.map +1 -0
  431. package/bin/Utils/Pool/Pool.js +238 -0
  432. package/bin/Utils/Pool/Pool.js.map +1 -0
  433. package/bin/Utils/Pool/PoolManager.d.ts +96 -0
  434. package/bin/Utils/Pool/PoolManager.d.ts.map +1 -0
  435. package/bin/Utils/Pool/PoolManager.js +199 -0
  436. package/bin/Utils/Pool/PoolManager.js.map +1 -0
  437. package/bin/Utils/Pool/index.d.ts +4 -0
  438. package/bin/Utils/Pool/index.d.ts.map +1 -0
  439. package/bin/Utils/Pool/index.js +4 -0
  440. package/bin/Utils/Pool/index.js.map +1 -0
  441. package/bin/Utils/Profiler/AutoProfiler.d.ts +160 -0
  442. package/bin/Utils/Profiler/AutoProfiler.d.ts.map +1 -0
  443. package/bin/Utils/Profiler/AutoProfiler.js +503 -0
  444. package/bin/Utils/Profiler/AutoProfiler.js.map +1 -0
  445. package/bin/Utils/Profiler/ProfilerSDK.d.ts +175 -0
  446. package/bin/Utils/Profiler/ProfilerSDK.d.ts.map +1 -0
  447. package/bin/Utils/Profiler/ProfilerSDK.js +727 -0
  448. package/bin/Utils/Profiler/ProfilerSDK.js.map +1 -0
  449. package/bin/Utils/Profiler/ProfilerTypes.d.ts +218 -0
  450. package/bin/Utils/Profiler/ProfilerTypes.d.ts.map +1 -0
  451. package/bin/Utils/Profiler/ProfilerTypes.js +47 -0
  452. package/bin/Utils/Profiler/ProfilerTypes.js.map +1 -0
  453. package/bin/Utils/Profiler/index.d.ts +8 -0
  454. package/bin/Utils/Profiler/index.d.ts.map +1 -0
  455. package/bin/Utils/Profiler/index.js +7 -0
  456. package/bin/Utils/Profiler/index.js.map +1 -0
  457. package/bin/Utils/Time.d.ts +47 -0
  458. package/bin/Utils/Time.d.ts.map +1 -0
  459. package/bin/Utils/Time.js +64 -0
  460. package/bin/Utils/Time.js.map +1 -0
  461. package/bin/Utils/Timers/ITimer.d.ts +16 -0
  462. package/bin/Utils/Timers/ITimer.d.ts.map +1 -0
  463. package/bin/Utils/Timers/ITimer.js +2 -0
  464. package/bin/Utils/Timers/ITimer.js.map +1 -0
  465. package/bin/Utils/Timers/Timer.d.ts +30 -0
  466. package/bin/Utils/Timers/Timer.d.ts.map +1 -0
  467. package/bin/Utils/Timers/Timer.js +58 -0
  468. package/bin/Utils/Timers/Timer.js.map +1 -0
  469. package/bin/Utils/Timers/TimerManager.d.ts +26 -0
  470. package/bin/Utils/Timers/TimerManager.d.ts.map +1 -0
  471. package/bin/Utils/Timers/TimerManager.js +48 -0
  472. package/bin/Utils/Timers/TimerManager.js.map +1 -0
  473. package/bin/Utils/index.d.ts +11 -0
  474. package/bin/Utils/index.d.ts.map +1 -0
  475. package/bin/Utils/index.js +11 -0
  476. package/bin/Utils/index.js.map +1 -0
  477. package/bin/index.d.ts +29 -0
  478. package/bin/index.d.ts.map +1 -0
  479. package/bin/index.js +36 -0
  480. package/bin/index.js.map +1 -0
  481. package/package.json +84 -47
  482. package/LICENSE +0 -21
  483. package/index.cjs +0 -2
  484. package/index.cjs.map +0 -1
  485. package/index.d.ts +0 -13021
  486. package/index.es5.js +0 -4
  487. package/index.es5.js.map +0 -1
  488. package/index.mjs +0 -2
  489. package/index.mjs.map +0 -1
  490. package/index.umd.js +0 -4
  491. package/index.umd.js.map +0 -1
@@ -0,0 +1,160 @@
1
+ /**
2
+ * 自动性能分析器
3
+ *
4
+ * 提供自动函数包装和采样分析功能,无需手动埋点即可收集性能数据。
5
+ *
6
+ * 支持三种分析模式:
7
+ * 1. 自动包装模式 - 使用 Proxy 自动包装类的所有方法
8
+ * 2. 采样分析模式 - 定时采样调用栈(需要浏览器支持)
9
+ * 3. 装饰器模式 - 使用 @Profile() 装饰器手动标记方法
10
+ */
11
+ import { ProfileCategory } from './ProfilerTypes';
12
+ /**
13
+ * 自动分析配置
14
+ */
15
+ export interface AutoProfilerConfig {
16
+ /** 是否启用自动包装 */
17
+ enabled: boolean;
18
+ /** 采样间隔(毫秒),用于采样分析器 */
19
+ sampleInterval: number;
20
+ /** 最小记录耗时(毫秒),低于此值的调用不记录 */
21
+ minDuration: number;
22
+ /** 是否追踪异步方法 */
23
+ trackAsync: boolean;
24
+ /** 排除的方法名模式 */
25
+ excludePatterns: RegExp[];
26
+ /** 最大采样缓冲区大小 */
27
+ maxBufferSize: number;
28
+ }
29
+ /**
30
+ * 采样数据
31
+ */
32
+ interface SampleData {
33
+ timestamp: number;
34
+ stack: string[];
35
+ duration?: number;
36
+ }
37
+ /**
38
+ * 自动性能分析器
39
+ */
40
+ export declare class AutoProfiler {
41
+ private static instance;
42
+ private config;
43
+ private wrappedObjects;
44
+ private samplingProfiler;
45
+ private registeredClasses;
46
+ private constructor();
47
+ /**
48
+ * 获取单例实例
49
+ */
50
+ static getInstance(config?: Partial<AutoProfilerConfig>): AutoProfiler;
51
+ /**
52
+ * 重置实例
53
+ */
54
+ static resetInstance(): void;
55
+ /**
56
+ * 启用/禁用自动分析
57
+ */
58
+ static setEnabled(enabled: boolean): void;
59
+ /**
60
+ * 注册类以进行自动分析
61
+ * 该类的所有实例方法都会被自动包装
62
+ */
63
+ static registerClass<T extends new (...args: any[]) => any>(constructor: T, category?: ProfileCategory, className?: string): T;
64
+ /**
65
+ * 包装对象实例的所有方法
66
+ */
67
+ static wrapInstance<T extends object>(instance: T, className: string, category?: ProfileCategory): T;
68
+ /**
69
+ * 包装单个函数
70
+ */
71
+ static wrapFunction<T extends (...args: any[]) => any>(fn: T, name: string, category?: ProfileCategory): T;
72
+ /**
73
+ * 启动采样分析器
74
+ */
75
+ static startSampling(): void;
76
+ /**
77
+ * 停止采样分析器
78
+ */
79
+ static stopSampling(): SampleData[];
80
+ /**
81
+ * 设置启用状态
82
+ */
83
+ setEnabled(enabled: boolean): void;
84
+ /**
85
+ * 注册类以进行自动分析
86
+ */
87
+ registerClass<T extends new (...args: any[]) => any>(constructor: T, category?: ProfileCategory, className?: string): T;
88
+ /**
89
+ * 包装对象实例的所有方法
90
+ */
91
+ wrapInstance<T extends object>(instance: T, className: string, category?: ProfileCategory): T;
92
+ /**
93
+ * 包装单个函数
94
+ */
95
+ wrapFunction<T extends (...args: any[]) => any>(fn: T, name: string, category?: ProfileCategory): T;
96
+ /**
97
+ * 启动采样分析器
98
+ */
99
+ startSampling(): void;
100
+ /**
101
+ * 停止采样分析器
102
+ */
103
+ stopSampling(): SampleData[];
104
+ /**
105
+ * 释放资源
106
+ */
107
+ dispose(): void;
108
+ /**
109
+ * 创建包装后的方法
110
+ */
111
+ private createWrappedMethod;
112
+ /**
113
+ * 获取对象的所有方法名
114
+ */
115
+ private getAllMethodNames;
116
+ /**
117
+ * 获取属性描述符
118
+ */
119
+ private getPropertyDescriptor;
120
+ /**
121
+ * 判断是否应该排除该方法
122
+ */
123
+ private shouldExcludeMethod;
124
+ }
125
+ /**
126
+ * @Profile 装饰器
127
+ * 用于标记需要性能分析的方法
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * class MySystem extends System {
132
+ * @Profile()
133
+ * update() {
134
+ * // 方法执行时间会被自动记录
135
+ * }
136
+ *
137
+ * @Profile('customName', ProfileCategory.Physics)
138
+ * calculatePhysics() {
139
+ * // 使用自定义名称和分类
140
+ * }
141
+ * }
142
+ * ```
143
+ */
144
+ export declare function Profile(name?: string, category?: ProfileCategory): MethodDecorator;
145
+ /**
146
+ * @ProfileClass 装饰器
147
+ * 用于自动包装类的所有方法
148
+ *
149
+ * @example
150
+ * ```typescript
151
+ * @ProfileClass(ProfileCategory.Physics)
152
+ * class PhysicsSystem extends System {
153
+ * update() { ... } // 自动被包装
154
+ * calculate() { ... } // 自动被包装
155
+ * }
156
+ * ```
157
+ */
158
+ export declare function ProfileClass(category?: ProfileCategory): ClassDecorator;
159
+ export {};
160
+ //# sourceMappingURL=AutoProfiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoProfiler.d.ts","sourceRoot":"","sources":["../../../src/Utils/Profiler/AutoProfiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,503 @@
1
+ /**
2
+ * 自动性能分析器
3
+ *
4
+ * 提供自动函数包装和采样分析功能,无需手动埋点即可收集性能数据。
5
+ *
6
+ * 支持三种分析模式:
7
+ * 1. 自动包装模式 - 使用 Proxy 自动包装类的所有方法
8
+ * 2. 采样分析模式 - 定时采样调用栈(需要浏览器支持)
9
+ * 3. 装饰器模式 - 使用 @Profile() 装饰器手动标记方法
10
+ */
11
+ import { ProfilerSDK } from './ProfilerSDK';
12
+ import { ProfileCategory } from './ProfilerTypes';
13
+ const DEFAULT_CONFIG = {
14
+ enabled: true,
15
+ sampleInterval: 10,
16
+ minDuration: 0.1, // 0.1ms
17
+ trackAsync: true,
18
+ excludePatterns: [
19
+ /^_/, // 私有方法
20
+ /^get[A-Z]/, // getter 方法
21
+ /^set[A-Z]/, // setter 方法
22
+ /^is[A-Z]/, // 布尔检查方法
23
+ /^has[A-Z]/, // 存在检查方法
24
+ ],
25
+ maxBufferSize: 10000
26
+ };
27
+ /**
28
+ * 自动性能分析器
29
+ */
30
+ export class AutoProfiler {
31
+ constructor(config) {
32
+ this.wrappedObjects = new WeakMap();
33
+ this.samplingProfiler = null;
34
+ this.registeredClasses = new Map();
35
+ this.config = { ...DEFAULT_CONFIG, ...config };
36
+ }
37
+ /**
38
+ * 获取单例实例
39
+ */
40
+ static getInstance(config) {
41
+ if (!AutoProfiler.instance) {
42
+ AutoProfiler.instance = new AutoProfiler(config);
43
+ }
44
+ return AutoProfiler.instance;
45
+ }
46
+ /**
47
+ * 重置实例
48
+ */
49
+ static resetInstance() {
50
+ if (AutoProfiler.instance) {
51
+ AutoProfiler.instance.dispose();
52
+ AutoProfiler.instance = null;
53
+ }
54
+ }
55
+ /**
56
+ * 启用/禁用自动分析
57
+ */
58
+ static setEnabled(enabled) {
59
+ AutoProfiler.getInstance().setEnabled(enabled);
60
+ }
61
+ /**
62
+ * 注册类以进行自动分析
63
+ * 该类的所有实例方法都会被自动包装
64
+ */
65
+ static registerClass(constructor, category = ProfileCategory.Custom, className) {
66
+ return AutoProfiler.getInstance().registerClass(constructor, category, className);
67
+ }
68
+ /**
69
+ * 包装对象实例的所有方法
70
+ */
71
+ static wrapInstance(instance, className, category = ProfileCategory.Custom) {
72
+ return AutoProfiler.getInstance().wrapInstance(instance, className, category);
73
+ }
74
+ /**
75
+ * 包装单个函数
76
+ */
77
+ static wrapFunction(fn, name, category = ProfileCategory.Custom) {
78
+ return AutoProfiler.getInstance().wrapFunction(fn, name, category);
79
+ }
80
+ /**
81
+ * 启动采样分析器
82
+ */
83
+ static startSampling() {
84
+ AutoProfiler.getInstance().startSampling();
85
+ }
86
+ /**
87
+ * 停止采样分析器
88
+ */
89
+ static stopSampling() {
90
+ return AutoProfiler.getInstance().stopSampling();
91
+ }
92
+ /**
93
+ * 设置启用状态
94
+ */
95
+ setEnabled(enabled) {
96
+ this.config.enabled = enabled;
97
+ if (!enabled && this.samplingProfiler) {
98
+ this.samplingProfiler.stop();
99
+ }
100
+ }
101
+ /**
102
+ * 注册类以进行自动分析
103
+ */
104
+ registerClass(constructor, category = ProfileCategory.Custom, className) {
105
+ const name = className || constructor.name;
106
+ this.registeredClasses.set(name, { constructor, category });
107
+ // eslint-disable-next-line @typescript-eslint/no-this-alias -- Required for Proxy construct handler
108
+ const self = this;
109
+ // 创建代理类
110
+ const ProxiedClass = new Proxy(constructor, {
111
+ construct(target, args, newTarget) {
112
+ const instance = Reflect.construct(target, args, newTarget);
113
+ if (self.config.enabled) {
114
+ self.wrapInstance(instance, name, category);
115
+ }
116
+ return instance;
117
+ }
118
+ });
119
+ return ProxiedClass;
120
+ }
121
+ /**
122
+ * 包装对象实例的所有方法
123
+ */
124
+ wrapInstance(instance, className, category = ProfileCategory.Custom) {
125
+ if (!this.config.enabled) {
126
+ return instance;
127
+ }
128
+ // 检查是否已经包装过
129
+ if (this.wrappedObjects.has(instance)) {
130
+ return instance;
131
+ }
132
+ const wrapInfoMap = new Map();
133
+ this.wrappedObjects.set(instance, wrapInfoMap);
134
+ // 获取所有方法(包括原型链上的)
135
+ const methodNames = this.getAllMethodNames(instance);
136
+ for (const methodName of methodNames) {
137
+ if (this.shouldExcludeMethod(methodName)) {
138
+ continue;
139
+ }
140
+ const descriptor = this.getPropertyDescriptor(instance, methodName);
141
+ if (!descriptor || typeof descriptor.value !== 'function') {
142
+ continue;
143
+ }
144
+ const original = descriptor.value;
145
+ const wrapped = this.createWrappedMethod(original, className, methodName, category);
146
+ wrapInfoMap.set(methodName, {
147
+ className,
148
+ methodName,
149
+ category,
150
+ original
151
+ });
152
+ try {
153
+ instance[methodName] = wrapped;
154
+ }
155
+ catch {
156
+ // 某些属性可能是只读的
157
+ }
158
+ }
159
+ return instance;
160
+ }
161
+ /**
162
+ * 包装单个函数
163
+ */
164
+ wrapFunction(fn, name, category = ProfileCategory.Custom) {
165
+ if (!this.config.enabled)
166
+ return fn;
167
+ // eslint-disable-next-line @typescript-eslint/no-this-alias -- Required for wrapped function closure
168
+ const self = this;
169
+ const wrapped = function (...args) {
170
+ const handle = ProfilerSDK.beginSample(name, category);
171
+ try {
172
+ const result = fn.apply(this, args);
173
+ // 处理 Promise
174
+ if (self.config.trackAsync && result instanceof Promise) {
175
+ return result.finally(() => {
176
+ ProfilerSDK.endSample(handle);
177
+ });
178
+ }
179
+ // 同步函数,立即结束采样
180
+ ProfilerSDK.endSample(handle);
181
+ return result;
182
+ }
183
+ catch (error) {
184
+ // 发生错误时也要结束采样
185
+ ProfilerSDK.endSample(handle);
186
+ throw error;
187
+ }
188
+ };
189
+ // 保留原函数的属性
190
+ Object.defineProperty(wrapped, 'name', { value: fn.name || name });
191
+ Object.defineProperty(wrapped, 'length', { value: fn.length });
192
+ return wrapped;
193
+ }
194
+ /**
195
+ * 启动采样分析器
196
+ */
197
+ startSampling() {
198
+ if (!this.samplingProfiler) {
199
+ this.samplingProfiler = new SamplingProfiler(this.config);
200
+ }
201
+ this.samplingProfiler.start();
202
+ }
203
+ /**
204
+ * 停止采样分析器
205
+ */
206
+ stopSampling() {
207
+ if (!this.samplingProfiler) {
208
+ return [];
209
+ }
210
+ return this.samplingProfiler.stop();
211
+ }
212
+ /**
213
+ * 释放资源
214
+ */
215
+ dispose() {
216
+ if (this.samplingProfiler) {
217
+ this.samplingProfiler.stop();
218
+ this.samplingProfiler = null;
219
+ }
220
+ this.registeredClasses.clear();
221
+ }
222
+ /**
223
+ * 创建包装后的方法
224
+ */
225
+ createWrappedMethod(original, className, methodName, category) {
226
+ // eslint-disable-next-line @typescript-eslint/no-this-alias -- Required for wrapped method closure
227
+ const self = this;
228
+ const fullName = `${className}.${methodName}`;
229
+ const minDuration = this.config.minDuration;
230
+ return function (...args) {
231
+ if (!self.config.enabled || !ProfilerSDK.isEnabled()) {
232
+ return original.apply(this, args);
233
+ }
234
+ const startTime = performance.now();
235
+ const handle = ProfilerSDK.beginSample(fullName, category);
236
+ try {
237
+ const result = original.apply(this, args);
238
+ // 处理异步方法
239
+ if (self.config.trackAsync && result instanceof Promise) {
240
+ return result.then((value) => {
241
+ const duration = performance.now() - startTime;
242
+ if (duration >= minDuration) {
243
+ ProfilerSDK.endSample(handle);
244
+ }
245
+ return value;
246
+ }, (error) => {
247
+ ProfilerSDK.endSample(handle);
248
+ throw error;
249
+ });
250
+ }
251
+ // 同步方法,检查最小耗时后结束采样
252
+ const duration = performance.now() - startTime;
253
+ if (duration >= minDuration) {
254
+ ProfilerSDK.endSample(handle);
255
+ }
256
+ return result;
257
+ }
258
+ catch (error) {
259
+ // 发生错误时也要结束采样
260
+ ProfilerSDK.endSample(handle);
261
+ throw error;
262
+ }
263
+ };
264
+ }
265
+ /**
266
+ * 获取对象的所有方法名
267
+ */
268
+ getAllMethodNames(obj) {
269
+ const methods = new Set();
270
+ let current = obj;
271
+ while (current && current !== Object.prototype) {
272
+ for (const name of Object.getOwnPropertyNames(current)) {
273
+ if (name !== 'constructor') {
274
+ methods.add(name);
275
+ }
276
+ }
277
+ current = Object.getPrototypeOf(current);
278
+ }
279
+ return Array.from(methods);
280
+ }
281
+ /**
282
+ * 获取属性描述符
283
+ */
284
+ getPropertyDescriptor(obj, name) {
285
+ let current = obj;
286
+ while (current && current !== Object.prototype) {
287
+ const descriptor = Object.getOwnPropertyDescriptor(current, name);
288
+ if (descriptor)
289
+ return descriptor;
290
+ current = Object.getPrototypeOf(current);
291
+ }
292
+ return undefined;
293
+ }
294
+ /**
295
+ * 判断是否应该排除该方法
296
+ */
297
+ shouldExcludeMethod(methodName) {
298
+ // 排除构造函数和内置方法
299
+ if (methodName === 'constructor' || methodName.startsWith('__')) {
300
+ return true;
301
+ }
302
+ // 检查排除模式
303
+ for (const pattern of this.config.excludePatterns) {
304
+ if (pattern.test(methodName)) {
305
+ return true;
306
+ }
307
+ }
308
+ return false;
309
+ }
310
+ }
311
+ AutoProfiler.instance = null;
312
+ /**
313
+ * 采样分析器
314
+ * 使用定时器定期采样调用栈信息
315
+ */
316
+ class SamplingProfiler {
317
+ constructor(config) {
318
+ this.samples = [];
319
+ this.intervalId = null;
320
+ this.isRunning = false;
321
+ this.config = config;
322
+ }
323
+ /**
324
+ * 开始采样
325
+ */
326
+ start() {
327
+ if (this.isRunning)
328
+ return;
329
+ this.isRunning = true;
330
+ this.samples = [];
331
+ // 使用 requestAnimationFrame 或 setInterval 进行采样
332
+ const sample = () => {
333
+ if (!this.isRunning)
334
+ return;
335
+ const stack = this.captureStack();
336
+ if (stack.length > 0) {
337
+ this.samples.push({
338
+ timestamp: performance.now(),
339
+ stack
340
+ });
341
+ // 限制缓冲区大小
342
+ if (this.samples.length > this.config.maxBufferSize) {
343
+ this.samples.shift();
344
+ }
345
+ }
346
+ // 继续采样
347
+ if (this.config.sampleInterval < 16) {
348
+ // 高频采样使用 setTimeout
349
+ this.intervalId = setTimeout(sample, this.config.sampleInterval);
350
+ }
351
+ else {
352
+ this.intervalId = setTimeout(sample, this.config.sampleInterval);
353
+ }
354
+ };
355
+ sample();
356
+ }
357
+ /**
358
+ * 停止采样并返回数据
359
+ */
360
+ stop() {
361
+ this.isRunning = false;
362
+ if (this.intervalId !== null) {
363
+ clearTimeout(this.intervalId);
364
+ this.intervalId = null;
365
+ }
366
+ return [...this.samples];
367
+ }
368
+ /**
369
+ * 捕获当前调用栈
370
+ */
371
+ captureStack() {
372
+ try {
373
+ // 创建 Error 对象获取调用栈
374
+ const error = new Error();
375
+ const stack = error.stack || '';
376
+ // 解析调用栈
377
+ const lines = stack.split('\n').slice(3); // 跳过 Error 和 captureStack/sample
378
+ const frames = [];
379
+ for (const line of lines) {
380
+ const frame = this.parseStackFrame(line);
381
+ if (frame && !this.isInternalFrame(frame)) {
382
+ frames.push(frame);
383
+ }
384
+ }
385
+ return frames;
386
+ }
387
+ catch {
388
+ return [];
389
+ }
390
+ }
391
+ /**
392
+ * 解析调用栈帧
393
+ */
394
+ parseStackFrame(line) {
395
+ // Chrome/Edge 格式: " at functionName (file:line:col)"
396
+ // Firefox 格式: "functionName@file:line:col"
397
+ // Safari 格式: "functionName@file:line:col"
398
+ line = line.trim();
399
+ // Chrome 格式
400
+ let match = line.match(/at\s+(.+?)\s+\(/);
401
+ if (match && match[1]) {
402
+ return match[1];
403
+ }
404
+ // Chrome 匿名函数格式
405
+ match = line.match(/at\s+(.+)/);
406
+ if (match && match[1]) {
407
+ const name = match[1];
408
+ if (!name.includes('(')) {
409
+ return name;
410
+ }
411
+ }
412
+ // Firefox/Safari 格式
413
+ match = line.match(/^(.+?)@/);
414
+ if (match && match[1]) {
415
+ return match[1];
416
+ }
417
+ return null;
418
+ }
419
+ /**
420
+ * 判断是否是内部帧(应该过滤掉)
421
+ */
422
+ isInternalFrame(frame) {
423
+ const internalPatterns = [
424
+ 'SamplingProfiler',
425
+ 'AutoProfiler',
426
+ 'ProfilerSDK',
427
+ 'setTimeout',
428
+ 'setInterval',
429
+ 'requestAnimationFrame',
430
+ '<anonymous>',
431
+ 'eval'
432
+ ];
433
+ return internalPatterns.some(pattern => frame.includes(pattern));
434
+ }
435
+ }
436
+ /**
437
+ * @Profile 装饰器
438
+ * 用于标记需要性能分析的方法
439
+ *
440
+ * @example
441
+ * ```typescript
442
+ * class MySystem extends System {
443
+ * @Profile()
444
+ * update() {
445
+ * // 方法执行时间会被自动记录
446
+ * }
447
+ *
448
+ * @Profile('customName', ProfileCategory.Physics)
449
+ * calculatePhysics() {
450
+ * // 使用自定义名称和分类
451
+ * }
452
+ * }
453
+ * ```
454
+ */
455
+ export function Profile(name, category = ProfileCategory.Custom) {
456
+ return function (target, propertyKey, descriptor) {
457
+ const original = descriptor.value;
458
+ const methodName = name || `${target.constructor.name}.${String(propertyKey)}`;
459
+ descriptor.value = function (...args) {
460
+ if (!ProfilerSDK.isEnabled()) {
461
+ return original.apply(this, args);
462
+ }
463
+ const handle = ProfilerSDK.beginSample(methodName, category);
464
+ try {
465
+ const result = original.apply(this, args);
466
+ // 处理异步方法
467
+ if (result instanceof Promise) {
468
+ return result.finally(() => {
469
+ ProfilerSDK.endSample(handle);
470
+ });
471
+ }
472
+ // 同步方法,立即结束采样
473
+ ProfilerSDK.endSample(handle);
474
+ return result;
475
+ }
476
+ catch (error) {
477
+ // 发生错误时也要结束采样
478
+ ProfilerSDK.endSample(handle);
479
+ throw error;
480
+ }
481
+ };
482
+ return descriptor;
483
+ };
484
+ }
485
+ /**
486
+ * @ProfileClass 装饰器
487
+ * 用于自动包装类的所有方法
488
+ *
489
+ * @example
490
+ * ```typescript
491
+ * @ProfileClass(ProfileCategory.Physics)
492
+ * class PhysicsSystem extends System {
493
+ * update() { ... } // 自动被包装
494
+ * calculate() { ... } // 自动被包装
495
+ * }
496
+ * ```
497
+ */
498
+ export function ProfileClass(category = ProfileCategory.Custom) {
499
+ return function (constructor) {
500
+ return AutoProfiler.registerClass(constructor, category);
501
+ };
502
+ }
503
+ //# sourceMappingURL=AutoProfiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoProfiler.js","sourceRoot":"","sources":["../../../src/Utils/Profiler/AutoProfiler.ts"],"names":[],"mappings":"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"}