Jake Wilkinson 2025-11-13 10:45:18 +08:00
parent 244dcf3893
commit 52bf4dc0bc
66 changed files with 10208 additions and 13092 deletions

View File

@ -1,38 +1,38 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<title>URDF Robot Viewer</title> <title>URDF Robot Viewer</title>
<style> <style>
body { body {
margin: 0; margin: 0;
overflow: hidden; overflow: hidden;
background-color: #111; background-color: #111;
} }
#status { #status {
position: absolute; position: absolute;
top: 10px; top: 10px;
left: 10px; left: 10px;
color: white; color: white;
background: rgba(0, 0, 0, 0.5); background: rgba(0, 0, 0, 0.5);
padding: 6px 10px; padding: 6px 10px;
border-radius: 4px; border-radius: 4px;
font-family: sans-serif; font-family: sans-serif;
font-size: 14px; font-size: 14px;
} }
</style> </style>
</head> </head>
<body> <body>
<div id="status">Loading URDF...</div> <div id="status">Loading URDF...</div>
<canvas id="urdf-canvas"></canvas> <canvas id="urdf-canvas"></canvas>
<!-- Your logic --> <!-- Your logic -->
<script type="module" src="script.js"></script> <script type="module" src="script.js"></script>
</body> </body>
</html> </html>

34
node_modules/.bin/esbuild.cmd generated vendored
View File

@ -1,17 +1,17 @@
@ECHO off @ECHO off
GOTO start GOTO start
:find_dp0 :find_dp0
SET dp0=%~dp0 SET dp0=%~dp0
EXIT /b EXIT /b
:start :start
SETLOCAL SETLOCAL
CALL :find_dp0 CALL :find_dp0
IF EXIST "%dp0%\node.exe" ( IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe" SET "_prog=%dp0%\node.exe"
) ELSE ( ) ELSE (
SET "_prog=node" SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;% SET PATHEXT=%PATHEXT:;.JS;=;%
) )
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esbuild\bin\esbuild" %* endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esbuild\bin\esbuild" %*

34
node_modules/.bin/nanoid.cmd generated vendored
View File

@ -1,17 +1,17 @@
@ECHO off @ECHO off
GOTO start GOTO start
:find_dp0 :find_dp0
SET dp0=%~dp0 SET dp0=%~dp0
EXIT /b EXIT /b
:start :start
SETLOCAL SETLOCAL
CALL :find_dp0 CALL :find_dp0
IF EXIST "%dp0%\node.exe" ( IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe" SET "_prog=%dp0%\node.exe"
) ELSE ( ) ELSE (
SET "_prog=node" SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;% SET PATHEXT=%PATHEXT:;.JS;=;%
) )
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %* endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %*

34
node_modules/.bin/rollup.cmd generated vendored
View File

@ -1,17 +1,17 @@
@ECHO off @ECHO off
GOTO start GOTO start
:find_dp0 :find_dp0
SET dp0=%~dp0 SET dp0=%~dp0
EXIT /b EXIT /b
:start :start
SETLOCAL SETLOCAL
CALL :find_dp0 CALL :find_dp0
IF EXIST "%dp0%\node.exe" ( IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe" SET "_prog=%dp0%\node.exe"
) ELSE ( ) ELSE (
SET "_prog=node" SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;% SET PATHEXT=%PATHEXT:;.JS;=;%
) )
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rollup\dist\bin\rollup" %* endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rollup\dist\bin\rollup" %*

16
node_modules/.bin/vite generated vendored
View File

@ -1,16 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
else
exec node "$basedir/../vite/bin/vite.js" "$@"
fi

1
node_modules/.bin/vite generated vendored Symbolic link
View File

@ -0,0 +1 @@
../vite/bin/vite.js

34
node_modules/.bin/vite.cmd generated vendored
View File

@ -1,17 +1,17 @@
@ECHO off @ECHO off
GOTO start GOTO start
:find_dp0 :find_dp0
SET dp0=%~dp0 SET dp0=%~dp0
EXIT /b EXIT /b
:start :start
SETLOCAL SETLOCAL
CALL :find_dp0 CALL :find_dp0
IF EXIST "%dp0%\node.exe" ( IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe" SET "_prog=%dp0%\node.exe"
) ELSE ( ) ELSE (
SET "_prog=node" SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;% SET PATHEXT=%PATHEXT:;.JS;=;%
) )
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite\bin\vite.js" %* endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite\bin\vite.js" %*

52
node_modules/.package-lock.json generated vendored
View File

@ -4,6 +4,23 @@
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"node_modules/@esbuild/linux-x64": {
"version": "0.25.12",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
"integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-x64": { "node_modules/@esbuild/win32-x64": {
"version": "0.25.12", "version": "0.25.12",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
@ -21,6 +38,34 @@
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.52.5",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz",
"integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.52.5",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz",
"integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-win32-x64-gnu": { "node_modules/@rollup/rollup-win32-x64-gnu": {
"version": "4.52.5", "version": "4.52.5",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz",
@ -260,11 +305,10 @@
} }
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "7.1.12", "version": "7.2.2",
"resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz",
"integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"esbuild": "^0.25.0", "esbuild": "^0.25.0",
"fdir": "^6.5.0", "fdir": "^6.5.0",

View File

@ -1,52 +1,37 @@
{ {
"hash": "d903b885", "hash": "9696e02b",
"configHash": "3e836f7b", "configHash": "e103e9de",
"lockfileHash": "e28807c3", "lockfileHash": "8d45ad8a",
"browserHash": "9a7a5c1b", "browserHash": "8e3e062d",
"optimized": { "optimized": {
"three": { "three": {
"src": "../../three/build/three.module.js", "src": "../../three/build/three.module.js",
"file": "three.js", "file": "three.js",
"fileHash": "357a2d6a", "fileHash": "acdec5e5",
"needsInterop": false "needsInterop": false
}, },
"three/examples/jsm/controls/OrbitControls.js": { "three/examples/jsm/controls/OrbitControls.js": {
"src": "../../three/examples/jsm/controls/OrbitControls.js", "src": "../../three/examples/jsm/controls/OrbitControls.js",
"file": "three_examples_jsm_controls_OrbitControls__js.js", "file": "three_examples_jsm_controls_OrbitControls__js.js",
"fileHash": "06df99c3", "fileHash": "c1a4f949",
"needsInterop": false
},
"three/examples/jsm/controls/TransformControls.js": {
"src": "../../three/examples/jsm/controls/TransformControls.js",
"file": "three_examples_jsm_controls_TransformControls__js.js",
"fileHash": "0772f5bb",
"needsInterop": false "needsInterop": false
}, },
"three/examples/jsm/loaders/ColladaLoader.js": { "three/examples/jsm/loaders/ColladaLoader.js": {
"src": "../../three/examples/jsm/loaders/ColladaLoader.js", "src": "../../three/examples/jsm/loaders/ColladaLoader.js",
"file": "three_examples_jsm_loaders_ColladaLoader__js.js", "file": "three_examples_jsm_loaders_ColladaLoader__js.js",
"fileHash": "9054d4c1", "fileHash": "dcb1087e",
"needsInterop": false "needsInterop": false
}, },
"three/examples/jsm/loaders/STLLoader.js": { "three/examples/jsm/loaders/STLLoader.js": {
"src": "../../three/examples/jsm/loaders/STLLoader.js", "src": "../../three/examples/jsm/loaders/STLLoader.js",
"file": "three_examples_jsm_loaders_STLLoader__js.js", "file": "three_examples_jsm_loaders_STLLoader__js.js",
"fileHash": "3632de55", "fileHash": "618ff280",
"needsInterop": false "needsInterop": false
},
"esbuild": {
"src": "../../esbuild/lib/main.js",
"file": "esbuild.js",
"fileHash": "0a908aaf",
"needsInterop": true
} }
}, },
"chunks": { "chunks": {
"chunk-22FAE54D": { "chunk-5P7KF7VS": {
"file": "chunk-22FAE54D.js" "file": "chunk-5P7KF7VS.js"
},
"chunk-VUNV25KB": {
"file": "chunk-VUNV25KB.js"
} }
} }
} }

View File

@ -44170,14 +44170,4 @@ export {
WebGLUtils, WebGLUtils,
WebGLRenderer WebGLRenderer
}; };
/*! Bundled license information: //# sourceMappingURL=chunk-5P7KF7VS.js.map
three/build/three.core.js:
three/build/three.module.js:
(**
* @license
* Copyright 2010-2025 Three.js Authors
* SPDX-License-Identifier: MIT
*)
*/
//# sourceMappingURL=chunk-22FAE54D.js.map

View File

@ -1,15 +0,0 @@
var __getOwnPropNames = Object.getOwnPropertyNames;
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
}) : x)(function(x) {
if (typeof require !== "undefined") return require.apply(this, arguments);
throw Error('Dynamic require of "' + x + '" is not supported');
});
var __commonJS = (cb, mod) => function __require2() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
export {
__require,
__commonJS
};

View File

@ -1,7 +0,0 @@
{
"version": 3,
"sources": [],
"sourcesContent": [],
"mappings": "",
"names": []
}

2309
node_modules/.vite/deps/esbuild.js generated vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

3
node_modules/.vite/deps/three.js generated vendored
View File

@ -427,8 +427,7 @@ import {
setConsoleFunction, setConsoleFunction,
warn, warn,
warnOnce warnOnce
} from "./chunk-22FAE54D.js"; } from "./chunk-5P7KF7VS.js";
import "./chunk-VUNV25KB.js";
export { export {
ACESFilmicToneMapping, ACESFilmicToneMapping,
AddEquation, AddEquation,

View File

@ -9,8 +9,7 @@ import {
TOUCH, TOUCH,
Vector2, Vector2,
Vector3 Vector3
} from "./chunk-22FAE54D.js"; } from "./chunk-5P7KF7VS.js";
import "./chunk-VUNV25KB.js";
// node_modules/three/examples/jsm/controls/OrbitControls.js // node_modules/three/examples/jsm/controls/OrbitControls.js
var _changeEvent = { type: "change" }; var _changeEvent = { type: "change" };

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -40,8 +40,7 @@ import {
Vector2, Vector2,
Vector3, Vector3,
VectorKeyframeTrack VectorKeyframeTrack
} from "./chunk-22FAE54D.js"; } from "./chunk-5P7KF7VS.js";
import "./chunk-VUNV25KB.js";
// node_modules/three/examples/jsm/loaders/TGALoader.js // node_modules/three/examples/jsm/loaders/TGALoader.js
var TGALoader = class extends DataTextureLoader { var TGALoader = class extends DataTextureLoader {

File diff suppressed because one or more lines are too long

View File

@ -7,8 +7,7 @@ import {
Loader, Loader,
SRGBColorSpace, SRGBColorSpace,
Vector3 Vector3
} from "./chunk-22FAE54D.js"; } from "./chunk-5P7KF7VS.js";
import "./chunk-VUNV25KB.js";
// node_modules/three/examples/jsm/loaders/STLLoader.js // node_modules/three/examples/jsm/loaders/STLLoader.js
var STLLoader = class extends Loader { var STLLoader = class extends Loader {

File diff suppressed because one or more lines are too long

3
node_modules/@esbuild/linux-x64/README.md generated vendored Normal file
View File

@ -0,0 +1,3 @@
# esbuild
This is the Linux 64-bit binary for esbuild, a JavaScript bundler and minifier. See https://github.com/evanw/esbuild for details.

BIN
node_modules/@esbuild/linux-x64/bin/esbuild generated vendored Normal file

Binary file not shown.

20
node_modules/@esbuild/linux-x64/package.json generated vendored Normal file
View File

@ -0,0 +1,20 @@
{
"name": "@esbuild/linux-x64",
"version": "0.25.12",
"description": "The Linux 64-bit binary for esbuild, a JavaScript bundler.",
"repository": {
"type": "git",
"url": "git+https://github.com/evanw/esbuild.git"
},
"license": "MIT",
"preferUnplugged": true,
"engines": {
"node": ">=18"
},
"os": [
"linux"
],
"cpu": [
"x64"
]
}

3
node_modules/@rollup/rollup-linux-x64-gnu/README.md generated vendored Normal file
View File

@ -0,0 +1,3 @@
# `@rollup/rollup-linux-x64-gnu`
This is the **x86_64-unknown-linux-gnu** binary for `rollup`

25
node_modules/@rollup/rollup-linux-x64-gnu/package.json generated vendored Normal file
View File

@ -0,0 +1,25 @@
{
"name": "@rollup/rollup-linux-x64-gnu",
"version": "4.52.5",
"os": [
"linux"
],
"cpu": [
"x64"
],
"files": [
"rollup.linux-x64-gnu.node"
],
"description": "Native bindings for Rollup",
"author": "Lukas Taegert-Atkinson",
"homepage": "https://rollupjs.org/",
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/rollup/rollup.git"
},
"libc": [
"glibc"
],
"main": "./rollup.linux-x64-gnu.node"
}

Binary file not shown.

3
node_modules/@rollup/rollup-linux-x64-musl/README.md generated vendored Normal file
View File

@ -0,0 +1,3 @@
# `@rollup/rollup-linux-x64-musl`
This is the **x86_64-unknown-linux-musl** binary for `rollup`

View File

@ -0,0 +1,25 @@
{
"name": "@rollup/rollup-linux-x64-musl",
"version": "4.52.5",
"os": [
"linux"
],
"cpu": [
"x64"
],
"files": [
"rollup.linux-x64-musl.node"
],
"description": "Native bindings for Rollup",
"author": "Lukas Taegert-Atkinson",
"homepage": "https://rollupjs.org/",
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/rollup/rollup.git"
},
"libc": [
"musl"
],
"main": "./rollup.linux-x64-musl.node"
}

Binary file not shown.

30
node_modules/@types/estree/README.md generated vendored
View File

@ -1,15 +1,15 @@
# Installation # Installation
> `npm install --save @types/estree` > `npm install --save @types/estree`
# Summary # Summary
This package contains type definitions for estree (https://github.com/estree/estree). This package contains type definitions for estree (https://github.com/estree/estree).
# Details # Details
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree. Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree.
### Additional Details ### Additional Details
* Last updated: Fri, 06 Jun 2025 00:04:33 GMT * Last updated: Fri, 06 Jun 2025 00:04:33 GMT
* Dependencies: none * Dependencies: none
# Credits # Credits
These definitions were written by [RReverser](https://github.com/RReverser). These definitions were written by [RReverser](https://github.com/RReverser).

140
node_modules/rollup/dist/bin/rollup generated vendored
View File

@ -1246,76 +1246,76 @@ yargsParser.camelCase = camelCase;
yargsParser.decamelize = decamelize; yargsParser.decamelize = decamelize;
yargsParser.looksLikeNumber = looksLikeNumber; yargsParser.looksLikeNumber = looksLikeNumber;
/****************************************************************************** /******************************************************************************
Copyright (c) Microsoft Corporation. Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted. purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE. PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */ ***************************************************************************** */
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
function __addDisposableResource(env, value, async) { function __addDisposableResource(env, value, async) {
if (value !== null && value !== void 0) { if (value !== null && value !== void 0) {
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
var dispose, inner; var dispose, inner;
if (async) { if (async) {
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
dispose = value[Symbol.asyncDispose]; dispose = value[Symbol.asyncDispose];
} }
if (dispose === void 0) { if (dispose === void 0) {
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
dispose = value[Symbol.dispose]; dispose = value[Symbol.dispose];
if (async) inner = dispose; if (async) inner = dispose;
} }
if (typeof dispose !== "function") throw new TypeError("Object not disposable."); if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
env.stack.push({ value: value, dispose: dispose, async: async }); env.stack.push({ value: value, dispose: dispose, async: async });
} }
else if (async) { else if (async) {
env.stack.push({ async: true }); env.stack.push({ async: true });
} }
return value; return value;
} }
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
var e = new Error(message); var e = new Error(message);
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
}; };
function __disposeResources(env) { function __disposeResources(env) {
function fail(e) { function fail(e) {
env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
env.hasError = true; env.hasError = true;
} }
var r, s = 0; var r, s = 0;
function next() { function next() {
while (r = env.stack.pop()) { while (r = env.stack.pop()) {
try { try {
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
if (r.dispose) { if (r.dispose) {
var result = r.dispose.call(r.value); var result = r.dispose.call(r.value);
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
} }
else s |= 1; else s |= 1;
} }
catch (e) { catch (e) {
fail(e); fail(e);
} }
} }
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
if (env.hasError) throw env.error; if (env.hasError) throw env.error;
} }
return next(); return next();
} }
const toZeroIfInfinity = value => Number.isFinite(value) ? value : 0; const toZeroIfInfinity = value => Number.isFinite(value) ? value : 0;

162
node_modules/vite/LICENSE.md generated vendored
View File

@ -31,7 +31,7 @@ BSD-2-Clause, CC0-1.0, ISC, MIT
## @jridgewell/gen-mapping, @jridgewell/remapping, @jridgewell/sourcemap-codec, @jridgewell/trace-mapping ## @jridgewell/gen-mapping, @jridgewell/remapping, @jridgewell/sourcemap-codec, @jridgewell/trace-mapping
License: MIT License: MIT
By: Justin Ridgewell By: Justin Ridgewell
Repositories: git+https://github.com/jridgewell/sourcemaps.git, git+https://github.com/jridgewell/sourcemaps.git, git+https://github.com/jridgewell/sourcemaps.git, git+https://github.com/jridgewell/sourcemaps.git Repositories: https://github.com/jridgewell/sourcemaps, https://github.com/jridgewell/sourcemaps, https://github.com/jridgewell/sourcemaps, https://github.com/jridgewell/sourcemaps
> Copyright 2024 Justin Ridgewell <justin@ridgewell.name> > Copyright 2024 Justin Ridgewell <justin@ridgewell.name>
> >
@ -84,20 +84,20 @@ Repository: https://github.com/jridgewell/resolve-uri
## @polka/compression ## @polka/compression
License: MIT License: MIT
Repository: lukeed/polka Repository: https://github.com/lukeed/polka
--------------------------------------- ---------------------------------------
## @polka/url ## @polka/url
License: MIT License: MIT
By: Luke Edwards By: Luke Edwards
Repository: lukeed/polka Repository: https://github.com/lukeed/polka
--------------------------------------- ---------------------------------------
## @rolldown/pluginutils ## @rolldown/pluginutils
License: MIT License: MIT
Repository: git+https://github.com/rolldown/rolldown.git Repository: https://github.com/rolldown/rolldown
> MIT License > MIT License
> >
@ -130,19 +130,19 @@ Repository: git+https://github.com/rolldown/rolldown.git
## @rollup/plugin-alias, @rollup/plugin-commonjs, @rollup/plugin-dynamic-import-vars, @rollup/pluginutils ## @rollup/plugin-alias, @rollup/plugin-commonjs, @rollup/plugin-dynamic-import-vars, @rollup/pluginutils
License: MIT License: MIT
By: Johannes Stein By: Johannes Stein
Repository: rollup/plugins Repository: https://github.com/rollup/plugins
License: MIT License: MIT
By: Rich Harris By: Rich Harris
Repository: rollup/plugins Repository: https://github.com/rollup/plugins
License: MIT License: MIT
By: LarsDenBakker By: LarsDenBakker
Repository: rollup/plugins Repository: https://github.com/rollup/plugins
License: MIT License: MIT
By: Rich Harris By: Rich Harris
Repository: rollup/plugins Repository: https://github.com/rollup/plugins
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -194,7 +194,7 @@ Repository: https://github.com/micromatch/anymatch
## artichokie ## artichokie
License: MIT License: MIT
By: sapphi-red, Evan You By: sapphi-red, Evan You
Repository: git+https://github.com/sapphi-red/artichokie.git Repository: https://github.com/sapphi-red/artichokie
> MIT License > MIT License
> >
@ -224,7 +224,7 @@ Repository: git+https://github.com/sapphi-red/artichokie.git
## binary-extensions ## binary-extensions
License: MIT License: MIT
By: Sindre Sorhus By: Sindre Sorhus
Repository: sindresorhus/binary-extensions Repository: https://github.com/sindresorhus/binary-extensions
> MIT License > MIT License
> >
@ -242,15 +242,15 @@ Repository: sindresorhus/binary-extensions
## braces, fill-range, is-number ## braces, fill-range, is-number
License: MIT License: MIT
By: Jon Schlinkert, Brian Woodward, Elan Shanker, Eugene Sharygin, hemanth.hm By: Jon Schlinkert, Brian Woodward, Elan Shanker, Eugene Sharygin, hemanth.hm
Repository: micromatch/braces Repository: https://github.com/micromatch/braces
License: MIT License: MIT
By: Jon Schlinkert, Edo Rivai, Paul Miller, Rouven Weßling By: Jon Schlinkert, Edo Rivai, Paul Miller, Rouven Weßling
Repository: jonschlinkert/fill-range Repository: https://github.com/jonschlinkert/fill-range
License: MIT License: MIT
By: Jon Schlinkert, Olsten Larck, Rouven Weßling By: Jon Schlinkert, Olsten Larck, Rouven Weßling
Repository: jonschlinkert/is-number Repository: https://github.com/jonschlinkert/is-number
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -279,7 +279,7 @@ Repository: jonschlinkert/is-number
## bundle-name, default-browser, default-browser-id, define-lazy-prop, is-docker, is-inside-container, is-wsl, open, run-applescript, wsl-utils ## bundle-name, default-browser, default-browser-id, define-lazy-prop, is-docker, is-inside-container, is-wsl, open, run-applescript, wsl-utils
License: MIT License: MIT
By: Sindre Sorhus By: Sindre Sorhus
Repositories: sindresorhus/bundle-name, sindresorhus/default-browser, sindresorhus/default-browser-id, sindresorhus/define-lazy-prop, sindresorhus/is-docker, sindresorhus/is-inside-container, sindresorhus/is-wsl, sindresorhus/open, sindresorhus/run-applescript, sindresorhus/wsl-utils Repositories: https://github.com/sindresorhus/bundle-name, https://github.com/sindresorhus/default-browser, https://github.com/sindresorhus/default-browser-id, https://github.com/sindresorhus/define-lazy-prop, https://github.com/sindresorhus/is-docker, https://github.com/sindresorhus/is-inside-container, https://github.com/sindresorhus/is-wsl, https://github.com/sindresorhus/open, https://github.com/sindresorhus/run-applescript, https://github.com/sindresorhus/wsl-utils
> MIT License > MIT License
> >
@ -296,7 +296,7 @@ Repositories: sindresorhus/bundle-name, sindresorhus/default-browser, sindresorh
## cac ## cac
License: MIT License: MIT
By: egoist By: egoist
Repository: egoist/cac Repository: https://github.com/egoist/cac
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -325,7 +325,7 @@ Repository: egoist/cac
## chokidar ## chokidar
License: MIT License: MIT
By: Paul Miller, Elan Shanker By: Paul Miller, Elan Shanker
Repository: git+https://github.com/paulmillr/chokidar.git Repository: https://github.com/paulmillr/chokidar
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -354,7 +354,7 @@ Repository: git+https://github.com/paulmillr/chokidar.git
## commondir, shell-quote ## commondir, shell-quote
License: MIT License: MIT
By: James Halliday By: James Halliday
Repositories: http://github.com/substack/node-commondir.git, http://github.com/ljharb/shell-quote.git Repositories: http://github.com/substack/node-commondir, http://github.com/ljharb/shell-quote
> The MIT License > The MIT License
> >
@ -386,7 +386,7 @@ Repositories: http://github.com/substack/node-commondir.git, http://github.com/l
## connect ## connect
License: MIT License: MIT
By: TJ Holowaychuk, Douglas Christopher Wilson, Jonathan Ong, Tim Caswell By: TJ Holowaychuk, Douglas Christopher Wilson, Jonathan Ong, Tim Caswell
Repository: senchalabs/connect Repository: https://github.com/senchalabs/connect
> (The MIT License) > (The MIT License)
> >
@ -419,7 +419,7 @@ Repository: senchalabs/connect
## convert-source-map ## convert-source-map
License: MIT License: MIT
By: Thorsten Lorenz By: Thorsten Lorenz
Repository: git://github.com/thlorenz/convert-source-map.git Repository: https://github.com/thlorenz/convert-source-map
> Copyright 2013 Thorsten Lorenz. > Copyright 2013 Thorsten Lorenz.
> All rights reserved. > All rights reserved.
@ -450,7 +450,7 @@ Repository: git://github.com/thlorenz/convert-source-map.git
## cors ## cors
License: MIT License: MIT
By: Troy Goode By: Troy Goode
Repository: expressjs/cors Repository: https://github.com/expressjs/cors
> (The MIT License) > (The MIT License)
> >
@ -480,7 +480,7 @@ Repository: expressjs/cors
## cross-spawn ## cross-spawn
License: MIT License: MIT
By: André Cruz By: André Cruz
Repository: git@github.com:moxystudio/node-cross-spawn.git Repository: https://github.com/moxystudio/node-cross-spawn
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -509,7 +509,7 @@ Repository: git@github.com:moxystudio/node-cross-spawn.git
## cssesc ## cssesc
License: MIT License: MIT
By: Mathias Bynens By: Mathias Bynens
Repository: https://github.com/mathiasbynens/cssesc.git Repository: https://github.com/mathiasbynens/cssesc
> Copyright Mathias Bynens <https://mathiasbynens.be/> > Copyright Mathias Bynens <https://mathiasbynens.be/>
> >
@ -537,7 +537,7 @@ Repository: https://github.com/mathiasbynens/cssesc.git
## debug ## debug
License: MIT License: MIT
By: Josh Junon, TJ Holowaychuk, Nathan Rajlich, Andrew Rhyne By: Josh Junon, TJ Holowaychuk, Nathan Rajlich, Andrew Rhyne
Repository: git://github.com/debug-js/debug.git Repository: https://github.com/debug-js/debug
> (The MIT License) > (The MIT License)
> >
@ -563,7 +563,7 @@ Repository: git://github.com/debug-js/debug.git
## dotenv ## dotenv
License: BSD-2-Clause License: BSD-2-Clause
Repository: git://github.com/motdotla/dotenv.git Repository: https://github.com/motdotla/dotenv
> Copyright (c) 2015, Scott Motte > Copyright (c) 2015, Scott Motte
> All rights reserved. > All rights reserved.
@ -625,7 +625,7 @@ Repository: https://github.com/motdotla/dotenv-expand
## ee-first ## ee-first
License: MIT License: MIT
By: Jonathan Ong, Douglas Christopher Wilson By: Jonathan Ong, Douglas Christopher Wilson
Repository: jonathanong/ee-first Repository: https://github.com/jonathanong/ee-first
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -654,7 +654,7 @@ Repository: jonathanong/ee-first
## encodeurl ## encodeurl
License: MIT License: MIT
By: Douglas Christopher Wilson By: Douglas Christopher Wilson
Repository: pillarjs/encodeurl Repository: https://github.com/pillarjs/encodeurl
> (The MIT License) > (The MIT License)
> >
@ -684,7 +684,7 @@ Repository: pillarjs/encodeurl
## entities ## entities
License: BSD-2-Clause License: BSD-2-Clause
By: Felix Boehm By: Felix Boehm
Repository: git://github.com/fb55/entities.git Repository: https://github.com/fb55/entities
> Copyright (c) Felix Böhm > Copyright (c) Felix Böhm
> All rights reserved. > All rights reserved.
@ -703,7 +703,7 @@ Repository: git://github.com/fb55/entities.git
## es-module-lexer ## es-module-lexer
License: MIT License: MIT
By: Guy Bedford By: Guy Bedford
Repository: git+https://github.com/guybedford/es-module-lexer.git Repository: https://github.com/guybedford/es-module-lexer
> MIT License > MIT License
> ----------- > -----------
@ -720,7 +720,7 @@ Repository: git+https://github.com/guybedford/es-module-lexer.git
## escape-html ## escape-html
License: MIT License: MIT
Repository: component/escape-html Repository: https://github.com/component/escape-html
> (The MIT License) > (The MIT License)
> >
@ -767,7 +767,7 @@ Repository: https://github.com/Rich-Harris/estree-walker
## etag ## etag
License: MIT License: MIT
By: Douglas Christopher Wilson, David Björklund By: Douglas Christopher Wilson, David Björklund
Repository: jshttp/etag Repository: https://github.com/jshttp/etag
> (The MIT License) > (The MIT License)
> >
@ -797,7 +797,7 @@ Repository: jshttp/etag
## finalhandler ## finalhandler
License: MIT License: MIT
By: Douglas Christopher Wilson By: Douglas Christopher Wilson
Repository: pillarjs/finalhandler Repository: https://github.com/pillarjs/finalhandler
> (The MIT License) > (The MIT License)
> >
@ -827,7 +827,7 @@ Repository: pillarjs/finalhandler
## follow-redirects ## follow-redirects
License: MIT License: MIT
By: Ruben Verborgh, Olivier Lalonde, James Talmage By: Ruben Verborgh, Olivier Lalonde, James Talmage
Repository: git+ssh://git@github.com/follow-redirects/follow-redirects.git Repository: https://github.com/follow-redirects/follow-redirects
> Copyright 2014present Olivier Lalonde <olalonde@gmail.com>, James Talmage <james@talmage.io>, Ruben Verborgh > Copyright 2014present Olivier Lalonde <olalonde@gmail.com>, James Talmage <james@talmage.io>, Ruben Verborgh
> >
@ -853,7 +853,7 @@ Repository: git+ssh://git@github.com/follow-redirects/follow-redirects.git
## generic-names ## generic-names
License: MIT License: MIT
By: Alexey Litvinov By: Alexey Litvinov
Repository: git+https://github.com/css-modules/generic-names.git Repository: https://github.com/css-modules/generic-names
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -882,7 +882,7 @@ Repository: git+https://github.com/css-modules/generic-names.git
## glob-parent ## glob-parent
License: ISC License: ISC
By: Gulp Team, Elan Shanker, Blaine Bublitz By: Gulp Team, Elan Shanker, Blaine Bublitz
Repository: gulpjs/glob-parent Repository: https://github.com/gulpjs/glob-parent
> The ISC License > The ISC License
> >
@ -905,7 +905,7 @@ Repository: gulpjs/glob-parent
## host-validation-middleware ## host-validation-middleware
License: MIT License: MIT
By: sapphi-red By: sapphi-red
Repository: git+https://github.com/sapphi-red/host-validation-middleware.git Repository: https://github.com/sapphi-red/host-validation-middleware
> MIT License > MIT License
> >
@ -934,7 +934,7 @@ Repository: git+https://github.com/sapphi-red/host-validation-middleware.git
## http-proxy-3 ## http-proxy-3
License: MIT License: MIT
By: William Stein, Charlie Robbins, Jimb Esser, jcrugzz By: William Stein, Charlie Robbins, Jimb Esser, jcrugzz
Repository: https://github.com/sagemathinc/http-proxy-3.git Repository: https://github.com/sagemathinc/http-proxy-3
> node-http-3 > node-http-3
> >
@ -964,7 +964,7 @@ Repository: https://github.com/sagemathinc/http-proxy-3.git
## icss-utils ## icss-utils
License: ISC License: ISC
By: Glen Maddern By: Glen Maddern
Repository: git+https://github.com/css-modules/icss-utils.git Repository: https://github.com/css-modules/icss-utils
> ISC License (ISC) > ISC License (ISC)
> Copyright 2018 Glen Maddern > Copyright 2018 Glen Maddern
@ -978,7 +978,7 @@ Repository: git+https://github.com/css-modules/icss-utils.git
## is-binary-path ## is-binary-path
License: MIT License: MIT
By: Sindre Sorhus By: Sindre Sorhus
Repository: sindresorhus/is-binary-path Repository: https://github.com/sindresorhus/is-binary-path
> MIT License > MIT License
> >
@ -995,7 +995,7 @@ Repository: sindresorhus/is-binary-path
## is-extglob ## is-extglob
License: MIT License: MIT
By: Jon Schlinkert By: Jon Schlinkert
Repository: jonschlinkert/is-extglob Repository: https://github.com/jonschlinkert/is-extglob
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1024,7 +1024,7 @@ Repository: jonschlinkert/is-extglob
## is-glob ## is-glob
License: MIT License: MIT
By: Jon Schlinkert, Brian Woodward, Daniel Perez By: Jon Schlinkert, Brian Woodward, Daniel Perez
Repository: micromatch/is-glob Repository: https://github.com/micromatch/is-glob
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1053,14 +1053,14 @@ Repository: micromatch/is-glob
## is-reference ## is-reference
License: MIT License: MIT
By: Rich Harris By: Rich Harris
Repository: git+https://github.com/Rich-Harris/is-reference.git Repository: https://github.com/Rich-Harris/is-reference
--------------------------------------- ---------------------------------------
## isexe, which ## isexe, which
License: ISC License: ISC
By: Isaac Z. Schlueter By: Isaac Z. Schlueter
Repositories: git+https://github.com/isaacs/isexe.git, git://github.com/isaacs/node-which.git Repositories: https://github.com/isaacs/isexe, https://github.com/isaacs/node-which
> The ISC License > The ISC License
> >
@ -1083,7 +1083,7 @@ Repositories: git+https://github.com/isaacs/isexe.git, git://github.com/isaacs/n
## js-tokens ## js-tokens
License: MIT License: MIT
By: Simon Lydell By: Simon Lydell
Repository: lydell/js-tokens Repository: https://github.com/lydell/js-tokens
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1112,7 +1112,7 @@ Repository: lydell/js-tokens
## launch-editor, launch-editor-middleware ## launch-editor, launch-editor-middleware
License: MIT License: MIT
By: Evan You By: Evan You
Repositories: git+https://github.com/yyx990803/launch-editor.git, git+https://github.com/yyx990803/launch-editor.git Repositories: https://github.com/yyx990803/launch-editor, https://github.com/yyx990803/launch-editor
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1170,7 +1170,7 @@ Repository: https://github.com/antonk52/lilconfig
## loader-utils ## loader-utils
License: MIT License: MIT
By: Tobias Koppers @sokra By: Tobias Koppers @sokra
Repository: https://github.com/webpack/loader-utils.git Repository: https://github.com/webpack/loader-utils
> Copyright JS Foundation and other contributors > Copyright JS Foundation and other contributors
> >
@ -1198,7 +1198,7 @@ Repository: https://github.com/webpack/loader-utils.git
## lodash.camelcase ## lodash.camelcase
License: MIT License: MIT
By: John-David Dalton, Blaine Bublitz, Mathias Bynens By: John-David Dalton, Blaine Bublitz, Mathias Bynens
Repository: lodash/lodash Repository: https://github.com/lodash/lodash
> Copyright jQuery Foundation and other contributors <https://jquery.org/> > Copyright jQuery Foundation and other contributors <https://jquery.org/>
> >
@ -1253,7 +1253,7 @@ Repository: lodash/lodash
## magic-string ## magic-string
License: MIT License: MIT
By: Rich Harris By: Rich Harris
Repository: https://github.com/rich-harris/magic-string.git Repository: https://github.com/Rich-Harris/magic-string
> Copyright 2018 Rich Harris > Copyright 2018 Rich Harris
> >
@ -1267,7 +1267,7 @@ Repository: https://github.com/rich-harris/magic-string.git
## mlly, ufo ## mlly, ufo
License: MIT License: MIT
Repositories: unjs/mlly, unjs/ufo Repositories: https://github.com/unjs/mlly, https://github.com/unjs/ufo
> MIT License > MIT License
> >
@ -1296,7 +1296,7 @@ Repositories: unjs/mlly, unjs/ufo
## mrmime ## mrmime
License: MIT License: MIT
By: Luke Edwards By: Luke Edwards
Repository: lukeed/mrmime Repository: https://github.com/lukeed/mrmime
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1324,7 +1324,7 @@ Repository: lukeed/mrmime
## ms ## ms
License: MIT License: MIT
Repository: vercel/ms Repository: https://github.com/vercel/ms
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1353,7 +1353,7 @@ Repository: vercel/ms
## normalize-path ## normalize-path
License: MIT License: MIT
By: Jon Schlinkert, Blaine Bublitz By: Jon Schlinkert, Blaine Bublitz
Repository: jonschlinkert/normalize-path Repository: https://github.com/jonschlinkert/normalize-path
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1382,7 +1382,7 @@ Repository: jonschlinkert/normalize-path
## object-assign ## object-assign
License: MIT License: MIT
By: Sindre Sorhus By: Sindre Sorhus
Repository: sindresorhus/object-assign Repository: https://github.com/sindresorhus/object-assign
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1411,7 +1411,7 @@ Repository: sindresorhus/object-assign
## on-finished ## on-finished
License: MIT License: MIT
By: Douglas Christopher Wilson, Jonathan Ong By: Douglas Christopher Wilson, Jonathan Ong
Repository: jshttp/on-finished Repository: https://github.com/jshttp/on-finished
> (The MIT License) > (The MIT License)
> >
@ -1442,7 +1442,7 @@ Repository: jshttp/on-finished
## parse5 ## parse5
License: MIT License: MIT
By: Ivan Nikulin, https://github.com/inikulin/parse5/graphs/contributors By: Ivan Nikulin, https://github.com/inikulin/parse5/graphs/contributors
Repository: git://github.com/inikulin/parse5.git Repository: https://github.com/inikulin/parse5
> Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin) > Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)
> >
@ -1469,7 +1469,7 @@ Repository: git://github.com/inikulin/parse5.git
## parseurl ## parseurl
License: MIT License: MIT
By: Douglas Christopher Wilson, Jonathan Ong By: Douglas Christopher Wilson, Jonathan Ong
Repository: pillarjs/parseurl Repository: https://github.com/pillarjs/parseurl
> (The MIT License) > (The MIT License)
> >
@ -1500,7 +1500,7 @@ Repository: pillarjs/parseurl
## path-key, shebang-regex ## path-key, shebang-regex
License: MIT License: MIT
By: Sindre Sorhus By: Sindre Sorhus
Repositories: sindresorhus/path-key, sindresorhus/shebang-regex Repositories: https://github.com/sindresorhus/path-key, https://github.com/sindresorhus/shebang-regex
> MIT License > MIT License
> >
@ -1516,7 +1516,7 @@ Repositories: sindresorhus/path-key, sindresorhus/shebang-regex
## periscopic ## periscopic
License: MIT License: MIT
Repository: Rich-Harris/periscopic Repository: https://github.com/Rich-Harris/periscopic
> Copyright (c) 2019 Rich Harris > Copyright (c) 2019 Rich Harris
> >
@ -1531,7 +1531,7 @@ Repository: Rich-Harris/periscopic
## picocolors ## picocolors
License: ISC License: ISC
By: Alexey Raspopov By: Alexey Raspopov
Repository: alexeyraspopov/picocolors Repository: https://github.com/alexeyraspopov/picocolors
> ISC License > ISC License
> >
@ -1554,7 +1554,7 @@ Repository: alexeyraspopov/picocolors
## postcss-import ## postcss-import
License: MIT License: MIT
By: Maxime Thirouin By: Maxime Thirouin
Repository: https://github.com/postcss/postcss-import.git Repository: https://github.com/postcss/postcss-import
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1582,7 +1582,7 @@ Repository: https://github.com/postcss/postcss-import.git
## postcss-load-config ## postcss-load-config
License: MIT License: MIT
By: Michael Ciniawky, Ryan Dunckel, Mateusz Derks, Dalton Santos, Patrick Gilday, François Wouts By: Michael Ciniawky, Ryan Dunckel, Mateusz Derks, Dalton Santos, Patrick Gilday, François Wouts
Repository: postcss/postcss-load-config Repository: https://github.com/postcss/postcss-load-config
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1610,7 +1610,7 @@ Repository: postcss/postcss-load-config
## postcss-modules ## postcss-modules
License: MIT License: MIT
By: Alexander Madyankin By: Alexander Madyankin
Repository: https://github.com/css-modules/postcss-modules.git Repository: https://github.com/css-modules/postcss-modules
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1638,7 +1638,7 @@ Repository: https://github.com/css-modules/postcss-modules.git
## postcss-modules-extract-imports ## postcss-modules-extract-imports
License: ISC License: ISC
By: Glen Maddern By: Glen Maddern
Repository: https://github.com/css-modules/postcss-modules-extract-imports.git Repository: https://github.com/css-modules/postcss-modules-extract-imports
> Copyright 2015 Glen Maddern > Copyright 2015 Glen Maddern
> >
@ -1651,7 +1651,7 @@ Repository: https://github.com/css-modules/postcss-modules-extract-imports.git
## postcss-modules-local-by-default ## postcss-modules-local-by-default
License: MIT License: MIT
By: Mark Dalgleish By: Mark Dalgleish
Repository: https://github.com/css-modules/postcss-modules-local-by-default.git Repository: https://github.com/css-modules/postcss-modules-local-by-default
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1679,7 +1679,7 @@ Repository: https://github.com/css-modules/postcss-modules-local-by-default.git
## postcss-modules-scope ## postcss-modules-scope
License: ISC License: ISC
By: Glen Maddern By: Glen Maddern
Repository: https://github.com/css-modules/postcss-modules-scope.git Repository: https://github.com/css-modules/postcss-modules-scope
> ISC License (ISC) > ISC License (ISC)
> >
@ -1694,7 +1694,7 @@ Repository: https://github.com/css-modules/postcss-modules-scope.git
## postcss-modules-values ## postcss-modules-values
License: ISC License: ISC
By: Glen Maddern By: Glen Maddern
Repository: git+https://github.com/css-modules/postcss-modules-values.git Repository: https://github.com/css-modules/postcss-modules-values
> ISC License (ISC) > ISC License (ISC)
> >
@ -1709,7 +1709,7 @@ Repository: git+https://github.com/css-modules/postcss-modules-values.git
## postcss-selector-parser ## postcss-selector-parser
License: MIT License: MIT
By: Ben Briggs, Chris Eppstein By: Ben Briggs, Chris Eppstein
Repository: postcss/postcss-selector-parser Repository: https://github.com/postcss/postcss-selector-parser
> Copyright (c) Ben Briggs <beneb.info@gmail.com> (http://beneb.info) > Copyright (c) Ben Briggs <beneb.info@gmail.com> (http://beneb.info)
> >
@ -1739,7 +1739,7 @@ Repository: postcss/postcss-selector-parser
## postcss-value-parser ## postcss-value-parser
License: MIT License: MIT
By: Bogdan Chadkin By: Bogdan Chadkin
Repository: https://github.com/TrySound/postcss-value-parser.git Repository: https://github.com/TrySound/postcss-value-parser
> Copyright (c) Bogdan Chadkin <trysound@yandex.ru> > Copyright (c) Bogdan Chadkin <trysound@yandex.ru>
> >
@ -1769,7 +1769,7 @@ Repository: https://github.com/TrySound/postcss-value-parser.git
## readdirp ## readdirp
License: MIT License: MIT
By: Thorsten Lorenz, Paul Miller By: Thorsten Lorenz, Paul Miller
Repository: git://github.com/paulmillr/readdirp.git Repository: https://github.com/paulmillr/readdirp
> MIT License > MIT License
> >
@ -1798,7 +1798,7 @@ Repository: git://github.com/paulmillr/readdirp.git
## resolve.exports, totalist ## resolve.exports, totalist
License: MIT License: MIT
By: Luke Edwards By: Luke Edwards
Repositories: lukeed/resolve.exports, lukeed/totalist Repositories: https://github.com/lukeed/resolve.exports, https://github.com/lukeed/totalist
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1827,7 +1827,7 @@ Repositories: lukeed/resolve.exports, lukeed/totalist
## shebang-command ## shebang-command
License: MIT License: MIT
By: Kevin Mårtensson By: Kevin Mårtensson
Repository: kevva/shebang-command Repository: https://github.com/kevva/shebang-command
> MIT License > MIT License
> >
@ -1844,14 +1844,14 @@ Repository: kevva/shebang-command
## sirv ## sirv
License: MIT License: MIT
By: Luke Edwards By: Luke Edwards
Repository: lukeed/sirv Repository: https://github.com/lukeed/sirv
--------------------------------------- ---------------------------------------
## statuses ## statuses
License: MIT License: MIT
By: Douglas Christopher Wilson, Jonathan Ong By: Douglas Christopher Wilson, Jonathan Ong
Repository: jshttp/statuses Repository: https://github.com/jshttp/statuses
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1881,14 +1881,14 @@ Repository: jshttp/statuses
## string-hash ## string-hash
License: CC0-1.0 License: CC0-1.0
By: The Dark Sky Company By: The Dark Sky Company
Repository: git://github.com/darkskyapp/string-hash.git Repository: https://github.com/darkskyapp/string-hash
--------------------------------------- ---------------------------------------
## strip-literal ## strip-literal
License: MIT License: MIT
By: Anthony Fu By: Anthony Fu
Repository: git+https://github.com/antfu/strip-literal.git Repository: https://github.com/antfu/strip-literal
> MIT License > MIT License
> >
@ -1917,7 +1917,7 @@ Repository: git+https://github.com/antfu/strip-literal.git
## to-regex-range ## to-regex-range
License: MIT License: MIT
By: Jon Schlinkert, Rouven Weßling By: Jon Schlinkert, Rouven Weßling
Repository: micromatch/to-regex-range Repository: https://github.com/micromatch/to-regex-range
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -1946,7 +1946,7 @@ Repository: micromatch/to-regex-range
## tsconfck ## tsconfck
License: MIT License: MIT
By: dominikg By: dominikg
Repository: git+https://github.com/dominikg/tsconfck.git Repository: https://github.com/dominikg/tsconfck
> MIT License > MIT License
> >
@ -2000,7 +2000,7 @@ Repository: git+https://github.com/dominikg/tsconfck.git
## unpipe ## unpipe
License: MIT License: MIT
By: Douglas Christopher Wilson By: Douglas Christopher Wilson
Repository: stream-utils/unpipe Repository: https://github.com/stream-utils/unpipe
> (The MIT License) > (The MIT License)
> >
@ -2030,7 +2030,7 @@ Repository: stream-utils/unpipe
## util-deprecate ## util-deprecate
License: MIT License: MIT
By: Nathan Rajlich By: Nathan Rajlich
Repository: git://github.com/TooTallNate/util-deprecate.git Repository: https://github.com/TooTallNate/util-deprecate
> (The MIT License) > (The MIT License)
> >
@ -2062,7 +2062,7 @@ Repository: git://github.com/TooTallNate/util-deprecate.git
## utils-merge ## utils-merge
License: MIT License: MIT
By: Jared Hanson By: Jared Hanson
Repository: git://github.com/jaredhanson/utils-merge.git Repository: https://github.com/jaredhanson/utils-merge
> The MIT License (MIT) > The MIT License (MIT)
> >
@ -2090,7 +2090,7 @@ Repository: git://github.com/jaredhanson/utils-merge.git
## vary ## vary
License: MIT License: MIT
By: Douglas Christopher Wilson By: Douglas Christopher Wilson
Repository: jshttp/vary Repository: https://github.com/jshttp/vary
> (The MIT License) > (The MIT License)
> >
@ -2120,7 +2120,7 @@ Repository: jshttp/vary
## ws ## ws
License: MIT License: MIT
By: Einar Otto Stangvik By: Einar Otto Stangvik
Repository: git+https://github.com/websockets/ws.git Repository: https://github.com/websockets/ws
> Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com> > Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com>
> Copyright (c) 2013 Arnout Kazemier and contributors > Copyright (c) 2013 Arnout Kazemier and contributors

View File

@ -1,6 +1,6 @@
import "@vite/env"; import "@vite/env";
//#region \0@oxc-project+runtime@0.94.0/helpers/typeof.js //#region \0@oxc-project+runtime@0.96.0/helpers/typeof.js
function _typeof(o) { function _typeof(o) {
"@babel/helpers - typeof"; "@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o$1) { return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o$1) {
@ -11,7 +11,7 @@ function _typeof(o) {
} }
//#endregion //#endregion
//#region \0@oxc-project+runtime@0.94.0/helpers/toPrimitive.js //#region \0@oxc-project+runtime@0.96.0/helpers/toPrimitive.js
function toPrimitive(t, r) { function toPrimitive(t, r) {
if ("object" != _typeof(t) || !t) return t; if ("object" != _typeof(t) || !t) return t;
var e = t[Symbol.toPrimitive]; var e = t[Symbol.toPrimitive];
@ -24,14 +24,14 @@ function toPrimitive(t, r) {
} }
//#endregion //#endregion
//#region \0@oxc-project+runtime@0.94.0/helpers/toPropertyKey.js //#region \0@oxc-project+runtime@0.96.0/helpers/toPropertyKey.js
function toPropertyKey(t) { function toPropertyKey(t) {
var i = toPrimitive(t, "string"); var i = toPrimitive(t, "string");
return "symbol" == _typeof(i) ? i : i + ""; return "symbol" == _typeof(i) ? i : i + "";
} }
//#endregion //#endregion
//#region \0@oxc-project+runtime@0.94.0/helpers/defineProperty.js //#region \0@oxc-project+runtime@0.96.0/helpers/defineProperty.js
function _defineProperty(e, r, t) { function _defineProperty(e, r, t) {
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, { return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
value: t, value: t,

View File

@ -1,4 +1,4 @@
import "./logger.js"; import "./logger.js";
import { BuildEnvironment, build, buildEnvironmentOptionsDefaults, builderOptionsDefaults, createBuilder, createToImportMetaURLBasedRelativeRuntime, injectEnvironmentToHooks, onRollupLog, resolveBuildEnvironmentOptions, resolveBuildOutputs, resolveBuildPlugins, resolveBuilderOptions, resolveLibFilename, resolveUserExternal, toOutputFilePathInCss, toOutputFilePathInHtml, toOutputFilePathInJS, toOutputFilePathWithoutRuntime } from "./config.js"; import { A as toOutputFilePathInCss, C as onRollupLog, D as resolveBuilderOptions, E as resolveBuildPlugins, M as toOutputFilePathInJS, N as toOutputFilePathWithoutRuntime, O as resolveLibFilename, S as injectEnvironmentToHooks, T as resolveBuildOutputs, _ as build, b as createBuilder, g as BuildEnvironment, j as toOutputFilePathInHtml, k as resolveUserExternal, v as buildEnvironmentOptionsDefaults, w as resolveBuildEnvironmentOptions, x as createToImportMetaURLBasedRelativeRuntime, y as builderOptionsDefaults } from "./config.js";
export { createBuilder, resolveBuildPlugins }; export { BuildEnvironment, build, buildEnvironmentOptionsDefaults, builderOptionsDefaults, createBuilder, createToImportMetaURLBasedRelativeRuntime, injectEnvironmentToHooks, onRollupLog, resolveBuildEnvironmentOptions, resolveBuildOutputs, resolveBuildPlugins, resolveBuilderOptions, resolveLibFilename, resolveUserExternal, toOutputFilePathInCss, toOutputFilePathInHtml, toOutputFilePathInJS, toOutputFilePathWithoutRuntime };

View File

@ -1,5 +1,5 @@
import { __commonJS, __require } from "./chunk.js"; import { n as __require, t as __commonJS } from "./chunk.js";
import { require_lib } from "./lib.js"; import { t as require_lib } from "./lib.js";
//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/fs.js //#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/fs.js
var require_fs = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/fs.js": ((exports) => { var require_fs = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/fs.js": ((exports) => {
@ -188,6 +188,7 @@ var require_src$4 = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/icss-
//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/Parser.js //#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/Parser.js
var require_Parser = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/Parser.js": ((exports) => { var require_Parser = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/Parser.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.default = void 0;
var _icssUtils = require_src$4(); var _icssUtils = require_src$4();
const importRegexp = /^:import\((.+)\)$/; const importRegexp = /^:import\((.+)\)$/;
var Parser$1 = class { var Parser$1 = class {
@ -955,6 +956,7 @@ var require_localsConvention = /* @__PURE__ */ __commonJS({ "../../node_modules/
//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/FileSystemLoader.js //#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/FileSystemLoader.js
var require_FileSystemLoader = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/FileSystemLoader.js": ((exports) => { var require_FileSystemLoader = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/FileSystemLoader.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.default = void 0;
var _postcss$1 = _interopRequireDefault$21(__require("postcss")); var _postcss$1 = _interopRequireDefault$21(__require("postcss"));
var _path = _interopRequireDefault$21(__require("path")); var _path = _interopRequireDefault$21(__require("path"));
var _Parser$1 = _interopRequireDefault$21(require_Parser()); var _Parser$1 = _interopRequireDefault$21(require_Parser());
@ -1746,6 +1748,7 @@ var require_stripComments = /* @__PURE__ */ __commonJS({ "../../node_modules/.pn
//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/util/index.js //#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/util/index.js
var require_util = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/util/index.js": ((exports) => { var require_util = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/util/index.js": ((exports) => {
exports.__esModule = true; exports.__esModule = true;
exports.unesc = exports.stripComments = exports.getProp = exports.ensureObject = void 0;
var _unesc$1 = _interopRequireDefault$20(require_unesc()); var _unesc$1 = _interopRequireDefault$20(require_unesc());
exports.unesc = _unesc$1["default"]; exports.unesc = _unesc$1["default"];
var _getProp = _interopRequireDefault$20(require_getProp()); var _getProp = _interopRequireDefault$20(require_getProp());
@ -1900,6 +1903,7 @@ var require_node$1 = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/post
//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/types.js //#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/types.js
var require_types = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/types.js": ((exports) => { var require_types = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/types.js": ((exports) => {
exports.__esModule = true; exports.__esModule = true;
exports.UNIVERSAL = exports.TAG = exports.STRING = exports.SELECTOR = exports.ROOT = exports.PSEUDO = exports.NESTING = exports.ID = exports.COMMENT = exports.COMBINATOR = exports.CLASS = exports.ATTRIBUTE = void 0;
var TAG = "tag"; var TAG = "tag";
exports.TAG = TAG; exports.TAG = TAG;
var STRING = "string"; var STRING = "string";
@ -2372,6 +2376,7 @@ var require_selector = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/po
//#endregion //#endregion
//#region ../../node_modules/.pnpm/cssesc@3.0.0/node_modules/cssesc/cssesc.js //#region ../../node_modules/.pnpm/cssesc@3.0.0/node_modules/cssesc/cssesc.js
/*! https://mths.be/cssesc v3.0.0 by @mathias */
var require_cssesc = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/cssesc@3.0.0/node_modules/cssesc/cssesc.js": ((exports, module) => { var require_cssesc = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/cssesc@3.0.0/node_modules/cssesc/cssesc.js": ((exports, module) => {
var hasOwnProperty$1 = {}.hasOwnProperty; var hasOwnProperty$1 = {}.hasOwnProperty;
var merge = function merge$1(options, defaults) { var merge = function merge$1(options, defaults) {
@ -2803,6 +2808,7 @@ var require_node = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/util-d
//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/attribute.js //#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/attribute.js
var require_attribute = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/attribute.js": ((exports) => { var require_attribute = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/attribute.js": ((exports) => {
exports.__esModule = true; exports.__esModule = true;
exports["default"] = void 0;
exports.unescapeValue = unescapeValue; exports.unescapeValue = unescapeValue;
var _cssesc = _interopRequireDefault$9(require_cssesc()); var _cssesc = _interopRequireDefault$9(require_cssesc());
var _unesc = _interopRequireDefault$9(require_unesc()); var _unesc = _interopRequireDefault$9(require_unesc());
@ -3249,6 +3255,7 @@ var require_sortAscending = /* @__PURE__ */ __commonJS({ "../../node_modules/.pn
//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/tokenTypes.js //#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/tokenTypes.js
var require_tokenTypes = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/tokenTypes.js": ((exports) => { var require_tokenTypes = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/tokenTypes.js": ((exports) => {
exports.__esModule = true; exports.__esModule = true;
exports.word = exports.tilde = exports.tab = exports.str = exports.space = exports.slash = exports.singleQuote = exports.semicolon = exports.plus = exports.pipe = exports.openSquare = exports.openParenthesis = exports.newline = exports.greaterThan = exports.feed = exports.equals = exports.doubleQuote = exports.dollar = exports.cr = exports.comment = exports.comma = exports.combinator = exports.colon = exports.closeSquare = exports.closeParenthesis = exports.caret = exports.bang = exports.backslash = exports.at = exports.asterisk = exports.ampersand = void 0;
var ampersand = 38; var ampersand = 38;
exports.ampersand = ampersand; exports.ampersand = ampersand;
var asterisk = 42; var asterisk = 42;
@ -3317,6 +3324,7 @@ var require_tokenTypes = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/
//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/tokenize.js //#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/tokenize.js
var require_tokenize = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/tokenize.js": ((exports) => { var require_tokenize = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/tokenize.js": ((exports) => {
exports.__esModule = true; exports.__esModule = true;
exports.FIELDS = void 0;
exports["default"] = tokenize; exports["default"] = tokenize;
var t = _interopRequireWildcard$2(require_tokenTypes()); var t = _interopRequireWildcard$2(require_tokenTypes());
var _unescapable, _wordDelimiters; var _unescapable, _wordDelimiters;
@ -4509,6 +4517,7 @@ var require_processor = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/p
//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/constructors.js //#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/constructors.js
var require_constructors = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/constructors.js": ((exports) => { var require_constructors = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/constructors.js": ((exports) => {
exports.__esModule = true; exports.__esModule = true;
exports.universal = exports.tag = exports.string = exports.selector = exports.root = exports.pseudo = exports.nesting = exports.id = exports.comment = exports.combinator = exports.className = exports.attribute = void 0;
var _attribute = _interopRequireDefault$3(require_attribute()); var _attribute = _interopRequireDefault$3(require_attribute());
var _className = _interopRequireDefault$3(require_className()); var _className = _interopRequireDefault$3(require_className());
var _combinator = _interopRequireDefault$3(require_combinator()); var _combinator = _interopRequireDefault$3(require_combinator());
@ -4578,11 +4587,16 @@ var require_constructors = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnp
//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/guards.js //#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/guards.js
var require_guards = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/guards.js": ((exports) => { var require_guards = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-selector-parser@7.1.0/node_modules/postcss-selector-parser/dist/selectors/guards.js": ((exports) => {
exports.__esModule = true; exports.__esModule = true;
exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0;
exports.isContainer = isContainer; exports.isContainer = isContainer;
exports.isIdentifier = void 0;
exports.isNamespace = isNamespace; exports.isNamespace = isNamespace;
exports.isNesting = void 0;
exports.isNode = isNode; exports.isNode = isNode;
exports.isPseudo = void 0;
exports.isPseudoClass = isPseudoClass; exports.isPseudoClass = isPseudoClass;
exports.isPseudoElement = isPseudoElement; exports.isPseudoElement = isPseudoElement;
exports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = void 0;
var _types$1 = require_types(); var _types$1 = require_types();
var _IS_TYPE; var _IS_TYPE;
var IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types$1.ATTRIBUTE] = true, _IS_TYPE[_types$1.CLASS] = true, _IS_TYPE[_types$1.COMBINATOR] = true, _IS_TYPE[_types$1.COMMENT] = true, _IS_TYPE[_types$1.ID] = true, _IS_TYPE[_types$1.NESTING] = true, _IS_TYPE[_types$1.PSEUDO] = true, _IS_TYPE[_types$1.ROOT] = true, _IS_TYPE[_types$1.SELECTOR] = true, _IS_TYPE[_types$1.STRING] = true, _IS_TYPE[_types$1.TAG] = true, _IS_TYPE[_types$1.UNIVERSAL] = true, _IS_TYPE); var IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types$1.ATTRIBUTE] = true, _IS_TYPE[_types$1.CLASS] = true, _IS_TYPE[_types$1.COMBINATOR] = true, _IS_TYPE[_types$1.COMMENT] = true, _IS_TYPE[_types$1.ID] = true, _IS_TYPE[_types$1.NESTING] = true, _IS_TYPE[_types$1.PSEUDO] = true, _IS_TYPE[_types$1.ROOT] = true, _IS_TYPE[_types$1.SELECTOR] = true, _IS_TYPE[_types$1.STRING] = true, _IS_TYPE[_types$1.TAG] = true, _IS_TYPE[_types$1.UNIVERSAL] = true, _IS_TYPE);
@ -5370,6 +5384,7 @@ var require_src = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss
//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/scoping.js //#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/scoping.js
var require_scoping = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/scoping.js": ((exports) => { var require_scoping = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.6/node_modules/postcss-modules/build/scoping.js": ((exports) => {
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.behaviours = void 0;
exports.getDefaultPlugins = getDefaultPlugins; exports.getDefaultPlugins = getDefaultPlugins;
exports.getDefaultScopeBehaviour = getDefaultScopeBehaviour; exports.getDefaultScopeBehaviour = getDefaultScopeBehaviour;
exports.getScopedNameGenerator = getScopedNameGenerator; exports.getScopedNameGenerator = getScopedNameGenerator;

View File

@ -28,4 +28,4 @@ var __toDynamicImportESM = (isNodeMode) => (mod) => __toESM(mod.default, isNodeM
var __require = /* @__PURE__ */ createRequire(import.meta.url); var __require = /* @__PURE__ */ createRequire(import.meta.url);
//#endregion //#endregion
export { __commonJS, __require, __toDynamicImportESM, __toESM }; export { __toESM as i, __require as n, __toDynamicImportESM as r, __commonJS as t };

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
import "./logger.js"; import "./logger.js";
import { configDefaults, defineConfig, getDefaultEnvironmentOptions, isResolvedConfig, loadConfigFromFile, resolveBaseUrl, resolveConfig, resolveDevEnvironmentOptions, sortUserPlugins } from "./config.js"; import { a as resolveBaseUrl, c as sortUserPlugins, i as loadConfigFromFile, n as getDefaultEnvironmentOptions, o as resolveConfig, r as isResolvedConfig, s as resolveDevEnvironmentOptions, t as defineConfig } from "./config.js";
export { resolveConfig }; export { defineConfig, getDefaultEnvironmentOptions, isResolvedConfig, loadConfigFromFile, resolveBaseUrl, resolveConfig, resolveDevEnvironmentOptions, sortUserPlugins };

View File

@ -6755,4 +6755,4 @@ function parse(html, options) {
} }
//#endregion //#endregion
export { parse }; export { ERR as ErrorCodes, Parser, Tokenizer, TokenizerMode, defaultTreeAdapter, parse };

View File

@ -1,4 +1,4 @@
import { __commonJS } from "./chunk.js"; import { t as __commonJS } from "./chunk.js";
//#region ../../node_modules/.pnpm/postcss-value-parser@4.2.0/node_modules/postcss-value-parser/lib/parse.js //#region ../../node_modules/.pnpm/postcss-value-parser@4.2.0/node_modules/postcss-value-parser/lib/parse.js
var require_parse = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-value-parser@4.2.0/node_modules/postcss-value-parser/lib/parse.js": ((exports, module) => { var require_parse = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-value-parser@4.2.0/node_modules/postcss-value-parser/lib/parse.js": ((exports, module) => {
@ -374,4 +374,4 @@ var require_lib = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss
}) }); }) });
//#endregion //#endregion
export { require_lib }; export { require_lib as t };

View File

@ -1,4 +1,4 @@
import { __commonJS, __toESM } from "./chunk.js"; import { i as __toESM, t as __commonJS } from "./chunk.js";
import { readFileSync } from "node:fs"; import { readFileSync } from "node:fs";
import path, { resolve } from "node:path"; import path, { resolve } from "node:path";
import { fileURLToPath } from "node:url"; import { fileURLToPath } from "node:url";
@ -127,6 +127,15 @@ const DEFAULT_CONDITIONS = [
const DEFAULT_CLIENT_CONDITIONS = Object.freeze(DEFAULT_CONDITIONS.filter((c) => c !== "node")); const DEFAULT_CLIENT_CONDITIONS = Object.freeze(DEFAULT_CONDITIONS.filter((c) => c !== "node"));
const DEFAULT_SERVER_CONDITIONS = Object.freeze(DEFAULT_CONDITIONS.filter((c) => c !== "browser")); const DEFAULT_SERVER_CONDITIONS = Object.freeze(DEFAULT_CONDITIONS.filter((c) => c !== "browser"));
const DEFAULT_EXTERNAL_CONDITIONS = Object.freeze(["node", "module-sync"]); const DEFAULT_EXTERNAL_CONDITIONS = Object.freeze(["node", "module-sync"]);
const DEFAULT_EXTENSIONS = [
".mjs",
".js",
".mts",
".ts",
".jsx",
".tsx",
".json"
];
/** /**
* The browser versions that are included in the Baseline Widely Available on 2025-05-01. * The browser versions that are included in the Baseline Widely Available on 2025-05-01.
* *
@ -317,4 +326,4 @@ function printServerUrls(urls, optionsHost, info) {
} }
//#endregion //#endregion
export { CLIENT_DIR, CLIENT_ENTRY, CLIENT_PUBLIC_PATH, CSS_LANGS_RE, DEFAULT_ASSETS_INLINE_LIMIT, DEFAULT_ASSETS_RE, DEFAULT_CLIENT_CONDITIONS, DEFAULT_CLIENT_MAIN_FIELDS, DEFAULT_CONFIG_FILES, DEFAULT_DEV_PORT, DEFAULT_EXTERNAL_CONDITIONS, DEFAULT_PREVIEW_PORT, DEFAULT_SERVER_CONDITIONS, DEFAULT_SERVER_MAIN_FIELDS, DEP_VERSION_RE, DEV_PROD_CONDITION, ENV_ENTRY, ENV_PUBLIC_PATH, ERR_FILE_NOT_FOUND_IN_OPTIMIZED_DEP_DIR, ERR_OPTIMIZE_DEPS_PROCESSING_ERROR, ESBUILD_BASELINE_WIDELY_AVAILABLE_TARGET, FS_PREFIX, JS_TYPES_RE, KNOWN_ASSET_TYPES, LogLevels, METADATA_FILENAME, OPTIMIZABLE_ENTRY_RE, ROLLUP_HOOKS, SPECIAL_QUERY_RE, VERSION, VITE_PACKAGE_DIR, createLogger, defaultAllowedOrigins, loopbackHosts, printServerUrls, require_picocolors, wildcardHosts }; export { OPTIMIZABLE_ENTRY_RE as A, ERR_FILE_NOT_FOUND_IN_OPTIMIZED_DEP_DIR as C, JS_TYPES_RE as D, FS_PREFIX as E, defaultAllowedOrigins as F, loopbackHosts as I, wildcardHosts as L, SPECIAL_QUERY_RE as M, VERSION as N, KNOWN_ASSET_TYPES as O, VITE_PACKAGE_DIR as P, require_picocolors as R, ENV_PUBLIC_PATH as S, ESBUILD_BASELINE_WIDELY_AVAILABLE_TARGET as T, DEFAULT_SERVER_CONDITIONS as _, CLIENT_ENTRY as a, DEV_PROD_CONDITION as b, DEFAULT_ASSETS_INLINE_LIMIT as c, DEFAULT_CLIENT_MAIN_FIELDS as d, DEFAULT_CONFIG_FILES as f, DEFAULT_PREVIEW_PORT as g, DEFAULT_EXTERNAL_CONDITIONS as h, CLIENT_DIR as i, ROLLUP_HOOKS as j, METADATA_FILENAME as k, DEFAULT_ASSETS_RE as l, DEFAULT_EXTENSIONS as m, createLogger as n, CLIENT_PUBLIC_PATH as o, DEFAULT_DEV_PORT as p, printServerUrls as r, CSS_LANGS_RE as s, LogLevels as t, DEFAULT_CLIENT_CONDITIONS as u, DEFAULT_SERVER_MAIN_FIELDS as v, ERR_OPTIMIZE_DEPS_PROCESSING_ERROR as w, ENV_ENTRY as x, DEP_VERSION_RE as y };

View File

@ -8,51 +8,59 @@ interface FetchFunctionOptions {
type FetchResult = CachedFetchResult | ExternalFetchResult | ViteFetchResult; type FetchResult = CachedFetchResult | ExternalFetchResult | ViteFetchResult;
interface CachedFetchResult { interface CachedFetchResult {
/** /**
* If module cached in the runner, we can just confirm * If module cached in the runner, we can just confirm
* it wasn't invalidated on the server side. * it wasn't invalidated on the server side.
*/ */
cache: true; cache: true;
} }
interface ExternalFetchResult { interface ExternalFetchResult {
/** /**
* The path to the externalized module starting with file://, * The path to the externalized module starting with file://,
* by default this will be imported via a dynamic "import" * by default this will be imported via a dynamic "import"
* instead of being transformed by vite and loaded with vite runner * instead of being transformed by vite and loaded with vite runner
*/ */
externalize: string; externalize: string;
/** /**
* Type of the module. Will be used to determine if import statement is correct. * Type of the module. Will be used to determine if import statement is correct.
* For example, if Vite needs to throw an error if variable is not actually exported * For example, if Vite needs to throw an error if variable is not actually exported
*/ */
type: 'module' | 'commonjs' | 'builtin' | 'network'; type: "module" | "commonjs" | "builtin" | "network";
} }
interface ViteFetchResult { interface ViteFetchResult {
/** /**
* Code that will be evaluated by vite runner * Code that will be evaluated by vite runner
* by default this will be wrapped in an async function * by default this will be wrapped in an async function
*/ */
code: string; code: string;
/** /**
* File path of the module on disk. * File path of the module on disk.
* This will be resolved as import.meta.url/filename * This will be resolved as import.meta.url/filename
* Will be equal to `null` for virtual modules * Will be equal to `null` for virtual modules
*/ */
file: string | null; file: string | null;
/** /**
* Module ID in the server module graph. * Module ID in the server module graph.
*/ */
id: string; id: string;
/** /**
* Module URL used in the import. * Module URL used in the import.
*/ */
url: string; url: string;
/** /**
* Invalidate module on the client side. * Invalidate module on the client side.
*/ */
invalidate: boolean; invalidate: boolean;
} }
type InvokeMethods = { type InvokeMethods = {
fetchModule: (id: string, importer?: string, options?: FetchFunctionOptions) => Promise<FetchResult>; fetchModule: (id: string, importer?: string, options?: FetchFunctionOptions) => Promise<FetchResult>;
getBuiltins: () => Promise<Array<{
type: "string";
value: string;
} | {
type: "RegExp";
source: string;
flags: string;
}>>;
}; };
//#endregion //#endregion
//#region src/shared/moduleRunnerTransport.d.ts //#region src/shared/moduleRunnerTransport.d.ts
@ -61,8 +69,8 @@ type ModuleRunnerTransportHandlers = {
onDisconnection: () => void; onDisconnection: () => void;
}; };
/** /**
* "send and connect" or "invoke" must be implemented * "send and connect" or "invoke" must be implemented
*/ */
interface ModuleRunnerTransport { interface ModuleRunnerTransport {
connect?(handlers: ModuleRunnerTransportHandlers): Promise<void> | void; connect?(handlers: ModuleRunnerTransportHandlers): Promise<void> | void;
disconnect?(): Promise<void> | void; disconnect?(): Promise<void> | void;
@ -85,4 +93,4 @@ declare const createWebSocketModuleRunnerTransport: (options: {
pingInterval?: number; pingInterval?: number;
}) => Required<Pick<ModuleRunnerTransport, "connect" | "disconnect" | "send">>; }) => Required<Pick<ModuleRunnerTransport, "connect" | "disconnect" | "send">>;
//#endregion //#endregion
export { ExternalFetchResult, FetchFunctionOptions, FetchResult, ModuleRunnerTransport, ModuleRunnerTransportHandlers, NormalizedModuleRunnerTransport, ViteFetchResult, createWebSocketModuleRunnerTransport }; export { ExternalFetchResult as a, ViteFetchResult as c, createWebSocketModuleRunnerTransport as i, ModuleRunnerTransportHandlers as n, FetchFunctionOptions as o, NormalizedModuleRunnerTransport as r, FetchResult as s, ModuleRunnerTransport as t };

View File

@ -1,4 +1,4 @@
import "./logger.js"; import "./logger.js";
import { addManuallyIncludedOptimizeDeps, addOptimizedDepInfo, cleanupDepsCacheStaleDirs, createIsOptimizedDepFile, createIsOptimizedDepUrl, depsFromOptimizedDepInfo, depsLogString, discoverProjectDependencies, extractExportsData, getDepsCacheDir, getOptimizedDepPath, initDepsOptimizerMetadata, isDepOptimizationDisabled, loadCachedDepOptimizationMetadata, optimizeDeps, optimizeExplicitEnvironmentDeps, optimizedDepInfoFromFile, optimizedDepInfoFromId, optimizedDepNeedsInterop, runOptimizeDeps, toDiscoveredDependencies } from "./config.js"; import { $ as runOptimizeDeps, B as depsLogString, F as addOptimizedDepInfo, G as initDepsOptimizerMetadata, H as extractExportsData, I as cleanupDepsCacheStaleDirs, J as optimizeDeps, K as isDepOptimizationDisabled, L as createIsOptimizedDepFile, P as addManuallyIncludedOptimizeDeps, Q as optimizedDepNeedsInterop, R as createIsOptimizedDepUrl, U as getDepsCacheDir, V as discoverProjectDependencies, W as getOptimizedDepPath, X as optimizedDepInfoFromFile, Y as optimizeExplicitEnvironmentDeps, Z as optimizedDepInfoFromId, et as toDiscoveredDependencies, q as loadCachedDepOptimizationMetadata, z as depsFromOptimizedDepInfo } from "./config.js";
export { optimizeDeps }; export { addManuallyIncludedOptimizeDeps, addOptimizedDepInfo, cleanupDepsCacheStaleDirs, createIsOptimizedDepFile, createIsOptimizedDepUrl, depsFromOptimizedDepInfo, depsLogString, discoverProjectDependencies, extractExportsData, getDepsCacheDir, getOptimizedDepPath, initDepsOptimizerMetadata, isDepOptimizationDisabled, loadCachedDepOptimizationMetadata, optimizeDeps, optimizeExplicitEnvironmentDeps, optimizedDepInfoFromFile, optimizedDepInfoFromId, optimizedDepNeedsInterop, runOptimizeDeps, toDiscoveredDependencies };

View File

@ -1,5 +1,5 @@
import { __commonJS, __require } from "./chunk.js"; import { n as __require, t as __commonJS } from "./chunk.js";
import { require_lib } from "./lib.js"; import { t as require_lib } from "./lib.js";
//#region ../../node_modules/.pnpm/postcss-import@16.1.1_postcss@8.5.6/node_modules/postcss-import/lib/format-import-prelude.js //#region ../../node_modules/.pnpm/postcss-import@16.1.1_postcss@8.5.6/node_modules/postcss-import/lib/format-import-prelude.js
var require_format_import_prelude = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-import@16.1.1_postcss@8.5.6/node_modules/postcss-import/lib/format-import-prelude.js": ((exports, module) => { var require_format_import_prelude = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss-import@16.1.1_postcss@8.5.6/node_modules/postcss-import/lib/format-import-prelude.js": ((exports, module) => {

View File

@ -1,4 +1,4 @@
import "./logger.js"; import "./logger.js";
import { preview, resolvePreviewOptions } from "./config.js"; import { d as resolvePreviewOptions, u as preview } from "./config.js";
export { preview }; export { preview, resolvePreviewOptions };

View File

@ -1,4 +1,4 @@
import "./logger.js"; import "./logger.js";
import { _createServer, createServer, createServerCloseFn, resolveServerOptions, restartServerWithUrls, serverConfigDefaults } from "./config.js"; import { at as _createServer, ct as resolveServerOptions, lt as restartServerWithUrls, ot as createServer, st as createServerCloseFn, ut as serverConfigDefaults } from "./config.js";
export { createServer }; export { _createServer, createServer, createServerCloseFn, resolveServerOptions, restartServerWithUrls, serverConfigDefaults };

4
node_modules/vite/dist/node/cli.js generated vendored
View File

@ -1,5 +1,5 @@
import { __toESM } from "./chunks/chunk.js"; import { i as __toESM } from "./chunks/chunk.js";
import { VERSION, createLogger, require_picocolors } from "./chunks/logger.js"; import { N as VERSION, R as require_picocolors, n as createLogger } from "./chunks/logger.js";
import fs from "node:fs"; import fs from "node:fs";
import path from "node:path"; import path from "node:path";
import { performance } from "node:perf_hooks"; import { performance } from "node:perf_hooks";

2536
node_modules/vite/dist/node/index.d.ts generated vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
import { DEFAULT_CLIENT_CONDITIONS, DEFAULT_CLIENT_MAIN_FIELDS, DEFAULT_EXTERNAL_CONDITIONS, DEFAULT_SERVER_CONDITIONS, DEFAULT_SERVER_MAIN_FIELDS, VERSION, createLogger, defaultAllowedOrigins } from "./chunks/logger.js"; import { F as defaultAllowedOrigins, N as VERSION, _ as DEFAULT_SERVER_CONDITIONS, d as DEFAULT_CLIENT_MAIN_FIELDS, h as DEFAULT_EXTERNAL_CONDITIONS, n as createLogger, u as DEFAULT_CLIENT_CONDITIONS, v as DEFAULT_SERVER_MAIN_FIELDS } from "./chunks/logger.js";
import { BuildEnvironment, DevEnvironment, build, buildErrorMessage, createBuilder, createFilter, createIdResolver, createRunnableDevEnvironment, createServer, createServerHotChannel, createServerModuleRunner, createServerModuleRunnerTransport, defineConfig, fetchModule, formatPostcssSourceMap, isCSSRequest, isFileLoadingAllowed, isFileServingAllowed, isRunnableDevEnvironment, loadConfigFromFile, loadEnv, mergeAlias, mergeConfig, normalizePath, optimizeDeps, perEnvironmentPlugin, perEnvironmentState, preprocessCSS, preview, resolveConfig, resolveEnvPrefix, rollupVersion, runnerImport, searchForWorkspaceRoot, send, sortUserPlugins, ssrTransform, transformWithEsbuild } from "./chunks/config.js"; import { Ct as perEnvironmentPlugin, Dt as mergeConfig, Et as mergeAlias, J as optimizeDeps, Ot as normalizePath, St as perEnvironmentState, Tt as isCSSRequest, _ as build, _t as createServerModuleRunnerTransport, b as createBuilder, bt as resolveEnvPrefix, c as sortUserPlugins, dt as searchForWorkspaceRoot, f as createRunnableDevEnvironment, ft as isFileLoadingAllowed, g as BuildEnvironment, gt as createServerModuleRunner, h as fetchModule, ht as ssrTransform, i as loadConfigFromFile, it as createServerHotChannel, kt as rollupVersion, l as runnerImport, m as DevEnvironment, mt as send, nt as preprocessCSS, o as resolveConfig, ot as createServer, p as isRunnableDevEnvironment, pt as isFileServingAllowed, rt as createIdResolver, t as defineConfig, tt as formatPostcssSourceMap, u as preview, vt as buildErrorMessage, wt as createFilter, xt as transformWithEsbuild, yt as loadEnv } from "./chunks/config.js";
import { parseAst, parseAstAsync } from "rollup/parseAst"; import { parseAst, parseAstAsync } from "rollup/parseAst";
import { version as esbuildVersion } from "esbuild"; import { version as esbuildVersion } from "esbuild";

View File

@ -1,4 +1,4 @@
import { ExternalFetchResult, FetchFunctionOptions, FetchResult, ModuleRunnerTransport, ModuleRunnerTransportHandlers, NormalizedModuleRunnerTransport, ViteFetchResult, createWebSocketModuleRunnerTransport } from "./chunks/moduleRunnerTransport.js"; import { a as ExternalFetchResult, c as ViteFetchResult, i as createWebSocketModuleRunnerTransport, n as ModuleRunnerTransportHandlers, o as FetchFunctionOptions, r as NormalizedModuleRunnerTransport, s as FetchResult, t as ModuleRunnerTransport } from "./chunks/moduleRunnerTransport.js";
import { ModuleNamespace, ViteHotContext } from "#types/hot"; import { ModuleNamespace, ViteHotContext } from "#types/hot";
import { HotPayload, Update } from "#types/hmrPayload"; import { HotPayload, Update } from "#types/hmrPayload";
import { InferCustomEventPayload } from "#types/customEvent"; import { InferCustomEventPayload } from "#types/customEvent";
@ -17,6 +17,7 @@ declare class DecodedMap {
_decoded: undefined | number[][][]; _decoded: undefined | number[][][];
_decodedMemo: Stats; _decodedMemo: Stats;
url: string; url: string;
file: string;
version: number; version: number;
names: string[]; names: string[];
resolvedSources: string[]; resolvedSources: string[];
@ -62,10 +63,10 @@ declare class HMRClient {
private updateQueue; private updateQueue;
private pendingUpdateQueue; private pendingUpdateQueue;
/** /**
* buffer multiple hot updates triggered by the same src change * buffer multiple hot updates triggered by the same src change
* so that they are invoked in the same order they were sent. * so that they are invoked in the same order they were sent.
* (otherwise the order may be inconsistent because of the http request round trip) * (otherwise the order may be inconsistent because of the http request round trip)
*/ */
queueUpdate(payload: Update): Promise<void>; queueUpdate(payload: Update): Promise<void>;
private fetchUpdate; private fetchUpdate;
} }
@ -73,14 +74,14 @@ declare class HMRClient {
//#region src/shared/ssrTransform.d.ts //#region src/shared/ssrTransform.d.ts
interface DefineImportMetadata { interface DefineImportMetadata {
/** /**
* Imported names before being transformed to `ssrImportKey` * Imported names before being transformed to `ssrImportKey`
* *
* import foo, { bar as baz, qux } from 'hello' * import foo, { bar as baz, qux } from 'hello'
* => ['default', 'bar', 'qux'] * => ['default', 'bar', 'qux']
* *
* import * as namespace from 'world * import * as namespace from 'world
* => undefined * => undefined
*/ */
importedNames?: string[]; importedNames?: string[];
} }
interface SSRImportMetadata extends DefineImportMetadata { interface SSRImportMetadata extends DefineImportMetadata {
@ -108,30 +109,33 @@ declare class ModuleRunner {
private readonly transport; private readonly transport;
private readonly resetSourceMapSupport?; private readonly resetSourceMapSupport?;
private readonly concurrentModuleNodePromises; private readonly concurrentModuleNodePromises;
private isBuiltin?;
private builtinsPromise?;
private closed; private closed;
constructor(options: ModuleRunnerOptions, evaluator?: ModuleEvaluator, debug?: ModuleRunnerDebugger | undefined); constructor(options: ModuleRunnerOptions, evaluator?: ModuleEvaluator, debug?: ModuleRunnerDebugger | undefined);
/** /**
* URL to execute. Accepts file path, server path or id relative to the root. * URL to execute. Accepts file path, server path or id relative to the root.
*/ */
import<T = any>(url: string): Promise<T>; import<T = any>(url: string): Promise<T>;
/** /**
* Clear all caches including HMR listeners. * Clear all caches including HMR listeners.
*/ */
clearCache(): void; clearCache(): void;
/** /**
* Clears all caches, removes all HMR listeners, and resets source map support. * Clears all caches, removes all HMR listeners, and resets source map support.
* This method doesn't stop the HMR connection. * This method doesn't stop the HMR connection.
*/ */
close(): Promise<void>; close(): Promise<void>;
/** /**
* Returns `true` if the runtime has been closed by calling `close()` method. * Returns `true` if the runtime has been closed by calling `close()` method.
*/ */
isClosed(): boolean; isClosed(): boolean;
private processImport; private processImport;
private isCircularModule; private isCircularModule;
private isCircularImport; private isCircularImport;
private cachedRequest; private cachedRequest;
private cachedModule; private cachedModule;
private ensureBuiltins;
private getModuleInformation; private getModuleInformation;
protected directRequest(url: string, mod: EvaluatedModuleNode, _callstack: string[]): Promise<any>; protected directRequest(url: string, mod: EvaluatedModuleNode, _callstack: string[]): Promise<any>;
} }
@ -168,20 +172,20 @@ interface ModuleRunnerContext {
} }
interface ModuleEvaluator { interface ModuleEvaluator {
/** /**
* Number of prefixed lines in the transformed code. * Number of prefixed lines in the transformed code.
*/ */
startOffset?: number; startOffset?: number;
/** /**
* Run code that was transformed by Vite. * Run code that was transformed by Vite.
* @param context Function context * @param context Function context
* @param code Transformed code * @param code Transformed code
* @param module The module node * @param module The module node
*/ */
runInlinedModule(context: ModuleRunnerContext, code: string, module: Readonly<EvaluatedModuleNode>): Promise<any>; runInlinedModule(context: ModuleRunnerContext, code: string, module: Readonly<EvaluatedModuleNode>): Promise<any>;
/** /**
* Run externalized module. * Run externalized module.
* @param file File URL to the external module * @param file File URL to the external module
*/ */
runExternalModule(file: string): Promise<any>; runExternalModule(file: string): Promise<any>;
} }
type ResolvedResult = (ExternalFetchResult | ViteFetchResult) & { type ResolvedResult = (ExternalFetchResult | ViteFetchResult) & {
@ -191,36 +195,36 @@ type ResolvedResult = (ExternalFetchResult | ViteFetchResult) & {
type FetchFunction = (id: string, importer?: string, options?: FetchFunctionOptions) => Promise<FetchResult>; type FetchFunction = (id: string, importer?: string, options?: FetchFunctionOptions) => Promise<FetchResult>;
interface ModuleRunnerHmr { interface ModuleRunnerHmr {
/** /**
* Configure HMR logger. * Configure HMR logger.
*/ */
logger?: false | HMRLogger; logger?: false | HMRLogger;
} }
interface ModuleRunnerOptions { interface ModuleRunnerOptions {
/** /**
* A set of methods to communicate with the server. * A set of methods to communicate with the server.
*/ */
transport: ModuleRunnerTransport; transport: ModuleRunnerTransport;
/** /**
* Configure how source maps are resolved. Prefers `node` if `process.setSourceMapsEnabled` is available. * Configure how source maps are resolved. Prefers `node` if `process.setSourceMapsEnabled` is available.
* Otherwise it will use `prepareStackTrace` by default which overrides `Error.prepareStackTrace` method. * Otherwise it will use `prepareStackTrace` by default which overrides `Error.prepareStackTrace` method.
* You can provide an object to configure how file contents and source maps are resolved for files that were not processed by Vite. * You can provide an object to configure how file contents and source maps are resolved for files that were not processed by Vite.
*/ */
sourcemapInterceptor?: false | 'node' | 'prepareStackTrace' | InterceptorOptions; sourcemapInterceptor?: false | "node" | "prepareStackTrace" | InterceptorOptions;
/** /**
* Disable HMR or configure HMR options. * Disable HMR or configure HMR options.
* *
* @default true * @default true
*/ */
hmr?: boolean | ModuleRunnerHmr; hmr?: boolean | ModuleRunnerHmr;
/** /**
* Create import.meta object for the module. * Create import.meta object for the module.
* *
* @default createDefaultImportMeta * @default createDefaultImportMeta
*/ */
createImportMeta?: (modulePath: string) => ModuleRunnerImportMeta | Promise<ModuleRunnerImportMeta>; createImportMeta?: (modulePath: string) => ModuleRunnerImportMeta | Promise<ModuleRunnerImportMeta>;
/** /**
* Custom module cache. If not provided, creates a separate module cache for each ModuleRunner instance. * Custom module cache. If not provided, creates a separate module cache for each ModuleRunner instance.
*/ */
evaluatedModules?: EvaluatedModules; evaluatedModules?: EvaluatedModules;
} }
interface ImportMetaEnv { interface ImportMetaEnv {
@ -251,40 +255,40 @@ declare class EvaluatedModules {
readonly fileToModulesMap: Map<string, Set<EvaluatedModuleNode>>; readonly fileToModulesMap: Map<string, Set<EvaluatedModuleNode>>;
readonly urlToIdModuleMap: Map<string, EvaluatedModuleNode>; readonly urlToIdModuleMap: Map<string, EvaluatedModuleNode>;
/** /**
* Returns the module node by the resolved module ID. Usually, module ID is * Returns the module node by the resolved module ID. Usually, module ID is
* the file system path with query and/or hash. It can also be a virtual module. * the file system path with query and/or hash. It can also be a virtual module.
* *
* Module runner graph will have 1 to 1 mapping with the server module graph. * Module runner graph will have 1 to 1 mapping with the server module graph.
* @param id Resolved module ID * @param id Resolved module ID
*/ */
getModuleById(id: string): EvaluatedModuleNode | undefined; getModuleById(id: string): EvaluatedModuleNode | undefined;
/** /**
* Returns all modules related to the file system path. Different modules * Returns all modules related to the file system path. Different modules
* might have different query parameters or hash, so it's possible to have * might have different query parameters or hash, so it's possible to have
* multiple modules for the same file. * multiple modules for the same file.
* @param file The file system path of the module * @param file The file system path of the module
*/ */
getModulesByFile(file: string): Set<EvaluatedModuleNode> | undefined; getModulesByFile(file: string): Set<EvaluatedModuleNode> | undefined;
/** /**
* Returns the module node by the URL that was used in the import statement. * Returns the module node by the URL that was used in the import statement.
* Unlike module graph on the server, the URL is not resolved and is used as is. * Unlike module graph on the server, the URL is not resolved and is used as is.
* @param url Server URL that was used in the import statement * @param url Server URL that was used in the import statement
*/ */
getModuleByUrl(url: string): EvaluatedModuleNode | undefined; getModuleByUrl(url: string): EvaluatedModuleNode | undefined;
/** /**
* Ensure that module is in the graph. If the module is already in the graph, * Ensure that module is in the graph. If the module is already in the graph,
* it will return the existing module node. Otherwise, it will create a new * it will return the existing module node. Otherwise, it will create a new
* module node and add it to the graph. * module node and add it to the graph.
* @param id Resolved module ID * @param id Resolved module ID
* @param url URL that was used in the import statement * @param url URL that was used in the import statement
*/ */
ensureModule(id: string, url: string): EvaluatedModuleNode; ensureModule(id: string, url: string): EvaluatedModuleNode;
invalidateModule(node: EvaluatedModuleNode): void; invalidateModule(node: EvaluatedModuleNode): void;
/** /**
* Extracts the inlined source map from the module code and returns the decoded * Extracts the inlined source map from the module code and returns the decoded
* source map. If the source map is not inlined, it will return null. * source map. If the source map is not inlined, it will return null.
* @param id Resolved module ID * @param id Resolved module ID
*/ */
getModuleSourceMapById(id: string): DecodedMap | null; getModuleSourceMapById(id: string): DecodedMap | null;
clear(): void; clear(): void;
} }
@ -300,8 +304,8 @@ declare class ESModulesEvaluator implements ModuleEvaluator {
//#region src/module-runner/createImportMeta.d.ts //#region src/module-runner/createImportMeta.d.ts
declare function createDefaultImportMeta(modulePath: string): ModuleRunnerImportMeta; declare function createDefaultImportMeta(modulePath: string): ModuleRunnerImportMeta;
/** /**
* Create import.meta object for Node.js. * Create import.meta object for Node.js.
*/ */
declare function createNodeImportMeta(modulePath: string): Promise<ModuleRunnerImportMeta>; declare function createNodeImportMeta(modulePath: string): Promise<ModuleRunnerImportMeta>;
//#endregion //#endregion
export { ESModulesEvaluator, type EvaluatedModuleNode, EvaluatedModules, type FetchFunction, type FetchFunctionOptions, type FetchResult, type HMRLogger, type InterceptorOptions, type ModuleEvaluator, ModuleRunner, type ModuleRunnerContext, type ModuleRunnerHmr, type ModuleRunnerImportMeta, type ModuleRunnerOptions, type ModuleRunnerTransport, type ModuleRunnerTransportHandlers, type ResolvedResult, type SSRImportMetadata, createDefaultImportMeta, createNodeImportMeta, createWebSocketModuleRunnerTransport, normalizeModuleId, ssrDynamicImportKey, ssrExportAllKey, ssrExportNameKey, ssrImportKey, ssrImportMetaKey, ssrModuleExportsKey }; export { ESModulesEvaluator, type EvaluatedModuleNode, EvaluatedModules, type FetchFunction, type FetchFunctionOptions, type FetchResult, type HMRLogger, type InterceptorOptions, type ModuleEvaluator, ModuleRunner, type ModuleRunnerContext, type ModuleRunnerHmr, type ModuleRunnerImportMeta, type ModuleRunnerOptions, type ModuleRunnerTransport, type ModuleRunnerTransportHandlers, type ResolvedResult, type SSRImportMetadata, createDefaultImportMeta, createNodeImportMeta, createWebSocketModuleRunnerTransport, normalizeModuleId, ssrDynamicImportKey, ssrExportAllKey, ssrExportNameKey, ssrImportKey, ssrImportMetaKey, ssrModuleExportsKey };

View File

@ -216,13 +216,16 @@ var DecodedMap = class {
_decoded; _decoded;
_decodedMemo; _decodedMemo;
url; url;
file;
version; version;
names = []; names = [];
resolvedSources; resolvedSources;
constructor(map, from) { constructor(map, from) {
this.map = map; this.map = map;
let { mappings, names, sources } = map; let { mappings, names, sources } = map;
this.version = map.version, this.names = names || [], this._encoded = mappings || "", this._decodedMemo = memoizedState(), this.url = from, this.resolvedSources = (sources || []).map((s) => posixResolve(s || "", from)); this.version = map.version, this.names = names || [], this._encoded = mappings || "", this._decodedMemo = memoizedState(), this.url = from, this.file = from;
let originDir = posixDirname(from);
this.resolvedSources = (sources || []).map((s) => posixResolve(originDir, s || ""));
} }
}; };
function memoizedState() { function memoizedState() {
@ -619,7 +622,12 @@ const createInvokeableTransport = (transport) => {
ws.send(JSON.stringify(data)); ws.send(JSON.stringify(data));
} }
}; };
}, ssrModuleExportsKey = "__vite_ssr_exports__", ssrImportKey = "__vite_ssr_import__", ssrDynamicImportKey = "__vite_ssr_dynamic_import__", ssrExportAllKey = "__vite_ssr_exportAll__", ssrExportNameKey = "__vite_ssr_exportName__", ssrImportMetaKey = "__vite_ssr_import_meta__", noop = () => {}, silentConsole = { };
function createIsBuiltin(builtins) {
let plainBuiltinsSet = new Set(builtins.filter((builtin) => typeof builtin == "string")), regexBuiltins = builtins.filter((builtin) => typeof builtin != "string");
return (id) => plainBuiltinsSet.has(id) || regexBuiltins.some((regexp) => regexp.test(id));
}
const ssrModuleExportsKey = "__vite_ssr_exports__", ssrImportKey = "__vite_ssr_import__", ssrDynamicImportKey = "__vite_ssr_dynamic_import__", ssrExportAllKey = "__vite_ssr_exportAll__", ssrExportNameKey = "__vite_ssr_exportName__", ssrImportMetaKey = "__vite_ssr_import_meta__", noop = () => {}, silentConsole = {
debug: noop, debug: noop,
error: noop error: noop
}, hmrLogger = { }, hmrLogger = {
@ -917,11 +925,17 @@ export async function resolve(specifier, context, nextResolve) {
specifier = parsedSpecifier specifier = parsedSpecifier
context.parentURL = parsedImporter context.parentURL = parsedImporter
} }
return nextResolve(specifier, context) return nextResolve(specifier, context)
} }
`; `;
function customizationHookResolve(specifier, context, nextResolve) {
if (specifier.startsWith(customizationHookNamespace)) {
let data = specifier.slice(42), [parsedSpecifier, parsedImporter] = JSON.parse(data);
specifier = parsedSpecifier, context.parentURL = parsedImporter;
}
return nextResolve(specifier, context);
}
async function createImportMetaResolver() { async function createImportMetaResolver() {
let module; let module;
try { try {
@ -929,17 +943,24 @@ async function createImportMetaResolver() {
} catch { } catch {
return; return;
} }
if (module?.register) { if (module) {
try { if (module.registerHooks) return module.registerHooks({ resolve: customizationHookResolve }), importMetaResolveWithCustomHook;
let hookModuleContent = `data:text/javascript,${encodeURI(customizationHooksModule)}`; if (module.register) {
module.register(hookModuleContent); try {
} catch (e) { let hookModuleContent = `data:text/javascript,${encodeURI(customizationHooksModule)}`;
if ("code" in e && e.code === "ERR_NETWORK_IMPORT_DISALLOWED") return; module.register(hookModuleContent);
throw e; } catch (e) {
if ("code" in e && e.code === "ERR_NETWORK_IMPORT_DISALLOWED") return;
throw e;
}
return importMetaResolveWithCustomHook;
} }
return (specifier, importer) => import.meta.resolve(`${customizationHookNamespace}${JSON.stringify([specifier, importer])}`);
} }
} }
function importMetaResolveWithCustomHook(specifier, importer) {
return import.meta.resolve(`${customizationHookNamespace}${JSON.stringify([specifier, importer])}`);
}
`${customizationHookNamespace}`;
const envProxy = new Proxy({}, { get(_, p) { const envProxy = new Proxy({}, { get(_, p) {
throw Error(`[module runner] Dynamic access of "import.meta.env" is not supported. Please, use "import.meta.env.${String(p)}" instead.`); throw Error(`[module runner] Dynamic access of "import.meta.env" is not supported. Please, use "import.meta.env.${String(p)}" instead.`);
} }); } });
@ -977,6 +998,8 @@ var ModuleRunner = class {
transport; transport;
resetSourceMapSupport; resetSourceMapSupport;
concurrentModuleNodePromises = /* @__PURE__ */ new Map(); concurrentModuleNodePromises = /* @__PURE__ */ new Map();
isBuiltin;
builtinsPromise;
closed = !1; closed = !1;
constructor(options, evaluator = new ESModulesEvaluator(), debug) { constructor(options, evaluator = new ESModulesEvaluator(), debug) {
if (this.options = options, this.evaluator = evaluator, this.debug = debug, this.evaluatedModules = options.evaluatedModules ?? new EvaluatedModules(), this.transport = normalizeModuleRunnerTransport(options.transport), options.hmr !== !1) { if (this.options = options, this.evaluator = evaluator, this.debug = debug, this.evaluatedModules = options.evaluatedModules ?? new EvaluatedModules(), this.transport = normalizeModuleRunnerTransport(options.transport), options.hmr !== !1) {
@ -1043,10 +1066,21 @@ var ModuleRunner = class {
} }
return cached; return cached;
} }
ensureBuiltins() {
if (!this.isBuiltin) return this.builtinsPromise ??= (async () => {
try {
this.debug?.("[module runner] fetching builtins from server");
let builtins = (await this.transport.invoke("getBuiltins", [])).map((builtin) => typeof builtin == "object" && builtin && "type" in builtin ? builtin.type === "string" ? builtin.value : new RegExp(builtin.source, builtin.flags) : builtin);
this.isBuiltin = createIsBuiltin(builtins), this.debug?.("[module runner] builtins loaded:", builtins);
} finally {
this.builtinsPromise = void 0;
}
})(), this.builtinsPromise;
}
async getModuleInformation(url, importer, cachedModule) { async getModuleInformation(url, importer, cachedModule) {
if (this.closed) throw Error("Vite module runner has been closed."); if (this.closed) throw Error("Vite module runner has been closed.");
this.debug?.("[module runner] fetching", url); await this.ensureBuiltins(), this.debug?.("[module runner] fetching", url);
let isCached = !!(typeof cachedModule == "object" && cachedModule.meta), fetchedModule = url.startsWith("data:") ? { let isCached = !!(typeof cachedModule == "object" && cachedModule.meta), fetchedModule = url.startsWith("data:") || this.isBuiltin?.(url) ? {
externalize: url, externalize: url,
type: "builtin" type: "builtin"
} : await this.transport.invoke("fetchModule", [ } : await this.transport.invoke("fetchModule", [

18
node_modules/vite/package.json generated vendored
View File

@ -1,6 +1,6 @@
{ {
"name": "vite", "name": "vite",
"version": "7.1.12", "version": "7.2.2",
"type": "module", "type": "module",
"license": "MIT", "license": "MIT",
"author": "Evan You", "author": "Evan You",
@ -79,12 +79,12 @@
"fsevents": "~2.3.3" "fsevents": "~2.3.3"
}, },
"devDependencies": { "devDependencies": {
"@babel/parser": "^7.28.4", "@babel/parser": "^7.28.5",
"@jridgewell/remapping": "^2.3.5", "@jridgewell/remapping": "^2.3.5",
"@jridgewell/trace-mapping": "^0.3.31", "@jridgewell/trace-mapping": "^0.3.31",
"@oxc-project/types": "0.90.0", "@oxc-project/types": "0.95.0",
"@polka/compression": "^1.0.0-next.25", "@polka/compression": "^1.0.0-next.25",
"@rolldown/pluginutils": "^1.0.0-beta.43", "@rolldown/pluginutils": "^1.0.0-beta.44",
"@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-alias": "^5.1.1",
"@rollup/plugin-commonjs": "28.0.6", "@rollup/plugin-commonjs": "28.0.6",
"@rollup/plugin-dynamic-import-vars": "2.1.4", "@rollup/plugin-dynamic-import-vars": "2.1.4",
@ -92,7 +92,7 @@
"@types/escape-html": "^1.0.4", "@types/escape-html": "^1.0.4",
"@types/pnpapi": "^0.0.5", "@types/pnpapi": "^0.0.5",
"artichokie": "^0.4.2", "artichokie": "^0.4.2",
"baseline-browser-mapping": "^2.8.18", "baseline-browser-mapping": "^2.8.20",
"cac": "^6.7.14", "cac": "^6.7.14",
"chokidar": "^3.6.0", "chokidar": "^3.6.0",
"connect": "^3.7.0", "connect": "^3.7.0",
@ -110,7 +110,7 @@
"http-proxy-3": "^1.22.0", "http-proxy-3": "^1.22.0",
"launch-editor-middleware": "^2.11.1", "launch-editor-middleware": "^2.11.1",
"lightningcss": "^1.30.2", "lightningcss": "^1.30.2",
"magic-string": "^0.30.19", "magic-string": "^0.30.21",
"mlly": "^1.8.0", "mlly": "^1.8.0",
"mrmime": "^2.0.1", "mrmime": "^2.0.1",
"nanoid": "^5.1.6", "nanoid": "^5.1.6",
@ -124,8 +124,8 @@
"postcss-modules": "^6.0.1", "postcss-modules": "^6.0.1",
"premove": "^4.0.0", "premove": "^4.0.0",
"resolve.exports": "^2.0.3", "resolve.exports": "^2.0.3",
"rolldown": "^1.0.0-beta.43", "rolldown": "^1.0.0-beta.46",
"rolldown-plugin-dts": "^0.16.11", "rolldown-plugin-dts": "^0.17.3",
"rollup-plugin-license": "^3.6.0", "rollup-plugin-license": "^3.6.0",
"sass": "^1.93.2", "sass": "^1.93.2",
"sass-embedded": "^1.93.2", "sass-embedded": "^1.93.2",
@ -191,7 +191,7 @@
"build-types": "pnpm build-types-roll && pnpm build-types-check", "build-types": "pnpm build-types-roll && pnpm build-types-check",
"build-types-roll": "rolldown --config rolldown.dts.config.ts", "build-types-roll": "rolldown --config rolldown.dts.config.ts",
"build-types-check": "tsc --project tsconfig.check.json", "build-types-check": "tsc --project tsconfig.check.json",
"typecheck": "tsc && tsc -p src/node", "typecheck": "tsc && tsc -p src/node && tsc -p src/module-runner && tsc -p src/shared && tsc -p src/node/__tests_dts__",
"lint": "eslint --cache --ext .ts src/**", "lint": "eslint --cache --ext .ts src/**",
"format": "prettier --write --cache --parser typescript \"src/**/*.ts\"", "format": "prettier --write --cache --parser typescript \"src/**/*.ts\"",
"generate-target": "tsx scripts/generateTarget.ts" "generate-target": "tsx scripts/generateTarget.ts"

View File

@ -6,6 +6,7 @@ import type {
} from './hmrPayload' } from './hmrPayload'
export interface CustomEventMap { export interface CustomEventMap {
// client events
'vite:beforeUpdate': UpdatePayload 'vite:beforeUpdate': UpdatePayload
'vite:afterUpdate': UpdatePayload 'vite:afterUpdate': UpdatePayload
'vite:beforePrune': PrunePayload 'vite:beforePrune': PrunePayload
@ -14,6 +15,10 @@ export interface CustomEventMap {
'vite:invalidate': InvalidatePayload 'vite:invalidate': InvalidatePayload
'vite:ws:connect': WebSocketConnectionPayload 'vite:ws:connect': WebSocketConnectionPayload
'vite:ws:disconnect': WebSocketConnectionPayload 'vite:ws:disconnect': WebSocketConnectionPayload
// server events
'vite:client:connect': undefined
'vite:client:disconnect': undefined
} }
export interface WebSocketConnectionPayload { export interface WebSocketConnectionPayload {

9
package-lock.json generated
View File

@ -12,7 +12,7 @@
"three": "^0.181.0" "three": "^0.181.0"
}, },
"devDependencies": { "devDependencies": {
"vite": "^7.1.12" "vite": "^7.2.2"
} }
}, },
"node_modules/@esbuild/aix-ppc64": { "node_modules/@esbuild/aix-ppc64": {
@ -991,11 +991,10 @@
} }
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "7.1.12", "version": "7.2.2",
"resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz",
"integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"esbuild": "^0.25.0", "esbuild": "^0.25.0",
"fdir": "^6.5.0", "fdir": "^6.5.0",

View File

@ -14,6 +14,6 @@
"three": "^0.181.0" "three": "^0.181.0"
}, },
"devDependencies": { "devDependencies": {
"vite": "^7.1.12" "vite": "^7.2.2"
} }
} }

View File

@ -1,43 +1,43 @@
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
import math import math
def round_axis(x, y, z): def round_axis(x, y, z):
# Normalize vector # Normalize vector
mag = math.sqrt(x**2 + y**2 + z**2) mag = math.sqrt(x**2 + y**2 + z**2)
if mag == 0: if mag == 0:
return (0, 0, 0) return (0, 0, 0)
x, y, z = x/mag, y/mag, z/mag x, y, z = x/mag, y/mag, z/mag
# Compare to cardinal directions # Compare to cardinal directions
directions = { directions = {
(1, 0, 0): 'X+', (1, 0, 0): 'X+',
(-1, 0, 0): 'X-', (-1, 0, 0): 'X-',
(0, 1, 0): 'Y+', (0, 1, 0): 'Y+',
(0, -1, 0): 'Y-', (0, -1, 0): 'Y-',
(0, 0, 1): 'Z+', (0, 0, 1): 'Z+',
(0, 0, -1): 'Z-' (0, 0, -1): 'Z-'
} }
best = max(directions.keys(), key=lambda d: x*d[0] + y*d[1] + z*d[2]) best = max(directions.keys(), key=lambda d: x*d[0] + y*d[1] + z*d[2])
return best return best
def process_urdf(file_path, output_path): def process_urdf(file_path, output_path):
tree = ET.parse(file_path) tree = ET.parse(file_path)
root = tree.getroot() root = tree.getroot()
for joint in root.findall('joint'): for joint in root.findall('joint'):
axis_elem = joint.find('axis') axis_elem = joint.find('axis')
if axis_elem is not None: if axis_elem is not None:
axis_str = axis_elem.attrib.get('xyz', '') axis_str = axis_elem.attrib.get('xyz', '')
try: try:
x, y, z = map(float, axis_str.strip().split()) x, y, z = map(float, axis_str.strip().split())
rx, ry, rz = round_axis(x, y, z) rx, ry, rz = round_axis(x, y, z)
axis_elem.set('xyz', f"{rx} {ry} {rz}") axis_elem.set('xyz', f"{rx} {ry} {rz}")
except: except:
continue continue
tree.write(output_path) tree.write(output_path)
print(f"Rounded axes written to {output_path}") print(f"Rounded axes written to {output_path}")
# Example usage # Example usage
process_urdf("./urdf/sample.urdf", "./urdf/output.urdf") process_urdf("./urdf/sample.urdf", "./urdf/output.urdf")

712
script.js
View File

@ -1,356 +1,356 @@
import * as THREE from 'three'; import * as THREE from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'; import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
import URDFLoader from './urdf/URDFLoader.js'; import URDFLoader from './urdf/URDFLoader.js';
// Setup scene, camera, renderer // Setup scene, camera, renderer
const canvas = document.getElementById('urdf-canvas'); const canvas = document.getElementById('urdf-canvas');
const renderer = new THREE.WebGLRenderer({ canvas, antialias: true }); const renderer = new THREE.WebGLRenderer({ canvas, antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight); renderer.setSize(window.innerWidth, window.innerHeight);
const scene = new THREE.Scene(); const scene = new THREE.Scene();
scene.background = new THREE.Color(0xaaaaaa); scene.background = new THREE.Color(0xaaaaaa);
const camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 100); const camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 100);
camera.position.set(2, 2, 2); camera.position.set(2, 2, 2);
camera.lookAt(0, 0, 0); camera.lookAt(0, 0, 0);
// Lights // Lights
scene.add(new THREE.AmbientLight(0xffffff, 0.6)); scene.add(new THREE.AmbientLight(0xffffff, 0.6));
const directional = new THREE.DirectionalLight(0xffffff, 0.8); const directional = new THREE.DirectionalLight(0xffffff, 0.8);
directional.position.set(15, 10, 7); directional.position.set(15, 10, 7);
const directional2 = new THREE.DirectionalLight(0xffffff, 0.8); const directional2 = new THREE.DirectionalLight(0xffffff, 0.8);
directional2.position.set(-15, 10, -7); directional2.position.set(-15, 10, -7);
scene.add(directional2); scene.add(directional2);
// Controls // Controls
const controls = new OrbitControls(camera, renderer.domElement); const controls = new OrbitControls(camera, renderer.domElement);
controls.target.set(0, 0.5, 0); controls.target.set(0, 0.5, 0);
controls.update(); controls.update();
// Helpers // Helpers
scene.add(new THREE.AxesHelper(1)); scene.add(new THREE.AxesHelper(1));
const gridHelper = new THREE.GridHelper(2, 10); const gridHelper = new THREE.GridHelper(2, 10);
//gridHelper.rotation.x = Math.PI / 2; //gridHelper.rotation.x = Math.PI / 2;
gridHelper.position.z = 0; gridHelper.position.z = 0;
scene.add(gridHelper); scene.add(gridHelper);
// Raycasting // Raycasting
const raycaster = new THREE.Raycaster(); const raycaster = new THREE.Raycaster();
const mouse = new THREE.Vector2(); const mouse = new THREE.Vector2();
let hoveredJoint = null; let hoveredJoint = null;
let isDragging = false; let isDragging = false;
let lastX = null; let lastX = null;
let worldAxis = null; let worldAxis = null;
let draggedJoint = null; let draggedJoint = null;
let arc = null; let arc = null;
const jointAngles = {}; // key: jointName, value: current angle in radians const jointAngles = {}; // key: jointName, value: current angle in radians
function findJointAncestor(object) { function findJointAncestor(object) {
while (object && object.parent) { while (object && object.parent) {
if (object.type === 'URDFJoint') return object; if (object.type === 'URDFJoint') return object;
object = object.parent; object = object.parent;
} }
return null; return null;
} }
function createRotationArc(axis, lower, upper, radius = 0.1, segments = 32) { function createRotationArc(axis, lower, upper, radius = 0.1, segments = 32) {
const points = []; const points = [];
console.log(axis); console.log(axis);
console.log(axis.clone()); console.log(axis.clone());
// ✅ Ensure axis is normalized // ✅ Ensure axis is normalized
const normalizedAxis = axis.clone().normalize(); const normalizedAxis = axis.clone().normalize();
// ✅ Find a perpendicular vector // ✅ Find a perpendicular vector
let perp = new THREE.Vector3(0, 1, 0); let perp = new THREE.Vector3(0, 1, 0);
if (Math.abs(normalizedAxis.dot(perp)) > 0.99) { if (Math.abs(normalizedAxis.dot(perp)) > 0.99) {
perp = new THREE.Vector3(1, 0, 0); // fallback if axis is nearly parallel to Y perp = new THREE.Vector3(1, 0, 0); // fallback if axis is nearly parallel to Y
} }
const tangent = perp.cross(normalizedAxis).normalize(); const tangent = perp.cross(normalizedAxis).normalize();
for (let i = 0; i <= segments; i++) { for (let i = 0; i <= segments; i++) {
const angle = lower + (upper - lower) * (i / segments); const angle = lower + (upper - lower) * (i / segments);
const point = tangent.clone().applyAxisAngle(normalizedAxis, angle).multiplyScalar(radius); const point = tangent.clone().applyAxisAngle(normalizedAxis, angle).multiplyScalar(radius);
points.push(point); points.push(point);
} }
const geometry = new THREE.BufferGeometry().setFromPoints(points); const geometry = new THREE.BufferGeometry().setFromPoints(points);
const material = new THREE.LineBasicMaterial({ color: 0xffff00 }); const material = new THREE.LineBasicMaterial({ color: 0xffff00 });
return new THREE.Line(geometry, material); return new THREE.Line(geometry, material);
} }
function createRotationSector(axis, lower, upper, radius = 0.1, segments = 64) { function createRotationSector(axis, lower, upper, radius = 0.1, segments = 64) {
const motorMargin = 0.4; // hardcoded extra range beyond joint limits const motorMargin = 0.4; // hardcoded extra range beyond joint limits
const motorLower = lower - motorMargin; const motorLower = lower - motorMargin;
const motorUpper = upper + motorMargin; const motorUpper = upper + motorMargin;
const redMaterial = new THREE.MeshBasicMaterial({ const redMaterial = new THREE.MeshBasicMaterial({
color: 0xff0000, color: 0xff0000,
transparent: true, transparent: true,
opacity: 0.2, opacity: 0.2,
side: THREE.DoubleSide, side: THREE.DoubleSide,
depthTest: false, depthTest: false,
depthWrite: false depthWrite: false
}); });
const whiteMaterial = new THREE.MeshBasicMaterial({ const whiteMaterial = new THREE.MeshBasicMaterial({
color: 0xffffff, color: 0xffffff,
transparent: true, transparent: true,
opacity: 0.6, opacity: 0.6,
side: THREE.DoubleSide, side: THREE.DoubleSide,
depthTest: false, depthTest: false,
depthWrite: false depthWrite: false
}); });
function createArc(start, end, material) { function createArc(start, end, material) {
const shape = new THREE.Shape(); const shape = new THREE.Shape();
shape.moveTo(0, 0); shape.moveTo(0, 0);
for (let i = 0; i <= segments; i++) { for (let i = 0; i <= segments; i++) {
const angle = start + (end - start) * (i / segments); const angle = start + (end - start) * (i / segments);
shape.lineTo(Math.cos(angle) * radius, Math.sin(angle) * radius); shape.lineTo(Math.cos(angle) * radius, Math.sin(angle) * radius);
} }
shape.lineTo(0, 0); shape.lineTo(0, 0);
const geometry = new THREE.ShapeGeometry(shape); const geometry = new THREE.ShapeGeometry(shape);
return new THREE.Mesh(geometry, material); return new THREE.Mesh(geometry, material);
} }
const redLeft = createArc(motorLower, lower, redMaterial); const redLeft = createArc(motorLower, lower, redMaterial);
const whiteArc = createArc(lower, upper, whiteMaterial); const whiteArc = createArc(lower, upper, whiteMaterial);
const redRight = createArc(upper, motorUpper, redMaterial); const redRight = createArc(upper, motorUpper, redMaterial);
// Orient all arcs to match the axis // Orient all arcs to match the axis
const basis = new THREE.Matrix4(); const basis = new THREE.Matrix4();
const up = new THREE.Vector3(0, 0, 1); const up = new THREE.Vector3(0, 0, 1);
const quaternion = new THREE.Quaternion().setFromUnitVectors(up, axis.clone().normalize()); const quaternion = new THREE.Quaternion().setFromUnitVectors(up, axis.clone().normalize());
basis.makeRotationFromQuaternion(quaternion); basis.makeRotationFromQuaternion(quaternion);
redLeft.applyMatrix4(basis); redLeft.applyMatrix4(basis);
whiteArc.applyMatrix4(basis); whiteArc.applyMatrix4(basis);
redRight.applyMatrix4(basis); redRight.applyMatrix4(basis);
const group = new THREE.Group(); const group = new THREE.Group();
group.add(redLeft); group.add(redLeft);
group.add(whiteArc); group.add(whiteArc);
group.add(redRight); group.add(redRight);
return group; return group;
} }
function createAngleIndicator(axis, angle, radius = 0.1) { function createAngleIndicator(axis, angle, radius = 0.1) {
const dir = new THREE.Vector3(Math.cos(angle), Math.sin(angle), 0).multiplyScalar(radius); const dir = new THREE.Vector3(Math.cos(angle), Math.sin(angle), 0).multiplyScalar(radius);
const geometry = new THREE.BufferGeometry().setFromPoints([ const geometry = new THREE.BufferGeometry().setFromPoints([
new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, 0, 0),
dir, dir,
]); ]);
const material = new THREE.LineBasicMaterial({ const material = new THREE.LineBasicMaterial({
color: 0xffffff, // white color: 0xffffff, // white
linewidth: 2, // note: linewidth only works in some renderers linewidth: 2, // note: linewidth only works in some renderers
depthTest: false, // ✅ always on top depthTest: false, // ✅ always on top
depthWrite: false depthWrite: false
}); });
const line = new THREE.Line(geometry, material); const line = new THREE.Line(geometry, material);
// Rotate into axis plane // Rotate into axis plane
const up = new THREE.Vector3(0, 0, 1); const up = new THREE.Vector3(0, 0, 1);
const quaternion = new THREE.Quaternion().setFromUnitVectors(up, axis.clone().normalize()); const quaternion = new THREE.Quaternion().setFromUnitVectors(up, axis.clone().normalize());
line.applyQuaternion(quaternion); line.applyQuaternion(quaternion);
return line; return line;
} }
// Load URDF // Load URDF
const loader = new URDFLoader(); const loader = new URDFLoader();
loader.packages = { '': './urdf/' }; loader.packages = { '': './urdf/' };
function findObjectByName(root, name) { function findObjectByName(root, name) {
let result = null; let result = null;
root.traverse(child => { root.traverse(child => {
if (child.name === name) result = child; if (child.name === name) result = child;
}); });
return result; return result;
} }
loader.load('./urdf/sample.urdf', robot => { loader.load('./urdf/sample.urdf', robot => {
//scene.rotation.x = -Math.PI / 2; //scene.rotation.x = -Math.PI / 2;
robot.rotation.x = -Math.PI / 2; robot.rotation.x = -Math.PI / 2;
scene.add(robot); scene.add(robot);
document.getElementById('status').textContent = 'URDF Loaded'; document.getElementById('status').textContent = 'URDF Loaded';
loader.parseVisual = true; loader.parseVisual = true;
loader.parseCollision = false; loader.parseCollision = false;
// Add AxesHelpers to all meshes // Add AxesHelpers to all meshes
robot.traverse(obj => { robot.traverse(obj => {
if (obj.isMesh) obj.add(new THREE.AxesHelper(0.05)); if (obj.isMesh) obj.add(new THREE.AxesHelper(0.05));
}); });
// Setup pointer events // Setup pointer events
canvas.addEventListener('pointermove', event => { canvas.addEventListener('pointermove', event => {
mouse.x = (event.clientX / canvas.clientWidth) * 2 - 1; mouse.x = (event.clientX / canvas.clientWidth) * 2 - 1;
mouse.y = -(event.clientY / canvas.clientHeight) * 2 + 1; mouse.y = -(event.clientY / canvas.clientHeight) * 2 + 1;
raycaster.setFromCamera(mouse, camera); raycaster.setFromCamera(mouse, camera);
const intersects = raycaster.intersectObjects(robot.children, true); const intersects = raycaster.intersectObjects(robot.children, true);
if (isDragging && draggedJoint && worldAxis) { if (isDragging && draggedJoint && worldAxis) {
const deltaX = event.clientX - lastX; const deltaX = event.clientX - lastX;
lastX = event.clientX; lastX = event.clientX;
const angleDelta = deltaX * 0.005; const angleDelta = deltaX * 0.005;
const jointName = draggedJoint.name; const jointName = draggedJoint.name;
const limits = robot.joints[jointName]?.limit; const limits = robot.joints[jointName]?.limit;
const lower = limits?.lower ?? -Math.PI; const lower = limits?.lower ?? -Math.PI;
const upper = limits?.upper ?? Math.PI; const upper = limits?.upper ?? Math.PI;
const currentAngle = jointAngles[jointName] ?? 0; const currentAngle = jointAngles[jointName] ?? 0;
const proposedAngle = currentAngle + angleDelta; const proposedAngle = currentAngle + angleDelta;
// ✅ Clamp to limits // ✅ Clamp to limits
const clampedAngle = Math.max(lower, Math.min(upper, proposedAngle)); const clampedAngle = Math.max(lower, Math.min(upper, proposedAngle));
const actualDelta = clampedAngle - currentAngle; const actualDelta = clampedAngle - currentAngle;
// ✅ Apply rotation // ✅ Apply rotation
draggedJoint.rotateOnAxis(worldAxis, actualDelta); draggedJoint.rotateOnAxis(worldAxis, actualDelta);
jointAngles[jointName] = clampedAngle; jointAngles[jointName] = clampedAngle;
// Remove old indicator // Remove old indicator
if (draggedJoint.userData.gizmo?.indicator) { if (draggedJoint.userData.gizmo?.indicator) {
draggedJoint.parent.remove(draggedJoint.userData.gizmo.indicator); draggedJoint.parent.remove(draggedJoint.userData.gizmo.indicator);
} }
// Add updated indicator // Add updated indicator
const newIndicator = createAngleIndicator(worldAxis, jointAngles[jointName]); const newIndicator = createAngleIndicator(worldAxis, jointAngles[jointName]);
newIndicator.position.copy(draggedJoint.position); newIndicator.position.copy(draggedJoint.position);
draggedJoint.parent.add(newIndicator); draggedJoint.parent.add(newIndicator);
draggedJoint.userData.gizmo.indicator = newIndicator; draggedJoint.userData.gizmo.indicator = newIndicator;
} }
if (intersects.length > 0) { if (intersects.length > 0) {
const target = intersects[0].object; const target = intersects[0].object;
// Reset previous highlight // Reset previous highlight
if ( if (
hoveredJoint && hoveredJoint &&
hoveredJoint.material && hoveredJoint.material &&
'emissive' in hoveredJoint.material && 'emissive' in hoveredJoint.material &&
typeof hoveredJoint.material.emissive.setHex === 'function' typeof hoveredJoint.material.emissive.setHex === 'function'
) { ) {
hoveredJoint.material.emissive.setHex(0x000000); hoveredJoint.material.emissive.setHex(0x000000);
} }
hoveredJoint = target; hoveredJoint = target;
// Highlight new joint // Highlight new joint
if ( if (
hoveredJoint.material && hoveredJoint.material &&
'emissive' in hoveredJoint.material && 'emissive' in hoveredJoint.material &&
typeof hoveredJoint.material.emissive.setHex === 'function' typeof hoveredJoint.material.emissive.setHex === 'function'
) { ) {
hoveredJoint.material.emissive.setHex(0x333333); hoveredJoint.material.emissive.setHex(0x333333);
} }
} else { } else {
if ( if (
hoveredJoint && hoveredJoint &&
hoveredJoint.material && hoveredJoint.material &&
'emissive' in hoveredJoint.material && 'emissive' in hoveredJoint.material &&
typeof hoveredJoint.material.emissive.setHex === 'function' typeof hoveredJoint.material.emissive.setHex === 'function'
) { ) {
hoveredJoint.material.emissive.setHex(0x000000); hoveredJoint.material.emissive.setHex(0x000000);
} }
hoveredJoint = null; hoveredJoint = null;
} }
}); });
canvas.addEventListener('pointerdown', event => { canvas.addEventListener('pointerdown', event => {
if (!hoveredJoint) return; if (!hoveredJoint) return;
isDragging = true; isDragging = true;
lastX = event.clientX; lastX = event.clientX;
controls.enabled = false; controls.enabled = false;
draggedJoint = findJointAncestor(hoveredJoint); draggedJoint = findJointAncestor(hoveredJoint);
if (!draggedJoint) return; if (!draggedJoint) return;
const jointName = draggedJoint.name; const jointName = draggedJoint.name;
const jointData = robot.joints?.[jointName]; const jointData = robot.joints?.[jointName];
// ✅ Check if axis is a valid THREE.Vector3 // ✅ Check if axis is a valid THREE.Vector3
if (!(jointData?.axis instanceof THREE.Vector3)) { if (!(jointData?.axis instanceof THREE.Vector3)) {
console.warn(`Invalid axis for joint "${jointName}":`, jointData?.axis); console.warn(`Invalid axis for joint "${jointName}":`, jointData?.axis);
return; return;
} }
const urdfAxis = jointData.axis.clone(); const urdfAxis = jointData.axis.clone();
if (urdfAxis.lengthSq() === 0) { if (urdfAxis.lengthSq() === 0) {
console.warn(`Zero-length axis for joint "${jointName}"`); console.warn(`Zero-length axis for joint "${jointName}"`);
return; return;
} }
worldAxis = urdfAxis.normalize(); worldAxis = urdfAxis.normalize();
const limits = robot.joints[jointName]?.limit; const limits = robot.joints[jointName]?.limit;
const lower = limits?.lower ?? -Math.PI; const lower = limits?.lower ?? -Math.PI;
const upper = limits?.upper ?? Math.PI; const upper = limits?.upper ?? Math.PI;
const sector = createRotationSector(worldAxis, lower, upper); const sector = createRotationSector(worldAxis, lower, upper);
const indicator = createAngleIndicator(worldAxis, jointAngles[jointName] ?? 0); const indicator = createAngleIndicator(worldAxis, jointAngles[jointName] ?? 0);
sector.position.copy(draggedJoint.position); sector.position.copy(draggedJoint.position);
indicator.position.copy(draggedJoint.position); indicator.position.copy(draggedJoint.position);
draggedJoint.parent.add(sector); draggedJoint.parent.add(sector);
draggedJoint.parent.add(indicator); draggedJoint.parent.add(indicator);
// Store for cleanup // Store for cleanup
draggedJoint.userData.gizmo = { sector, indicator }; draggedJoint.userData.gizmo = { sector, indicator };
console.log(`Dragging joint "${jointName}" on axis`, worldAxis.toArray()); console.log(`Dragging joint "${jointName}" on axis`, worldAxis.toArray());
}); });
canvas.addEventListener('pointerup', () => { canvas.addEventListener('pointerup', () => {
isDragging = false; isDragging = false;
controls.enabled = true; controls.enabled = true;
const gizmo = draggedJoint?.userData.gizmo; const gizmo = draggedJoint?.userData.gizmo;
if (gizmo) { if (gizmo) {
draggedJoint.parent.remove(gizmo.sector); draggedJoint.parent.remove(gizmo.sector);
draggedJoint.parent.remove(gizmo.indicator); draggedJoint.parent.remove(gizmo.indicator);
} }
draggedJoint = null; draggedJoint = null;
worldAxis = null; worldAxis = null;
}); });
animate(); animate();
}); });
function animate() { function animate() {
requestAnimationFrame(animate); requestAnimationFrame(animate);
renderer.render(scene, camera); renderer.render(scene, camera);
} }

View File

@ -1,469 +1,469 @@
import { Euler, Object3D, Vector3, Quaternion, Matrix4 } from 'three'; import { Euler, Object3D, Vector3, Quaternion, Matrix4 } from 'three';
const _tempAxis = new Vector3(); const _tempAxis = new Vector3();
const _tempEuler = new Euler(); const _tempEuler = new Euler();
const _tempTransform = new Matrix4(); const _tempTransform = new Matrix4();
const _tempOrigTransform = new Matrix4(); const _tempOrigTransform = new Matrix4();
const _tempQuat = new Quaternion(); const _tempQuat = new Quaternion();
const _tempScale = new Vector3(1.0, 1.0, 1.0); const _tempScale = new Vector3(1.0, 1.0, 1.0);
const _tempPosition = new Vector3(); const _tempPosition = new Vector3();
class URDFBase extends Object3D { class URDFBase extends Object3D {
constructor(...args) { constructor(...args) {
super(...args); super(...args);
this.urdfNode = null; this.urdfNode = null;
this.urdfName = ''; this.urdfName = '';
} }
copy(source, recursive) { copy(source, recursive) {
super.copy(source, recursive); super.copy(source, recursive);
this.urdfNode = source.urdfNode; this.urdfNode = source.urdfNode;
this.urdfName = source.urdfName; this.urdfName = source.urdfName;
return this; return this;
} }
} }
class URDFCollider extends URDFBase { class URDFCollider extends URDFBase {
constructor(...args) { constructor(...args) {
super(...args); super(...args);
this.isURDFCollider = true; this.isURDFCollider = true;
this.type = 'URDFCollider'; this.type = 'URDFCollider';
} }
} }
class URDFVisual extends URDFBase { class URDFVisual extends URDFBase {
constructor(...args) { constructor(...args) {
super(...args); super(...args);
this.isURDFVisual = true; this.isURDFVisual = true;
this.type = 'URDFVisual'; this.type = 'URDFVisual';
} }
} }
class URDFLink extends URDFBase { class URDFLink extends URDFBase {
constructor(...args) { constructor(...args) {
super(...args); super(...args);
this.isURDFLink = true; this.isURDFLink = true;
this.type = 'URDFLink'; this.type = 'URDFLink';
} }
} }
class URDFJoint extends URDFBase { class URDFJoint extends URDFBase {
get jointType() { get jointType() {
return this._jointType; return this._jointType;
} }
set jointType(v) { set jointType(v) {
if (this.jointType === v) return; if (this.jointType === v) return;
this._jointType = v; this._jointType = v;
this.matrixWorldNeedsUpdate = true; this.matrixWorldNeedsUpdate = true;
switch (v) { switch (v) {
case 'fixed': case 'fixed':
this.jointValue = []; this.jointValue = [];
break; break;
case 'continuous': case 'continuous':
case 'revolute': case 'revolute':
case 'prismatic': case 'prismatic':
this.jointValue = new Array(1).fill(0); this.jointValue = new Array(1).fill(0);
break; break;
case 'planar': case 'planar':
// Planar joints are, 3dof: position XY and rotation Z. // Planar joints are, 3dof: position XY and rotation Z.
this.jointValue = new Array(3).fill(0); this.jointValue = new Array(3).fill(0);
this.axis = new Vector3(0, 0, 1); this.axis = new Vector3(0, 0, 1);
break; break;
case 'floating': case 'floating':
this.jointValue = new Array(6).fill(0); this.jointValue = new Array(6).fill(0);
break; break;
} }
} }
get angle() { get angle() {
return this.jointValue[0]; return this.jointValue[0];
} }
constructor(...args) { constructor(...args) {
super(...args); super(...args);
this.isURDFJoint = true; this.isURDFJoint = true;
this.type = 'URDFJoint'; this.type = 'URDFJoint';
this.jointValue = null; this.jointValue = null;
this.jointType = 'fixed'; this.jointType = 'fixed';
this.axis = new Vector3(1, 0, 0); this.axis = new Vector3(1, 0, 0);
this.limit = { lower: 0, upper: 0 }; this.limit = { lower: 0, upper: 0 };
this.ignoreLimits = false; this.ignoreLimits = false;
this.origPosition = null; this.origPosition = null;
this.origQuaternion = null; this.origQuaternion = null;
this.mimicJoints = []; this.mimicJoints = [];
} }
/* Overrides */ /* Overrides */
copy(source, recursive) { copy(source, recursive) {
super.copy(source, recursive); super.copy(source, recursive);
this.jointType = source.jointType; this.jointType = source.jointType;
this.axis = source.axis.clone(); this.axis = source.axis.clone();
this.limit.lower = source.limit.lower; this.limit.lower = source.limit.lower;
this.limit.upper = source.limit.upper; this.limit.upper = source.limit.upper;
this.ignoreLimits = false; this.ignoreLimits = false;
this.jointValue = [...source.jointValue]; this.jointValue = [...source.jointValue];
this.origPosition = source.origPosition ? source.origPosition.clone() : null; this.origPosition = source.origPosition ? source.origPosition.clone() : null;
this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null; this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;
this.mimicJoints = [...source.mimicJoints]; this.mimicJoints = [...source.mimicJoints];
return this; return this;
} }
/* Public Functions */ /* Public Functions */
/** /**
* @param {...number|null} values The joint value components to set, optionally null for no-op * @param {...number|null} values The joint value components to set, optionally null for no-op
* @returns {boolean} Whether the invocation of this function resulted in an actual change to the joint value * @returns {boolean} Whether the invocation of this function resulted in an actual change to the joint value
*/ */
setJointValue(...values) { setJointValue(...values) {
// Parse all incoming values into numbers except null, which we treat as a no-op for that value component. // Parse all incoming values into numbers except null, which we treat as a no-op for that value component.
values = values.map(v => v === null ? null : parseFloat(v)); values = values.map(v => v === null ? null : parseFloat(v));
if (!this.origPosition || !this.origQuaternion) { if (!this.origPosition || !this.origQuaternion) {
this.origPosition = this.position.clone(); this.origPosition = this.position.clone();
this.origQuaternion = this.quaternion.clone(); this.origQuaternion = this.quaternion.clone();
} }
let didUpdate = false; let didUpdate = false;
this.mimicJoints.forEach(joint => { this.mimicJoints.forEach(joint => {
didUpdate = joint.updateFromMimickedJoint(...values) || didUpdate; didUpdate = joint.updateFromMimickedJoint(...values) || didUpdate;
}); });
switch (this.jointType) { switch (this.jointType) {
case 'fixed': { case 'fixed': {
return didUpdate; return didUpdate;
} }
case 'continuous': case 'continuous':
case 'revolute': { case 'revolute': {
let angle = values[0]; let angle = values[0];
if (angle == null) return didUpdate; if (angle == null) return didUpdate;
if (angle === this.jointValue[0]) return didUpdate; if (angle === this.jointValue[0]) return didUpdate;
if (!this.ignoreLimits && this.jointType === 'revolute') { if (!this.ignoreLimits && this.jointType === 'revolute') {
angle = Math.min(this.limit.upper, angle); angle = Math.min(this.limit.upper, angle);
angle = Math.max(this.limit.lower, angle); angle = Math.max(this.limit.lower, angle);
} }
this.quaternion this.quaternion
.setFromAxisAngle(this.axis, angle) .setFromAxisAngle(this.axis, angle)
.premultiply(this.origQuaternion); .premultiply(this.origQuaternion);
if (this.jointValue[0] !== angle) { if (this.jointValue[0] !== angle) {
this.jointValue[0] = angle; this.jointValue[0] = angle;
this.matrixWorldNeedsUpdate = true; this.matrixWorldNeedsUpdate = true;
return true; return true;
} else { } else {
return didUpdate; return didUpdate;
} }
} }
case 'prismatic': { case 'prismatic': {
let pos = values[0]; let pos = values[0];
if (pos == null) return didUpdate; if (pos == null) return didUpdate;
if (pos === this.jointValue[0]) return didUpdate; if (pos === this.jointValue[0]) return didUpdate;
if (!this.ignoreLimits) { if (!this.ignoreLimits) {
pos = Math.min(this.limit.upper, pos); pos = Math.min(this.limit.upper, pos);
pos = Math.max(this.limit.lower, pos); pos = Math.max(this.limit.lower, pos);
} }
this.position.copy(this.origPosition); this.position.copy(this.origPosition);
_tempAxis.copy(this.axis).applyEuler(this.rotation); _tempAxis.copy(this.axis).applyEuler(this.rotation);
this.position.addScaledVector(_tempAxis, pos); this.position.addScaledVector(_tempAxis, pos);
if (this.jointValue[0] !== pos) { if (this.jointValue[0] !== pos) {
this.jointValue[0] = pos; this.jointValue[0] = pos;
this.matrixWorldNeedsUpdate = true; this.matrixWorldNeedsUpdate = true;
return true; return true;
} else { } else {
return didUpdate; return didUpdate;
} }
} }
case 'floating': { case 'floating': {
// no-op if all values are identical to existing value or are null // no-op if all values are identical to existing value or are null
if (this.jointValue.every((value, index) => values[index] === value || values[index] === null)) return didUpdate; if (this.jointValue.every((value, index) => values[index] === value || values[index] === null)) return didUpdate;
// Floating joints have six degrees of freedom: X, Y, Z, R, P, Y. // Floating joints have six degrees of freedom: X, Y, Z, R, P, Y.
this.jointValue[0] = values[0] !== null ? values[0] : this.jointValue[0]; this.jointValue[0] = values[0] !== null ? values[0] : this.jointValue[0];
this.jointValue[1] = values[1] !== null ? values[1] : this.jointValue[1]; this.jointValue[1] = values[1] !== null ? values[1] : this.jointValue[1];
this.jointValue[2] = values[2] !== null ? values[2] : this.jointValue[2]; this.jointValue[2] = values[2] !== null ? values[2] : this.jointValue[2];
this.jointValue[3] = values[3] !== null ? values[3] : this.jointValue[3]; this.jointValue[3] = values[3] !== null ? values[3] : this.jointValue[3];
this.jointValue[4] = values[4] !== null ? values[4] : this.jointValue[4]; this.jointValue[4] = values[4] !== null ? values[4] : this.jointValue[4];
this.jointValue[5] = values[5] !== null ? values[5] : this.jointValue[5]; this.jointValue[5] = values[5] !== null ? values[5] : this.jointValue[5];
// Compose transform of joint origin and transform due to joint values // Compose transform of joint origin and transform due to joint values
_tempOrigTransform.compose(this.origPosition, this.origQuaternion, _tempScale); _tempOrigTransform.compose(this.origPosition, this.origQuaternion, _tempScale);
_tempQuat.setFromEuler( _tempQuat.setFromEuler(
_tempEuler.set( _tempEuler.set(
this.jointValue[3], this.jointValue[3],
this.jointValue[4], this.jointValue[4],
this.jointValue[5], this.jointValue[5],
'XYZ', 'XYZ',
), ),
); );
_tempPosition.set(this.jointValue[0], this.jointValue[1], this.jointValue[2]); _tempPosition.set(this.jointValue[0], this.jointValue[1], this.jointValue[2]);
_tempTransform.compose(_tempPosition, _tempQuat, _tempScale); _tempTransform.compose(_tempPosition, _tempQuat, _tempScale);
// Calcualte new transform // Calcualte new transform
_tempOrigTransform.premultiply(_tempTransform); _tempOrigTransform.premultiply(_tempTransform);
this.position.setFromMatrixPosition(_tempOrigTransform); this.position.setFromMatrixPosition(_tempOrigTransform);
this.rotation.setFromRotationMatrix(_tempOrigTransform); this.rotation.setFromRotationMatrix(_tempOrigTransform);
this.matrixWorldNeedsUpdate = true; this.matrixWorldNeedsUpdate = true;
return true; return true;
} }
case 'planar': { case 'planar': {
// no-op if all values are identical to existing value or are null // no-op if all values are identical to existing value or are null
if (this.jointValue.every((value, index) => values[index] === value || values[index] === null)) return didUpdate; if (this.jointValue.every((value, index) => values[index] === value || values[index] === null)) return didUpdate;
this.jointValue[0] = values[0] !== null ? values[0] : this.jointValue[0]; this.jointValue[0] = values[0] !== null ? values[0] : this.jointValue[0];
this.jointValue[1] = values[1] !== null ? values[1] : this.jointValue[1]; this.jointValue[1] = values[1] !== null ? values[1] : this.jointValue[1];
this.jointValue[2] = values[2] !== null ? values[2] : this.jointValue[2]; this.jointValue[2] = values[2] !== null ? values[2] : this.jointValue[2];
// Compose transform of joint origin and transform due to joint values // Compose transform of joint origin and transform due to joint values
_tempOrigTransform.compose(this.origPosition, this.origQuaternion, _tempScale); _tempOrigTransform.compose(this.origPosition, this.origQuaternion, _tempScale);
_tempQuat.setFromAxisAngle(this.axis, this.jointValue[2]); _tempQuat.setFromAxisAngle(this.axis, this.jointValue[2]);
_tempPosition.set(this.jointValue[0], this.jointValue[1], 0.0); _tempPosition.set(this.jointValue[0], this.jointValue[1], 0.0);
_tempTransform.compose(_tempPosition, _tempQuat, _tempScale); _tempTransform.compose(_tempPosition, _tempQuat, _tempScale);
// Calculate new transform // Calculate new transform
_tempOrigTransform.premultiply(_tempTransform); _tempOrigTransform.premultiply(_tempTransform);
this.position.setFromMatrixPosition(_tempOrigTransform); this.position.setFromMatrixPosition(_tempOrigTransform);
this.rotation.setFromRotationMatrix(_tempOrigTransform); this.rotation.setFromRotationMatrix(_tempOrigTransform);
this.matrixWorldNeedsUpdate = true; this.matrixWorldNeedsUpdate = true;
return true; return true;
} }
} }
return didUpdate; return didUpdate;
} }
} }
class URDFMimicJoint extends URDFJoint { class URDFMimicJoint extends URDFJoint {
constructor(...args) { constructor(...args) {
super(...args); super(...args);
this.type = 'URDFMimicJoint'; this.type = 'URDFMimicJoint';
this.mimicJoint = null; this.mimicJoint = null;
this.offset = 0; this.offset = 0;
this.multiplier = 1; this.multiplier = 1;
} }
updateFromMimickedJoint(...values) { updateFromMimickedJoint(...values) {
const modifiedValues = values.map(x => x * this.multiplier + this.offset); const modifiedValues = values.map(x => x * this.multiplier + this.offset);
return super.setJointValue(...modifiedValues); return super.setJointValue(...modifiedValues);
} }
/* Overrides */ /* Overrides */
copy(source, recursive) { copy(source, recursive) {
super.copy(source, recursive); super.copy(source, recursive);
this.mimicJoint = source.mimicJoint; this.mimicJoint = source.mimicJoint;
this.offset = source.offset; this.offset = source.offset;
this.multiplier = source.multiplier; this.multiplier = source.multiplier;
return this; return this;
} }
} }
class URDFRobot extends URDFLink { class URDFRobot extends URDFLink {
constructor(...args) { constructor(...args) {
super(...args); super(...args);
this.isURDFRobot = true; this.isURDFRobot = true;
this.urdfNode = null; this.urdfNode = null;
this.urdfRobotNode = null; this.urdfRobotNode = null;
this.robotName = null; this.robotName = null;
this.links = null; this.links = null;
this.joints = null; this.joints = null;
this.colliders = null; this.colliders = null;
this.visual = null; this.visual = null;
this.frames = null; this.frames = null;
} }
copy(source, recursive) { copy(source, recursive) {
super.copy(source, recursive); super.copy(source, recursive);
this.urdfRobotNode = source.urdfRobotNode; this.urdfRobotNode = source.urdfRobotNode;
this.robotName = source.robotName; this.robotName = source.robotName;
this.links = {}; this.links = {};
this.joints = {}; this.joints = {};
this.colliders = {}; this.colliders = {};
this.visual = {}; this.visual = {};
this.traverse(c => { this.traverse(c => {
if (c.isURDFJoint && c.urdfName in source.joints) { if (c.isURDFJoint && c.urdfName in source.joints) {
this.joints[c.urdfName] = c; this.joints[c.urdfName] = c;
} }
if (c.isURDFLink && c.urdfName in source.links) { if (c.isURDFLink && c.urdfName in source.links) {
this.links[c.urdfName] = c; this.links[c.urdfName] = c;
} }
if (c.isURDFCollider && c.urdfName in source.colliders) { if (c.isURDFCollider && c.urdfName in source.colliders) {
this.colliders[c.urdfName] = c; this.colliders[c.urdfName] = c;
} }
if (c.isURDFVisual && c.urdfName in source.visual) { if (c.isURDFVisual && c.urdfName in source.visual) {
this.visual[c.urdfName] = c; this.visual[c.urdfName] = c;
} }
}); });
// Repair mimic joint references once we've re-accumulated all our joint data // Repair mimic joint references once we've re-accumulated all our joint data
for (const joint in this.joints) { for (const joint in this.joints) {
this.joints[joint].mimicJoints = this.joints[joint].mimicJoints.map((mimicJoint) => this.joints[mimicJoint.name]); this.joints[joint].mimicJoints = this.joints[joint].mimicJoints.map((mimicJoint) => this.joints[mimicJoint.name]);
} }
this.frames = { this.frames = {
...this.colliders, ...this.colliders,
...this.visual, ...this.visual,
...this.links, ...this.links,
...this.joints, ...this.joints,
}; };
return this; return this;
} }
getFrame(name) { getFrame(name) {
return this.frames[name]; return this.frames[name];
} }
setJointValue(jointName, ...angle) { setJointValue(jointName, ...angle) {
const joint = this.joints[jointName]; const joint = this.joints[jointName];
if (joint) { if (joint) {
return joint.setJointValue(...angle); return joint.setJointValue(...angle);
} }
return false; return false;
} }
setJointValues(values) { setJointValues(values) {
let didChange = false; let didChange = false;
for (const name in values) { for (const name in values) {
const value = values[name]; const value = values[name];
if (Array.isArray(value)) { if (Array.isArray(value)) {
didChange = this.setJointValue(name, ...value) || didChange; didChange = this.setJointValue(name, ...value) || didChange;
} else { } else {
didChange = this.setJointValue(name, value) || didChange; didChange = this.setJointValue(name, value) || didChange;
} }
} }
return didChange; return didChange;
} }
} }
export { URDFRobot, URDFLink, URDFJoint, URDFMimicJoint, URDFVisual, URDFCollider }; export { URDFRobot, URDFLink, URDFJoint, URDFMimicJoint, URDFVisual, URDFCollider };

View File

@ -1,330 +1,330 @@
import { Raycaster, Vector3, Plane, Vector2 } from 'three'; import { Raycaster, Vector3, Plane, Vector2 } from 'three';
// Find the nearest parent that is a joint // Find the nearest parent that is a joint
function isJoint(j) { function isJoint(j) {
return j.isURDFJoint && j.jointType !== 'fixed'; return j.isURDFJoint && j.jointType !== 'fixed';
}; };
function findNearestJoint(child) { function findNearestJoint(child) {
let curr = child; let curr = child;
while (curr) { while (curr) {
if (isJoint(curr)) { if (isJoint(curr)) {
return curr; return curr;
} }
curr = curr.parent; curr = curr.parent;
} }
return curr; return curr;
}; };
const prevHitPoint = new Vector3(); const prevHitPoint = new Vector3();
const newHitPoint = new Vector3(); const newHitPoint = new Vector3();
const pivotPoint = new Vector3(); const pivotPoint = new Vector3();
const tempVector = new Vector3(); const tempVector = new Vector3();
const tempVector2 = new Vector3(); const tempVector2 = new Vector3();
const projectedStartPoint = new Vector3(); const projectedStartPoint = new Vector3();
const projectedEndPoint = new Vector3(); const projectedEndPoint = new Vector3();
const plane = new Plane(); const plane = new Plane();
export class URDFDragControls { export class URDFDragControls {
constructor(scene) { constructor(scene) {
this.enabled = true; this.enabled = true;
this.scene = scene; this.scene = scene;
this.raycaster = new Raycaster(); this.raycaster = new Raycaster();
this.initialGrabPoint = new Vector3(); this.initialGrabPoint = new Vector3();
this.hitDistance = -1; this.hitDistance = -1;
this.hovered = null; this.hovered = null;
this.manipulating = null; this.manipulating = null;
} }
update() { update() {
const { const {
raycaster, raycaster,
hovered, hovered,
manipulating, manipulating,
scene, scene,
} = this; } = this;
if (manipulating) { if (manipulating) {
return; return;
} }
let hoveredJoint = null; let hoveredJoint = null;
const intersections = raycaster.intersectObject(scene, true); const intersections = raycaster.intersectObject(scene, true);
if (intersections.length !== 0) { if (intersections.length !== 0) {
const hit = intersections[0]; const hit = intersections[0];
this.hitDistance = hit.distance; this.hitDistance = hit.distance;
hoveredJoint = findNearestJoint(hit.object); hoveredJoint = findNearestJoint(hit.object);
this.initialGrabPoint.copy(hit.point); this.initialGrabPoint.copy(hit.point);
} }
if (hoveredJoint !== hovered) { if (hoveredJoint !== hovered) {
if (hovered) { if (hovered) {
this.onUnhover(hovered); this.onUnhover(hovered);
} }
this.hovered = hoveredJoint; this.hovered = hoveredJoint;
if (hoveredJoint) { if (hoveredJoint) {
this.onHover(hoveredJoint); this.onHover(hoveredJoint);
} }
} }
} }
updateJoint(joint, angle) { updateJoint(joint, angle) {
joint.setJointValue(angle); joint.setJointValue(angle);
} }
onDragStart(joint) { onDragStart(joint) {
} }
onDragEnd(joint) { onDragEnd(joint) {
} }
onHover(joint) { onHover(joint) {
} }
onUnhover(joint) { onUnhover(joint) {
} }
getRevoluteDelta(joint, startPoint, endPoint) { getRevoluteDelta(joint, startPoint, endPoint) {
// set up the plane // set up the plane
tempVector tempVector
.copy(joint.axis) .copy(joint.axis)
.transformDirection(joint.matrixWorld) .transformDirection(joint.matrixWorld)
.normalize(); .normalize();
pivotPoint pivotPoint
.set(0, 0, 0) .set(0, 0, 0)
.applyMatrix4(joint.matrixWorld); .applyMatrix4(joint.matrixWorld);
plane plane
.setFromNormalAndCoplanarPoint(tempVector, pivotPoint); .setFromNormalAndCoplanarPoint(tempVector, pivotPoint);
// project the drag points onto the plane // project the drag points onto the plane
plane.projectPoint(startPoint, projectedStartPoint); plane.projectPoint(startPoint, projectedStartPoint);
plane.projectPoint(endPoint, projectedEndPoint); plane.projectPoint(endPoint, projectedEndPoint);
// get the directions relative to the pivot // get the directions relative to the pivot
projectedStartPoint.sub(pivotPoint); projectedStartPoint.sub(pivotPoint);
projectedEndPoint.sub(pivotPoint); projectedEndPoint.sub(pivotPoint);
tempVector.crossVectors(projectedStartPoint, projectedEndPoint); tempVector.crossVectors(projectedStartPoint, projectedEndPoint);
const direction = Math.sign(tempVector.dot(plane.normal)); const direction = Math.sign(tempVector.dot(plane.normal));
return direction * projectedEndPoint.angleTo(projectedStartPoint); return direction * projectedEndPoint.angleTo(projectedStartPoint);
} }
getPrismaticDelta(joint, startPoint, endPoint) { getPrismaticDelta(joint, startPoint, endPoint) {
tempVector.subVectors(endPoint, startPoint); tempVector.subVectors(endPoint, startPoint);
plane plane
.normal .normal
.copy(joint.axis) .copy(joint.axis)
.transformDirection(joint.parent.matrixWorld) .transformDirection(joint.parent.matrixWorld)
.normalize(); .normalize();
return tempVector.dot(plane.normal); return tempVector.dot(plane.normal);
} }
moveRay(toRay) { moveRay(toRay) {
const { raycaster, hitDistance, manipulating } = this; const { raycaster, hitDistance, manipulating } = this;
const { ray } = raycaster; const { ray } = raycaster;
if (manipulating) { if (manipulating) {
ray.at(hitDistance, prevHitPoint); ray.at(hitDistance, prevHitPoint);
toRay.at(hitDistance, newHitPoint); toRay.at(hitDistance, newHitPoint);
let delta = 0; let delta = 0;
if (manipulating.jointType === 'revolute' || manipulating.jointType === 'continuous') { if (manipulating.jointType === 'revolute' || manipulating.jointType === 'continuous') {
delta = this.getRevoluteDelta(manipulating, prevHitPoint, newHitPoint); delta = this.getRevoluteDelta(manipulating, prevHitPoint, newHitPoint);
} else if (manipulating.jointType === 'prismatic') { } else if (manipulating.jointType === 'prismatic') {
delta = this.getPrismaticDelta(manipulating, prevHitPoint, newHitPoint); delta = this.getPrismaticDelta(manipulating, prevHitPoint, newHitPoint);
} }
if (delta) { if (delta) {
this.updateJoint(manipulating, manipulating.angle + delta); this.updateJoint(manipulating, manipulating.angle + delta);
} }
} }
this.raycaster.ray.copy(toRay); this.raycaster.ray.copy(toRay);
this.update(); this.update();
} }
setGrabbed(grabbed) { setGrabbed(grabbed) {
const { hovered, manipulating } = this; const { hovered, manipulating } = this;
if (grabbed) { if (grabbed) {
if (manipulating !== null || hovered === null) { if (manipulating !== null || hovered === null) {
return; return;
} }
this.manipulating = hovered; this.manipulating = hovered;
this.onDragStart(hovered); this.onDragStart(hovered);
} else { } else {
if (this.manipulating === null) { if (this.manipulating === null) {
return; return;
} }
this.onDragEnd(this.manipulating); this.onDragEnd(this.manipulating);
this.manipulating = null; this.manipulating = null;
this.update(); this.update();
} }
} }
} }
export class PointerURDFDragControls extends URDFDragControls { export class PointerURDFDragControls extends URDFDragControls {
constructor(scene, camera, domElement) { constructor(scene, camera, domElement) {
super(scene); super(scene);
this.camera = camera; this.camera = camera;
this.domElement = domElement; this.domElement = domElement;
const raycaster = new Raycaster(); const raycaster = new Raycaster();
const mouse = new Vector2(); const mouse = new Vector2();
function updateMouse(e) { function updateMouse(e) {
const rect = domElement.getBoundingClientRect(); const rect = domElement.getBoundingClientRect();
mouse.x = ((e.clientX - rect.left) / rect.width) * 2 - 1; mouse.x = ((e.clientX - rect.left) / rect.width) * 2 - 1;
mouse.y = -((e.clientY - rect.top) / rect.height) * 2 + 1; mouse.y = -((e.clientY - rect.top) / rect.height) * 2 + 1;
} }
this._mouseDown = e => { this._mouseDown = e => {
updateMouse(e); updateMouse(e);
raycaster.setFromCamera(mouse, this.camera); raycaster.setFromCamera(mouse, this.camera);
this.moveRay(raycaster.ray); this.moveRay(raycaster.ray);
this.setGrabbed(true); this.setGrabbed(true);
}; };
this._mouseMove = e => { this._mouseMove = e => {
updateMouse(e); updateMouse(e);
raycaster.setFromCamera(mouse, this.camera); raycaster.setFromCamera(mouse, this.camera);
this.moveRay(raycaster.ray); this.moveRay(raycaster.ray);
}; };
this._mouseUp = e => { this._mouseUp = e => {
updateMouse(e); updateMouse(e);
raycaster.setFromCamera(mouse, this.camera); raycaster.setFromCamera(mouse, this.camera);
this.moveRay(raycaster.ray); this.moveRay(raycaster.ray);
this.setGrabbed(false); this.setGrabbed(false);
}; };
domElement.addEventListener('mousedown', this._mouseDown); domElement.addEventListener('mousedown', this._mouseDown);
domElement.addEventListener('mousemove', this._mouseMove); domElement.addEventListener('mousemove', this._mouseMove);
domElement.addEventListener('mouseup', this._mouseUp); domElement.addEventListener('mouseup', this._mouseUp);
} }
getRevoluteDelta(joint, startPoint, endPoint) { getRevoluteDelta(joint, startPoint, endPoint) {
const { camera, initialGrabPoint } = this; const { camera, initialGrabPoint } = this;
// set up the plane // set up the plane
tempVector tempVector
.copy(joint.axis) .copy(joint.axis)
.transformDirection(joint.matrixWorld) .transformDirection(joint.matrixWorld)
.normalize(); .normalize();
pivotPoint pivotPoint
.set(0, 0, 0) .set(0, 0, 0)
.applyMatrix4(joint.matrixWorld); .applyMatrix4(joint.matrixWorld);
plane plane
.setFromNormalAndCoplanarPoint(tempVector, pivotPoint); .setFromNormalAndCoplanarPoint(tempVector, pivotPoint);
tempVector tempVector
.copy(camera.position) .copy(camera.position)
.sub(initialGrabPoint) .sub(initialGrabPoint)
.normalize(); .normalize();
// if looking into the plane of rotation // if looking into the plane of rotation
if (Math.abs(tempVector.dot(plane.normal)) > 0.3) { if (Math.abs(tempVector.dot(plane.normal)) > 0.3) {
return super.getRevoluteDelta(joint, startPoint, endPoint); return super.getRevoluteDelta(joint, startPoint, endPoint);
} else { } else {
// get the up direction // get the up direction
tempVector.set(0, 1, 0).transformDirection(camera.matrixWorld); tempVector.set(0, 1, 0).transformDirection(camera.matrixWorld);
// get points projected onto the plane of rotation // get points projected onto the plane of rotation
plane.projectPoint(startPoint, projectedStartPoint); plane.projectPoint(startPoint, projectedStartPoint);
plane.projectPoint(endPoint, projectedEndPoint); plane.projectPoint(endPoint, projectedEndPoint);
tempVector.set(0, 0, -1).transformDirection(camera.matrixWorld); tempVector.set(0, 0, -1).transformDirection(camera.matrixWorld);
tempVector.cross(plane.normal); tempVector.cross(plane.normal);
tempVector2.subVectors(endPoint, startPoint); tempVector2.subVectors(endPoint, startPoint);
return tempVector.dot(tempVector2); return tempVector.dot(tempVector2);
} }
} }
dispose() { dispose() {
const { domElement } = this; const { domElement } = this;
domElement.removeEventListener('mousedown', this._mouseDown); domElement.removeEventListener('mousedown', this._mouseDown);
domElement.removeEventListener('mousemove', this._mouseMove); domElement.removeEventListener('mousemove', this._mouseMove);
domElement.removeEventListener('mouseup', this._mouseUp); domElement.removeEventListener('mouseup', this._mouseUp);
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,446 +1,446 @@
<robot name="robot"> <robot name="robot">
<link name="base_footprint" /> <link name="base_footprint" />
<joint name="base_joint" type="fixed"> <joint name="base_joint" type="fixed">
<parent link="base_footprint" /> <parent link="base_footprint" />
<child link="base_link" /> <child link="base_link" />
<origin xyz="0 0 0" rpy="0 0 0" /> <origin xyz="0 0 0" rpy="0 0 0" />
</joint> </joint>
<link name="base_link"> <link name="base_link">
<visual> <visual>
<origin xyz="0 0 0" rpy="0 0 0" /> <origin xyz="0 0 0" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.1 0.05 0.05" /> <box size="0.1 0.05 0.05" />
</geometry> </geometry>
<material name="base_link-material"> <material name="base_link-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0" rpy="0 0 0" /> <origin xyz="0 0 0" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.1 0.05 0.05" /> <box size="0.1 0.05 0.05" />
</geometry> </geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0" rpy="0 0 0" /> <origin xyz="0 0 0" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_spine_1" type="revolute"> <joint name="base_link_to_spine_1" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="spine_1" /> <child link="spine_1" />
<origin xyz="0 0 0.033737961440044734" rpy="0 0 0" /> <origin xyz="0 0 0.033737961440044734" rpy="0 0 0" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint>
<link name="spine_1"> <link name="spine_1">
<visual> <visual>
<origin xyz="0 0 0.05" rpy="0 0 0" /> <origin xyz="0 0 0.05" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.1 0.05 0.1" /> <box size="0.1 0.05 0.1" />
</geometry> </geometry>
<material name="spine_1-material"> <material name="spine_1-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0.05" rpy="0 0 0" /> <origin xyz="0 0 0.05" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.1 0.05 0.1" /> <box size="0.1 0.05 0.1" />
</geometry> </geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0.05" rpy="0 0 0" /> <origin xyz="0 0 0.05" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_upper_arm_right" type="revolute"> <joint name="base_link_to_upper_arm_right" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="upper_arm_right" /> <child link="upper_arm_right" />
<origin xyz="0.062354968072652533 0 0.13096467297466818" rpy="-3.141592653589793 -0.6586873842445309 -1.548624773543236e-16" /> <origin xyz="0.062354968072652533 0 0.13096467297466818" rpy="-3.141592653589793 -0.6586873842445309 -1.548624773543236e-16" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint>
<link name="upper_arm_right"> <link name="upper_arm_right">
<visual> <visual>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.03 0.03 0.06" /> <box size="0.03 0.03 0.06" />
</geometry> </geometry>
<material name="upper_arm_right-material"> <material name="upper_arm_right-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.03 0.03 0.06" /> <box size="0.03 0.03 0.06" />
</geometry> </geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_lower_arm_right" type="revolute"> <joint name="base_link_to_lower_arm_right" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="lower_arm_right" /> <child link="lower_arm_right" />
<origin xyz="0.10009022777221713 0 0.08243944985877427" rpy="-3.141592653589793 -0.6586873842445309 -2.496506045944997e-16" /> <origin xyz="0.10009022777221713 0 0.08243944985877427" rpy="-3.141592653589793 -0.6586873842445309 -2.496506045944997e-16" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint>
<link name="lower_arm_right"> <link name="lower_arm_right">
<visual> <visual>
<origin xyz="0 0 0.025" rpy="0 0 0" /> <origin xyz="0 0 0.025" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.03 0.03 0.05" /> <box size="0.03 0.03 0.05" />
</geometry> </geometry>
<material name="lower_arm_right-material"> <material name="lower_arm_right-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0.025" rpy="0 0 0" /> <origin xyz="0 0 0.025" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.03 0.03 0.05" /> <box size="0.03 0.03 0.05" />
</geometry> </geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0.025" rpy="0 0 0" /> <origin xyz="0 0 0.025" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_hand_right" type="revolute"> <joint name="base_link_to_hand_right" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="hand_right" /> <child link="hand_right" />
<origin xyz="0.13276109632093022 0 0.03940068352661779" rpy="-3.141592653589793 -0.6586873842445309 -2.496506045944997e-16" /> <origin xyz="0.13276109632093022 0 0.03940068352661779" rpy="-3.141592653589793 -0.6586873842445309 -2.496506045944997e-16" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint>
<link name="hand_right"> <link name="hand_right">
<visual> <visual>
<origin xyz="0 0 0.015" rpy="0 0 0" /> <origin xyz="0 0 0.015" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.03 0.03 0.03" /> <box size="0.03 0.03 0.03" />
</geometry> </geometry>
<material name="hand_right-material"> <material name="hand_right-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0.015" rpy="0 0 0" /> <origin xyz="0 0 0.015" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.03 0.03 0.03" /> <box size="0.03 0.03 0.03" />
</geometry> </geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0.015" rpy="0 0 0" /> <origin xyz="0 0 0.015" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_upper_arm_left" type="revolute"> <joint name="base_link_to_upper_arm_left" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="upper_arm_left" /> <child link="upper_arm_left" />
<origin xyz="-0.062354968072652533 0 0.13096467297466818" rpy="-3.141592653589793 0.6586873842445309 -1.548624773543236e-16" /> <origin xyz="-0.062354968072652533 0 0.13096467297466818" rpy="-3.141592653589793 0.6586873842445309 -1.548624773543236e-16" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" />
</joint> </joint>
<link name="upper_arm_left"> <link name="upper_arm_left">
<visual> <visual>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<geometry><box size="0.03 0.03 0.06" /></geometry> <geometry><box size="0.03 0.03 0.06" /></geometry>
<material name="upper_arm_left-material"> <material name="upper_arm_left-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<geometry><box size="0.03 0.03 0.06" /></geometry> <geometry><box size="0.03 0.03 0.06" /></geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_lower_arm_left" type="revolute"> <joint name="base_link_to_lower_arm_left" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="lower_arm_left" /> <child link="lower_arm_left" />
<origin xyz="-0.10009022777221713 0 0.08243944985877427" rpy="-3.141592653589793 0.6586873842445309 -2.496506045944997e-16" /> <origin xyz="-0.10009022777221713 0 0.08243944985877427" rpy="-3.141592653589793 0.6586873842445309 -2.496506045944997e-16" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" />
</joint> </joint>
<link name="lower_arm_left"> <link name="lower_arm_left">
<visual> <visual>
<origin xyz="0 0 0.025" rpy="0 0 0" /> <origin xyz="0 0 0.025" rpy="0 0 0" />
<geometry><box size="0.03 0.03 0.05" /></geometry> <geometry><box size="0.03 0.03 0.05" /></geometry>
<material name="lower_arm_left-material"> <material name="lower_arm_left-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0.025" rpy="0 0 0" /> <origin xyz="0 0 0.025" rpy="0 0 0" />
<geometry><box size="0.03 0.03 0.05" /></geometry> <geometry><box size="0.03 0.03 0.05" /></geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0.025" rpy="0 0 0" /> <origin xyz="0 0 0.025" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_hand_left" type="revolute"> <joint name="base_link_to_hand_left" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="hand_left" /> <child link="hand_left" />
<origin xyz="-0.13276109632093022 0 0.03940068352661779" rpy="-3.141592653589793 0.6586873842445309 -2.496506045944997e-16" /> <origin xyz="-0.13276109632093022 0 0.03940068352661779" rpy="-3.141592653589793 0.6586873842445309 -2.496506045944997e-16" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" />
</joint> </joint>
<link name="hand_left"> <link name="hand_left">
<visual> <visual>
<origin xyz="0 0 0.015" rpy="0 0 0" /> <origin xyz="0 0 0.015" rpy="0 0 0" />
<geometry><box size="0.03 0.03 0.03" /></geometry> <geometry><box size="0.03 0.03 0.03" /></geometry>
<material name="hand_left-material"> <material name="hand_left-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0.015" rpy="0 0 0" /> <origin xyz="0 0 0.015" rpy="0 0 0" />
<geometry><box size="0.03 0.03 0.03" /></geometry> <geometry><box size="0.03 0.03 0.03" /></geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0.015" rpy="0 0 0" /> <origin xyz="0 0 0.015" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.0" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.0" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_upper_leg_right" type="revolute"> <joint name="base_link_to_upper_leg_right" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="upper_leg_right" /> <child link="upper_leg_right" />
<origin xyz="0.027260906368426083 0 -0.0372788919866843" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" /> <origin xyz="0.027260906368426083 0 -0.0372788919866843" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint>
<link name="upper_leg_right"> <link name="upper_leg_right">
<visual> <visual>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.04 0.04 0.07" /> <box size="0.04 0.04 0.07" />
</geometry> </geometry>
<material name="upper_leg_right-material"> <material name="upper_leg_right-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.04 0.04 0.07" /> <box size="0.04 0.04 0.07" />
</geometry> </geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_lower_leg_right" type="revolute"> <joint name="base_link_to_lower_leg_right" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="lower_leg_right" /> <child link="lower_leg_right" />
<origin xyz="0.027260906368426083 0 -0.11088915657500885" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" /> <origin xyz="0.027260906368426083 0 -0.11088915657500885" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint>
<link name="lower_leg_right"> <link name="lower_leg_right">
<visual> <visual>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.04 0.04 0.07" /> <box size="0.04 0.04 0.07" />
</geometry> </geometry>
<material name="lower_leg_right-material"> <material name="lower_leg_right-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.04 0.04 0.07" /> <box size="0.04 0.04 0.07" />
</geometry> </geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_lower_leg_right1" type="revolute"> <joint name="base_link_to_lower_leg_right1" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="lower_leg_right1" /> <child link="lower_leg_right1" />
<origin xyz="0.027260906368426083 -0.004866298635659946 -0.17845456205258786" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" /> <origin xyz="0.027260906368426083 -0.004866298635659946 -0.17845456205258786" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint>
<link name="lower_leg_right1"> <link name="lower_leg_right1">
<visual> <visual>
<origin xyz="0 0.025 0.01" rpy="0 0 0" /> <origin xyz="0 0.025 0.01" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.04 0.08 0.02" /> <box size="0.04 0.08 0.02" />
</geometry> </geometry>
<material name="lower_leg_right1-material"> <material name="lower_leg_right1-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0.025 0.01" rpy="0 0 0" /> <origin xyz="0 0.025 0.01" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.04 0.08 0.02" /> <box size="0.04 0.08 0.02" />
</geometry> </geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0.025 0.01" rpy="0 0 0" /> <origin xyz="0 0.025 0.01" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_upper_leg_left" type="revolute"> <joint name="base_link_to_upper_leg_left" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="upper_leg_left" /> <child link="upper_leg_left" />
<origin xyz="-0.027260906368426083 0 -0.0372788919866843" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" /> <origin xyz="-0.027260906368426083 0 -0.0372788919866843" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" />
</joint> </joint>
<link name="upper_leg_left"> <link name="upper_leg_left">
<visual> <visual>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<geometry><box size="0.04 0.04 0.07" /></geometry> <geometry><box size="0.04 0.04 0.07" /></geometry>
<material name="upper_leg_left-material"> <material name="upper_leg_left-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<geometry><box size="0.04 0.04 0.07" /></geometry> <geometry><box size="0.04 0.04 0.07" /></geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_lower_leg_left" type="revolute"> <joint name="base_link_to_lower_leg_left" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="lower_leg_left" /> <child link="lower_leg_left" />
<origin xyz="-0.027260906368426083 0 -0.11088915657500885" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" /> <origin xyz="-0.027260906368426083 0 -0.11088915657500885" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" />
</joint> </joint>
<link name="lower_leg_left"> <link name="lower_leg_left">
<visual> <visual>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<geometry><box size="0.04 0.04 0.07" /></geometry> <geometry><box size="0.04 0.04 0.07" /></geometry>
<material name="lower_leg_left-material"> <material name="lower_leg_left-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<geometry><box size="0.04 0.04 0.07" /></geometry> <geometry><box size="0.04 0.04 0.07" /></geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_lower_leg_left1" type="revolute"> <joint name="base_link_to_lower_leg_left1" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="lower_leg_left1" /> <child link="lower_leg_left1" />
<origin xyz="-0.027260906368426083 -0.004866298635659946 -0.17845456205258786" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" /> <origin xyz="-0.027260906368426083 -0.004866298635659946 -0.17845456205258786" rpy="3.141592653589793 2.220446049250313e-16 3.141592653589793" />
<axis xyz="-1 0 0" /> <axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" />
</joint> </joint>
<link name="lower_leg_left1"> <link name="lower_leg_left1">
<visual> <visual>
<origin xyz="0 0.025 0.01" rpy="0 0 0" /> <origin xyz="0 0.025 0.01" rpy="0 0 0" />
<geometry><box size="0.04 0.08 0.02" /></geometry> <geometry><box size="0.04 0.08 0.02" /></geometry>
<material name="lower_leg_left1-material"> <material name="lower_leg_left1-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0.025 0.01" rpy="0 0 0" /> <origin xyz="0 0.025 0.01" rpy="0 0 0" />
<geometry><box size="0.04 0.08 0.02" /></geometry> <geometry><box size="0.04 0.08 0.02" /></geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0.025 0.01" rpy="0 0 0" /> <origin xyz="0 0.025 0.01" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_neck" type="revolute"> <joint name="base_link_to_neck" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="neck" /> <child link="neck" />
<origin xyz="0 0 0.13701911638953843" rpy="0 0 0" /> <origin xyz="0 0 0.13701911638953843" rpy="0 0 0" />
<axis xyz="0 0 1" /> <axis xyz="0 0 1" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint>
<link name="neck"> <link name="neck">
<visual> <visual>
<origin xyz="0 0 0" rpy="0 0 0" /> <origin xyz="0 0 0" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.03 0.03 0.03" /> <box size="0.03 0.03 0.03" />
</geometry> </geometry>
<material name="neck-material"> <material name="neck-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0" rpy="0 0 0" /> <origin xyz="0 0 0" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.03 0.03 0.03" /> <box size="0.03 0.03 0.03" />
</geometry> </geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0" rpy="0 0 0" /> <origin xyz="0 0 0" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_head" type="revolute"> <joint name="base_link_to_head" type="revolute">
<parent link="base_link" /> <parent link="base_link" />
<child link="head" /> <child link="head" />
<origin xyz="0 0 0.1835254369219812" rpy="0 0 0" /> <origin xyz="0 0 0.1835254369219812" rpy="0 0 0" />
<axis xyz="1 0 0" /> <axis xyz="1 0 0" />
<limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint> <limit effort="1000.0" lower="-1" upper="1" velocity="0.5" /> </joint>
<link name="head"> <link name="head">
<visual> <visual>
<origin xyz="0 0 0" rpy="0 0 0" /> <origin xyz="0 0 0" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.06 0.06 0.06" /> <box size="0.06 0.06 0.06" />
</geometry> </geometry>
<material name="head-material"> <material name="head-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
</material> </material>
</visual> </visual>
<collision> <collision>
<origin xyz="0 0 0" rpy="0 0 0" /> <origin xyz="0 0 0" rpy="0 0 0" />
<geometry> <geometry>
<box size="0.06 0.06 0.06" /> <box size="0.06 0.06 0.06" />
</geometry> </geometry>
</collision> </collision>
<inertial> <inertial>
<origin xyz="0 0 0" rpy="0 0 0" /> <origin xyz="0 0 0" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" /> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
</robot> </robot>

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
// vite.config.js // vite.config.js
export default { export default {
root: '.', root: '.',
server: { server: {
open: true open: true
} }
} }