@needle-tools/engine 4.7.2-alpha → 4.7.2-next.0e4e068
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/CHANGELOG.md +3782 -3782
- package/LICENSE.md +10 -10
- package/README.md +64 -64
- package/components.needle.json +1 -1
- package/dist/generateMeshBVH.worker-BaNp_Xtp.js +25 -0
- package/dist/gltf-progressive-CNdBjvz6.js +1145 -0
- package/dist/gltf-progressive-C_oN6wCA.umd.cjs +8 -0
- package/dist/gltf-progressive-MgWOszRl.min.js +8 -0
- package/dist/{needle-engine.bundle-BhDF-YSv.min.js → needle-engine.bundle-B1OlKJHF.min.js} +108 -107
- package/dist/{needle-engine.bundle-gp00DTS4.js → needle-engine.bundle-Bwsx9VYm.js} +2077 -2061
- package/dist/{needle-engine.bundle-D2myV4E4.umd.cjs → needle-engine.bundle-Cd6HpRz5.umd.cjs} +99 -98
- package/dist/needle-engine.d.ts +130 -129
- package/dist/needle-engine.js +4 -4
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/{postprocessing-8AQTeZsr.umd.cjs → postprocessing-CjW23fio.umd.cjs} +2 -2
- package/dist/{postprocessing-BkxN_08g.js → postprocessing-DYLNOL3W.js} +3 -3
- package/dist/{postprocessing-BDScN9yu.min.js → postprocessing-xYQWCHFu.min.js} +2 -2
- package/dist/{three-DMrv-4ar.umd.cjs → three-B_hneGZr.umd.cjs} +4 -4
- package/dist/{three-Bz6X1mrw.js → three-DrqIzZTH.js} +4198 -4198
- package/dist/{three-Boa-jOq-.min.js → three-DuDKwKB8.min.js} +33 -33
- package/dist/{three-examples-GggCDHv0.js → three-examples-B50TT3Iu.js} +5 -5
- package/dist/{three-examples-DuVhxqft.min.js → three-examples-DaDLBuy6.min.js} +14 -14
- package/dist/{three-examples-C7ryg8vN.umd.cjs → three-examples-X3OadjXB.umd.cjs} +3 -3
- package/dist/{three-mesh-ui-CY6Izc7C.min.js → three-mesh-ui-B3p3gyUz.min.js} +1 -1
- package/dist/{three-mesh-ui-CwlN0FUC.umd.cjs → three-mesh-ui-CQiIQIlA.umd.cjs} +1 -1
- package/dist/{three-mesh-ui-CLNOfsWn.js → three-mesh-ui-CxuWt7m-.js} +1 -1
- package/dist/{vendor-zxXa3Dmr.min.js → vendor-BlSxe9JJ.min.js} +3 -3
- package/dist/{vendor-BSD1RQIh.js → vendor-BmYIgaS1.js} +3 -3
- package/dist/{vendor-DHr4aqIZ.umd.cjs → vendor-Cavtu3CP.umd.cjs} +3 -3
- package/lib/asap/needle-asap.d.ts +1 -1
- package/lib/asap/needle-asap.js +95 -95
- package/lib/asap/sessiongranted.d.ts +3 -3
- package/lib/asap/sessiongranted.js +65 -65
- package/lib/asap/utils.d.ts +1 -1
- package/lib/asap/utils.js +3 -3
- package/lib/engine/analytics/index.d.ts +6 -6
- package/lib/engine/analytics/index.js +12 -12
- package/lib/engine/analytics/lcp.d.ts +3 -3
- package/lib/engine/analytics/lcp.js +34 -34
- package/lib/engine/api.d.ts +82 -82
- package/lib/engine/api.js +81 -81
- package/lib/engine/assets/index.d.ts +11 -11
- package/lib/engine/assets/index.js +47 -47
- package/lib/engine/assets/static.d.ts +1 -1
- package/lib/engine/assets/static.js +4 -4
- package/lib/engine/codegen/register_types.d.ts +1 -1
- package/lib/engine/codegen/register_types.js +300 -300
- package/lib/engine/debug/debug.d.ts +15 -15
- package/lib/engine/debug/debug.js +44 -44
- package/lib/engine/debug/debug_console.d.ts +2 -2
- package/lib/engine/debug/debug_console.js +307 -307
- package/lib/engine/debug/debug_overlay.d.ts +22 -22
- package/lib/engine/debug/debug_overlay.js +316 -316
- package/lib/engine/debug/debug_spatial_console.d.ts +2 -2
- package/lib/engine/debug/debug_spatial_console.js +390 -390
- package/lib/engine/debug/index.d.ts +2 -2
- package/lib/engine/debug/index.js +2 -2
- package/lib/engine/engine_addressables.d.ts +164 -164
- package/lib/engine/engine_addressables.js +601 -601
- package/lib/engine/engine_animation.d.ts +43 -43
- package/lib/engine/engine_animation.js +133 -133
- package/lib/engine/engine_application.d.ts +45 -45
- package/lib/engine/engine_application.js +104 -104
- package/lib/engine/engine_assetdatabase.d.ts +25 -25
- package/lib/engine/engine_assetdatabase.js +346 -346
- package/lib/engine/engine_audio.d.ts +4 -4
- package/lib/engine/engine_audio.js +23 -23
- package/lib/engine/engine_camera.d.ts +13 -13
- package/lib/engine/engine_camera.js +30 -30
- package/lib/engine/engine_components.d.ts +110 -110
- package/lib/engine/engine_components.js +374 -374
- package/lib/engine/engine_components_internal.d.ts +9 -9
- package/lib/engine/engine_components_internal.js +36 -36
- package/lib/engine/engine_constants.d.ts +10 -10
- package/lib/engine/engine_constants.js +41 -41
- package/lib/engine/engine_context.d.ts +475 -475
- package/lib/engine/engine_context.js +1672 -1673
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_context_registry.d.ts +71 -71
- package/lib/engine/engine_context_registry.js +117 -117
- package/lib/engine/engine_coroutine.d.ts +35 -35
- package/lib/engine/engine_coroutine.js +52 -52
- package/lib/engine/engine_create_objects.d.ts +119 -119
- package/lib/engine/engine_create_objects.js +320 -320
- package/lib/engine/engine_default_parameters.d.ts +2 -2
- package/lib/engine/engine_default_parameters.js +3 -3
- package/lib/engine/engine_editor-sync.d.ts +21 -21
- package/lib/engine/engine_editor-sync.js +4 -4
- package/lib/engine/engine_fileloader.d.ts +2 -2
- package/lib/engine/engine_fileloader.js +8 -8
- package/lib/engine/engine_gameobject.d.ts +68 -68
- package/lib/engine/engine_gameobject.js +619 -619
- package/lib/engine/engine_generic_utils.d.ts +1 -1
- package/lib/engine/engine_generic_utils.js +13 -13
- package/lib/engine/engine_gizmos.d.ts +149 -149
- package/lib/engine/engine_gizmos.js +530 -530
- package/lib/engine/engine_gltf.d.ts +12 -12
- package/lib/engine/engine_gltf.js +15 -15
- package/lib/engine/engine_gltf_builtin_components.d.ts +11 -11
- package/lib/engine/engine_gltf_builtin_components.js +341 -341
- package/lib/engine/engine_hot_reload.d.ts +8 -8
- package/lib/engine/engine_hot_reload.js +197 -197
- package/lib/engine/engine_input.d.ts +362 -362
- package/lib/engine/engine_input.js +1294 -1294
- package/lib/engine/engine_input_utils.d.ts +2 -2
- package/lib/engine/engine_input_utils.js +22 -22
- package/lib/engine/engine_instancing.d.ts +19 -19
- package/lib/engine/engine_instancing.js +39 -39
- package/lib/engine/engine_license.d.ts +11 -11
- package/lib/engine/engine_license.js +369 -369
- package/lib/engine/engine_lifecycle_api.d.ts +83 -83
- package/lib/engine/engine_lifecycle_api.js +106 -106
- package/lib/engine/engine_lifecycle_functions_internal.d.ts +32 -32
- package/lib/engine/engine_lifecycle_functions_internal.js +146 -146
- package/lib/engine/engine_lightdata.d.ts +23 -23
- package/lib/engine/engine_lightdata.js +101 -101
- package/lib/engine/engine_loaders.callbacks.d.ts +97 -97
- package/lib/engine/engine_loaders.callbacks.js +86 -86
- package/lib/engine/engine_loaders.d.ts +48 -48
- package/lib/engine/engine_loaders.gltf.d.ts +13 -13
- package/lib/engine/engine_loaders.gltf.js +62 -62
- package/lib/engine/engine_loaders.js +337 -337
- package/lib/engine/engine_lods.d.ts +35 -35
- package/lib/engine/engine_lods.js +160 -160
- package/lib/engine/engine_lods.js.map +1 -1
- package/lib/engine/engine_mainloop_utils.d.ts +32 -32
- package/lib/engine/engine_mainloop_utils.js +466 -466
- package/lib/engine/engine_math.d.ts +114 -114
- package/lib/engine/engine_math.js +247 -247
- package/lib/engine/engine_modules.d.ts +36 -36
- package/lib/engine/engine_modules.js +85 -85
- package/lib/engine/engine_networking.d.ts +260 -260
- package/lib/engine/engine_networking.js +764 -764
- package/lib/engine/engine_networking_auto.d.ts +24 -24
- package/lib/engine/engine_networking_auto.js +310 -310
- package/lib/engine/engine_networking_blob.d.ts +48 -48
- package/lib/engine/engine_networking_blob.js +228 -228
- package/lib/engine/engine_networking_files.d.ts +35 -35
- package/lib/engine/engine_networking_files.js +172 -172
- package/lib/engine/engine_networking_files_default_components.d.ts +6 -6
- package/lib/engine/engine_networking_files_default_components.js +42 -42
- package/lib/engine/engine_networking_instantiate.d.ts +100 -100
- package/lib/engine/engine_networking_instantiate.js +345 -345
- package/lib/engine/engine_networking_peer.d.ts +15 -15
- package/lib/engine/engine_networking_peer.js +132 -132
- package/lib/engine/engine_networking_streams.d.ts +123 -123
- package/lib/engine/engine_networking_streams.js +645 -645
- package/lib/engine/engine_networking_types.d.ts +22 -22
- package/lib/engine/engine_networking_types.js +7 -7
- package/lib/engine/engine_networking_utils.d.ts +2 -2
- package/lib/engine/engine_networking_utils.js +20 -20
- package/lib/engine/engine_networking_websocket.d.ts +1 -1
- package/lib/engine/engine_networking_websocket.js +2 -2
- package/lib/engine/engine_patcher.d.ts +10 -10
- package/lib/engine/engine_patcher.js +142 -142
- package/lib/engine/engine_physics.d.ts +152 -152
- package/lib/engine/engine_physics.js +645 -645
- package/lib/engine/engine_physics.types.d.ts +40 -40
- package/lib/engine/engine_physics.types.js +33 -33
- package/lib/engine/engine_physics_rapier.d.ts +147 -147
- package/lib/engine/engine_physics_rapier.js +1433 -1433
- package/lib/engine/engine_playerview.d.ts +26 -26
- package/lib/engine/engine_playerview.js +64 -64
- package/lib/engine/engine_scenelighting.d.ts +71 -71
- package/lib/engine/engine_scenelighting.js +226 -226
- package/lib/engine/engine_serialization.d.ts +3 -3
- package/lib/engine/engine_serialization.js +3 -3
- package/lib/engine/engine_serialization_builtin_serializer.d.ts +72 -72
- package/lib/engine/engine_serialization_builtin_serializer.js +403 -403
- package/lib/engine/engine_serialization_core.d.ts +94 -94
- package/lib/engine/engine_serialization_core.js +607 -607
- package/lib/engine/engine_serialization_decorator.d.ts +23 -23
- package/lib/engine/engine_serialization_decorator.js +66 -66
- package/lib/engine/engine_setup.d.ts +1 -1
- package/lib/engine/engine_setup.js +2 -2
- package/lib/engine/engine_shaders.d.ts +53 -53
- package/lib/engine/engine_shaders.js +252 -252
- package/lib/engine/engine_shims.d.ts +4 -4
- package/lib/engine/engine_shims.js +24 -24
- package/lib/engine/engine_test_utils.d.ts +39 -39
- package/lib/engine/engine_test_utils.js +83 -83
- package/lib/engine/engine_texture.d.ts +28 -28
- package/lib/engine/engine_texture.js +64 -64
- package/lib/engine/engine_three_utils.d.ts +204 -204
- package/lib/engine/engine_three_utils.js +788 -788
- package/lib/engine/engine_time.d.ts +51 -51
- package/lib/engine/engine_time.js +82 -82
- package/lib/engine/engine_time_utils.d.ts +88 -88
- package/lib/engine/engine_time_utils.js +215 -215
- package/lib/engine/engine_tonemapping.d.ts +6 -6
- package/lib/engine/engine_tonemapping.js +198 -197
- package/lib/engine/engine_tonemapping.js.map +1 -1
- package/lib/engine/engine_types.d.ts +578 -578
- package/lib/engine/engine_types.js +95 -95
- package/lib/engine/engine_typestore.d.ts +28 -28
- package/lib/engine/engine_typestore.js +55 -55
- package/lib/engine/engine_util_decorator.d.ts +13 -13
- package/lib/engine/engine_util_decorator.js +116 -116
- package/lib/engine/engine_utils.d.ts +248 -248
- package/lib/engine/engine_utils.js +1012 -1012
- package/lib/engine/engine_utils_format.d.ts +24 -24
- package/lib/engine/engine_utils_format.js +239 -239
- package/lib/engine/engine_utils_screenshot.d.ts +159 -159
- package/lib/engine/engine_utils_screenshot.js +522 -522
- package/lib/engine/engine_utils_screenshot.xr.d.ts +5 -5
- package/lib/engine/engine_utils_screenshot.xr.js +90 -90
- package/lib/engine/engine_xr.d.ts +1 -1
- package/lib/engine/engine_xr.js +1 -1
- package/lib/engine/export/gltf/Writers.d.ts +19 -19
- package/lib/engine/export/gltf/Writers.js +24 -24
- package/lib/engine/export/gltf/index.d.ts +11 -11
- package/lib/engine/export/gltf/index.js +123 -123
- package/lib/engine/export/index.d.ts +2 -2
- package/lib/engine/export/index.js +2 -2
- package/lib/engine/export/state.d.ts +7 -7
- package/lib/engine/export/state.js +17 -17
- package/lib/engine/export/utils.d.ts +2 -2
- package/lib/engine/export/utils.js +7 -7
- package/lib/engine/extensions/EXT_texture_exr.d.ts +8 -8
- package/lib/engine/extensions/EXT_texture_exr.js +32 -32
- package/lib/engine/extensions/NEEDLE_animator_controller_model.d.ts +122 -122
- package/lib/engine/extensions/NEEDLE_animator_controller_model.js +95 -95
- package/lib/engine/extensions/NEEDLE_components.d.ts +35 -35
- package/lib/engine/extensions/NEEDLE_components.js +220 -220
- package/lib/engine/extensions/NEEDLE_gameobject_data.d.ts +10 -10
- package/lib/engine/extensions/NEEDLE_gameobject_data.js +57 -57
- package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +37 -37
- package/lib/engine/extensions/NEEDLE_lighting_settings.js +157 -157
- package/lib/engine/extensions/NEEDLE_lightmaps.d.ts +18 -18
- package/lib/engine/extensions/NEEDLE_lightmaps.js +99 -99
- package/lib/engine/extensions/NEEDLE_persistent_assets.d.ts +11 -11
- package/lib/engine/extensions/NEEDLE_persistent_assets.js +63 -63
- package/lib/engine/extensions/NEEDLE_progressive.d.ts +1 -1
- package/lib/engine/extensions/NEEDLE_progressive.js +1 -1
- package/lib/engine/extensions/NEEDLE_render_objects.d.ts +13 -13
- package/lib/engine/extensions/NEEDLE_render_objects.js +159 -159
- package/lib/engine/extensions/NEEDLE_techniques_webgl.d.ts +38 -38
- package/lib/engine/extensions/NEEDLE_techniques_webgl.js +564 -564
- package/lib/engine/extensions/extension_resolver.d.ts +4 -4
- package/lib/engine/extensions/extension_resolver.js +1 -1
- package/lib/engine/extensions/extension_utils.d.ts +12 -12
- package/lib/engine/extensions/extension_utils.js +152 -152
- package/lib/engine/extensions/extensions.d.ts +32 -32
- package/lib/engine/extensions/extensions.js +107 -107
- package/lib/engine/extensions/index.d.ts +6 -6
- package/lib/engine/extensions/index.js +6 -6
- package/lib/engine/extensions/usage_tracker.d.ts +13 -13
- package/lib/engine/extensions/usage_tracker.js +65 -65
- package/lib/engine/js-extensions/Camera.d.ts +1 -1
- package/lib/engine/js-extensions/Camera.js +39 -39
- package/lib/engine/js-extensions/ExtensionUtils.d.ts +9 -9
- package/lib/engine/js-extensions/ExtensionUtils.js +67 -67
- package/lib/engine/js-extensions/Layers.d.ts +6 -6
- package/lib/engine/js-extensions/Layers.js +22 -22
- package/lib/engine/js-extensions/Object3D.d.ts +120 -120
- package/lib/engine/js-extensions/Object3D.js +136 -136
- package/lib/engine/js-extensions/RGBAColor.d.ts +23 -23
- package/lib/engine/js-extensions/RGBAColor.js +111 -111
- package/lib/engine/js-extensions/Vector.d.ts +3 -3
- package/lib/engine/js-extensions/Vector.js +13 -13
- package/lib/engine/js-extensions/index.d.ts +5 -5
- package/lib/engine/js-extensions/index.js +5 -5
- package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.d.ts +4 -4
- package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +79 -79
- package/lib/engine/shaders/shaderData.d.ts +55 -55
- package/lib/engine/shaders/shaderData.js +58 -58
- package/lib/engine/tests/test_utils.d.ts +2 -2
- package/lib/engine/tests/test_utils.js +53 -53
- package/lib/engine/webcomponents/WebXRButtons.d.ts +56 -56
- package/lib/engine/webcomponents/WebXRButtons.js +230 -230
- package/lib/engine/webcomponents/api.d.ts +5 -5
- package/lib/engine/webcomponents/api.js +4 -4
- package/lib/engine/webcomponents/buttons.d.ts +51 -51
- package/lib/engine/webcomponents/buttons.js +264 -264
- package/lib/engine/webcomponents/fonts.d.ts +9 -9
- package/lib/engine/webcomponents/fonts.js +32 -32
- package/lib/engine/webcomponents/icons.d.ts +9 -9
- package/lib/engine/webcomponents/icons.js +52 -52
- package/lib/engine/webcomponents/index.d.ts +1 -1
- package/lib/engine/webcomponents/index.js +1 -1
- package/lib/engine/webcomponents/logo-element.d.ts +10 -10
- package/lib/engine/webcomponents/logo-element.js +67 -67
- package/lib/engine/webcomponents/needle menu/needle-menu-spatial.d.ts +37 -37
- package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js +513 -513
- package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +155 -155
- package/lib/engine/webcomponents/needle menu/needle-menu.js +1029 -1029
- package/lib/engine/webcomponents/needle-button.d.ts +34 -34
- package/lib/engine/webcomponents/needle-button.js +161 -161
- package/lib/engine/webcomponents/needle-engine.ar-overlay.d.ts +21 -21
- package/lib/engine/webcomponents/needle-engine.ar-overlay.js +166 -166
- package/lib/engine/webcomponents/needle-engine.attributes.d.ts +69 -69
- package/lib/engine/webcomponents/needle-engine.attributes.js +1 -1
- package/lib/engine/webcomponents/needle-engine.d.ts +115 -116
- package/lib/engine/webcomponents/needle-engine.extras.d.ts +6 -6
- package/lib/engine/webcomponents/needle-engine.extras.js +13 -13
- package/lib/engine/webcomponents/needle-engine.js +845 -821
- package/lib/engine/webcomponents/needle-engine.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.loading.d.ts +44 -44
- package/lib/engine/webcomponents/needle-engine.loading.js +341 -341
- package/lib/engine/xr/NeedleXRController.d.ts +313 -313
- package/lib/engine/xr/NeedleXRController.js +1007 -1007
- package/lib/engine/xr/NeedleXRSession.d.ts +340 -340
- package/lib/engine/xr/NeedleXRSession.js +1463 -1463
- package/lib/engine/xr/NeedleXRSync.d.ts +22 -22
- package/lib/engine/xr/NeedleXRSync.js +188 -188
- package/lib/engine/xr/SceneTransition.d.ts +18 -18
- package/lib/engine/xr/SceneTransition.js +69 -69
- package/lib/engine/xr/TempXRContext.d.ts +34 -34
- package/lib/engine/xr/TempXRContext.js +187 -187
- package/lib/engine/xr/XRRig.d.ts +7 -7
- package/lib/engine/xr/XRRig.js +1 -1
- package/lib/engine/xr/api.d.ts +6 -6
- package/lib/engine/xr/api.js +6 -6
- package/lib/engine/xr/events.d.ts +66 -66
- package/lib/engine/xr/events.js +93 -93
- package/lib/engine/xr/internal.d.ts +12 -12
- package/lib/engine/xr/internal.js +25 -25
- package/lib/engine/xr/usdz.d.ts +12 -12
- package/lib/engine/xr/usdz.js +29 -29
- package/lib/engine/xr/utils.d.ts +11 -11
- package/lib/engine/xr/utils.js +34 -34
- package/lib/engine-components/AlignmentConstraint.d.ts +10 -10
- package/lib/engine-components/AlignmentConstraint.js +39 -39
- package/lib/engine-components/Animation.d.ts +156 -156
- package/lib/engine-components/Animation.js +508 -508
- package/lib/engine-components/AnimationCurve.d.ts +40 -40
- package/lib/engine-components/AnimationCurve.js +159 -159
- package/lib/engine-components/AnimationUtils.d.ts +8 -8
- package/lib/engine-components/AnimationUtils.js +27 -27
- package/lib/engine-components/AnimationUtilsAutoplay.d.ts +1 -1
- package/lib/engine-components/AnimationUtilsAutoplay.js +39 -39
- package/lib/engine-components/Animator.d.ts +217 -217
- package/lib/engine-components/Animator.js +354 -354
- package/lib/engine-components/AnimatorController.d.ts +227 -227
- package/lib/engine-components/AnimatorController.js +1152 -1152
- package/lib/engine-components/AudioListener.d.ts +33 -33
- package/lib/engine-components/AudioListener.js +86 -86
- package/lib/engine-components/AudioSource.d.ts +217 -217
- package/lib/engine-components/AudioSource.js +635 -635
- package/lib/engine-components/AvatarLoader.d.ts +80 -80
- package/lib/engine-components/AvatarLoader.js +231 -231
- package/lib/engine-components/AxesHelper.d.ts +32 -32
- package/lib/engine-components/AxesHelper.js +67 -67
- package/lib/engine-components/BasicIKConstraint.d.ts +9 -9
- package/lib/engine-components/BasicIKConstraint.js +43 -43
- package/lib/engine-components/BoxCollider.d.ts +2 -2
- package/lib/engine-components/BoxCollider.js +2 -2
- package/lib/engine-components/BoxHelperComponent.d.ts +47 -47
- package/lib/engine-components/BoxHelperComponent.js +102 -102
- package/lib/engine-components/Camera.d.ts +231 -231
- package/lib/engine-components/Camera.js +700 -700
- package/lib/engine-components/CameraUtils.d.ts +1 -1
- package/lib/engine-components/CameraUtils.js +123 -123
- package/lib/engine-components/CharacterController.d.ts +55 -55
- package/lib/engine-components/CharacterController.js +236 -236
- package/lib/engine-components/Collider.d.ts +188 -188
- package/lib/engine-components/Collider.js +369 -369
- package/lib/engine-components/Component.d.ts +792 -792
- package/lib/engine-components/Component.js +920 -920
- package/lib/engine-components/ContactShadows.d.ts +94 -94
- package/lib/engine-components/ContactShadows.js +453 -453
- package/lib/engine-components/DeleteBox.d.ts +19 -19
- package/lib/engine-components/DeleteBox.js +58 -58
- package/lib/engine-components/DeviceFlag.d.ts +16 -16
- package/lib/engine-components/DeviceFlag.js +47 -47
- package/lib/engine-components/DragControls.d.ts +170 -170
- package/lib/engine-components/DragControls.js +1421 -1421
- package/lib/engine-components/DropListener.d.ts +215 -215
- package/lib/engine-components/DropListener.js +642 -642
- package/lib/engine-components/Duplicatable.d.ts +35 -35
- package/lib/engine-components/Duplicatable.js +202 -202
- package/lib/engine-components/EventList.d.ts +54 -54
- package/lib/engine-components/EventList.js +232 -232
- package/lib/engine-components/EventTrigger.d.ts +33 -33
- package/lib/engine-components/EventTrigger.js +75 -75
- package/lib/engine-components/EventType.d.ts +22 -22
- package/lib/engine-components/EventType.js +23 -23
- package/lib/engine-components/Fog.d.ts +22 -22
- package/lib/engine-components/Fog.js +61 -61
- package/lib/engine-components/Gizmos.d.ts +17 -17
- package/lib/engine-components/Gizmos.js +64 -64
- package/lib/engine-components/GridHelper.d.ts +20 -20
- package/lib/engine-components/GridHelper.js +54 -54
- package/lib/engine-components/GroundProjection.d.ts +67 -67
- package/lib/engine-components/GroundProjection.js +343 -343
- package/lib/engine-components/Interactable.d.ts +12 -12
- package/lib/engine-components/Interactable.js +12 -12
- package/lib/engine-components/Joints.d.ts +19 -19
- package/lib/engine-components/Joints.js +51 -51
- package/lib/engine-components/LODGroup.d.ts +35 -35
- package/lib/engine-components/LODGroup.js +152 -152
- package/lib/engine-components/Light.d.ts +180 -180
- package/lib/engine-components/Light.js +535 -535
- package/lib/engine-components/LookAtConstraint.d.ts +19 -19
- package/lib/engine-components/LookAtConstraint.js +35 -35
- package/lib/engine-components/NeedleMenu.d.ts +50 -50
- package/lib/engine-components/NeedleMenu.js +92 -92
- package/lib/engine-components/NestedGltf.d.ts +25 -25
- package/lib/engine-components/NestedGltf.js +88 -88
- package/lib/engine-components/Networking.d.ts +54 -54
- package/lib/engine-components/Networking.js +112 -112
- package/lib/engine-components/OffsetConstraint.d.ts +14 -14
- package/lib/engine-components/OffsetConstraint.js +65 -65
- package/lib/engine-components/OrbitControls.d.ts +268 -268
- package/lib/engine-components/OrbitControls.js +1015 -1015
- package/lib/engine-components/PlayerColor.d.ts +19 -19
- package/lib/engine-components/PlayerColor.js +94 -94
- package/lib/engine-components/ReflectionProbe.d.ts +28 -28
- package/lib/engine-components/ReflectionProbe.js +204 -204
- package/lib/engine-components/Renderer.d.ts +153 -153
- package/lib/engine-components/Renderer.js +834 -834
- package/lib/engine-components/RendererInstancing.d.ts +140 -140
- package/lib/engine-components/RendererInstancing.js +744 -744
- package/lib/engine-components/RendererLightmap.d.ts +24 -24
- package/lib/engine-components/RendererLightmap.js +182 -182
- package/lib/engine-components/RigidBody.d.ts +155 -155
- package/lib/engine-components/RigidBody.js +517 -517
- package/lib/engine-components/SceneSwitcher.d.ts +263 -263
- package/lib/engine-components/SceneSwitcher.js +971 -971
- package/lib/engine-components/ScreenCapture.d.ts +144 -144
- package/lib/engine-components/ScreenCapture.js +547 -547
- package/lib/engine-components/ShadowCatcher.d.ts +33 -33
- package/lib/engine-components/ShadowCatcher.js +166 -166
- package/lib/engine-components/Skybox.d.ts +88 -88
- package/lib/engine-components/Skybox.js +469 -469
- package/lib/engine-components/SmoothFollow.d.ts +34 -34
- package/lib/engine-components/SmoothFollow.js +82 -82
- package/lib/engine-components/SpatialTrigger.d.ts +102 -102
- package/lib/engine-components/SpatialTrigger.js +225 -225
- package/lib/engine-components/SpectatorCamera.d.ts +111 -111
- package/lib/engine-components/SpectatorCamera.js +715 -715
- package/lib/engine-components/SphereCollider.d.ts +2 -2
- package/lib/engine-components/SphereCollider.js +2 -2
- package/lib/engine-components/SpriteRenderer.d.ts +132 -132
- package/lib/engine-components/SpriteRenderer.js +472 -472
- package/lib/engine-components/SyncedCamera.d.ts +41 -41
- package/lib/engine-components/SyncedCamera.js +199 -199
- package/lib/engine-components/SyncedRoom.d.ts +106 -106
- package/lib/engine-components/SyncedRoom.js +371 -371
- package/lib/engine-components/SyncedTransform.d.ts +94 -94
- package/lib/engine-components/SyncedTransform.js +331 -331
- package/lib/engine-components/TestRunner.d.ts +16 -16
- package/lib/engine-components/TestRunner.js +102 -102
- package/lib/engine-components/TransformGizmo.d.ts +75 -75
- package/lib/engine-components/TransformGizmo.js +209 -209
- package/lib/engine-components/VideoPlayer.d.ts +184 -184
- package/lib/engine-components/VideoPlayer.js +978 -978
- package/lib/engine-components/Voip.d.ts +67 -67
- package/lib/engine-components/Voip.js +360 -360
- package/lib/engine-components/api.d.ts +51 -51
- package/lib/engine-components/api.js +50 -50
- package/lib/engine-components/avatar/AvatarBlink_Simple.d.ts +11 -11
- package/lib/engine-components/avatar/AvatarBlink_Simple.js +76 -76
- package/lib/engine-components/avatar/AvatarEyeLook_Rotation.d.ts +14 -14
- package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js +68 -68
- package/lib/engine-components/avatar/Avatar_Brain_LookAt.d.ts +29 -29
- package/lib/engine-components/avatar/Avatar_Brain_LookAt.js +121 -121
- package/lib/engine-components/avatar/Avatar_MouthShapes.d.ts +15 -15
- package/lib/engine-components/avatar/Avatar_MouthShapes.js +79 -79
- package/lib/engine-components/avatar/Avatar_MustacheShake.d.ts +9 -9
- package/lib/engine-components/avatar/Avatar_MustacheShake.js +29 -29
- package/lib/engine-components/codegen/components.d.ts +216 -216
- package/lib/engine-components/codegen/components.js +218 -218
- package/lib/engine-components/debug/LogStats.d.ts +5 -5
- package/lib/engine-components/debug/LogStats.js +18 -18
- package/lib/engine-components/export/gltf/GltfExport.d.ts +30 -30
- package/lib/engine-components/export/gltf/GltfExport.js +246 -246
- package/lib/engine-components/export/gltf/index.d.ts +1 -1
- package/lib/engine-components/export/gltf/index.js +1 -1
- package/lib/engine-components/export/index.d.ts +1 -1
- package/lib/engine-components/export/index.js +1 -1
- package/lib/engine-components/export/usdz/Extension.d.ts +22 -22
- package/lib/engine-components/export/usdz/Extension.js +1 -1
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.d.ts +162 -162
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +1789 -1789
- package/lib/engine-components/export/usdz/USDZExporter.d.ts +130 -130
- package/lib/engine-components/export/usdz/USDZExporter.js +663 -663
- package/lib/engine-components/export/usdz/extensions/Animation.d.ts +106 -106
- package/lib/engine-components/export/usdz/extensions/Animation.js +1071 -1071
- package/lib/engine-components/export/usdz/extensions/DocumentExtension.d.ts +5 -5
- package/lib/engine-components/export/usdz/extensions/DocumentExtension.js +6 -6
- package/lib/engine-components/export/usdz/extensions/NodeMaterialConverter.d.ts +10 -10
- package/lib/engine-components/export/usdz/extensions/NodeMaterialConverter.js +451 -451
- package/lib/engine-components/export/usdz/extensions/USDZText.d.ts +54 -54
- package/lib/engine-components/export/usdz/extensions/USDZText.js +203 -203
- package/lib/engine-components/export/usdz/extensions/USDZUI.d.ts +8 -8
- package/lib/engine-components/export/usdz/extensions/USDZUI.js +158 -158
- package/lib/engine-components/export/usdz/extensions/behavior/Actions.d.ts +30 -30
- package/lib/engine-components/export/usdz/extensions/behavior/Actions.js +88 -88
- package/lib/engine-components/export/usdz/extensions/behavior/AudioExtension.d.ts +10 -10
- package/lib/engine-components/export/usdz/extensions/behavior/AudioExtension.js +86 -86
- package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.d.ts +28 -28
- package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js +290 -290
- package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +190 -190
- package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +1060 -1060
- package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.d.ts +135 -135
- package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js +548 -548
- package/lib/engine-components/export/usdz/extensions/behavior/PhysicsExtension.d.ts +7 -7
- package/lib/engine-components/export/usdz/extensions/behavior/PhysicsExtension.js +115 -115
- package/lib/engine-components/export/usdz/index.d.ts +3 -3
- package/lib/engine-components/export/usdz/index.js +2 -2
- package/lib/engine-components/export/usdz/utils/animationutils.d.ts +7 -7
- package/lib/engine-components/export/usdz/utils/animationutils.js +163 -163
- package/lib/engine-components/export/usdz/utils/quicklook.d.ts +2 -2
- package/lib/engine-components/export/usdz/utils/quicklook.js +43 -43
- package/lib/engine-components/particlesystem/ParticleSystem.d.ts +177 -177
- package/lib/engine-components/particlesystem/ParticleSystem.js +1176 -1176
- package/lib/engine-components/particlesystem/ParticleSystemModules.d.ts +526 -526
- package/lib/engine-components/particlesystem/ParticleSystemModules.js +1930 -1930
- package/lib/engine-components/particlesystem/ParticleSystemSubEmitter.d.ts +25 -25
- package/lib/engine-components/particlesystem/ParticleSystemSubEmitter.js +87 -87
- package/lib/engine-components/particlesystem/api.d.ts +2 -2
- package/lib/engine-components/particlesystem/api.js +2 -2
- package/lib/engine-components/postprocessing/Effects/Antialiasing.d.ts +17 -17
- package/lib/engine-components/postprocessing/Effects/Antialiasing.js +59 -59
- package/lib/engine-components/postprocessing/Effects/BloomEffect.d.ts +46 -46
- package/lib/engine-components/postprocessing/Effects/BloomEffect.js +113 -113
- package/lib/engine-components/postprocessing/Effects/ChromaticAberration.d.ts +11 -11
- package/lib/engine-components/postprocessing/Effects/ChromaticAberration.js +39 -39
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.d.ts +23 -23
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +111 -111
- package/lib/engine-components/postprocessing/Effects/DepthOfField.d.ts +25 -25
- package/lib/engine-components/postprocessing/Effects/DepthOfField.js +104 -104
- package/lib/engine-components/postprocessing/Effects/EffectWrapper.d.ts +12 -12
- package/lib/engine-components/postprocessing/Effects/EffectWrapper.js +18 -18
- package/lib/engine-components/postprocessing/Effects/Pixelation.d.ts +11 -11
- package/lib/engine-components/postprocessing/Effects/Pixelation.js +32 -32
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.d.ts +18 -18
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.js +91 -91
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.d.ts +70 -70
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js +176 -176
- package/lib/engine-components/postprocessing/Effects/Sharpening.d.ts +18 -18
- package/lib/engine-components/postprocessing/Effects/Sharpening.js +127 -127
- package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.d.ts +17 -17
- package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.js +70 -70
- package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +19 -19
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js +94 -94
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +13 -13
- package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.js +51 -51
- package/lib/engine-components/postprocessing/Effects/Vignette.d.ts +15 -15
- package/lib/engine-components/postprocessing/Effects/Vignette.js +60 -60
- package/lib/engine-components/postprocessing/PostProcessingEffect.d.ts +90 -90
- package/lib/engine-components/postprocessing/PostProcessingEffect.js +168 -168
- package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +42 -42
- package/lib/engine-components/postprocessing/PostProcessingHandler.js +494 -494
- package/lib/engine-components/postprocessing/Volume.d.ts +90 -90
- package/lib/engine-components/postprocessing/Volume.js +385 -385
- package/lib/engine-components/postprocessing/VolumeParameter.d.ts +26 -26
- package/lib/engine-components/postprocessing/VolumeParameter.js +136 -136
- package/lib/engine-components/postprocessing/VolumeProfile.d.ts +15 -15
- package/lib/engine-components/postprocessing/VolumeProfile.js +60 -60
- package/lib/engine-components/postprocessing/index.d.ts +6 -6
- package/lib/engine-components/postprocessing/index.js +6 -6
- package/lib/engine-components/postprocessing/utils.d.ts +55 -55
- package/lib/engine-components/postprocessing/utils.js +119 -119
- package/lib/engine-components/timeline/PlayableDirector.d.ts +163 -163
- package/lib/engine-components/timeline/PlayableDirector.js +686 -686
- package/lib/engine-components/timeline/SignalAsset.d.ts +24 -24
- package/lib/engine-components/timeline/SignalAsset.js +130 -130
- package/lib/engine-components/timeline/TimelineModels.d.ts +89 -89
- package/lib/engine-components/timeline/TimelineModels.js +22 -22
- package/lib/engine-components/timeline/TimelineTracks.d.ts +110 -110
- package/lib/engine-components/timeline/TimelineTracks.js +879 -879
- package/lib/engine-components/timeline/index.d.ts +4 -4
- package/lib/engine-components/timeline/index.js +3 -3
- package/lib/engine-components/ui/BaseUIComponent.d.ts +48 -48
- package/lib/engine-components/ui/BaseUIComponent.js +170 -170
- package/lib/engine-components/ui/Button.d.ts +64 -64
- package/lib/engine-components/ui/Button.js +315 -315
- package/lib/engine-components/ui/Canvas.d.ts +74 -74
- package/lib/engine-components/ui/Canvas.js +407 -407
- package/lib/engine-components/ui/CanvasGroup.d.ts +19 -19
- package/lib/engine-components/ui/CanvasGroup.js +58 -58
- package/lib/engine-components/ui/EventSystem.d.ts +125 -125
- package/lib/engine-components/ui/EventSystem.js +765 -765
- package/lib/engine-components/ui/Graphic.d.ts +55 -55
- package/lib/engine-components/ui/Graphic.js +255 -255
- package/lib/engine-components/ui/Image.d.ts +35 -35
- package/lib/engine-components/ui/Image.js +116 -116
- package/lib/engine-components/ui/InputField.d.ts +42 -42
- package/lib/engine-components/ui/InputField.js +268 -268
- package/lib/engine-components/ui/Interfaces.d.ts +38 -38
- package/lib/engine-components/ui/Interfaces.js +12 -12
- package/lib/engine-components/ui/Layout.d.ts +84 -84
- package/lib/engine-components/ui/Layout.js +330 -330
- package/lib/engine-components/ui/Outline.d.ts +7 -7
- package/lib/engine-components/ui/Outline.js +20 -20
- package/lib/engine-components/ui/PointerEvents.d.ts +115 -115
- package/lib/engine-components/ui/PointerEvents.js +145 -145
- package/lib/engine-components/ui/RaycastUtils.d.ts +11 -11
- package/lib/engine-components/ui/RaycastUtils.js +67 -67
- package/lib/engine-components/ui/Raycaster.d.ts +30 -30
- package/lib/engine-components/ui/Raycaster.js +95 -95
- package/lib/engine-components/ui/RectTransform.d.ts +61 -61
- package/lib/engine-components/ui/RectTransform.js +356 -356
- package/lib/engine-components/ui/SpatialHtml.d.ts +8 -8
- package/lib/engine-components/ui/SpatialHtml.js +79 -79
- package/lib/engine-components/ui/Symbols.d.ts +1 -1
- package/lib/engine-components/ui/Symbols.js +1 -1
- package/lib/engine-components/ui/Text.d.ts +78 -78
- package/lib/engine-components/ui/Text.js +539 -539
- package/lib/engine-components/ui/Utils.d.ts +24 -24
- package/lib/engine-components/ui/Utils.js +90 -90
- package/lib/engine-components/ui/index.d.ts +1 -1
- package/lib/engine-components/ui/index.js +1 -1
- package/lib/engine-components/utils/EnvironmentScene.d.ts +5 -5
- package/lib/engine-components/utils/EnvironmentScene.js +205 -205
- package/lib/engine-components/utils/LookAt.d.ts +31 -31
- package/lib/engine-components/utils/LookAt.js +82 -82
- package/lib/engine-components/utils/OpenURL.d.ts +42 -42
- package/lib/engine-components/utils/OpenURL.js +119 -119
- package/lib/engine-components/webxr/Avatar.d.ts +25 -25
- package/lib/engine-components/webxr/Avatar.js +255 -255
- package/lib/engine-components/webxr/TeleportTarget.d.ts +7 -7
- package/lib/engine-components/webxr/TeleportTarget.js +7 -7
- package/lib/engine-components/webxr/WebARCameraBackground.d.ts +30 -30
- package/lib/engine-components/webxr/WebARCameraBackground.js +155 -155
- package/lib/engine-components/webxr/WebARSessionRoot.d.ts +98 -98
- package/lib/engine-components/webxr/WebARSessionRoot.js +770 -770
- package/lib/engine-components/webxr/WebXR.d.ts +232 -232
- package/lib/engine-components/webxr/WebXR.js +561 -561
- package/lib/engine-components/webxr/WebXRAvatar.d.ts +27 -27
- package/lib/engine-components/webxr/WebXRAvatar.js +44 -44
- package/lib/engine-components/webxr/WebXRImageTracking.d.ts +86 -86
- package/lib/engine-components/webxr/WebXRImageTracking.js +471 -471
- package/lib/engine-components/webxr/WebXRPlaneTracking.d.ts +92 -92
- package/lib/engine-components/webxr/WebXRPlaneTracking.js +500 -500
- package/lib/engine-components/webxr/WebXRRig.d.ts +32 -32
- package/lib/engine-components/webxr/WebXRRig.js +72 -72
- package/lib/engine-components/webxr/XRFlag.d.ts +38 -38
- package/lib/engine-components/webxr/XRFlag.js +139 -139
- package/lib/engine-components/webxr/controllers/XRControllerFollow.d.ts +47 -47
- package/lib/engine-components/webxr/controllers/XRControllerFollow.js +120 -120
- package/lib/engine-components/webxr/controllers/XRControllerModel.d.ts +43 -43
- package/lib/engine-components/webxr/controllers/XRControllerModel.js +352 -352
- package/lib/engine-components/webxr/controllers/XRControllerMovement.d.ts +78 -78
- package/lib/engine-components/webxr/controllers/XRControllerMovement.js +506 -506
- package/lib/engine-components/webxr/index.d.ts +3 -3
- package/lib/engine-components/webxr/index.js +3 -3
- package/lib/engine-components/webxr/types.d.ts +3 -3
- package/lib/engine-components/webxr/types.js +1 -1
- package/lib/engine-components-experimental/Presentation.d.ts +6 -6
- package/lib/engine-components-experimental/Presentation.js +9 -9
- package/lib/engine-components-experimental/api.d.ts +4 -4
- package/lib/engine-components-experimental/api.js +4 -4
- package/lib/engine-components-experimental/networking/PlayerSync.d.ts +156 -156
- package/lib/engine-components-experimental/networking/PlayerSync.js +377 -377
- package/lib/engine-schemes/api.d.ts +12 -12
- package/lib/engine-schemes/api.js +12 -12
- package/lib/engine-schemes/schemes.d.ts +7 -7
- package/lib/engine-schemes/schemes.js +19 -19
- package/lib/engine-schemes/synced-camera-model.d.ts +25 -25
- package/lib/engine-schemes/synced-camera-model.js +67 -67
- package/lib/engine-schemes/synced-transform-model.d.ts +31 -31
- package/lib/engine-schemes/synced-transform-model.js +66 -66
- package/lib/engine-schemes/transform.d.ts +12 -12
- package/lib/engine-schemes/transform.js +39 -39
- package/lib/engine-schemes/vec2.d.ts +10 -10
- package/lib/engine-schemes/vec2.js +25 -25
- package/lib/engine-schemes/vec3.d.ts +11 -11
- package/lib/engine-schemes/vec3.js +29 -29
- package/lib/engine-schemes/vec4.d.ts +12 -12
- package/lib/engine-schemes/vec4.js +33 -33
- package/lib/engine-schemes/vr-user-state-buffer.d.ts +37 -37
- package/lib/engine-schemes/vr-user-state-buffer.js +110 -110
- package/lib/include/three/EXT_mesh_gpu_instancing_exporter.d.ts +6 -6
- package/lib/include/three/EXT_mesh_gpu_instancing_exporter.js +45 -45
- package/lib/needle-engine.d.ts +7 -7
- package/lib/needle-engine.js +64 -64
- package/package.json +3 -3
- package/plugins/common/buildinfo.js +64 -64
- package/plugins/common/cloud.js +1 -1
- package/plugins/common/config.cjs +31 -31
- package/plugins/common/config.js +35 -35
- package/plugins/common/files.js +31 -31
- package/plugins/common/generator.js +10 -10
- package/plugins/common/license.js +452 -452
- package/plugins/common/logger.js +327 -327
- package/plugins/common/npm.js +15 -15
- package/plugins/common/timers.js +7 -7
- package/plugins/common/version.js +37 -37
- package/plugins/gltf-packer.mjs +1 -1
- package/plugins/next/alias.cjs +39 -39
- package/plugins/next/license.cjs +24 -24
- package/plugins/next/meshbvhworker.cjs +18 -18
- package/plugins/next/next.js +141 -141
- package/plugins/types/index.d.ts +2 -2
- package/plugins/types/license.d.ts +24 -24
- package/plugins/types/needleConfig.d.ts +27 -27
- package/plugins/types/next.d.ts +2 -2
- package/plugins/types/userconfig.d.ts +124 -124
- package/plugins/types/vite.d.ts +13 -13
- package/plugins/types/webmanifest.d.ts +32 -32
- package/plugins/vite/alias.js +189 -189
- package/plugins/vite/asap.js +251 -251
- package/plugins/vite/build-pipeline.js +371 -371
- package/plugins/vite/build.js +19 -19
- package/plugins/vite/buildinfo.js +41 -41
- package/plugins/vite/config.js +106 -106
- package/plugins/vite/copyfiles.js +138 -138
- package/plugins/vite/defines.js +70 -70
- package/plugins/vite/dependencies.js +232 -232
- package/plugins/vite/dependency-watcher.js +237 -237
- package/plugins/vite/drop-client.js +76 -76
- package/plugins/vite/drop.js +87 -87
- package/plugins/vite/editor-connection.js +124 -124
- package/plugins/vite/facebook-instant-games.js +102 -102
- package/plugins/vite/gzip.js +5 -5
- package/plugins/vite/imports-logger.js +143 -143
- package/plugins/vite/index.js +147 -147
- package/plugins/vite/license.js +56 -56
- package/plugins/vite/local-files.js +440 -440
- package/plugins/vite/logger.client.js +272 -272
- package/plugins/vite/logger.js +100 -100
- package/plugins/vite/materialx.js +31 -31
- package/plugins/vite/meta.js +163 -163
- package/plugins/vite/npm.js +7 -7
- package/plugins/vite/peer.js +29 -29
- package/plugins/vite/poster-client.js +73 -73
- package/plugins/vite/poster.js +79 -79
- package/plugins/vite/pwa.js +604 -604
- package/plugins/vite/reload-client.js +15 -15
- package/plugins/vite/reload.js +351 -351
- package/plugins/vite/server.js +66 -66
- package/plugins/vite/transform-codegen.js +55 -55
- package/plugins/vite/transform.js +32 -32
- package/plugins/vite/vite-4.4-hack.js +31 -31
- package/src/asap/needle-asap.ts +111 -111
- package/src/asap/sessiongranted.ts +75 -75
- package/src/asap/utils.ts +4 -4
- package/src/engine/analytics/index.ts +10 -10
- package/src/engine/analytics/lcp.ts +35 -35
- package/src/engine/api.ts +82 -82
- package/src/engine/assets/index.ts +59 -59
- package/src/engine/assets/static.js +5 -5
- package/src/engine/codegen/register_types.ts +300 -300
- package/src/engine/debug/debug.ts +51 -51
- package/src/engine/debug/debug_console.ts +333 -333
- package/src/engine/debug/debug_overlay.ts +332 -332
- package/src/engine/debug/debug_spatial_console.ts +429 -429
- package/src/engine/debug/index.ts +1 -1
- package/src/engine/engine_addressables.ts +671 -671
- package/src/engine/engine_animation.ts +145 -145
- package/src/engine/engine_application.ts +113 -113
- package/src/engine/engine_assetdatabase.ts +389 -389
- package/src/engine/engine_audio.ts +24 -24
- package/src/engine/engine_camera.ts +39 -39
- package/src/engine/engine_components.ts +366 -366
- package/src/engine/engine_components_internal.ts +40 -40
- package/src/engine/engine_constants.ts +52 -52
- package/src/engine/engine_context.ts +1822 -1824
- package/src/engine/engine_context_registry.ts +129 -129
- package/src/engine/engine_coroutine.ts +54 -54
- package/src/engine/engine_create_objects.ts +411 -411
- package/src/engine/engine_default_parameters.ts +3 -3
- package/src/engine/engine_editor-sync.ts +28 -28
- package/src/engine/engine_fileloader.js +9 -9
- package/src/engine/engine_gameobject.ts +712 -712
- package/src/engine/engine_generic_utils.js +13 -13
- package/src/engine/engine_gizmos.ts +577 -577
- package/src/engine/engine_gltf.ts +29 -29
- package/src/engine/engine_gltf_builtin_components.ts +403 -403
- package/src/engine/engine_hot_reload.ts +210 -210
- package/src/engine/engine_input.ts +1500 -1500
- package/src/engine/engine_input_utils.ts +23 -23
- package/src/engine/engine_instancing.ts +45 -45
- package/src/engine/engine_license.ts +386 -386
- package/src/engine/engine_lifecycle_api.ts +113 -113
- package/src/engine/engine_lifecycle_functions_internal.ts +193 -193
- package/src/engine/engine_lightdata.ts +125 -125
- package/src/engine/engine_loaders.callbacks.ts +136 -136
- package/src/engine/engine_loaders.gltf.ts +82 -82
- package/src/engine/engine_loaders.ts +378 -378
- package/src/engine/engine_lods.ts +185 -186
- package/src/engine/engine_mainloop_utils.ts +472 -472
- package/src/engine/engine_math.ts +282 -282
- package/src/engine/engine_modules.ts +83 -83
- package/src/engine/engine_networking.ts +862 -862
- package/src/engine/engine_networking_auto.ts +352 -352
- package/src/engine/engine_networking_blob.ts +275 -275
- package/src/engine/engine_networking_files.ts +217 -217
- package/src/engine/engine_networking_files_default_components.ts +58 -58
- package/src/engine/engine_networking_instantiate.ts +419 -419
- package/src/engine/engine_networking_peer.ts +159 -159
- package/src/engine/engine_networking_streams.ts +713 -713
- package/src/engine/engine_networking_types.ts +24 -24
- package/src/engine/engine_networking_utils.ts +23 -23
- package/src/engine/engine_networking_websocket.ts +2 -2
- package/src/engine/engine_patcher.ts +199 -199
- package/src/engine/engine_physics.ts +783 -783
- package/src/engine/engine_physics.types.ts +46 -46
- package/src/engine/engine_physics_rapier.ts +1577 -1577
- package/src/engine/engine_playerview.ts +80 -80
- package/src/engine/engine_scenelighting.ts +294 -294
- package/src/engine/engine_serialization.ts +2 -2
- package/src/engine/engine_serialization_builtin_serializer.ts +473 -473
- package/src/engine/engine_serialization_core.ts +720 -720
- package/src/engine/engine_serialization_decorator.ts +80 -80
- package/src/engine/engine_setup.ts +1 -1
- package/src/engine/engine_shaders.ts +267 -267
- package/src/engine/engine_shims.ts +32 -32
- package/src/engine/engine_test_utils.ts +109 -109
- package/src/engine/engine_texture.ts +82 -82
- package/src/engine/engine_three_utils.ts +928 -928
- package/src/engine/engine_time.ts +94 -94
- package/src/engine/engine_time_utils.ts +237 -237
- package/src/engine/engine_tonemapping.ts +209 -208
- package/src/engine/engine_types.ts +730 -730
- package/src/engine/engine_typestore.ts +63 -63
- package/src/engine/engine_util_decorator.ts +136 -136
- package/src/engine/engine_utils.ts +1115 -1115
- package/src/engine/engine_utils_format.ts +273 -273
- package/src/engine/engine_utils_screenshot.ts +708 -708
- package/src/engine/engine_utils_screenshot.xr.ts +103 -103
- package/src/engine/export/gltf/Writers.ts +34 -34
- package/src/engine/export/gltf/index.ts +158 -158
- package/src/engine/export/index.ts +2 -2
- package/src/engine/export/state.ts +19 -19
- package/src/engine/export/utils.ts +9 -9
- package/src/engine/extensions/EXT_texture_exr.ts +50 -50
- package/src/engine/extensions/NEEDLE_animator_controller_model.ts +195 -195
- package/src/engine/extensions/NEEDLE_components.ts +268 -268
- package/src/engine/extensions/NEEDLE_gameobject_data.ts +81 -81
- package/src/engine/extensions/NEEDLE_lighting_settings.ts +185 -185
- package/src/engine/extensions/NEEDLE_lightmaps.ts +119 -119
- package/src/engine/extensions/NEEDLE_persistent_assets.ts +76 -76
- package/src/engine/extensions/NEEDLE_render_objects.ts +209 -209
- package/src/engine/extensions/NEEDLE_techniques_webgl.ts +640 -640
- package/src/engine/extensions/extension_resolver.ts +4 -4
- package/src/engine/extensions/extension_utils.ts +166 -166
- package/src/engine/extensions/extensions.ts +140 -140
- package/src/engine/extensions/index.ts +5 -5
- package/src/engine/extensions/usage_tracker.ts +100 -100
- package/src/engine/js-extensions/Camera.ts +37 -37
- package/src/engine/js-extensions/ExtensionUtils.ts +85 -85
- package/src/engine/js-extensions/Layers.ts +23 -23
- package/src/engine/js-extensions/Object3D.ts +296 -296
- package/src/engine/js-extensions/RGBAColor.ts +126 -126
- package/src/engine/js-extensions/Vector.ts +18 -18
- package/src/engine/js-extensions/index.ts +4 -4
- package/src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +125 -125
- package/src/engine/shaders/shaderData.ts +67 -67
- package/src/engine/tests/test_utils.ts +63 -63
- package/src/engine/webcomponents/WebXRButtons.ts +260 -260
- package/src/engine/webcomponents/api.ts +6 -6
- package/src/engine/webcomponents/buttons.ts +292 -292
- package/src/engine/webcomponents/fonts.ts +41 -41
- package/src/engine/webcomponents/icons.ts +57 -57
- package/src/engine/webcomponents/index.ts +1 -1
- package/src/engine/webcomponents/logo-element.ts +78 -78
- package/src/engine/webcomponents/needle menu/needle-menu-spatial.ts +573 -573
- package/src/engine/webcomponents/needle menu/needle-menu.ts +1118 -1118
- package/src/engine/webcomponents/needle-button.ts +181 -181
- package/src/engine/webcomponents/needle-engine.ar-overlay.ts +186 -186
- package/src/engine/webcomponents/needle-engine.attributes.ts +82 -82
- package/src/engine/webcomponents/needle-engine.extras.ts +16 -16
- package/src/engine/webcomponents/needle-engine.loading.ts +373 -373
- package/src/engine/webcomponents/needle-engine.ts +890 -860
- package/src/engine/xr/NeedleXRController.ts +1125 -1125
- package/src/engine/xr/NeedleXRSession.ts +1624 -1624
- package/src/engine/xr/NeedleXRSync.ts +220 -220
- package/src/engine/xr/SceneTransition.ts +78 -78
- package/src/engine/xr/TempXRContext.ts +216 -216
- package/src/engine/xr/XRRig.ts +9 -9
- package/src/engine/xr/api.ts +5 -5
- package/src/engine/xr/events.ts +102 -102
- package/src/engine/xr/internal.ts +34 -34
- package/src/engine/xr/usdz.ts +30 -30
- package/src/engine/xr/utils.ts +39 -39
- package/src/engine-components/AlignmentConstraint.ts +36 -36
- package/src/engine-components/Animation.ts +557 -557
- package/src/engine-components/AnimationCurve.ts +150 -150
- package/src/engine-components/AnimationUtils.ts +28 -28
- package/src/engine-components/AnimationUtilsAutoplay.ts +43 -43
- package/src/engine-components/Animator.ts +397 -397
- package/src/engine-components/AnimatorController.ts +1293 -1293
- package/src/engine-components/AudioListener.ts +92 -92
- package/src/engine-components/AudioSource.ts +644 -644
- package/src/engine-components/AvatarLoader.ts +263 -263
- package/src/engine-components/AxesHelper.ts +59 -59
- package/src/engine-components/BasicIKConstraint.ts +54 -54
- package/src/engine-components/BoxCollider.ts +1 -1
- package/src/engine-components/BoxHelperComponent.ts +114 -114
- package/src/engine-components/Camera.ts +719 -719
- package/src/engine-components/CameraUtils.ts +138 -138
- package/src/engine-components/CharacterController.ts +253 -253
- package/src/engine-components/Collider.ts +374 -374
- package/src/engine-components/Component.ts +1297 -1297
- package/src/engine-components/ContactShadows.ts +506 -506
- package/src/engine-components/DeleteBox.ts +62 -62
- package/src/engine-components/DeviceFlag.ts +46 -46
- package/src/engine-components/DragControls.ts +1623 -1623
- package/src/engine-components/DropListener.ts +713 -713
- package/src/engine-components/Duplicatable.ts +198 -198
- package/src/engine-components/EventList.ts +266 -266
- package/src/engine-components/EventTrigger.ts +74 -74
- package/src/engine-components/EventType.ts +22 -22
- package/src/engine-components/Fog.ts +60 -60
- package/src/engine-components/Gizmos.ts +56 -56
- package/src/engine-components/GridHelper.ts +48 -48
- package/src/engine-components/GroundProjection.ts +356 -356
- package/src/engine-components/Interactable.ts +14 -14
- package/src/engine-components/Joints.ts +52 -52
- package/src/engine-components/LODGroup.ts +153 -153
- package/src/engine-components/Light.ts +558 -558
- package/src/engine-components/LookAtConstraint.ts +25 -25
- package/src/engine-components/NeedleMenu.ts +84 -84
- package/src/engine-components/NestedGltf.ts +86 -86
- package/src/engine-components/Networking.ts +114 -114
- package/src/engine-components/OffsetConstraint.ts +60 -60
- package/src/engine-components/OrbitControls.ts +1074 -1074
- package/src/engine-components/PlayerColor.ts +103 -103
- package/src/engine-components/ReflectionProbe.ts +220 -220
- package/src/engine-components/Renderer.ts +903 -903
- package/src/engine-components/RendererInstancing.ts +855 -855
- package/src/engine-components/RendererLightmap.ts +198 -198
- package/src/engine-components/RigidBody.ts +526 -526
- package/src/engine-components/SceneSwitcher.ts +1030 -1030
- package/src/engine-components/ScreenCapture.ts +592 -592
- package/src/engine-components/ShadowCatcher.ts +172 -172
- package/src/engine-components/Skybox.ts +475 -475
- package/src/engine-components/SmoothFollow.ts +76 -76
- package/src/engine-components/SpatialTrigger.ts +229 -229
- package/src/engine-components/SpectatorCamera.ts +787 -787
- package/src/engine-components/SphereCollider.ts +1 -1
- package/src/engine-components/SpriteRenderer.ts +468 -468
- package/src/engine-components/SyncedCamera.ts +220 -220
- package/src/engine-components/SyncedRoom.ts +380 -380
- package/src/engine-components/SyncedTransform.ts +383 -383
- package/src/engine-components/TestRunner.ts +118 -118
- package/src/engine-components/TransformGizmo.ts +219 -219
- package/src/engine-components/VideoPlayer.ts +1025 -1025
- package/src/engine-components/Voip.ts +363 -363
- package/src/engine-components/api.ts +60 -60
- package/src/engine-components/avatar/AvatarBlink_Simple.ts +69 -69
- package/src/engine-components/avatar/AvatarEyeLook_Rotation.ts +63 -63
- package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +139 -139
- package/src/engine-components/avatar/Avatar_MouthShapes.ts +83 -83
- package/src/engine-components/avatar/Avatar_MustacheShake.ts +31 -31
- package/src/engine-components/codegen/components.ts +217 -217
- package/src/engine-components/debug/LogStats.ts +21 -21
- package/src/engine-components/export/gltf/GltfExport.ts +265 -265
- package/src/engine-components/export/usdz/Extension.ts +24 -24
- package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +2426 -2426
- package/src/engine-components/export/usdz/USDZExporter.ts +705 -705
- package/src/engine-components/export/usdz/extensions/Animation.ts +1204 -1204
- package/src/engine-components/export/usdz/extensions/DocumentExtension.ts +9 -9
- package/src/engine-components/export/usdz/extensions/NodeMaterialConverter.ts +532 -532
- package/src/engine-components/export/usdz/extensions/USDZText.ts +240 -240
- package/src/engine-components/export/usdz/extensions/USDZUI.ts +189 -189
- package/src/engine-components/export/usdz/extensions/behavior/Actions.ts +99 -99
- package/src/engine-components/export/usdz/extensions/behavior/AudioExtension.ts +102 -102
- package/src/engine-components/export/usdz/extensions/behavior/Behaviour.ts +320 -320
- package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +1225 -1225
- package/src/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.ts +646 -646
- package/src/engine-components/export/usdz/extensions/behavior/PhysicsExtension.ts +132 -132
- package/src/engine-components/export/usdz/index.ts +2 -2
- package/src/engine-components/export/usdz/utils/animationutils.ts +191 -191
- package/src/engine-components/export/usdz/utils/quicklook.ts +50 -50
- package/src/engine-components/particlesystem/ParticleSystem.ts +1287 -1287
- package/src/engine-components/particlesystem/ParticleSystemModules.ts +1765 -1765
- package/src/engine-components/particlesystem/ParticleSystemSubEmitter.ts +111 -111
- package/src/engine-components/particlesystem/api.ts +1 -1
- package/src/engine-components/postprocessing/Effects/Antialiasing.ts +64 -64
- package/src/engine-components/postprocessing/Effects/BloomEffect.ts +116 -116
- package/src/engine-components/postprocessing/Effects/ChromaticAberration.ts +37 -37
- package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +106 -106
- package/src/engine-components/postprocessing/Effects/DepthOfField.ts +103 -103
- package/src/engine-components/postprocessing/Effects/EffectWrapper.ts +25 -25
- package/src/engine-components/postprocessing/Effects/Pixelation.ts +32 -32
- package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.ts +90 -90
- package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts +192 -192
- package/src/engine-components/postprocessing/Effects/Sharpening.ts +143 -143
- package/src/engine-components/postprocessing/Effects/TiltShiftEffect.ts +61 -61
- package/src/engine-components/postprocessing/Effects/Tonemapping.ts +103 -103
- package/src/engine-components/postprocessing/Effects/Tonemapping.utils.ts +60 -60
- package/src/engine-components/postprocessing/Effects/Vignette.ts +59 -59
- package/src/engine-components/postprocessing/PostProcessingEffect.ts +192 -192
- package/src/engine-components/postprocessing/PostProcessingHandler.ts +572 -572
- package/src/engine-components/postprocessing/Volume.ts +426 -426
- package/src/engine-components/postprocessing/VolumeParameter.ts +158 -158
- package/src/engine-components/postprocessing/VolumeProfile.ts +61 -61
- package/src/engine-components/postprocessing/index.ts +5 -5
- package/src/engine-components/postprocessing/utils.ts +154 -154
- package/src/engine-components/timeline/PlayableDirector.ts +722 -722
- package/src/engine-components/timeline/SignalAsset.ts +144 -144
- package/src/engine-components/timeline/TimelineModels.ts +92 -92
- package/src/engine-components/timeline/TimelineTracks.ts +967 -967
- package/src/engine-components/timeline/index.ts +3 -3
- package/src/engine-components/ui/BaseUIComponent.ts +203 -203
- package/src/engine-components/ui/Button.ts +307 -307
- package/src/engine-components/ui/Canvas.ts +419 -419
- package/src/engine-components/ui/CanvasGroup.ts +54 -54
- package/src/engine-components/ui/EventSystem.ts +854 -854
- package/src/engine-components/ui/Graphic.ts +275 -275
- package/src/engine-components/ui/Image.ts +112 -112
- package/src/engine-components/ui/InputField.ts +321 -321
- package/src/engine-components/ui/Interfaces.ts +57 -57
- package/src/engine-components/ui/Layout.ts +334 -334
- package/src/engine-components/ui/Outline.ts +13 -13
- package/src/engine-components/ui/PointerEvents.ts +206 -206
- package/src/engine-components/ui/RaycastUtils.ts +69 -69
- package/src/engine-components/ui/Raycaster.ts +102 -102
- package/src/engine-components/ui/RectTransform.ts +375 -375
- package/src/engine-components/ui/SpatialHtml.ts +79 -79
- package/src/engine-components/ui/Symbols.ts +1 -1
- package/src/engine-components/ui/Text.ts +578 -578
- package/src/engine-components/ui/Utils.ts +113 -113
- package/src/engine-components/utils/EnvironmentScene.ts +245 -245
- package/src/engine-components/utils/LookAt.ts +88 -88
- package/src/engine-components/utils/OpenURL.ts +114 -114
- package/src/engine-components/webxr/Avatar.ts +265 -265
- package/src/engine-components/webxr/TeleportTarget.ts +9 -9
- package/src/engine-components/webxr/WebARCameraBackground.ts +175 -175
- package/src/engine-components/webxr/WebARSessionRoot.ts +880 -880
- package/src/engine-components/webxr/WebXR.ts +585 -585
- package/src/engine-components/webxr/WebXRAvatar.ts +66 -66
- package/src/engine-components/webxr/WebXRImageTracking.ts +519 -519
- package/src/engine-components/webxr/WebXRPlaneTracking.ts +570 -570
- package/src/engine-components/webxr/WebXRRig.ts +77 -77
- package/src/engine-components/webxr/XRFlag.ts +147 -147
- package/src/engine-components/webxr/controllers/XRControllerFollow.ts +118 -118
- package/src/engine-components/webxr/controllers/XRControllerModel.ts +373 -373
- package/src/engine-components/webxr/controllers/XRControllerMovement.ts +550 -550
- package/src/engine-components/webxr/index.ts +2 -2
- package/src/engine-components/webxr/types.ts +3 -3
- package/src/engine-components-experimental/Presentation.ts +12 -12
- package/src/engine-components-experimental/api.ts +4 -4
- package/src/engine-components-experimental/networking/PlayerSync.ts +401 -401
- package/src/engine-schemes/COMPILE_SCHEMES.bat +3 -3
- package/src/engine-schemes/COMPILE_TS.bat +11 -11
- package/src/engine-schemes/README.md +1 -1
- package/src/engine-schemes/api.ts +12 -12
- package/src/engine-schemes/schemes.ts +28 -28
- package/src/engine-schemes/synced-camera-model.ts +92 -92
- package/src/engine-schemes/synced-transform-model.ts +90 -90
- package/src/engine-schemes/syncedCamera.fbs +10 -10
- package/src/engine-schemes/transform.ts +50 -50
- package/src/engine-schemes/transforms.fbs +25 -25
- package/src/engine-schemes/vec.fbs +19 -19
- package/src/engine-schemes/vec2.ts +33 -33
- package/src/engine-schemes/vec3.ts +38 -38
- package/src/engine-schemes/vec4.ts +43 -43
- package/src/engine-schemes/vr-user-state-buffer.ts +145 -145
- package/src/engine-schemes/vrUserStateBuffer.fbs +17 -17
- package/src/include/draco/draco_decoder.js +34 -34
- package/src/include/ktx2/basis_transcoder.js +21 -21
- package/src/include/needle/arial-msdf.json +1471 -1471
- package/src/include/three/DragControls.js +231 -231
- package/src/include/three/EXT_mesh_gpu_instancing_exporter.js +66 -66
- package/src/needle-engine.ts +70 -70
- package/dist/generateMeshBVH.worker-Cdfpaq5W.js +0 -25
- package/dist/gltf-progressive-YjtQYFa9.js +0 -1052
- package/dist/gltf-progressive-yOP1mp5W.min.js +0 -8
- package/dist/gltf-progressive-zdhlW609.umd.cjs +0 -8
- package/src/engine-schemes/dist/api.js +0 -17
- package/src/engine-schemes/dist/api.js.meta +0 -7
- package/src/engine-schemes/dist/schemes.js +0 -25
- package/src/engine-schemes/dist/schemes.js.meta +0 -7
- package/src/engine-schemes/dist/synced-camera-model.js +0 -74
- package/src/engine-schemes/dist/synced-camera-model.js.meta +0 -7
- package/src/engine-schemes/dist/synced-transform-model.js +0 -73
- package/src/engine-schemes/dist/synced-transform-model.js.meta +0 -7
- package/src/engine-schemes/dist/transform.js +0 -46
- package/src/engine-schemes/dist/transform.js.meta +0 -7
- package/src/engine-schemes/dist/vec2.js +0 -32
- package/src/engine-schemes/dist/vec2.js.meta +0 -7
- package/src/engine-schemes/dist/vec3.js +0 -36
- package/src/engine-schemes/dist/vec3.js.meta +0 -7
- package/src/engine-schemes/dist/vec4.js +0 -40
- package/src/engine-schemes/dist/vec4.js.meta +0 -7
- package/src/engine-schemes/dist/vr-user-state-buffer.js +0 -110
- package/src/engine-schemes/dist/vr-user-state-buffer.js.meta +0 -7
|
@@ -1,371 +1,371 @@
|
|
|
1
|
-
import { ChildProcess, exec } from 'child_process';
|
|
2
|
-
import { NEEDLE_CLOUD_CLI_NAME } from '../common/cloud.js';
|
|
3
|
-
import { getOutputDirectory, loadConfig } from './config.js';
|
|
4
|
-
import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'fs';
|
|
5
|
-
import { copyFilesSync } from '../common/files.js';
|
|
6
|
-
import { delay } from '../common/timers.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @param {import('../types').userSettings} config
|
|
10
|
-
* @returns {boolean}
|
|
11
|
-
*/
|
|
12
|
-
function validateCloudBuildConfiguration(config) {
|
|
13
|
-
if (config.buildPipeline != undefined) {
|
|
14
|
-
if (process.env.CI) {
|
|
15
|
-
if ((process.env.NEEDLE_CLOUD_TOKEN == undefined || process.env.NEEDLE_CLOUD_TOKEN.length <= 0)) {
|
|
16
|
-
const isGithubAction = process.env.CI && process.env.GITHUB_ACTION;
|
|
17
|
-
let msg = `Missing Needle Cloud access token. Please set your Needle Cloud token via \`process.env.NEEDLE_CLOUD_TOKEN\`.`;
|
|
18
|
-
if (isGithubAction) {
|
|
19
|
-
msg += `
|
|
20
|
-
Make sure to pass the token as a secret to the Github action.
|
|
21
|
-
For this you may have to modify your .github workflow yaml file to include the following code:
|
|
22
|
-
env:
|
|
23
|
-
- NEEDLE_CLOUD_TOKEN: \${{ secrets.NEEDLE_CLOUD_TOKEN }}
|
|
24
|
-
`;
|
|
25
|
-
let error = `${msg}`;
|
|
26
|
-
throw new Error(error);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// see https://linear.app/needle/issue/NE-3798
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
/** @type {Promise<any>|null} */
|
|
39
|
-
let buildPipelineTask;
|
|
40
|
-
/** @type {null | {tempDirectory:string, outputDirectory:string}} */
|
|
41
|
-
let buildPipelineTaskResults = null;
|
|
42
|
-
|
|
43
|
-
export function waitForBuildPipelineToFinish() {
|
|
44
|
-
return buildPipelineTask;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/** This time is set when a build plugin is triggered to run
|
|
48
|
-
* We increase the time by 10-20 seconds each time because we might have a multi step process
|
|
49
|
-
* where the build pipeline is triggered in the SSR build (which we can not always detect)
|
|
50
|
-
* and the final client build is triggered later (but the build pipeline is still running and waiting)
|
|
51
|
-
*/
|
|
52
|
-
let maxOutputDirectoryCreatedWaitTime = 0;
|
|
53
|
-
/**
|
|
54
|
-
* @param {boolean} debugLog
|
|
55
|
-
*/
|
|
56
|
-
function increaseMaxWaitTime(debugLog) {
|
|
57
|
-
maxOutputDirectoryCreatedWaitTime = Date.now();
|
|
58
|
-
let maxWaitTime = 10_000;
|
|
59
|
-
if (process.env.CI) {
|
|
60
|
-
maxWaitTime += 50_000;
|
|
61
|
-
}
|
|
62
|
-
maxOutputDirectoryCreatedWaitTime += maxWaitTime;
|
|
63
|
-
if (debugLog) {
|
|
64
|
-
log(`Increased max wait time by ${maxWaitTime / 1000}sec until ${new Date(maxOutputDirectoryCreatedWaitTime).toISOString()}`);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Runs the needle build pipeline as part of the vite build process
|
|
70
|
-
* @param {string} command
|
|
71
|
-
* @param {import('vite').UserConfig} config
|
|
72
|
-
* @param {import('../types').userSettings} userSettings
|
|
73
|
-
* @returns {Promise<import('vite').Plugin | null>}
|
|
74
|
-
*/
|
|
75
|
-
export const needleBuildPipeline = async (command, config, userSettings) => {
|
|
76
|
-
|
|
77
|
-
// we only want to run compression here if this is a distribution build
|
|
78
|
-
// this is handled however in the `apply` hook
|
|
79
|
-
if (userSettings.noBuildPipeline) return null;
|
|
80
|
-
if (userSettings.buildPipeline?.enabled === false) {
|
|
81
|
-
log("Skipping build pipeline because it is disabled in the user settings via `buildPipeline.enabled: false`");
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const packageJsonPath = process.cwd() + "/package.json";
|
|
86
|
-
await fixPackageJson(packageJsonPath);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
let shouldRun = false;
|
|
90
|
-
const productionArgument = process.argv.indexOf("--production");
|
|
91
|
-
if (productionArgument >= 0) {
|
|
92
|
-
shouldRun = true;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (!shouldRun) {
|
|
96
|
-
log("Skipping build pipeline because this is a development build.\n- Invoke with `--production` to run the build pipeline.\n- For example \"vite build -- --production\".");
|
|
97
|
-
await new Promise((resolve, _) => setTimeout(resolve, 1000));
|
|
98
|
-
return null;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
if (process.env.CI) {
|
|
102
|
-
log("Running in CI environment");
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
validateCloudBuildConfiguration(userSettings);
|
|
106
|
-
|
|
107
|
-
const verboseOutput = userSettings?.buildPipeline?.verbose || false;
|
|
108
|
-
let taskHasCompleted = false;
|
|
109
|
-
|
|
110
|
-
return {
|
|
111
|
-
name: 'needle:buildpipeline',
|
|
112
|
-
enforce: "post",
|
|
113
|
-
apply: (_conf, env) => {
|
|
114
|
-
if (verboseOutput) {
|
|
115
|
-
log("Apply:", env);
|
|
116
|
-
}
|
|
117
|
-
// Don't run for SSR builds (e.g. sveltekit).
|
|
118
|
-
// Unfortunately this is always falls in vite 4.3 so we can not rely on it solely
|
|
119
|
-
if (env.ssrBuild) return false;
|
|
120
|
-
// Dont run if there's already a build pipeline task running
|
|
121
|
-
if (env.command === "build") {
|
|
122
|
-
increaseMaxWaitTime(verboseOutput);
|
|
123
|
-
if (buildPipelineTask) {
|
|
124
|
-
return false;
|
|
125
|
-
}
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
return false;
|
|
129
|
-
},
|
|
130
|
-
buildEnd(error) {
|
|
131
|
-
increaseMaxWaitTime(verboseOutput);
|
|
132
|
-
|
|
133
|
-
if (verboseOutput) {
|
|
134
|
-
log("Build end:", error ?? "No error");
|
|
135
|
-
}
|
|
136
|
-
if (error) {
|
|
137
|
-
// if there was an error during the build we should not run the build pipeline
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
if (buildPipelineTask) {
|
|
141
|
-
log("Build pipeline already running...");
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
let taskSucceeded = false;
|
|
145
|
-
// start the compression process once vite is done copying the files
|
|
146
|
-
buildPipelineTask = invokeBuildPipeline(userSettings, { verbose: verboseOutput })
|
|
147
|
-
.then((res) => {
|
|
148
|
-
if (verboseOutput) log("Build pipeline task result:", res);
|
|
149
|
-
taskSucceeded = res;
|
|
150
|
-
})
|
|
151
|
-
.catch(err => {
|
|
152
|
-
console.error("[needle-buildpipeline] - Error during build pipeline: " + err.message);
|
|
153
|
-
if (verboseOutput) log("Error details:", err);
|
|
154
|
-
})
|
|
155
|
-
.finally(() => {
|
|
156
|
-
taskHasCompleted = true;
|
|
157
|
-
if (!taskSucceeded) {
|
|
158
|
-
console.error("[needle-buildpipeline] - Build pipeline task did not succeed.");
|
|
159
|
-
throw new Error("[needle-buildpipeline] - Build pipeline failed. Please check the logs above for more information.");
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
log("Finished successfully");
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
closeBundle() {
|
|
168
|
-
if (!buildPipelineTask) {
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
if (!taskHasCompleted) {
|
|
172
|
-
log("Waiting for build pipeline to finish...");
|
|
173
|
-
}
|
|
174
|
-
// // this is the last hook that is called, so we can wait for the task to finish here
|
|
175
|
-
return buildPipelineTask = buildPipelineTask?.then(() => {
|
|
176
|
-
// Copy the results to their final output directory.
|
|
177
|
-
if (buildPipelineTaskResults != null) {
|
|
178
|
-
log(`Copying files from temporary output directory to final output directory at \"${buildPipelineTaskResults.outputDirectory}\"`);
|
|
179
|
-
const ctx = { count: 0 }
|
|
180
|
-
copyFilesSync(buildPipelineTaskResults.tempDirectory, buildPipelineTaskResults.outputDirectory, true, ctx);
|
|
181
|
-
log(`Copied ${ctx.count} file(s)`);
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
log("No files to copy - build pipeline did not run or did not finish successfully");
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
},
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Previously we did always install the build pipeline and run an extra command to invoke the build pipeline.
|
|
194
|
-
* This is now done automatically by the needle build pipeline plugin - so we update all legacy projects to use the new method.
|
|
195
|
-
* @param {string} packageJsonPath
|
|
196
|
-
*/
|
|
197
|
-
async function fixPackageJson(packageJsonPath) {
|
|
198
|
-
if (!existsSync(packageJsonPath)) {
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
const text = readFileSync(packageJsonPath, "utf8");
|
|
202
|
-
const oldScript = `"build:production": "npm run build:dev && npm run gltf:transform"`;
|
|
203
|
-
const newScript = `"build:production": "vite build -- --production"`;
|
|
204
|
-
const fixed = text.replace(oldScript, newScript);
|
|
205
|
-
if (fixed === text) return;
|
|
206
|
-
log("Automatically updated package.json production build script");
|
|
207
|
-
log("- FROM " + oldScript);
|
|
208
|
-
log("- TO " + newScript);
|
|
209
|
-
writeFileSync(packageJsonPath, fixed);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/** @param {any} args */
|
|
213
|
-
function log(...args) {
|
|
214
|
-
console.log("[needle-buildpipeline]", ...args);
|
|
215
|
-
}
|
|
216
|
-
/** @param {any} args */
|
|
217
|
-
function warn(...args) {
|
|
218
|
-
console.warn("WARN: [needle-buildpipeline]", ...args);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* @param {import('../types').userSettings} opts
|
|
223
|
-
* @param {{verbose?:boolean}} [options]
|
|
224
|
-
* @returns {Promise<boolean>}
|
|
225
|
-
*/
|
|
226
|
-
async function invokeBuildPipeline(opts, options = {}) {
|
|
227
|
-
const installPath = "node_modules/@needle-tools/gltf-build-pipeline";
|
|
228
|
-
const fullInstallPath = process.cwd() + "/" + installPath;
|
|
229
|
-
const existsLocally = existsSync(fullInstallPath);
|
|
230
|
-
if (existsLocally) {
|
|
231
|
-
log("Found local installation at " + fullInstallPath);
|
|
232
|
-
}
|
|
233
|
-
await delay(500);
|
|
234
|
-
const outputDirectory = getOutputDirectory() + "/assets";
|
|
235
|
-
const startWaitTime = Date.now();
|
|
236
|
-
const maxEndTime = startWaitTime + 120_000;
|
|
237
|
-
/** wait until the output directory exists
|
|
238
|
-
* @param {number} iteration
|
|
239
|
-
* @returns {Promise<boolean>}
|
|
240
|
-
*/
|
|
241
|
-
function waitForOutputDirectory(iteration) {
|
|
242
|
-
// we wait for the output directory
|
|
243
|
-
if (!existsSync(outputDirectory)) {
|
|
244
|
-
if (maxOutputDirectoryCreatedWaitTime != 0 && Date.now() > maxOutputDirectoryCreatedWaitTime) {
|
|
245
|
-
log("Max wait time exceeded - aborting...");
|
|
246
|
-
return Promise.resolve(false);
|
|
247
|
-
}
|
|
248
|
-
else if (Date.now() > maxEndTime) {
|
|
249
|
-
log("Max wait time exceeded - aborting...");
|
|
250
|
-
return Promise.resolve(false);
|
|
251
|
-
}
|
|
252
|
-
if (iteration <= 0) log(`Waiting for output directory to be created... (${outputDirectory})`);
|
|
253
|
-
return delay(1000).then(() => waitForOutputDirectory(iteration + 1));
|
|
254
|
-
}
|
|
255
|
-
if (options?.verbose) log(`Output directory found after ${iteration} iteration(s) at "${outputDirectory}" - continuing...`);
|
|
256
|
-
return Promise.resolve(true);
|
|
257
|
-
}
|
|
258
|
-
if (!await waitForOutputDirectory(0)) {
|
|
259
|
-
warn(`Output directory not found/created at \"${outputDirectory}\" - aborting...`);
|
|
260
|
-
return false;
|
|
261
|
-
}
|
|
262
|
-
const files = readdirSync(outputDirectory).filter(f => f.endsWith(".glb") || f.endsWith(".gltf") || f.endsWith(".vrm") || f.endsWith(".fbx"));
|
|
263
|
-
log(`${files.length} file(s) to process in ${outputDirectory}`);
|
|
264
|
-
|
|
265
|
-
/** @type {null | ChildProcess} */
|
|
266
|
-
let proc = null;
|
|
267
|
-
|
|
268
|
-
let cloudAccessToken = opts.buildPipeline?.accessToken || opts.license?.accessToken;
|
|
269
|
-
if (!cloudAccessToken) {
|
|
270
|
-
cloudAccessToken = process.env.NEEDLE_CLOUD_TOKEN;
|
|
271
|
-
}
|
|
272
|
-
const runInCloud = typeof cloudAccessToken === "string" && cloudAccessToken.length > 0;
|
|
273
|
-
// if a user has defined the build pipeline settings object but not passed in a token we should print out some information
|
|
274
|
-
// or perhaps log an error / prevent the build from running completely
|
|
275
|
-
if (opts.buildPipeline && !runInCloud && process.env.CI) {
|
|
276
|
-
warn(`No cloud access token found. Please set it via process.env.NEEDLE_CLOUD_TOKEN`);
|
|
277
|
-
return false;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
// put the processed files first in a temporary directory. They will be moved to the output directory at the end of the buildstep
|
|
282
|
-
// this is so that processes like sveltekit-static-adapter can run first and does not override already compressed files
|
|
283
|
-
const tempOutputPath = process.cwd() + "/node_modules/.needle/build-pipeline/output";
|
|
284
|
-
if (existsSync(tempOutputPath)) {
|
|
285
|
-
log("Removing temporary output directory at " + tempOutputPath);
|
|
286
|
-
rmSync(tempOutputPath, { recursive: true, force: true });
|
|
287
|
-
}
|
|
288
|
-
mkdirSync(tempOutputPath, { recursive: true });
|
|
289
|
-
|
|
290
|
-
/** @param {number} code */
|
|
291
|
-
function onExit(code) {
|
|
292
|
-
if (code === 0) {
|
|
293
|
-
buildPipelineTaskResults = {
|
|
294
|
-
tempDirectory: tempOutputPath,
|
|
295
|
-
outputDirectory: outputDirectory
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
// allow running the build pipeline in the cloud. It requires and access token to be set in the vite.config.js
|
|
301
|
-
// this can be set via e.g. process.env.NEEDLE_CLOUD_TOKEN
|
|
302
|
-
if (runInCloud) {
|
|
303
|
-
if (!cloudAccessToken || !(typeof cloudAccessToken === "string") || cloudAccessToken.length <= 0) {
|
|
304
|
-
throw new Error("No cloud access token configured. Please set it via process.env.NEEDLE_CLOUD_TOKEN or in the vite.config.js");
|
|
305
|
-
}
|
|
306
|
-
let cmd = `npx --yes ${NEEDLE_CLOUD_CLI_NAME} optimize "${outputDirectory}" --token ${cloudAccessToken}`;
|
|
307
|
-
let projectName = opts.buildPipeline?.projectName;
|
|
308
|
-
// Default project name for compression
|
|
309
|
-
// TODO: maybe this should be taken from the package.json name field or needle.config?
|
|
310
|
-
if (!projectName) {
|
|
311
|
-
projectName = "compression";
|
|
312
|
-
}
|
|
313
|
-
if (projectName) {
|
|
314
|
-
cmd += ` --name "${projectName}"`;
|
|
315
|
-
}
|
|
316
|
-
if (opts.buildPipeline?.verbose === true) {
|
|
317
|
-
cmd += " --verbose";
|
|
318
|
-
}
|
|
319
|
-
cmd += " --outdir \"" + tempOutputPath + "\"";
|
|
320
|
-
console.log("\n");
|
|
321
|
-
const obfuscatedToken = `${cloudAccessToken.slice(0, 2)}*****${cloudAccessToken.slice(-2)}`;
|
|
322
|
-
log(`Running compression in cloud ⛅ using access token: ${obfuscatedToken}`);
|
|
323
|
-
proc = exec(cmd);
|
|
324
|
-
}
|
|
325
|
-
else if (existsLocally) {
|
|
326
|
-
const cmd = `needle-gltf transform "${outputDirectory}" \"${tempOutputPath}\"`;
|
|
327
|
-
log("Running command \"" + cmd + "\" at " + process.cwd() + "...");
|
|
328
|
-
proc = exec(cmd, { cwd: installPath });
|
|
329
|
-
}
|
|
330
|
-
else {
|
|
331
|
-
const version = opts.buildPipeline?.version || "stable";
|
|
332
|
-
const cmd = `npx --yes @needle-tools/gltf-build-pipeline@${version} transform "${outputDirectory}" \"${tempOutputPath}\"`;
|
|
333
|
-
log(`Running compression locally with version ${version}`);
|
|
334
|
-
proc = exec(cmd);
|
|
335
|
-
}
|
|
336
|
-
/** @param {any} data */
|
|
337
|
-
function onLog(data) {
|
|
338
|
-
if (data.length <= 0) return;
|
|
339
|
-
// ensure that it doesnt end with a newline
|
|
340
|
-
while (data.endsWith("\n")) data = data.slice(0, -1);
|
|
341
|
-
if (typeof data === "string") {
|
|
342
|
-
if (data.startsWith("ERR:")) {
|
|
343
|
-
console.error(data);
|
|
344
|
-
return;
|
|
345
|
-
}
|
|
346
|
-
else if (data.startsWith("WARN:")) {
|
|
347
|
-
console.warn(data);
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
// Ignore empty lines
|
|
351
|
-
else if (data.trim().length <= 0) {
|
|
352
|
-
return;
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
log(data);
|
|
356
|
-
}
|
|
357
|
-
proc.stdout?.on('data', onLog);
|
|
358
|
-
proc.stderr?.on('data', onLog);
|
|
359
|
-
return new Promise((resolve, reject) => {
|
|
360
|
-
proc.on('exit', (code) => {
|
|
361
|
-
if (code === null || code === undefined) {
|
|
362
|
-
if (options?.verbose) log("Process exited with no code - assuming success");
|
|
363
|
-
code = 0;
|
|
364
|
-
}
|
|
365
|
-
const success = code === 0;
|
|
366
|
-
if (!success) log(`Process failed with exit code ${code}`);
|
|
367
|
-
onExit(code || 0);
|
|
368
|
-
resolve(success);
|
|
369
|
-
});
|
|
370
|
-
});
|
|
371
|
-
}
|
|
1
|
+
import { ChildProcess, exec } from 'child_process';
|
|
2
|
+
import { NEEDLE_CLOUD_CLI_NAME } from '../common/cloud.js';
|
|
3
|
+
import { getOutputDirectory, loadConfig } from './config.js';
|
|
4
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'fs';
|
|
5
|
+
import { copyFilesSync } from '../common/files.js';
|
|
6
|
+
import { delay } from '../common/timers.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @param {import('../types').userSettings} config
|
|
10
|
+
* @returns {boolean}
|
|
11
|
+
*/
|
|
12
|
+
function validateCloudBuildConfiguration(config) {
|
|
13
|
+
if (config.buildPipeline != undefined) {
|
|
14
|
+
if (process.env.CI) {
|
|
15
|
+
if ((process.env.NEEDLE_CLOUD_TOKEN == undefined || process.env.NEEDLE_CLOUD_TOKEN.length <= 0)) {
|
|
16
|
+
const isGithubAction = process.env.CI && process.env.GITHUB_ACTION;
|
|
17
|
+
let msg = `Missing Needle Cloud access token. Please set your Needle Cloud token via \`process.env.NEEDLE_CLOUD_TOKEN\`.`;
|
|
18
|
+
if (isGithubAction) {
|
|
19
|
+
msg += `
|
|
20
|
+
Make sure to pass the token as a secret to the Github action.
|
|
21
|
+
For this you may have to modify your .github workflow yaml file to include the following code:
|
|
22
|
+
env:
|
|
23
|
+
- NEEDLE_CLOUD_TOKEN: \${{ secrets.NEEDLE_CLOUD_TOKEN }}
|
|
24
|
+
`;
|
|
25
|
+
let error = `${msg}`;
|
|
26
|
+
throw new Error(error);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// see https://linear.app/needle/issue/NE-3798
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
/** @type {Promise<any>|null} */
|
|
39
|
+
let buildPipelineTask;
|
|
40
|
+
/** @type {null | {tempDirectory:string, outputDirectory:string}} */
|
|
41
|
+
let buildPipelineTaskResults = null;
|
|
42
|
+
|
|
43
|
+
export function waitForBuildPipelineToFinish() {
|
|
44
|
+
return buildPipelineTask;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** This time is set when a build plugin is triggered to run
|
|
48
|
+
* We increase the time by 10-20 seconds each time because we might have a multi step process
|
|
49
|
+
* where the build pipeline is triggered in the SSR build (which we can not always detect)
|
|
50
|
+
* and the final client build is triggered later (but the build pipeline is still running and waiting)
|
|
51
|
+
*/
|
|
52
|
+
let maxOutputDirectoryCreatedWaitTime = 0;
|
|
53
|
+
/**
|
|
54
|
+
* @param {boolean} debugLog
|
|
55
|
+
*/
|
|
56
|
+
function increaseMaxWaitTime(debugLog) {
|
|
57
|
+
maxOutputDirectoryCreatedWaitTime = Date.now();
|
|
58
|
+
let maxWaitTime = 10_000;
|
|
59
|
+
if (process.env.CI) {
|
|
60
|
+
maxWaitTime += 50_000;
|
|
61
|
+
}
|
|
62
|
+
maxOutputDirectoryCreatedWaitTime += maxWaitTime;
|
|
63
|
+
if (debugLog) {
|
|
64
|
+
log(`Increased max wait time by ${maxWaitTime / 1000}sec until ${new Date(maxOutputDirectoryCreatedWaitTime).toISOString()}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Runs the needle build pipeline as part of the vite build process
|
|
70
|
+
* @param {string} command
|
|
71
|
+
* @param {import('vite').UserConfig} config
|
|
72
|
+
* @param {import('../types').userSettings} userSettings
|
|
73
|
+
* @returns {Promise<import('vite').Plugin | null>}
|
|
74
|
+
*/
|
|
75
|
+
export const needleBuildPipeline = async (command, config, userSettings) => {
|
|
76
|
+
|
|
77
|
+
// we only want to run compression here if this is a distribution build
|
|
78
|
+
// this is handled however in the `apply` hook
|
|
79
|
+
if (userSettings.noBuildPipeline) return null;
|
|
80
|
+
if (userSettings.buildPipeline?.enabled === false) {
|
|
81
|
+
log("Skipping build pipeline because it is disabled in the user settings via `buildPipeline.enabled: false`");
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const packageJsonPath = process.cwd() + "/package.json";
|
|
86
|
+
await fixPackageJson(packageJsonPath);
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
let shouldRun = false;
|
|
90
|
+
const productionArgument = process.argv.indexOf("--production");
|
|
91
|
+
if (productionArgument >= 0) {
|
|
92
|
+
shouldRun = true;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (!shouldRun) {
|
|
96
|
+
log("Skipping build pipeline because this is a development build.\n- Invoke with `--production` to run the build pipeline.\n- For example \"vite build -- --production\".");
|
|
97
|
+
await new Promise((resolve, _) => setTimeout(resolve, 1000));
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (process.env.CI) {
|
|
102
|
+
log("Running in CI environment");
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
validateCloudBuildConfiguration(userSettings);
|
|
106
|
+
|
|
107
|
+
const verboseOutput = userSettings?.buildPipeline?.verbose || false;
|
|
108
|
+
let taskHasCompleted = false;
|
|
109
|
+
|
|
110
|
+
return {
|
|
111
|
+
name: 'needle:buildpipeline',
|
|
112
|
+
enforce: "post",
|
|
113
|
+
apply: (_conf, env) => {
|
|
114
|
+
if (verboseOutput) {
|
|
115
|
+
log("Apply:", env);
|
|
116
|
+
}
|
|
117
|
+
// Don't run for SSR builds (e.g. sveltekit).
|
|
118
|
+
// Unfortunately this is always falls in vite 4.3 so we can not rely on it solely
|
|
119
|
+
if (env.ssrBuild) return false;
|
|
120
|
+
// Dont run if there's already a build pipeline task running
|
|
121
|
+
if (env.command === "build") {
|
|
122
|
+
increaseMaxWaitTime(verboseOutput);
|
|
123
|
+
if (buildPipelineTask) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
return false;
|
|
129
|
+
},
|
|
130
|
+
buildEnd(error) {
|
|
131
|
+
increaseMaxWaitTime(verboseOutput);
|
|
132
|
+
|
|
133
|
+
if (verboseOutput) {
|
|
134
|
+
log("Build end:", error ?? "No error");
|
|
135
|
+
}
|
|
136
|
+
if (error) {
|
|
137
|
+
// if there was an error during the build we should not run the build pipeline
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
if (buildPipelineTask) {
|
|
141
|
+
log("Build pipeline already running...");
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
let taskSucceeded = false;
|
|
145
|
+
// start the compression process once vite is done copying the files
|
|
146
|
+
buildPipelineTask = invokeBuildPipeline(userSettings, { verbose: verboseOutput })
|
|
147
|
+
.then((res) => {
|
|
148
|
+
if (verboseOutput) log("Build pipeline task result:", res);
|
|
149
|
+
taskSucceeded = res;
|
|
150
|
+
})
|
|
151
|
+
.catch(err => {
|
|
152
|
+
console.error("[needle-buildpipeline] - Error during build pipeline: " + err.message);
|
|
153
|
+
if (verboseOutput) log("Error details:", err);
|
|
154
|
+
})
|
|
155
|
+
.finally(() => {
|
|
156
|
+
taskHasCompleted = true;
|
|
157
|
+
if (!taskSucceeded) {
|
|
158
|
+
console.error("[needle-buildpipeline] - Build pipeline task did not succeed.");
|
|
159
|
+
throw new Error("[needle-buildpipeline] - Build pipeline failed. Please check the logs above for more information.");
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
log("Finished successfully");
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
closeBundle() {
|
|
168
|
+
if (!buildPipelineTask) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (!taskHasCompleted) {
|
|
172
|
+
log("Waiting for build pipeline to finish...");
|
|
173
|
+
}
|
|
174
|
+
// // this is the last hook that is called, so we can wait for the task to finish here
|
|
175
|
+
return buildPipelineTask = buildPipelineTask?.then(() => {
|
|
176
|
+
// Copy the results to their final output directory.
|
|
177
|
+
if (buildPipelineTaskResults != null) {
|
|
178
|
+
log(`Copying files from temporary output directory to final output directory at \"${buildPipelineTaskResults.outputDirectory}\"`);
|
|
179
|
+
const ctx = { count: 0 }
|
|
180
|
+
copyFilesSync(buildPipelineTaskResults.tempDirectory, buildPipelineTaskResults.outputDirectory, true, ctx);
|
|
181
|
+
log(`Copied ${ctx.count} file(s)`);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
log("No files to copy - build pipeline did not run or did not finish successfully");
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
},
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Previously we did always install the build pipeline and run an extra command to invoke the build pipeline.
|
|
194
|
+
* This is now done automatically by the needle build pipeline plugin - so we update all legacy projects to use the new method.
|
|
195
|
+
* @param {string} packageJsonPath
|
|
196
|
+
*/
|
|
197
|
+
async function fixPackageJson(packageJsonPath) {
|
|
198
|
+
if (!existsSync(packageJsonPath)) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
const text = readFileSync(packageJsonPath, "utf8");
|
|
202
|
+
const oldScript = `"build:production": "npm run build:dev && npm run gltf:transform"`;
|
|
203
|
+
const newScript = `"build:production": "vite build -- --production"`;
|
|
204
|
+
const fixed = text.replace(oldScript, newScript);
|
|
205
|
+
if (fixed === text) return;
|
|
206
|
+
log("Automatically updated package.json production build script");
|
|
207
|
+
log("- FROM " + oldScript);
|
|
208
|
+
log("- TO " + newScript);
|
|
209
|
+
writeFileSync(packageJsonPath, fixed);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/** @param {any} args */
|
|
213
|
+
function log(...args) {
|
|
214
|
+
console.log("[needle-buildpipeline]", ...args);
|
|
215
|
+
}
|
|
216
|
+
/** @param {any} args */
|
|
217
|
+
function warn(...args) {
|
|
218
|
+
console.warn("WARN: [needle-buildpipeline]", ...args);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* @param {import('../types').userSettings} opts
|
|
223
|
+
* @param {{verbose?:boolean}} [options]
|
|
224
|
+
* @returns {Promise<boolean>}
|
|
225
|
+
*/
|
|
226
|
+
async function invokeBuildPipeline(opts, options = {}) {
|
|
227
|
+
const installPath = "node_modules/@needle-tools/gltf-build-pipeline";
|
|
228
|
+
const fullInstallPath = process.cwd() + "/" + installPath;
|
|
229
|
+
const existsLocally = existsSync(fullInstallPath);
|
|
230
|
+
if (existsLocally) {
|
|
231
|
+
log("Found local installation at " + fullInstallPath);
|
|
232
|
+
}
|
|
233
|
+
await delay(500);
|
|
234
|
+
const outputDirectory = getOutputDirectory() + "/assets";
|
|
235
|
+
const startWaitTime = Date.now();
|
|
236
|
+
const maxEndTime = startWaitTime + 120_000;
|
|
237
|
+
/** wait until the output directory exists
|
|
238
|
+
* @param {number} iteration
|
|
239
|
+
* @returns {Promise<boolean>}
|
|
240
|
+
*/
|
|
241
|
+
function waitForOutputDirectory(iteration) {
|
|
242
|
+
// we wait for the output directory
|
|
243
|
+
if (!existsSync(outputDirectory)) {
|
|
244
|
+
if (maxOutputDirectoryCreatedWaitTime != 0 && Date.now() > maxOutputDirectoryCreatedWaitTime) {
|
|
245
|
+
log("Max wait time exceeded - aborting...");
|
|
246
|
+
return Promise.resolve(false);
|
|
247
|
+
}
|
|
248
|
+
else if (Date.now() > maxEndTime) {
|
|
249
|
+
log("Max wait time exceeded - aborting...");
|
|
250
|
+
return Promise.resolve(false);
|
|
251
|
+
}
|
|
252
|
+
if (iteration <= 0) log(`Waiting for output directory to be created... (${outputDirectory})`);
|
|
253
|
+
return delay(1000).then(() => waitForOutputDirectory(iteration + 1));
|
|
254
|
+
}
|
|
255
|
+
if (options?.verbose) log(`Output directory found after ${iteration} iteration(s) at "${outputDirectory}" - continuing...`);
|
|
256
|
+
return Promise.resolve(true);
|
|
257
|
+
}
|
|
258
|
+
if (!await waitForOutputDirectory(0)) {
|
|
259
|
+
warn(`Output directory not found/created at \"${outputDirectory}\" - aborting...`);
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
const files = readdirSync(outputDirectory).filter(f => f.endsWith(".glb") || f.endsWith(".gltf") || f.endsWith(".vrm") || f.endsWith(".fbx"));
|
|
263
|
+
log(`${files.length} file(s) to process in ${outputDirectory}`);
|
|
264
|
+
|
|
265
|
+
/** @type {null | ChildProcess} */
|
|
266
|
+
let proc = null;
|
|
267
|
+
|
|
268
|
+
let cloudAccessToken = opts.buildPipeline?.accessToken || opts.license?.accessToken;
|
|
269
|
+
if (!cloudAccessToken) {
|
|
270
|
+
cloudAccessToken = process.env.NEEDLE_CLOUD_TOKEN;
|
|
271
|
+
}
|
|
272
|
+
const runInCloud = typeof cloudAccessToken === "string" && cloudAccessToken.length > 0;
|
|
273
|
+
// if a user has defined the build pipeline settings object but not passed in a token we should print out some information
|
|
274
|
+
// or perhaps log an error / prevent the build from running completely
|
|
275
|
+
if (opts.buildPipeline && !runInCloud && process.env.CI) {
|
|
276
|
+
warn(`No cloud access token found. Please set it via process.env.NEEDLE_CLOUD_TOKEN`);
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
// put the processed files first in a temporary directory. They will be moved to the output directory at the end of the buildstep
|
|
282
|
+
// this is so that processes like sveltekit-static-adapter can run first and does not override already compressed files
|
|
283
|
+
const tempOutputPath = process.cwd() + "/node_modules/.needle/build-pipeline/output";
|
|
284
|
+
if (existsSync(tempOutputPath)) {
|
|
285
|
+
log("Removing temporary output directory at " + tempOutputPath);
|
|
286
|
+
rmSync(tempOutputPath, { recursive: true, force: true });
|
|
287
|
+
}
|
|
288
|
+
mkdirSync(tempOutputPath, { recursive: true });
|
|
289
|
+
|
|
290
|
+
/** @param {number} code */
|
|
291
|
+
function onExit(code) {
|
|
292
|
+
if (code === 0) {
|
|
293
|
+
buildPipelineTaskResults = {
|
|
294
|
+
tempDirectory: tempOutputPath,
|
|
295
|
+
outputDirectory: outputDirectory
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// allow running the build pipeline in the cloud. It requires and access token to be set in the vite.config.js
|
|
301
|
+
// this can be set via e.g. process.env.NEEDLE_CLOUD_TOKEN
|
|
302
|
+
if (runInCloud) {
|
|
303
|
+
if (!cloudAccessToken || !(typeof cloudAccessToken === "string") || cloudAccessToken.length <= 0) {
|
|
304
|
+
throw new Error("No cloud access token configured. Please set it via process.env.NEEDLE_CLOUD_TOKEN or in the vite.config.js");
|
|
305
|
+
}
|
|
306
|
+
let cmd = `npx --yes ${NEEDLE_CLOUD_CLI_NAME} optimize "${outputDirectory}" --token ${cloudAccessToken}`;
|
|
307
|
+
let projectName = opts.buildPipeline?.projectName;
|
|
308
|
+
// Default project name for compression
|
|
309
|
+
// TODO: maybe this should be taken from the package.json name field or needle.config?
|
|
310
|
+
if (!projectName) {
|
|
311
|
+
projectName = "compression";
|
|
312
|
+
}
|
|
313
|
+
if (projectName) {
|
|
314
|
+
cmd += ` --name "${projectName}"`;
|
|
315
|
+
}
|
|
316
|
+
if (opts.buildPipeline?.verbose === true) {
|
|
317
|
+
cmd += " --verbose";
|
|
318
|
+
}
|
|
319
|
+
cmd += " --outdir \"" + tempOutputPath + "\"";
|
|
320
|
+
console.log("\n");
|
|
321
|
+
const obfuscatedToken = `${cloudAccessToken.slice(0, 2)}*****${cloudAccessToken.slice(-2)}`;
|
|
322
|
+
log(`Running compression in cloud ⛅ using access token: ${obfuscatedToken}`);
|
|
323
|
+
proc = exec(cmd);
|
|
324
|
+
}
|
|
325
|
+
else if (existsLocally) {
|
|
326
|
+
const cmd = `needle-gltf transform "${outputDirectory}" \"${tempOutputPath}\"`;
|
|
327
|
+
log("Running command \"" + cmd + "\" at " + process.cwd() + "...");
|
|
328
|
+
proc = exec(cmd, { cwd: installPath });
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
const version = opts.buildPipeline?.version || "stable";
|
|
332
|
+
const cmd = `npx --yes @needle-tools/gltf-build-pipeline@${version} transform "${outputDirectory}" \"${tempOutputPath}\"`;
|
|
333
|
+
log(`Running compression locally with version ${version}`);
|
|
334
|
+
proc = exec(cmd);
|
|
335
|
+
}
|
|
336
|
+
/** @param {any} data */
|
|
337
|
+
function onLog(data) {
|
|
338
|
+
if (data.length <= 0) return;
|
|
339
|
+
// ensure that it doesnt end with a newline
|
|
340
|
+
while (data.endsWith("\n")) data = data.slice(0, -1);
|
|
341
|
+
if (typeof data === "string") {
|
|
342
|
+
if (data.startsWith("ERR:")) {
|
|
343
|
+
console.error(data);
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
else if (data.startsWith("WARN:")) {
|
|
347
|
+
console.warn(data);
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
// Ignore empty lines
|
|
351
|
+
else if (data.trim().length <= 0) {
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
log(data);
|
|
356
|
+
}
|
|
357
|
+
proc.stdout?.on('data', onLog);
|
|
358
|
+
proc.stderr?.on('data', onLog);
|
|
359
|
+
return new Promise((resolve, reject) => {
|
|
360
|
+
proc.on('exit', (code) => {
|
|
361
|
+
if (code === null || code === undefined) {
|
|
362
|
+
if (options?.verbose) log("Process exited with no code - assuming success");
|
|
363
|
+
code = 0;
|
|
364
|
+
}
|
|
365
|
+
const success = code === 0;
|
|
366
|
+
if (!success) log(`Process failed with exit code ${code}`);
|
|
367
|
+
onExit(code || 0);
|
|
368
|
+
resolve(success);
|
|
369
|
+
});
|
|
370
|
+
});
|
|
371
|
+
}
|