@esengine/ecs-framework 2.3.0 → 2.3.2

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 (490) hide show
  1. package/index.cjs +2 -0
  2. package/index.cjs.map +1 -0
  3. package/index.d.ts +13466 -0
  4. package/index.es5.js +4 -0
  5. package/index.es5.js.map +1 -0
  6. package/index.mjs +2 -0
  7. package/index.mjs.map +1 -0
  8. package/index.umd.js +4 -0
  9. package/index.umd.js.map +1 -0
  10. package/package.json +47 -84
  11. package/bin/Core/DI/Decorators.d.ts +0 -206
  12. package/bin/Core/DI/Decorators.d.ts.map +0 -1
  13. package/bin/Core/DI/Decorators.js +0 -253
  14. package/bin/Core/DI/Decorators.js.map +0 -1
  15. package/bin/Core/DI/index.d.ts +0 -8
  16. package/bin/Core/DI/index.d.ts.map +0 -1
  17. package/bin/Core/DI/index.js +0 -7
  18. package/bin/Core/DI/index.js.map +0 -1
  19. package/bin/Core/Plugin.d.ts +0 -112
  20. package/bin/Core/Plugin.d.ts.map +0 -1
  21. package/bin/Core/Plugin.js +0 -19
  22. package/bin/Core/Plugin.js.map +0 -1
  23. package/bin/Core/PluginManager.d.ts +0 -118
  24. package/bin/Core/PluginManager.d.ts.map +0 -1
  25. package/bin/Core/PluginManager.js +0 -229
  26. package/bin/Core/PluginManager.js.map +0 -1
  27. package/bin/Core/ServiceContainer.d.ts +0 -221
  28. package/bin/Core/ServiceContainer.d.ts.map +0 -1
  29. package/bin/Core/ServiceContainer.js +0 -352
  30. package/bin/Core/ServiceContainer.js.map +0 -1
  31. package/bin/Core.d.ts +0 -379
  32. package/bin/Core.d.ts.map +0 -1
  33. package/bin/Core.js +0 -553
  34. package/bin/Core.js.map +0 -1
  35. package/bin/ECS/Component.d.ts +0 -104
  36. package/bin/ECS/Component.d.ts.map +0 -1
  37. package/bin/ECS/Component.js +0 -105
  38. package/bin/ECS/Component.js.map +0 -1
  39. package/bin/ECS/Components/HierarchyComponent.d.ts +0 -46
  40. package/bin/ECS/Components/HierarchyComponent.d.ts.map +0 -1
  41. package/bin/ECS/Components/HierarchyComponent.js +0 -65
  42. package/bin/ECS/Components/HierarchyComponent.js.map +0 -1
  43. package/bin/ECS/Components/index.d.ts +0 -2
  44. package/bin/ECS/Components/index.d.ts.map +0 -1
  45. package/bin/ECS/Components/index.js +0 -2
  46. package/bin/ECS/Components/index.js.map +0 -1
  47. package/bin/ECS/Core/ArchetypeSystem.d.ts +0 -103
  48. package/bin/ECS/Core/ArchetypeSystem.d.ts.map +0 -1
  49. package/bin/ECS/Core/ArchetypeSystem.js +0 -244
  50. package/bin/ECS/Core/ArchetypeSystem.js.map +0 -1
  51. package/bin/ECS/Core/CommandBuffer.d.ts +0 -154
  52. package/bin/ECS/Core/CommandBuffer.d.ts.map +0 -1
  53. package/bin/ECS/Core/CommandBuffer.js +0 -244
  54. package/bin/ECS/Core/CommandBuffer.js.map +0 -1
  55. package/bin/ECS/Core/ComponentPool.d.ts +0 -139
  56. package/bin/ECS/Core/ComponentPool.d.ts.map +0 -1
  57. package/bin/ECS/Core/ComponentPool.js +0 -276
  58. package/bin/ECS/Core/ComponentPool.js.map +0 -1
  59. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts +0 -127
  60. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts.map +0 -1
  61. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js +0 -235
  62. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js.map +0 -1
  63. package/bin/ECS/Core/ComponentStorage.d.ts +0 -185
  64. package/bin/ECS/Core/ComponentStorage.d.ts.map +0 -1
  65. package/bin/ECS/Core/ComponentStorage.js +0 -321
  66. package/bin/ECS/Core/ComponentStorage.js.map +0 -1
  67. package/bin/ECS/Core/EntityLifecyclePolicy.d.ts +0 -26
  68. package/bin/ECS/Core/EntityLifecyclePolicy.d.ts.map +0 -1
  69. package/bin/ECS/Core/EntityLifecyclePolicy.js +0 -2
  70. package/bin/ECS/Core/EntityLifecyclePolicy.js.map +0 -1
  71. package/bin/ECS/Core/EventBus.d.ts +0 -210
  72. package/bin/ECS/Core/EventBus.d.ts.map +0 -1
  73. package/bin/ECS/Core/EventBus.js +0 -370
  74. package/bin/ECS/Core/EventBus.js.map +0 -1
  75. package/bin/ECS/Core/EventSystem.d.ts +0 -225
  76. package/bin/ECS/Core/EventSystem.d.ts.map +0 -1
  77. package/bin/ECS/Core/EventSystem.js +0 -448
  78. package/bin/ECS/Core/EventSystem.js.map +0 -1
  79. package/bin/ECS/Core/Events/index.d.ts +0 -3
  80. package/bin/ECS/Core/Events/index.d.ts.map +0 -1
  81. package/bin/ECS/Core/Events/index.js +0 -3
  82. package/bin/ECS/Core/Events/index.js.map +0 -1
  83. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts +0 -35
  84. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts.map +0 -1
  85. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js +0 -48
  86. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js.map +0 -1
  87. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts +0 -135
  88. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts.map +0 -1
  89. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js +0 -166
  90. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js.map +0 -1
  91. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts +0 -58
  92. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts.map +0 -1
  93. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js +0 -85
  94. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js.map +0 -1
  95. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts +0 -110
  96. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts.map +0 -1
  97. package/bin/ECS/Core/FluentAPI/EntityBuilder.js +0 -181
  98. package/bin/ECS/Core/FluentAPI/EntityBuilder.js.map +0 -1
  99. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts +0 -53
  100. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts.map +0 -1
  101. package/bin/ECS/Core/FluentAPI/SceneBuilder.js +0 -79
  102. package/bin/ECS/Core/FluentAPI/SceneBuilder.js.map +0 -1
  103. package/bin/ECS/Core/FluentAPI/index.d.ts +0 -6
  104. package/bin/ECS/Core/FluentAPI/index.d.ts.map +0 -1
  105. package/bin/ECS/Core/FluentAPI/index.js +0 -6
  106. package/bin/ECS/Core/FluentAPI/index.js.map +0 -1
  107. package/bin/ECS/Core/FluentAPI.d.ts +0 -2
  108. package/bin/ECS/Core/FluentAPI.d.ts.map +0 -1
  109. package/bin/ECS/Core/FluentAPI.js +0 -3
  110. package/bin/ECS/Core/FluentAPI.js.map +0 -1
  111. package/bin/ECS/Core/Query/TypedQuery.d.ts +0 -214
  112. package/bin/ECS/Core/Query/TypedQuery.d.ts.map +0 -1
  113. package/bin/ECS/Core/Query/TypedQuery.js +0 -294
  114. package/bin/ECS/Core/Query/TypedQuery.js.map +0 -1
  115. package/bin/ECS/Core/Query/index.d.ts +0 -3
  116. package/bin/ECS/Core/Query/index.d.ts.map +0 -1
  117. package/bin/ECS/Core/Query/index.js +0 -3
  118. package/bin/ECS/Core/Query/index.js.map +0 -1
  119. package/bin/ECS/Core/QuerySystem.d.ts +0 -458
  120. package/bin/ECS/Core/QuerySystem.d.ts.map +0 -1
  121. package/bin/ECS/Core/QuerySystem.js +0 -1069
  122. package/bin/ECS/Core/QuerySystem.js.map +0 -1
  123. package/bin/ECS/Core/QueryTypes.d.ts +0 -34
  124. package/bin/ECS/Core/QueryTypes.d.ts.map +0 -1
  125. package/bin/ECS/Core/QueryTypes.js +0 -13
  126. package/bin/ECS/Core/QueryTypes.js.map +0 -1
  127. package/bin/ECS/Core/ReactiveQuery.d.ts +0 -211
  128. package/bin/ECS/Core/ReactiveQuery.d.ts.map +0 -1
  129. package/bin/ECS/Core/ReactiveQuery.js +0 -401
  130. package/bin/ECS/Core/ReactiveQuery.js.map +0 -1
  131. package/bin/ECS/Core/ReferenceTracker.d.ts +0 -111
  132. package/bin/ECS/Core/ReferenceTracker.d.ts.map +0 -1
  133. package/bin/ECS/Core/ReferenceTracker.js +0 -254
  134. package/bin/ECS/Core/ReferenceTracker.js.map +0 -1
  135. package/bin/ECS/Core/SoASerializer.d.ts +0 -28
  136. package/bin/ECS/Core/SoASerializer.d.ts.map +0 -1
  137. package/bin/ECS/Core/SoASerializer.js +0 -85
  138. package/bin/ECS/Core/SoASerializer.js.map +0 -1
  139. package/bin/ECS/Core/SoAStorage.d.ts +0 -129
  140. package/bin/ECS/Core/SoAStorage.d.ts.map +0 -1
  141. package/bin/ECS/Core/SoAStorage.js +0 -685
  142. package/bin/ECS/Core/SoAStorage.js.map +0 -1
  143. package/bin/ECS/Core/SoATypeRegistry.d.ts +0 -50
  144. package/bin/ECS/Core/SoATypeRegistry.d.ts.map +0 -1
  145. package/bin/ECS/Core/SoATypeRegistry.js +0 -135
  146. package/bin/ECS/Core/SoATypeRegistry.js.map +0 -1
  147. package/bin/ECS/Core/Storage/index.d.ts +0 -4
  148. package/bin/ECS/Core/Storage/index.d.ts.map +0 -1
  149. package/bin/ECS/Core/Storage/index.js +0 -4
  150. package/bin/ECS/Core/Storage/index.js.map +0 -1
  151. package/bin/ECS/Core/StorageDecorators.d.ts +0 -20
  152. package/bin/ECS/Core/StorageDecorators.d.ts.map +0 -1
  153. package/bin/ECS/Core/StorageDecorators.js +0 -27
  154. package/bin/ECS/Core/StorageDecorators.js.map +0 -1
  155. package/bin/ECS/CoreEvents.d.ts +0 -131
  156. package/bin/ECS/CoreEvents.d.ts.map +0 -1
  157. package/bin/ECS/CoreEvents.js +0 -163
  158. package/bin/ECS/CoreEvents.js.map +0 -1
  159. package/bin/ECS/Decorators/EntityRefDecorator.d.ts +0 -46
  160. package/bin/ECS/Decorators/EntityRefDecorator.d.ts.map +0 -1
  161. package/bin/ECS/Decorators/EntityRefDecorator.js +0 -118
  162. package/bin/ECS/Decorators/EntityRefDecorator.js.map +0 -1
  163. package/bin/ECS/Decorators/PropertyDecorator.d.ts +0 -168
  164. package/bin/ECS/Decorators/PropertyDecorator.d.ts.map +0 -1
  165. package/bin/ECS/Decorators/PropertyDecorator.js +0 -40
  166. package/bin/ECS/Decorators/PropertyDecorator.js.map +0 -1
  167. package/bin/ECS/Decorators/TypeDecorators.d.ts +0 -124
  168. package/bin/ECS/Decorators/TypeDecorators.d.ts.map +0 -1
  169. package/bin/ECS/Decorators/TypeDecorators.js +0 -151
  170. package/bin/ECS/Decorators/TypeDecorators.js.map +0 -1
  171. package/bin/ECS/Decorators/index.d.ts +0 -7
  172. package/bin/ECS/Decorators/index.d.ts.map +0 -1
  173. package/bin/ECS/Decorators/index.js +0 -4
  174. package/bin/ECS/Decorators/index.js.map +0 -1
  175. package/bin/ECS/Entity.d.ts +0 -415
  176. package/bin/ECS/Entity.d.ts.map +0 -1
  177. package/bin/ECS/Entity.js +0 -683
  178. package/bin/ECS/Entity.js.map +0 -1
  179. package/bin/ECS/EntityTags.d.ts +0 -71
  180. package/bin/ECS/EntityTags.d.ts.map +0 -1
  181. package/bin/ECS/EntityTags.js +0 -82
  182. package/bin/ECS/EntityTags.js.map +0 -1
  183. package/bin/ECS/IScene.d.ts +0 -308
  184. package/bin/ECS/IScene.d.ts.map +0 -1
  185. package/bin/ECS/IScene.js +0 -2
  186. package/bin/ECS/IScene.js.map +0 -1
  187. package/bin/ECS/Scene.d.ts +0 -799
  188. package/bin/ECS/Scene.d.ts.map +0 -1
  189. package/bin/ECS/Scene.js +0 -1203
  190. package/bin/ECS/Scene.js.map +0 -1
  191. package/bin/ECS/SceneManager.d.ts +0 -197
  192. package/bin/ECS/SceneManager.d.ts.map +0 -1
  193. package/bin/ECS/SceneManager.js +0 -264
  194. package/bin/ECS/SceneManager.js.map +0 -1
  195. package/bin/ECS/Serialization/ComponentSerializer.d.ts +0 -106
  196. package/bin/ECS/Serialization/ComponentSerializer.d.ts.map +0 -1
  197. package/bin/ECS/Serialization/ComponentSerializer.js +0 -251
  198. package/bin/ECS/Serialization/ComponentSerializer.js.map +0 -1
  199. package/bin/ECS/Serialization/EntitySerializer.d.ts +0 -111
  200. package/bin/ECS/Serialization/EntitySerializer.d.ts.map +0 -1
  201. package/bin/ECS/Serialization/EntitySerializer.js +0 -155
  202. package/bin/ECS/Serialization/EntitySerializer.js.map +0 -1
  203. package/bin/ECS/Serialization/IncrementalSerializer.d.ts +0 -259
  204. package/bin/ECS/Serialization/IncrementalSerializer.d.ts.map +0 -1
  205. package/bin/ECS/Serialization/IncrementalSerializer.js +0 -500
  206. package/bin/ECS/Serialization/IncrementalSerializer.js.map +0 -1
  207. package/bin/ECS/Serialization/SceneSerializer.d.ts +0 -213
  208. package/bin/ECS/Serialization/SceneSerializer.d.ts.map +0 -1
  209. package/bin/ECS/Serialization/SceneSerializer.js +0 -387
  210. package/bin/ECS/Serialization/SceneSerializer.js.map +0 -1
  211. package/bin/ECS/Serialization/SerializationDecorators.d.ts +0 -136
  212. package/bin/ECS/Serialization/SerializationDecorators.d.ts.map +0 -1
  213. package/bin/ECS/Serialization/SerializationDecorators.js +0 -216
  214. package/bin/ECS/Serialization/SerializationDecorators.js.map +0 -1
  215. package/bin/ECS/Serialization/VersionMigration.d.ts +0 -156
  216. package/bin/ECS/Serialization/VersionMigration.d.ts.map +0 -1
  217. package/bin/ECS/Serialization/VersionMigration.js +0 -279
  218. package/bin/ECS/Serialization/VersionMigration.js.map +0 -1
  219. package/bin/ECS/Serialization/index.d.ts +0 -18
  220. package/bin/ECS/Serialization/index.d.ts.map +0 -1
  221. package/bin/ECS/Serialization/index.js +0 -18
  222. package/bin/ECS/Serialization/index.js.map +0 -1
  223. package/bin/ECS/Systems/EntityCache.d.ts +0 -114
  224. package/bin/ECS/Systems/EntityCache.d.ts.map +0 -1
  225. package/bin/ECS/Systems/EntityCache.js +0 -145
  226. package/bin/ECS/Systems/EntityCache.js.map +0 -1
  227. package/bin/ECS/Systems/EntitySystem.d.ts +0 -591
  228. package/bin/ECS/Systems/EntitySystem.d.ts.map +0 -1
  229. package/bin/ECS/Systems/EntitySystem.js +0 -1102
  230. package/bin/ECS/Systems/EntitySystem.js.map +0 -1
  231. package/bin/ECS/Systems/HierarchySystem.d.ts +0 -155
  232. package/bin/ECS/Systems/HierarchySystem.d.ts.map +0 -1
  233. package/bin/ECS/Systems/HierarchySystem.js +0 -498
  234. package/bin/ECS/Systems/HierarchySystem.js.map +0 -1
  235. package/bin/ECS/Systems/IntervalSystem.d.ts +0 -33
  236. package/bin/ECS/Systems/IntervalSystem.d.ts.map +0 -1
  237. package/bin/ECS/Systems/IntervalSystem.js +0 -50
  238. package/bin/ECS/Systems/IntervalSystem.js.map +0 -1
  239. package/bin/ECS/Systems/PassiveSystem.d.ts +0 -17
  240. package/bin/ECS/Systems/PassiveSystem.d.ts.map +0 -1
  241. package/bin/ECS/Systems/PassiveSystem.js +0 -19
  242. package/bin/ECS/Systems/PassiveSystem.js.map +0 -1
  243. package/bin/ECS/Systems/ProcessingSystem.d.ts +0 -21
  244. package/bin/ECS/Systems/ProcessingSystem.d.ts.map +0 -1
  245. package/bin/ECS/Systems/ProcessingSystem.js +0 -20
  246. package/bin/ECS/Systems/ProcessingSystem.js.map +0 -1
  247. package/bin/ECS/Systems/WorkerEntitySystem.d.ts +0 -313
  248. package/bin/ECS/Systems/WorkerEntitySystem.d.ts.map +0 -1
  249. package/bin/ECS/Systems/WorkerEntitySystem.js +0 -792
  250. package/bin/ECS/Systems/WorkerEntitySystem.js.map +0 -1
  251. package/bin/ECS/Systems/index.d.ts +0 -8
  252. package/bin/ECS/Systems/index.d.ts.map +0 -1
  253. package/bin/ECS/Systems/index.js +0 -8
  254. package/bin/ECS/Systems/index.js.map +0 -1
  255. package/bin/ECS/TypedEntity.d.ts +0 -192
  256. package/bin/ECS/TypedEntity.d.ts.map +0 -1
  257. package/bin/ECS/TypedEntity.js +0 -254
  258. package/bin/ECS/TypedEntity.js.map +0 -1
  259. package/bin/ECS/Utils/BigIntCompatibility.d.ts +0 -151
  260. package/bin/ECS/Utils/BigIntCompatibility.d.ts.map +0 -1
  261. package/bin/ECS/Utils/BigIntCompatibility.js +0 -476
  262. package/bin/ECS/Utils/BigIntCompatibility.js.map +0 -1
  263. package/bin/ECS/Utils/BitMaskHashMap.d.ts +0 -28
  264. package/bin/ECS/Utils/BitMaskHashMap.d.ts.map +0 -1
  265. package/bin/ECS/Utils/BitMaskHashMap.js +0 -127
  266. package/bin/ECS/Utils/BitMaskHashMap.js.map +0 -1
  267. package/bin/ECS/Utils/Bits.d.ts +0 -154
  268. package/bin/ECS/Utils/Bits.d.ts.map +0 -1
  269. package/bin/ECS/Utils/Bits.js +0 -331
  270. package/bin/ECS/Utils/Bits.js.map +0 -1
  271. package/bin/ECS/Utils/ComponentSparseSet.d.ts +0 -143
  272. package/bin/ECS/Utils/ComponentSparseSet.d.ts.map +0 -1
  273. package/bin/ECS/Utils/ComponentSparseSet.js +0 -347
  274. package/bin/ECS/Utils/ComponentSparseSet.js.map +0 -1
  275. package/bin/ECS/Utils/EntityList.d.ts +0 -115
  276. package/bin/ECS/Utils/EntityList.d.ts.map +0 -1
  277. package/bin/ECS/Utils/EntityList.js +0 -258
  278. package/bin/ECS/Utils/EntityList.js.map +0 -1
  279. package/bin/ECS/Utils/EntityProcessorList.d.ts +0 -56
  280. package/bin/ECS/Utils/EntityProcessorList.d.ts.map +0 -1
  281. package/bin/ECS/Utils/EntityProcessorList.js +0 -113
  282. package/bin/ECS/Utils/EntityProcessorList.js.map +0 -1
  283. package/bin/ECS/Utils/IdentifierPool.d.ts +0 -203
  284. package/bin/ECS/Utils/IdentifierPool.d.ts.map +0 -1
  285. package/bin/ECS/Utils/IdentifierPool.js +0 -325
  286. package/bin/ECS/Utils/IdentifierPool.js.map +0 -1
  287. package/bin/ECS/Utils/Matcher.d.ts +0 -171
  288. package/bin/ECS/Utils/Matcher.d.ts.map +0 -1
  289. package/bin/ECS/Utils/Matcher.js +0 -293
  290. package/bin/ECS/Utils/Matcher.js.map +0 -1
  291. package/bin/ECS/Utils/SparseSet.d.ts +0 -170
  292. package/bin/ECS/Utils/SparseSet.d.ts.map +0 -1
  293. package/bin/ECS/Utils/SparseSet.js +0 -280
  294. package/bin/ECS/Utils/SparseSet.js.map +0 -1
  295. package/bin/ECS/Utils/index.d.ts +0 -9
  296. package/bin/ECS/Utils/index.d.ts.map +0 -1
  297. package/bin/ECS/Utils/index.js +0 -10
  298. package/bin/ECS/Utils/index.js.map +0 -1
  299. package/bin/ECS/World.d.ts +0 -238
  300. package/bin/ECS/World.d.ts.map +0 -1
  301. package/bin/ECS/World.js +0 -416
  302. package/bin/ECS/World.js.map +0 -1
  303. package/bin/ECS/WorldManager.d.ts +0 -224
  304. package/bin/ECS/WorldManager.d.ts.map +0 -1
  305. package/bin/ECS/WorldManager.js +0 -365
  306. package/bin/ECS/WorldManager.js.map +0 -1
  307. package/bin/ECS/index.d.ts +0 -26
  308. package/bin/ECS/index.d.ts.map +0 -1
  309. package/bin/ECS/index.js +0 -21
  310. package/bin/ECS/index.js.map +0 -1
  311. package/bin/Platform/IPlatformAdapter.d.ts +0 -169
  312. package/bin/Platform/IPlatformAdapter.d.ts.map +0 -1
  313. package/bin/Platform/IPlatformAdapter.js +0 -2
  314. package/bin/Platform/IPlatformAdapter.js.map +0 -1
  315. package/bin/Platform/PlatformDetector.d.ts +0 -56
  316. package/bin/Platform/PlatformDetector.d.ts.map +0 -1
  317. package/bin/Platform/PlatformDetector.js +0 -247
  318. package/bin/Platform/PlatformDetector.js.map +0 -1
  319. package/bin/Platform/PlatformManager.d.ts +0 -50
  320. package/bin/Platform/PlatformManager.d.ts.map +0 -1
  321. package/bin/Platform/PlatformManager.js +0 -114
  322. package/bin/Platform/PlatformManager.js.map +0 -1
  323. package/bin/Platform/index.d.ts +0 -19
  324. package/bin/Platform/index.d.ts.map +0 -1
  325. package/bin/Platform/index.js +0 -29
  326. package/bin/Platform/index.js.map +0 -1
  327. package/bin/Plugins/DebugPlugin.d.ts +0 -156
  328. package/bin/Plugins/DebugPlugin.d.ts.map +0 -1
  329. package/bin/Plugins/DebugPlugin.js +0 -248
  330. package/bin/Plugins/DebugPlugin.js.map +0 -1
  331. package/bin/Plugins/index.d.ts +0 -2
  332. package/bin/Plugins/index.d.ts.map +0 -1
  333. package/bin/Plugins/index.js +0 -2
  334. package/bin/Plugins/index.js.map +0 -1
  335. package/bin/Types/IUpdatable.d.ts +0 -18
  336. package/bin/Types/IUpdatable.d.ts.map +0 -1
  337. package/bin/Types/IUpdatable.js +0 -7
  338. package/bin/Types/IUpdatable.js.map +0 -1
  339. package/bin/Types/TypeHelpers.d.ts +0 -238
  340. package/bin/Types/TypeHelpers.d.ts.map +0 -1
  341. package/bin/Types/TypeHelpers.js +0 -19
  342. package/bin/Types/TypeHelpers.js.map +0 -1
  343. package/bin/Types/index.d.ts +0 -466
  344. package/bin/Types/index.d.ts.map +0 -1
  345. package/bin/Types/index.js +0 -7
  346. package/bin/Types/index.js.map +0 -1
  347. package/bin/Utils/BinarySerializer.d.ts +0 -23
  348. package/bin/Utils/BinarySerializer.d.ts.map +0 -1
  349. package/bin/Utils/BinarySerializer.js +0 -100
  350. package/bin/Utils/BinarySerializer.js.map +0 -1
  351. package/bin/Utils/Debug/AdvancedProfilerCollector.d.ts +0 -153
  352. package/bin/Utils/Debug/AdvancedProfilerCollector.d.ts.map +0 -1
  353. package/bin/Utils/Debug/AdvancedProfilerCollector.js +0 -406
  354. package/bin/Utils/Debug/AdvancedProfilerCollector.js.map +0 -1
  355. package/bin/Utils/Debug/ComponentDataCollector.d.ts +0 -32
  356. package/bin/Utils/Debug/ComponentDataCollector.d.ts.map +0 -1
  357. package/bin/Utils/Debug/ComponentDataCollector.js +0 -250
  358. package/bin/Utils/Debug/ComponentDataCollector.js.map +0 -1
  359. package/bin/Utils/Debug/DebugConfigService.d.ts +0 -16
  360. package/bin/Utils/Debug/DebugConfigService.d.ts.map +0 -1
  361. package/bin/Utils/Debug/DebugConfigService.js +0 -42
  362. package/bin/Utils/Debug/DebugConfigService.js.map +0 -1
  363. package/bin/Utils/Debug/DebugManager.d.ts +0 -131
  364. package/bin/Utils/Debug/DebugManager.d.ts.map +0 -1
  365. package/bin/Utils/Debug/DebugManager.js +0 -848
  366. package/bin/Utils/Debug/DebugManager.js.map +0 -1
  367. package/bin/Utils/Debug/EntityDataCollector.d.ts +0 -115
  368. package/bin/Utils/Debug/EntityDataCollector.d.ts.map +0 -1
  369. package/bin/Utils/Debug/EntityDataCollector.js +0 -870
  370. package/bin/Utils/Debug/EntityDataCollector.js.map +0 -1
  371. package/bin/Utils/Debug/PerformanceDataCollector.d.ts +0 -31
  372. package/bin/Utils/Debug/PerformanceDataCollector.d.ts.map +0 -1
  373. package/bin/Utils/Debug/PerformanceDataCollector.js +0 -203
  374. package/bin/Utils/Debug/PerformanceDataCollector.js.map +0 -1
  375. package/bin/Utils/Debug/SceneDataCollector.d.ts +0 -18
  376. package/bin/Utils/Debug/SceneDataCollector.d.ts.map +0 -1
  377. package/bin/Utils/Debug/SceneDataCollector.js +0 -43
  378. package/bin/Utils/Debug/SceneDataCollector.js.map +0 -1
  379. package/bin/Utils/Debug/SystemDataCollector.d.ts +0 -14
  380. package/bin/Utils/Debug/SystemDataCollector.d.ts.map +0 -1
  381. package/bin/Utils/Debug/SystemDataCollector.js +0 -60
  382. package/bin/Utils/Debug/SystemDataCollector.js.map +0 -1
  383. package/bin/Utils/Debug/WebSocketManager.d.ts +0 -54
  384. package/bin/Utils/Debug/WebSocketManager.d.ts.map +0 -1
  385. package/bin/Utils/Debug/WebSocketManager.js +0 -141
  386. package/bin/Utils/Debug/WebSocketManager.js.map +0 -1
  387. package/bin/Utils/Debug/index.d.ts +0 -11
  388. package/bin/Utils/Debug/index.d.ts.map +0 -1
  389. package/bin/Utils/Debug/index.js +0 -10
  390. package/bin/Utils/Debug/index.js.map +0 -1
  391. package/bin/Utils/Emitter.d.ts +0 -61
  392. package/bin/Utils/Emitter.d.ts.map +0 -1
  393. package/bin/Utils/Emitter.js +0 -101
  394. package/bin/Utils/Emitter.js.map +0 -1
  395. package/bin/Utils/Extensions/NumberExtension.d.ts +0 -13
  396. package/bin/Utils/Extensions/NumberExtension.d.ts.map +0 -1
  397. package/bin/Utils/Extensions/NumberExtension.js +0 -17
  398. package/bin/Utils/Extensions/NumberExtension.js.map +0 -1
  399. package/bin/Utils/Extensions/TypeUtils.d.ts +0 -13
  400. package/bin/Utils/Extensions/TypeUtils.d.ts.map +0 -1
  401. package/bin/Utils/Extensions/TypeUtils.js +0 -15
  402. package/bin/Utils/Extensions/TypeUtils.js.map +0 -1
  403. package/bin/Utils/Extensions/index.d.ts +0 -3
  404. package/bin/Utils/Extensions/index.d.ts.map +0 -1
  405. package/bin/Utils/Extensions/index.js +0 -4
  406. package/bin/Utils/Extensions/index.js.map +0 -1
  407. package/bin/Utils/GlobalManager.d.ts +0 -29
  408. package/bin/Utils/GlobalManager.d.ts.map +0 -1
  409. package/bin/Utils/GlobalManager.js +0 -50
  410. package/bin/Utils/GlobalManager.js.map +0 -1
  411. package/bin/Utils/Logger/ConsoleLogger.d.ts +0 -74
  412. package/bin/Utils/Logger/ConsoleLogger.d.ts.map +0 -1
  413. package/bin/Utils/Logger/ConsoleLogger.js +0 -187
  414. package/bin/Utils/Logger/ConsoleLogger.js.map +0 -1
  415. package/bin/Utils/Logger/Constants.d.ts +0 -36
  416. package/bin/Utils/Logger/Constants.d.ts.map +0 -1
  417. package/bin/Utils/Logger/Constants.js +0 -40
  418. package/bin/Utils/Logger/Constants.js.map +0 -1
  419. package/bin/Utils/Logger/LoggerManager.d.ts +0 -91
  420. package/bin/Utils/Logger/LoggerManager.d.ts.map +0 -1
  421. package/bin/Utils/Logger/LoggerManager.js +0 -167
  422. package/bin/Utils/Logger/LoggerManager.js.map +0 -1
  423. package/bin/Utils/Logger/Types.d.ts +0 -40
  424. package/bin/Utils/Logger/Types.d.ts.map +0 -1
  425. package/bin/Utils/Logger/Types.js +0 -2
  426. package/bin/Utils/Logger/Types.js.map +0 -1
  427. package/bin/Utils/Logger/index.d.ts +0 -5
  428. package/bin/Utils/Logger/index.d.ts.map +0 -1
  429. package/bin/Utils/Logger/index.js +0 -5
  430. package/bin/Utils/Logger/index.js.map +0 -1
  431. package/bin/Utils/PerformanceMonitor.d.ts +0 -196
  432. package/bin/Utils/PerformanceMonitor.d.ts.map +0 -1
  433. package/bin/Utils/PerformanceMonitor.js +0 -244
  434. package/bin/Utils/PerformanceMonitor.js.map +0 -1
  435. package/bin/Utils/Pool/IPoolable.d.ts +0 -29
  436. package/bin/Utils/Pool/IPoolable.d.ts.map +0 -1
  437. package/bin/Utils/Pool/IPoolable.js +0 -2
  438. package/bin/Utils/Pool/IPoolable.js.map +0 -1
  439. package/bin/Utils/Pool/Pool.d.ts +0 -109
  440. package/bin/Utils/Pool/Pool.d.ts.map +0 -1
  441. package/bin/Utils/Pool/Pool.js +0 -238
  442. package/bin/Utils/Pool/Pool.js.map +0 -1
  443. package/bin/Utils/Pool/PoolManager.d.ts +0 -96
  444. package/bin/Utils/Pool/PoolManager.d.ts.map +0 -1
  445. package/bin/Utils/Pool/PoolManager.js +0 -199
  446. package/bin/Utils/Pool/PoolManager.js.map +0 -1
  447. package/bin/Utils/Pool/index.d.ts +0 -4
  448. package/bin/Utils/Pool/index.d.ts.map +0 -1
  449. package/bin/Utils/Pool/index.js +0 -4
  450. package/bin/Utils/Pool/index.js.map +0 -1
  451. package/bin/Utils/Profiler/AutoProfiler.d.ts +0 -160
  452. package/bin/Utils/Profiler/AutoProfiler.d.ts.map +0 -1
  453. package/bin/Utils/Profiler/AutoProfiler.js +0 -503
  454. package/bin/Utils/Profiler/AutoProfiler.js.map +0 -1
  455. package/bin/Utils/Profiler/ProfilerSDK.d.ts +0 -175
  456. package/bin/Utils/Profiler/ProfilerSDK.d.ts.map +0 -1
  457. package/bin/Utils/Profiler/ProfilerSDK.js +0 -727
  458. package/bin/Utils/Profiler/ProfilerSDK.js.map +0 -1
  459. package/bin/Utils/Profiler/ProfilerTypes.d.ts +0 -218
  460. package/bin/Utils/Profiler/ProfilerTypes.d.ts.map +0 -1
  461. package/bin/Utils/Profiler/ProfilerTypes.js +0 -47
  462. package/bin/Utils/Profiler/ProfilerTypes.js.map +0 -1
  463. package/bin/Utils/Profiler/index.d.ts +0 -8
  464. package/bin/Utils/Profiler/index.d.ts.map +0 -1
  465. package/bin/Utils/Profiler/index.js +0 -7
  466. package/bin/Utils/Profiler/index.js.map +0 -1
  467. package/bin/Utils/Time.d.ts +0 -47
  468. package/bin/Utils/Time.d.ts.map +0 -1
  469. package/bin/Utils/Time.js +0 -64
  470. package/bin/Utils/Time.js.map +0 -1
  471. package/bin/Utils/Timers/ITimer.d.ts +0 -16
  472. package/bin/Utils/Timers/ITimer.d.ts.map +0 -1
  473. package/bin/Utils/Timers/ITimer.js +0 -2
  474. package/bin/Utils/Timers/ITimer.js.map +0 -1
  475. package/bin/Utils/Timers/Timer.d.ts +0 -30
  476. package/bin/Utils/Timers/Timer.d.ts.map +0 -1
  477. package/bin/Utils/Timers/Timer.js +0 -58
  478. package/bin/Utils/Timers/Timer.js.map +0 -1
  479. package/bin/Utils/Timers/TimerManager.d.ts +0 -26
  480. package/bin/Utils/Timers/TimerManager.d.ts.map +0 -1
  481. package/bin/Utils/Timers/TimerManager.js +0 -48
  482. package/bin/Utils/Timers/TimerManager.js.map +0 -1
  483. package/bin/Utils/index.d.ts +0 -11
  484. package/bin/Utils/index.d.ts.map +0 -1
  485. package/bin/Utils/index.js +0 -11
  486. package/bin/Utils/index.js.map +0 -1
  487. package/bin/index.d.ts +0 -29
  488. package/bin/index.d.ts.map +0 -1
  489. package/bin/index.js +0 -36
  490. 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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"}