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