@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,221 +0,0 @@
1
- /**
2
- * 服务基础接口
3
- * 所有通过 ServiceContainer 管理的服务都应该实现此接口
4
- */
5
- export interface IService {
6
- /**
7
- * 释放服务占用的资源
8
- * 当服务被注销或容器被清空时调用
9
- */
10
- dispose(): void;
11
- }
12
- /**
13
- * 服务类型
14
- *
15
- * 支持任意构造函数签名,以便与依赖注入装饰器配合使用
16
- * 使用 any[] 以允许任意参数类型的构造函数
17
- */
18
- export type ServiceType<T extends IService> = new (...args: any[]) => T;
19
- /**
20
- * 服务标识符
21
- *
22
- * 支持类构造函数或 Symbol 作为服务标识符
23
- */
24
- export type ServiceIdentifier<T extends IService = IService> = ServiceType<T> | symbol;
25
- /**
26
- * 服务生命周期
27
- */
28
- export declare enum ServiceLifetime {
29
- /**
30
- * 单例模式 - 整个应用生命周期内只有一个实例
31
- */
32
- Singleton = "singleton",
33
- /**
34
- * 瞬时模式 - 每次请求都创建新实例
35
- */
36
- Transient = "transient"
37
- }
38
- /**
39
- * 服务容器
40
- *
41
- * 负责管理所有服务的注册、解析和生命周期。
42
- * 支持依赖注入和服务定位模式。
43
- *
44
- * 特点:
45
- * - 单例和瞬时两种生命周期
46
- * - 支持工厂函数注册
47
- * - 支持实例注册
48
- * - 类型安全的服务解析
49
- *
50
- * @example
51
- * ```typescript
52
- * const container = new ServiceContainer();
53
- *
54
- * // 注册单例服务
55
- * container.registerSingleton(TimerManager);
56
- *
57
- * // 注册工厂函数
58
- * container.registerSingleton(Logger, (c) => createLogger('App'));
59
- *
60
- * // 注册实例
61
- * container.registerInstance(Config, new Config());
62
- *
63
- * // 解析服务
64
- * const timer = container.resolve(TimerManager);
65
- * ```
66
- */
67
- export declare class ServiceContainer {
68
- /**
69
- * 服务注册表
70
- */
71
- private _services;
72
- /**
73
- * 正在解析的服务栈(用于循环依赖检测)
74
- */
75
- private _resolving;
76
- /**
77
- * 可更新的服务列表
78
- *
79
- * 自动收集所有使用@Updatable装饰器标记的服务,供Core统一更新
80
- * 按优先级排序(数值越小越先执行)
81
- */
82
- private _updatableServices;
83
- /**
84
- * 注册单例服务
85
- *
86
- * @param type - 服务类型
87
- * @param factory - 可选的工厂函数
88
- *
89
- * @example
90
- * ```typescript
91
- * // 直接注册类型
92
- * container.registerSingleton(TimerManager);
93
- *
94
- * // 使用工厂函数
95
- * container.registerSingleton(Logger, (c) => {
96
- * return createLogger('App');
97
- * });
98
- * ```
99
- */
100
- registerSingleton<T extends IService>(type: ServiceType<T>, factory?: (container: ServiceContainer) => T): void;
101
- /**
102
- * 注册瞬时服务
103
- *
104
- * 每次解析都会创建新实例。
105
- *
106
- * @param type - 服务类型
107
- * @param factory - 可选的工厂函数
108
- *
109
- * @example
110
- * ```typescript
111
- * // 每次解析都创建新实例
112
- * container.registerTransient(Command);
113
- * ```
114
- */
115
- registerTransient<T extends IService>(type: ServiceType<T>, factory?: (container: ServiceContainer) => T): void;
116
- /**
117
- * 注册服务实例
118
- *
119
- * 直接注册已创建的实例,自动视为单例。
120
- *
121
- * @param identifier - 服务标识符(构造函数或 Symbol)
122
- * @param instance - 服务实例
123
- *
124
- * @example
125
- * ```typescript
126
- * const config = new Config();
127
- * container.registerInstance(Config, config);
128
- *
129
- * // 使用 Symbol 作为标识符(适用于接口)
130
- * const IFileSystem = Symbol('IFileSystem');
131
- * container.registerInstance(IFileSystem, new TauriFileSystem());
132
- * ```
133
- */
134
- registerInstance<T extends IService>(identifier: ServiceIdentifier<T>, instance: T): void;
135
- /**
136
- * 解析服务
137
- *
138
- * @param identifier - 服务标识符(构造函数或 Symbol)
139
- * @returns 服务实例
140
- * @throws 如果服务未注册或存在循环依赖
141
- *
142
- * @example
143
- * ```typescript
144
- * const timer = container.resolve(TimerManager);
145
- *
146
- * // 使用 Symbol
147
- * const fileSystem = container.resolve(IFileSystem);
148
- * ```
149
- */
150
- resolve<T extends IService>(identifier: ServiceIdentifier<T>): T;
151
- /**
152
- * 尝试解析服务
153
- *
154
- * 如果服务未注册,返回null而不是抛出异常。
155
- *
156
- * @param identifier - 服务标识符(构造函数或 Symbol)
157
- * @returns 服务实例或null
158
- *
159
- * @example
160
- * ```typescript
161
- * const timer = container.tryResolve(TimerManager);
162
- * if (timer) {
163
- * timer.schedule(...);
164
- * }
165
- * ```
166
- */
167
- tryResolve<T extends IService>(identifier: ServiceIdentifier<T>): T | null;
168
- /**
169
- * 检查服务是否已注册
170
- *
171
- * @param identifier - 服务标识符(构造函数或 Symbol)
172
- * @returns 是否已注册
173
- */
174
- isRegistered<T extends IService>(identifier: ServiceIdentifier<T>): boolean;
175
- /**
176
- * 注销服务
177
- *
178
- * @param identifier - 服务标识符(构造函数或 Symbol)
179
- * @returns 是否成功注销
180
- */
181
- unregister<T extends IService>(identifier: ServiceIdentifier<T>): boolean;
182
- /**
183
- * 清空所有服务
184
- */
185
- clear(): void;
186
- /**
187
- * 获取所有已注册的服务标识符
188
- *
189
- * @returns 服务标识符数组
190
- */
191
- getRegisteredServices(): ServiceIdentifier[];
192
- /**
193
- * 更新所有使用@Updatable装饰器标记的服务
194
- *
195
- * 此方法会按优先级顺序遍历所有可更新的服务并调用它们的update方法。
196
- * 所有服务在注册时已经由@Updatable装饰器验证过必须实现IUpdatable接口。
197
- * 通常在Core的主更新循环中调用。
198
- *
199
- * @param deltaTime - 可选的帧时间间隔(秒)
200
- *
201
- * @example
202
- * ```typescript
203
- * // 在Core的update方法中
204
- * this._serviceContainer.updateAll(deltaTime);
205
- * ```
206
- */
207
- updateAll(deltaTime?: number): void;
208
- /**
209
- * 获取所有可更新的服务数量
210
- *
211
- * @returns 可更新服务的数量
212
- */
213
- getUpdatableCount(): number;
214
- /**
215
- * 获取所有已实例化的服务实例
216
- *
217
- * @returns 所有服务实例的数组
218
- */
219
- getAll(): IService[];
220
- }
221
- //# sourceMappingURL=ServiceContainer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceContainer.d.ts","sourceRoot":"","sources":["../../src/Core/ServiceContainer.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACrB;;;OAGG;IACH,OAAO,IAAI,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,QAAQ,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAExE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAEvF;;GAEG;AACH,oBAAY,eAAe;IACvB;;OAEG;IACH,SAAS,cAAc;IAEvB;;OAEG;IACH,SAAS,cAAc;CAC1B;AAgCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,gBAAgB;IACzB;;OAEG;IACH,OAAO,CAAC,SAAS,CAAoE;IAErF;;OAEG;IACH,OAAO,CAAC,UAAU,CAAqC;IAEvD;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAAuD;IAEjF;;;;;;;;;;;;;;;;OAgBG;IACI,iBAAiB,CAAC,CAAC,SAAS,QAAQ,EACvC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,CAAC,GAC7C,IAAI;IAgBP;;;;;;;;;;;;;OAaG;IACI,iBAAiB,CAAC,CAAC,SAAS,QAAQ,EACvC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,CAAC,GAC7C,IAAI;IAgBP;;;;;;;;;;;;;;;;;OAiBG;IACI,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI;IA6BhG;;;;;;;;;;;;;;OAcG;IACI,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC;IA8DvE;;;;;;;;;;;;;;;OAeG;IACI,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;IAQjF;;;;;OAKG;IACI,YAAY,CAAC,CAAC,SAAS,QAAQ,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO;IAIlF;;;;;OAKG;IACI,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO;IAuBhF;;OAEG;IACI,KAAK,IAAI,IAAI;IAapB;;;;OAIG;IACI,qBAAqB,IAAI,iBAAiB,EAAE;IAInD;;;;;;;;;;;;;;OAcG;IACI,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAM1C;;;;OAIG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;;;OAIG;IACI,MAAM,IAAI,QAAQ,EAAE;CAW9B"}
@@ -1,352 +0,0 @@
1
- import { createLogger } from '../Utils/Logger';
2
- import { isUpdatable as checkUpdatable, getUpdatableMetadata } from './DI';
3
- const logger = createLogger('ServiceContainer');
4
- /**
5
- * 服务生命周期
6
- */
7
- export var ServiceLifetime;
8
- (function (ServiceLifetime) {
9
- /**
10
- * 单例模式 - 整个应用生命周期内只有一个实例
11
- */
12
- ServiceLifetime["Singleton"] = "singleton";
13
- /**
14
- * 瞬时模式 - 每次请求都创建新实例
15
- */
16
- ServiceLifetime["Transient"] = "transient";
17
- })(ServiceLifetime || (ServiceLifetime = {}));
18
- /**
19
- * 服务容器
20
- *
21
- * 负责管理所有服务的注册、解析和生命周期。
22
- * 支持依赖注入和服务定位模式。
23
- *
24
- * 特点:
25
- * - 单例和瞬时两种生命周期
26
- * - 支持工厂函数注册
27
- * - 支持实例注册
28
- * - 类型安全的服务解析
29
- *
30
- * @example
31
- * ```typescript
32
- * const container = new ServiceContainer();
33
- *
34
- * // 注册单例服务
35
- * container.registerSingleton(TimerManager);
36
- *
37
- * // 注册工厂函数
38
- * container.registerSingleton(Logger, (c) => createLogger('App'));
39
- *
40
- * // 注册实例
41
- * container.registerInstance(Config, new Config());
42
- *
43
- * // 解析服务
44
- * const timer = container.resolve(TimerManager);
45
- * ```
46
- */
47
- export class ServiceContainer {
48
- constructor() {
49
- /**
50
- * 服务注册表
51
- */
52
- this._services = new Map();
53
- /**
54
- * 正在解析的服务栈(用于循环依赖检测)
55
- */
56
- this._resolving = new Set();
57
- /**
58
- * 可更新的服务列表
59
- *
60
- * 自动收集所有使用@Updatable装饰器标记的服务,供Core统一更新
61
- * 按优先级排序(数值越小越先执行)
62
- */
63
- this._updatableServices = [];
64
- }
65
- /**
66
- * 注册单例服务
67
- *
68
- * @param type - 服务类型
69
- * @param factory - 可选的工厂函数
70
- *
71
- * @example
72
- * ```typescript
73
- * // 直接注册类型
74
- * container.registerSingleton(TimerManager);
75
- *
76
- * // 使用工厂函数
77
- * container.registerSingleton(Logger, (c) => {
78
- * return createLogger('App');
79
- * });
80
- * ```
81
- */
82
- registerSingleton(type, factory) {
83
- if (this._services.has(type)) {
84
- logger.warn(`Service ${type.name} is already registered`);
85
- return;
86
- }
87
- this._services.set(type, {
88
- identifier: type,
89
- type: type,
90
- ...(factory && { factory: factory }),
91
- lifetime: ServiceLifetime.Singleton
92
- });
93
- logger.debug(`Registered singleton service: ${type.name}`);
94
- }
95
- /**
96
- * 注册瞬时服务
97
- *
98
- * 每次解析都会创建新实例。
99
- *
100
- * @param type - 服务类型
101
- * @param factory - 可选的工厂函数
102
- *
103
- * @example
104
- * ```typescript
105
- * // 每次解析都创建新实例
106
- * container.registerTransient(Command);
107
- * ```
108
- */
109
- registerTransient(type, factory) {
110
- if (this._services.has(type)) {
111
- logger.warn(`Service ${type.name} is already registered`);
112
- return;
113
- }
114
- this._services.set(type, {
115
- identifier: type,
116
- type: type,
117
- ...(factory && { factory: factory }),
118
- lifetime: ServiceLifetime.Transient
119
- });
120
- logger.debug(`Registered transient service: ${type.name}`);
121
- }
122
- /**
123
- * 注册服务实例
124
- *
125
- * 直接注册已创建的实例,自动视为单例。
126
- *
127
- * @param identifier - 服务标识符(构造函数或 Symbol)
128
- * @param instance - 服务实例
129
- *
130
- * @example
131
- * ```typescript
132
- * const config = new Config();
133
- * container.registerInstance(Config, config);
134
- *
135
- * // 使用 Symbol 作为标识符(适用于接口)
136
- * const IFileSystem = Symbol('IFileSystem');
137
- * container.registerInstance(IFileSystem, new TauriFileSystem());
138
- * ```
139
- */
140
- registerInstance(identifier, instance) {
141
- if (this._services.has(identifier)) {
142
- const name = typeof identifier === 'symbol' ? identifier.description : identifier.name;
143
- logger.warn(`Service ${name} is already registered`);
144
- return;
145
- }
146
- this._services.set(identifier, {
147
- identifier,
148
- instance: instance,
149
- lifetime: ServiceLifetime.Singleton
150
- });
151
- // 如果使用了@Updatable装饰器,添加到可更新列表
152
- if (typeof identifier !== 'symbol' && checkUpdatable(identifier)) {
153
- const metadata = getUpdatableMetadata(identifier);
154
- const priority = metadata?.priority ?? 0;
155
- this._updatableServices.push({ instance, priority });
156
- // 按优先级排序(数值越小越先执行)
157
- this._updatableServices.sort((a, b) => a.priority - b.priority);
158
- logger.debug(`Service ${identifier.name} is updatable (priority: ${priority}), added to update list`);
159
- }
160
- const name = typeof identifier === 'symbol' ? identifier.description : identifier.name;
161
- logger.debug(`Registered service instance: ${name}`);
162
- }
163
- /**
164
- * 解析服务
165
- *
166
- * @param identifier - 服务标识符(构造函数或 Symbol)
167
- * @returns 服务实例
168
- * @throws 如果服务未注册或存在循环依赖
169
- *
170
- * @example
171
- * ```typescript
172
- * const timer = container.resolve(TimerManager);
173
- *
174
- * // 使用 Symbol
175
- * const fileSystem = container.resolve(IFileSystem);
176
- * ```
177
- */
178
- resolve(identifier) {
179
- const registration = this._services.get(identifier);
180
- const name = typeof identifier === 'symbol' ? identifier.description : identifier.name;
181
- if (!registration) {
182
- throw new Error(`Service ${name} is not registered`);
183
- }
184
- // 检测循环依赖
185
- if (this._resolving.has(identifier)) {
186
- const chain = Array.from(this._resolving).map((t) => typeof t === 'symbol' ? t.description : t.name).join(' -> ');
187
- throw new Error(`Circular dependency detected: ${chain} -> ${name}`);
188
- }
189
- // 如果是单例且已经有实例,直接返回
190
- if (registration.lifetime === ServiceLifetime.Singleton && registration.instance) {
191
- return registration.instance;
192
- }
193
- // 添加到解析栈
194
- this._resolving.add(identifier);
195
- try {
196
- // 创建实例
197
- let instance;
198
- if (registration.factory) {
199
- // 使用工厂函数
200
- instance = registration.factory(this);
201
- }
202
- else if (registration.type) {
203
- // 直接构造
204
- instance = new (registration.type)();
205
- }
206
- else {
207
- throw new Error(`Service ${name} has no factory or type to construct`);
208
- }
209
- // 如果是单例,缓存实例
210
- if (registration.lifetime === ServiceLifetime.Singleton) {
211
- registration.instance = instance;
212
- // 如果使用了@Updatable装饰器,添加到可更新列表
213
- if (registration.type && checkUpdatable(registration.type)) {
214
- const metadata = getUpdatableMetadata(registration.type);
215
- const priority = metadata?.priority ?? 0;
216
- this._updatableServices.push({ instance, priority });
217
- // 按优先级排序(数值越小越先执行)
218
- this._updatableServices.sort((a, b) => a.priority - b.priority);
219
- logger.debug(`Service ${name} is updatable (priority: ${priority}), added to update list`);
220
- }
221
- }
222
- return instance;
223
- }
224
- finally {
225
- // 从解析栈移除
226
- this._resolving.delete(identifier);
227
- }
228
- }
229
- /**
230
- * 尝试解析服务
231
- *
232
- * 如果服务未注册,返回null而不是抛出异常。
233
- *
234
- * @param identifier - 服务标识符(构造函数或 Symbol)
235
- * @returns 服务实例或null
236
- *
237
- * @example
238
- * ```typescript
239
- * const timer = container.tryResolve(TimerManager);
240
- * if (timer) {
241
- * timer.schedule(...);
242
- * }
243
- * ```
244
- */
245
- tryResolve(identifier) {
246
- try {
247
- return this.resolve(identifier);
248
- }
249
- catch {
250
- return null;
251
- }
252
- }
253
- /**
254
- * 检查服务是否已注册
255
- *
256
- * @param identifier - 服务标识符(构造函数或 Symbol)
257
- * @returns 是否已注册
258
- */
259
- isRegistered(identifier) {
260
- return this._services.has(identifier);
261
- }
262
- /**
263
- * 注销服务
264
- *
265
- * @param identifier - 服务标识符(构造函数或 Symbol)
266
- * @returns 是否成功注销
267
- */
268
- unregister(identifier) {
269
- const registration = this._services.get(identifier);
270
- if (!registration) {
271
- return false;
272
- }
273
- // 如果有单例实例,调用 dispose
274
- if (registration.instance) {
275
- // 从可更新列表中移除
276
- const index = this._updatableServices.findIndex((item) => item.instance === registration.instance);
277
- if (index !== -1) {
278
- this._updatableServices.splice(index, 1);
279
- }
280
- registration.instance.dispose();
281
- }
282
- this._services.delete(identifier);
283
- const name = typeof identifier === 'symbol' ? identifier.description : identifier.name;
284
- logger.debug(`Unregistered service: ${name}`);
285
- return true;
286
- }
287
- /**
288
- * 清空所有服务
289
- */
290
- clear() {
291
- // 清理所有单例实例
292
- for (const [, registration] of this._services) {
293
- if (registration.instance) {
294
- registration.instance.dispose();
295
- }
296
- }
297
- this._services.clear();
298
- this._updatableServices = [];
299
- logger.debug('Cleared all services');
300
- }
301
- /**
302
- * 获取所有已注册的服务标识符
303
- *
304
- * @returns 服务标识符数组
305
- */
306
- getRegisteredServices() {
307
- return Array.from(this._services.keys());
308
- }
309
- /**
310
- * 更新所有使用@Updatable装饰器标记的服务
311
- *
312
- * 此方法会按优先级顺序遍历所有可更新的服务并调用它们的update方法。
313
- * 所有服务在注册时已经由@Updatable装饰器验证过必须实现IUpdatable接口。
314
- * 通常在Core的主更新循环中调用。
315
- *
316
- * @param deltaTime - 可选的帧时间间隔(秒)
317
- *
318
- * @example
319
- * ```typescript
320
- * // 在Core的update方法中
321
- * this._serviceContainer.updateAll(deltaTime);
322
- * ```
323
- */
324
- updateAll(deltaTime) {
325
- for (const { instance } of this._updatableServices) {
326
- instance.update(deltaTime);
327
- }
328
- }
329
- /**
330
- * 获取所有可更新的服务数量
331
- *
332
- * @returns 可更新服务的数量
333
- */
334
- getUpdatableCount() {
335
- return this._updatableServices.length;
336
- }
337
- /**
338
- * 获取所有已实例化的服务实例
339
- *
340
- * @returns 所有服务实例的数组
341
- */
342
- getAll() {
343
- const instances = [];
344
- for (const descriptor of this._services.values()) {
345
- if (descriptor.instance) {
346
- instances.push(descriptor.instance);
347
- }
348
- }
349
- return instances;
350
- }
351
- }
352
- //# sourceMappingURL=ServiceContainer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceContainer.js","sourceRoot":"","sources":["../../src/Core/ServiceContainer.ts"],"names":[],"mappings":"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"}