@esengine/ecs-framework 2.3.0 → 2.3.1

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/dist/index.cjs +2 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.ts +13451 -0
  4. package/dist/index.es5.js +4 -0
  5. package/dist/index.es5.js.map +1 -0
  6. package/dist/index.mjs +2 -0
  7. package/dist/index.mjs.map +1 -0
  8. package/dist/index.umd.js +4 -0
  9. package/dist/index.umd.js.map +1 -0
  10. package/dist/package.json +47 -0
  11. package/package.json +87 -84
  12. package/bin/Core/DI/Decorators.d.ts +0 -206
  13. package/bin/Core/DI/Decorators.d.ts.map +0 -1
  14. package/bin/Core/DI/Decorators.js +0 -253
  15. package/bin/Core/DI/Decorators.js.map +0 -1
  16. package/bin/Core/DI/index.d.ts +0 -8
  17. package/bin/Core/DI/index.d.ts.map +0 -1
  18. package/bin/Core/DI/index.js +0 -7
  19. package/bin/Core/DI/index.js.map +0 -1
  20. package/bin/Core/Plugin.d.ts +0 -112
  21. package/bin/Core/Plugin.d.ts.map +0 -1
  22. package/bin/Core/Plugin.js +0 -19
  23. package/bin/Core/Plugin.js.map +0 -1
  24. package/bin/Core/PluginManager.d.ts +0 -118
  25. package/bin/Core/PluginManager.d.ts.map +0 -1
  26. package/bin/Core/PluginManager.js +0 -229
  27. package/bin/Core/PluginManager.js.map +0 -1
  28. package/bin/Core/ServiceContainer.d.ts +0 -221
  29. package/bin/Core/ServiceContainer.d.ts.map +0 -1
  30. package/bin/Core/ServiceContainer.js +0 -352
  31. package/bin/Core/ServiceContainer.js.map +0 -1
  32. package/bin/Core.d.ts +0 -379
  33. package/bin/Core.d.ts.map +0 -1
  34. package/bin/Core.js +0 -553
  35. package/bin/Core.js.map +0 -1
  36. package/bin/ECS/Component.d.ts +0 -104
  37. package/bin/ECS/Component.d.ts.map +0 -1
  38. package/bin/ECS/Component.js +0 -105
  39. package/bin/ECS/Component.js.map +0 -1
  40. package/bin/ECS/Components/HierarchyComponent.d.ts +0 -46
  41. package/bin/ECS/Components/HierarchyComponent.d.ts.map +0 -1
  42. package/bin/ECS/Components/HierarchyComponent.js +0 -65
  43. package/bin/ECS/Components/HierarchyComponent.js.map +0 -1
  44. package/bin/ECS/Components/index.d.ts +0 -2
  45. package/bin/ECS/Components/index.d.ts.map +0 -1
  46. package/bin/ECS/Components/index.js +0 -2
  47. package/bin/ECS/Components/index.js.map +0 -1
  48. package/bin/ECS/Core/ArchetypeSystem.d.ts +0 -103
  49. package/bin/ECS/Core/ArchetypeSystem.d.ts.map +0 -1
  50. package/bin/ECS/Core/ArchetypeSystem.js +0 -244
  51. package/bin/ECS/Core/ArchetypeSystem.js.map +0 -1
  52. package/bin/ECS/Core/CommandBuffer.d.ts +0 -154
  53. package/bin/ECS/Core/CommandBuffer.d.ts.map +0 -1
  54. package/bin/ECS/Core/CommandBuffer.js +0 -244
  55. package/bin/ECS/Core/CommandBuffer.js.map +0 -1
  56. package/bin/ECS/Core/ComponentPool.d.ts +0 -139
  57. package/bin/ECS/Core/ComponentPool.d.ts.map +0 -1
  58. package/bin/ECS/Core/ComponentPool.js +0 -276
  59. package/bin/ECS/Core/ComponentPool.js.map +0 -1
  60. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts +0 -127
  61. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts.map +0 -1
  62. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js +0 -235
  63. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js.map +0 -1
  64. package/bin/ECS/Core/ComponentStorage.d.ts +0 -185
  65. package/bin/ECS/Core/ComponentStorage.d.ts.map +0 -1
  66. package/bin/ECS/Core/ComponentStorage.js +0 -321
  67. package/bin/ECS/Core/ComponentStorage.js.map +0 -1
  68. package/bin/ECS/Core/EntityLifecyclePolicy.d.ts +0 -26
  69. package/bin/ECS/Core/EntityLifecyclePolicy.d.ts.map +0 -1
  70. package/bin/ECS/Core/EntityLifecyclePolicy.js +0 -2
  71. package/bin/ECS/Core/EntityLifecyclePolicy.js.map +0 -1
  72. package/bin/ECS/Core/EventBus.d.ts +0 -210
  73. package/bin/ECS/Core/EventBus.d.ts.map +0 -1
  74. package/bin/ECS/Core/EventBus.js +0 -370
  75. package/bin/ECS/Core/EventBus.js.map +0 -1
  76. package/bin/ECS/Core/EventSystem.d.ts +0 -225
  77. package/bin/ECS/Core/EventSystem.d.ts.map +0 -1
  78. package/bin/ECS/Core/EventSystem.js +0 -448
  79. package/bin/ECS/Core/EventSystem.js.map +0 -1
  80. package/bin/ECS/Core/Events/index.d.ts +0 -3
  81. package/bin/ECS/Core/Events/index.d.ts.map +0 -1
  82. package/bin/ECS/Core/Events/index.js +0 -3
  83. package/bin/ECS/Core/Events/index.js.map +0 -1
  84. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts +0 -35
  85. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts.map +0 -1
  86. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js +0 -48
  87. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js.map +0 -1
  88. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts +0 -135
  89. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts.map +0 -1
  90. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js +0 -166
  91. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js.map +0 -1
  92. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts +0 -58
  93. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts.map +0 -1
  94. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js +0 -85
  95. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js.map +0 -1
  96. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts +0 -110
  97. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts.map +0 -1
  98. package/bin/ECS/Core/FluentAPI/EntityBuilder.js +0 -181
  99. package/bin/ECS/Core/FluentAPI/EntityBuilder.js.map +0 -1
  100. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts +0 -53
  101. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts.map +0 -1
  102. package/bin/ECS/Core/FluentAPI/SceneBuilder.js +0 -79
  103. package/bin/ECS/Core/FluentAPI/SceneBuilder.js.map +0 -1
  104. package/bin/ECS/Core/FluentAPI/index.d.ts +0 -6
  105. package/bin/ECS/Core/FluentAPI/index.d.ts.map +0 -1
  106. package/bin/ECS/Core/FluentAPI/index.js +0 -6
  107. package/bin/ECS/Core/FluentAPI/index.js.map +0 -1
  108. package/bin/ECS/Core/FluentAPI.d.ts +0 -2
  109. package/bin/ECS/Core/FluentAPI.d.ts.map +0 -1
  110. package/bin/ECS/Core/FluentAPI.js +0 -3
  111. package/bin/ECS/Core/FluentAPI.js.map +0 -1
  112. package/bin/ECS/Core/Query/TypedQuery.d.ts +0 -214
  113. package/bin/ECS/Core/Query/TypedQuery.d.ts.map +0 -1
  114. package/bin/ECS/Core/Query/TypedQuery.js +0 -294
  115. package/bin/ECS/Core/Query/TypedQuery.js.map +0 -1
  116. package/bin/ECS/Core/Query/index.d.ts +0 -3
  117. package/bin/ECS/Core/Query/index.d.ts.map +0 -1
  118. package/bin/ECS/Core/Query/index.js +0 -3
  119. package/bin/ECS/Core/Query/index.js.map +0 -1
  120. package/bin/ECS/Core/QuerySystem.d.ts +0 -458
  121. package/bin/ECS/Core/QuerySystem.d.ts.map +0 -1
  122. package/bin/ECS/Core/QuerySystem.js +0 -1069
  123. package/bin/ECS/Core/QuerySystem.js.map +0 -1
  124. package/bin/ECS/Core/QueryTypes.d.ts +0 -34
  125. package/bin/ECS/Core/QueryTypes.d.ts.map +0 -1
  126. package/bin/ECS/Core/QueryTypes.js +0 -13
  127. package/bin/ECS/Core/QueryTypes.js.map +0 -1
  128. package/bin/ECS/Core/ReactiveQuery.d.ts +0 -211
  129. package/bin/ECS/Core/ReactiveQuery.d.ts.map +0 -1
  130. package/bin/ECS/Core/ReactiveQuery.js +0 -401
  131. package/bin/ECS/Core/ReactiveQuery.js.map +0 -1
  132. package/bin/ECS/Core/ReferenceTracker.d.ts +0 -111
  133. package/bin/ECS/Core/ReferenceTracker.d.ts.map +0 -1
  134. package/bin/ECS/Core/ReferenceTracker.js +0 -254
  135. package/bin/ECS/Core/ReferenceTracker.js.map +0 -1
  136. package/bin/ECS/Core/SoASerializer.d.ts +0 -28
  137. package/bin/ECS/Core/SoASerializer.d.ts.map +0 -1
  138. package/bin/ECS/Core/SoASerializer.js +0 -85
  139. package/bin/ECS/Core/SoASerializer.js.map +0 -1
  140. package/bin/ECS/Core/SoAStorage.d.ts +0 -129
  141. package/bin/ECS/Core/SoAStorage.d.ts.map +0 -1
  142. package/bin/ECS/Core/SoAStorage.js +0 -685
  143. package/bin/ECS/Core/SoAStorage.js.map +0 -1
  144. package/bin/ECS/Core/SoATypeRegistry.d.ts +0 -50
  145. package/bin/ECS/Core/SoATypeRegistry.d.ts.map +0 -1
  146. package/bin/ECS/Core/SoATypeRegistry.js +0 -135
  147. package/bin/ECS/Core/SoATypeRegistry.js.map +0 -1
  148. package/bin/ECS/Core/Storage/index.d.ts +0 -4
  149. package/bin/ECS/Core/Storage/index.d.ts.map +0 -1
  150. package/bin/ECS/Core/Storage/index.js +0 -4
  151. package/bin/ECS/Core/Storage/index.js.map +0 -1
  152. package/bin/ECS/Core/StorageDecorators.d.ts +0 -20
  153. package/bin/ECS/Core/StorageDecorators.d.ts.map +0 -1
  154. package/bin/ECS/Core/StorageDecorators.js +0 -27
  155. package/bin/ECS/Core/StorageDecorators.js.map +0 -1
  156. package/bin/ECS/CoreEvents.d.ts +0 -131
  157. package/bin/ECS/CoreEvents.d.ts.map +0 -1
  158. package/bin/ECS/CoreEvents.js +0 -163
  159. package/bin/ECS/CoreEvents.js.map +0 -1
  160. package/bin/ECS/Decorators/EntityRefDecorator.d.ts +0 -46
  161. package/bin/ECS/Decorators/EntityRefDecorator.d.ts.map +0 -1
  162. package/bin/ECS/Decorators/EntityRefDecorator.js +0 -118
  163. package/bin/ECS/Decorators/EntityRefDecorator.js.map +0 -1
  164. package/bin/ECS/Decorators/PropertyDecorator.d.ts +0 -168
  165. package/bin/ECS/Decorators/PropertyDecorator.d.ts.map +0 -1
  166. package/bin/ECS/Decorators/PropertyDecorator.js +0 -40
  167. package/bin/ECS/Decorators/PropertyDecorator.js.map +0 -1
  168. package/bin/ECS/Decorators/TypeDecorators.d.ts +0 -124
  169. package/bin/ECS/Decorators/TypeDecorators.d.ts.map +0 -1
  170. package/bin/ECS/Decorators/TypeDecorators.js +0 -151
  171. package/bin/ECS/Decorators/TypeDecorators.js.map +0 -1
  172. package/bin/ECS/Decorators/index.d.ts +0 -7
  173. package/bin/ECS/Decorators/index.d.ts.map +0 -1
  174. package/bin/ECS/Decorators/index.js +0 -4
  175. package/bin/ECS/Decorators/index.js.map +0 -1
  176. package/bin/ECS/Entity.d.ts +0 -415
  177. package/bin/ECS/Entity.d.ts.map +0 -1
  178. package/bin/ECS/Entity.js +0 -683
  179. package/bin/ECS/Entity.js.map +0 -1
  180. package/bin/ECS/EntityTags.d.ts +0 -71
  181. package/bin/ECS/EntityTags.d.ts.map +0 -1
  182. package/bin/ECS/EntityTags.js +0 -82
  183. package/bin/ECS/EntityTags.js.map +0 -1
  184. package/bin/ECS/IScene.d.ts +0 -308
  185. package/bin/ECS/IScene.d.ts.map +0 -1
  186. package/bin/ECS/IScene.js +0 -2
  187. package/bin/ECS/IScene.js.map +0 -1
  188. package/bin/ECS/Scene.d.ts +0 -799
  189. package/bin/ECS/Scene.d.ts.map +0 -1
  190. package/bin/ECS/Scene.js +0 -1203
  191. package/bin/ECS/Scene.js.map +0 -1
  192. package/bin/ECS/SceneManager.d.ts +0 -197
  193. package/bin/ECS/SceneManager.d.ts.map +0 -1
  194. package/bin/ECS/SceneManager.js +0 -264
  195. package/bin/ECS/SceneManager.js.map +0 -1
  196. package/bin/ECS/Serialization/ComponentSerializer.d.ts +0 -106
  197. package/bin/ECS/Serialization/ComponentSerializer.d.ts.map +0 -1
  198. package/bin/ECS/Serialization/ComponentSerializer.js +0 -251
  199. package/bin/ECS/Serialization/ComponentSerializer.js.map +0 -1
  200. package/bin/ECS/Serialization/EntitySerializer.d.ts +0 -111
  201. package/bin/ECS/Serialization/EntitySerializer.d.ts.map +0 -1
  202. package/bin/ECS/Serialization/EntitySerializer.js +0 -155
  203. package/bin/ECS/Serialization/EntitySerializer.js.map +0 -1
  204. package/bin/ECS/Serialization/IncrementalSerializer.d.ts +0 -259
  205. package/bin/ECS/Serialization/IncrementalSerializer.d.ts.map +0 -1
  206. package/bin/ECS/Serialization/IncrementalSerializer.js +0 -500
  207. package/bin/ECS/Serialization/IncrementalSerializer.js.map +0 -1
  208. package/bin/ECS/Serialization/SceneSerializer.d.ts +0 -213
  209. package/bin/ECS/Serialization/SceneSerializer.d.ts.map +0 -1
  210. package/bin/ECS/Serialization/SceneSerializer.js +0 -387
  211. package/bin/ECS/Serialization/SceneSerializer.js.map +0 -1
  212. package/bin/ECS/Serialization/SerializationDecorators.d.ts +0 -136
  213. package/bin/ECS/Serialization/SerializationDecorators.d.ts.map +0 -1
  214. package/bin/ECS/Serialization/SerializationDecorators.js +0 -216
  215. package/bin/ECS/Serialization/SerializationDecorators.js.map +0 -1
  216. package/bin/ECS/Serialization/VersionMigration.d.ts +0 -156
  217. package/bin/ECS/Serialization/VersionMigration.d.ts.map +0 -1
  218. package/bin/ECS/Serialization/VersionMigration.js +0 -279
  219. package/bin/ECS/Serialization/VersionMigration.js.map +0 -1
  220. package/bin/ECS/Serialization/index.d.ts +0 -18
  221. package/bin/ECS/Serialization/index.d.ts.map +0 -1
  222. package/bin/ECS/Serialization/index.js +0 -18
  223. package/bin/ECS/Serialization/index.js.map +0 -1
  224. package/bin/ECS/Systems/EntityCache.d.ts +0 -114
  225. package/bin/ECS/Systems/EntityCache.d.ts.map +0 -1
  226. package/bin/ECS/Systems/EntityCache.js +0 -145
  227. package/bin/ECS/Systems/EntityCache.js.map +0 -1
  228. package/bin/ECS/Systems/EntitySystem.d.ts +0 -591
  229. package/bin/ECS/Systems/EntitySystem.d.ts.map +0 -1
  230. package/bin/ECS/Systems/EntitySystem.js +0 -1102
  231. package/bin/ECS/Systems/EntitySystem.js.map +0 -1
  232. package/bin/ECS/Systems/HierarchySystem.d.ts +0 -155
  233. package/bin/ECS/Systems/HierarchySystem.d.ts.map +0 -1
  234. package/bin/ECS/Systems/HierarchySystem.js +0 -498
  235. package/bin/ECS/Systems/HierarchySystem.js.map +0 -1
  236. package/bin/ECS/Systems/IntervalSystem.d.ts +0 -33
  237. package/bin/ECS/Systems/IntervalSystem.d.ts.map +0 -1
  238. package/bin/ECS/Systems/IntervalSystem.js +0 -50
  239. package/bin/ECS/Systems/IntervalSystem.js.map +0 -1
  240. package/bin/ECS/Systems/PassiveSystem.d.ts +0 -17
  241. package/bin/ECS/Systems/PassiveSystem.d.ts.map +0 -1
  242. package/bin/ECS/Systems/PassiveSystem.js +0 -19
  243. package/bin/ECS/Systems/PassiveSystem.js.map +0 -1
  244. package/bin/ECS/Systems/ProcessingSystem.d.ts +0 -21
  245. package/bin/ECS/Systems/ProcessingSystem.d.ts.map +0 -1
  246. package/bin/ECS/Systems/ProcessingSystem.js +0 -20
  247. package/bin/ECS/Systems/ProcessingSystem.js.map +0 -1
  248. package/bin/ECS/Systems/WorkerEntitySystem.d.ts +0 -313
  249. package/bin/ECS/Systems/WorkerEntitySystem.d.ts.map +0 -1
  250. package/bin/ECS/Systems/WorkerEntitySystem.js +0 -792
  251. package/bin/ECS/Systems/WorkerEntitySystem.js.map +0 -1
  252. package/bin/ECS/Systems/index.d.ts +0 -8
  253. package/bin/ECS/Systems/index.d.ts.map +0 -1
  254. package/bin/ECS/Systems/index.js +0 -8
  255. package/bin/ECS/Systems/index.js.map +0 -1
  256. package/bin/ECS/TypedEntity.d.ts +0 -192
  257. package/bin/ECS/TypedEntity.d.ts.map +0 -1
  258. package/bin/ECS/TypedEntity.js +0 -254
  259. package/bin/ECS/TypedEntity.js.map +0 -1
  260. package/bin/ECS/Utils/BigIntCompatibility.d.ts +0 -151
  261. package/bin/ECS/Utils/BigIntCompatibility.d.ts.map +0 -1
  262. package/bin/ECS/Utils/BigIntCompatibility.js +0 -476
  263. package/bin/ECS/Utils/BigIntCompatibility.js.map +0 -1
  264. package/bin/ECS/Utils/BitMaskHashMap.d.ts +0 -28
  265. package/bin/ECS/Utils/BitMaskHashMap.d.ts.map +0 -1
  266. package/bin/ECS/Utils/BitMaskHashMap.js +0 -127
  267. package/bin/ECS/Utils/BitMaskHashMap.js.map +0 -1
  268. package/bin/ECS/Utils/Bits.d.ts +0 -154
  269. package/bin/ECS/Utils/Bits.d.ts.map +0 -1
  270. package/bin/ECS/Utils/Bits.js +0 -331
  271. package/bin/ECS/Utils/Bits.js.map +0 -1
  272. package/bin/ECS/Utils/ComponentSparseSet.d.ts +0 -143
  273. package/bin/ECS/Utils/ComponentSparseSet.d.ts.map +0 -1
  274. package/bin/ECS/Utils/ComponentSparseSet.js +0 -347
  275. package/bin/ECS/Utils/ComponentSparseSet.js.map +0 -1
  276. package/bin/ECS/Utils/EntityList.d.ts +0 -115
  277. package/bin/ECS/Utils/EntityList.d.ts.map +0 -1
  278. package/bin/ECS/Utils/EntityList.js +0 -258
  279. package/bin/ECS/Utils/EntityList.js.map +0 -1
  280. package/bin/ECS/Utils/EntityProcessorList.d.ts +0 -56
  281. package/bin/ECS/Utils/EntityProcessorList.d.ts.map +0 -1
  282. package/bin/ECS/Utils/EntityProcessorList.js +0 -113
  283. package/bin/ECS/Utils/EntityProcessorList.js.map +0 -1
  284. package/bin/ECS/Utils/IdentifierPool.d.ts +0 -203
  285. package/bin/ECS/Utils/IdentifierPool.d.ts.map +0 -1
  286. package/bin/ECS/Utils/IdentifierPool.js +0 -325
  287. package/bin/ECS/Utils/IdentifierPool.js.map +0 -1
  288. package/bin/ECS/Utils/Matcher.d.ts +0 -171
  289. package/bin/ECS/Utils/Matcher.d.ts.map +0 -1
  290. package/bin/ECS/Utils/Matcher.js +0 -293
  291. package/bin/ECS/Utils/Matcher.js.map +0 -1
  292. package/bin/ECS/Utils/SparseSet.d.ts +0 -170
  293. package/bin/ECS/Utils/SparseSet.d.ts.map +0 -1
  294. package/bin/ECS/Utils/SparseSet.js +0 -280
  295. package/bin/ECS/Utils/SparseSet.js.map +0 -1
  296. package/bin/ECS/Utils/index.d.ts +0 -9
  297. package/bin/ECS/Utils/index.d.ts.map +0 -1
  298. package/bin/ECS/Utils/index.js +0 -10
  299. package/bin/ECS/Utils/index.js.map +0 -1
  300. package/bin/ECS/World.d.ts +0 -238
  301. package/bin/ECS/World.d.ts.map +0 -1
  302. package/bin/ECS/World.js +0 -416
  303. package/bin/ECS/World.js.map +0 -1
  304. package/bin/ECS/WorldManager.d.ts +0 -224
  305. package/bin/ECS/WorldManager.d.ts.map +0 -1
  306. package/bin/ECS/WorldManager.js +0 -365
  307. package/bin/ECS/WorldManager.js.map +0 -1
  308. package/bin/ECS/index.d.ts +0 -26
  309. package/bin/ECS/index.d.ts.map +0 -1
  310. package/bin/ECS/index.js +0 -21
  311. package/bin/ECS/index.js.map +0 -1
  312. package/bin/Platform/IPlatformAdapter.d.ts +0 -169
  313. package/bin/Platform/IPlatformAdapter.d.ts.map +0 -1
  314. package/bin/Platform/IPlatformAdapter.js +0 -2
  315. package/bin/Platform/IPlatformAdapter.js.map +0 -1
  316. package/bin/Platform/PlatformDetector.d.ts +0 -56
  317. package/bin/Platform/PlatformDetector.d.ts.map +0 -1
  318. package/bin/Platform/PlatformDetector.js +0 -247
  319. package/bin/Platform/PlatformDetector.js.map +0 -1
  320. package/bin/Platform/PlatformManager.d.ts +0 -50
  321. package/bin/Platform/PlatformManager.d.ts.map +0 -1
  322. package/bin/Platform/PlatformManager.js +0 -114
  323. package/bin/Platform/PlatformManager.js.map +0 -1
  324. package/bin/Platform/index.d.ts +0 -19
  325. package/bin/Platform/index.d.ts.map +0 -1
  326. package/bin/Platform/index.js +0 -29
  327. package/bin/Platform/index.js.map +0 -1
  328. package/bin/Plugins/DebugPlugin.d.ts +0 -156
  329. package/bin/Plugins/DebugPlugin.d.ts.map +0 -1
  330. package/bin/Plugins/DebugPlugin.js +0 -248
  331. package/bin/Plugins/DebugPlugin.js.map +0 -1
  332. package/bin/Plugins/index.d.ts +0 -2
  333. package/bin/Plugins/index.d.ts.map +0 -1
  334. package/bin/Plugins/index.js +0 -2
  335. package/bin/Plugins/index.js.map +0 -1
  336. package/bin/Types/IUpdatable.d.ts +0 -18
  337. package/bin/Types/IUpdatable.d.ts.map +0 -1
  338. package/bin/Types/IUpdatable.js +0 -7
  339. package/bin/Types/IUpdatable.js.map +0 -1
  340. package/bin/Types/TypeHelpers.d.ts +0 -238
  341. package/bin/Types/TypeHelpers.d.ts.map +0 -1
  342. package/bin/Types/TypeHelpers.js +0 -19
  343. package/bin/Types/TypeHelpers.js.map +0 -1
  344. package/bin/Types/index.d.ts +0 -466
  345. package/bin/Types/index.d.ts.map +0 -1
  346. package/bin/Types/index.js +0 -7
  347. package/bin/Types/index.js.map +0 -1
  348. package/bin/Utils/BinarySerializer.d.ts +0 -23
  349. package/bin/Utils/BinarySerializer.d.ts.map +0 -1
  350. package/bin/Utils/BinarySerializer.js +0 -100
  351. package/bin/Utils/BinarySerializer.js.map +0 -1
  352. package/bin/Utils/Debug/AdvancedProfilerCollector.d.ts +0 -153
  353. package/bin/Utils/Debug/AdvancedProfilerCollector.d.ts.map +0 -1
  354. package/bin/Utils/Debug/AdvancedProfilerCollector.js +0 -406
  355. package/bin/Utils/Debug/AdvancedProfilerCollector.js.map +0 -1
  356. package/bin/Utils/Debug/ComponentDataCollector.d.ts +0 -32
  357. package/bin/Utils/Debug/ComponentDataCollector.d.ts.map +0 -1
  358. package/bin/Utils/Debug/ComponentDataCollector.js +0 -250
  359. package/bin/Utils/Debug/ComponentDataCollector.js.map +0 -1
  360. package/bin/Utils/Debug/DebugConfigService.d.ts +0 -16
  361. package/bin/Utils/Debug/DebugConfigService.d.ts.map +0 -1
  362. package/bin/Utils/Debug/DebugConfigService.js +0 -42
  363. package/bin/Utils/Debug/DebugConfigService.js.map +0 -1
  364. package/bin/Utils/Debug/DebugManager.d.ts +0 -131
  365. package/bin/Utils/Debug/DebugManager.d.ts.map +0 -1
  366. package/bin/Utils/Debug/DebugManager.js +0 -848
  367. package/bin/Utils/Debug/DebugManager.js.map +0 -1
  368. package/bin/Utils/Debug/EntityDataCollector.d.ts +0 -115
  369. package/bin/Utils/Debug/EntityDataCollector.d.ts.map +0 -1
  370. package/bin/Utils/Debug/EntityDataCollector.js +0 -870
  371. package/bin/Utils/Debug/EntityDataCollector.js.map +0 -1
  372. package/bin/Utils/Debug/PerformanceDataCollector.d.ts +0 -31
  373. package/bin/Utils/Debug/PerformanceDataCollector.d.ts.map +0 -1
  374. package/bin/Utils/Debug/PerformanceDataCollector.js +0 -203
  375. package/bin/Utils/Debug/PerformanceDataCollector.js.map +0 -1
  376. package/bin/Utils/Debug/SceneDataCollector.d.ts +0 -18
  377. package/bin/Utils/Debug/SceneDataCollector.d.ts.map +0 -1
  378. package/bin/Utils/Debug/SceneDataCollector.js +0 -43
  379. package/bin/Utils/Debug/SceneDataCollector.js.map +0 -1
  380. package/bin/Utils/Debug/SystemDataCollector.d.ts +0 -14
  381. package/bin/Utils/Debug/SystemDataCollector.d.ts.map +0 -1
  382. package/bin/Utils/Debug/SystemDataCollector.js +0 -60
  383. package/bin/Utils/Debug/SystemDataCollector.js.map +0 -1
  384. package/bin/Utils/Debug/WebSocketManager.d.ts +0 -54
  385. package/bin/Utils/Debug/WebSocketManager.d.ts.map +0 -1
  386. package/bin/Utils/Debug/WebSocketManager.js +0 -141
  387. package/bin/Utils/Debug/WebSocketManager.js.map +0 -1
  388. package/bin/Utils/Debug/index.d.ts +0 -11
  389. package/bin/Utils/Debug/index.d.ts.map +0 -1
  390. package/bin/Utils/Debug/index.js +0 -10
  391. package/bin/Utils/Debug/index.js.map +0 -1
  392. package/bin/Utils/Emitter.d.ts +0 -61
  393. package/bin/Utils/Emitter.d.ts.map +0 -1
  394. package/bin/Utils/Emitter.js +0 -101
  395. package/bin/Utils/Emitter.js.map +0 -1
  396. package/bin/Utils/Extensions/NumberExtension.d.ts +0 -13
  397. package/bin/Utils/Extensions/NumberExtension.d.ts.map +0 -1
  398. package/bin/Utils/Extensions/NumberExtension.js +0 -17
  399. package/bin/Utils/Extensions/NumberExtension.js.map +0 -1
  400. package/bin/Utils/Extensions/TypeUtils.d.ts +0 -13
  401. package/bin/Utils/Extensions/TypeUtils.d.ts.map +0 -1
  402. package/bin/Utils/Extensions/TypeUtils.js +0 -15
  403. package/bin/Utils/Extensions/TypeUtils.js.map +0 -1
  404. package/bin/Utils/Extensions/index.d.ts +0 -3
  405. package/bin/Utils/Extensions/index.d.ts.map +0 -1
  406. package/bin/Utils/Extensions/index.js +0 -4
  407. package/bin/Utils/Extensions/index.js.map +0 -1
  408. package/bin/Utils/GlobalManager.d.ts +0 -29
  409. package/bin/Utils/GlobalManager.d.ts.map +0 -1
  410. package/bin/Utils/GlobalManager.js +0 -50
  411. package/bin/Utils/GlobalManager.js.map +0 -1
  412. package/bin/Utils/Logger/ConsoleLogger.d.ts +0 -74
  413. package/bin/Utils/Logger/ConsoleLogger.d.ts.map +0 -1
  414. package/bin/Utils/Logger/ConsoleLogger.js +0 -187
  415. package/bin/Utils/Logger/ConsoleLogger.js.map +0 -1
  416. package/bin/Utils/Logger/Constants.d.ts +0 -36
  417. package/bin/Utils/Logger/Constants.d.ts.map +0 -1
  418. package/bin/Utils/Logger/Constants.js +0 -40
  419. package/bin/Utils/Logger/Constants.js.map +0 -1
  420. package/bin/Utils/Logger/LoggerManager.d.ts +0 -91
  421. package/bin/Utils/Logger/LoggerManager.d.ts.map +0 -1
  422. package/bin/Utils/Logger/LoggerManager.js +0 -167
  423. package/bin/Utils/Logger/LoggerManager.js.map +0 -1
  424. package/bin/Utils/Logger/Types.d.ts +0 -40
  425. package/bin/Utils/Logger/Types.d.ts.map +0 -1
  426. package/bin/Utils/Logger/Types.js +0 -2
  427. package/bin/Utils/Logger/Types.js.map +0 -1
  428. package/bin/Utils/Logger/index.d.ts +0 -5
  429. package/bin/Utils/Logger/index.d.ts.map +0 -1
  430. package/bin/Utils/Logger/index.js +0 -5
  431. package/bin/Utils/Logger/index.js.map +0 -1
  432. package/bin/Utils/PerformanceMonitor.d.ts +0 -196
  433. package/bin/Utils/PerformanceMonitor.d.ts.map +0 -1
  434. package/bin/Utils/PerformanceMonitor.js +0 -244
  435. package/bin/Utils/PerformanceMonitor.js.map +0 -1
  436. package/bin/Utils/Pool/IPoolable.d.ts +0 -29
  437. package/bin/Utils/Pool/IPoolable.d.ts.map +0 -1
  438. package/bin/Utils/Pool/IPoolable.js +0 -2
  439. package/bin/Utils/Pool/IPoolable.js.map +0 -1
  440. package/bin/Utils/Pool/Pool.d.ts +0 -109
  441. package/bin/Utils/Pool/Pool.d.ts.map +0 -1
  442. package/bin/Utils/Pool/Pool.js +0 -238
  443. package/bin/Utils/Pool/Pool.js.map +0 -1
  444. package/bin/Utils/Pool/PoolManager.d.ts +0 -96
  445. package/bin/Utils/Pool/PoolManager.d.ts.map +0 -1
  446. package/bin/Utils/Pool/PoolManager.js +0 -199
  447. package/bin/Utils/Pool/PoolManager.js.map +0 -1
  448. package/bin/Utils/Pool/index.d.ts +0 -4
  449. package/bin/Utils/Pool/index.d.ts.map +0 -1
  450. package/bin/Utils/Pool/index.js +0 -4
  451. package/bin/Utils/Pool/index.js.map +0 -1
  452. package/bin/Utils/Profiler/AutoProfiler.d.ts +0 -160
  453. package/bin/Utils/Profiler/AutoProfiler.d.ts.map +0 -1
  454. package/bin/Utils/Profiler/AutoProfiler.js +0 -503
  455. package/bin/Utils/Profiler/AutoProfiler.js.map +0 -1
  456. package/bin/Utils/Profiler/ProfilerSDK.d.ts +0 -175
  457. package/bin/Utils/Profiler/ProfilerSDK.d.ts.map +0 -1
  458. package/bin/Utils/Profiler/ProfilerSDK.js +0 -727
  459. package/bin/Utils/Profiler/ProfilerSDK.js.map +0 -1
  460. package/bin/Utils/Profiler/ProfilerTypes.d.ts +0 -218
  461. package/bin/Utils/Profiler/ProfilerTypes.d.ts.map +0 -1
  462. package/bin/Utils/Profiler/ProfilerTypes.js +0 -47
  463. package/bin/Utils/Profiler/ProfilerTypes.js.map +0 -1
  464. package/bin/Utils/Profiler/index.d.ts +0 -8
  465. package/bin/Utils/Profiler/index.d.ts.map +0 -1
  466. package/bin/Utils/Profiler/index.js +0 -7
  467. package/bin/Utils/Profiler/index.js.map +0 -1
  468. package/bin/Utils/Time.d.ts +0 -47
  469. package/bin/Utils/Time.d.ts.map +0 -1
  470. package/bin/Utils/Time.js +0 -64
  471. package/bin/Utils/Time.js.map +0 -1
  472. package/bin/Utils/Timers/ITimer.d.ts +0 -16
  473. package/bin/Utils/Timers/ITimer.d.ts.map +0 -1
  474. package/bin/Utils/Timers/ITimer.js +0 -2
  475. package/bin/Utils/Timers/ITimer.js.map +0 -1
  476. package/bin/Utils/Timers/Timer.d.ts +0 -30
  477. package/bin/Utils/Timers/Timer.d.ts.map +0 -1
  478. package/bin/Utils/Timers/Timer.js +0 -58
  479. package/bin/Utils/Timers/Timer.js.map +0 -1
  480. package/bin/Utils/Timers/TimerManager.d.ts +0 -26
  481. package/bin/Utils/Timers/TimerManager.d.ts.map +0 -1
  482. package/bin/Utils/Timers/TimerManager.js +0 -48
  483. package/bin/Utils/Timers/TimerManager.js.map +0 -1
  484. package/bin/Utils/index.d.ts +0 -11
  485. package/bin/Utils/index.d.ts.map +0 -1
  486. package/bin/Utils/index.js +0 -11
  487. package/bin/Utils/index.js.map +0 -1
  488. package/bin/index.d.ts +0 -29
  489. package/bin/index.d.ts.map +0 -1
  490. package/bin/index.js +0 -36
  491. package/bin/index.js.map +0 -1
@@ -1,727 +0,0 @@
1
- /**
2
- * 性能分析器 SDK
3
- *
4
- * 提供统一的性能分析接口,支持:
5
- * - 手动采样标记
6
- * - 自动作用域测量
7
- * - 调用层级追踪
8
- * - 计数器和仪表
9
- */
10
- import { ProfileCategory, DEFAULT_PROFILER_CONFIG } from './ProfilerTypes';
11
- let idCounter = 0;
12
- function generateId() {
13
- return `sample_${++idCounter}_${Date.now()}`;
14
- }
15
- /**
16
- * 性能分析器 SDK
17
- */
18
- export class ProfilerSDK {
19
- constructor(config) {
20
- this.currentFrame = null;
21
- this.frameHistory = [];
22
- this.frameNumber = 0;
23
- this.activeSamples = new Map();
24
- this.sampleStack = [];
25
- this.counters = new Map();
26
- this.callGraph = new Map();
27
- this.gcCount = 0;
28
- this.previousHeapSize = 0;
29
- this.longTasks = [];
30
- this.performanceObserver = null;
31
- this.config = { ...DEFAULT_PROFILER_CONFIG, ...config };
32
- if (this.config.detectLongTasks) {
33
- this.setupLongTaskObserver();
34
- }
35
- }
36
- /**
37
- * 获取单例实例
38
- */
39
- static getInstance(config) {
40
- if (!ProfilerSDK.instance) {
41
- ProfilerSDK.instance = new ProfilerSDK(config);
42
- }
43
- return ProfilerSDK.instance;
44
- }
45
- /**
46
- * 重置实例(测试用)
47
- */
48
- static resetInstance() {
49
- if (ProfilerSDK.instance) {
50
- ProfilerSDK.instance.dispose();
51
- ProfilerSDK.instance = null;
52
- }
53
- }
54
- /**
55
- * 开始采样
56
- */
57
- static beginSample(name, category = ProfileCategory.Custom) {
58
- return ProfilerSDK.getInstance().beginSample(name, category);
59
- }
60
- /**
61
- * 结束采样
62
- */
63
- static endSample(handle) {
64
- if (handle) {
65
- ProfilerSDK.getInstance().endSample(handle);
66
- }
67
- }
68
- /**
69
- * 测量同步函数执行时间
70
- */
71
- static measure(name, fn, category = ProfileCategory.Custom) {
72
- return ProfilerSDK.getInstance().measure(name, fn, category);
73
- }
74
- /**
75
- * 测量异步函数执行时间
76
- */
77
- static async measureAsync(name, fn, category = ProfileCategory.Custom) {
78
- return ProfilerSDK.getInstance().measureAsync(name, fn, category);
79
- }
80
- /**
81
- * 开始帧
82
- */
83
- static beginFrame() {
84
- ProfilerSDK.getInstance().beginFrame();
85
- }
86
- /**
87
- * 结束帧
88
- */
89
- static endFrame() {
90
- ProfilerSDK.getInstance().endFrame();
91
- }
92
- /**
93
- * 递增计数器
94
- */
95
- static incrementCounter(name, value = 1, category = ProfileCategory.Custom) {
96
- ProfilerSDK.getInstance().incrementCounter(name, value, category);
97
- }
98
- /**
99
- * 设置仪表值
100
- */
101
- static setGauge(name, value, category = ProfileCategory.Custom) {
102
- ProfilerSDK.getInstance().setGauge(name, value, category);
103
- }
104
- /**
105
- * 启用/禁用分析器
106
- */
107
- static setEnabled(enabled) {
108
- ProfilerSDK.getInstance().setEnabled(enabled);
109
- }
110
- /**
111
- * 检查是否启用
112
- */
113
- static isEnabled() {
114
- return ProfilerSDK.getInstance().config.enabled;
115
- }
116
- /**
117
- * 获取当前帧数据
118
- */
119
- static getCurrentFrame() {
120
- return ProfilerSDK.getInstance().currentFrame;
121
- }
122
- /**
123
- * 获取帧历史
124
- */
125
- static getFrameHistory() {
126
- return ProfilerSDK.getInstance().frameHistory;
127
- }
128
- /**
129
- * 获取分析报告
130
- */
131
- static getReport(frameCount) {
132
- return ProfilerSDK.getInstance().generateReport(frameCount);
133
- }
134
- /**
135
- * 重置数据
136
- */
137
- static reset() {
138
- ProfilerSDK.getInstance().reset();
139
- }
140
- /**
141
- * 开始采样
142
- */
143
- beginSample(name, category = ProfileCategory.Custom) {
144
- if (!this.config.enabled || !this.config.enabledCategories.has(category)) {
145
- return null;
146
- }
147
- const parentHandle = this.sampleStack.length > 0
148
- ? this.sampleStack[this.sampleStack.length - 1]
149
- : undefined;
150
- if (parentHandle && this.sampleStack.length >= this.config.maxSampleDepth) {
151
- return null;
152
- }
153
- const handle = {
154
- id: generateId(),
155
- name,
156
- category,
157
- startTime: performance.now(),
158
- depth: this.sampleStack.length,
159
- parentId: parentHandle?.id
160
- };
161
- this.activeSamples.set(handle.id, handle);
162
- this.sampleStack.push(handle);
163
- return handle;
164
- }
165
- /**
166
- * 结束采样
167
- */
168
- endSample(handle) {
169
- if (!this.config.enabled || !this.activeSamples.has(handle.id)) {
170
- return;
171
- }
172
- const endTime = performance.now();
173
- const duration = endTime - handle.startTime;
174
- // 获取父级 handle(在删除当前 handle 之前)
175
- const parentHandle = handle.parentId ? this.activeSamples.get(handle.parentId) : undefined;
176
- const sample = {
177
- id: handle.id,
178
- name: handle.name,
179
- category: handle.category,
180
- startTime: handle.startTime,
181
- endTime,
182
- duration,
183
- selfTime: duration,
184
- parentId: handle.parentId,
185
- parentName: parentHandle?.name,
186
- depth: handle.depth,
187
- callCount: 1
188
- };
189
- if (this.currentFrame) {
190
- this.currentFrame.samples.push(sample);
191
- }
192
- this.updateCallGraph(handle.name, handle.category, duration, parentHandle);
193
- this.activeSamples.delete(handle.id);
194
- const stackIndex = this.sampleStack.indexOf(handle);
195
- if (stackIndex !== -1) {
196
- this.sampleStack.splice(stackIndex, 1);
197
- }
198
- }
199
- /**
200
- * 测量同步函数
201
- */
202
- measure(name, fn, category = ProfileCategory.Custom) {
203
- const handle = this.beginSample(name, category);
204
- try {
205
- return fn();
206
- }
207
- finally {
208
- if (handle) {
209
- this.endSample(handle);
210
- }
211
- }
212
- }
213
- /**
214
- * 测量异步函数
215
- */
216
- async measureAsync(name, fn, category = ProfileCategory.Custom) {
217
- const handle = this.beginSample(name, category);
218
- try {
219
- return await fn();
220
- }
221
- finally {
222
- if (handle) {
223
- this.endSample(handle);
224
- }
225
- }
226
- }
227
- /**
228
- * 开始帧
229
- */
230
- beginFrame() {
231
- if (!this.config.enabled)
232
- return;
233
- this.frameNumber++;
234
- this.currentFrame = {
235
- frameNumber: this.frameNumber,
236
- startTime: performance.now(),
237
- endTime: 0,
238
- duration: 0,
239
- samples: [],
240
- sampleStats: [],
241
- counters: new Map(this.counters),
242
- memory: this.captureMemory(),
243
- categoryStats: new Map()
244
- };
245
- this.resetFrameCounters();
246
- }
247
- /**
248
- * 结束帧
249
- */
250
- endFrame() {
251
- if (!this.config.enabled || !this.currentFrame)
252
- return;
253
- this.currentFrame.endTime = performance.now();
254
- this.currentFrame.duration = this.currentFrame.endTime - this.currentFrame.startTime;
255
- this.calculateSampleStats();
256
- this.calculateCategoryStats();
257
- this.frameHistory.push(this.currentFrame);
258
- while (this.frameHistory.length > this.config.maxFrameHistory) {
259
- this.frameHistory.shift();
260
- }
261
- this.sampleStack = [];
262
- this.activeSamples.clear();
263
- }
264
- /**
265
- * 递增计数器
266
- */
267
- incrementCounter(name, value = 1, category = ProfileCategory.Custom) {
268
- if (!this.config.enabled)
269
- return;
270
- let counter = this.counters.get(name);
271
- if (!counter) {
272
- counter = {
273
- name,
274
- category,
275
- value: 0,
276
- type: 'counter',
277
- history: []
278
- };
279
- this.counters.set(name, counter);
280
- }
281
- counter.value += value;
282
- counter.history.push({ time: performance.now(), value: counter.value });
283
- if (counter.history.length > 100) {
284
- counter.history.shift();
285
- }
286
- }
287
- /**
288
- * 设置仪表值
289
- */
290
- setGauge(name, value, category = ProfileCategory.Custom) {
291
- if (!this.config.enabled)
292
- return;
293
- let counter = this.counters.get(name);
294
- if (!counter) {
295
- counter = {
296
- name,
297
- category,
298
- value: 0,
299
- type: 'gauge',
300
- history: []
301
- };
302
- this.counters.set(name, counter);
303
- }
304
- counter.value = value;
305
- counter.history.push({ time: performance.now(), value });
306
- if (counter.history.length > 100) {
307
- counter.history.shift();
308
- }
309
- }
310
- /**
311
- * 设置启用状态
312
- */
313
- setEnabled(enabled) {
314
- this.config.enabled = enabled;
315
- if (enabled && this.config.detectLongTasks && !this.performanceObserver) {
316
- this.setupLongTaskObserver();
317
- }
318
- }
319
- /**
320
- * 重置数据
321
- */
322
- reset() {
323
- this.frameHistory = [];
324
- this.currentFrame = null;
325
- this.frameNumber = 0;
326
- this.activeSamples.clear();
327
- this.sampleStack = [];
328
- this.counters.clear();
329
- this.callGraph.clear();
330
- this.gcCount = 0;
331
- this.longTasks = [];
332
- }
333
- /**
334
- * 生成分析报告
335
- */
336
- generateReport(frameCount) {
337
- const frames = frameCount
338
- ? this.frameHistory.slice(-frameCount)
339
- : this.frameHistory;
340
- if (frames.length === 0) {
341
- return this.createEmptyReport();
342
- }
343
- const frameTimes = frames.map((f) => f.duration);
344
- const sortedTimes = [...frameTimes].sort((a, b) => a - b);
345
- const aggregatedStats = this.aggregateSampleStats(frames);
346
- const hotspots = aggregatedStats
347
- .sort((a, b) => b.inclusiveTime - a.inclusiveTime)
348
- .slice(0, 20);
349
- const categoryBreakdown = this.aggregateCategoryStats(frames);
350
- // 根据帧历史重新计算 callGraph(不使用全局累积的数据)
351
- const callGraph = this.buildCallGraphFromFrames(frames);
352
- const firstFrame = frames[0];
353
- const lastFrame = frames[frames.length - 1];
354
- return {
355
- startTime: firstFrame?.startTime ?? 0,
356
- endTime: lastFrame?.endTime ?? 0,
357
- totalFrames: frames.length,
358
- averageFrameTime: frameTimes.reduce((a, b) => a + b, 0) / frameTimes.length,
359
- minFrameTime: Math.min(...frameTimes),
360
- maxFrameTime: Math.max(...frameTimes),
361
- p95FrameTime: sortedTimes[Math.floor(sortedTimes.length * 0.95)] || 0,
362
- p99FrameTime: sortedTimes[Math.floor(sortedTimes.length * 0.99)] || 0,
363
- hotspots,
364
- callGraph,
365
- categoryBreakdown,
366
- memoryTrend: frames.map((f) => f.memory),
367
- longTasks: [...this.longTasks]
368
- };
369
- }
370
- /**
371
- * 从帧历史构建调用图
372
- * 注意:totalTime 存储的是平均耗时(总耗时/调用次数),而不是累计总耗时
373
- */
374
- buildCallGraphFromFrames(frames) {
375
- // 临时存储累计数据
376
- const tempData = new Map();
377
- for (const frame of frames) {
378
- for (const sample of frame.samples) {
379
- // 获取或创建当前函数的节点
380
- let node = tempData.get(sample.name);
381
- if (!node) {
382
- node = {
383
- category: sample.category,
384
- callCount: 0,
385
- totalTime: 0,
386
- callers: new Map(),
387
- callees: new Map()
388
- };
389
- tempData.set(sample.name, node);
390
- }
391
- node.callCount++;
392
- node.totalTime += sample.duration;
393
- // 如果有父级,建立调用关系
394
- if (sample.parentName) {
395
- // 记录当前函数被谁调用
396
- const callerData = node.callers.get(sample.parentName) || { count: 0, totalTime: 0 };
397
- callerData.count++;
398
- callerData.totalTime += sample.duration;
399
- node.callers.set(sample.parentName, callerData);
400
- // 确保父节点存在并记录它调用了谁
401
- let parentNode = tempData.get(sample.parentName);
402
- if (!parentNode) {
403
- parentNode = {
404
- category: sample.category,
405
- callCount: 0,
406
- totalTime: 0,
407
- callers: new Map(),
408
- callees: new Map()
409
- };
410
- tempData.set(sample.parentName, parentNode);
411
- }
412
- const calleeData = parentNode.callees.get(sample.name) || { count: 0, totalTime: 0 };
413
- calleeData.count++;
414
- calleeData.totalTime += sample.duration;
415
- parentNode.callees.set(sample.name, calleeData);
416
- }
417
- }
418
- }
419
- // 转换为最终结果,将 totalTime 改为平均耗时
420
- const callGraph = new Map();
421
- for (const [name, data] of tempData) {
422
- const avgCallers = new Map();
423
- for (const [callerName, callerData] of data.callers) {
424
- avgCallers.set(callerName, {
425
- count: callerData.count,
426
- totalTime: callerData.count > 0 ? callerData.totalTime / callerData.count : 0
427
- });
428
- }
429
- const avgCallees = new Map();
430
- for (const [calleeName, calleeData] of data.callees) {
431
- avgCallees.set(calleeName, {
432
- count: calleeData.count,
433
- totalTime: calleeData.count > 0 ? calleeData.totalTime / calleeData.count : 0
434
- });
435
- }
436
- callGraph.set(name, {
437
- name,
438
- category: data.category,
439
- callCount: data.callCount,
440
- totalTime: data.callCount > 0 ? data.totalTime / data.callCount : 0,
441
- callers: avgCallers,
442
- callees: avgCallees
443
- });
444
- }
445
- return callGraph;
446
- }
447
- /**
448
- * 获取调用图数据
449
- */
450
- getCallGraph() {
451
- return new Map(this.callGraph);
452
- }
453
- /**
454
- * 获取特定函数的调用关系
455
- */
456
- getFunctionCallInfo(name) {
457
- const node = this.callGraph.get(name);
458
- if (!node)
459
- return null;
460
- return {
461
- callers: Array.from(node.callers.entries()).map(([name, data]) => ({
462
- name,
463
- ...data
464
- })),
465
- callees: Array.from(node.callees.entries()).map(([name, data]) => ({
466
- name,
467
- ...data
468
- }))
469
- };
470
- }
471
- /**
472
- * 释放资源
473
- */
474
- dispose() {
475
- if (this.performanceObserver) {
476
- this.performanceObserver.disconnect();
477
- this.performanceObserver = null;
478
- }
479
- this.reset();
480
- }
481
- captureMemory() {
482
- const now = performance.now();
483
- let usedHeapSize = 0;
484
- let totalHeapSize = 0;
485
- let heapSizeLimit = 0;
486
- const perfWithMemory = performance;
487
- if (perfWithMemory.memory) {
488
- usedHeapSize = perfWithMemory.memory.usedJSHeapSize || 0;
489
- totalHeapSize = perfWithMemory.memory.totalJSHeapSize || 0;
490
- heapSizeLimit = perfWithMemory.memory.jsHeapSizeLimit || 0;
491
- if (this.previousHeapSize > 0 && usedHeapSize < this.previousHeapSize - 1024 * 1024) {
492
- this.gcCount++;
493
- }
494
- this.previousHeapSize = usedHeapSize;
495
- }
496
- return {
497
- timestamp: now,
498
- usedHeapSize,
499
- totalHeapSize,
500
- heapSizeLimit,
501
- utilizationPercent: heapSizeLimit > 0 ? (usedHeapSize / heapSizeLimit) * 100 : 0,
502
- gcCount: this.gcCount
503
- };
504
- }
505
- resetFrameCounters() {
506
- for (const counter of this.counters.values()) {
507
- if (counter.type === 'counter') {
508
- counter.value = 0;
509
- }
510
- }
511
- }
512
- calculateSampleStats() {
513
- if (!this.currentFrame)
514
- return;
515
- const sampleMap = new Map();
516
- for (const sample of this.currentFrame.samples) {
517
- let stats = sampleMap.get(sample.name);
518
- if (!stats) {
519
- stats = {
520
- name: sample.name,
521
- category: sample.category,
522
- inclusiveTime: 0,
523
- exclusiveTime: 0,
524
- callCount: 0,
525
- averageTime: 0,
526
- minTime: Number.MAX_VALUE,
527
- maxTime: 0,
528
- percentOfFrame: 0,
529
- percentOfParent: 0,
530
- children: [],
531
- depth: sample.depth
532
- };
533
- sampleMap.set(sample.name, stats);
534
- }
535
- stats.inclusiveTime += sample.duration;
536
- stats.callCount += 1;
537
- stats.minTime = Math.min(stats.minTime, sample.duration);
538
- stats.maxTime = Math.max(stats.maxTime, sample.duration);
539
- }
540
- for (const sample of this.currentFrame.samples) {
541
- if (sample.parentId) {
542
- const parentSample = this.currentFrame.samples.find((s) => s.id === sample.parentId);
543
- if (parentSample) {
544
- const parentStats = sampleMap.get(parentSample.name);
545
- if (parentStats) {
546
- parentStats.exclusiveTime = parentStats.inclusiveTime;
547
- for (const childSample of this.currentFrame.samples) {
548
- if (childSample.parentId === parentSample.id) {
549
- parentStats.exclusiveTime -= childSample.duration;
550
- }
551
- }
552
- }
553
- }
554
- }
555
- }
556
- const frameDuration = this.currentFrame.duration || 1;
557
- for (const stats of sampleMap.values()) {
558
- stats.averageTime = stats.inclusiveTime / stats.callCount;
559
- stats.percentOfFrame = (stats.inclusiveTime / frameDuration) * 100;
560
- if (stats.exclusiveTime === 0) {
561
- stats.exclusiveTime = stats.inclusiveTime;
562
- }
563
- }
564
- this.currentFrame.sampleStats = Array.from(sampleMap.values())
565
- .sort((a, b) => b.inclusiveTime - a.inclusiveTime);
566
- }
567
- calculateCategoryStats() {
568
- if (!this.currentFrame)
569
- return;
570
- const categoryMap = new Map();
571
- for (const sample of this.currentFrame.samples) {
572
- if (sample.depth === 0) {
573
- let stats = categoryMap.get(sample.category);
574
- if (!stats) {
575
- stats = { totalTime: 0, sampleCount: 0 };
576
- categoryMap.set(sample.category, stats);
577
- }
578
- stats.totalTime += sample.duration;
579
- stats.sampleCount += 1;
580
- }
581
- }
582
- const frameDuration = this.currentFrame.duration || 1;
583
- for (const [category, stats] of categoryMap) {
584
- this.currentFrame.categoryStats.set(category, {
585
- ...stats,
586
- percentOfFrame: (stats.totalTime / frameDuration) * 100
587
- });
588
- }
589
- }
590
- updateCallGraph(name, category, duration, parentHandle) {
591
- let node = this.callGraph.get(name);
592
- if (!node) {
593
- node = {
594
- name,
595
- category,
596
- callCount: 0,
597
- totalTime: 0,
598
- callers: new Map(),
599
- callees: new Map()
600
- };
601
- this.callGraph.set(name, node);
602
- }
603
- node.callCount++;
604
- node.totalTime += duration;
605
- // 如果有父级,建立调用关系
606
- if (parentHandle) {
607
- // 记录当前函数被谁调用
608
- const callerData = node.callers.get(parentHandle.name) || { count: 0, totalTime: 0 };
609
- callerData.count++;
610
- callerData.totalTime += duration;
611
- node.callers.set(parentHandle.name, callerData);
612
- // 确保父节点存在
613
- let parentNode = this.callGraph.get(parentHandle.name);
614
- if (!parentNode) {
615
- parentNode = {
616
- name: parentHandle.name,
617
- category: parentHandle.category,
618
- callCount: 0,
619
- totalTime: 0,
620
- callers: new Map(),
621
- callees: new Map()
622
- };
623
- this.callGraph.set(parentHandle.name, parentNode);
624
- }
625
- // 记录父函数调用了谁
626
- const calleeData = parentNode.callees.get(name) || { count: 0, totalTime: 0 };
627
- calleeData.count++;
628
- calleeData.totalTime += duration;
629
- parentNode.callees.set(name, calleeData);
630
- }
631
- }
632
- aggregateSampleStats(frames) {
633
- const aggregated = new Map();
634
- for (const frame of frames) {
635
- for (const stats of frame.sampleStats) {
636
- let agg = aggregated.get(stats.name);
637
- if (!agg) {
638
- agg = {
639
- ...stats,
640
- minTime: Number.MAX_VALUE
641
- };
642
- aggregated.set(stats.name, agg);
643
- }
644
- else {
645
- agg.inclusiveTime += stats.inclusiveTime;
646
- agg.exclusiveTime += stats.exclusiveTime;
647
- agg.callCount += stats.callCount;
648
- agg.minTime = Math.min(agg.minTime, stats.minTime);
649
- agg.maxTime = Math.max(agg.maxTime, stats.maxTime);
650
- }
651
- }
652
- }
653
- const totalTime = frames.reduce((sum, f) => sum + f.duration, 0);
654
- for (const stats of aggregated.values()) {
655
- stats.averageTime = stats.inclusiveTime / stats.callCount;
656
- stats.percentOfFrame = (stats.inclusiveTime / totalTime) * 100;
657
- }
658
- return Array.from(aggregated.values());
659
- }
660
- aggregateCategoryStats(frames) {
661
- const aggregated = new Map();
662
- for (const frame of frames) {
663
- for (const [category, stats] of frame.categoryStats) {
664
- let agg = aggregated.get(category);
665
- if (!agg) {
666
- agg = { totalTime: 0, frameCount: 0 };
667
- aggregated.set(category, agg);
668
- }
669
- agg.totalTime += stats.totalTime;
670
- agg.frameCount++;
671
- }
672
- }
673
- const totalTime = frames.reduce((sum, f) => sum + f.duration, 0);
674
- const result = new Map();
675
- for (const [category, agg] of aggregated) {
676
- result.set(category, {
677
- totalTime: agg.totalTime,
678
- averageTime: agg.frameCount > 0 ? agg.totalTime / agg.frameCount : 0,
679
- percentOfTotal: totalTime > 0 ? (agg.totalTime / totalTime) * 100 : 0
680
- });
681
- }
682
- return result;
683
- }
684
- setupLongTaskObserver() {
685
- if (typeof PerformanceObserver === 'undefined')
686
- return;
687
- try {
688
- this.performanceObserver = new PerformanceObserver((list) => {
689
- for (const entry of list.getEntries()) {
690
- if (entry.duration > this.config.longTaskThreshold) {
691
- this.longTasks.push({
692
- startTime: entry.startTime,
693
- duration: entry.duration,
694
- attribution: entry.attribution?.map((a) => a.name) || []
695
- });
696
- if (this.longTasks.length > 100) {
697
- this.longTasks.shift();
698
- }
699
- }
700
- }
701
- });
702
- this.performanceObserver.observe({ entryTypes: ['longtask'] });
703
- }
704
- catch {
705
- // Long Task API not supported
706
- }
707
- }
708
- createEmptyReport() {
709
- return {
710
- startTime: 0,
711
- endTime: 0,
712
- totalFrames: 0,
713
- averageFrameTime: 0,
714
- minFrameTime: 0,
715
- maxFrameTime: 0,
716
- p95FrameTime: 0,
717
- p99FrameTime: 0,
718
- hotspots: [],
719
- callGraph: new Map(),
720
- categoryBreakdown: new Map(),
721
- memoryTrend: [],
722
- longTasks: []
723
- };
724
- }
725
- }
726
- ProfilerSDK.instance = null;
727
- //# sourceMappingURL=ProfilerSDK.js.map