@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.
- package/components.needle.json +1 -1
- package/dist/gltf-progressive-BryRjllq.min.js +10 -0
- package/dist/gltf-progressive-Cl167Vjx.js +1537 -0
- package/dist/gltf-progressive-DJBMx-zB.umd.cjs +10 -0
- package/dist/gltf-progressive.worker-BqODMeeW.js +23 -0
- package/dist/needle-engine.bundle-BTIpdDE9.umd.cjs +1654 -0
- package/dist/{needle-engine.bundle-CQFEuAQB.js → needle-engine.bundle-CH2ZOagS.js} +35829 -35882
- package/dist/needle-engine.bundle-D5h7xxUH.min.js +1654 -0
- package/dist/needle-engine.d.ts +105 -39
- package/dist/needle-engine.js +608 -607
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/three-examples.js +7815 -6828
- package/dist/three-examples.min.js +17 -15
- package/dist/three-examples.umd.cjs +17 -15
- package/dist/three.js +15994 -24892
- package/dist/three.min.js +214 -214
- package/dist/three.umd.cjs +208 -208
- package/dist/vendor-CntUvmJu.umd.cjs +1116 -0
- package/dist/{vendor-BPp9F5vR.min.js → vendor-DPbfJJ4d.min.js} +94 -94
- package/dist/{vendor-CQMI3jTS.js → vendor-vHLk8sXu.js} +8558 -8516
- package/lib/engine/analytics/index.js.map +1 -1
- package/lib/engine/codegen/register_types.d.ts +1 -1
- package/lib/engine/codegen/register_types.js +159 -157
- package/lib/engine/codegen/register_types.js.map +1 -1
- package/lib/engine/debug/debug.d.ts +1 -4
- package/lib/engine/debug/debug.js +1 -25
- package/lib/engine/debug/debug.js.map +1 -1
- package/lib/engine/debug/debug_environment.d.ts +4 -0
- package/lib/engine/debug/debug_environment.js +26 -0
- package/lib/engine/debug/debug_environment.js.map +1 -0
- package/lib/engine/debug/debug_overlay.js +2 -1
- package/lib/engine/debug/debug_overlay.js.map +1 -1
- package/lib/engine/debug/debug_spatial_console.js +1 -1
- package/lib/engine/debug/debug_spatial_console.js.map +1 -1
- package/lib/engine/engine_audio.js +0 -1
- package/lib/engine/engine_audio.js.map +1 -1
- package/lib/engine/engine_components.js +6 -3
- package/lib/engine/engine_components.js.map +1 -1
- package/lib/engine/engine_gltf_builtin_components.d.ts +0 -1
- package/lib/engine/engine_gltf_builtin_components.js +5 -4
- package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
- package/lib/engine/engine_init.d.ts +10 -0
- package/lib/engine/engine_init.js +44 -0
- package/lib/engine/engine_init.js.map +1 -0
- package/lib/engine/engine_loaders.d.ts +2 -0
- package/lib/engine/engine_loaders.js +2 -1
- package/lib/engine/engine_loaders.js.map +1 -1
- package/lib/engine/engine_modules.d.ts +8 -0
- package/lib/engine/engine_modules.js +1 -0
- package/lib/engine/engine_modules.js.map +1 -1
- package/lib/engine/engine_networking.d.ts +2 -1
- package/lib/engine/engine_networking.js +3 -1
- package/lib/engine/engine_networking.js.map +1 -1
- package/lib/engine/engine_networking_blob.js +3 -3
- package/lib/engine/engine_networking_blob.js.map +1 -1
- package/lib/engine/engine_networking_peer.d.ts +2 -2
- package/lib/engine/engine_networking_peer.js +7 -6
- package/lib/engine/engine_networking_peer.js.map +1 -1
- package/lib/engine/engine_networking_streams.d.ts +2 -1
- package/lib/engine/engine_networking_streams.js +2 -2
- package/lib/engine/engine_networking_streams.js.map +1 -1
- package/lib/engine/engine_physics_rapier.d.ts +2 -0
- package/lib/engine/engine_physics_rapier.js +35 -4
- package/lib/engine/engine_physics_rapier.js.map +1 -1
- package/lib/engine/engine_shims.d.ts +1 -0
- package/lib/engine/engine_shims.js +20 -19
- package/lib/engine/engine_shims.js.map +1 -1
- package/lib/engine/engine_tonemapping.js +0 -1
- package/lib/engine/engine_tonemapping.js.map +1 -1
- package/lib/engine/engine_types.d.ts +8 -0
- package/lib/engine/engine_typestore.d.ts +11 -0
- package/lib/engine/engine_typestore.js +29 -0
- package/lib/engine/engine_typestore.js.map +1 -1
- package/lib/engine/extensions/NEEDLE_animator_controller_model.d.ts +1 -1
- package/lib/engine/js-extensions/Camera.d.ts +1 -1
- package/lib/engine/js-extensions/Camera.js +43 -37
- package/lib/engine/js-extensions/Camera.js.map +1 -1
- package/lib/engine/js-extensions/Layers.js +0 -1
- package/lib/engine/js-extensions/Layers.js.map +1 -1
- package/lib/engine/js-extensions/Object3D.d.ts +1 -0
- package/lib/engine/js-extensions/Object3D.js +173 -167
- package/lib/engine/js-extensions/Object3D.js.map +1 -1
- package/lib/engine/js-extensions/Vector.d.ts +1 -0
- package/lib/engine/js-extensions/Vector.js +10 -4
- package/lib/engine/js-extensions/Vector.js.map +1 -1
- package/lib/engine/js-extensions/index.d.ts +0 -3
- package/lib/engine/js-extensions/index.js +0 -2
- package/lib/engine/js-extensions/index.js.map +1 -1
- package/lib/engine/webcomponents/WebXRButtons.js +11 -13
- package/lib/engine/webcomponents/WebXRButtons.js.map +1 -1
- package/lib/engine/webcomponents/buttons.js +4 -4
- package/lib/engine/webcomponents/buttons.js.map +1 -1
- package/lib/engine/webcomponents/font-urls.d.ts +2 -0
- package/lib/engine/webcomponents/font-urls.js +8 -0
- package/lib/engine/webcomponents/font-urls.js.map +1 -0
- package/lib/engine/webcomponents/fonts.d.ts +2 -2
- package/lib/engine/webcomponents/fonts.js +12 -7
- package/lib/engine/webcomponents/fonts.js.map +1 -1
- package/lib/engine/webcomponents/init.d.ts +4 -0
- package/lib/engine/webcomponents/init.js +20 -0
- package/lib/engine/webcomponents/init.js.map +1 -0
- package/lib/engine/webcomponents/logo-element.js +2 -2
- package/lib/engine/webcomponents/logo-element.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/menu-priority.d.ts +10 -0
- package/lib/engine/webcomponents/needle menu/menu-priority.js +21 -0
- package/lib/engine/webcomponents/needle menu/menu-priority.js.map +1 -0
- package/lib/engine/webcomponents/needle menu/needle-menu-spatial.d.ts +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.js +7 -11
- package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
- package/lib/engine/webcomponents/needle-button.js +0 -3
- package/lib/engine/webcomponents/needle-button.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.js +4 -10
- package/lib/engine/webcomponents/needle-engine.js.map +1 -1
- package/lib/engine/webcomponents/quicklook-handler.d.ts +29 -0
- package/lib/engine/webcomponents/quicklook-handler.js +21 -0
- package/lib/engine/webcomponents/quicklook-handler.js.map +1 -0
- package/lib/engine/xr/NeedleXRSession.d.ts +1 -0
- package/lib/engine/xr/NeedleXRSession.js +1 -0
- package/lib/engine/xr/NeedleXRSession.js.map +1 -1
- package/lib/engine-components/AnimationUtilsAutoplay.d.ts +1 -1
- package/lib/engine-components/AnimationUtilsAutoplay.js +29 -23
- package/lib/engine-components/AnimationUtilsAutoplay.js.map +1 -1
- package/lib/engine-components/Animator.d.ts +1 -1
- package/lib/engine-components/AnimatorController.d.ts +1 -1
- package/lib/engine-components/CameraUtils.d.ts +1 -1
- package/lib/engine-components/CameraUtils.js +79 -73
- package/lib/engine-components/CameraUtils.js.map +1 -1
- package/lib/engine-components/Collider.d.ts +2 -0
- package/lib/engine-components/Collider.js +25 -3
- package/lib/engine-components/Collider.js.map +1 -1
- package/lib/engine-components/LookAtConstraint.d.ts +34 -1
- package/lib/engine-components/LookAtConstraint.js +54 -1
- package/lib/engine-components/LookAtConstraint.js.map +1 -1
- package/lib/engine-components/Networking.d.ts +2 -1
- package/lib/engine-components/Networking.js +2 -1
- package/lib/engine-components/Networking.js.map +1 -1
- package/lib/engine-components/SceneSwitcher.d.ts +1 -0
- package/lib/engine-components/SceneSwitcher.js +3 -1
- package/lib/engine-components/SceneSwitcher.js.map +1 -1
- package/lib/engine-components/Skybox.d.ts +1 -0
- package/lib/engine-components/Skybox.js +4 -2
- package/lib/engine-components/Skybox.js.map +1 -1
- package/lib/engine-components/SyncedRoom.d.ts +1 -0
- package/lib/engine-components/SyncedRoom.js +1 -0
- package/lib/engine-components/SyncedRoom.js.map +1 -1
- package/lib/engine-components/api.d.ts +5 -8
- package/lib/engine-components/api.js +4 -7
- package/lib/engine-components/api.js.map +1 -1
- package/lib/engine-components/export/usdz/USDZExporter.js +8 -0
- package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
- package/lib/engine-components/postprocessing/PostProcessingHandler.js +18 -5
- package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
- package/lib/engine-components/postprocessing/utils.js +7 -2
- package/lib/engine-components/postprocessing/utils.js.map +1 -1
- package/lib/engine-components/timeline/TimelineTracks.d.ts +1 -1
- package/lib/engine-components/timeline/TimelineTracks.js +4 -2
- package/lib/engine-components/timeline/TimelineTracks.js.map +1 -1
- package/lib/engine-components/web/ScrollFollow.d.ts +0 -8
- package/lib/engine-components/webxr/WebXR.d.ts +15 -2
- package/lib/engine-components/webxr/WebXR.js +15 -2
- package/lib/engine-components/webxr/WebXR.js.map +1 -1
- package/lib/needle-engine.d.ts +0 -1
- package/lib/needle-engine.js +2 -1
- package/lib/needle-engine.js.map +1 -1
- package/package.json +11 -3
- package/plugins/vite/ai.d.ts +11 -7
- package/plugins/vite/ai.js +21 -16
- package/plugins/vite/asap.js +42 -2
- package/plugins/vite/dependencies.js +110 -16
- package/plugins/vite/index.d.ts +1 -0
- package/plugins/vite/index.js +4 -0
- package/plugins/vite/treeshake.d.ts +11 -0
- package/plugins/vite/treeshake.js +216 -0
- package/src/engine/analytics/index.ts +1 -1
- package/src/engine/codegen/register_types.ts +159 -157
- package/src/engine/debug/debug.ts +1 -26
- package/src/engine/debug/debug_environment.ts +26 -0
- package/src/engine/debug/debug_overlay.ts +2 -1
- package/src/engine/debug/debug_spatial_console.ts +1 -1
- package/src/engine/engine_audio.ts +1 -2
- package/src/engine/engine_components.ts +6 -3
- package/src/engine/engine_gltf_builtin_components.ts +4 -5
- package/src/engine/engine_init.ts +45 -0
- package/src/engine/engine_loaders.ts +2 -1
- package/src/engine/engine_modules.ts +3 -0
- package/src/engine/engine_networking.ts +5 -1
- package/src/engine/engine_networking_blob.ts +3 -3
- package/src/engine/engine_networking_peer.ts +8 -6
- package/src/engine/engine_networking_streams.ts +4 -3
- package/src/engine/engine_physics_rapier.ts +37 -4
- package/src/engine/engine_shims.ts +22 -20
- package/src/engine/engine_tonemapping.ts +0 -1
- package/src/engine/engine_types.ts +9 -0
- package/src/engine/engine_typestore.ts +29 -0
- package/src/engine/extensions/NEEDLE_animator_controller_model.ts +1 -1
- package/src/engine/js-extensions/Camera.ts +40 -33
- package/src/engine/js-extensions/Layers.ts +1 -2
- package/src/engine/js-extensions/Object3D.ts +174 -170
- package/src/engine/js-extensions/Vector.ts +11 -4
- package/src/engine/js-extensions/index.ts +0 -3
- package/src/engine/webcomponents/WebXRButtons.ts +12 -13
- package/src/engine/webcomponents/buttons.ts +4 -4
- package/src/engine/webcomponents/font-urls.js +9 -0
- package/src/engine/webcomponents/fonts.ts +12 -7
- package/src/engine/webcomponents/init.ts +23 -0
- package/src/engine/webcomponents/logo-element.ts +2 -2
- package/src/engine/webcomponents/needle menu/menu-priority.ts +20 -0
- package/src/engine/webcomponents/needle menu/needle-menu.ts +8 -13
- package/src/engine/webcomponents/needle-button.ts +0 -3
- package/src/engine/webcomponents/needle-engine.ts +4 -13
- package/src/engine/webcomponents/quicklook-handler.ts +37 -0
- package/src/engine/xr/NeedleXRSession.ts +2 -1
- package/src/engine-components/AnimationUtilsAutoplay.ts +8 -3
- package/src/engine-components/AnimatorController.ts +1 -1
- package/src/engine-components/CameraUtils.ts +15 -8
- package/src/engine-components/Collider.ts +24 -3
- package/src/engine-components/LookAtConstraint.ts +46 -1
- package/src/engine-components/Networking.ts +3 -1
- package/src/engine-components/SceneSwitcher.ts +3 -1
- package/src/engine-components/Skybox.ts +4 -2
- package/src/engine-components/SyncedRoom.ts +2 -0
- package/src/engine-components/api.ts +5 -10
- package/src/engine-components/export/usdz/USDZExporter.ts +9 -0
- package/src/engine-components/postprocessing/PostProcessingHandler.ts +19 -7
- package/src/engine-components/postprocessing/utils.ts +7 -2
- package/src/engine-components/timeline/TimelineTracks.ts +6 -2
- package/src/engine-components/web/ScrollFollow.ts +0 -2
- package/src/engine-components/webxr/WebXR.ts +15 -2
- package/src/needle-engine.ts +2 -1
- package/dist/gltf-progressive-BBIL1q1j.umd.cjs +0 -4022
- package/dist/gltf-progressive-BbHl9z0v.js +0 -28272
- package/dist/gltf-progressive-Clq_N7Zx.min.js +0 -4022
- package/dist/gltf-progressive.worker-CCrD-Ycm.js +0 -3
- package/dist/needle-engine.bundle-CrqNZdEN.umd.cjs +0 -1657
- package/dist/needle-engine.bundle-DyVf6QdN.min.js +0 -1657
- 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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"}
|
package/lib/needle-engine.d.ts
CHANGED
package/lib/needle-engine.js
CHANGED
|
@@ -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";
|
package/lib/needle-engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"needle-engine.js","sourceRoot":"","sources":["../src/needle-engine.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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.
|
|
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": "
|
|
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": "
|
|
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": [
|
package/plugins/vite/ai.d.ts
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Needle Engine
|
|
2
|
+
* Needle Engine AI skill installer.
|
|
3
3
|
*
|
|
4
|
-
* Writes a Needle Engine skill to
|
|
5
|
-
*
|
|
6
|
-
* Claude
|
|
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
|
|
9
|
-
* (i.e. the developer is already using
|
|
10
|
-
*
|
|
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
|
package/plugins/vite/ai.js
CHANGED
|
@@ -9,15 +9,19 @@ const __dirname = dirname(__filename);
|
|
|
9
9
|
const pluginName = "needle-ai";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* Needle Engine
|
|
12
|
+
* Needle Engine AI skill installer.
|
|
13
13
|
*
|
|
14
|
-
* Writes a Needle Engine skill to
|
|
15
|
-
*
|
|
16
|
-
* Claude
|
|
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
|
|
19
|
-
* (i.e. the developer is already using
|
|
20
|
-
*
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
|
56
|
-
|
|
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
|
|
59
|
-
|
|
61
|
+
for (const dir of dirs) {
|
|
62
|
+
const path = writeSkill(dir);
|
|
63
|
+
if (path) needleLog(`[${pluginName}] Installed Needle Engine skill → ${path}`);
|
|
64
|
+
}
|
|
60
65
|
}
|
package/plugins/vite/asap.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
254
|
-
//
|
|
255
|
-
const
|
|
256
|
-
if (
|
|
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
|
-
//
|
|
274
|
-
// three-examples
|
|
275
|
-
if (chunk.name
|
|
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
|
-
|
|
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";
|
package/plugins/vite/index.d.ts
CHANGED
|
@@ -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";
|
package/plugins/vite/index.js
CHANGED
|
@@ -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;
|