@needle-tools/engine 5.1.0-alpha.1 → 5.1.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/.needle/generated/needle-bindings.gen.d.ts +5 -0
  2. package/CHANGELOG.md +18 -0
  3. package/components.needle.json +1 -1
  4. package/dist/{gltf-progressive-DJBMx-zB.umd.cjs → gltf-progressive-BmblPzFj.umd.cjs} +4 -4
  5. package/dist/{gltf-progressive-BryRjllq.min.js → gltf-progressive-CN_mbb66.min.js} +2 -2
  6. package/dist/{gltf-progressive-Cl167Vjx.js → gltf-progressive-DUlhxdv4.js} +5 -2
  7. package/dist/{needle-engine.bundle-CiYtOO2O.min.js → needle-engine.bundle-B-5Q2CpC.min.js} +163 -163
  8. package/dist/{needle-engine.bundle-BGyKqxBH.js → needle-engine.bundle-dit3f1l5.js} +7501 -7307
  9. package/dist/{needle-engine.bundle-DzVx9Z8D.umd.cjs → needle-engine.bundle-qZfVf_v-.umd.cjs} +163 -163
  10. package/dist/needle-engine.d.ts +119 -27
  11. package/dist/needle-engine.js +172 -170
  12. package/dist/needle-engine.min.js +1 -1
  13. package/dist/needle-engine.umd.cjs +1 -1
  14. package/dist/{postprocessing-B_9sKVU7.min.js → postprocessing-B571qGWR.min.js} +34 -34
  15. package/dist/{postprocessing-WDc9WwI3.js → postprocessing-CfrLAbLX.js} +0 -1
  16. package/dist/{postprocessing-B2wb6pzI.umd.cjs → postprocessing-CiGkAeM9.umd.cjs} +17 -17
  17. package/dist/{vendor-CAcsI0eU.js → vendor-BFrMaK9q.js} +8983 -9136
  18. package/dist/vendor-CJmyOrCq.min.js +1116 -0
  19. package/dist/vendor-DkMW3WY4.umd.cjs +1116 -0
  20. package/lib/engine/api.d.ts +12 -0
  21. package/lib/engine/api.js +2 -0
  22. package/lib/engine/api.js.map +1 -1
  23. package/lib/engine/debug/debug_environment.js +1 -1
  24. package/lib/engine/debug/debug_environment.js.map +1 -1
  25. package/lib/engine/engine_application.js +8 -6
  26. package/lib/engine/engine_application.js.map +1 -1
  27. package/lib/engine/engine_constants.js +6 -0
  28. package/lib/engine/engine_constants.js.map +1 -1
  29. package/lib/engine/engine_context.d.ts +33 -7
  30. package/lib/engine/engine_context.js +40 -2
  31. package/lib/engine/engine_context.js.map +1 -1
  32. package/lib/engine/engine_context_registry.js +1 -1
  33. package/lib/engine/engine_context_registry.js.map +1 -1
  34. package/lib/engine/engine_init.js +5 -0
  35. package/lib/engine/engine_init.js.map +1 -1
  36. package/lib/engine/engine_input.d.ts +3 -2
  37. package/lib/engine/engine_input.js +3 -2
  38. package/lib/engine/engine_input.js.map +1 -1
  39. package/lib/engine/engine_license.d.ts +2 -0
  40. package/lib/engine/engine_license.js +25 -15
  41. package/lib/engine/engine_license.js.map +1 -1
  42. package/lib/engine/engine_lifecycle_functions_internal.js +5 -0
  43. package/lib/engine/engine_lifecycle_functions_internal.js.map +1 -1
  44. package/lib/engine/engine_networking_blob.d.ts +1 -1
  45. package/lib/engine/engine_networking_blob.js +5 -11
  46. package/lib/engine/engine_networking_blob.js.map +1 -1
  47. package/lib/engine/engine_physics_rapier.js +0 -1
  48. package/lib/engine/engine_physics_rapier.js.map +1 -1
  49. package/lib/engine/engine_pmrem.js +2 -2
  50. package/lib/engine/engine_pmrem.js.map +1 -1
  51. package/lib/engine/engine_scenedata.d.ts +30 -0
  52. package/lib/engine/engine_scenedata.js +136 -0
  53. package/lib/engine/engine_scenedata.js.map +1 -0
  54. package/lib/engine/engine_ssr.d.ts +18 -0
  55. package/lib/engine/engine_ssr.js +40 -0
  56. package/lib/engine/engine_ssr.js.map +1 -0
  57. package/lib/engine/engine_three_utils.d.ts +14 -7
  58. package/lib/engine/engine_three_utils.js +14 -7
  59. package/lib/engine/engine_three_utils.js.map +1 -1
  60. package/lib/engine/engine_types.d.ts +2 -0
  61. package/lib/engine/engine_types.js.map +1 -1
  62. package/lib/engine/engine_utils.js +2 -0
  63. package/lib/engine/engine_utils.js.map +1 -1
  64. package/lib/engine/engine_utils_hash.d.ts +9 -0
  65. package/lib/engine/engine_utils_hash.js +112 -0
  66. package/lib/engine/engine_utils_hash.js.map +1 -0
  67. package/lib/engine/webcomponents/jsx.d.ts +51 -0
  68. package/lib/engine/webcomponents/logo-element.d.ts +2 -1
  69. package/lib/engine/webcomponents/logo-element.js +2 -1
  70. package/lib/engine/webcomponents/logo-element.js.map +1 -1
  71. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +4 -4
  72. package/lib/engine/webcomponents/needle menu/needle-menu.js +2 -1
  73. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  74. package/lib/engine/webcomponents/needle-button.d.ts +2 -1
  75. package/lib/engine/webcomponents/needle-button.js +2 -1
  76. package/lib/engine/webcomponents/needle-button.js.map +1 -1
  77. package/lib/engine/webcomponents/needle-engine.d.ts +2 -1
  78. package/lib/engine/webcomponents/needle-engine.js +2 -1
  79. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  80. package/lib/engine/xr/NeedleXRSession.js +1 -1
  81. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  82. package/lib/engine-components/Light.d.ts +6 -8
  83. package/lib/engine-components/Light.js +40 -27
  84. package/lib/engine-components/Light.js.map +1 -1
  85. package/lib/engine-components/RigidBody.js +3 -3
  86. package/lib/engine-components/RigidBody.js.map +1 -1
  87. package/lib/engine-components/SceneSwitcher.js +2 -0
  88. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  89. package/lib/engine-components/postprocessing/Effects/BloomEffect.d.ts +1 -1
  90. package/lib/engine-components/postprocessing/Effects/Sharpening.js +1 -2
  91. package/lib/engine-components/postprocessing/Effects/Sharpening.js.map +1 -1
  92. package/lib/engine-components/postprocessing/PostProcessingHandler.js +5 -6
  93. package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
  94. package/lib/engine-components/web/ScrollFollow.d.ts +0 -1
  95. package/lib/engine-components/web/ScrollFollow.js +3 -2
  96. package/lib/engine-components/web/ScrollFollow.js.map +1 -1
  97. package/lib/needle-engine.d.ts +2 -0
  98. package/lib/needle-engine.js +2 -0
  99. package/lib/needle-engine.js.map +1 -1
  100. package/package.json +6 -4
  101. package/plugins/dts-generator/dts.codegen.js +334 -0
  102. package/plugins/dts-generator/dts.scan.js +99 -0
  103. package/plugins/dts-generator/dts.writer.js +59 -0
  104. package/plugins/dts-generator/glb.discovery.js +279 -0
  105. package/plugins/dts-generator/glb.extractor.js +215 -0
  106. package/plugins/dts-generator/glb.reader.js +167 -0
  107. package/plugins/dts-generator/index.js +36 -0
  108. package/plugins/dts-generator/manifest.types.js +174 -0
  109. package/plugins/types/index.d.ts +2 -1
  110. package/plugins/types/needle-bindings.d.ts +30 -0
  111. package/plugins/types/userconfig.d.ts +21 -2
  112. package/plugins/vite/asap.js +1 -1
  113. package/plugins/vite/dependency-watcher.d.ts +2 -2
  114. package/plugins/vite/dependency-watcher.js +3 -4
  115. package/plugins/vite/drop.d.ts +2 -2
  116. package/plugins/vite/drop.js +3 -4
  117. package/plugins/vite/dts-generator.d.ts +7 -0
  118. package/plugins/vite/dts-generator.js +191 -0
  119. package/plugins/vite/index.d.ts +10 -3
  120. package/plugins/vite/index.js +27 -10
  121. package/plugins/vite/logging.js +2 -2
  122. package/plugins/vite/meta.js +4 -2
  123. package/plugins/vite/poster.d.ts +2 -2
  124. package/plugins/vite/poster.js +3 -5
  125. package/plugins/vite/reload.d.ts +2 -2
  126. package/plugins/vite/reload.js +23 -22
  127. package/src/engine/api.ts +15 -1
  128. package/src/engine/debug/debug_environment.ts +1 -1
  129. package/src/engine/engine_application.ts +8 -6
  130. package/src/engine/engine_constants.ts +11 -6
  131. package/src/engine/engine_context.ts +50 -7
  132. package/src/engine/engine_context_registry.ts +1 -1
  133. package/src/engine/engine_init.ts +4 -0
  134. package/src/engine/engine_input.ts +3 -2
  135. package/src/engine/engine_license.ts +23 -19
  136. package/src/engine/engine_lifecycle_functions_internal.ts +7 -0
  137. package/src/engine/engine_networking_blob.ts +5 -11
  138. package/src/engine/engine_physics_rapier.ts +0 -3
  139. package/src/engine/engine_pmrem.ts +3 -3
  140. package/src/engine/engine_scenedata.ts +134 -0
  141. package/src/engine/engine_ssr.ts +48 -0
  142. package/src/engine/engine_three_utils.ts +15 -7
  143. package/src/engine/engine_types.ts +2 -0
  144. package/src/engine/engine_utils.ts +1 -0
  145. package/src/engine/engine_utils_hash.ts +65 -0
  146. package/src/engine/webcomponents/jsx.d.ts +51 -0
  147. package/src/engine/webcomponents/logo-element.ts +3 -1
  148. package/src/engine/webcomponents/needle menu/needle-menu.ts +4 -2
  149. package/src/engine/webcomponents/needle-button.ts +3 -1
  150. package/src/engine/webcomponents/needle-engine.ts +3 -1
  151. package/src/engine/xr/NeedleXRSession.ts +1 -1
  152. package/src/engine-components/Light.ts +40 -26
  153. package/src/engine-components/RigidBody.ts +3 -3
  154. package/src/engine-components/SceneSwitcher.ts +1 -0
  155. package/src/engine-components/postprocessing/Effects/BloomEffect.ts +1 -1
  156. package/src/engine-components/postprocessing/Effects/Sharpening.ts +1 -2
  157. package/src/engine-components/postprocessing/PostProcessingHandler.ts +4 -8
  158. package/src/engine-components/web/ScrollFollow.ts +2 -2
  159. package/src/needle-engine.ts +3 -0
  160. package/src/vite-env.d.ts +16 -0
  161. package/dist/vendor-CEM38hLE.umd.cjs +0 -1116
  162. package/dist/vendor-HRlxIBga.min.js +0 -1116
@@ -0,0 +1,5 @@
1
+ // Auto-generated by @needle-tools/engine — do not edit
2
+ // Regenerated on each vite dev-server start and GLB change.
3
+ declare module "needle-bindings" {
4
+ interface SceneData {}
5
+ }
package/CHANGELOG.md CHANGED
@@ -4,6 +4,24 @@ All notable changes to this package will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [5.1.0-alpha.2] - 2026-04-13
8
+ - **NEW**: Scene Bindings (experimental) — auto-generated TypeScript types from your glTF scenes, providing typed access to nodes, components, and properties via `ctx.sceneData` or `needle.sceneData`. Types are generated automatically by a Vite plugin whenever your scene files change — no configuration needed. Works with both local and remote (Needle Cloud) assets. The API shape (particularly `$components` and `$object` accessors) may evolve based on feedback. Can be disabled with `dts: { enabled: false }` in your Vite plugin config.
9
+ ```ts
10
+ // fully typed, with autocomplete for every node and component
11
+ const cam = ctx.sceneData.MyScene.MainCamera.$object; // THREE.PerspectiveCamera
12
+ const orbit = ctx.sceneData.MyScene.MainCamera.$components.OrbitControls; // typed!
13
+ ```
14
+ - **NEW**: SSR support (experimental) — import Needle Engine in Node.js/SSR frameworks (SvelteKit, Next.js, Nuxt) without `ReferenceError` crashes. The engine now provides SSR-safe base classes and skips browser-dependent initialization on the server. Core rendering still happens client-side — SSR support means your app can import and reference engine code server-side without errors.
15
+ - **NEW**: JSX type declarations for `<needle-engine>` and other web components — first-class support for React, Preact, SolidJS, and other JSX-based frameworks with full autocomplete and type checking
16
+ - **NEW**: `context.lights` array and `context.mainLight` getter for easy access to all scene lights and the primary directional light
17
+ - Add: `needlePlugins()` can now be called without arguments — the Vite command is resolved automatically. This simplifies setup in frameworks like SvelteKit where `defineConfig` doesn't expose the command:
18
+ ```js
19
+ export default defineConfig({ plugins: [sveltekit(), needlePlugins()] });
20
+ ```
21
+ - Fix: BloomEffect and Sharpening were pulling in the entire `postprocessing` library even in projects that don't use postprocessing, increasing bundle size unnecessarily
22
+ - Fix: SceneSwitcher now shows the object name in the URL when referencing scene objects (instead of just an index)
23
+ - Improved: Vite plugin reliability (fewer unnecessary reloads, cleaner log output)
24
+
7
25
  ## [5.1.0-alpha.1] - 2026-04-10
8
26
  - Add: `AnimatorControllerBuilder` for building animator controllers from code (experimental)
9
27
  - Add: XR global events now return an unsubscribe function + `onBeforeXRSessionRequest` event