@nice2dev/game-engine 1.0.5 → 1.0.10

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 (721) hide show
  1. package/dist/cjs/accessibility/Accessibility.js +55 -20
  2. package/dist/cjs/accessibility/Accessibility.js.map +1 -1
  3. package/dist/cjs/ai/AI.js +74 -40
  4. package/dist/cjs/ai/AI.js.map +1 -1
  5. package/dist/cjs/ai/BehaviorTree.js +39 -47
  6. package/dist/cjs/ai/BehaviorTree.js.map +1 -1
  7. package/dist/cjs/ai/StateMachine.js +64 -100
  8. package/dist/cjs/ai/StateMachine.js.map +1 -1
  9. package/dist/cjs/animation/Animation.js +58 -34
  10. package/dist/cjs/animation/Animation.js.map +1 -1
  11. package/dist/cjs/audio/AudioAdvanced.js +71 -37
  12. package/dist/cjs/audio/AudioAdvanced.js.map +1 -1
  13. package/dist/cjs/audio/AudioBridge.js +61 -49
  14. package/dist/cjs/audio/AudioBridge.js.map +1 -1
  15. package/dist/cjs/audio/AudioManager.js +45 -29
  16. package/dist/cjs/audio/AudioManager.js.map +1 -1
  17. package/dist/cjs/build-cloud/BuildOrchestration.js +1142 -0
  18. package/dist/cjs/build-cloud/BuildOrchestration.js.map +1 -0
  19. package/dist/cjs/build-cloud/GodotBuildCloud.js +722 -0
  20. package/dist/cjs/build-cloud/GodotBuildCloud.js.map +1 -0
  21. package/dist/cjs/build-cloud/UnityBuildCloud.js +652 -0
  22. package/dist/cjs/build-cloud/UnityBuildCloud.js.map +1 -0
  23. package/dist/cjs/build-cloud/UnrealBuildCloud.js +674 -0
  24. package/dist/cjs/build-cloud/UnrealBuildCloud.js.map +1 -0
  25. package/dist/cjs/core/EventBus.js +2 -1
  26. package/dist/cjs/core/EventBus.js.map +1 -1
  27. package/dist/cjs/core/GameConfig.js +1 -1
  28. package/dist/cjs/core/GameConfig.js.map +1 -1
  29. package/dist/cjs/core/GameLoop.js +6 -3
  30. package/dist/cjs/core/GameLoop.js.map +1 -1
  31. package/dist/cjs/core/ServiceLocator.js +1 -2
  32. package/dist/cjs/core/ServiceLocator.js.map +1 -1
  33. package/dist/cjs/devtools/DevTools.js +73 -43
  34. package/dist/cjs/devtools/DevTools.js.map +1 -1
  35. package/dist/cjs/devtools/DeveloperExperience.js +84 -42
  36. package/dist/cjs/devtools/DeveloperExperience.js.map +1 -1
  37. package/dist/cjs/devtools/GameplayAnalytics.js +71 -43
  38. package/dist/cjs/devtools/GameplayAnalytics.js.map +1 -1
  39. package/dist/cjs/dialogue/DialogueSystem.js +153 -129
  40. package/dist/cjs/dialogue/DialogueSystem.js.map +1 -1
  41. package/dist/cjs/docs/DocGenerator.js +70 -28
  42. package/dist/cjs/docs/DocGenerator.js.map +1 -1
  43. package/dist/cjs/ecs/World.js +159 -33
  44. package/dist/cjs/ecs/World.js.map +1 -1
  45. package/dist/cjs/editor/AchievementEditor.js +650 -0
  46. package/dist/cjs/editor/AchievementEditor.js.map +1 -0
  47. package/dist/cjs/editor/AdvancedEditor.js +95 -23
  48. package/dist/cjs/editor/AdvancedEditor.js.map +1 -1
  49. package/dist/cjs/editor/AnimationRetargeting.js +742 -0
  50. package/dist/cjs/editor/AnimationRetargeting.js.map +1 -0
  51. package/dist/cjs/editor/AssetBrowser.js +1191 -0
  52. package/dist/cjs/editor/AssetBrowser.js.map +1 -0
  53. package/dist/cjs/editor/AssetManager.js +22 -14
  54. package/dist/cjs/editor/AssetManager.js.map +1 -1
  55. package/dist/cjs/editor/ConsolePro.js +1092 -0
  56. package/dist/cjs/editor/ConsolePro.js.map +1 -0
  57. package/dist/cjs/editor/CraftingEditor.js +749 -0
  58. package/dist/cjs/editor/CraftingEditor.js.map +1 -0
  59. package/dist/cjs/editor/DebugTools.js +46 -23
  60. package/dist/cjs/editor/DebugTools.js.map +1 -1
  61. package/dist/cjs/editor/DialogueSystem.js +924 -0
  62. package/dist/cjs/editor/DialogueSystem.js.map +1 -0
  63. package/dist/cjs/editor/LeaderboardSystem.js +496 -0
  64. package/dist/cjs/editor/LeaderboardSystem.js.map +1 -0
  65. package/dist/cjs/editor/NiceGameEditor.js +532 -142
  66. package/dist/cjs/editor/NiceGameEditor.js.map +1 -1
  67. package/dist/cjs/editor/PrefabSystem.js +864 -0
  68. package/dist/cjs/editor/PrefabSystem.js.map +1 -0
  69. package/dist/cjs/editor/ProfilerPanel.js +716 -0
  70. package/dist/cjs/editor/ProfilerPanel.js.map +1 -0
  71. package/dist/cjs/editor/QuestEditor.js +850 -0
  72. package/dist/cjs/editor/QuestEditor.js.map +1 -0
  73. package/dist/cjs/editor/ReplaySystem.js +655 -0
  74. package/dist/cjs/editor/ReplaySystem.js.map +1 -0
  75. package/dist/cjs/editor/SceneEditor.js +33 -13
  76. package/dist/cjs/editor/SceneEditor.js.map +1 -1
  77. package/dist/cjs/editor/ScreenshotMode.js +710 -0
  78. package/dist/cjs/editor/ScreenshotMode.js.map +1 -0
  79. package/dist/cjs/editor/ShaderGraph.js +7 -6
  80. package/dist/cjs/editor/ShaderGraph.js.map +1 -1
  81. package/dist/cjs/editor/TimelineEditor.js +36 -30
  82. package/dist/cjs/editor/TimelineEditor.js.map +1 -1
  83. package/dist/cjs/editor/UndoRedoPro.js +920 -0
  84. package/dist/cjs/editor/UndoRedoPro.js.map +1 -0
  85. package/dist/cjs/editor/VRARMode.js +658 -0
  86. package/dist/cjs/editor/VRARMode.js.map +1 -0
  87. package/dist/cjs/engine/NiceGameEngine.js +12 -10
  88. package/dist/cjs/engine/NiceGameEngine.js.map +1 -1
  89. package/dist/cjs/engine/SaveSystemV2.js +73 -37
  90. package/dist/cjs/engine/SaveSystemV2.js.map +1 -1
  91. package/dist/cjs/enterprise/Enterprise.js +92 -44
  92. package/dist/cjs/enterprise/Enterprise.js.map +1 -1
  93. package/dist/cjs/export/BevyExporter.js +998 -0
  94. package/dist/cjs/export/BevyExporter.js.map +1 -0
  95. package/dist/cjs/export/CocosExporter.js +706 -0
  96. package/dist/cjs/export/CocosExporter.js.map +1 -0
  97. package/dist/cjs/export/Construct3Exporter.js +832 -0
  98. package/dist/cjs/export/Construct3Exporter.js.map +1 -0
  99. package/dist/cjs/export/DefoldExporter.js +1106 -0
  100. package/dist/cjs/export/DefoldExporter.js.map +1 -0
  101. package/dist/cjs/export/GDevelopExporter.js +748 -0
  102. package/dist/cjs/export/GDevelopExporter.js.map +1 -0
  103. package/dist/cjs/export/GameMakerExporter.js +846 -0
  104. package/dist/cjs/export/GameMakerExporter.js.map +1 -0
  105. package/dist/cjs/export/GodotExporter.js +45 -50
  106. package/dist/cjs/export/GodotExporter.js.map +1 -1
  107. package/dist/cjs/export/MinecraftBedrockExporter.js +606 -0
  108. package/dist/cjs/export/MinecraftBedrockExporter.js.map +1 -0
  109. package/dist/cjs/export/MonoGameExporter.js +1334 -0
  110. package/dist/cjs/export/MonoGameExporter.js.map +1 -0
  111. package/dist/cjs/export/Pico8Exporter.js +846 -0
  112. package/dist/cjs/export/Pico8Exporter.js.map +1 -0
  113. package/dist/cjs/export/PlatformExporter.js +4 -5
  114. package/dist/cjs/export/PlatformExporter.js.map +1 -1
  115. package/dist/cjs/export/RPGMakerExporter.js +906 -0
  116. package/dist/cjs/export/RPGMakerExporter.js.map +1 -0
  117. package/dist/cjs/export/RobloxExporter.js +943 -0
  118. package/dist/cjs/export/RobloxExporter.js.map +1 -0
  119. package/dist/cjs/export/Solar2DExporter.js +1283 -0
  120. package/dist/cjs/export/Solar2DExporter.js.map +1 -0
  121. package/dist/cjs/export/ThreeJSExporter.js +52 -55
  122. package/dist/cjs/export/ThreeJSExporter.js.map +1 -1
  123. package/dist/cjs/export/Tic80Exporter.js +1315 -0
  124. package/dist/cjs/export/Tic80Exporter.js.map +1 -0
  125. package/dist/cjs/export/UnityExporter.js +41 -56
  126. package/dist/cjs/export/UnityExporter.js.map +1 -1
  127. package/dist/cjs/export/UnrealExporter.js +962 -0
  128. package/dist/cjs/export/UnrealExporter.js.map +1 -0
  129. package/dist/cjs/export/WebExporter.js +42 -50
  130. package/dist/cjs/export/WebExporter.js.map +1 -1
  131. package/dist/cjs/export/index.js +50 -2
  132. package/dist/cjs/export/index.js.map +1 -1
  133. package/dist/cjs/godot-integration/GodotAssetLibrary.js +716 -0
  134. package/dist/cjs/godot-integration/GodotAssetLibrary.js.map +1 -0
  135. package/dist/cjs/godot-integration/GodotImport.js +1069 -0
  136. package/dist/cjs/godot-integration/GodotImport.js.map +1 -0
  137. package/dist/cjs/godot-integration/GodotLiveLink.js +962 -0
  138. package/dist/cjs/godot-integration/GodotLiveLink.js.map +1 -0
  139. package/dist/cjs/godot-integration/components/GodotProjectBrowser.js +668 -0
  140. package/dist/cjs/godot-integration/components/GodotProjectBrowser.js.map +1 -0
  141. package/dist/cjs/i18n/I18n.js +56 -30
  142. package/dist/cjs/i18n/I18n.js.map +1 -1
  143. package/dist/cjs/i18n/useTranslation.js +4 -4
  144. package/dist/cjs/i18n/useTranslation.js.map +1 -1
  145. package/dist/cjs/import/AsepriteImporter.js +15 -19
  146. package/dist/cjs/import/AsepriteImporter.js.map +1 -1
  147. package/dist/cjs/import/DragonBonesImporter.js +36 -40
  148. package/dist/cjs/import/DragonBonesImporter.js.map +1 -1
  149. package/dist/cjs/import/GameMakerImporter.js +11 -17
  150. package/dist/cjs/import/GameMakerImporter.js.map +1 -1
  151. package/dist/cjs/import/GodotSceneImporter.js +43 -29
  152. package/dist/cjs/import/GodotSceneImporter.js.map +1 -1
  153. package/dist/cjs/import/LDtkImporter.js +16 -17
  154. package/dist/cjs/import/LDtkImporter.js.map +1 -1
  155. package/dist/cjs/import/Live2DImporter.js +16 -19
  156. package/dist/cjs/import/Live2DImporter.js.map +1 -1
  157. package/dist/cjs/import/NdgFormat.js +28 -35
  158. package/dist/cjs/import/NdgFormat.js.map +1 -1
  159. package/dist/cjs/import/OgmoImporter.js +16 -18
  160. package/dist/cjs/import/OgmoImporter.js.map +1 -1
  161. package/dist/cjs/import/RPGMakerImporter.js +5 -6
  162. package/dist/cjs/import/RPGMakerImporter.js.map +1 -1
  163. package/dist/cjs/import/SceneImporter.js +23 -13
  164. package/dist/cjs/import/SceneImporter.js.map +1 -1
  165. package/dist/cjs/import/SpineImporter.js +20 -20
  166. package/dist/cjs/import/SpineImporter.js.map +1 -1
  167. package/dist/cjs/import/SpriterImporter.js +38 -46
  168. package/dist/cjs/import/SpriterImporter.js.map +1 -1
  169. package/dist/cjs/import/TiledMapImporter.js +20 -24
  170. package/dist/cjs/import/TiledMapImporter.js.map +1 -1
  171. package/dist/cjs/import/UnitySceneImporter.js +15 -15
  172. package/dist/cjs/import/UnitySceneImporter.js.map +1 -1
  173. package/dist/cjs/index.js +516 -4
  174. package/dist/cjs/index.js.map +1 -1
  175. package/dist/cjs/input/GamepadNavigation.js +82 -47
  176. package/dist/cjs/input/GamepadNavigation.js.map +1 -1
  177. package/dist/cjs/input/InputManager.js +107 -52
  178. package/dist/cjs/input/InputManager.js.map +1 -1
  179. package/dist/cjs/input/useGamepads.js +35 -29
  180. package/dist/cjs/input/useGamepads.js.map +1 -1
  181. package/dist/cjs/integration/IconSprite.js +39 -21
  182. package/dist/cjs/integration/IconSprite.js.map +1 -1
  183. package/dist/cjs/inventory/InventorySystem.js +218 -127
  184. package/dist/cjs/inventory/InventorySystem.js.map +1 -1
  185. package/dist/cjs/kids/KidMode.js +491 -78
  186. package/dist/cjs/kids/KidMode.js.map +1 -1
  187. package/dist/cjs/kids/KidTools.js +154 -48
  188. package/dist/cjs/kids/KidTools.js.map +1 -1
  189. package/dist/cjs/monetization/Monetization.js +47 -35
  190. package/dist/cjs/monetization/Monetization.js.map +1 -1
  191. package/dist/cjs/multiplayer/LocalMultiplayer.js +48 -26
  192. package/dist/cjs/multiplayer/LocalMultiplayer.js.map +1 -1
  193. package/dist/cjs/multiplayer/MiniGameTypes.js +23 -10
  194. package/dist/cjs/multiplayer/MiniGameTypes.js.map +1 -1
  195. package/dist/cjs/native-engine/AssetPipeline.js +540 -0
  196. package/dist/cjs/native-engine/AssetPipeline.js.map +1 -0
  197. package/dist/cjs/native-engine/AudioEngine.js +825 -0
  198. package/dist/cjs/native-engine/AudioEngine.js.map +1 -0
  199. package/dist/cjs/native-engine/InputSystem.js +1175 -0
  200. package/dist/cjs/native-engine/InputSystem.js.map +1 -0
  201. package/dist/cjs/native-engine/NetworkingSystem.js +825 -0
  202. package/dist/cjs/native-engine/NetworkingSystem.js.map +1 -0
  203. package/dist/cjs/native-engine/PhysicsEngine.js +622 -0
  204. package/dist/cjs/native-engine/PhysicsEngine.js.map +1 -0
  205. package/dist/cjs/native-engine/RenderingEngine.js +371 -0
  206. package/dist/cjs/native-engine/RenderingEngine.js.map +1 -0
  207. package/dist/cjs/native-engine/SceneGraph.js +862 -0
  208. package/dist/cjs/native-engine/SceneGraph.js.map +1 -0
  209. package/dist/cjs/network/MultiplayerTransport.js +63 -33
  210. package/dist/cjs/network/MultiplayerTransport.js.map +1 -1
  211. package/dist/cjs/network/Networking.js +87 -62
  212. package/dist/cjs/network/Networking.js.map +1 -1
  213. package/dist/cjs/pathfinding/Pathfinding.js +71 -26
  214. package/dist/cjs/pathfinding/Pathfinding.js.map +1 -1
  215. package/dist/cjs/performance/AssetStreaming.js +656 -0
  216. package/dist/cjs/performance/AssetStreaming.js.map +1 -0
  217. package/dist/cjs/performance/BenchmarkSuite.js +37 -24
  218. package/dist/cjs/performance/BenchmarkSuite.js.map +1 -1
  219. package/dist/cjs/performance/DeltaCompression.js +566 -0
  220. package/dist/cjs/performance/DeltaCompression.js.map +1 -0
  221. package/dist/cjs/performance/DeterministicPhysics.js +603 -0
  222. package/dist/cjs/performance/DeterministicPhysics.js.map +1 -0
  223. package/dist/cjs/performance/ECSOptimization.js +726 -0
  224. package/dist/cjs/performance/ECSOptimization.js.map +1 -0
  225. package/dist/cjs/performance/HotReload.js +525 -0
  226. package/dist/cjs/performance/HotReload.js.map +1 -0
  227. package/dist/cjs/performance/InputRecording.js +590 -0
  228. package/dist/cjs/performance/InputRecording.js.map +1 -0
  229. package/dist/cjs/performance/InterestManagement.js +532 -0
  230. package/dist/cjs/performance/InterestManagement.js.map +1 -0
  231. package/dist/cjs/performance/LocalizationRuntime.js +472 -0
  232. package/dist/cjs/performance/LocalizationRuntime.js.map +1 -0
  233. package/dist/cjs/performance/MemoryManagement.js +487 -0
  234. package/dist/cjs/performance/MemoryManagement.js.map +1 -0
  235. package/dist/cjs/performance/ModSupport.js +531 -0
  236. package/dist/cjs/performance/ModSupport.js.map +1 -0
  237. package/dist/cjs/performance/MultiThreadedPhysics.js +500 -0
  238. package/dist/cjs/performance/MultiThreadedPhysics.js.map +1 -0
  239. package/dist/cjs/performance/NetworkPrediction.js +521 -0
  240. package/dist/cjs/performance/NetworkPrediction.js.map +1 -0
  241. package/dist/cjs/performance/ObjectPooling.js +653 -0
  242. package/dist/cjs/performance/ObjectPooling.js.map +1 -0
  243. package/dist/cjs/performance/Performance.js +64 -25
  244. package/dist/cjs/performance/Performance.js.map +1 -1
  245. package/dist/cjs/performance/PerformanceAdvanced.js +83 -49
  246. package/dist/cjs/performance/PerformanceAdvanced.js.map +1 -1
  247. package/dist/cjs/performance/SaveSystem.js +574 -0
  248. package/dist/cjs/performance/SaveSystem.js.map +1 -0
  249. package/dist/cjs/performance/WebGPURenderer.js +702 -0
  250. package/dist/cjs/performance/WebGPURenderer.js.map +1 -0
  251. package/dist/cjs/physics/PhysicsAdvanced.js +32 -20
  252. package/dist/cjs/physics/PhysicsAdvanced.js.map +1 -1
  253. package/dist/cjs/physics/PhysicsEngine2D.js +63 -36
  254. package/dist/cjs/physics/PhysicsEngine2D.js.map +1 -1
  255. package/dist/cjs/plugins/PluginSDK.js +46 -34
  256. package/dist/cjs/plugins/PluginSDK.js.map +1 -1
  257. package/dist/cjs/plugins/PluginTestKit.js +28 -29
  258. package/dist/cjs/plugins/PluginTestKit.js.map +1 -1
  259. package/dist/cjs/procedural/Procedural.js +24 -17
  260. package/dist/cjs/procedural/Procedural.js.map +1 -1
  261. package/dist/cjs/procedural/WorldBuilding.js +187 -55
  262. package/dist/cjs/procedural/WorldBuilding.js.map +1 -1
  263. package/dist/cjs/quest/QuestSystem.js +145 -111
  264. package/dist/cjs/quest/QuestSystem.js.map +1 -1
  265. package/dist/cjs/release/Release.js +142 -31
  266. package/dist/cjs/release/Release.js.map +1 -1
  267. package/dist/cjs/rendering/Camera2D.js +12 -7
  268. package/dist/cjs/rendering/Camera2D.js.map +1 -1
  269. package/dist/cjs/rendering/Renderer2D.js +62 -26
  270. package/dist/cjs/rendering/Renderer2D.js.map +1 -1
  271. package/dist/cjs/rendering/WebGPURenderPipeline.js +60 -31
  272. package/dist/cjs/rendering/WebGPURenderPipeline.js.map +1 -1
  273. package/dist/cjs/runtime3d/Runtime3D.js +80 -55
  274. package/dist/cjs/runtime3d/Runtime3D.js.map +1 -1
  275. package/dist/cjs/runtime3d/SceneEditor3D.js +20 -11
  276. package/dist/cjs/runtime3d/SceneEditor3D.js.map +1 -1
  277. package/dist/cjs/scene/SceneManager.js +26 -12
  278. package/dist/cjs/scene/SceneManager.js.map +1 -1
  279. package/dist/cjs/scripting/GraphToAST.js +36 -24
  280. package/dist/cjs/scripting/GraphToAST.js.map +1 -1
  281. package/dist/cjs/scripting/LanguageExporter.js +2 -3
  282. package/dist/cjs/scripting/LanguageExporter.js.map +1 -1
  283. package/dist/cjs/scripting/NodeGraph.js +49 -32
  284. package/dist/cjs/scripting/NodeGraph.js.map +1 -1
  285. package/dist/cjs/scripting/ScriptAST.js +19 -6
  286. package/dist/cjs/scripting/ScriptAST.js.map +1 -1
  287. package/dist/cjs/scripting/VisualScripting2.js +13 -12
  288. package/dist/cjs/scripting/VisualScripting2.js.map +1 -1
  289. package/dist/cjs/scripting/exporters/CSharpExporter.js +16 -16
  290. package/dist/cjs/scripting/exporters/CSharpExporter.js.map +1 -1
  291. package/dist/cjs/scripting/exporters/GDScriptExporter.js +3 -6
  292. package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +1 -1
  293. package/dist/cjs/scripting/exporters/LuaExporter.js +5 -9
  294. package/dist/cjs/scripting/exporters/LuaExporter.js.map +1 -1
  295. package/dist/cjs/scripting/exporters/PythonExporter.js +7 -13
  296. package/dist/cjs/scripting/exporters/PythonExporter.js.map +1 -1
  297. package/dist/cjs/scripting/exporters/RustExporter.js +7 -14
  298. package/dist/cjs/scripting/exporters/RustExporter.js.map +1 -1
  299. package/dist/cjs/scripting/exporters/TypeScriptExporter.js +28 -29
  300. package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +1 -1
  301. package/dist/cjs/social/Social.js +27 -20
  302. package/dist/cjs/social/Social.js.map +1 -1
  303. package/dist/cjs/systems/LightingSystem.js +980 -0
  304. package/dist/cjs/systems/LightingSystem.js.map +1 -0
  305. package/dist/cjs/systems/ParticleSystem2.js +34 -17
  306. package/dist/cjs/systems/ParticleSystem2.js.map +1 -1
  307. package/dist/cjs/systems/PhysicsDebugSystem.js +1228 -0
  308. package/dist/cjs/systems/PhysicsDebugSystem.js.map +1 -0
  309. package/dist/cjs/systems/TerrainSystem.js +1137 -0
  310. package/dist/cjs/systems/TerrainSystem.js.map +1 -0
  311. package/dist/cjs/templates/ActionTemplates.js +144 -24
  312. package/dist/cjs/templates/ActionTemplates.js.map +1 -1
  313. package/dist/cjs/templates/FightingTemplate.js +536 -0
  314. package/dist/cjs/templates/FightingTemplate.js.map +1 -0
  315. package/dist/cjs/templates/MetroidvaniaTemplate.js +523 -0
  316. package/dist/cjs/templates/MetroidvaniaTemplate.js.map +1 -0
  317. package/dist/cjs/templates/PartyTemplates.js +60 -28
  318. package/dist/cjs/templates/PartyTemplates.js.map +1 -1
  319. package/dist/cjs/templates/PuzzleTemplates.js +63 -22
  320. package/dist/cjs/templates/PuzzleTemplates.js.map +1 -1
  321. package/dist/cjs/templates/RPGTemplates.js +29 -15
  322. package/dist/cjs/templates/RPGTemplates.js.map +1 -1
  323. package/dist/cjs/templates/SportsTemplates.js +41 -17
  324. package/dist/cjs/templates/SportsTemplates.js.map +1 -1
  325. package/dist/cjs/templates/StrategyTemplates.js +45 -18
  326. package/dist/cjs/templates/StrategyTemplates.js.map +1 -1
  327. package/dist/cjs/templates/SurvivalTemplate.js +479 -0
  328. package/dist/cjs/templates/SurvivalTemplate.js.map +1 -0
  329. package/dist/cjs/templates/WaveDefense.js +139 -52
  330. package/dist/cjs/templates/WaveDefense.js.map +1 -1
  331. package/dist/cjs/tilemap/Tilemap.js +48 -32
  332. package/dist/cjs/tilemap/Tilemap.js.map +1 -1
  333. package/dist/cjs/tutorials/TutorialBranching.js +111 -42
  334. package/dist/cjs/tutorials/TutorialBranching.js.map +1 -1
  335. package/dist/cjs/tutorials/TutorialEngine.js +152 -80
  336. package/dist/cjs/tutorials/TutorialEngine.js.map +1 -1
  337. package/dist/cjs/tutorials/TutorialOverlay.js +117 -40
  338. package/dist/cjs/tutorials/TutorialOverlay.js.map +1 -1
  339. package/dist/cjs/ui/GameUI.js +69 -42
  340. package/dist/cjs/ui/GameUI.js.map +1 -1
  341. package/dist/cjs/unity-integration/UnityAssetStore.js +754 -0
  342. package/dist/cjs/unity-integration/UnityAssetStore.js.map +1 -0
  343. package/dist/cjs/unity-integration/UnityImport.js +1252 -0
  344. package/dist/cjs/unity-integration/UnityImport.js.map +1 -0
  345. package/dist/cjs/unity-integration/UnityLiveLink.js +1022 -0
  346. package/dist/cjs/unity-integration/UnityLiveLink.js.map +1 -0
  347. package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js +796 -0
  348. package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js.map +1 -0
  349. package/dist/cjs/unity-integration/components/UnityProjectBrowser.js +833 -0
  350. package/dist/cjs/unity-integration/components/UnityProjectBrowser.js.map +1 -0
  351. package/dist/cjs/unreal-integration/UnrealImport.js +442 -0
  352. package/dist/cjs/unreal-integration/UnrealImport.js.map +1 -0
  353. package/dist/cjs/unreal-integration/UnrealLiveLink.js +1186 -0
  354. package/dist/cjs/unreal-integration/UnrealLiveLink.js.map +1 -0
  355. package/dist/cjs/unreal-integration/UnrealMarketplace.js +497 -0
  356. package/dist/cjs/unreal-integration/UnrealMarketplace.js.map +1 -0
  357. package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js +835 -0
  358. package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js.map +1 -0
  359. package/dist/cjs/xr/ARVR.js +32 -9
  360. package/dist/cjs/xr/ARVR.js.map +1 -1
  361. package/dist/esm/accessibility/Accessibility.js +55 -20
  362. package/dist/esm/accessibility/Accessibility.js.map +1 -1
  363. package/dist/esm/ai/AI.js +74 -40
  364. package/dist/esm/ai/AI.js.map +1 -1
  365. package/dist/esm/ai/BehaviorTree.js +39 -47
  366. package/dist/esm/ai/BehaviorTree.js.map +1 -1
  367. package/dist/esm/ai/StateMachine.js +65 -99
  368. package/dist/esm/ai/StateMachine.js.map +1 -1
  369. package/dist/esm/animation/Animation.js +58 -34
  370. package/dist/esm/animation/Animation.js.map +1 -1
  371. package/dist/esm/audio/AudioAdvanced.js +71 -37
  372. package/dist/esm/audio/AudioAdvanced.js.map +1 -1
  373. package/dist/esm/audio/AudioBridge.js +61 -49
  374. package/dist/esm/audio/AudioBridge.js.map +1 -1
  375. package/dist/esm/audio/AudioManager.js +45 -29
  376. package/dist/esm/audio/AudioManager.js.map +1 -1
  377. package/dist/esm/build-cloud/BuildOrchestration.js +1129 -0
  378. package/dist/esm/build-cloud/BuildOrchestration.js.map +1 -0
  379. package/dist/esm/build-cloud/GodotBuildCloud.js +715 -0
  380. package/dist/esm/build-cloud/GodotBuildCloud.js.map +1 -0
  381. package/dist/esm/build-cloud/UnityBuildCloud.js +643 -0
  382. package/dist/esm/build-cloud/UnityBuildCloud.js.map +1 -0
  383. package/dist/esm/build-cloud/UnrealBuildCloud.js +668 -0
  384. package/dist/esm/build-cloud/UnrealBuildCloud.js.map +1 -0
  385. package/dist/esm/core/EventBus.js +2 -1
  386. package/dist/esm/core/EventBus.js.map +1 -1
  387. package/dist/esm/core/GameConfig.js +1 -1
  388. package/dist/esm/core/GameConfig.js.map +1 -1
  389. package/dist/esm/core/GameLoop.js +6 -3
  390. package/dist/esm/core/GameLoop.js.map +1 -1
  391. package/dist/esm/core/ServiceLocator.js +1 -2
  392. package/dist/esm/core/ServiceLocator.js.map +1 -1
  393. package/dist/esm/devtools/DevTools.js +73 -43
  394. package/dist/esm/devtools/DevTools.js.map +1 -1
  395. package/dist/esm/devtools/DeveloperExperience.js +84 -42
  396. package/dist/esm/devtools/DeveloperExperience.js.map +1 -1
  397. package/dist/esm/devtools/GameplayAnalytics.js +71 -43
  398. package/dist/esm/devtools/GameplayAnalytics.js.map +1 -1
  399. package/dist/esm/dialogue/DialogueSystem.js +153 -129
  400. package/dist/esm/dialogue/DialogueSystem.js.map +1 -1
  401. package/dist/esm/docs/DocGenerator.js +70 -28
  402. package/dist/esm/docs/DocGenerator.js.map +1 -1
  403. package/dist/esm/ecs/World.js +159 -33
  404. package/dist/esm/ecs/World.js.map +1 -1
  405. package/dist/esm/editor/AchievementEditor.js +645 -0
  406. package/dist/esm/editor/AchievementEditor.js.map +1 -0
  407. package/dist/esm/editor/AdvancedEditor.js +95 -23
  408. package/dist/esm/editor/AdvancedEditor.js.map +1 -1
  409. package/dist/esm/editor/AnimationRetargeting.js +738 -0
  410. package/dist/esm/editor/AnimationRetargeting.js.map +1 -0
  411. package/dist/esm/editor/AssetBrowser.js +1184 -0
  412. package/dist/esm/editor/AssetBrowser.js.map +1 -0
  413. package/dist/esm/editor/AssetManager.js +22 -14
  414. package/dist/esm/editor/AssetManager.js.map +1 -1
  415. package/dist/esm/editor/ConsolePro.js +1085 -0
  416. package/dist/esm/editor/ConsolePro.js.map +1 -0
  417. package/dist/esm/editor/CraftingEditor.js +744 -0
  418. package/dist/esm/editor/CraftingEditor.js.map +1 -0
  419. package/dist/esm/editor/DebugTools.js +46 -23
  420. package/dist/esm/editor/DebugTools.js.map +1 -1
  421. package/dist/esm/editor/DialogueSystem.js +918 -0
  422. package/dist/esm/editor/DialogueSystem.js.map +1 -0
  423. package/dist/esm/editor/LeaderboardSystem.js +491 -0
  424. package/dist/esm/editor/LeaderboardSystem.js.map +1 -0
  425. package/dist/esm/editor/NiceGameEditor.js +532 -142
  426. package/dist/esm/editor/NiceGameEditor.js.map +1 -1
  427. package/dist/esm/editor/PrefabSystem.js +858 -0
  428. package/dist/esm/editor/PrefabSystem.js.map +1 -0
  429. package/dist/esm/editor/ProfilerPanel.js +710 -0
  430. package/dist/esm/editor/ProfilerPanel.js.map +1 -0
  431. package/dist/esm/editor/QuestEditor.js +846 -0
  432. package/dist/esm/editor/QuestEditor.js.map +1 -0
  433. package/dist/esm/editor/ReplaySystem.js +648 -0
  434. package/dist/esm/editor/ReplaySystem.js.map +1 -0
  435. package/dist/esm/editor/SceneEditor.js +33 -13
  436. package/dist/esm/editor/SceneEditor.js.map +1 -1
  437. package/dist/esm/editor/ScreenshotMode.js +702 -0
  438. package/dist/esm/editor/ScreenshotMode.js.map +1 -0
  439. package/dist/esm/editor/ShaderGraph.js +7 -6
  440. package/dist/esm/editor/ShaderGraph.js.map +1 -1
  441. package/dist/esm/editor/TimelineEditor.js +37 -30
  442. package/dist/esm/editor/TimelineEditor.js.map +1 -1
  443. package/dist/esm/editor/UndoRedoPro.js +914 -0
  444. package/dist/esm/editor/UndoRedoPro.js.map +1 -0
  445. package/dist/esm/editor/VRARMode.js +653 -0
  446. package/dist/esm/editor/VRARMode.js.map +1 -0
  447. package/dist/esm/engine/NiceGameEngine.js +12 -10
  448. package/dist/esm/engine/NiceGameEngine.js.map +1 -1
  449. package/dist/esm/engine/SaveSystemV2.js +73 -37
  450. package/dist/esm/engine/SaveSystemV2.js.map +1 -1
  451. package/dist/esm/enterprise/Enterprise.js +92 -44
  452. package/dist/esm/enterprise/Enterprise.js.map +1 -1
  453. package/dist/esm/export/BevyExporter.js +995 -0
  454. package/dist/esm/export/BevyExporter.js.map +1 -0
  455. package/dist/esm/export/CocosExporter.js +703 -0
  456. package/dist/esm/export/CocosExporter.js.map +1 -0
  457. package/dist/esm/export/Construct3Exporter.js +829 -0
  458. package/dist/esm/export/Construct3Exporter.js.map +1 -0
  459. package/dist/esm/export/DefoldExporter.js +1103 -0
  460. package/dist/esm/export/DefoldExporter.js.map +1 -0
  461. package/dist/esm/export/GDevelopExporter.js +745 -0
  462. package/dist/esm/export/GDevelopExporter.js.map +1 -0
  463. package/dist/esm/export/GameMakerExporter.js +843 -0
  464. package/dist/esm/export/GameMakerExporter.js.map +1 -0
  465. package/dist/esm/export/GodotExporter.js +45 -50
  466. package/dist/esm/export/GodotExporter.js.map +1 -1
  467. package/dist/esm/export/MinecraftBedrockExporter.js +603 -0
  468. package/dist/esm/export/MinecraftBedrockExporter.js.map +1 -0
  469. package/dist/esm/export/MonoGameExporter.js +1331 -0
  470. package/dist/esm/export/MonoGameExporter.js.map +1 -0
  471. package/dist/esm/export/Pico8Exporter.js +843 -0
  472. package/dist/esm/export/Pico8Exporter.js.map +1 -0
  473. package/dist/esm/export/PlatformExporter.js +4 -5
  474. package/dist/esm/export/PlatformExporter.js.map +1 -1
  475. package/dist/esm/export/RPGMakerExporter.js +903 -0
  476. package/dist/esm/export/RPGMakerExporter.js.map +1 -0
  477. package/dist/esm/export/RobloxExporter.js +940 -0
  478. package/dist/esm/export/RobloxExporter.js.map +1 -0
  479. package/dist/esm/export/Solar2DExporter.js +1280 -0
  480. package/dist/esm/export/Solar2DExporter.js.map +1 -0
  481. package/dist/esm/export/ThreeJSExporter.js +52 -55
  482. package/dist/esm/export/ThreeJSExporter.js.map +1 -1
  483. package/dist/esm/export/Tic80Exporter.js +1312 -0
  484. package/dist/esm/export/Tic80Exporter.js.map +1 -0
  485. package/dist/esm/export/UnityExporter.js +41 -56
  486. package/dist/esm/export/UnityExporter.js.map +1 -1
  487. package/dist/esm/export/UnrealExporter.js +959 -0
  488. package/dist/esm/export/UnrealExporter.js.map +1 -0
  489. package/dist/esm/export/WebExporter.js +42 -50
  490. package/dist/esm/export/WebExporter.js.map +1 -1
  491. package/dist/esm/export/index.js +38 -2
  492. package/dist/esm/export/index.js.map +1 -1
  493. package/dist/esm/godot-integration/GodotAssetLibrary.js +711 -0
  494. package/dist/esm/godot-integration/GodotAssetLibrary.js.map +1 -0
  495. package/dist/esm/godot-integration/GodotImport.js +1062 -0
  496. package/dist/esm/godot-integration/GodotImport.js.map +1 -0
  497. package/dist/esm/godot-integration/GodotLiveLink.js +958 -0
  498. package/dist/esm/godot-integration/GodotLiveLink.js.map +1 -0
  499. package/dist/esm/godot-integration/components/GodotProjectBrowser.js +666 -0
  500. package/dist/esm/godot-integration/components/GodotProjectBrowser.js.map +1 -0
  501. package/dist/esm/i18n/I18n.js +56 -30
  502. package/dist/esm/i18n/I18n.js.map +1 -1
  503. package/dist/esm/i18n/useTranslation.js +4 -4
  504. package/dist/esm/i18n/useTranslation.js.map +1 -1
  505. package/dist/esm/import/AsepriteImporter.js +15 -19
  506. package/dist/esm/import/AsepriteImporter.js.map +1 -1
  507. package/dist/esm/import/DragonBonesImporter.js +36 -40
  508. package/dist/esm/import/DragonBonesImporter.js.map +1 -1
  509. package/dist/esm/import/GameMakerImporter.js +11 -17
  510. package/dist/esm/import/GameMakerImporter.js.map +1 -1
  511. package/dist/esm/import/GodotSceneImporter.js +43 -29
  512. package/dist/esm/import/GodotSceneImporter.js.map +1 -1
  513. package/dist/esm/import/LDtkImporter.js +16 -17
  514. package/dist/esm/import/LDtkImporter.js.map +1 -1
  515. package/dist/esm/import/Live2DImporter.js +16 -19
  516. package/dist/esm/import/Live2DImporter.js.map +1 -1
  517. package/dist/esm/import/NdgFormat.js +28 -35
  518. package/dist/esm/import/NdgFormat.js.map +1 -1
  519. package/dist/esm/import/OgmoImporter.js +16 -18
  520. package/dist/esm/import/OgmoImporter.js.map +1 -1
  521. package/dist/esm/import/RPGMakerImporter.js +5 -6
  522. package/dist/esm/import/RPGMakerImporter.js.map +1 -1
  523. package/dist/esm/import/SceneImporter.js +23 -13
  524. package/dist/esm/import/SceneImporter.js.map +1 -1
  525. package/dist/esm/import/SpineImporter.js +20 -20
  526. package/dist/esm/import/SpineImporter.js.map +1 -1
  527. package/dist/esm/import/SpriterImporter.js +38 -46
  528. package/dist/esm/import/SpriterImporter.js.map +1 -1
  529. package/dist/esm/import/TiledMapImporter.js +20 -24
  530. package/dist/esm/import/TiledMapImporter.js.map +1 -1
  531. package/dist/esm/import/UnitySceneImporter.js +15 -15
  532. package/dist/esm/import/UnitySceneImporter.js.map +1 -1
  533. package/dist/esm/index.js +76 -3
  534. package/dist/esm/index.js.map +1 -1
  535. package/dist/esm/input/GamepadNavigation.js +82 -47
  536. package/dist/esm/input/GamepadNavigation.js.map +1 -1
  537. package/dist/esm/input/InputManager.js +107 -52
  538. package/dist/esm/input/InputManager.js.map +1 -1
  539. package/dist/esm/input/useGamepads.js +35 -29
  540. package/dist/esm/input/useGamepads.js.map +1 -1
  541. package/dist/esm/integration/IconSprite.js +39 -21
  542. package/dist/esm/integration/IconSprite.js.map +1 -1
  543. package/dist/esm/inventory/InventorySystem.js +218 -127
  544. package/dist/esm/inventory/InventorySystem.js.map +1 -1
  545. package/dist/esm/kids/KidMode.js +491 -78
  546. package/dist/esm/kids/KidMode.js.map +1 -1
  547. package/dist/esm/kids/KidTools.js +154 -48
  548. package/dist/esm/kids/KidTools.js.map +1 -1
  549. package/dist/esm/monetization/Monetization.js +47 -35
  550. package/dist/esm/monetization/Monetization.js.map +1 -1
  551. package/dist/esm/multiplayer/LocalMultiplayer.js +48 -26
  552. package/dist/esm/multiplayer/LocalMultiplayer.js.map +1 -1
  553. package/dist/esm/multiplayer/MiniGameTypes.js +23 -10
  554. package/dist/esm/multiplayer/MiniGameTypes.js.map +1 -1
  555. package/dist/esm/native-engine/AssetPipeline.js +537 -0
  556. package/dist/esm/native-engine/AssetPipeline.js.map +1 -0
  557. package/dist/esm/native-engine/AudioEngine.js +822 -0
  558. package/dist/esm/native-engine/AudioEngine.js.map +1 -0
  559. package/dist/esm/native-engine/InputSystem.js +1170 -0
  560. package/dist/esm/native-engine/InputSystem.js.map +1 -0
  561. package/dist/esm/native-engine/NetworkingSystem.js +817 -0
  562. package/dist/esm/native-engine/NetworkingSystem.js.map +1 -0
  563. package/dist/esm/native-engine/PhysicsEngine.js +619 -0
  564. package/dist/esm/native-engine/PhysicsEngine.js.map +1 -0
  565. package/dist/esm/native-engine/RenderingEngine.js +368 -0
  566. package/dist/esm/native-engine/RenderingEngine.js.map +1 -0
  567. package/dist/esm/native-engine/SceneGraph.js +857 -0
  568. package/dist/esm/native-engine/SceneGraph.js.map +1 -0
  569. package/dist/esm/network/MultiplayerTransport.js +63 -33
  570. package/dist/esm/network/MultiplayerTransport.js.map +1 -1
  571. package/dist/esm/network/Networking.js +87 -62
  572. package/dist/esm/network/Networking.js.map +1 -1
  573. package/dist/esm/pathfinding/Pathfinding.js +71 -26
  574. package/dist/esm/pathfinding/Pathfinding.js.map +1 -1
  575. package/dist/esm/performance/AssetStreaming.js +649 -0
  576. package/dist/esm/performance/AssetStreaming.js.map +1 -0
  577. package/dist/esm/performance/BenchmarkSuite.js +37 -24
  578. package/dist/esm/performance/BenchmarkSuite.js.map +1 -1
  579. package/dist/esm/performance/DeltaCompression.js +554 -0
  580. package/dist/esm/performance/DeltaCompression.js.map +1 -0
  581. package/dist/esm/performance/DeterministicPhysics.js +573 -0
  582. package/dist/esm/performance/DeterministicPhysics.js.map +1 -0
  583. package/dist/esm/performance/ECSOptimization.js +716 -0
  584. package/dist/esm/performance/ECSOptimization.js.map +1 -0
  585. package/dist/esm/performance/HotReload.js +517 -0
  586. package/dist/esm/performance/HotReload.js.map +1 -0
  587. package/dist/esm/performance/InputRecording.js +580 -0
  588. package/dist/esm/performance/InputRecording.js.map +1 -0
  589. package/dist/esm/performance/InterestManagement.js +524 -0
  590. package/dist/esm/performance/InterestManagement.js.map +1 -0
  591. package/dist/esm/performance/LocalizationRuntime.js +465 -0
  592. package/dist/esm/performance/LocalizationRuntime.js.map +1 -0
  593. package/dist/esm/performance/MemoryManagement.js +481 -0
  594. package/dist/esm/performance/MemoryManagement.js.map +1 -0
  595. package/dist/esm/performance/ModSupport.js +520 -0
  596. package/dist/esm/performance/ModSupport.js.map +1 -0
  597. package/dist/esm/performance/MultiThreadedPhysics.js +491 -0
  598. package/dist/esm/performance/MultiThreadedPhysics.js.map +1 -0
  599. package/dist/esm/performance/NetworkPrediction.js +508 -0
  600. package/dist/esm/performance/NetworkPrediction.js.map +1 -0
  601. package/dist/esm/performance/ObjectPooling.js +639 -0
  602. package/dist/esm/performance/ObjectPooling.js.map +1 -0
  603. package/dist/esm/performance/Performance.js +64 -25
  604. package/dist/esm/performance/Performance.js.map +1 -1
  605. package/dist/esm/performance/PerformanceAdvanced.js +83 -49
  606. package/dist/esm/performance/PerformanceAdvanced.js.map +1 -1
  607. package/dist/esm/performance/SaveSystem.js +567 -0
  608. package/dist/esm/performance/SaveSystem.js.map +1 -0
  609. package/dist/esm/performance/WebGPURenderer.js +697 -0
  610. package/dist/esm/performance/WebGPURenderer.js.map +1 -0
  611. package/dist/esm/physics/PhysicsAdvanced.js +32 -20
  612. package/dist/esm/physics/PhysicsAdvanced.js.map +1 -1
  613. package/dist/esm/physics/PhysicsEngine2D.js +63 -36
  614. package/dist/esm/physics/PhysicsEngine2D.js.map +1 -1
  615. package/dist/esm/plugins/PluginSDK.js +46 -34
  616. package/dist/esm/plugins/PluginSDK.js.map +1 -1
  617. package/dist/esm/plugins/PluginTestKit.js +28 -29
  618. package/dist/esm/plugins/PluginTestKit.js.map +1 -1
  619. package/dist/esm/procedural/Procedural.js +24 -17
  620. package/dist/esm/procedural/Procedural.js.map +1 -1
  621. package/dist/esm/procedural/WorldBuilding.js +188 -55
  622. package/dist/esm/procedural/WorldBuilding.js.map +1 -1
  623. package/dist/esm/quest/QuestSystem.js +145 -111
  624. package/dist/esm/quest/QuestSystem.js.map +1 -1
  625. package/dist/esm/release/Release.js +142 -31
  626. package/dist/esm/release/Release.js.map +1 -1
  627. package/dist/esm/rendering/Camera2D.js +12 -7
  628. package/dist/esm/rendering/Camera2D.js.map +1 -1
  629. package/dist/esm/rendering/Renderer2D.js +62 -26
  630. package/dist/esm/rendering/Renderer2D.js.map +1 -1
  631. package/dist/esm/rendering/WebGPURenderPipeline.js +60 -31
  632. package/dist/esm/rendering/WebGPURenderPipeline.js.map +1 -1
  633. package/dist/esm/runtime3d/Runtime3D.js +80 -55
  634. package/dist/esm/runtime3d/Runtime3D.js.map +1 -1
  635. package/dist/esm/runtime3d/SceneEditor3D.js +20 -11
  636. package/dist/esm/runtime3d/SceneEditor3D.js.map +1 -1
  637. package/dist/esm/scene/SceneManager.js +26 -12
  638. package/dist/esm/scene/SceneManager.js.map +1 -1
  639. package/dist/esm/scripting/GraphToAST.js +36 -24
  640. package/dist/esm/scripting/GraphToAST.js.map +1 -1
  641. package/dist/esm/scripting/LanguageExporter.js +2 -3
  642. package/dist/esm/scripting/LanguageExporter.js.map +1 -1
  643. package/dist/esm/scripting/NodeGraph.js +49 -32
  644. package/dist/esm/scripting/NodeGraph.js.map +1 -1
  645. package/dist/esm/scripting/ScriptAST.js +19 -6
  646. package/dist/esm/scripting/ScriptAST.js.map +1 -1
  647. package/dist/esm/scripting/VisualScripting2.js +13 -12
  648. package/dist/esm/scripting/VisualScripting2.js.map +1 -1
  649. package/dist/esm/scripting/exporters/CSharpExporter.js +16 -16
  650. package/dist/esm/scripting/exporters/CSharpExporter.js.map +1 -1
  651. package/dist/esm/scripting/exporters/GDScriptExporter.js +3 -6
  652. package/dist/esm/scripting/exporters/GDScriptExporter.js.map +1 -1
  653. package/dist/esm/scripting/exporters/LuaExporter.js +5 -9
  654. package/dist/esm/scripting/exporters/LuaExporter.js.map +1 -1
  655. package/dist/esm/scripting/exporters/PythonExporter.js +7 -13
  656. package/dist/esm/scripting/exporters/PythonExporter.js.map +1 -1
  657. package/dist/esm/scripting/exporters/RustExporter.js +7 -14
  658. package/dist/esm/scripting/exporters/RustExporter.js.map +1 -1
  659. package/dist/esm/scripting/exporters/TypeScriptExporter.js +28 -29
  660. package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +1 -1
  661. package/dist/esm/social/Social.js +27 -20
  662. package/dist/esm/social/Social.js.map +1 -1
  663. package/dist/esm/systems/LightingSystem.js +968 -0
  664. package/dist/esm/systems/LightingSystem.js.map +1 -0
  665. package/dist/esm/systems/ParticleSystem2.js +34 -17
  666. package/dist/esm/systems/ParticleSystem2.js.map +1 -1
  667. package/dist/esm/systems/PhysicsDebugSystem.js +1219 -0
  668. package/dist/esm/systems/PhysicsDebugSystem.js.map +1 -0
  669. package/dist/esm/systems/TerrainSystem.js +1125 -0
  670. package/dist/esm/systems/TerrainSystem.js.map +1 -0
  671. package/dist/esm/templates/ActionTemplates.js +144 -24
  672. package/dist/esm/templates/ActionTemplates.js.map +1 -1
  673. package/dist/esm/templates/FightingTemplate.js +513 -0
  674. package/dist/esm/templates/FightingTemplate.js.map +1 -0
  675. package/dist/esm/templates/MetroidvaniaTemplate.js +484 -0
  676. package/dist/esm/templates/MetroidvaniaTemplate.js.map +1 -0
  677. package/dist/esm/templates/PartyTemplates.js +60 -28
  678. package/dist/esm/templates/PartyTemplates.js.map +1 -1
  679. package/dist/esm/templates/PuzzleTemplates.js +63 -22
  680. package/dist/esm/templates/PuzzleTemplates.js.map +1 -1
  681. package/dist/esm/templates/RPGTemplates.js +29 -15
  682. package/dist/esm/templates/RPGTemplates.js.map +1 -1
  683. package/dist/esm/templates/SportsTemplates.js +41 -17
  684. package/dist/esm/templates/SportsTemplates.js.map +1 -1
  685. package/dist/esm/templates/StrategyTemplates.js +45 -18
  686. package/dist/esm/templates/StrategyTemplates.js.map +1 -1
  687. package/dist/esm/templates/SurvivalTemplate.js +447 -0
  688. package/dist/esm/templates/SurvivalTemplate.js.map +1 -0
  689. package/dist/esm/templates/WaveDefense.js +139 -52
  690. package/dist/esm/templates/WaveDefense.js.map +1 -1
  691. package/dist/esm/tilemap/Tilemap.js +48 -32
  692. package/dist/esm/tilemap/Tilemap.js.map +1 -1
  693. package/dist/esm/tutorials/TutorialBranching.js +111 -42
  694. package/dist/esm/tutorials/TutorialBranching.js.map +1 -1
  695. package/dist/esm/tutorials/TutorialEngine.js +152 -80
  696. package/dist/esm/tutorials/TutorialEngine.js.map +1 -1
  697. package/dist/esm/tutorials/TutorialOverlay.js +117 -40
  698. package/dist/esm/tutorials/TutorialOverlay.js.map +1 -1
  699. package/dist/esm/ui/GameUI.js +69 -42
  700. package/dist/esm/ui/GameUI.js.map +1 -1
  701. package/dist/esm/unity-integration/UnityAssetStore.js +749 -0
  702. package/dist/esm/unity-integration/UnityAssetStore.js.map +1 -0
  703. package/dist/esm/unity-integration/UnityImport.js +1246 -0
  704. package/dist/esm/unity-integration/UnityImport.js.map +1 -0
  705. package/dist/esm/unity-integration/UnityLiveLink.js +1017 -0
  706. package/dist/esm/unity-integration/UnityLiveLink.js.map +1 -0
  707. package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js +794 -0
  708. package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js.map +1 -0
  709. package/dist/esm/unity-integration/components/UnityProjectBrowser.js +831 -0
  710. package/dist/esm/unity-integration/components/UnityProjectBrowser.js.map +1 -0
  711. package/dist/esm/unreal-integration/UnrealImport.js +437 -0
  712. package/dist/esm/unreal-integration/UnrealImport.js.map +1 -0
  713. package/dist/esm/unreal-integration/UnrealLiveLink.js +1182 -0
  714. package/dist/esm/unreal-integration/UnrealLiveLink.js.map +1 -0
  715. package/dist/esm/unreal-integration/UnrealMarketplace.js +490 -0
  716. package/dist/esm/unreal-integration/UnrealMarketplace.js.map +1 -0
  717. package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js +833 -0
  718. package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js.map +1 -0
  719. package/dist/esm/xr/ARVR.js +32 -9
  720. package/dist/esm/xr/ARVR.js.map +1 -1
  721. package/package.json +6 -5
@@ -0,0 +1,1085 @@
1
+ /**
2
+ * @file ConsolePro.ts
3
+ * @description Advanced Console System with filtering and object inspection
4
+ * PRO-1.4: Professional Editor Features
5
+ *
6
+ * Features:
7
+ * - Log levels (info, warn, error, debug, verbose, custom)
8
+ * - Stack trace capture
9
+ * - Object inspection/serialization
10
+ * - Filtering by level, tag, regex
11
+ * - Search within logs
12
+ * - Log groups (collapsible)
13
+ * - Console commands with auto-complete
14
+ * - Expression evaluation
15
+ * - Watch expressions
16
+ * - Export logs
17
+ * - Log persistence
18
+ */
19
+ const DEFAULT_CONSOLE_CONFIG = {
20
+ maxEntries: 10000,
21
+ showTimestamps: true,
22
+ showSource: true,
23
+ captureStackTrace: true,
24
+ stackTraceDepth: 10,
25
+ collapseRepeated: true,
26
+ preserveLog: false,
27
+ autoScroll: true,
28
+ wordWrap: true,
29
+ showIcons: true,
30
+ timestampFormat: 'absolute',
31
+ defaultLevelFilter: ['verbose', 'debug', 'info', 'warn', 'error', 'assert'],
32
+ defaultTagFilter: [],
33
+ enableCommands: true,
34
+ commandPrefix: '/',
35
+ };
36
+ // ============================================================
37
+ // Value Inspection
38
+ // ============================================================
39
+ function inspectValue(value, depth = 0, maxDepth = 3) {
40
+ if (value === null) {
41
+ return { type: 'null', preview: 'null', expandable: false };
42
+ }
43
+ if (value === undefined) {
44
+ return { type: 'undefined', preview: 'undefined', expandable: false };
45
+ }
46
+ const typeOf = typeof value;
47
+ switch (typeOf) {
48
+ case 'string':
49
+ return {
50
+ type: 'string',
51
+ preview: `"${truncate(value, 100)}"`,
52
+ value,
53
+ expandable: value.length > 100,
54
+ };
55
+ case 'number':
56
+ return {
57
+ type: 'number',
58
+ preview: String(value),
59
+ value,
60
+ expandable: false,
61
+ };
62
+ case 'boolean':
63
+ return {
64
+ type: 'boolean',
65
+ preview: String(value),
66
+ value,
67
+ expandable: false,
68
+ };
69
+ case 'bigint':
70
+ return {
71
+ type: 'bigint',
72
+ preview: `${value}n`,
73
+ value,
74
+ expandable: false,
75
+ };
76
+ case 'symbol':
77
+ return {
78
+ type: 'symbol',
79
+ preview: value.toString(),
80
+ expandable: false,
81
+ };
82
+ case 'function':
83
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
84
+ const fn = value;
85
+ return {
86
+ type: 'function',
87
+ preview: `ƒ ${fn.name || 'anonymous'}()`,
88
+ expandable: true,
89
+ className: 'Function',
90
+ children: depth < maxDepth ? inspectFunctionProperties(fn, depth, maxDepth) : undefined,
91
+ };
92
+ case 'object':
93
+ return inspectObject(value, depth, maxDepth);
94
+ }
95
+ return { type: 'undefined', preview: 'unknown', expandable: false };
96
+ }
97
+ function inspectObject(obj, depth, maxDepth) {
98
+ // Check for special types
99
+ if (obj instanceof Date) {
100
+ return {
101
+ type: 'date',
102
+ preview: obj.toISOString(),
103
+ value: obj,
104
+ expandable: true,
105
+ className: 'Date',
106
+ children: depth < maxDepth ? inspectObjectProperties(obj, depth, maxDepth) : undefined,
107
+ };
108
+ }
109
+ if (obj instanceof RegExp) {
110
+ return {
111
+ type: 'regexp',
112
+ preview: obj.toString(),
113
+ value: obj,
114
+ expandable: true,
115
+ className: 'RegExp',
116
+ children: depth < maxDepth ? inspectObjectProperties(obj, depth, maxDepth) : undefined,
117
+ };
118
+ }
119
+ if (obj instanceof Error) {
120
+ return {
121
+ type: 'error',
122
+ preview: `${obj.name}: ${obj.message}`,
123
+ value: obj,
124
+ expandable: true,
125
+ className: obj.constructor.name,
126
+ children: depth < maxDepth
127
+ ? [
128
+ {
129
+ name: 'message',
130
+ value: inspectValue(obj.message, depth + 1, maxDepth),
131
+ enumerable: true,
132
+ configurable: true,
133
+ writable: true,
134
+ isGetter: false,
135
+ isSetter: false,
136
+ },
137
+ {
138
+ name: 'stack',
139
+ value: inspectValue(obj.stack, depth + 1, maxDepth),
140
+ enumerable: true,
141
+ configurable: true,
142
+ writable: true,
143
+ isGetter: false,
144
+ isSetter: false,
145
+ },
146
+ ]
147
+ : undefined,
148
+ };
149
+ }
150
+ if (obj instanceof Map) {
151
+ const entries = Array.from(obj.entries()).slice(0, 10);
152
+ return {
153
+ type: 'map',
154
+ preview: `Map(${obj.size})`,
155
+ expandable: obj.size > 0,
156
+ className: 'Map',
157
+ children: depth < maxDepth
158
+ ? entries.map(([key, val], i) => ({
159
+ name: String(key),
160
+ value: inspectValue(val, depth + 1, maxDepth),
161
+ enumerable: true,
162
+ configurable: true,
163
+ writable: true,
164
+ isGetter: false,
165
+ isSetter: false,
166
+ }))
167
+ : undefined,
168
+ };
169
+ }
170
+ if (obj instanceof Set) {
171
+ const values = Array.from(obj).slice(0, 10);
172
+ return {
173
+ type: 'set',
174
+ preview: `Set(${obj.size})`,
175
+ expandable: obj.size > 0,
176
+ className: 'Set',
177
+ children: depth < maxDepth
178
+ ? values.map((val, i) => ({
179
+ name: String(i),
180
+ value: inspectValue(val, depth + 1, maxDepth),
181
+ enumerable: true,
182
+ configurable: true,
183
+ writable: true,
184
+ isGetter: false,
185
+ isSetter: false,
186
+ }))
187
+ : undefined,
188
+ };
189
+ }
190
+ if (obj instanceof Promise) {
191
+ return {
192
+ type: 'promise',
193
+ preview: 'Promise {<pending>}',
194
+ expandable: false,
195
+ className: 'Promise',
196
+ };
197
+ }
198
+ // Check for DOM elements
199
+ if (typeof HTMLElement !== 'undefined' && obj instanceof HTMLElement) {
200
+ return {
201
+ type: 'dom',
202
+ preview: `<${obj.tagName.toLowerCase()}${obj.id ? `#${obj.id}` : ''}${obj.className ? `.${obj.className.split(' ').join('.')}` : ''}>`,
203
+ expandable: true,
204
+ className: obj.constructor.name,
205
+ children: depth < maxDepth ? inspectObjectProperties(obj, depth, maxDepth, 20) : undefined,
206
+ };
207
+ }
208
+ // Array
209
+ if (Array.isArray(obj)) {
210
+ const preview = obj.length <= 5
211
+ ? `[${obj.map((v) => (typeof v === 'string' ? `"${truncate(v, 20)}"` : truncate(String(v), 20))).join(', ')}]`
212
+ : `Array(${obj.length})`;
213
+ return {
214
+ type: 'array',
215
+ preview,
216
+ expandable: obj.length > 0,
217
+ className: 'Array',
218
+ children: depth < maxDepth
219
+ ? obj.slice(0, 100).map((val, i) => ({
220
+ name: String(i),
221
+ value: inspectValue(val, depth + 1, maxDepth),
222
+ enumerable: true,
223
+ configurable: true,
224
+ writable: true,
225
+ isGetter: false,
226
+ isSetter: false,
227
+ }))
228
+ : undefined,
229
+ };
230
+ }
231
+ // Plain object
232
+ const keys = Object.keys(obj);
233
+ const preview = keys.length <= 3
234
+ ? `{${keys
235
+ .slice(0, 3)
236
+ .map((k) => `${k}: ${truncate(String(obj[k]), 20)}`)
237
+ .join(', ')}}`
238
+ : `{${keys
239
+ .slice(0, 2)
240
+ .map((k) => k)
241
+ .join(', ')}...}`;
242
+ return {
243
+ type: 'object',
244
+ preview,
245
+ expandable: keys.length > 0,
246
+ className: obj.constructor.name !== 'Object' ? obj.constructor.name : undefined,
247
+ children: depth < maxDepth ? inspectObjectProperties(obj, depth, maxDepth) : undefined,
248
+ };
249
+ }
250
+ function inspectObjectProperties(obj, depth, maxDepth, limit = 100) {
251
+ const properties = [];
252
+ const seen = new Set();
253
+ // Own enumerable properties
254
+ for (const key of Object.keys(obj).slice(0, limit)) {
255
+ if (seen.has(key)) {
256
+ continue;
257
+ }
258
+ seen.add(key);
259
+ const descriptor = Object.getOwnPropertyDescriptor(obj, key);
260
+ properties.push({
261
+ name: key,
262
+ value: descriptor?.get
263
+ ? { type: 'function', preview: '(...)', expandable: false }
264
+ : inspectValue(obj[key], depth + 1, maxDepth),
265
+ enumerable: descriptor?.enumerable ?? true,
266
+ configurable: descriptor?.configurable ?? true,
267
+ writable: descriptor?.writable ?? true,
268
+ isGetter: !!descriptor?.get,
269
+ isSetter: !!descriptor?.set,
270
+ });
271
+ }
272
+ return properties;
273
+ }
274
+ function inspectFunctionProperties(
275
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
276
+ fn, depth, maxDepth) {
277
+ return [
278
+ {
279
+ name: 'name',
280
+ value: inspectValue(fn.name, depth + 1, maxDepth),
281
+ enumerable: false,
282
+ configurable: true,
283
+ writable: false,
284
+ isGetter: false,
285
+ isSetter: false,
286
+ },
287
+ {
288
+ name: 'length',
289
+ value: inspectValue(fn.length, depth + 1, maxDepth),
290
+ enumerable: false,
291
+ configurable: true,
292
+ writable: false,
293
+ isGetter: false,
294
+ isSetter: false,
295
+ },
296
+ ];
297
+ }
298
+ function truncate(str, maxLength) {
299
+ return str.length > maxLength ? str.substring(0, maxLength) + '...' : str;
300
+ }
301
+ // ============================================================
302
+ // Stack Trace Parsing
303
+ // ============================================================
304
+ function captureStackTrace(depth = 10) {
305
+ const error = new Error();
306
+ const stack = error.stack || '';
307
+ const lines = stack.split('\n').slice(3); // Skip Error, captureStackTrace, and caller
308
+ const frames = [];
309
+ for (const line of lines.slice(0, depth)) {
310
+ const frame = parseStackLine(line);
311
+ if (frame) {
312
+ frames.push(frame);
313
+ }
314
+ }
315
+ return frames;
316
+ }
317
+ function parseStackLine(line) {
318
+ // Chrome/Node format: " at functionName (file:line:column)"
319
+ const chromeMatch = line.match(/^\s*at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);
320
+ if (chromeMatch) {
321
+ return {
322
+ functionName: chromeMatch[1] || '<anonymous>',
323
+ fileName: chromeMatch[2],
324
+ lineNumber: parseInt(chromeMatch[3], 10),
325
+ columnNumber: parseInt(chromeMatch[4], 10),
326
+ source: line.trim(),
327
+ };
328
+ }
329
+ // Firefox format: "functionName@file:line:column"
330
+ const firefoxMatch = line.match(/^(.*)@(.+?):(\d+):(\d+)$/);
331
+ if (firefoxMatch) {
332
+ return {
333
+ functionName: firefoxMatch[1] || '<anonymous>',
334
+ fileName: firefoxMatch[2],
335
+ lineNumber: parseInt(firefoxMatch[3], 10),
336
+ columnNumber: parseInt(firefoxMatch[4], 10),
337
+ source: line.trim(),
338
+ };
339
+ }
340
+ return null;
341
+ }
342
+ // ============================================================
343
+ // Console Pro Class
344
+ // ============================================================
345
+ class ConsolePro {
346
+ constructor(config) {
347
+ this.config = { ...DEFAULT_CONSOLE_CONFIG };
348
+ this.entries = [];
349
+ this.groups = new Map();
350
+ this.currentGroupId = null;
351
+ this.groupStack = [];
352
+ this.commands = new Map();
353
+ this.watchExpressions = [];
354
+ this.lastEntryHash = '';
355
+ this.searchFilter = '';
356
+ this.regexFilter = null;
357
+ // Context for expression evaluation
358
+ this.evalContext = {};
359
+ // ─── Timing ────────────────────────────────────────────
360
+ this.timers = new Map();
361
+ // ─── Counting ──────────────────────────────────────────
362
+ this.counters = new Map();
363
+ if (config) {
364
+ this.config = { ...this.config, ...config };
365
+ }
366
+ this.levelFilter = new Set(this.config.defaultLevelFilter);
367
+ this.tagFilter = new Set(this.config.defaultTagFilter);
368
+ // Register built-in commands
369
+ this.registerBuiltInCommands();
370
+ }
371
+ // ─── Configuration ─────────────────────────────────────
372
+ setConfig(config) {
373
+ this.config = { ...this.config, ...config };
374
+ this.onChange?.();
375
+ }
376
+ getConfig() {
377
+ return { ...this.config };
378
+ }
379
+ // ─── Logging Methods ───────────────────────────────────
380
+ log(...args) {
381
+ this.addEntry('info', 'info', args);
382
+ }
383
+ info(...args) {
384
+ this.addEntry('info', 'info', args);
385
+ }
386
+ warn(...args) {
387
+ this.addEntry('warn', 'warn', args);
388
+ }
389
+ error(...args) {
390
+ this.addEntry('error', 'error', args);
391
+ }
392
+ debug(...args) {
393
+ this.addEntry('debug', 'debug', args);
394
+ }
395
+ verbose(...args) {
396
+ this.addEntry('verbose', 'none', args);
397
+ }
398
+ assert(condition, ...args) {
399
+ if (!condition) {
400
+ this.addEntry('assert', 'failure', ['Assertion failed:', ...args]);
401
+ }
402
+ }
403
+ success(...args) {
404
+ this.addEntry('custom', 'success', args);
405
+ }
406
+ network(...args) {
407
+ this.addEntry('custom', 'network', args);
408
+ }
409
+ system(...args) {
410
+ this.addEntry('custom', 'system', args);
411
+ }
412
+ /**
413
+ * Log with tags for filtering
414
+ */
415
+ tagged(tags, ...args) {
416
+ this.addEntry('info', 'info', args, tags);
417
+ }
418
+ // ─── Grouping ──────────────────────────────────────────
419
+ group(label) {
420
+ const groupId = `group_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
421
+ const depth = this.groupStack.length;
422
+ const group = {
423
+ id: groupId,
424
+ label,
425
+ collapsed: false,
426
+ entries: [],
427
+ parent: this.currentGroupId ?? undefined,
428
+ depth,
429
+ };
430
+ this.groups.set(groupId, group);
431
+ // Create group start entry
432
+ const entry = this.createEntry('info', 'none', [label]);
433
+ entry.isGroupStart = true;
434
+ entry.groupId = groupId;
435
+ this.pushEntry(entry);
436
+ this.groupStack.push(groupId);
437
+ this.currentGroupId = groupId;
438
+ }
439
+ groupCollapsed(label) {
440
+ this.group(label);
441
+ const group = this.groups.get(this.currentGroupId);
442
+ if (group) {
443
+ group.collapsed = true;
444
+ }
445
+ }
446
+ groupEnd() {
447
+ if (this.groupStack.length === 0) {
448
+ return;
449
+ }
450
+ const groupId = this.groupStack.pop();
451
+ this.currentGroupId =
452
+ this.groupStack.length > 0 ? this.groupStack[this.groupStack.length - 1] : null;
453
+ // Create group end entry
454
+ const entry = this.createEntry('info', 'none', []);
455
+ entry.isGroupEnd = true;
456
+ entry.groupId = groupId;
457
+ this.pushEntry(entry);
458
+ }
459
+ toggleGroupCollapse(groupId) {
460
+ const group = this.groups.get(groupId);
461
+ if (group) {
462
+ group.collapsed = !group.collapsed;
463
+ this.onChange?.();
464
+ }
465
+ }
466
+ // ─── Table Output ──────────────────────────────────────
467
+ table(data, columns) {
468
+ if (!data || typeof data !== 'object') {
469
+ this.log(data);
470
+ return;
471
+ }
472
+ // Convert to array if needed
473
+ const rows = Array.isArray(data) ? data : [data];
474
+ if (rows.length === 0) {
475
+ this.log('(empty)');
476
+ return;
477
+ }
478
+ // Get columns
479
+ const allColumns = new Set();
480
+ for (const row of rows) {
481
+ if (row && typeof row === 'object') {
482
+ for (const key of Object.keys(row)) {
483
+ allColumns.add(key);
484
+ }
485
+ }
486
+ }
487
+ const cols = columns ?? Array.from(allColumns);
488
+ // Create table representation
489
+ const tableData = {
490
+ columns: cols,
491
+ rows: rows.map((row, i) => ({
492
+ index: i,
493
+ values: cols.map((col) => row?.[col]),
494
+ })),
495
+ };
496
+ const entry = this.createEntry('info', 'info', []);
497
+ entry.metadata = { type: 'table', data: tableData };
498
+ entry.message = `Table (${rows.length} rows)`;
499
+ this.pushEntry(entry);
500
+ }
501
+ time(label = 'default') {
502
+ this.timers.set(label, performance.now());
503
+ }
504
+ timeLog(label = 'default', ...args) {
505
+ const start = this.timers.get(label);
506
+ if (start === undefined) {
507
+ this.warn(`Timer '${label}' does not exist`);
508
+ return;
509
+ }
510
+ const elapsed = performance.now() - start;
511
+ this.log(`${label}: ${elapsed.toFixed(3)}ms`, ...args);
512
+ }
513
+ timeEnd(label = 'default') {
514
+ const start = this.timers.get(label);
515
+ if (start === undefined) {
516
+ this.warn(`Timer '${label}' does not exist`);
517
+ return;
518
+ }
519
+ const elapsed = performance.now() - start;
520
+ this.log(`${label}: ${elapsed.toFixed(3)}ms`);
521
+ this.timers.delete(label);
522
+ }
523
+ count(label = 'default') {
524
+ const count = (this.counters.get(label) ?? 0) + 1;
525
+ this.counters.set(label, count);
526
+ this.log(`${label}: ${count}`);
527
+ }
528
+ countReset(label = 'default') {
529
+ this.counters.delete(label);
530
+ }
531
+ // ─── Clear ─────────────────────────────────────────────
532
+ clear() {
533
+ if (!this.config.preserveLog) {
534
+ this.entries = [];
535
+ this.groups.clear();
536
+ this.groupStack = [];
537
+ this.currentGroupId = null;
538
+ this.lastEntryHash = '';
539
+ this.onClear?.();
540
+ this.onChange?.();
541
+ }
542
+ }
543
+ // ─── Entry Creation ────────────────────────────────────
544
+ addEntry(level, icon, args, tags = []) {
545
+ const entry = this.createEntry(level, icon, args, tags);
546
+ // Check for collapse
547
+ if (this.config.collapseRepeated) {
548
+ const hash = this.computeEntryHash(entry);
549
+ if (hash === this.lastEntryHash && this.entries.length > 0) {
550
+ this.entries[this.entries.length - 1].count++;
551
+ this.onChange?.();
552
+ return;
553
+ }
554
+ this.lastEntryHash = hash;
555
+ }
556
+ this.pushEntry(entry);
557
+ }
558
+ createEntry(level, icon, args, tags = []) {
559
+ const timestamp = Date.now();
560
+ const message = args
561
+ .map((arg) => {
562
+ if (typeof arg === 'string') {
563
+ return arg;
564
+ }
565
+ if (typeof arg === 'number' || typeof arg === 'boolean') {
566
+ return String(arg);
567
+ }
568
+ return inspectValue(arg).preview;
569
+ })
570
+ .join(' ');
571
+ const values = args.map((arg) => inspectValue(arg));
572
+ const entry = {
573
+ id: `log_${timestamp}_${Math.random().toString(36).substr(2, 9)}`,
574
+ level,
575
+ icon,
576
+ timestamp,
577
+ message,
578
+ values,
579
+ tags,
580
+ count: 1,
581
+ };
582
+ if (this.config.captureStackTrace &&
583
+ (level === 'error' || level === 'warn' || level === 'assert')) {
584
+ entry.stackTrace = captureStackTrace(this.config.stackTraceDepth);
585
+ }
586
+ if (this.config.showSource && entry.stackTrace && entry.stackTrace.length > 0) {
587
+ const frame = entry.stackTrace[0];
588
+ entry.source = `${frame.fileName}:${frame.lineNumber}`;
589
+ }
590
+ if (this.currentGroupId) {
591
+ entry.groupId = this.currentGroupId;
592
+ const group = this.groups.get(this.currentGroupId);
593
+ if (group) {
594
+ group.entries.push(entry);
595
+ }
596
+ }
597
+ return entry;
598
+ }
599
+ pushEntry(entry) {
600
+ this.entries.push(entry);
601
+ if (this.entries.length > this.config.maxEntries) {
602
+ this.entries.shift();
603
+ }
604
+ this.onEntryAdded?.(entry);
605
+ this.onChange?.();
606
+ }
607
+ computeEntryHash(entry) {
608
+ return `${entry.level}:${entry.message}:${entry.tags.join(',')}`;
609
+ }
610
+ // ─── Filtering ─────────────────────────────────────────
611
+ setLevelFilter(levels) {
612
+ this.levelFilter = new Set(levels);
613
+ this.onChange?.();
614
+ }
615
+ toggleLevelFilter(level) {
616
+ if (this.levelFilter.has(level)) {
617
+ this.levelFilter.delete(level);
618
+ }
619
+ else {
620
+ this.levelFilter.add(level);
621
+ }
622
+ this.onChange?.();
623
+ }
624
+ setTagFilter(tags) {
625
+ this.tagFilter = new Set(tags);
626
+ this.onChange?.();
627
+ }
628
+ setSearchFilter(search) {
629
+ this.searchFilter = search;
630
+ this.onChange?.();
631
+ }
632
+ setRegexFilter(pattern) {
633
+ if (pattern) {
634
+ try {
635
+ this.regexFilter = new RegExp(pattern, 'i');
636
+ }
637
+ catch {
638
+ this.regexFilter = null;
639
+ }
640
+ }
641
+ else {
642
+ this.regexFilter = null;
643
+ }
644
+ this.onChange?.();
645
+ }
646
+ getFilteredEntries() {
647
+ return this.entries.filter((entry) => {
648
+ // Level filter
649
+ if (!this.levelFilter.has(entry.level)) {
650
+ return false;
651
+ }
652
+ // Tag filter (if any tags specified, entry must have at least one)
653
+ if (this.tagFilter.size > 0) {
654
+ if (!entry.tags.some((tag) => this.tagFilter.has(tag))) {
655
+ return false;
656
+ }
657
+ }
658
+ // Search filter
659
+ if (this.searchFilter) {
660
+ const searchLower = this.searchFilter.toLowerCase();
661
+ if (!entry.message.toLowerCase().includes(searchLower)) {
662
+ return false;
663
+ }
664
+ }
665
+ // Regex filter
666
+ if (this.regexFilter) {
667
+ if (!this.regexFilter.test(entry.message)) {
668
+ return false;
669
+ }
670
+ }
671
+ // Group collapse
672
+ if (entry.groupId && !entry.isGroupStart && !entry.isGroupEnd) {
673
+ const group = this.groups.get(entry.groupId);
674
+ if (group?.collapsed) {
675
+ return false;
676
+ }
677
+ }
678
+ return true;
679
+ });
680
+ }
681
+ // ─── Data Access ───────────────────────────────────────
682
+ getAllEntries() {
683
+ return this.entries;
684
+ }
685
+ getEntry(id) {
686
+ return this.entries.find((e) => e.id === id);
687
+ }
688
+ getStats() {
689
+ const byLevel = {
690
+ verbose: 0,
691
+ debug: 0,
692
+ info: 0,
693
+ warn: 0,
694
+ error: 0,
695
+ assert: 0,
696
+ custom: 0,
697
+ };
698
+ for (const entry of this.entries) {
699
+ byLevel[entry.level]++;
700
+ }
701
+ return {
702
+ total: this.entries.length,
703
+ byLevel,
704
+ };
705
+ }
706
+ // ─── Commands ──────────────────────────────────────────
707
+ registerCommand(command) {
708
+ this.commands.set(command.name, command);
709
+ }
710
+ unregisterCommand(name) {
711
+ this.commands.delete(name);
712
+ }
713
+ getCommands() {
714
+ return new Map(this.commands);
715
+ }
716
+ async executeCommand(input) {
717
+ if (!this.config.enableCommands) {
718
+ this.warn('Commands are disabled');
719
+ return;
720
+ }
721
+ const trimmed = input.trim();
722
+ // Check for command prefix
723
+ if (!trimmed.startsWith(this.config.commandPrefix)) {
724
+ // Treat as expression evaluation
725
+ return this.evaluate(trimmed);
726
+ }
727
+ // Parse command
728
+ const commandStr = trimmed.substring(this.config.commandPrefix.length);
729
+ const parts = commandStr.split(/\s+/);
730
+ const commandName = parts[0];
731
+ const args = parts.slice(1);
732
+ const command = this.commands.get(commandName);
733
+ if (!command) {
734
+ this.error(`Unknown command: ${commandName}`);
735
+ return;
736
+ }
737
+ try {
738
+ const result = await command.execute(args, this);
739
+ if (result) {
740
+ this.info(result);
741
+ }
742
+ return result;
743
+ }
744
+ catch (error) {
745
+ this.error(`Command error: ${error}`);
746
+ }
747
+ }
748
+ getAutocomplete(input) {
749
+ const trimmed = input.trim();
750
+ if (!trimmed.startsWith(this.config.commandPrefix)) {
751
+ // Autocomplete evaluation context
752
+ return Object.keys(this.evalContext).filter((k) => k.toLowerCase().startsWith(trimmed.toLowerCase()));
753
+ }
754
+ const commandStr = trimmed.substring(this.config.commandPrefix.length);
755
+ const parts = commandStr.split(/\s+/);
756
+ if (parts.length === 1) {
757
+ // Autocomplete command names
758
+ return Array.from(this.commands.keys())
759
+ .filter((name) => name.startsWith(parts[0]))
760
+ .map((name) => this.config.commandPrefix + name);
761
+ }
762
+ // Autocomplete command arguments
763
+ const command = this.commands.get(parts[0]);
764
+ if (command?.autocomplete) {
765
+ return command.autocomplete(parts[parts.length - 1], parts.slice(1, -1));
766
+ }
767
+ return [];
768
+ }
769
+ registerBuiltInCommands() {
770
+ this.registerCommand({
771
+ name: 'help',
772
+ description: 'Show available commands',
773
+ usage: '/help [command]',
774
+ examples: ['/help', '/help clear'],
775
+ execute: (args) => {
776
+ if (args.length > 0) {
777
+ const cmd = this.commands.get(args[0]);
778
+ if (cmd) {
779
+ return `${cmd.name}: ${cmd.description}\nUsage: ${cmd.usage}\nExamples:\n ${cmd.examples.join('\n ')}`;
780
+ }
781
+ return `Unknown command: ${args[0]}`;
782
+ }
783
+ const lines = ['Available commands:'];
784
+ for (const [name, cmd] of this.commands) {
785
+ lines.push(` ${this.config.commandPrefix}${name} - ${cmd.description}`);
786
+ }
787
+ return lines.join('\n');
788
+ },
789
+ });
790
+ this.registerCommand({
791
+ name: 'clear',
792
+ description: 'Clear the console',
793
+ usage: '/clear',
794
+ examples: ['/clear'],
795
+ execute: () => {
796
+ this.clear();
797
+ },
798
+ });
799
+ this.registerCommand({
800
+ name: 'filter',
801
+ description: 'Set log level filter',
802
+ usage: '/filter [levels...]',
803
+ examples: ['/filter error warn', '/filter all'],
804
+ execute: (args) => {
805
+ if (args.length === 0 || args[0] === 'all') {
806
+ this.setLevelFilter(['verbose', 'debug', 'info', 'warn', 'error', 'assert', 'custom']);
807
+ return 'Showing all levels';
808
+ }
809
+ const levels = args;
810
+ this.setLevelFilter(levels);
811
+ return `Filtering: ${levels.join(', ')}`;
812
+ },
813
+ autocomplete: (partial) => {
814
+ const levels = [
815
+ 'verbose',
816
+ 'debug',
817
+ 'info',
818
+ 'warn',
819
+ 'error',
820
+ 'assert',
821
+ 'custom',
822
+ ];
823
+ return levels.filter((l) => l.startsWith(partial));
824
+ },
825
+ });
826
+ this.registerCommand({
827
+ name: 'search',
828
+ description: 'Search log messages',
829
+ usage: '/search <text>',
830
+ examples: ['/search error', '/search "connection failed"'],
831
+ execute: (args) => {
832
+ const query = args.join(' ');
833
+ this.setSearchFilter(query);
834
+ return `Searching: "${query}"`;
835
+ },
836
+ });
837
+ this.registerCommand({
838
+ name: 'export',
839
+ description: 'Export logs to JSON',
840
+ usage: '/export [filename]',
841
+ examples: ['/export', '/export debug-log'],
842
+ execute: (args) => {
843
+ const data = this.exportLogs();
844
+ // In a real implementation, this would trigger a download
845
+ this.info(`Exported ${this.entries.length} entries`);
846
+ return data;
847
+ },
848
+ });
849
+ this.registerCommand({
850
+ name: 'watch',
851
+ description: 'Add a watch expression',
852
+ usage: '/watch <expression>',
853
+ examples: ['/watch player.health', '/watch gameState.score'],
854
+ execute: (args) => {
855
+ const expression = args.join(' ');
856
+ this.addWatchExpression(expression);
857
+ return `Watching: ${expression}`;
858
+ },
859
+ });
860
+ this.registerCommand({
861
+ name: 'unwatch',
862
+ description: 'Remove a watch expression',
863
+ usage: '/unwatch <expression>',
864
+ examples: ['/unwatch player.health'],
865
+ execute: (args) => {
866
+ const expression = args.join(' ');
867
+ this.removeWatchExpression(expression);
868
+ return `Unwatched: ${expression}`;
869
+ },
870
+ });
871
+ }
872
+ // ─── Expression Evaluation ─────────────────────────────
873
+ setEvalContext(context) {
874
+ this.evalContext = context;
875
+ }
876
+ addToEvalContext(key, value) {
877
+ this.evalContext[key] = value;
878
+ }
879
+ evaluate(expression) {
880
+ try {
881
+ // Create a function with the context as local variables
882
+ const keys = Object.keys(this.evalContext);
883
+ const values = Object.values(this.evalContext);
884
+ const fn = new Function(...keys, `return (${expression})`);
885
+ const result = fn(...values);
886
+ const inspected = inspectValue(result);
887
+ this.info(`=> ${inspected.preview}`);
888
+ return inspected.preview;
889
+ }
890
+ catch (error) {
891
+ this.error(`Evaluation error: ${error}`);
892
+ }
893
+ }
894
+ // ─── Watch Expressions ─────────────────────────────────
895
+ addWatchExpression(expression, breakOnChange = false) {
896
+ this.watchExpressions.push({
897
+ id: `watch_${Date.now()}`,
898
+ expression,
899
+ lastValue: null,
900
+ lastError: null,
901
+ breakOnChange,
902
+ });
903
+ }
904
+ removeWatchExpression(expression) {
905
+ this.watchExpressions = this.watchExpressions.filter((w) => w.expression !== expression);
906
+ }
907
+ getWatchExpressions() {
908
+ return [...this.watchExpressions];
909
+ }
910
+ updateWatchExpressions() {
911
+ for (const watch of this.watchExpressions) {
912
+ try {
913
+ const keys = Object.keys(this.evalContext);
914
+ const values = Object.values(this.evalContext);
915
+ const fn = new Function(...keys, `return (${watch.expression})`);
916
+ const result = fn(...values);
917
+ const newValue = inspectValue(result);
918
+ // Check for change
919
+ if (watch.lastValue && watch.breakOnChange) {
920
+ if (newValue.preview !== watch.lastValue.preview) {
921
+ this.warn(`Watch changed: ${watch.expression} = ${newValue.preview} (was ${watch.lastValue.preview})`);
922
+ }
923
+ }
924
+ watch.lastValue = newValue;
925
+ watch.lastError = null;
926
+ }
927
+ catch (error) {
928
+ watch.lastError = String(error);
929
+ watch.lastValue = null;
930
+ }
931
+ }
932
+ }
933
+ // ─── Export/Import ─────────────────────────────────────
934
+ exportLogs() {
935
+ return JSON.stringify({
936
+ version: 1,
937
+ timestamp: Date.now(),
938
+ entries: this.entries,
939
+ stats: this.getStats(),
940
+ }, null, 2);
941
+ }
942
+ importLogs(json) {
943
+ try {
944
+ const data = JSON.parse(json);
945
+ if (data.version === 1 && Array.isArray(data.entries)) {
946
+ this.entries = data.entries;
947
+ this.onChange?.();
948
+ }
949
+ }
950
+ catch (error) {
951
+ this.error(`Failed to import logs: ${error}`);
952
+ }
953
+ }
954
+ // ─── Callbacks ─────────────────────────────────────────
955
+ setOnEntryAdded(callback) {
956
+ this.onEntryAdded = callback;
957
+ }
958
+ setOnChange(callback) {
959
+ this.onChange = callback;
960
+ }
961
+ setOnClear(callback) {
962
+ this.onClear = callback;
963
+ }
964
+ // ─── Format Helpers ────────────────────────────────────
965
+ formatTimestamp(timestamp) {
966
+ const date = new Date(timestamp);
967
+ switch (this.config.timestampFormat) {
968
+ case 'absolute':
969
+ return (date.toLocaleTimeString('en-US', { hour12: false }) +
970
+ '.' +
971
+ String(date.getMilliseconds()).padStart(3, '0'));
972
+ case 'relative':
973
+ const now = Date.now();
974
+ const diff = now - timestamp;
975
+ if (diff < 1000) {
976
+ return 'now';
977
+ }
978
+ if (diff < 60000) {
979
+ return `${Math.floor(diff / 1000)}s ago`;
980
+ }
981
+ if (diff < 3600000) {
982
+ return `${Math.floor(diff / 60000)}m ago`;
983
+ }
984
+ return `${Math.floor(diff / 3600000)}h ago`;
985
+ case 'both':
986
+ return `${date.toLocaleTimeString('en-US', { hour12: false })}.${String(date.getMilliseconds()).padStart(3, '0')}`;
987
+ }
988
+ }
989
+ }
990
+ // ============================================================
991
+ // Factory Functions
992
+ // ============================================================
993
+ function createConsolePro(config) {
994
+ return new ConsolePro(config);
995
+ }
996
+ function createGlobalConsole(config) {
997
+ const consolePro = new ConsolePro(config);
998
+ // Intercept global console methods
999
+ const originalConsole = {
1000
+ log: console.log,
1001
+ info: console.info,
1002
+ warn: console.warn,
1003
+ error: console.error,
1004
+ debug: console.debug,
1005
+ group: console.group,
1006
+ groupCollapsed: console.groupCollapsed,
1007
+ groupEnd: console.groupEnd,
1008
+ clear: console.clear,
1009
+ time: console.time,
1010
+ timeLog: console.timeLog,
1011
+ timeEnd: console.timeEnd,
1012
+ count: console.count,
1013
+ countReset: console.countReset,
1014
+ table: console.table,
1015
+ assert: console.assert,
1016
+ };
1017
+ console.log = (...args) => {
1018
+ consolePro.log(...args);
1019
+ originalConsole.log(...args);
1020
+ };
1021
+ console.info = (...args) => {
1022
+ consolePro.info(...args);
1023
+ originalConsole.info(...args);
1024
+ };
1025
+ console.warn = (...args) => {
1026
+ consolePro.warn(...args);
1027
+ originalConsole.warn(...args);
1028
+ };
1029
+ console.error = (...args) => {
1030
+ consolePro.error(...args);
1031
+ originalConsole.error(...args);
1032
+ };
1033
+ console.debug = (...args) => {
1034
+ consolePro.debug(...args);
1035
+ originalConsole.debug(...args);
1036
+ };
1037
+ console.group = (label) => {
1038
+ consolePro.group(label);
1039
+ originalConsole.group(label);
1040
+ };
1041
+ console.groupCollapsed = (label) => {
1042
+ consolePro.groupCollapsed(label);
1043
+ originalConsole.groupCollapsed(label);
1044
+ };
1045
+ console.groupEnd = () => {
1046
+ consolePro.groupEnd();
1047
+ originalConsole.groupEnd();
1048
+ };
1049
+ console.clear = () => {
1050
+ consolePro.clear();
1051
+ originalConsole.clear();
1052
+ };
1053
+ console.time = (label) => {
1054
+ consolePro.time(label);
1055
+ originalConsole.time(label);
1056
+ };
1057
+ console.timeLog = (label, ...args) => {
1058
+ consolePro.timeLog(label, ...args);
1059
+ originalConsole.timeLog(label, ...args);
1060
+ };
1061
+ console.timeEnd = (label) => {
1062
+ consolePro.timeEnd(label);
1063
+ originalConsole.timeEnd(label);
1064
+ };
1065
+ console.count = (label) => {
1066
+ consolePro.count(label);
1067
+ originalConsole.count(label);
1068
+ };
1069
+ console.countReset = (label) => {
1070
+ consolePro.countReset(label);
1071
+ originalConsole.countReset(label);
1072
+ };
1073
+ console.table = (data, columns) => {
1074
+ consolePro.table(data, columns);
1075
+ originalConsole.table(data, columns);
1076
+ };
1077
+ console.assert = (condition, ...args) => {
1078
+ consolePro.assert(condition, ...args);
1079
+ originalConsole.assert(condition, ...args);
1080
+ };
1081
+ return consolePro;
1082
+ }
1083
+
1084
+ export { ConsolePro, DEFAULT_CONSOLE_CONFIG, captureStackTrace, createConsolePro, createGlobalConsole, inspectValue };
1085
+ //# sourceMappingURL=ConsolePro.js.map