@needle-tools/engine 4.17.0-next.36dcae2 → 4.17.0-next.4989636

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 (238) hide show
  1. package/components.needle.json +1 -1
  2. package/dist/gltf-progressive-BryRjllq.min.js +10 -0
  3. package/dist/gltf-progressive-Cl167Vjx.js +1537 -0
  4. package/dist/gltf-progressive-DJBMx-zB.umd.cjs +10 -0
  5. package/dist/gltf-progressive.worker-BqODMeeW.js +23 -0
  6. package/dist/needle-engine.bundle-BTIpdDE9.umd.cjs +1654 -0
  7. package/dist/{needle-engine.bundle-CQFEuAQB.js → needle-engine.bundle-CH2ZOagS.js} +35829 -35882
  8. package/dist/needle-engine.bundle-D5h7xxUH.min.js +1654 -0
  9. package/dist/needle-engine.d.ts +105 -39
  10. package/dist/needle-engine.js +608 -607
  11. package/dist/needle-engine.min.js +1 -1
  12. package/dist/needle-engine.umd.cjs +1 -1
  13. package/dist/three-examples.js +7815 -6828
  14. package/dist/three-examples.min.js +17 -15
  15. package/dist/three-examples.umd.cjs +17 -15
  16. package/dist/three.js +15994 -24892
  17. package/dist/three.min.js +214 -214
  18. package/dist/three.umd.cjs +208 -208
  19. package/dist/vendor-CntUvmJu.umd.cjs +1116 -0
  20. package/dist/{vendor-BPp9F5vR.min.js → vendor-DPbfJJ4d.min.js} +94 -94
  21. package/dist/{vendor-CQMI3jTS.js → vendor-vHLk8sXu.js} +8558 -8516
  22. package/lib/engine/analytics/index.js.map +1 -1
  23. package/lib/engine/codegen/register_types.d.ts +1 -1
  24. package/lib/engine/codegen/register_types.js +159 -157
  25. package/lib/engine/codegen/register_types.js.map +1 -1
  26. package/lib/engine/debug/debug.d.ts +1 -4
  27. package/lib/engine/debug/debug.js +1 -25
  28. package/lib/engine/debug/debug.js.map +1 -1
  29. package/lib/engine/debug/debug_environment.d.ts +4 -0
  30. package/lib/engine/debug/debug_environment.js +26 -0
  31. package/lib/engine/debug/debug_environment.js.map +1 -0
  32. package/lib/engine/debug/debug_overlay.js +2 -1
  33. package/lib/engine/debug/debug_overlay.js.map +1 -1
  34. package/lib/engine/debug/debug_spatial_console.js +1 -1
  35. package/lib/engine/debug/debug_spatial_console.js.map +1 -1
  36. package/lib/engine/engine_audio.js +0 -1
  37. package/lib/engine/engine_audio.js.map +1 -1
  38. package/lib/engine/engine_components.js +6 -3
  39. package/lib/engine/engine_components.js.map +1 -1
  40. package/lib/engine/engine_gltf_builtin_components.d.ts +0 -1
  41. package/lib/engine/engine_gltf_builtin_components.js +5 -4
  42. package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
  43. package/lib/engine/engine_init.d.ts +10 -0
  44. package/lib/engine/engine_init.js +44 -0
  45. package/lib/engine/engine_init.js.map +1 -0
  46. package/lib/engine/engine_loaders.d.ts +2 -0
  47. package/lib/engine/engine_loaders.js +2 -1
  48. package/lib/engine/engine_loaders.js.map +1 -1
  49. package/lib/engine/engine_modules.d.ts +8 -0
  50. package/lib/engine/engine_modules.js +1 -0
  51. package/lib/engine/engine_modules.js.map +1 -1
  52. package/lib/engine/engine_networking.d.ts +2 -1
  53. package/lib/engine/engine_networking.js +3 -1
  54. package/lib/engine/engine_networking.js.map +1 -1
  55. package/lib/engine/engine_networking_blob.js +3 -3
  56. package/lib/engine/engine_networking_blob.js.map +1 -1
  57. package/lib/engine/engine_networking_peer.d.ts +2 -2
  58. package/lib/engine/engine_networking_peer.js +7 -6
  59. package/lib/engine/engine_networking_peer.js.map +1 -1
  60. package/lib/engine/engine_networking_streams.d.ts +2 -1
  61. package/lib/engine/engine_networking_streams.js +2 -2
  62. package/lib/engine/engine_networking_streams.js.map +1 -1
  63. package/lib/engine/engine_physics_rapier.d.ts +2 -0
  64. package/lib/engine/engine_physics_rapier.js +35 -4
  65. package/lib/engine/engine_physics_rapier.js.map +1 -1
  66. package/lib/engine/engine_shims.d.ts +1 -0
  67. package/lib/engine/engine_shims.js +20 -19
  68. package/lib/engine/engine_shims.js.map +1 -1
  69. package/lib/engine/engine_tonemapping.js +0 -1
  70. package/lib/engine/engine_tonemapping.js.map +1 -1
  71. package/lib/engine/engine_types.d.ts +8 -0
  72. package/lib/engine/engine_typestore.d.ts +11 -0
  73. package/lib/engine/engine_typestore.js +29 -0
  74. package/lib/engine/engine_typestore.js.map +1 -1
  75. package/lib/engine/extensions/NEEDLE_animator_controller_model.d.ts +1 -1
  76. package/lib/engine/js-extensions/Camera.d.ts +1 -1
  77. package/lib/engine/js-extensions/Camera.js +43 -37
  78. package/lib/engine/js-extensions/Camera.js.map +1 -1
  79. package/lib/engine/js-extensions/Layers.js +0 -1
  80. package/lib/engine/js-extensions/Layers.js.map +1 -1
  81. package/lib/engine/js-extensions/Object3D.d.ts +1 -0
  82. package/lib/engine/js-extensions/Object3D.js +173 -167
  83. package/lib/engine/js-extensions/Object3D.js.map +1 -1
  84. package/lib/engine/js-extensions/Vector.d.ts +1 -0
  85. package/lib/engine/js-extensions/Vector.js +10 -4
  86. package/lib/engine/js-extensions/Vector.js.map +1 -1
  87. package/lib/engine/js-extensions/index.d.ts +0 -3
  88. package/lib/engine/js-extensions/index.js +0 -2
  89. package/lib/engine/js-extensions/index.js.map +1 -1
  90. package/lib/engine/webcomponents/WebXRButtons.js +11 -13
  91. package/lib/engine/webcomponents/WebXRButtons.js.map +1 -1
  92. package/lib/engine/webcomponents/buttons.js +4 -4
  93. package/lib/engine/webcomponents/buttons.js.map +1 -1
  94. package/lib/engine/webcomponents/font-urls.d.ts +2 -0
  95. package/lib/engine/webcomponents/font-urls.js +8 -0
  96. package/lib/engine/webcomponents/font-urls.js.map +1 -0
  97. package/lib/engine/webcomponents/fonts.d.ts +2 -2
  98. package/lib/engine/webcomponents/fonts.js +12 -7
  99. package/lib/engine/webcomponents/fonts.js.map +1 -1
  100. package/lib/engine/webcomponents/init.d.ts +4 -0
  101. package/lib/engine/webcomponents/init.js +20 -0
  102. package/lib/engine/webcomponents/init.js.map +1 -0
  103. package/lib/engine/webcomponents/logo-element.js +2 -2
  104. package/lib/engine/webcomponents/logo-element.js.map +1 -1
  105. package/lib/engine/webcomponents/needle menu/menu-priority.d.ts +10 -0
  106. package/lib/engine/webcomponents/needle menu/menu-priority.js +21 -0
  107. package/lib/engine/webcomponents/needle menu/menu-priority.js.map +1 -0
  108. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.d.ts +1 -1
  109. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +1 -1
  110. package/lib/engine/webcomponents/needle menu/needle-menu.js +7 -11
  111. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  112. package/lib/engine/webcomponents/needle-button.js +0 -3
  113. package/lib/engine/webcomponents/needle-button.js.map +1 -1
  114. package/lib/engine/webcomponents/needle-engine.js +4 -10
  115. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  116. package/lib/engine/webcomponents/quicklook-handler.d.ts +29 -0
  117. package/lib/engine/webcomponents/quicklook-handler.js +21 -0
  118. package/lib/engine/webcomponents/quicklook-handler.js.map +1 -0
  119. package/lib/engine/xr/NeedleXRSession.d.ts +1 -0
  120. package/lib/engine/xr/NeedleXRSession.js +1 -0
  121. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  122. package/lib/engine-components/AnimationUtilsAutoplay.d.ts +1 -1
  123. package/lib/engine-components/AnimationUtilsAutoplay.js +29 -23
  124. package/lib/engine-components/AnimationUtilsAutoplay.js.map +1 -1
  125. package/lib/engine-components/Animator.d.ts +1 -1
  126. package/lib/engine-components/AnimatorController.d.ts +1 -1
  127. package/lib/engine-components/CameraUtils.d.ts +1 -1
  128. package/lib/engine-components/CameraUtils.js +79 -73
  129. package/lib/engine-components/CameraUtils.js.map +1 -1
  130. package/lib/engine-components/Collider.d.ts +2 -0
  131. package/lib/engine-components/Collider.js +25 -3
  132. package/lib/engine-components/Collider.js.map +1 -1
  133. package/lib/engine-components/LookAtConstraint.d.ts +34 -1
  134. package/lib/engine-components/LookAtConstraint.js +54 -1
  135. package/lib/engine-components/LookAtConstraint.js.map +1 -1
  136. package/lib/engine-components/Networking.d.ts +2 -1
  137. package/lib/engine-components/Networking.js +2 -1
  138. package/lib/engine-components/Networking.js.map +1 -1
  139. package/lib/engine-components/SceneSwitcher.d.ts +1 -0
  140. package/lib/engine-components/SceneSwitcher.js +3 -1
  141. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  142. package/lib/engine-components/Skybox.d.ts +1 -0
  143. package/lib/engine-components/Skybox.js +4 -2
  144. package/lib/engine-components/Skybox.js.map +1 -1
  145. package/lib/engine-components/SyncedRoom.d.ts +1 -0
  146. package/lib/engine-components/SyncedRoom.js +1 -0
  147. package/lib/engine-components/SyncedRoom.js.map +1 -1
  148. package/lib/engine-components/api.d.ts +5 -8
  149. package/lib/engine-components/api.js +4 -7
  150. package/lib/engine-components/api.js.map +1 -1
  151. package/lib/engine-components/export/usdz/USDZExporter.js +8 -0
  152. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  153. package/lib/engine-components/postprocessing/PostProcessingHandler.js +18 -5
  154. package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
  155. package/lib/engine-components/postprocessing/utils.js +7 -2
  156. package/lib/engine-components/postprocessing/utils.js.map +1 -1
  157. package/lib/engine-components/timeline/TimelineTracks.d.ts +1 -1
  158. package/lib/engine-components/timeline/TimelineTracks.js +4 -2
  159. package/lib/engine-components/timeline/TimelineTracks.js.map +1 -1
  160. package/lib/engine-components/web/ScrollFollow.d.ts +0 -8
  161. package/lib/engine-components/webxr/WebXR.d.ts +15 -2
  162. package/lib/engine-components/webxr/WebXR.js +15 -2
  163. package/lib/engine-components/webxr/WebXR.js.map +1 -1
  164. package/lib/needle-engine.d.ts +0 -1
  165. package/lib/needle-engine.js +2 -1
  166. package/lib/needle-engine.js.map +1 -1
  167. package/package.json +11 -3
  168. package/plugins/vite/ai.d.ts +11 -7
  169. package/plugins/vite/ai.js +21 -16
  170. package/plugins/vite/asap.js +42 -2
  171. package/plugins/vite/dependencies.js +110 -16
  172. package/plugins/vite/index.d.ts +1 -0
  173. package/plugins/vite/index.js +4 -0
  174. package/plugins/vite/treeshake.d.ts +11 -0
  175. package/plugins/vite/treeshake.js +216 -0
  176. package/src/engine/analytics/index.ts +1 -1
  177. package/src/engine/codegen/register_types.ts +159 -157
  178. package/src/engine/debug/debug.ts +1 -26
  179. package/src/engine/debug/debug_environment.ts +26 -0
  180. package/src/engine/debug/debug_overlay.ts +2 -1
  181. package/src/engine/debug/debug_spatial_console.ts +1 -1
  182. package/src/engine/engine_audio.ts +1 -2
  183. package/src/engine/engine_components.ts +6 -3
  184. package/src/engine/engine_gltf_builtin_components.ts +4 -5
  185. package/src/engine/engine_init.ts +45 -0
  186. package/src/engine/engine_loaders.ts +2 -1
  187. package/src/engine/engine_modules.ts +3 -0
  188. package/src/engine/engine_networking.ts +5 -1
  189. package/src/engine/engine_networking_blob.ts +3 -3
  190. package/src/engine/engine_networking_peer.ts +8 -6
  191. package/src/engine/engine_networking_streams.ts +4 -3
  192. package/src/engine/engine_physics_rapier.ts +37 -4
  193. package/src/engine/engine_shims.ts +22 -20
  194. package/src/engine/engine_tonemapping.ts +0 -1
  195. package/src/engine/engine_types.ts +9 -0
  196. package/src/engine/engine_typestore.ts +29 -0
  197. package/src/engine/extensions/NEEDLE_animator_controller_model.ts +1 -1
  198. package/src/engine/js-extensions/Camera.ts +40 -33
  199. package/src/engine/js-extensions/Layers.ts +1 -2
  200. package/src/engine/js-extensions/Object3D.ts +174 -170
  201. package/src/engine/js-extensions/Vector.ts +11 -4
  202. package/src/engine/js-extensions/index.ts +0 -3
  203. package/src/engine/webcomponents/WebXRButtons.ts +12 -13
  204. package/src/engine/webcomponents/buttons.ts +4 -4
  205. package/src/engine/webcomponents/font-urls.js +9 -0
  206. package/src/engine/webcomponents/fonts.ts +12 -7
  207. package/src/engine/webcomponents/init.ts +23 -0
  208. package/src/engine/webcomponents/logo-element.ts +2 -2
  209. package/src/engine/webcomponents/needle menu/menu-priority.ts +20 -0
  210. package/src/engine/webcomponents/needle menu/needle-menu.ts +8 -13
  211. package/src/engine/webcomponents/needle-button.ts +0 -3
  212. package/src/engine/webcomponents/needle-engine.ts +4 -13
  213. package/src/engine/webcomponents/quicklook-handler.ts +37 -0
  214. package/src/engine/xr/NeedleXRSession.ts +2 -1
  215. package/src/engine-components/AnimationUtilsAutoplay.ts +8 -3
  216. package/src/engine-components/AnimatorController.ts +1 -1
  217. package/src/engine-components/CameraUtils.ts +15 -8
  218. package/src/engine-components/Collider.ts +24 -3
  219. package/src/engine-components/LookAtConstraint.ts +46 -1
  220. package/src/engine-components/Networking.ts +3 -1
  221. package/src/engine-components/SceneSwitcher.ts +3 -1
  222. package/src/engine-components/Skybox.ts +4 -2
  223. package/src/engine-components/SyncedRoom.ts +2 -0
  224. package/src/engine-components/api.ts +5 -10
  225. package/src/engine-components/export/usdz/USDZExporter.ts +9 -0
  226. package/src/engine-components/postprocessing/PostProcessingHandler.ts +19 -7
  227. package/src/engine-components/postprocessing/utils.ts +7 -2
  228. package/src/engine-components/timeline/TimelineTracks.ts +6 -2
  229. package/src/engine-components/web/ScrollFollow.ts +0 -2
  230. package/src/engine-components/webxr/WebXR.ts +15 -2
  231. package/src/needle-engine.ts +2 -1
  232. package/dist/gltf-progressive-BBIL1q1j.umd.cjs +0 -4022
  233. package/dist/gltf-progressive-BbHl9z0v.js +0 -28272
  234. package/dist/gltf-progressive-Clq_N7Zx.min.js +0 -4022
  235. package/dist/gltf-progressive.worker-CCrD-Ycm.js +0 -3
  236. package/dist/needle-engine.bundle-CrqNZdEN.umd.cjs +0 -1657
  237. package/dist/needle-engine.bundle-DyVf6QdN.min.js +0 -1657
  238. package/dist/vendor-CipoooTV.umd.cjs +0 -1116
@@ -6,7 +6,7 @@ import { XRControllerModel } from "./controllers/XRControllerModel.js";
6
6
  import { XRControllerMovement } from "./controllers/XRControllerMovement.js";
7
7
  import { WebARSessionRoot } from "./WebARSessionRoot.js";
8
8
  /**
9
- * Use the WebXR component to enable VR and AR on **iOS and Android** in your scene. VisionOS support is also provided via QuickLook USDZ export.
9
+ * Use the [WebXR](https://engine.needle.tools/docs/api/WebXR) component to enable VR and AR on **iOS and Android** in your scene. VisionOS support is also provided via QuickLook USDZ export.
10
10
  *
11
11
  * The WebXR component is a simple to use wrapper around the {@link NeedleXRSession} API and adds some additional features like creating buttons for AR, VR, enabling default movement behaviour ({@link XRControllerMovement}) and controller rendering ({@link XRControllerModel}), as well as handling AR placement and Quicklook USDZ export.
12
12
  *
@@ -35,12 +35,25 @@ import { WebARSessionRoot } from "./WebARSessionRoot.js";
35
35
  * });
36
36
  * ```
37
37
  *
38
+ *
39
+ * @example Start AR session with placement reticle and touch to place and adjust the scene
40
+ * ```ts
41
+ * import { onStart, WebXR } from "@needle-tools/engine";
42
+ * onStart(context => {
43
+ * const webxr = context.scene.addComponent(WebXR);
44
+ * webxr.autoPlace = false; // disable auto placement, we want the user to tap to place the scene
45
+ * webxr.usePlacementReticle = true; // show the placement reticle to help the user find surfaces to place the scene
46
+ * webxr.usePlacementAdjustment = true; // allow the user to adjust the position, rotation and scale of the scene with touch after placing
47
+ * webxr.arScale = 2; // set the initial scale of the scene in AR. Larger values make the scene appear smaller in AR.
48
+ * webxr.enterAR(); // start AR session
49
+ * });
50
+ *
38
51
  * @summary WebXR Component for VR and AR support
39
52
  * @category XR
40
53
  * @group Components
41
54
  * @see {@link NeedleXRSession} for low-level XR API
42
55
  * @see {@link XRControllerMovement} for VR locomotion
43
- * @see {@link WebARSessionRoot} for AR session configuration
56
+ * @see {@link WebARSessionRoot} for AR session configuration and an AR content placement event
44
57
  * @see {@link Avatar} for networked user avatars
45
58
  * @see {@link screenshot2} for taking screenshots in XR (including AR camera feed compositing)
46
59
  * @link https://engine.needle.tools/docs/xr.html
@@ -26,7 +26,7 @@ import { XRState, XRStateFlag } from "./XRFlag.js";
26
26
  const debug = getParam("debugwebxr");
27
27
  const debugQuicklook = getParam("debugusdz");
28
28
  /**
29
- * Use the WebXR component to enable VR and AR on **iOS and Android** in your scene. VisionOS support is also provided via QuickLook USDZ export.
29
+ * Use the [WebXR](https://engine.needle.tools/docs/api/WebXR) component to enable VR and AR on **iOS and Android** in your scene. VisionOS support is also provided via QuickLook USDZ export.
30
30
  *
31
31
  * The WebXR component is a simple to use wrapper around the {@link NeedleXRSession} API and adds some additional features like creating buttons for AR, VR, enabling default movement behaviour ({@link XRControllerMovement}) and controller rendering ({@link XRControllerModel}), as well as handling AR placement and Quicklook USDZ export.
32
32
  *
@@ -55,12 +55,25 @@ const debugQuicklook = getParam("debugusdz");
55
55
  * });
56
56
  * ```
57
57
  *
58
+ *
59
+ * @example Start AR session with placement reticle and touch to place and adjust the scene
60
+ * ```ts
61
+ * import { onStart, WebXR } from "@needle-tools/engine";
62
+ * onStart(context => {
63
+ * const webxr = context.scene.addComponent(WebXR);
64
+ * webxr.autoPlace = false; // disable auto placement, we want the user to tap to place the scene
65
+ * webxr.usePlacementReticle = true; // show the placement reticle to help the user find surfaces to place the scene
66
+ * webxr.usePlacementAdjustment = true; // allow the user to adjust the position, rotation and scale of the scene with touch after placing
67
+ * webxr.arScale = 2; // set the initial scale of the scene in AR. Larger values make the scene appear smaller in AR.
68
+ * webxr.enterAR(); // start AR session
69
+ * });
70
+ *
58
71
  * @summary WebXR Component for VR and AR support
59
72
  * @category XR
60
73
  * @group Components
61
74
  * @see {@link NeedleXRSession} for low-level XR API
62
75
  * @see {@link XRControllerMovement} for VR locomotion
63
- * @see {@link WebARSessionRoot} for AR session configuration
76
+ * @see {@link WebARSessionRoot} for AR session configuration and an AR content placement event
64
77
  * @see {@link Avatar} for networked user avatars
65
78
  * @see {@link screenshot2} for taking screenshots in XR (including AR camera feed compositing)
66
79
  * @link https://engine.needle.tools/docs/xr.html
@@ -1 +1 @@
1
- {"version":3,"file":"WebXR.js","sourceRoot":"","sources":["../../../src/engine-components/webxr/WebXR.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebXR.js","sourceRoot":"","sources":["../../../src/engine-components/webxr/WebXR.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import "./engine/webcomponents/needle-engine.js";
2
2
  import "./engine/engine_setup.js";
3
- import "./engine/engine_audio.js";
4
3
  export * from "./engine/api.js";
5
4
  export * from "./engine-components/api.js";
6
5
  export * from "./engine-components-experimental/api.js";
@@ -1,6 +1,7 @@
1
+ import { initEngine } from "./engine/engine_init.js";
2
+ initEngine();
1
3
  import "./engine/webcomponents/needle-engine.js";
2
4
  import "./engine/engine_setup.js";
3
- import "./engine/engine_audio.js";
4
5
  export * from "./engine/api.js";
5
6
  export * from "./engine-components/api.js";
6
7
  export * from "./engine-components-experimental/api.js";
@@ -1 +1 @@
1
- {"version":3,"file":"needle-engine.js","sourceRoot":"","sources":["../src/needle-engine.ts"],"names":[],"mappings":"AAAA,OAAO,yCAAyC,CAAC;AACjD,OAAO,0BAA0B,CAAC;AAClC,OAAO,0BAA0B,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AAExC,0CAA0C;AAC1C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/K,MAAM,MAAM,GAAG;IACX,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,eAAe,EAAE,eAAe;IAChC,MAAM,EAAE;QACJ,WAAW,EAAE,SAAS;KACzB;IACD,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,QAAQ;IAClB,cAAc,EAAE,cAAc;IAC9B,aAAa,EAAE,aAAa;IAC5B,oBAAoB,EAAE,aAAa;IACnC,gBAAgB,EAAE,SAAS;IAC3B,cAAc,EAAE,OAAO;CACjB,CAAC;AAEX,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,sCAAsC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACvF,CAAC;AACD,SAAS,cAAc,CAAC,GAAW;IAC/B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;AACL,CAAC;AACD,OAAO,KAAK,SAAS,MAAM,kCAAkC,CAAC;AAC9D,cAAc,CAAC,SAAS,CAAC,CAAC;AAE1B,OAAO,KAAK,UAAU,MAAM,2CAA2C,CAAC;AACxE,cAAc,CAAC,UAAU,CAAC,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1D,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACP,SAAS;QACb;YACI,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM;IACd,CAAC;AACL,CAAC;AAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxB,UAAU,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAClC,CAAC;KACI,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC;AAGD,wBAAwB;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IACvB,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;AAChC,CAAC;;IACI,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC"}
1
+ {"version":3,"file":"needle-engine.js","sourceRoot":"","sources":["../src/needle-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,UAAU,EAAE,CAAC;AACb,OAAO,yCAAyC,CAAC;AACjD,OAAO,0BAA0B,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AAExC,0CAA0C;AAC1C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/K,MAAM,MAAM,GAAG;IACX,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,eAAe,EAAE,eAAe;IAChC,MAAM,EAAE;QACJ,WAAW,EAAE,SAAS;KACzB;IACD,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,QAAQ;IAClB,cAAc,EAAE,cAAc;IAC9B,aAAa,EAAE,aAAa;IAC5B,oBAAoB,EAAE,aAAa;IACnC,gBAAgB,EAAE,SAAS;IAC3B,cAAc,EAAE,OAAO;CACjB,CAAC;AAEX,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,sCAAsC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACvF,CAAC;AACD,SAAS,cAAc,CAAC,GAAW;IAC/B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;AACL,CAAC;AACD,OAAO,KAAK,SAAS,MAAM,kCAAkC,CAAC;AAC9D,cAAc,CAAC,SAAS,CAAC,CAAC;AAE1B,OAAO,KAAK,UAAU,MAAM,2CAA2C,CAAC;AACxE,cAAc,CAAC,UAAU,CAAC,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1D,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACP,SAAS;QACb;YACI,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM;IACd,CAAC;AACL,CAAC;AAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxB,UAAU,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAClC,CAAC;KACI,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC;AAGD,wBAAwB;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IACvB,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;AAChC,CAAC;;IACI,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-tools/engine",
3
- "version": "4.17.0-next.36dcae2",
3
+ "version": "4.17.0-next.4989636",
4
4
  "description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.",
5
5
  "main": "dist/needle-engine.min.js",
6
6
  "exports": {
@@ -54,6 +54,11 @@
54
54
  "url": "https://needle.tools/"
55
55
  },
56
56
  "readme": "README.md",
57
+ "sideEffects": [
58
+ "./lib/needle-engine.*",
59
+ "./src/needle-engine.*",
60
+ "*.css"
61
+ ],
57
62
  "scripts": {
58
63
  "dev": "npm-watch",
59
64
  "build": "npm run build:plugin-types && npm run build:src && npm run build:dist",
@@ -67,7 +72,7 @@
67
72
  "test:playwright:fast": "cd tests/playwright && npm install --prefer-offline && npx playwright install --with-deps chromium && npx playwright test --grep @fast",
68
73
  "test:playwright:report": "cd tests/playwright && npm install --prefer-offline && npx playwright install --with-deps chromium && npx playwright show-report",
69
74
  "test:circular-imports": "node plugins/test/check-circular-imports.mjs",
70
- "test:tsc": "tsc --strict false && tsc --strict true",
75
+ "test:tsc": "node plugins/test/test.tsc.mjs",
71
76
  "test:attw": "npx --yes @arethetypeswrong/cli --pack dist",
72
77
  "test:type-coverage:plugins": "node test/type-coverage.mjs plugins",
73
78
  "test:type-coverage:engine": "node test/type-coverage.mjs engine",
@@ -164,7 +169,7 @@
164
169
  "npm-watch": "^0.11.0",
165
170
  "rollup-plugin-visualizer": "^7.0.1",
166
171
  "ts-morph": "^27.0.2",
167
- "typescript": "^5.9.3",
172
+ "typescript": "5.9.3",
168
173
  "typescript-eslint": "^8.0.0",
169
174
  "vite": "7",
170
175
  "vite-plugin-dts": "^4.5.4"
@@ -172,6 +177,9 @@
172
177
  "peerDependencies": {
173
178
  "open": "^10.1.0"
174
179
  },
180
+ "overrides": {
181
+ "three": "$three"
182
+ },
175
183
  "watch": {
176
184
  "test:circular-imports": {
177
185
  "patterns": [
@@ -1,13 +1,17 @@
1
1
  /**
2
- * Needle Engine Claude skill installer.
2
+ * Needle Engine AI skill installer.
3
3
  *
4
- * Writes a Needle Engine skill to `.claude/skills/needle-engine/SKILL.md`.
5
- * Claude Code auto-loads skills based on their description frontmatter, so
6
- * Claude will automatically have Needle Engine context when working in the project.
4
+ * Writes a Needle Engine skill to `<dir>/skills/needle-engine/SKILL.md`
5
+ * for each supported AI agent directory (`.claude/`, `.github/`, `.agents/`).
6
+ * Both Claude Code and GitHub Copilot auto-load skills based on their
7
+ * description frontmatter, so the AI agent will automatically have Needle
8
+ * Engine context when working in the project.
7
9
  *
8
- * The skill is only written if `.claude/` already exists in the project root
9
- * (i.e. the developer is already using Claude Code). Old skill files are
10
- * always overwritten so the skill stays up to date with the engine version.
10
+ * The skill is only written if at least one of the supported directories
11
+ * already exists in the project root (i.e. the developer is already using
12
+ * an AI coding agent).
13
+ * Old skill files are always overwritten so the skill stays up to date with
14
+ * the engine version.
11
15
  *
12
16
  * @param {"build" | "serve"} command
13
17
  * @param {{} | undefined | null} config
@@ -9,15 +9,19 @@ const __dirname = dirname(__filename);
9
9
  const pluginName = "needle-ai";
10
10
 
11
11
  /**
12
- * Needle Engine Claude skill installer.
12
+ * Needle Engine AI skill installer.
13
13
  *
14
- * Writes a Needle Engine skill to `.claude/skills/needle-engine/SKILL.md`.
15
- * Claude Code auto-loads skills based on their description frontmatter, so
16
- * Claude will automatically have Needle Engine context when working in the project.
14
+ * Writes a Needle Engine skill to `<dir>/skills/needle-engine/SKILL.md`
15
+ * for each supported AI agent directory (`.claude/`, `.github/`, `.agents/`).
16
+ * Both Claude Code and GitHub Copilot auto-load skills based on their
17
+ * description frontmatter, so the AI agent will automatically have Needle
18
+ * Engine context when working in the project.
17
19
  *
18
- * The skill is only written if `.claude/` already exists in the project root
19
- * (i.e. the developer is already using Claude Code). Old skill files are
20
- * always overwritten so the skill stays up to date with the engine version.
20
+ * The skill is only written if at least one of the supported directories
21
+ * already exists in the project root (i.e. the developer is already using
22
+ * an AI coding agent).
23
+ * Old skill files are always overwritten so the skill stays up to date with
24
+ * the engine version.
21
25
  *
22
26
  * @param {"build" | "serve"} command
23
27
  * @param {{} | undefined | null} config
@@ -44,17 +48,18 @@ function writeSkill(claudeDir) {
44
48
  }
45
49
  const skillPath = join(skillDir, "SKILL.md");
46
50
  const templatePath = join(__dirname, "../../SKILL.md");
47
- if (existsSync(skillPath)) {
48
- const content = readFileSync(templatePath, "utf8");
49
- writeFileSync(skillPath, content, "utf8");
50
- return skillPath;
51
- }
51
+ const content = readFileSync(templatePath, "utf8");
52
+ writeFileSync(skillPath, content, "utf8");
53
+ return skillPath;
52
54
  }
53
55
 
54
56
  function installClaudeSkill() {
55
- const claudeDir = join(process.cwd(), ".claude");
56
- if (!existsSync(claudeDir)) return; // only install if developer uses Claude Code
57
+ const cwd = process.cwd();
58
+ const dirs = [".claude", ".github", ".agents"].map(d => join(cwd, d)).filter(d => existsSync(d));
59
+ if (dirs.length === 0) return; // only install if developer uses an AI coding agent
57
60
 
58
- const path = writeSkill(claudeDir);
59
- if (path) needleLog(`[${pluginName}] Installed Needle Engine Claude skill → ${path}`);
61
+ for (const dir of dirs) {
62
+ const path = writeSkill(dir);
63
+ if (path) needleLog(`[${pluginName}] Installed Needle Engine skill → ${path}`);
64
+ }
60
65
  }
@@ -4,6 +4,7 @@ import { tryParseNeedleEngineSrcAttributeFromHtml } from '../common/needle-engin
4
4
  import { preloadScriptPaths } from './dependencies.js';
5
5
  import { makeFilesLocalIsEnabled } from './local-files.js';
6
6
  import { needleLog } from './logging.js';
7
+ import { robotoFlexFontUrl, materialSymbolsFontUrl } from '../../src/engine/webcomponents/font-urls.js';
7
8
 
8
9
  const code = `import('@needle-tools/engine/src/asap/needle-asap.ts');`
9
10
 
@@ -56,7 +57,7 @@ export async function needleAsap(command, config, userSettings) {
56
57
  }
57
58
 
58
59
  if (!makeFilesLocalIsEnabled(userSettings)) {
59
- // preconnect to gstatic.com and fonts.googleapis.com to safe 100ms according to lighthouse
60
+ // preconnect to gstatic.com and fonts.googleapis.com to save 100ms according to lighthouse
60
61
  tags.push({
61
62
  tag: 'link',
62
63
  attrs: {
@@ -71,6 +72,44 @@ export async function needleAsap(command, config, userSettings) {
71
72
  href: "https://fonts.googleapis.com",
72
73
  }
73
74
  });
75
+ // preconnect to draco/ktx2 CDNs so decoder downloads start faster
76
+ tags.push({
77
+ tag: 'link',
78
+ attrs: {
79
+ rel: "preconnect",
80
+ href: "https://www.gstatic.com",
81
+ }
82
+ });
83
+ tags.push({
84
+ tag: 'link',
85
+ attrs: {
86
+ rel: "preconnect",
87
+ href: "https://cdn.needle.tools",
88
+ }
89
+ });
90
+ // Load Google Fonts without blocking render: use rel="preload" with
91
+ // onload swap to stylesheet. loadFont() in fonts.ts detects the existing
92
+ // link element and skips creating a duplicate.
93
+ tags.push({
94
+ tag: 'link',
95
+ attrs: {
96
+ rel: "preload",
97
+ as: "style",
98
+ href: robotoFlexFontUrl,
99
+ crossorigin: "",
100
+ onload: "this.rel='stylesheet'",
101
+ }
102
+ });
103
+ tags.push({
104
+ tag: 'link',
105
+ attrs: {
106
+ rel: "preload",
107
+ as: "style",
108
+ href: materialSymbolsFontUrl,
109
+ crossorigin: "",
110
+ onload: "this.rel='stylesheet'",
111
+ }
112
+ });
74
113
  }
75
114
 
76
115
  // we insert the logo late because the logo svg string is quite long
@@ -236,4 +275,5 @@ function insertPreloadLink(tags, href, type) {
236
275
  crossorigin: true,
237
276
  }
238
277
  });
239
- }
278
+ }
279
+
@@ -1,5 +1,5 @@
1
1
  import path from 'path';
2
- import { existsSync, readFileSync } from 'fs';
2
+ import { existsSync, readFileSync, readdirSync } from 'fs';
3
3
  import { tryGetNeedleEngineVersion, tryGetPackageVersion } from '../common/version.js';
4
4
  import { needleLog } from './logging.js';
5
5
 
@@ -67,6 +67,58 @@ export function needleDependencies(command, config, userSettings) {
67
67
  const excludeDependencies = [
68
68
  ]
69
69
 
70
+ /**
71
+ * Scans the engine source to find all `three/examples/jsm/...` module paths
72
+ * that are actually imported. Returns a regex matching those paths so they
73
+ * go into the core `three-examples` chunk. Anything else from three/examples
74
+ * that the engine doesn't use goes into `three-examples.extras`.
75
+ * @returns {RegExp}
76
+ */
77
+ function buildThreeExamplesCoreTest() {
78
+ /** @type {Set<string>} */
79
+ const modulePaths = new Set();
80
+ // Find the engine source directory relative to this plugin file
81
+ const srcDir = path.resolve(import.meta.dirname, '../../src');
82
+ if (!existsSync(srcDir)) {
83
+ needleLog('needle-dependencies', `Engine src not found at "${srcDir}" — using fallback regex`);
84
+ return /three\/(?:examples\/jsm|addons)\/(?:loaders|libs)\//;
85
+ }
86
+ scanDir(srcDir);
87
+
88
+ function scanDir(dir) {
89
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
90
+ if (entry.isDirectory()) {
91
+ scanDir(path.join(dir, entry.name));
92
+ }
93
+ else if (entry.name.endsWith('.ts')) {
94
+ try {
95
+ const content = readFileSync(path.join(dir, entry.name), 'utf8');
96
+ // Match: from "three/examples/jsm/..." or "three/addons/..." (skip type-only imports)
97
+ const re = /(?<!import\s+type\s[^;]*?)from\s+["']three\/(?:examples\/jsm|addons)\/([^"']+)["']/g;
98
+ let m;
99
+ while ((m = re.exec(content)) !== null) {
100
+ // Extract the directory part, e.g. "loaders/GLTFLoader.js" → "loaders"
101
+ const dir = m[1].split('/')[0];
102
+ modulePaths.add(dir);
103
+ }
104
+ }
105
+ catch { /* skip unreadable files */ }
106
+ }
107
+ }
108
+ }
109
+
110
+ if (modulePaths.size === 0) {
111
+ return /three\/(?:examples\/jsm|addons)\/(?:loaders|libs)\//;
112
+ }
113
+
114
+ // Build regex: three/(examples/jsm|addons)/(loaders|libs|controls|...)/
115
+ const dirs = [...modulePaths].sort();
116
+ needleLog('needle-dependencies', `three-examples core dirs: ${dirs.join(', ')}`);
117
+ const dirsPattern = dirs.join('|');
118
+ const pattern = `three\\/(?:examples\\/jsm|addons)\\/(?:${dirsPattern})\\/`;
119
+ return new RegExp(pattern);
120
+ }
121
+
70
122
  /**
71
123
  * @param {import('vite').UserConfig} config
72
124
  */
@@ -122,10 +174,14 @@ function handleOptimizeDeps(config) {
122
174
  /**
123
175
  * @param {import('vite').UserConfig} config
124
176
  */
177
+ /** @type {RegExp} */
178
+ let threeExamplesCoreRegex;
179
+
125
180
  function handleManualChunks(config) {
126
181
  if (!config.build) {
127
182
  config.build = {};
128
183
  }
184
+ threeExamplesCoreRegex = buildThreeExamplesCoreTest();
129
185
  // Support both rolldownOptions (Vite 8+) and rollupOptions (Vite 7 and earlier)
130
186
  const optionsKey = 'rolldownOptions' in (config.build) ? 'rolldownOptions' : 'rollupOptions';
131
187
  if (!config.build[optionsKey]) {
@@ -187,18 +243,39 @@ function handleManualChunks(config) {
187
243
  rollupOutput.codeSplitting = {
188
244
  groups: [
189
245
  { name: 'three', test: /\/three\/(?:build|src)\//, priority: 100 },
190
- { name: 'three-examples', test: /three\/examples/, priority: 90 },
246
+ // three/examples modules used by the engine go into the core chunk.
247
+ // Anything else (user-installed three/examples) goes into extras.
248
+ { name: 'three-examples', test: threeExamplesCoreRegex, priority: 95 },
249
+ { name: 'three-examples.extras', test: /three\/(?:examples|addons)/, priority: 90 },
191
250
  { name: 'three-mesh-bvh', test: /three-mesh-bvh/, priority: 60 },
192
- { name: 'three-animation-pointer', test: /three-animation-pointer/, priority: 60 },
251
+ // postprocessing must have higher priority than n8ao so n8ao's
252
+ // recursive deps (postprocessing library) don't get merged into the n8ao chunk
253
+ { name: 'postprocessing', test: /node_modules\/postprocessing\//, priority: 55 },
193
254
  { name: 'postprocessing.ao', test: /node_modules\/n8ao\//, priority: 50 },
194
- { name: 'postprocessing', test: /node_modules\/postprocessing\//, priority: 50 },
195
255
  { name: 'rapier3d', test: /@dimforge\/rapier3d/, priority: 50 },
196
256
  { name: 'materialx', test: /@needle-tools\/materialx/, priority: 50 },
197
257
  { name: 'three-mesh-ui', test: /node_modules\/three-mesh-ui/, priority: 50 },
198
258
  { name: 'three-quarks', test: /node_modules\/three\.quarks/, priority: 50 },
199
- { name: 'websocket-ts', test: /node_modules\/websocket-ts/, priority: 50 },
200
259
  { name: 'peerjs', test: /node_modules\/peerjs/, priority: 50 },
201
260
  { name: 'gltf-progressive', test: /\/gltf-progressive\//, priority: 40 },
261
+ // Independently skippable feature groups — only features large enough
262
+ // to justify a separate chunk (>50 KB). Smaller features merge into
263
+ // the main needle-engine chunk to reduce HTTP requests.
264
+ { name: 'needle-engine-ui', test: /engine-components\/ui\//, priority: 35 },
265
+ { name: 'needle-engine-webxr', test: /engine-components\/(webxr|avatar)\//, priority: 35 },
266
+ { name: 'needle-engine-particles', test: /engine-components\/particlesystem\//, priority: 35 },
267
+ // Postprocessing effects — separate so n8ao isn't eagerly loaded
268
+ { name: 'needle-engine.extras', test: /engine-components\/postprocessing\//, priority: 35 },
269
+ // Small 3rd-party deps used by the engine — merge into needle-engine
270
+ // to avoid tiny unnamed chunks.
271
+ { name: 'needle-engine', test: /node_modules\/websocket-ts\//, priority: 35 },
272
+ { name: 'needle-engine', test: /three-animation-pointer/, priority: 35 },
273
+ // register_types (codegen) must stay separate from lazy component code
274
+ // to preserve dynamic import() boundaries created by the treeshake plugin.
275
+ { name: 'register_types', test: /codegen\/register_types/, priority: 32 },
276
+ // Everything else (export, timeline, splines, web,
277
+ // physics, debug, utils, experimental) merges into the main
278
+ // needle-engine chunk.
202
279
  { name: 'needle-engine', test: /@needle-tools\/engine/, priority: 30 },
203
280
  ]
204
281
  };
@@ -243,17 +320,20 @@ function handleManualChunks(config) {
243
320
  return `assets/[name].[hash][extname]`;
244
321
  }
245
322
 
323
+ let needleEngineVersionedNameUsed = false;
324
+
246
325
  /** @param {import("vite").Rollup.PreRenderedChunk} chunk */
247
326
  function handleChunkFileNames(chunk) {
248
327
  if (chunk.name === 'needle-engine') {
249
328
  try {
250
329
  const version = tryGetNeedleEngineVersion();
251
- if (version) {
330
+ if (version && !needleEngineVersionedNameUsed) {
252
331
  // Rolldown codeSplitting can create multiple chunks with the same name.
253
- // Only the primary chunk (with actual module content) gets the versioned name.
254
- // Secondary chunks (small re-export wrappers) get a hash-based name.
255
- const moduleCount = chunk.moduleIds?.length ?? Object.keys(chunk.modules ?? {}).length;
256
- if (moduleCount > 1) {
332
+ // Only assign the versioned name once to the chunk with the most exports
333
+ // (the primary chunk). Additional same-named chunks get hash-based names.
334
+ const exportCount = chunk.exports?.length ?? 0;
335
+ if (exportCount > 10) {
336
+ needleEngineVersionedNameUsed = true;
257
337
  const name = `assets/needle-engine@${version}.js`;
258
338
  preloadScriptPaths.push(`./${name}`);
259
339
  return name;
@@ -264,15 +344,15 @@ function handleManualChunks(config) {
264
344
  needleLog("needle-dependencies", "Error reading version " + e, "warn");
265
345
  }
266
346
  }
267
- else if (chunk.name === 'three' || chunk.name === 'three-examples') {
347
+ else if (chunk.name === 'three' || chunk.name === 'three-examples' || chunk.name === 'three-examples.extras') {
268
348
  // 'three' may be aliased to @needle-tools/three — check both package locations
269
349
  const version = tryGetPackageVersion("three") ?? tryGetPackageVersion("@needle-tools/three");
270
350
  const name = version
271
351
  ? `assets/${chunk.name}@${version}.js`
272
352
  : `assets/${chunk.name}.js`;
273
- // Only eagerly preload three (the core math/scene-graph lib).
274
- // three-examples (OrbitControls, loaders, etc.) is loaded on-demand — don't preload it.
275
- if (chunk.name === 'three') {
353
+ // Preload three core and three-examples (loaders/libs) both are always
354
+ // needed. three-examples.extras is NOT preloaded (feature-specific).
355
+ if (chunk.name !== 'three-examples.extras') {
276
356
  preloadScriptPaths.push(`./${name}`);
277
357
  }
278
358
  return name;
@@ -284,6 +364,17 @@ function handleManualChunks(config) {
284
364
  // // we don't want to add a hash here to be able to easily import the main script
285
365
  // return `index.js`;
286
366
  // }
367
+ // Rename stray chunks that Rolldown extracted from dynamic import boundaries.
368
+ // These get arbitrary names (e.g. "ScrollFollow", "src") but belong to engine deps.
369
+ const ids = chunk.moduleIds ?? Object.keys(chunk.modules ?? {});
370
+ if (ids.some(id => /engine-components/.test(id)) && !chunk.name.startsWith('needle-engine')) {
371
+ return `assets/needle-engine.extras.[hash].js`;
372
+ }
373
+ // Rename generic "src" or "build" chunks — these are tiny re-export shims
374
+ // Rolldown creates at dynamic import() boundaries. Give them a clearer name.
375
+ if (chunk.name === 'src' || chunk.name === 'build') {
376
+ return `assets/needle-engine.dep.[hash].js`;
377
+ }
287
378
  return `assets/[name].[hash].js`;
288
379
  }
289
380
 
@@ -295,8 +386,11 @@ function handleManualChunks(config) {
295
386
 
296
387
  // console.log(id);
297
388
 
298
- if (id.includes("three/examples")) {
299
- return "three-examples";
389
+ if (id.includes("three/examples") || id.includes("three/addons")) {
390
+ if (threeExamplesCoreRegex?.test(id)) {
391
+ return "three-examples";
392
+ }
393
+ return "three-examples.extras";
300
394
  }
301
395
  if (id.includes('/three/')) {
302
396
  return "three";
@@ -40,6 +40,7 @@ export { needleCopyFiles } from "./copyfiles.js";
40
40
  export { needleViteAlias } from "./alias.js";
41
41
  export { needleCustomElementData } from "./custom-element-data.js";
42
42
  export { needleTransformCodegen } from "./transform-codegen.js";
43
+ export { needleTreeshake } from "./treeshake.js";
43
44
  export { needleLicense } from "./license.js";
44
45
  export { needlePeerjs } from "./peer.js";
45
46
  export { needleDependencyWatcher } from "./dependency-watcher.js";
@@ -43,6 +43,9 @@ export { needleCustomElementData } from './custom-element-data.js';
43
43
  import { needleTransformCodegen } from "./transform-codegen.js";
44
44
  export { needleTransformCodegen } from "./transform-codegen.js";
45
45
 
46
+ import { needleTreeshake } from "./treeshake.js";
47
+ export { needleTreeshake } from "./treeshake.js";
48
+
46
49
  import { needleLicense } from "./license.js";
47
50
  export { needleLicense } from "./license.js";
48
51
 
@@ -137,6 +140,7 @@ export async function needlePlugins(command, config = undefined, userSettings =
137
140
  needleBuild(command, config, userSettings),
138
141
  needleCopyFiles(command, config, userSettings),
139
142
  needleTransformCodegen(command, config, userSettings),
143
+ needleTreeshake(command, config, userSettings),
140
144
  needleTransformCode(command, config, userSettings),
141
145
  needleDrop(command, config, userSettings),
142
146
  needlePeerjs(command, config, userSettings),
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Scans local GLB/glTF files to determine which engine components are actually used,
3
+ * then rewrites the engine's `codegen/register_types.ts` so that unused components
4
+ * are registered lazily via `TypeStore.addLazy()` instead of eagerly imported.
5
+ *
6
+ * @param {"build" | "serve"} command
7
+ * @param {import('../types/needleConfig').needleMeta | null | undefined} config
8
+ * @param {import('../types').userSettings} userSettings
9
+ * @returns {import('vite').Plugin | undefined}
10
+ */
11
+ export function needleTreeshake(command: "build" | "serve", config: import("../types/needleConfig").needleMeta | null | undefined, userSettings: import("../types").userSettings): import("vite").Plugin | undefined;