From 4343c52466801225410e90892760eccebbf6f406 Mon Sep 17 00:00:00 2001 From: Yeicor <4929005+Yeicor@users.noreply.github.com> Date: Fri, 15 Nov 2024 22:56:34 +0100 Subject: [PATCH] Automatically configure default preload URL if the backend serves the frontend directly. Fixes #207 --- assets/licenses.txt | 102 +++++++++++++++++++------------------- frontend/misc/network.ts | 2 +- frontend/misc/settings.ts | 22 +++++++- package.json | 1 + vite.config.ts | 7 +++ yacv_server/myhttp.py | 24 +++++---- yarn.lock | 100 +++++++++++++++++++++++++++++++++++++ 7 files changed, 195 insertions(+), 63 deletions(-) diff --git a/assets/licenses.txt b/assets/licenses.txt index b129728..e86d46f 100644 --- a/assets/licenses.txt +++ b/assets/licenses.txt @@ -5,7 +5,7 @@ The following npm package may be included in this product: - @google/model-viewer@4.0.0 -This package contains the following license and notice below: +This package contains the following license: Apache License Version 2.0, January 2004 @@ -216,7 +216,7 @@ The following npm packages may be included in this product: - source-map-js@1.2.0 - source-map-js@1.2.1 -These packages each contain the following license and notice below: +These packages each contain the following license: Copyright (c) 2009-2011, Mozilla Foundation and contributors All rights reserved. @@ -255,7 +255,7 @@ The following npm packages may be included in this product: - ndarray-ops@1.2.2 - uniq@1.0.1 -These packages each contain the following license and notice below: +These packages each contain the following license: The MIT License (MIT) @@ -285,7 +285,7 @@ The following npm package may be included in this product: - ndarray@1.0.19 -This package contains the following license and notice below: +This package contains the following license: The MIT License (MIT) @@ -315,7 +315,7 @@ The following npm package may be included in this product: - promise-worker-transferable@1.0.4 -This package contains the following license and notice below: +This package contains the following license: Apache License Version 2.0, January 2004 @@ -525,7 +525,7 @@ The following npm package may be included in this product: - detect-libc@2.0.3 -This package contains the following license and notice below: +This package contains the following license: Apache License Version 2.0, January 2004 @@ -736,7 +736,7 @@ The following npm packages may be included in this product: - @types/ndarray@1.0.14 - @types/trusted-types@2.0.7 -These packages each contain the following license and notice below: +These packages each contain the following license: MIT License @@ -766,7 +766,7 @@ The following npm package may be included in this product: - lie@3.3.0 -This package contains the following license and notice below: +This package contains the following license: #Copyright (c) 2014-2018 Calvin Metcalf, Jordan Harband @@ -782,7 +782,7 @@ The following npm package may be included in this product: - sharp@0.33.4 -This package contains the following license and notice below: +This package contains the following license: Apache License Version 2.0, January 2004 @@ -982,7 +982,7 @@ The following npm package may be included in this product: - typescript@5.6.3 -This package contains the following license and notice below: +This package contains the following license: Apache License @@ -1048,7 +1048,7 @@ The following npm packages may be included in this product: - lit-element@3.3.3 - lit@2.8.0 -These packages each contain the following license and notice below: +These packages each contain the following license: BSD 3-Clause License @@ -1085,7 +1085,7 @@ The following npm package may be included in this product: - lit-html@2.8.0 -This package contains the following license and notice below: +This package contains the following license: BSD 3-Clause License @@ -1122,7 +1122,7 @@ The following npm package may be included in this product: - @lit-labs/ssr-dom-shim@1.2.0 -This package contains the following license and notice below: +This package contains the following license: BSD-3-Clause @@ -1132,7 +1132,7 @@ The following npm package may be included in this product: - color-string@1.9.1 -This package contains the following license and notice below: +This package contains the following license: Copyright (c) 2011 Heather Arthur @@ -1161,7 +1161,7 @@ The following npm package may be included in this product: - color-convert@2.0.1 -This package contains the following license and notice below: +This package contains the following license: Copyright (c) 2011-2016 Heather Arthur @@ -1190,7 +1190,7 @@ The following npm package may be included in this product: - immediate@3.0.6 -This package contains the following license and notice below: +This package contains the following license: Copyright (c) 2012 Barnesandnoble.com, llc, Donavon West, Domenic Denicola, Brian Cavalier @@ -1219,7 +1219,7 @@ The following npm package may be included in this product: - color@4.2.3 -This package contains the following license and notice below: +This package contains the following license: Copyright (c) 2012 Heather Arthur @@ -1248,7 +1248,7 @@ The following npm package may be included in this product: - @babel/parser@7.25.3 -This package contains the following license and notice below: +This package contains the following license: Copyright (C) 2012-2014 by various contributors (see AUTHORS) @@ -1276,7 +1276,7 @@ The following npm package may be included in this product: - is-promise@2.2.2 -This package contains the following license and notice below: +This package contains the following license: Copyright (c) 2014 Forbes Lindesay @@ -1304,7 +1304,7 @@ The following npm package may be included in this product: - estree-walker@2.0.2 -This package contains the following license and notice below: +This package contains the following license: Copyright (c) 2015-20 [these people](https://github.com/Rich-Harris/estree-walker/graphs/contributors) @@ -1320,7 +1320,7 @@ The following npm package may be included in this product: - csstype@3.1.3 -This package contains the following license and notice below: +This package contains the following license: Copyright (c) 2017-2018 Fredrik Nicol @@ -1348,7 +1348,7 @@ The following npm package may be included in this product: - entities@4.5.0 -This package contains the following license and notice below: +This package contains the following license: Copyright (c) Felix Böhm All rights reserved. @@ -1368,7 +1368,7 @@ The following npm package may be included in this product: - magic-string@0.30.11 -This package contains the following license and notice below: +This package contains the following license: Copyright 2018 Rich Harris @@ -1384,7 +1384,7 @@ The following npm package may be included in this product: - picocolors@1.1.0 -This package contains the following license and notice below: +This package contains the following license: ISC License @@ -1408,7 +1408,7 @@ The following npm package may be included in this product: - to-fast-properties@2.0.0 -This package contains the following license and notice below: +This package contains the following license: MIT License @@ -1429,7 +1429,7 @@ The following npm packages may be included in this product: - @babel/helper-validator-identifier@7.24.7 - @babel/types@7.25.2 -These packages each contain the following license and notice below: +These packages each contain the following license: MIT License @@ -1460,7 +1460,7 @@ The following npm package may be included in this product: - three-mesh-bvh@0.8.2 -This package contains the following license and notice below: +This package contains the following license: MIT License @@ -1490,7 +1490,7 @@ The following npm package may be included in this product: - three-orientation-gizmo@1.1.0 -This package contains the following license and notice below: +This package contains the following license: MIT License @@ -1520,7 +1520,7 @@ The following npm package may be included in this product: - @monogrid/gainmap-js@3.0.3 -This package contains the following license and notice below: +This package contains the following license: MIT License @@ -1550,7 +1550,7 @@ The following npm package may be included in this product: - @jamescoyle/vue-icon@0.1.2 -This package contains the following license and notice below: +This package contains the following license: MIT License @@ -1581,7 +1581,7 @@ The following npm packages may be included in this product: - @mdi/js@7.4.47 - @mdi/svg@7.4.47 -These packages each contain the following license and notice below: +These packages each contain the following license: Pictogrammers Free License -------------------------- @@ -1610,7 +1610,7 @@ The following npm package may be included in this product: - semver@7.6.2 -This package contains the following license and notice below: +This package contains the following license: The ISC License @@ -1634,7 +1634,7 @@ The following npm package may be included in this product: - @jridgewell/sourcemap-codec@1.5.0 -This package contains the following license and notice below: +This package contains the following license: The MIT License @@ -1664,7 +1664,7 @@ The following npm package may be included in this product: - three@0.125.2 -This package contains the following license and notice below: +This package contains the following license: The MIT License @@ -1694,7 +1694,7 @@ The following npm package may be included in this product: - three@0.169.0 -This package contains the following license and notice below: +This package contains the following license: The MIT License @@ -1724,7 +1724,7 @@ The following npm package may be included in this product: - is-arrayish@0.3.2 -This package contains the following license and notice below: +This package contains the following license: The MIT License (MIT) @@ -1754,7 +1754,7 @@ The following npm package may be included in this product: - simple-swizzle@0.2.2 -This package contains the following license and notice below: +This package contains the following license: The MIT License (MIT) @@ -1782,9 +1782,9 @@ THE SOFTWARE. The following npm package may be included in this product: - - vuetify@3.7.3 + - vuetify@3.7.4 -This package contains the following license and notice below: +This package contains the following license: The MIT License (MIT) @@ -1823,7 +1823,7 @@ The following npm packages may be included in this product: - @vue/shared@3.5.12 - vue@3.5.12 -These packages each contain the following license and notice below: +These packages each contain the following license: The MIT License (MIT) @@ -1853,7 +1853,7 @@ The following npm package may be included in this product: - ktx-parse@0.7.1 -This package contains the following license and notice below: +This package contains the following license: The MIT License (MIT) @@ -1883,9 +1883,9 @@ The following npm packages may be included in this product: - ndarray-lanczos@0.3.0 - ndarray-pixels@4.1.0 - - property-graph@2.0.0 + - property-graph@3.0.0 -These packages each contain the following license and notice below: +These packages each contain the following license: The MIT License (MIT) @@ -1913,11 +1913,11 @@ SOFTWARE. The following npm packages may be included in this product: - - @gltf-transform/core@4.0.10 - - @gltf-transform/extensions@4.0.10 - - @gltf-transform/functions@4.0.10 + - @gltf-transform/core@4.1.0 + - @gltf-transform/extensions@4.1.0 + - @gltf-transform/functions@4.1.0 -These packages each contain the following license and notice below: +These packages each contain the following license: The MIT License (MIT) @@ -1947,7 +1947,7 @@ The following npm package may be included in this product: - is-buffer@1.1.6 -This package contains the following license and notice below: +This package contains the following license: The MIT License (MIT) @@ -1977,7 +1977,7 @@ The following npm package may be included in this product: - postcss@8.4.47 -This package contains the following license and notice below: +This package contains the following license: The MIT License (MIT) @@ -2006,7 +2006,7 @@ The following npm package may be included in this product: - nanoid@3.3.7 -This package contains the following license and notice below: +This package contains the following license: The MIT License (MIT) @@ -2035,7 +2035,7 @@ The following npm package may be included in this product: - color-name@1.1.4 -This package contains the following license and notice below: +This package contains the following license: The MIT License (MIT) Copyright (c) 2015 Dmitry Ivanov diff --git a/frontend/misc/network.ts b/frontend/misc/network.ts index 78edde9..c4bcbcb 100644 --- a/frontend/misc/network.ts +++ b/frontend/misc/network.ts @@ -43,7 +43,7 @@ export class NetworkManager extends EventTarget { * Updates will be emitted as "update" events, including the download URL and the model name. */ async load(url: string) { - if (url.startsWith("dev+")) { + if (url.startsWith("dev+") || url.startsWith("dev ")) { let baseUrl = new URL(url.slice(4)); baseUrl.searchParams.set("api_updates", "true"); await this.monitorDevServer(baseUrl); diff --git a/frontend/misc/settings.ts b/frontend/misc/settings.ts index 54d4eaf..98e0500 100644 --- a/frontend/misc/settings.ts +++ b/frontend/misc/settings.ts @@ -10,7 +10,7 @@ export const settings = { // @ts-ignore // new URL('../../assets/logo_build/img.jpg.glb', import.meta.url).href, // Websocket URLs automatically listen for new models from the python backend - "dev+http://127.0.0.1:32323/" + '', // Get the default preload URL if not overridden ], loadHelpers: true, edgeWidth: 0, /* The default line size for edges, set to 0 to use basic gl.LINEs */ @@ -64,4 +64,22 @@ function parseSetting(name: string, value: string): any { const url = new URL(window.location.href); url.searchParams.forEach((value, key) => { if (key in settings) (settings as any)[key] = parseSetting(key, value); -}) \ No newline at end of file +}) + +// Get the default preload URL if not overridden (requires a fetch that is avoided if possible) +for (let i = 0; i < settings.preload.length; i++) { + let url = settings.preload[i]; + if (url === '') { + const possibleBackend = new URL("./?api_updates=true", window.location.href) + await fetch(possibleBackend, {method: "HEAD"}).then((response) => { + if (response.ok && response.headers.get("Content-Type") === "text/event-stream") { + // Frontend served by the backend: default to this URL for updates + url = "dev+" + possibleBackend.href; + } + }).catch((error) => console.error("Failed to check for backend:", error)); + if (url === '') { // Fallback to the default preload URL of localhost + url = "dev+http://localhost:32323"; + } + } + settings.preload[i] = url; +} diff --git a/package.json b/package.json index 1234762..74fa54f 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "terser": "^5.36.0", "typescript": "~5.6.3", "vite": "^5.4.10", + "vite-plugin-top-level-await": "^1.4.4", "vue-tsc": "^2.1.10" } } diff --git a/vite.config.ts b/vite.config.ts index 081facb..615601d 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,6 +5,7 @@ import vue from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' import {name, version} from './package.json' import {execSync} from 'child_process' +import topLevelAwait from "vite-plugin-top-level-await"; // https://vitejs.dev/config/ export default defineConfig({ @@ -18,6 +19,12 @@ export default defineConfig({ } }), vueJsx(), + topLevelAwait({ + // The export name of top-level await promise for each chunk module + promiseExportName: "__tla", + // The function to generate import names of top-level await promise in each chunk module + promiseImportName: i => `__tla_${i}` + }), ], resolve: { alias: { diff --git a/yacv_server/myhttp.py b/yacv_server/myhttp.py index 672da44..4eede72 100644 --- a/yacv_server/myhttp.py +++ b/yacv_server/myhttp.py @@ -1,7 +1,7 @@ import io import os import urllib.parse -from http import HTTPStatus +from http import HTTPStatus, HTTPMethod from http.server import SimpleHTTPRequestHandler from yacv_server.mylogger import logger @@ -71,6 +71,19 @@ class HTTPHandler(SimpleHTTPRequestHandler): def _api_updates(self): """Handles a publish-only websocket connection that send show_object events along with their hashes and URLs""" + self.send_response(HTTPStatus.OK) + self.send_header("Content-Type", "text/event-stream") + self.send_header("Cache-Control", "no-cache") + if not self.requestline.startswith(HTTPMethod.HEAD): + # Chunked transfer encoding! + self.send_header("Transfer-Encoding", "chunked") + else: + self.send_header("Content-Length", "0") + self.end_headers() + + if self.requestline.startswith(HTTPMethod.HEAD): + return + # Keep a shared read lock to know if any frontend is still working before shutting down with self.yacv.frontend_lock.r_locked(): @@ -81,13 +94,6 @@ class HTTPHandler(SimpleHTTPRequestHandler): self.yacv.at_least_one_client.set() logger.debug('Updates client connected') - self.send_response(HTTPStatus.OK) - self.send_header("Content-Type", "text/event-stream") - self.send_header("Cache-Control", "no-cache") - # Chunked transfer encoding! - self.send_header("Transfer-Encoding", "chunked") - self.end_headers() - def write_chunk(_chunk_data: str): self.wfile.write(hex(len(_chunk_data))[2:].encode('utf-8')) self.wfile.write(b'\r\n') @@ -107,7 +113,7 @@ class HTTPHandler(SimpleHTTPRequestHandler): # noinspection PyUnresolvedReferences to_send = data.to_json() write_chunk(f'data: {to_send}\n\n') - except BrokenPipeError: # Client disconnected normally + except (BrokenPipeError, ConnectionResetError): # Client disconnected normally pass finally: subscription.close() diff --git a/yarn.lock b/yarn.lock index b43316d..cdbd51d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -954,6 +954,11 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@rollup/plugin-virtual@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz#17e17eeecb4c9fa1c0a6e72c9e5f66382fddbb82" + integrity sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A== + "@rollup/rollup-android-arm-eabi@4.22.4": version "4.22.4" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz#8b613b9725e8f9479d142970b106b6ae878610d5" @@ -1080,6 +1085,87 @@ "@sigstore/core" "^2.0.0" "@sigstore/protobuf-specs" "^0.3.2" +"@swc/core-darwin-arm64@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.2.tgz#98b60a56229c4341c1263723f985e04f3f82d499" + integrity sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A== + +"@swc/core-darwin-x64@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.9.2.tgz#6bb1be573878acf42aa6abd6b602ef0136cc00de" + integrity sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ== + +"@swc/core-linux-arm-gnueabihf@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.2.tgz#e63f57f2e214f06d711bed830d53af0597749647" + integrity sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg== + +"@swc/core-linux-arm64-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.2.tgz#cb26240fe5769c1675ac75717ec836e99a7f7e93" + integrity sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA== + +"@swc/core-linux-arm64-musl@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.2.tgz#0e4733e4e4398bee0c030a4e97279f78a65d4e61" + integrity sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA== + +"@swc/core-linux-x64-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.2.tgz#6b4b86d06537004cc4477915b67f7d94d1b6ba33" + integrity sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg== + +"@swc/core-linux-x64-musl@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.2.tgz#d6de84dbdcf69b1fdb45c8ae232b7d23ba92c7e2" + integrity sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg== + +"@swc/core-win32-arm64-msvc@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.2.tgz#a5c477f0296e499890f55cfaa7c0100152b1900b" + integrity sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw== + +"@swc/core-win32-ia32-msvc@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.2.tgz#66bbfea8cfcf6b602b8fb0d9ee788e92c8a736ed" + integrity sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ== + +"@swc/core-win32-x64-msvc@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.2.tgz#f609fefac8f412b445cb0a2bfec73a657e41d4db" + integrity sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw== + +"@swc/core@^1.7.0": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.9.2.tgz#226bdc5033ba0af85c0bf814b16bdc1df0070d35" + integrity sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.15" + optionalDependencies: + "@swc/core-darwin-arm64" "1.9.2" + "@swc/core-darwin-x64" "1.9.2" + "@swc/core-linux-arm-gnueabihf" "1.9.2" + "@swc/core-linux-arm64-gnu" "1.9.2" + "@swc/core-linux-arm64-musl" "1.9.2" + "@swc/core-linux-x64-gnu" "1.9.2" + "@swc/core-linux-x64-musl" "1.9.2" + "@swc/core-win32-arm64-msvc" "1.9.2" + "@swc/core-win32-ia32-msvc" "1.9.2" + "@swc/core-win32-x64-msvc" "1.9.2" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/types@^0.1.15": + version "0.1.15" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.15.tgz#9a3b3873d93382750b823aaeabca787bd3fa7c96" + integrity sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw== + dependencies: + "@swc/counter" "^0.1.3" + "@tsconfig/node20@^20.1.4": version "20.1.4" resolved "https://registry.yarnpkg.com/@tsconfig/node20/-/node20-20.1.4.tgz#3457d42eddf12d3bde3976186ab0cd22b85df928" @@ -3230,6 +3316,11 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +uuid@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== + validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -3243,6 +3334,15 @@ validate-npm-package-name@^6.0.0: resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-6.0.0.tgz#3add966c853cfe36e0e8e6a762edd72ae6f1d6ac" integrity sha512-d7KLgL1LD3U3fgnvWEY1cQXoO/q6EQ1BSz48Sa149V/5zVTAbgmZIpyI8TRi6U9/JNyeYLlTKsEMPtLC27RFUg== +vite-plugin-top-level-await@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.4.4.tgz#4900e06bfb7179de20aaa9b4730d04022a9e259e" + integrity sha512-QyxQbvcMkgt+kDb12m2P8Ed35Sp6nXP+l8ptGrnHV9zgYDUpraO0CPdlqLSeBqvY2DToR52nutDG7mIHuysdiw== + dependencies: + "@rollup/plugin-virtual" "^3.0.2" + "@swc/core" "^1.7.0" + uuid "^10.0.0" + vite@^5.4.10: version "5.4.10" resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.10.tgz#d358a7bd8beda6cf0f3b7a450a8c7693a4f80c18"