diff --git a/index.html b/index.html index 3949044..c154517 100644 --- a/index.html +++ b/index.html @@ -1,38 +1,38 @@ - - - - - - URDF Robot Viewer - - - - -
Loading URDF...
- - - - - - - - + + + + + + URDF Robot Viewer + + + + +
Loading URDF...
+ + + + + + + + \ No newline at end of file diff --git a/node_modules/.bin/esbuild.cmd b/node_modules/.bin/esbuild.cmd index cc920c5..d368539 100644 --- a/node_modules/.bin/esbuild.cmd +++ b/node_modules/.bin/esbuild.cmd @@ -1,17 +1,17 @@ -@ECHO off -GOTO start -:find_dp0 -SET dp0=%~dp0 -EXIT /b -:start -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esbuild\bin\esbuild" %* +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esbuild\bin\esbuild" %* diff --git a/node_modules/.bin/nanoid.cmd b/node_modules/.bin/nanoid.cmd index 9c40107..601a2c8 100644 --- a/node_modules/.bin/nanoid.cmd +++ b/node_modules/.bin/nanoid.cmd @@ -1,17 +1,17 @@ -@ECHO off -GOTO start -:find_dp0 -SET dp0=%~dp0 -EXIT /b -:start -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %* +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %* diff --git a/node_modules/.bin/rollup.cmd b/node_modules/.bin/rollup.cmd index b3f110b..d9a0a35 100644 --- a/node_modules/.bin/rollup.cmd +++ b/node_modules/.bin/rollup.cmd @@ -1,17 +1,17 @@ -@ECHO off -GOTO start -:find_dp0 -SET dp0=%~dp0 -EXIT /b -:start -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rollup\dist\bin\rollup" %* +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rollup\dist\bin\rollup" %* diff --git a/node_modules/.bin/vite b/node_modules/.bin/vite deleted file mode 100644 index 014463f..0000000 --- a/node_modules/.bin/vite +++ /dev/null @@ -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 diff --git a/node_modules/.bin/vite b/node_modules/.bin/vite new file mode 120000 index 0000000..6d1e3be --- /dev/null +++ b/node_modules/.bin/vite @@ -0,0 +1 @@ +../vite/bin/vite.js \ No newline at end of file diff --git a/node_modules/.bin/vite.cmd b/node_modules/.bin/vite.cmd index f62e966..e824f3a 100644 --- a/node_modules/.bin/vite.cmd +++ b/node_modules/.bin/vite.cmd @@ -1,17 +1,17 @@ -@ECHO off -GOTO start -:find_dp0 -SET dp0=%~dp0 -EXIT /b -:start -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite\bin\vite.js" %* +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite\bin\vite.js" %* diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index 940a330..105c4ba 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -4,6 +4,23 @@ "lockfileVersion": 3, "requires": true, "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": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", @@ -21,6 +38,34 @@ "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": { "version": "4.52.5", "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": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", - "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", + "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", "dev": true, - "license": "MIT", "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", diff --git a/node_modules/.vite/deps/_metadata.json b/node_modules/.vite/deps/_metadata.json index 81c4020..9f5495e 100644 --- a/node_modules/.vite/deps/_metadata.json +++ b/node_modules/.vite/deps/_metadata.json @@ -1,52 +1,37 @@ { - "hash": "d903b885", - "configHash": "3e836f7b", - "lockfileHash": "e28807c3", - "browserHash": "9a7a5c1b", + "hash": "9696e02b", + "configHash": "e103e9de", + "lockfileHash": "8d45ad8a", + "browserHash": "8e3e062d", "optimized": { "three": { "src": "../../three/build/three.module.js", "file": "three.js", - "fileHash": "357a2d6a", + "fileHash": "acdec5e5", "needsInterop": false }, "three/examples/jsm/controls/OrbitControls.js": { "src": "../../three/examples/jsm/controls/OrbitControls.js", "file": "three_examples_jsm_controls_OrbitControls__js.js", - "fileHash": "06df99c3", - "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", + "fileHash": "c1a4f949", "needsInterop": false }, "three/examples/jsm/loaders/ColladaLoader.js": { "src": "../../three/examples/jsm/loaders/ColladaLoader.js", "file": "three_examples_jsm_loaders_ColladaLoader__js.js", - "fileHash": "9054d4c1", + "fileHash": "dcb1087e", "needsInterop": false }, "three/examples/jsm/loaders/STLLoader.js": { "src": "../../three/examples/jsm/loaders/STLLoader.js", "file": "three_examples_jsm_loaders_STLLoader__js.js", - "fileHash": "3632de55", + "fileHash": "618ff280", "needsInterop": false - }, - "esbuild": { - "src": "../../esbuild/lib/main.js", - "file": "esbuild.js", - "fileHash": "0a908aaf", - "needsInterop": true } }, "chunks": { - "chunk-22FAE54D": { - "file": "chunk-22FAE54D.js" - }, - "chunk-VUNV25KB": { - "file": "chunk-VUNV25KB.js" + "chunk-5P7KF7VS": { + "file": "chunk-5P7KF7VS.js" } } } \ No newline at end of file diff --git a/node_modules/.vite/deps/chunk-22FAE54D.js b/node_modules/.vite/deps/chunk-5P7KF7VS.js similarity index 99% rename from node_modules/.vite/deps/chunk-22FAE54D.js rename to node_modules/.vite/deps/chunk-5P7KF7VS.js index a686725..7e4f603 100644 --- a/node_modules/.vite/deps/chunk-22FAE54D.js +++ b/node_modules/.vite/deps/chunk-5P7KF7VS.js @@ -44170,14 +44170,4 @@ export { WebGLUtils, WebGLRenderer }; -/*! Bundled license information: - -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 +//# sourceMappingURL=chunk-5P7KF7VS.js.map diff --git a/node_modules/.vite/deps/chunk-22FAE54D.js.map b/node_modules/.vite/deps/chunk-5P7KF7VS.js.map similarity index 100% rename from node_modules/.vite/deps/chunk-22FAE54D.js.map rename to node_modules/.vite/deps/chunk-5P7KF7VS.js.map diff --git a/node_modules/.vite/deps/chunk-VUNV25KB.js b/node_modules/.vite/deps/chunk-VUNV25KB.js deleted file mode 100644 index e62dd29..0000000 --- a/node_modules/.vite/deps/chunk-VUNV25KB.js +++ /dev/null @@ -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 -}; diff --git a/node_modules/.vite/deps/chunk-VUNV25KB.js.map b/node_modules/.vite/deps/chunk-VUNV25KB.js.map deleted file mode 100644 index 9865211..0000000 --- a/node_modules/.vite/deps/chunk-VUNV25KB.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/node_modules/.vite/deps/esbuild.js b/node_modules/.vite/deps/esbuild.js deleted file mode 100644 index c9fac7a..0000000 --- a/node_modules/.vite/deps/esbuild.js +++ /dev/null @@ -1,2309 +0,0 @@ -import { - __commonJS, - __require -} from "./chunk-VUNV25KB.js"; - -// browser-external:fs -var require_fs = __commonJS({ - "browser-external:fs"(exports, module) { - module.exports = Object.create(new Proxy({}, { - get(_, key) { - if (key !== "__esModule" && key !== "__proto__" && key !== "constructor" && key !== "splice") { - console.warn(`Module "fs" has been externalized for browser compatibility. Cannot access "fs.${key}" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`); - } - } - })); - } -}); - -// browser-external:os -var require_os = __commonJS({ - "browser-external:os"(exports, module) { - module.exports = Object.create(new Proxy({}, { - get(_, key) { - if (key !== "__esModule" && key !== "__proto__" && key !== "constructor" && key !== "splice") { - console.warn(`Module "os" has been externalized for browser compatibility. Cannot access "os.${key}" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`); - } - } - })); - } -}); - -// browser-external:path -var require_path = __commonJS({ - "browser-external:path"(exports, module) { - module.exports = Object.create(new Proxy({}, { - get(_, key) { - if (key !== "__esModule" && key !== "__proto__" && key !== "constructor" && key !== "splice") { - console.warn(`Module "path" has been externalized for browser compatibility. Cannot access "path.${key}" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`); - } - } - })); - } -}); - -// browser-external:child_process -var require_child_process = __commonJS({ - "browser-external:child_process"(exports, module) { - module.exports = Object.create(new Proxy({}, { - get(_, key) { - if (key !== "__esModule" && key !== "__proto__" && key !== "constructor" && key !== "splice") { - console.warn(`Module "child_process" has been externalized for browser compatibility. Cannot access "child_process.${key}" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`); - } - } - })); - } -}); - -// browser-external:crypto -var require_crypto = __commonJS({ - "browser-external:crypto"(exports, module) { - module.exports = Object.create(new Proxy({}, { - get(_, key) { - if (key !== "__esModule" && key !== "__proto__" && key !== "constructor" && key !== "splice") { - console.warn(`Module "crypto" has been externalized for browser compatibility. Cannot access "crypto.${key}" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`); - } - } - })); - } -}); - -// browser-external:tty -var require_tty = __commonJS({ - "browser-external:tty"(exports, module) { - module.exports = Object.create(new Proxy({}, { - get(_, key) { - if (key !== "__esModule" && key !== "__proto__" && key !== "constructor" && key !== "splice") { - console.warn(`Module "tty" has been externalized for browser compatibility. Cannot access "tty.${key}" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`); - } - } - })); - } -}); - -// browser-external:worker_threads -var require_worker_threads = __commonJS({ - "browser-external:worker_threads"(exports, module) { - module.exports = Object.create(new Proxy({}, { - get(_, key) { - if (key !== "__esModule" && key !== "__proto__" && key !== "constructor" && key !== "splice") { - console.warn(`Module "worker_threads" has been externalized for browser compatibility. Cannot access "worker_threads.${key}" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`); - } - } - })); - } -}); - -// node_modules/esbuild/lib/main.js -var require_main = __commonJS({ - "node_modules/esbuild/lib/main.js"(exports, module) { - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - var node_exports = {}; - __export(node_exports, { - analyzeMetafile: () => analyzeMetafile, - analyzeMetafileSync: () => analyzeMetafileSync, - build: () => build, - buildSync: () => buildSync, - context: () => context, - default: () => node_default, - formatMessages: () => formatMessages, - formatMessagesSync: () => formatMessagesSync, - initialize: () => initialize, - stop: () => stop, - transform: () => transform, - transformSync: () => transformSync, - version: () => version - }); - module.exports = __toCommonJS(node_exports); - function encodePacket(packet) { - let visit = (value) => { - if (value === null) { - bb.write8(0); - } else if (typeof value === "boolean") { - bb.write8(1); - bb.write8(+value); - } else if (typeof value === "number") { - bb.write8(2); - bb.write32(value | 0); - } else if (typeof value === "string") { - bb.write8(3); - bb.write(encodeUTF8(value)); - } else if (value instanceof Uint8Array) { - bb.write8(4); - bb.write(value); - } else if (value instanceof Array) { - bb.write8(5); - bb.write32(value.length); - for (let item of value) { - visit(item); - } - } else { - let keys = Object.keys(value); - bb.write8(6); - bb.write32(keys.length); - for (let key of keys) { - bb.write(encodeUTF8(key)); - visit(value[key]); - } - } - }; - let bb = new ByteBuffer(); - bb.write32(0); - bb.write32(packet.id << 1 | +!packet.isRequest); - visit(packet.value); - writeUInt32LE(bb.buf, bb.len - 4, 0); - return bb.buf.subarray(0, bb.len); - } - function decodePacket(bytes) { - let visit = () => { - switch (bb.read8()) { - case 0: - return null; - case 1: - return !!bb.read8(); - case 2: - return bb.read32(); - case 3: - return decodeUTF8(bb.read()); - case 4: - return bb.read(); - case 5: { - let count = bb.read32(); - let value2 = []; - for (let i = 0; i < count; i++) { - value2.push(visit()); - } - return value2; - } - case 6: { - let count = bb.read32(); - let value2 = {}; - for (let i = 0; i < count; i++) { - value2[decodeUTF8(bb.read())] = visit(); - } - return value2; - } - default: - throw new Error("Invalid packet"); - } - }; - let bb = new ByteBuffer(bytes); - let id = bb.read32(); - let isRequest = (id & 1) === 0; - id >>>= 1; - let value = visit(); - if (bb.ptr !== bytes.length) { - throw new Error("Invalid packet"); - } - return { id, isRequest, value }; - } - var ByteBuffer = class { - constructor(buf = new Uint8Array(1024)) { - this.buf = buf; - this.len = 0; - this.ptr = 0; - } - _write(delta) { - if (this.len + delta > this.buf.length) { - let clone = new Uint8Array((this.len + delta) * 2); - clone.set(this.buf); - this.buf = clone; - } - this.len += delta; - return this.len - delta; - } - write8(value) { - let offset = this._write(1); - this.buf[offset] = value; - } - write32(value) { - let offset = this._write(4); - writeUInt32LE(this.buf, value, offset); - } - write(bytes) { - let offset = this._write(4 + bytes.length); - writeUInt32LE(this.buf, bytes.length, offset); - this.buf.set(bytes, offset + 4); - } - _read(delta) { - if (this.ptr + delta > this.buf.length) { - throw new Error("Invalid packet"); - } - this.ptr += delta; - return this.ptr - delta; - } - read8() { - return this.buf[this._read(1)]; - } - read32() { - return readUInt32LE(this.buf, this._read(4)); - } - read() { - let length = this.read32(); - let bytes = new Uint8Array(length); - let ptr = this._read(bytes.length); - bytes.set(this.buf.subarray(ptr, ptr + length)); - return bytes; - } - }; - var encodeUTF8; - var decodeUTF8; - var encodeInvariant; - if (typeof TextEncoder !== "undefined" && typeof TextDecoder !== "undefined") { - let encoder = new TextEncoder(); - let decoder = new TextDecoder(); - encodeUTF8 = (text) => encoder.encode(text); - decodeUTF8 = (bytes) => decoder.decode(bytes); - encodeInvariant = 'new TextEncoder().encode("")'; - } else if (typeof Buffer !== "undefined") { - encodeUTF8 = (text) => Buffer.from(text); - decodeUTF8 = (bytes) => { - let { buffer, byteOffset, byteLength } = bytes; - return Buffer.from(buffer, byteOffset, byteLength).toString(); - }; - encodeInvariant = 'Buffer.from("")'; - } else { - throw new Error("No UTF-8 codec found"); - } - if (!(encodeUTF8("") instanceof Uint8Array)) - throw new Error(`Invariant violation: "${encodeInvariant} instanceof Uint8Array" is incorrectly false - -This indicates that your JavaScript environment is broken. You cannot use -esbuild in this environment because esbuild relies on this invariant. This -is not a problem with esbuild. You need to fix your environment instead. -`); - function readUInt32LE(buffer, offset) { - return buffer[offset++] | buffer[offset++] << 8 | buffer[offset++] << 16 | buffer[offset++] << 24; - } - function writeUInt32LE(buffer, value, offset) { - buffer[offset++] = value; - buffer[offset++] = value >> 8; - buffer[offset++] = value >> 16; - buffer[offset++] = value >> 24; - } - var quote = JSON.stringify; - var buildLogLevelDefault = "warning"; - var transformLogLevelDefault = "silent"; - function validateAndJoinStringArray(values, what) { - const toJoin = []; - for (const value of values) { - validateStringValue(value, what); - if (value.indexOf(",") >= 0) throw new Error(`Invalid ${what}: ${value}`); - toJoin.push(value); - } - return toJoin.join(","); - } - var canBeAnything = () => null; - var mustBeBoolean = (value) => typeof value === "boolean" ? null : "a boolean"; - var mustBeString = (value) => typeof value === "string" ? null : "a string"; - var mustBeRegExp = (value) => value instanceof RegExp ? null : "a RegExp object"; - var mustBeInteger = (value) => typeof value === "number" && value === (value | 0) ? null : "an integer"; - var mustBeValidPortNumber = (value) => typeof value === "number" && value === (value | 0) && value >= 0 && value <= 65535 ? null : "a valid port number"; - var mustBeFunction = (value) => typeof value === "function" ? null : "a function"; - var mustBeArray = (value) => Array.isArray(value) ? null : "an array"; - var mustBeArrayOfStrings = (value) => Array.isArray(value) && value.every((x) => typeof x === "string") ? null : "an array of strings"; - var mustBeObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) ? null : "an object"; - var mustBeEntryPoints = (value) => typeof value === "object" && value !== null ? null : "an array or an object"; - var mustBeWebAssemblyModule = (value) => value instanceof WebAssembly.Module ? null : "a WebAssembly.Module"; - var mustBeObjectOrNull = (value) => typeof value === "object" && !Array.isArray(value) ? null : "an object or null"; - var mustBeStringOrBoolean = (value) => typeof value === "string" || typeof value === "boolean" ? null : "a string or a boolean"; - var mustBeStringOrObject = (value) => typeof value === "string" || typeof value === "object" && value !== null && !Array.isArray(value) ? null : "a string or an object"; - var mustBeStringOrArrayOfStrings = (value) => typeof value === "string" || Array.isArray(value) && value.every((x) => typeof x === "string") ? null : "a string or an array of strings"; - var mustBeStringOrUint8Array = (value) => typeof value === "string" || value instanceof Uint8Array ? null : "a string or a Uint8Array"; - var mustBeStringOrURL = (value) => typeof value === "string" || value instanceof URL ? null : "a string or a URL"; - function getFlag(object, keys, key, mustBeFn) { - let value = object[key]; - keys[key + ""] = true; - if (value === void 0) return void 0; - let mustBe = mustBeFn(value); - if (mustBe !== null) throw new Error(`${quote(key)} must be ${mustBe}`); - return value; - } - function checkForInvalidFlags(object, keys, where) { - for (let key in object) { - if (!(key in keys)) { - throw new Error(`Invalid option ${where}: ${quote(key)}`); - } - } - } - function validateInitializeOptions(options) { - let keys = /* @__PURE__ */ Object.create(null); - let wasmURL = getFlag(options, keys, "wasmURL", mustBeStringOrURL); - let wasmModule = getFlag(options, keys, "wasmModule", mustBeWebAssemblyModule); - let worker = getFlag(options, keys, "worker", mustBeBoolean); - checkForInvalidFlags(options, keys, "in initialize() call"); - return { - wasmURL, - wasmModule, - worker - }; - } - function validateMangleCache(mangleCache) { - let validated; - if (mangleCache !== void 0) { - validated = /* @__PURE__ */ Object.create(null); - for (let key in mangleCache) { - let value = mangleCache[key]; - if (typeof value === "string" || value === false) { - validated[key] = value; - } else { - throw new Error(`Expected ${quote(key)} in mangle cache to map to either a string or false`); - } - } - } - return validated; - } - function pushLogFlags(flags, options, keys, isTTY2, logLevelDefault) { - let color = getFlag(options, keys, "color", mustBeBoolean); - let logLevel = getFlag(options, keys, "logLevel", mustBeString); - let logLimit = getFlag(options, keys, "logLimit", mustBeInteger); - if (color !== void 0) flags.push(`--color=${color}`); - else if (isTTY2) flags.push(`--color=true`); - flags.push(`--log-level=${logLevel || logLevelDefault}`); - flags.push(`--log-limit=${logLimit || 0}`); - } - function validateStringValue(value, what, key) { - if (typeof value !== "string") { - throw new Error(`Expected value for ${what}${key !== void 0 ? " " + quote(key) : ""} to be a string, got ${typeof value} instead`); - } - return value; - } - function pushCommonFlags(flags, options, keys) { - let legalComments = getFlag(options, keys, "legalComments", mustBeString); - let sourceRoot = getFlag(options, keys, "sourceRoot", mustBeString); - let sourcesContent = getFlag(options, keys, "sourcesContent", mustBeBoolean); - let target = getFlag(options, keys, "target", mustBeStringOrArrayOfStrings); - let format = getFlag(options, keys, "format", mustBeString); - let globalName = getFlag(options, keys, "globalName", mustBeString); - let mangleProps = getFlag(options, keys, "mangleProps", mustBeRegExp); - let reserveProps = getFlag(options, keys, "reserveProps", mustBeRegExp); - let mangleQuoted = getFlag(options, keys, "mangleQuoted", mustBeBoolean); - let minify = getFlag(options, keys, "minify", mustBeBoolean); - let minifySyntax = getFlag(options, keys, "minifySyntax", mustBeBoolean); - let minifyWhitespace = getFlag(options, keys, "minifyWhitespace", mustBeBoolean); - let minifyIdentifiers = getFlag(options, keys, "minifyIdentifiers", mustBeBoolean); - let lineLimit = getFlag(options, keys, "lineLimit", mustBeInteger); - let drop = getFlag(options, keys, "drop", mustBeArrayOfStrings); - let dropLabels = getFlag(options, keys, "dropLabels", mustBeArrayOfStrings); - let charset = getFlag(options, keys, "charset", mustBeString); - let treeShaking = getFlag(options, keys, "treeShaking", mustBeBoolean); - let ignoreAnnotations = getFlag(options, keys, "ignoreAnnotations", mustBeBoolean); - let jsx = getFlag(options, keys, "jsx", mustBeString); - let jsxFactory = getFlag(options, keys, "jsxFactory", mustBeString); - let jsxFragment = getFlag(options, keys, "jsxFragment", mustBeString); - let jsxImportSource = getFlag(options, keys, "jsxImportSource", mustBeString); - let jsxDev = getFlag(options, keys, "jsxDev", mustBeBoolean); - let jsxSideEffects = getFlag(options, keys, "jsxSideEffects", mustBeBoolean); - let define = getFlag(options, keys, "define", mustBeObject); - let logOverride = getFlag(options, keys, "logOverride", mustBeObject); - let supported = getFlag(options, keys, "supported", mustBeObject); - let pure = getFlag(options, keys, "pure", mustBeArrayOfStrings); - let keepNames = getFlag(options, keys, "keepNames", mustBeBoolean); - let platform = getFlag(options, keys, "platform", mustBeString); - let tsconfigRaw = getFlag(options, keys, "tsconfigRaw", mustBeStringOrObject); - let absPaths = getFlag(options, keys, "absPaths", mustBeArrayOfStrings); - if (legalComments) flags.push(`--legal-comments=${legalComments}`); - if (sourceRoot !== void 0) flags.push(`--source-root=${sourceRoot}`); - if (sourcesContent !== void 0) flags.push(`--sources-content=${sourcesContent}`); - if (target) flags.push(`--target=${validateAndJoinStringArray(Array.isArray(target) ? target : [target], "target")}`); - if (format) flags.push(`--format=${format}`); - if (globalName) flags.push(`--global-name=${globalName}`); - if (platform) flags.push(`--platform=${platform}`); - if (tsconfigRaw) flags.push(`--tsconfig-raw=${typeof tsconfigRaw === "string" ? tsconfigRaw : JSON.stringify(tsconfigRaw)}`); - if (minify) flags.push("--minify"); - if (minifySyntax) flags.push("--minify-syntax"); - if (minifyWhitespace) flags.push("--minify-whitespace"); - if (minifyIdentifiers) flags.push("--minify-identifiers"); - if (lineLimit) flags.push(`--line-limit=${lineLimit}`); - if (charset) flags.push(`--charset=${charset}`); - if (treeShaking !== void 0) flags.push(`--tree-shaking=${treeShaking}`); - if (ignoreAnnotations) flags.push(`--ignore-annotations`); - if (drop) for (let what of drop) flags.push(`--drop:${validateStringValue(what, "drop")}`); - if (dropLabels) flags.push(`--drop-labels=${validateAndJoinStringArray(dropLabels, "drop label")}`); - if (absPaths) flags.push(`--abs-paths=${validateAndJoinStringArray(absPaths, "abs paths")}`); - if (mangleProps) flags.push(`--mangle-props=${jsRegExpToGoRegExp(mangleProps)}`); - if (reserveProps) flags.push(`--reserve-props=${jsRegExpToGoRegExp(reserveProps)}`); - if (mangleQuoted !== void 0) flags.push(`--mangle-quoted=${mangleQuoted}`); - if (jsx) flags.push(`--jsx=${jsx}`); - if (jsxFactory) flags.push(`--jsx-factory=${jsxFactory}`); - if (jsxFragment) flags.push(`--jsx-fragment=${jsxFragment}`); - if (jsxImportSource) flags.push(`--jsx-import-source=${jsxImportSource}`); - if (jsxDev) flags.push(`--jsx-dev`); - if (jsxSideEffects) flags.push(`--jsx-side-effects`); - if (define) { - for (let key in define) { - if (key.indexOf("=") >= 0) throw new Error(`Invalid define: ${key}`); - flags.push(`--define:${key}=${validateStringValue(define[key], "define", key)}`); - } - } - if (logOverride) { - for (let key in logOverride) { - if (key.indexOf("=") >= 0) throw new Error(`Invalid log override: ${key}`); - flags.push(`--log-override:${key}=${validateStringValue(logOverride[key], "log override", key)}`); - } - } - if (supported) { - for (let key in supported) { - if (key.indexOf("=") >= 0) throw new Error(`Invalid supported: ${key}`); - const value = supported[key]; - if (typeof value !== "boolean") throw new Error(`Expected value for supported ${quote(key)} to be a boolean, got ${typeof value} instead`); - flags.push(`--supported:${key}=${value}`); - } - } - if (pure) for (let fn of pure) flags.push(`--pure:${validateStringValue(fn, "pure")}`); - if (keepNames) flags.push(`--keep-names`); - } - function flagsForBuildOptions(callName, options, isTTY2, logLevelDefault, writeDefault) { - var _a2; - let flags = []; - let entries = []; - let keys = /* @__PURE__ */ Object.create(null); - let stdinContents = null; - let stdinResolveDir = null; - pushLogFlags(flags, options, keys, isTTY2, logLevelDefault); - pushCommonFlags(flags, options, keys); - let sourcemap = getFlag(options, keys, "sourcemap", mustBeStringOrBoolean); - let bundle = getFlag(options, keys, "bundle", mustBeBoolean); - let splitting = getFlag(options, keys, "splitting", mustBeBoolean); - let preserveSymlinks = getFlag(options, keys, "preserveSymlinks", mustBeBoolean); - let metafile = getFlag(options, keys, "metafile", mustBeBoolean); - let outfile = getFlag(options, keys, "outfile", mustBeString); - let outdir = getFlag(options, keys, "outdir", mustBeString); - let outbase = getFlag(options, keys, "outbase", mustBeString); - let tsconfig = getFlag(options, keys, "tsconfig", mustBeString); - let resolveExtensions = getFlag(options, keys, "resolveExtensions", mustBeArrayOfStrings); - let nodePathsInput = getFlag(options, keys, "nodePaths", mustBeArrayOfStrings); - let mainFields = getFlag(options, keys, "mainFields", mustBeArrayOfStrings); - let conditions = getFlag(options, keys, "conditions", mustBeArrayOfStrings); - let external = getFlag(options, keys, "external", mustBeArrayOfStrings); - let packages = getFlag(options, keys, "packages", mustBeString); - let alias = getFlag(options, keys, "alias", mustBeObject); - let loader = getFlag(options, keys, "loader", mustBeObject); - let outExtension = getFlag(options, keys, "outExtension", mustBeObject); - let publicPath = getFlag(options, keys, "publicPath", mustBeString); - let entryNames = getFlag(options, keys, "entryNames", mustBeString); - let chunkNames = getFlag(options, keys, "chunkNames", mustBeString); - let assetNames = getFlag(options, keys, "assetNames", mustBeString); - let inject = getFlag(options, keys, "inject", mustBeArrayOfStrings); - let banner = getFlag(options, keys, "banner", mustBeObject); - let footer = getFlag(options, keys, "footer", mustBeObject); - let entryPoints = getFlag(options, keys, "entryPoints", mustBeEntryPoints); - let absWorkingDir = getFlag(options, keys, "absWorkingDir", mustBeString); - let stdin = getFlag(options, keys, "stdin", mustBeObject); - let write = (_a2 = getFlag(options, keys, "write", mustBeBoolean)) != null ? _a2 : writeDefault; - let allowOverwrite = getFlag(options, keys, "allowOverwrite", mustBeBoolean); - let mangleCache = getFlag(options, keys, "mangleCache", mustBeObject); - keys.plugins = true; - checkForInvalidFlags(options, keys, `in ${callName}() call`); - if (sourcemap) flags.push(`--sourcemap${sourcemap === true ? "" : `=${sourcemap}`}`); - if (bundle) flags.push("--bundle"); - if (allowOverwrite) flags.push("--allow-overwrite"); - if (splitting) flags.push("--splitting"); - if (preserveSymlinks) flags.push("--preserve-symlinks"); - if (metafile) flags.push(`--metafile`); - if (outfile) flags.push(`--outfile=${outfile}`); - if (outdir) flags.push(`--outdir=${outdir}`); - if (outbase) flags.push(`--outbase=${outbase}`); - if (tsconfig) flags.push(`--tsconfig=${tsconfig}`); - if (packages) flags.push(`--packages=${packages}`); - if (resolveExtensions) flags.push(`--resolve-extensions=${validateAndJoinStringArray(resolveExtensions, "resolve extension")}`); - if (publicPath) flags.push(`--public-path=${publicPath}`); - if (entryNames) flags.push(`--entry-names=${entryNames}`); - if (chunkNames) flags.push(`--chunk-names=${chunkNames}`); - if (assetNames) flags.push(`--asset-names=${assetNames}`); - if (mainFields) flags.push(`--main-fields=${validateAndJoinStringArray(mainFields, "main field")}`); - if (conditions) flags.push(`--conditions=${validateAndJoinStringArray(conditions, "condition")}`); - if (external) for (let name of external) flags.push(`--external:${validateStringValue(name, "external")}`); - if (alias) { - for (let old in alias) { - if (old.indexOf("=") >= 0) throw new Error(`Invalid package name in alias: ${old}`); - flags.push(`--alias:${old}=${validateStringValue(alias[old], "alias", old)}`); - } - } - if (banner) { - for (let type in banner) { - if (type.indexOf("=") >= 0) throw new Error(`Invalid banner file type: ${type}`); - flags.push(`--banner:${type}=${validateStringValue(banner[type], "banner", type)}`); - } - } - if (footer) { - for (let type in footer) { - if (type.indexOf("=") >= 0) throw new Error(`Invalid footer file type: ${type}`); - flags.push(`--footer:${type}=${validateStringValue(footer[type], "footer", type)}`); - } - } - if (inject) for (let path3 of inject) flags.push(`--inject:${validateStringValue(path3, "inject")}`); - if (loader) { - for (let ext in loader) { - if (ext.indexOf("=") >= 0) throw new Error(`Invalid loader extension: ${ext}`); - flags.push(`--loader:${ext}=${validateStringValue(loader[ext], "loader", ext)}`); - } - } - if (outExtension) { - for (let ext in outExtension) { - if (ext.indexOf("=") >= 0) throw new Error(`Invalid out extension: ${ext}`); - flags.push(`--out-extension:${ext}=${validateStringValue(outExtension[ext], "out extension", ext)}`); - } - } - if (entryPoints) { - if (Array.isArray(entryPoints)) { - for (let i = 0, n = entryPoints.length; i < n; i++) { - let entryPoint = entryPoints[i]; - if (typeof entryPoint === "object" && entryPoint !== null) { - let entryPointKeys = /* @__PURE__ */ Object.create(null); - let input = getFlag(entryPoint, entryPointKeys, "in", mustBeString); - let output = getFlag(entryPoint, entryPointKeys, "out", mustBeString); - checkForInvalidFlags(entryPoint, entryPointKeys, "in entry point at index " + i); - if (input === void 0) throw new Error('Missing property "in" for entry point at index ' + i); - if (output === void 0) throw new Error('Missing property "out" for entry point at index ' + i); - entries.push([output, input]); - } else { - entries.push(["", validateStringValue(entryPoint, "entry point at index " + i)]); - } - } - } else { - for (let key in entryPoints) { - entries.push([key, validateStringValue(entryPoints[key], "entry point", key)]); - } - } - } - if (stdin) { - let stdinKeys = /* @__PURE__ */ Object.create(null); - let contents = getFlag(stdin, stdinKeys, "contents", mustBeStringOrUint8Array); - let resolveDir = getFlag(stdin, stdinKeys, "resolveDir", mustBeString); - let sourcefile = getFlag(stdin, stdinKeys, "sourcefile", mustBeString); - let loader2 = getFlag(stdin, stdinKeys, "loader", mustBeString); - checkForInvalidFlags(stdin, stdinKeys, 'in "stdin" object'); - if (sourcefile) flags.push(`--sourcefile=${sourcefile}`); - if (loader2) flags.push(`--loader=${loader2}`); - if (resolveDir) stdinResolveDir = resolveDir; - if (typeof contents === "string") stdinContents = encodeUTF8(contents); - else if (contents instanceof Uint8Array) stdinContents = contents; - } - let nodePaths = []; - if (nodePathsInput) { - for (let value of nodePathsInput) { - value += ""; - nodePaths.push(value); - } - } - return { - entries, - flags, - write, - stdinContents, - stdinResolveDir, - absWorkingDir, - nodePaths, - mangleCache: validateMangleCache(mangleCache) - }; - } - function flagsForTransformOptions(callName, options, isTTY2, logLevelDefault) { - let flags = []; - let keys = /* @__PURE__ */ Object.create(null); - pushLogFlags(flags, options, keys, isTTY2, logLevelDefault); - pushCommonFlags(flags, options, keys); - let sourcemap = getFlag(options, keys, "sourcemap", mustBeStringOrBoolean); - let sourcefile = getFlag(options, keys, "sourcefile", mustBeString); - let loader = getFlag(options, keys, "loader", mustBeString); - let banner = getFlag(options, keys, "banner", mustBeString); - let footer = getFlag(options, keys, "footer", mustBeString); - let mangleCache = getFlag(options, keys, "mangleCache", mustBeObject); - checkForInvalidFlags(options, keys, `in ${callName}() call`); - if (sourcemap) flags.push(`--sourcemap=${sourcemap === true ? "external" : sourcemap}`); - if (sourcefile) flags.push(`--sourcefile=${sourcefile}`); - if (loader) flags.push(`--loader=${loader}`); - if (banner) flags.push(`--banner=${banner}`); - if (footer) flags.push(`--footer=${footer}`); - return { - flags, - mangleCache: validateMangleCache(mangleCache) - }; - } - function createChannel(streamIn) { - const requestCallbacksByKey = {}; - const closeData = { didClose: false, reason: "" }; - let responseCallbacks = {}; - let nextRequestID = 0; - let nextBuildKey = 0; - let stdout = new Uint8Array(16 * 1024); - let stdoutUsed = 0; - let readFromStdout = (chunk) => { - let limit = stdoutUsed + chunk.length; - if (limit > stdout.length) { - let swap = new Uint8Array(limit * 2); - swap.set(stdout); - stdout = swap; - } - stdout.set(chunk, stdoutUsed); - stdoutUsed += chunk.length; - let offset = 0; - while (offset + 4 <= stdoutUsed) { - let length = readUInt32LE(stdout, offset); - if (offset + 4 + length > stdoutUsed) { - break; - } - offset += 4; - handleIncomingPacket(stdout.subarray(offset, offset + length)); - offset += length; - } - if (offset > 0) { - stdout.copyWithin(0, offset, stdoutUsed); - stdoutUsed -= offset; - } - }; - let afterClose = (error) => { - closeData.didClose = true; - if (error) closeData.reason = ": " + (error.message || error); - const text = "The service was stopped" + closeData.reason; - for (let id in responseCallbacks) { - responseCallbacks[id](text, null); - } - responseCallbacks = {}; - }; - let sendRequest = (refs, value, callback) => { - if (closeData.didClose) return callback("The service is no longer running" + closeData.reason, null); - let id = nextRequestID++; - responseCallbacks[id] = (error, response) => { - try { - callback(error, response); - } finally { - if (refs) refs.unref(); - } - }; - if (refs) refs.ref(); - streamIn.writeToStdin(encodePacket({ id, isRequest: true, value })); - }; - let sendResponse = (id, value) => { - if (closeData.didClose) throw new Error("The service is no longer running" + closeData.reason); - streamIn.writeToStdin(encodePacket({ id, isRequest: false, value })); - }; - let handleRequest = async (id, request) => { - try { - if (request.command === "ping") { - sendResponse(id, {}); - return; - } - if (typeof request.key === "number") { - const requestCallbacks = requestCallbacksByKey[request.key]; - if (!requestCallbacks) { - return; - } - const callback = requestCallbacks[request.command]; - if (callback) { - await callback(id, request); - return; - } - } - throw new Error(`Invalid command: ` + request.command); - } catch (e) { - const errors = [extractErrorMessageV8(e, streamIn, null, void 0, "")]; - try { - sendResponse(id, { errors }); - } catch { - } - } - }; - let isFirstPacket = true; - let handleIncomingPacket = (bytes) => { - if (isFirstPacket) { - isFirstPacket = false; - let binaryVersion = String.fromCharCode(...bytes); - if (binaryVersion !== "0.25.12") { - throw new Error(`Cannot start service: Host version "${"0.25.12"}" does not match binary version ${quote(binaryVersion)}`); - } - return; - } - let packet = decodePacket(bytes); - if (packet.isRequest) { - handleRequest(packet.id, packet.value); - } else { - let callback = responseCallbacks[packet.id]; - delete responseCallbacks[packet.id]; - if (packet.value.error) callback(packet.value.error, {}); - else callback(null, packet.value); - } - }; - let buildOrContext = ({ callName, refs, options, isTTY: isTTY2, defaultWD: defaultWD2, callback }) => { - let refCount = 0; - const buildKey = nextBuildKey++; - const requestCallbacks = {}; - const buildRefs = { - ref() { - if (++refCount === 1) { - if (refs) refs.ref(); - } - }, - unref() { - if (--refCount === 0) { - delete requestCallbacksByKey[buildKey]; - if (refs) refs.unref(); - } - } - }; - requestCallbacksByKey[buildKey] = requestCallbacks; - buildRefs.ref(); - buildOrContextImpl( - callName, - buildKey, - sendRequest, - sendResponse, - buildRefs, - streamIn, - requestCallbacks, - options, - isTTY2, - defaultWD2, - (err, res) => { - try { - callback(err, res); - } finally { - buildRefs.unref(); - } - } - ); - }; - let transform2 = ({ callName, refs, input, options, isTTY: isTTY2, fs: fs3, callback }) => { - const details = createObjectStash(); - let start = (inputPath) => { - try { - if (typeof input !== "string" && !(input instanceof Uint8Array)) - throw new Error('The input to "transform" must be a string or a Uint8Array'); - let { - flags, - mangleCache - } = flagsForTransformOptions(callName, options, isTTY2, transformLogLevelDefault); - let request = { - command: "transform", - flags, - inputFS: inputPath !== null, - input: inputPath !== null ? encodeUTF8(inputPath) : typeof input === "string" ? encodeUTF8(input) : input - }; - if (mangleCache) request.mangleCache = mangleCache; - sendRequest(refs, request, (error, response) => { - if (error) return callback(new Error(error), null); - let errors = replaceDetailsInMessages(response.errors, details); - let warnings = replaceDetailsInMessages(response.warnings, details); - let outstanding = 1; - let next = () => { - if (--outstanding === 0) { - let result = { - warnings, - code: response.code, - map: response.map, - mangleCache: void 0, - legalComments: void 0 - }; - if ("legalComments" in response) result.legalComments = response == null ? void 0 : response.legalComments; - if (response.mangleCache) result.mangleCache = response == null ? void 0 : response.mangleCache; - callback(null, result); - } - }; - if (errors.length > 0) return callback(failureErrorWithLog("Transform failed", errors, warnings), null); - if (response.codeFS) { - outstanding++; - fs3.readFile(response.code, (err, contents) => { - if (err !== null) { - callback(err, null); - } else { - response.code = contents; - next(); - } - }); - } - if (response.mapFS) { - outstanding++; - fs3.readFile(response.map, (err, contents) => { - if (err !== null) { - callback(err, null); - } else { - response.map = contents; - next(); - } - }); - } - next(); - }); - } catch (e) { - let flags = []; - try { - pushLogFlags(flags, options, {}, isTTY2, transformLogLevelDefault); - } catch { - } - const error = extractErrorMessageV8(e, streamIn, details, void 0, ""); - sendRequest(refs, { command: "error", flags, error }, () => { - error.detail = details.load(error.detail); - callback(failureErrorWithLog("Transform failed", [error], []), null); - }); - } - }; - if ((typeof input === "string" || input instanceof Uint8Array) && input.length > 1024 * 1024) { - let next = start; - start = () => fs3.writeFile(input, next); - } - start(null); - }; - let formatMessages2 = ({ callName, refs, messages, options, callback }) => { - if (!options) throw new Error(`Missing second argument in ${callName}() call`); - let keys = {}; - let kind = getFlag(options, keys, "kind", mustBeString); - let color = getFlag(options, keys, "color", mustBeBoolean); - let terminalWidth = getFlag(options, keys, "terminalWidth", mustBeInteger); - checkForInvalidFlags(options, keys, `in ${callName}() call`); - if (kind === void 0) throw new Error(`Missing "kind" in ${callName}() call`); - if (kind !== "error" && kind !== "warning") throw new Error(`Expected "kind" to be "error" or "warning" in ${callName}() call`); - let request = { - command: "format-msgs", - messages: sanitizeMessages(messages, "messages", null, "", terminalWidth), - isWarning: kind === "warning" - }; - if (color !== void 0) request.color = color; - if (terminalWidth !== void 0) request.terminalWidth = terminalWidth; - sendRequest(refs, request, (error, response) => { - if (error) return callback(new Error(error), null); - callback(null, response.messages); - }); - }; - let analyzeMetafile2 = ({ callName, refs, metafile, options, callback }) => { - if (options === void 0) options = {}; - let keys = {}; - let color = getFlag(options, keys, "color", mustBeBoolean); - let verbose = getFlag(options, keys, "verbose", mustBeBoolean); - checkForInvalidFlags(options, keys, `in ${callName}() call`); - let request = { - command: "analyze-metafile", - metafile - }; - if (color !== void 0) request.color = color; - if (verbose !== void 0) request.verbose = verbose; - sendRequest(refs, request, (error, response) => { - if (error) return callback(new Error(error), null); - callback(null, response.result); - }); - }; - return { - readFromStdout, - afterClose, - service: { - buildOrContext, - transform: transform2, - formatMessages: formatMessages2, - analyzeMetafile: analyzeMetafile2 - } - }; - } - function buildOrContextImpl(callName, buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, options, isTTY2, defaultWD2, callback) { - const details = createObjectStash(); - const isContext = callName === "context"; - const handleError = (e, pluginName) => { - const flags = []; - try { - pushLogFlags(flags, options, {}, isTTY2, buildLogLevelDefault); - } catch { - } - const message = extractErrorMessageV8(e, streamIn, details, void 0, pluginName); - sendRequest(refs, { command: "error", flags, error: message }, () => { - message.detail = details.load(message.detail); - callback(failureErrorWithLog(isContext ? "Context failed" : "Build failed", [message], []), null); - }); - }; - let plugins; - if (typeof options === "object") { - const value = options.plugins; - if (value !== void 0) { - if (!Array.isArray(value)) return handleError(new Error(`"plugins" must be an array`), ""); - plugins = value; - } - } - if (plugins && plugins.length > 0) { - if (streamIn.isSync) return handleError(new Error("Cannot use plugins in synchronous API calls"), ""); - handlePlugins( - buildKey, - sendRequest, - sendResponse, - refs, - streamIn, - requestCallbacks, - options, - plugins, - details - ).then( - (result) => { - if (!result.ok) return handleError(result.error, result.pluginName); - try { - buildOrContextContinue(result.requestPlugins, result.runOnEndCallbacks, result.scheduleOnDisposeCallbacks); - } catch (e) { - handleError(e, ""); - } - }, - (e) => handleError(e, "") - ); - return; - } - try { - buildOrContextContinue(null, (result, done) => done([], []), () => { - }); - } catch (e) { - handleError(e, ""); - } - function buildOrContextContinue(requestPlugins, runOnEndCallbacks, scheduleOnDisposeCallbacks) { - const writeDefault = streamIn.hasFS; - const { - entries, - flags, - write, - stdinContents, - stdinResolveDir, - absWorkingDir, - nodePaths, - mangleCache - } = flagsForBuildOptions(callName, options, isTTY2, buildLogLevelDefault, writeDefault); - if (write && !streamIn.hasFS) throw new Error(`The "write" option is unavailable in this environment`); - const request = { - command: "build", - key: buildKey, - entries, - flags, - write, - stdinContents, - stdinResolveDir, - absWorkingDir: absWorkingDir || defaultWD2, - nodePaths, - context: isContext - }; - if (requestPlugins) request.plugins = requestPlugins; - if (mangleCache) request.mangleCache = mangleCache; - const buildResponseToResult = (response, callback2) => { - const result = { - errors: replaceDetailsInMessages(response.errors, details), - warnings: replaceDetailsInMessages(response.warnings, details), - outputFiles: void 0, - metafile: void 0, - mangleCache: void 0 - }; - const originalErrors = result.errors.slice(); - const originalWarnings = result.warnings.slice(); - if (response.outputFiles) result.outputFiles = response.outputFiles.map(convertOutputFiles); - if (response.metafile) result.metafile = JSON.parse(response.metafile); - if (response.mangleCache) result.mangleCache = response.mangleCache; - if (response.writeToStdout !== void 0) console.log(decodeUTF8(response.writeToStdout).replace(/\n$/, "")); - runOnEndCallbacks(result, (onEndErrors, onEndWarnings) => { - if (originalErrors.length > 0 || onEndErrors.length > 0) { - const error = failureErrorWithLog("Build failed", originalErrors.concat(onEndErrors), originalWarnings.concat(onEndWarnings)); - return callback2(error, null, onEndErrors, onEndWarnings); - } - callback2(null, result, onEndErrors, onEndWarnings); - }); - }; - let latestResultPromise; - let provideLatestResult; - if (isContext) - requestCallbacks["on-end"] = (id, request2) => new Promise((resolve) => { - buildResponseToResult(request2, (err, result, onEndErrors, onEndWarnings) => { - const response = { - errors: onEndErrors, - warnings: onEndWarnings - }; - if (provideLatestResult) provideLatestResult(err, result); - latestResultPromise = void 0; - provideLatestResult = void 0; - sendResponse(id, response); - resolve(); - }); - }); - sendRequest(refs, request, (error, response) => { - if (error) return callback(new Error(error), null); - if (!isContext) { - return buildResponseToResult(response, (err, res) => { - scheduleOnDisposeCallbacks(); - return callback(err, res); - }); - } - if (response.errors.length > 0) { - return callback(failureErrorWithLog("Context failed", response.errors, response.warnings), null); - } - let didDispose = false; - const result = { - rebuild: () => { - if (!latestResultPromise) latestResultPromise = new Promise((resolve, reject) => { - let settlePromise; - provideLatestResult = (err, result2) => { - if (!settlePromise) settlePromise = () => err ? reject(err) : resolve(result2); - }; - const triggerAnotherBuild = () => { - const request2 = { - command: "rebuild", - key: buildKey - }; - sendRequest(refs, request2, (error2, response2) => { - if (error2) { - reject(new Error(error2)); - } else if (settlePromise) { - settlePromise(); - } else { - triggerAnotherBuild(); - } - }); - }; - triggerAnotherBuild(); - }); - return latestResultPromise; - }, - watch: (options2 = {}) => new Promise((resolve, reject) => { - if (!streamIn.hasFS) throw new Error(`Cannot use the "watch" API in this environment`); - const keys = {}; - const delay = getFlag(options2, keys, "delay", mustBeInteger); - checkForInvalidFlags(options2, keys, `in watch() call`); - const request2 = { - command: "watch", - key: buildKey - }; - if (delay) request2.delay = delay; - sendRequest(refs, request2, (error2) => { - if (error2) reject(new Error(error2)); - else resolve(void 0); - }); - }), - serve: (options2 = {}) => new Promise((resolve, reject) => { - if (!streamIn.hasFS) throw new Error(`Cannot use the "serve" API in this environment`); - const keys = {}; - const port = getFlag(options2, keys, "port", mustBeValidPortNumber); - const host = getFlag(options2, keys, "host", mustBeString); - const servedir = getFlag(options2, keys, "servedir", mustBeString); - const keyfile = getFlag(options2, keys, "keyfile", mustBeString); - const certfile = getFlag(options2, keys, "certfile", mustBeString); - const fallback = getFlag(options2, keys, "fallback", mustBeString); - const cors = getFlag(options2, keys, "cors", mustBeObject); - const onRequest = getFlag(options2, keys, "onRequest", mustBeFunction); - checkForInvalidFlags(options2, keys, `in serve() call`); - const request2 = { - command: "serve", - key: buildKey, - onRequest: !!onRequest - }; - if (port !== void 0) request2.port = port; - if (host !== void 0) request2.host = host; - if (servedir !== void 0) request2.servedir = servedir; - if (keyfile !== void 0) request2.keyfile = keyfile; - if (certfile !== void 0) request2.certfile = certfile; - if (fallback !== void 0) request2.fallback = fallback; - if (cors) { - const corsKeys = {}; - const origin = getFlag(cors, corsKeys, "origin", mustBeStringOrArrayOfStrings); - checkForInvalidFlags(cors, corsKeys, `on "cors" object`); - if (Array.isArray(origin)) request2.corsOrigin = origin; - else if (origin !== void 0) request2.corsOrigin = [origin]; - } - sendRequest(refs, request2, (error2, response2) => { - if (error2) return reject(new Error(error2)); - if (onRequest) { - requestCallbacks["serve-request"] = (id, request3) => { - onRequest(request3.args); - sendResponse(id, {}); - }; - } - resolve(response2); - }); - }), - cancel: () => new Promise((resolve) => { - if (didDispose) return resolve(); - const request2 = { - command: "cancel", - key: buildKey - }; - sendRequest(refs, request2, () => { - resolve(); - }); - }), - dispose: () => new Promise((resolve) => { - if (didDispose) return resolve(); - didDispose = true; - const request2 = { - command: "dispose", - key: buildKey - }; - sendRequest(refs, request2, () => { - resolve(); - scheduleOnDisposeCallbacks(); - refs.unref(); - }); - }) - }; - refs.ref(); - callback(null, result); - }); - } - } - var handlePlugins = async (buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, initialOptions, plugins, details) => { - let onStartCallbacks = []; - let onEndCallbacks = []; - let onResolveCallbacks = {}; - let onLoadCallbacks = {}; - let onDisposeCallbacks = []; - let nextCallbackID = 0; - let i = 0; - let requestPlugins = []; - let isSetupDone = false; - plugins = [...plugins]; - for (let item of plugins) { - let keys = {}; - if (typeof item !== "object") throw new Error(`Plugin at index ${i} must be an object`); - const name = getFlag(item, keys, "name", mustBeString); - if (typeof name !== "string" || name === "") throw new Error(`Plugin at index ${i} is missing a name`); - try { - let setup = getFlag(item, keys, "setup", mustBeFunction); - if (typeof setup !== "function") throw new Error(`Plugin is missing a setup function`); - checkForInvalidFlags(item, keys, `on plugin ${quote(name)}`); - let plugin = { - name, - onStart: false, - onEnd: false, - onResolve: [], - onLoad: [] - }; - i++; - let resolve = (path3, options = {}) => { - if (!isSetupDone) throw new Error('Cannot call "resolve" before plugin setup has completed'); - if (typeof path3 !== "string") throw new Error(`The path to resolve must be a string`); - let keys2 = /* @__PURE__ */ Object.create(null); - let pluginName = getFlag(options, keys2, "pluginName", mustBeString); - let importer = getFlag(options, keys2, "importer", mustBeString); - let namespace = getFlag(options, keys2, "namespace", mustBeString); - let resolveDir = getFlag(options, keys2, "resolveDir", mustBeString); - let kind = getFlag(options, keys2, "kind", mustBeString); - let pluginData = getFlag(options, keys2, "pluginData", canBeAnything); - let importAttributes = getFlag(options, keys2, "with", mustBeObject); - checkForInvalidFlags(options, keys2, "in resolve() call"); - return new Promise((resolve2, reject) => { - const request = { - command: "resolve", - path: path3, - key: buildKey, - pluginName: name - }; - if (pluginName != null) request.pluginName = pluginName; - if (importer != null) request.importer = importer; - if (namespace != null) request.namespace = namespace; - if (resolveDir != null) request.resolveDir = resolveDir; - if (kind != null) request.kind = kind; - else throw new Error(`Must specify "kind" when calling "resolve"`); - if (pluginData != null) request.pluginData = details.store(pluginData); - if (importAttributes != null) request.with = sanitizeStringMap(importAttributes, "with"); - sendRequest(refs, request, (error, response) => { - if (error !== null) reject(new Error(error)); - else resolve2({ - errors: replaceDetailsInMessages(response.errors, details), - warnings: replaceDetailsInMessages(response.warnings, details), - path: response.path, - external: response.external, - sideEffects: response.sideEffects, - namespace: response.namespace, - suffix: response.suffix, - pluginData: details.load(response.pluginData) - }); - }); - }); - }; - let promise = setup({ - initialOptions, - resolve, - onStart(callback) { - let registeredText = `This error came from the "onStart" callback registered here:`; - let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onStart"); - onStartCallbacks.push({ name, callback, note: registeredNote }); - plugin.onStart = true; - }, - onEnd(callback) { - let registeredText = `This error came from the "onEnd" callback registered here:`; - let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onEnd"); - onEndCallbacks.push({ name, callback, note: registeredNote }); - plugin.onEnd = true; - }, - onResolve(options, callback) { - let registeredText = `This error came from the "onResolve" callback registered here:`; - let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onResolve"); - let keys2 = {}; - let filter = getFlag(options, keys2, "filter", mustBeRegExp); - let namespace = getFlag(options, keys2, "namespace", mustBeString); - checkForInvalidFlags(options, keys2, `in onResolve() call for plugin ${quote(name)}`); - if (filter == null) throw new Error(`onResolve() call is missing a filter`); - let id = nextCallbackID++; - onResolveCallbacks[id] = { name, callback, note: registeredNote }; - plugin.onResolve.push({ id, filter: jsRegExpToGoRegExp(filter), namespace: namespace || "" }); - }, - onLoad(options, callback) { - let registeredText = `This error came from the "onLoad" callback registered here:`; - let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onLoad"); - let keys2 = {}; - let filter = getFlag(options, keys2, "filter", mustBeRegExp); - let namespace = getFlag(options, keys2, "namespace", mustBeString); - checkForInvalidFlags(options, keys2, `in onLoad() call for plugin ${quote(name)}`); - if (filter == null) throw new Error(`onLoad() call is missing a filter`); - let id = nextCallbackID++; - onLoadCallbacks[id] = { name, callback, note: registeredNote }; - plugin.onLoad.push({ id, filter: jsRegExpToGoRegExp(filter), namespace: namespace || "" }); - }, - onDispose(callback) { - onDisposeCallbacks.push(callback); - }, - esbuild: streamIn.esbuild - }); - if (promise) await promise; - requestPlugins.push(plugin); - } catch (e) { - return { ok: false, error: e, pluginName: name }; - } - } - requestCallbacks["on-start"] = async (id, request) => { - details.clear(); - let response = { errors: [], warnings: [] }; - await Promise.all(onStartCallbacks.map(async ({ name, callback, note }) => { - try { - let result = await callback(); - if (result != null) { - if (typeof result !== "object") throw new Error(`Expected onStart() callback in plugin ${quote(name)} to return an object`); - let keys = {}; - let errors = getFlag(result, keys, "errors", mustBeArray); - let warnings = getFlag(result, keys, "warnings", mustBeArray); - checkForInvalidFlags(result, keys, `from onStart() callback in plugin ${quote(name)}`); - if (errors != null) response.errors.push(...sanitizeMessages(errors, "errors", details, name, void 0)); - if (warnings != null) response.warnings.push(...sanitizeMessages(warnings, "warnings", details, name, void 0)); - } - } catch (e) { - response.errors.push(extractErrorMessageV8(e, streamIn, details, note && note(), name)); - } - })); - sendResponse(id, response); - }; - requestCallbacks["on-resolve"] = async (id, request) => { - let response = {}, name = "", callback, note; - for (let id2 of request.ids) { - try { - ({ name, callback, note } = onResolveCallbacks[id2]); - let result = await callback({ - path: request.path, - importer: request.importer, - namespace: request.namespace, - resolveDir: request.resolveDir, - kind: request.kind, - pluginData: details.load(request.pluginData), - with: request.with - }); - if (result != null) { - if (typeof result !== "object") throw new Error(`Expected onResolve() callback in plugin ${quote(name)} to return an object`); - let keys = {}; - let pluginName = getFlag(result, keys, "pluginName", mustBeString); - let path3 = getFlag(result, keys, "path", mustBeString); - let namespace = getFlag(result, keys, "namespace", mustBeString); - let suffix = getFlag(result, keys, "suffix", mustBeString); - let external = getFlag(result, keys, "external", mustBeBoolean); - let sideEffects = getFlag(result, keys, "sideEffects", mustBeBoolean); - let pluginData = getFlag(result, keys, "pluginData", canBeAnything); - let errors = getFlag(result, keys, "errors", mustBeArray); - let warnings = getFlag(result, keys, "warnings", mustBeArray); - let watchFiles = getFlag(result, keys, "watchFiles", mustBeArrayOfStrings); - let watchDirs = getFlag(result, keys, "watchDirs", mustBeArrayOfStrings); - checkForInvalidFlags(result, keys, `from onResolve() callback in plugin ${quote(name)}`); - response.id = id2; - if (pluginName != null) response.pluginName = pluginName; - if (path3 != null) response.path = path3; - if (namespace != null) response.namespace = namespace; - if (suffix != null) response.suffix = suffix; - if (external != null) response.external = external; - if (sideEffects != null) response.sideEffects = sideEffects; - if (pluginData != null) response.pluginData = details.store(pluginData); - if (errors != null) response.errors = sanitizeMessages(errors, "errors", details, name, void 0); - if (warnings != null) response.warnings = sanitizeMessages(warnings, "warnings", details, name, void 0); - if (watchFiles != null) response.watchFiles = sanitizeStringArray(watchFiles, "watchFiles"); - if (watchDirs != null) response.watchDirs = sanitizeStringArray(watchDirs, "watchDirs"); - break; - } - } catch (e) { - response = { id: id2, errors: [extractErrorMessageV8(e, streamIn, details, note && note(), name)] }; - break; - } - } - sendResponse(id, response); - }; - requestCallbacks["on-load"] = async (id, request) => { - let response = {}, name = "", callback, note; - for (let id2 of request.ids) { - try { - ({ name, callback, note } = onLoadCallbacks[id2]); - let result = await callback({ - path: request.path, - namespace: request.namespace, - suffix: request.suffix, - pluginData: details.load(request.pluginData), - with: request.with - }); - if (result != null) { - if (typeof result !== "object") throw new Error(`Expected onLoad() callback in plugin ${quote(name)} to return an object`); - let keys = {}; - let pluginName = getFlag(result, keys, "pluginName", mustBeString); - let contents = getFlag(result, keys, "contents", mustBeStringOrUint8Array); - let resolveDir = getFlag(result, keys, "resolveDir", mustBeString); - let pluginData = getFlag(result, keys, "pluginData", canBeAnything); - let loader = getFlag(result, keys, "loader", mustBeString); - let errors = getFlag(result, keys, "errors", mustBeArray); - let warnings = getFlag(result, keys, "warnings", mustBeArray); - let watchFiles = getFlag(result, keys, "watchFiles", mustBeArrayOfStrings); - let watchDirs = getFlag(result, keys, "watchDirs", mustBeArrayOfStrings); - checkForInvalidFlags(result, keys, `from onLoad() callback in plugin ${quote(name)}`); - response.id = id2; - if (pluginName != null) response.pluginName = pluginName; - if (contents instanceof Uint8Array) response.contents = contents; - else if (contents != null) response.contents = encodeUTF8(contents); - if (resolveDir != null) response.resolveDir = resolveDir; - if (pluginData != null) response.pluginData = details.store(pluginData); - if (loader != null) response.loader = loader; - if (errors != null) response.errors = sanitizeMessages(errors, "errors", details, name, void 0); - if (warnings != null) response.warnings = sanitizeMessages(warnings, "warnings", details, name, void 0); - if (watchFiles != null) response.watchFiles = sanitizeStringArray(watchFiles, "watchFiles"); - if (watchDirs != null) response.watchDirs = sanitizeStringArray(watchDirs, "watchDirs"); - break; - } - } catch (e) { - response = { id: id2, errors: [extractErrorMessageV8(e, streamIn, details, note && note(), name)] }; - break; - } - } - sendResponse(id, response); - }; - let runOnEndCallbacks = (result, done) => done([], []); - if (onEndCallbacks.length > 0) { - runOnEndCallbacks = (result, done) => { - (async () => { - const onEndErrors = []; - const onEndWarnings = []; - for (const { name, callback, note } of onEndCallbacks) { - let newErrors; - let newWarnings; - try { - const value = await callback(result); - if (value != null) { - if (typeof value !== "object") throw new Error(`Expected onEnd() callback in plugin ${quote(name)} to return an object`); - let keys = {}; - let errors = getFlag(value, keys, "errors", mustBeArray); - let warnings = getFlag(value, keys, "warnings", mustBeArray); - checkForInvalidFlags(value, keys, `from onEnd() callback in plugin ${quote(name)}`); - if (errors != null) newErrors = sanitizeMessages(errors, "errors", details, name, void 0); - if (warnings != null) newWarnings = sanitizeMessages(warnings, "warnings", details, name, void 0); - } - } catch (e) { - newErrors = [extractErrorMessageV8(e, streamIn, details, note && note(), name)]; - } - if (newErrors) { - onEndErrors.push(...newErrors); - try { - result.errors.push(...newErrors); - } catch { - } - } - if (newWarnings) { - onEndWarnings.push(...newWarnings); - try { - result.warnings.push(...newWarnings); - } catch { - } - } - } - done(onEndErrors, onEndWarnings); - })(); - }; - } - let scheduleOnDisposeCallbacks = () => { - for (const cb of onDisposeCallbacks) { - setTimeout(() => cb(), 0); - } - }; - isSetupDone = true; - return { - ok: true, - requestPlugins, - runOnEndCallbacks, - scheduleOnDisposeCallbacks - }; - }; - function createObjectStash() { - const map = /* @__PURE__ */ new Map(); - let nextID = 0; - return { - clear() { - map.clear(); - }, - load(id) { - return map.get(id); - }, - store(value) { - if (value === void 0) return -1; - const id = nextID++; - map.set(id, value); - return id; - } - }; - } - function extractCallerV8(e, streamIn, ident) { - let note; - let tried = false; - return () => { - if (tried) return note; - tried = true; - try { - let lines = (e.stack + "").split("\n"); - lines.splice(1, 1); - let location = parseStackLinesV8(streamIn, lines, ident); - if (location) { - note = { text: e.message, location }; - return note; - } - } catch { - } - }; - } - function extractErrorMessageV8(e, streamIn, stash, note, pluginName) { - let text = "Internal error"; - let location = null; - try { - text = (e && e.message || e) + ""; - } catch { - } - try { - location = parseStackLinesV8(streamIn, (e.stack + "").split("\n"), ""); - } catch { - } - return { id: "", pluginName, text, location, notes: note ? [note] : [], detail: stash ? stash.store(e) : -1 }; - } - function parseStackLinesV8(streamIn, lines, ident) { - let at = " at "; - if (streamIn.readFileSync && !lines[0].startsWith(at) && lines[1].startsWith(at)) { - for (let i = 1; i < lines.length; i++) { - let line = lines[i]; - if (!line.startsWith(at)) continue; - line = line.slice(at.length); - while (true) { - let match = /^(?:new |async )?\S+ \((.*)\)$/.exec(line); - if (match) { - line = match[1]; - continue; - } - match = /^eval at \S+ \((.*)\)(?:, \S+:\d+:\d+)?$/.exec(line); - if (match) { - line = match[1]; - continue; - } - match = /^(\S+):(\d+):(\d+)$/.exec(line); - if (match) { - let contents; - try { - contents = streamIn.readFileSync(match[1], "utf8"); - } catch { - break; - } - let lineText = contents.split(/\r\n|\r|\n|\u2028|\u2029/)[+match[2] - 1] || ""; - let column = +match[3] - 1; - let length = lineText.slice(column, column + ident.length) === ident ? ident.length : 0; - return { - file: match[1], - namespace: "file", - line: +match[2], - column: encodeUTF8(lineText.slice(0, column)).length, - length: encodeUTF8(lineText.slice(column, column + length)).length, - lineText: lineText + "\n" + lines.slice(1).join("\n"), - suggestion: "" - }; - } - break; - } - } - } - return null; - } - function failureErrorWithLog(text, errors, warnings) { - let limit = 5; - text += errors.length < 1 ? "" : ` with ${errors.length} error${errors.length < 2 ? "" : "s"}:` + errors.slice(0, limit + 1).map((e, i) => { - if (i === limit) return "\n..."; - if (!e.location) return ` -error: ${e.text}`; - let { file, line, column } = e.location; - let pluginText = e.pluginName ? `[plugin: ${e.pluginName}] ` : ""; - return ` -${file}:${line}:${column}: ERROR: ${pluginText}${e.text}`; - }).join(""); - let error = new Error(text); - for (const [key, value] of [["errors", errors], ["warnings", warnings]]) { - Object.defineProperty(error, key, { - configurable: true, - enumerable: true, - get: () => value, - set: (value2) => Object.defineProperty(error, key, { - configurable: true, - enumerable: true, - value: value2 - }) - }); - } - return error; - } - function replaceDetailsInMessages(messages, stash) { - for (const message of messages) { - message.detail = stash.load(message.detail); - } - return messages; - } - function sanitizeLocation(location, where, terminalWidth) { - if (location == null) return null; - let keys = {}; - let file = getFlag(location, keys, "file", mustBeString); - let namespace = getFlag(location, keys, "namespace", mustBeString); - let line = getFlag(location, keys, "line", mustBeInteger); - let column = getFlag(location, keys, "column", mustBeInteger); - let length = getFlag(location, keys, "length", mustBeInteger); - let lineText = getFlag(location, keys, "lineText", mustBeString); - let suggestion = getFlag(location, keys, "suggestion", mustBeString); - checkForInvalidFlags(location, keys, where); - if (lineText) { - const relevantASCII = lineText.slice( - 0, - (column && column > 0 ? column : 0) + (length && length > 0 ? length : 0) + (terminalWidth && terminalWidth > 0 ? terminalWidth : 80) - ); - if (!/[\x7F-\uFFFF]/.test(relevantASCII) && !/\n/.test(lineText)) { - lineText = relevantASCII; - } - } - return { - file: file || "", - namespace: namespace || "", - line: line || 0, - column: column || 0, - length: length || 0, - lineText: lineText || "", - suggestion: suggestion || "" - }; - } - function sanitizeMessages(messages, property, stash, fallbackPluginName, terminalWidth) { - let messagesClone = []; - let index = 0; - for (const message of messages) { - let keys = {}; - let id = getFlag(message, keys, "id", mustBeString); - let pluginName = getFlag(message, keys, "pluginName", mustBeString); - let text = getFlag(message, keys, "text", mustBeString); - let location = getFlag(message, keys, "location", mustBeObjectOrNull); - let notes = getFlag(message, keys, "notes", mustBeArray); - let detail = getFlag(message, keys, "detail", canBeAnything); - let where = `in element ${index} of "${property}"`; - checkForInvalidFlags(message, keys, where); - let notesClone = []; - if (notes) { - for (const note of notes) { - let noteKeys = {}; - let noteText = getFlag(note, noteKeys, "text", mustBeString); - let noteLocation = getFlag(note, noteKeys, "location", mustBeObjectOrNull); - checkForInvalidFlags(note, noteKeys, where); - notesClone.push({ - text: noteText || "", - location: sanitizeLocation(noteLocation, where, terminalWidth) - }); - } - } - messagesClone.push({ - id: id || "", - pluginName: pluginName || fallbackPluginName, - text: text || "", - location: sanitizeLocation(location, where, terminalWidth), - notes: notesClone, - detail: stash ? stash.store(detail) : -1 - }); - index++; - } - return messagesClone; - } - function sanitizeStringArray(values, property) { - const result = []; - for (const value of values) { - if (typeof value !== "string") throw new Error(`${quote(property)} must be an array of strings`); - result.push(value); - } - return result; - } - function sanitizeStringMap(map, property) { - const result = /* @__PURE__ */ Object.create(null); - for (const key in map) { - const value = map[key]; - if (typeof value !== "string") throw new Error(`key ${quote(key)} in object ${quote(property)} must be a string`); - result[key] = value; - } - return result; - } - function convertOutputFiles({ path: path3, contents, hash }) { - let text = null; - return { - path: path3, - contents, - hash, - get text() { - const binary = this.contents; - if (text === null || binary !== contents) { - contents = binary; - text = decodeUTF8(binary); - } - return text; - } - }; - } - function jsRegExpToGoRegExp(regexp) { - let result = regexp.source; - if (regexp.flags) result = `(?${regexp.flags})${result}`; - return result; - } - var fs = require_fs(); - var os = require_os(); - var path = require_path(); - var ESBUILD_BINARY_PATH = process.env.ESBUILD_BINARY_PATH || ESBUILD_BINARY_PATH; - var isValidBinaryPath = (x) => !!x && x !== "/usr/bin/esbuild"; - var packageDarwin_arm64 = "@esbuild/darwin-arm64"; - var packageDarwin_x64 = "@esbuild/darwin-x64"; - var knownWindowsPackages = { - "win32 arm64 LE": "@esbuild/win32-arm64", - "win32 ia32 LE": "@esbuild/win32-ia32", - "win32 x64 LE": "@esbuild/win32-x64" - }; - var knownUnixlikePackages = { - "aix ppc64 BE": "@esbuild/aix-ppc64", - "android arm64 LE": "@esbuild/android-arm64", - "darwin arm64 LE": "@esbuild/darwin-arm64", - "darwin x64 LE": "@esbuild/darwin-x64", - "freebsd arm64 LE": "@esbuild/freebsd-arm64", - "freebsd x64 LE": "@esbuild/freebsd-x64", - "linux arm LE": "@esbuild/linux-arm", - "linux arm64 LE": "@esbuild/linux-arm64", - "linux ia32 LE": "@esbuild/linux-ia32", - "linux mips64el LE": "@esbuild/linux-mips64el", - "linux ppc64 LE": "@esbuild/linux-ppc64", - "linux riscv64 LE": "@esbuild/linux-riscv64", - "linux s390x BE": "@esbuild/linux-s390x", - "linux x64 LE": "@esbuild/linux-x64", - "linux loong64 LE": "@esbuild/linux-loong64", - "netbsd arm64 LE": "@esbuild/netbsd-arm64", - "netbsd x64 LE": "@esbuild/netbsd-x64", - "openbsd arm64 LE": "@esbuild/openbsd-arm64", - "openbsd x64 LE": "@esbuild/openbsd-x64", - "sunos x64 LE": "@esbuild/sunos-x64" - }; - var knownWebAssemblyFallbackPackages = { - "android arm LE": "@esbuild/android-arm", - "android x64 LE": "@esbuild/android-x64", - "openharmony arm64 LE": "@esbuild/openharmony-arm64" - }; - function pkgAndSubpathForCurrentPlatform() { - let pkg; - let subpath; - let isWASM = false; - let platformKey = `${process.platform} ${os.arch()} ${os.endianness()}`; - if (platformKey in knownWindowsPackages) { - pkg = knownWindowsPackages[platformKey]; - subpath = "esbuild.exe"; - } else if (platformKey in knownUnixlikePackages) { - pkg = knownUnixlikePackages[platformKey]; - subpath = "bin/esbuild"; - } else if (platformKey in knownWebAssemblyFallbackPackages) { - pkg = knownWebAssemblyFallbackPackages[platformKey]; - subpath = "bin/esbuild"; - isWASM = true; - } else { - throw new Error(`Unsupported platform: ${platformKey}`); - } - return { pkg, subpath, isWASM }; - } - function pkgForSomeOtherPlatform() { - const libMainJS = __require.resolve("esbuild"); - const nodeModulesDirectory = path.dirname(path.dirname(path.dirname(libMainJS))); - if (path.basename(nodeModulesDirectory) === "node_modules") { - for (const unixKey in knownUnixlikePackages) { - try { - const pkg = knownUnixlikePackages[unixKey]; - if (fs.existsSync(path.join(nodeModulesDirectory, pkg))) return pkg; - } catch { - } - } - for (const windowsKey in knownWindowsPackages) { - try { - const pkg = knownWindowsPackages[windowsKey]; - if (fs.existsSync(path.join(nodeModulesDirectory, pkg))) return pkg; - } catch { - } - } - } - return null; - } - function downloadedBinPath(pkg, subpath) { - const esbuildLibDir = path.dirname(__require.resolve("esbuild")); - return path.join(esbuildLibDir, `downloaded-${pkg.replace("/", "-")}-${path.basename(subpath)}`); - } - function generateBinPath() { - if (isValidBinaryPath(ESBUILD_BINARY_PATH)) { - if (!fs.existsSync(ESBUILD_BINARY_PATH)) { - console.warn(`[esbuild] Ignoring bad configuration: ESBUILD_BINARY_PATH=${ESBUILD_BINARY_PATH}`); - } else { - return { binPath: ESBUILD_BINARY_PATH, isWASM: false }; - } - } - const { pkg, subpath, isWASM } = pkgAndSubpathForCurrentPlatform(); - let binPath; - try { - binPath = __require.resolve(`${pkg}/${subpath}`); - } catch (e) { - binPath = downloadedBinPath(pkg, subpath); - if (!fs.existsSync(binPath)) { - try { - __require.resolve(pkg); - } catch { - const otherPkg = pkgForSomeOtherPlatform(); - if (otherPkg) { - let suggestions = ` -Specifically the "${otherPkg}" package is present but this platform -needs the "${pkg}" package instead. People often get into this -situation by installing esbuild on Windows or macOS and copying "node_modules" -into a Docker image that runs Linux, or by copying "node_modules" between -Windows and WSL environments. - -If you are installing with npm, you can try not copying the "node_modules" -directory when you copy the files over, and running "npm ci" or "npm install" -on the destination platform after the copy. Or you could consider using yarn -instead of npm which has built-in support for installing a package on multiple -platforms simultaneously. - -If you are installing with yarn, you can try listing both this platform and the -other platform in your ".yarnrc.yml" file using the "supportedArchitectures" -feature: https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures -Keep in mind that this means multiple copies of esbuild will be present. -`; - if (pkg === packageDarwin_x64 && otherPkg === packageDarwin_arm64 || pkg === packageDarwin_arm64 && otherPkg === packageDarwin_x64) { - suggestions = ` -Specifically the "${otherPkg}" package is present but this platform -needs the "${pkg}" package instead. People often get into this -situation by installing esbuild with npm running inside of Rosetta 2 and then -trying to use it with node running outside of Rosetta 2, or vice versa (Rosetta -2 is Apple's on-the-fly x86_64-to-arm64 translation service). - -If you are installing with npm, you can try ensuring that both npm and node are -not running under Rosetta 2 and then reinstalling esbuild. This likely involves -changing how you installed npm and/or node. For example, installing node with -the universal installer here should work: https://nodejs.org/en/download/. Or -you could consider using yarn instead of npm which has built-in support for -installing a package on multiple platforms simultaneously. - -If you are installing with yarn, you can try listing both "arm64" and "x64" -in your ".yarnrc.yml" file using the "supportedArchitectures" feature: -https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures -Keep in mind that this means multiple copies of esbuild will be present. -`; - } - throw new Error(` -You installed esbuild for another platform than the one you're currently using. -This won't work because esbuild is written with native code and needs to -install a platform-specific binary executable. -${suggestions} -Another alternative is to use the "esbuild-wasm" package instead, which works -the same way on all platforms. But it comes with a heavy performance cost and -can sometimes be 10x slower than the "esbuild" package, so you may also not -want to do that. -`); - } - throw new Error(`The package "${pkg}" could not be found, and is needed by esbuild. - -If you are installing esbuild with npm, make sure that you don't specify the -"--no-optional" or "--omit=optional" flags. The "optionalDependencies" feature -of "package.json" is used by esbuild to install the correct binary executable -for your current platform.`); - } - throw e; - } - } - if (/\.zip\//.test(binPath)) { - let pnpapi; - try { - pnpapi = __require("pnpapi"); - } catch (e) { - } - if (pnpapi) { - const root = pnpapi.getPackageInformation(pnpapi.topLevel).packageLocation; - const binTargetPath = path.join( - root, - "node_modules", - ".cache", - "esbuild", - `pnpapi-${pkg.replace("/", "-")}-${"0.25.12"}-${path.basename(subpath)}` - ); - if (!fs.existsSync(binTargetPath)) { - fs.mkdirSync(path.dirname(binTargetPath), { recursive: true }); - fs.copyFileSync(binPath, binTargetPath); - fs.chmodSync(binTargetPath, 493); - } - return { binPath: binTargetPath, isWASM }; - } - } - return { binPath, isWASM }; - } - var child_process = require_child_process(); - var crypto = require_crypto(); - var path2 = require_path(); - var fs2 = require_fs(); - var os2 = require_os(); - var tty = require_tty(); - var worker_threads; - if (process.env.ESBUILD_WORKER_THREADS !== "0") { - try { - worker_threads = require_worker_threads(); - } catch { - } - let [major, minor] = process.versions.node.split("."); - if ( - // { - if ((!ESBUILD_BINARY_PATH || false) && (path2.basename(__filename) !== "main.js" || path2.basename(__dirname) !== "lib")) { - throw new Error( - `The esbuild JavaScript API cannot be bundled. Please mark the "esbuild" package as external so it's not included in the bundle. - -More information: The file containing the code for esbuild's JavaScript API (${__filename}) does not appear to be inside the esbuild package on the file system, which usually means that the esbuild package was bundled into another file. This is problematic because the API needs to run a binary executable inside the esbuild package which is located using a relative path from the API code to the executable. If the esbuild package is bundled, the relative path will be incorrect and the executable won't be found.` - ); - } - if (false) { - return ["node", [path2.join(__dirname, "..", "bin", "esbuild")]]; - } else { - const { binPath, isWASM } = generateBinPath(); - if (isWASM) { - return ["node", [binPath]]; - } else { - return [binPath, []]; - } - } - }; - var isTTY = () => tty.isatty(2); - var fsSync = { - readFile(tempFile, callback) { - try { - let contents = fs2.readFileSync(tempFile, "utf8"); - try { - fs2.unlinkSync(tempFile); - } catch { - } - callback(null, contents); - } catch (err) { - callback(err, null); - } - }, - writeFile(contents, callback) { - try { - let tempFile = randomFileName(); - fs2.writeFileSync(tempFile, contents); - callback(tempFile); - } catch { - callback(null); - } - } - }; - var fsAsync = { - readFile(tempFile, callback) { - try { - fs2.readFile(tempFile, "utf8", (err, contents) => { - try { - fs2.unlink(tempFile, () => callback(err, contents)); - } catch { - callback(err, contents); - } - }); - } catch (err) { - callback(err, null); - } - }, - writeFile(contents, callback) { - try { - let tempFile = randomFileName(); - fs2.writeFile(tempFile, contents, (err) => err !== null ? callback(null) : callback(tempFile)); - } catch { - callback(null); - } - } - }; - var version = "0.25.12"; - var build = (options) => ensureServiceIsRunning().build(options); - var context = (buildOptions) => ensureServiceIsRunning().context(buildOptions); - var transform = (input, options) => ensureServiceIsRunning().transform(input, options); - var formatMessages = (messages, options) => ensureServiceIsRunning().formatMessages(messages, options); - var analyzeMetafile = (messages, options) => ensureServiceIsRunning().analyzeMetafile(messages, options); - var buildSync = (options) => { - if (worker_threads && !isInternalWorkerThread) { - if (!workerThreadService) workerThreadService = startWorkerThreadService(worker_threads); - return workerThreadService.buildSync(options); - } - let result; - runServiceSync((service) => service.buildOrContext({ - callName: "buildSync", - refs: null, - options, - isTTY: isTTY(), - defaultWD, - callback: (err, res) => { - if (err) throw err; - result = res; - } - })); - return result; - }; - var transformSync = (input, options) => { - if (worker_threads && !isInternalWorkerThread) { - if (!workerThreadService) workerThreadService = startWorkerThreadService(worker_threads); - return workerThreadService.transformSync(input, options); - } - let result; - runServiceSync((service) => service.transform({ - callName: "transformSync", - refs: null, - input, - options: options || {}, - isTTY: isTTY(), - fs: fsSync, - callback: (err, res) => { - if (err) throw err; - result = res; - } - })); - return result; - }; - var formatMessagesSync = (messages, options) => { - if (worker_threads && !isInternalWorkerThread) { - if (!workerThreadService) workerThreadService = startWorkerThreadService(worker_threads); - return workerThreadService.formatMessagesSync(messages, options); - } - let result; - runServiceSync((service) => service.formatMessages({ - callName: "formatMessagesSync", - refs: null, - messages, - options, - callback: (err, res) => { - if (err) throw err; - result = res; - } - })); - return result; - }; - var analyzeMetafileSync = (metafile, options) => { - if (worker_threads && !isInternalWorkerThread) { - if (!workerThreadService) workerThreadService = startWorkerThreadService(worker_threads); - return workerThreadService.analyzeMetafileSync(metafile, options); - } - let result; - runServiceSync((service) => service.analyzeMetafile({ - callName: "analyzeMetafileSync", - refs: null, - metafile: typeof metafile === "string" ? metafile : JSON.stringify(metafile), - options, - callback: (err, res) => { - if (err) throw err; - result = res; - } - })); - return result; - }; - var stop = () => { - if (stopService) stopService(); - if (workerThreadService) workerThreadService.stop(); - return Promise.resolve(); - }; - var initializeWasCalled = false; - var initialize = (options) => { - options = validateInitializeOptions(options || {}); - if (options.wasmURL) throw new Error(`The "wasmURL" option only works in the browser`); - if (options.wasmModule) throw new Error(`The "wasmModule" option only works in the browser`); - if (options.worker) throw new Error(`The "worker" option only works in the browser`); - if (initializeWasCalled) throw new Error('Cannot call "initialize" more than once'); - ensureServiceIsRunning(); - initializeWasCalled = true; - return Promise.resolve(); - }; - var defaultWD = process.cwd(); - var longLivedService; - var stopService; - var ensureServiceIsRunning = () => { - if (longLivedService) return longLivedService; - let [command, args] = esbuildCommandAndArgs(); - let child = child_process.spawn(command, args.concat(`--service=${"0.25.12"}`, "--ping"), { - windowsHide: true, - stdio: ["pipe", "pipe", "inherit"], - cwd: defaultWD - }); - let { readFromStdout, afterClose, service } = createChannel({ - writeToStdin(bytes) { - child.stdin.write(bytes, (err) => { - if (err) afterClose(err); - }); - }, - readFileSync: fs2.readFileSync, - isSync: false, - hasFS: true, - esbuild: node_exports - }); - child.stdin.on("error", afterClose); - child.on("error", afterClose); - const stdin = child.stdin; - const stdout = child.stdout; - stdout.on("data", readFromStdout); - stdout.on("end", afterClose); - stopService = () => { - stdin.destroy(); - stdout.destroy(); - child.kill(); - initializeWasCalled = false; - longLivedService = void 0; - stopService = void 0; - }; - let refCount = 0; - child.unref(); - if (stdin.unref) { - stdin.unref(); - } - if (stdout.unref) { - stdout.unref(); - } - const refs = { - ref() { - if (++refCount === 1) child.ref(); - }, - unref() { - if (--refCount === 0) child.unref(); - } - }; - longLivedService = { - build: (options) => new Promise((resolve, reject) => { - service.buildOrContext({ - callName: "build", - refs, - options, - isTTY: isTTY(), - defaultWD, - callback: (err, res) => err ? reject(err) : resolve(res) - }); - }), - context: (options) => new Promise((resolve, reject) => service.buildOrContext({ - callName: "context", - refs, - options, - isTTY: isTTY(), - defaultWD, - callback: (err, res) => err ? reject(err) : resolve(res) - })), - transform: (input, options) => new Promise((resolve, reject) => service.transform({ - callName: "transform", - refs, - input, - options: options || {}, - isTTY: isTTY(), - fs: fsAsync, - callback: (err, res) => err ? reject(err) : resolve(res) - })), - formatMessages: (messages, options) => new Promise((resolve, reject) => service.formatMessages({ - callName: "formatMessages", - refs, - messages, - options, - callback: (err, res) => err ? reject(err) : resolve(res) - })), - analyzeMetafile: (metafile, options) => new Promise((resolve, reject) => service.analyzeMetafile({ - callName: "analyzeMetafile", - refs, - metafile: typeof metafile === "string" ? metafile : JSON.stringify(metafile), - options, - callback: (err, res) => err ? reject(err) : resolve(res) - })) - }; - return longLivedService; - }; - var runServiceSync = (callback) => { - let [command, args] = esbuildCommandAndArgs(); - let stdin = new Uint8Array(); - let { readFromStdout, afterClose, service } = createChannel({ - writeToStdin(bytes) { - if (stdin.length !== 0) throw new Error("Must run at most one command"); - stdin = bytes; - }, - isSync: true, - hasFS: true, - esbuild: node_exports - }); - callback(service); - let stdout = child_process.execFileSync(command, args.concat(`--service=${"0.25.12"}`), { - cwd: defaultWD, - windowsHide: true, - input: stdin, - // We don't know how large the output could be. If it's too large, the - // command will fail with ENOBUFS. Reserve 16mb for now since that feels - // like it should be enough. Also allow overriding this with an environment - // variable. - maxBuffer: +process.env.ESBUILD_MAX_BUFFER || 16 * 1024 * 1024 - }); - readFromStdout(stdout); - afterClose(null); - }; - var randomFileName = () => { - return path2.join(os2.tmpdir(), `esbuild-${crypto.randomBytes(32).toString("hex")}`); - }; - var workerThreadService = null; - var startWorkerThreadService = (worker_threads2) => { - let { port1: mainPort, port2: workerPort } = new worker_threads2.MessageChannel(); - let worker = new worker_threads2.Worker(__filename, { - workerData: { workerPort, defaultWD, esbuildVersion: "0.25.12" }, - transferList: [workerPort], - // From node's documentation: https://nodejs.org/api/worker_threads.html - // - // Take care when launching worker threads from preload scripts (scripts loaded - // and run using the `-r` command line flag). Unless the `execArgv` option is - // explicitly set, new Worker threads automatically inherit the command line flags - // from the running process and will preload the same preload scripts as the main - // thread. If the preload script unconditionally launches a worker thread, every - // thread spawned will spawn another until the application crashes. - // - execArgv: [] - }); - let nextID = 0; - let fakeBuildError = (text) => { - let error = new Error(`Build failed with 1 error: -error: ${text}`); - let errors = [{ id: "", pluginName: "", text, location: null, notes: [], detail: void 0 }]; - error.errors = errors; - error.warnings = []; - return error; - }; - let validateBuildSyncOptions = (options) => { - if (!options) return; - let plugins = options.plugins; - if (plugins && plugins.length > 0) throw fakeBuildError(`Cannot use plugins in synchronous API calls`); - }; - let applyProperties = (object, properties) => { - for (let key in properties) { - object[key] = properties[key]; - } - }; - let runCallSync = (command, args) => { - let id = nextID++; - let sharedBuffer = new SharedArrayBuffer(8); - let sharedBufferView = new Int32Array(sharedBuffer); - let msg = { sharedBuffer, id, command, args }; - worker.postMessage(msg); - let status = Atomics.wait(sharedBufferView, 0, 0); - if (status !== "ok" && status !== "not-equal") throw new Error("Internal error: Atomics.wait() failed: " + status); - let { message: { id: id2, resolve, reject, properties } } = worker_threads2.receiveMessageOnPort(mainPort); - if (id !== id2) throw new Error(`Internal error: Expected id ${id} but got id ${id2}`); - if (reject) { - applyProperties(reject, properties); - throw reject; - } - return resolve; - }; - worker.unref(); - return { - buildSync(options) { - validateBuildSyncOptions(options); - return runCallSync("build", [options]); - }, - transformSync(input, options) { - return runCallSync("transform", [input, options]); - }, - formatMessagesSync(messages, options) { - return runCallSync("formatMessages", [messages, options]); - }, - analyzeMetafileSync(metafile, options) { - return runCallSync("analyzeMetafile", [metafile, options]); - }, - stop() { - worker.terminate(); - workerThreadService = null; - } - }; - }; - var startSyncServiceWorker = () => { - let workerPort = worker_threads.workerData.workerPort; - let parentPort = worker_threads.parentPort; - let extractProperties = (object) => { - let properties = {}; - if (object && typeof object === "object") { - for (let key in object) { - properties[key] = object[key]; - } - } - return properties; - }; - try { - let service = ensureServiceIsRunning(); - defaultWD = worker_threads.workerData.defaultWD; - parentPort.on("message", (msg) => { - (async () => { - let { sharedBuffer, id, command, args } = msg; - let sharedBufferView = new Int32Array(sharedBuffer); - try { - switch (command) { - case "build": - workerPort.postMessage({ id, resolve: await service.build(args[0]) }); - break; - case "transform": - workerPort.postMessage({ id, resolve: await service.transform(args[0], args[1]) }); - break; - case "formatMessages": - workerPort.postMessage({ id, resolve: await service.formatMessages(args[0], args[1]) }); - break; - case "analyzeMetafile": - workerPort.postMessage({ id, resolve: await service.analyzeMetafile(args[0], args[1]) }); - break; - default: - throw new Error(`Invalid command: ${command}`); - } - } catch (reject) { - workerPort.postMessage({ id, reject, properties: extractProperties(reject) }); - } - Atomics.add(sharedBufferView, 0, 1); - Atomics.notify(sharedBufferView, 0, Infinity); - })(); - }); - } catch (reject) { - parentPort.on("message", (msg) => { - let { sharedBuffer, id } = msg; - let sharedBufferView = new Int32Array(sharedBuffer); - workerPort.postMessage({ id, reject, properties: extractProperties(reject) }); - Atomics.add(sharedBufferView, 0, 1); - Atomics.notify(sharedBufferView, 0, Infinity); - }); - } - }; - if (isInternalWorkerThread) { - startSyncServiceWorker(); - } - var node_default = node_exports; - } -}); -export default require_main(); -//# sourceMappingURL=esbuild.js.map diff --git a/node_modules/.vite/deps/esbuild.js.map b/node_modules/.vite/deps/esbuild.js.map deleted file mode 100644 index 17e669d..0000000 --- a/node_modules/.vite/deps/esbuild.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["browser-external:fs", "browser-external:os", "browser-external:path", "browser-external:child_process", "browser-external:crypto", "browser-external:tty", "browser-external:worker_threads", "../../esbuild/lib/main.js"], - "sourcesContent": ["module.exports = Object.create(new Proxy({}, {\n get(_, key) {\n if (\n key !== '__esModule' &&\n key !== '__proto__' &&\n key !== 'constructor' &&\n key !== 'splice'\n ) {\n console.warn(`Module \"fs\" has been externalized for browser compatibility. Cannot access \"fs.${key}\" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`)\n }\n }\n}))", "module.exports = Object.create(new Proxy({}, {\n get(_, key) {\n if (\n key !== '__esModule' &&\n key !== '__proto__' &&\n key !== 'constructor' &&\n key !== 'splice'\n ) {\n console.warn(`Module \"os\" has been externalized for browser compatibility. Cannot access \"os.${key}\" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`)\n }\n }\n}))", "module.exports = Object.create(new Proxy({}, {\n get(_, key) {\n if (\n key !== '__esModule' &&\n key !== '__proto__' &&\n key !== 'constructor' &&\n key !== 'splice'\n ) {\n console.warn(`Module \"path\" has been externalized for browser compatibility. Cannot access \"path.${key}\" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`)\n }\n }\n}))", "module.exports = Object.create(new Proxy({}, {\n get(_, key) {\n if (\n key !== '__esModule' &&\n key !== '__proto__' &&\n key !== 'constructor' &&\n key !== 'splice'\n ) {\n console.warn(`Module \"child_process\" has been externalized for browser compatibility. Cannot access \"child_process.${key}\" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`)\n }\n }\n}))", "module.exports = Object.create(new Proxy({}, {\n get(_, key) {\n if (\n key !== '__esModule' &&\n key !== '__proto__' &&\n key !== 'constructor' &&\n key !== 'splice'\n ) {\n console.warn(`Module \"crypto\" has been externalized for browser compatibility. Cannot access \"crypto.${key}\" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`)\n }\n }\n}))", "module.exports = Object.create(new Proxy({}, {\n get(_, key) {\n if (\n key !== '__esModule' &&\n key !== '__proto__' &&\n key !== 'constructor' &&\n key !== 'splice'\n ) {\n console.warn(`Module \"tty\" has been externalized for browser compatibility. Cannot access \"tty.${key}\" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`)\n }\n }\n}))", "module.exports = Object.create(new Proxy({}, {\n get(_, key) {\n if (\n key !== '__esModule' &&\n key !== '__proto__' &&\n key !== 'constructor' &&\n key !== 'splice'\n ) {\n console.warn(`Module \"worker_threads\" has been externalized for browser compatibility. Cannot access \"worker_threads.${key}\" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`)\n }\n }\n}))", "\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// lib/npm/node.ts\nvar node_exports = {};\n__export(node_exports, {\n analyzeMetafile: () => analyzeMetafile,\n analyzeMetafileSync: () => analyzeMetafileSync,\n build: () => build,\n buildSync: () => buildSync,\n context: () => context,\n default: () => node_default,\n formatMessages: () => formatMessages,\n formatMessagesSync: () => formatMessagesSync,\n initialize: () => initialize,\n stop: () => stop,\n transform: () => transform,\n transformSync: () => transformSync,\n version: () => version\n});\nmodule.exports = __toCommonJS(node_exports);\n\n// lib/shared/stdio_protocol.ts\nfunction encodePacket(packet) {\n let visit = (value) => {\n if (value === null) {\n bb.write8(0);\n } else if (typeof value === \"boolean\") {\n bb.write8(1);\n bb.write8(+value);\n } else if (typeof value === \"number\") {\n bb.write8(2);\n bb.write32(value | 0);\n } else if (typeof value === \"string\") {\n bb.write8(3);\n bb.write(encodeUTF8(value));\n } else if (value instanceof Uint8Array) {\n bb.write8(4);\n bb.write(value);\n } else if (value instanceof Array) {\n bb.write8(5);\n bb.write32(value.length);\n for (let item of value) {\n visit(item);\n }\n } else {\n let keys = Object.keys(value);\n bb.write8(6);\n bb.write32(keys.length);\n for (let key of keys) {\n bb.write(encodeUTF8(key));\n visit(value[key]);\n }\n }\n };\n let bb = new ByteBuffer();\n bb.write32(0);\n bb.write32(packet.id << 1 | +!packet.isRequest);\n visit(packet.value);\n writeUInt32LE(bb.buf, bb.len - 4, 0);\n return bb.buf.subarray(0, bb.len);\n}\nfunction decodePacket(bytes) {\n let visit = () => {\n switch (bb.read8()) {\n case 0:\n return null;\n case 1:\n return !!bb.read8();\n case 2:\n return bb.read32();\n case 3:\n return decodeUTF8(bb.read());\n case 4:\n return bb.read();\n case 5: {\n let count = bb.read32();\n let value2 = [];\n for (let i = 0; i < count; i++) {\n value2.push(visit());\n }\n return value2;\n }\n case 6: {\n let count = bb.read32();\n let value2 = {};\n for (let i = 0; i < count; i++) {\n value2[decodeUTF8(bb.read())] = visit();\n }\n return value2;\n }\n default:\n throw new Error(\"Invalid packet\");\n }\n };\n let bb = new ByteBuffer(bytes);\n let id = bb.read32();\n let isRequest = (id & 1) === 0;\n id >>>= 1;\n let value = visit();\n if (bb.ptr !== bytes.length) {\n throw new Error(\"Invalid packet\");\n }\n return { id, isRequest, value };\n}\nvar ByteBuffer = class {\n constructor(buf = new Uint8Array(1024)) {\n this.buf = buf;\n this.len = 0;\n this.ptr = 0;\n }\n _write(delta) {\n if (this.len + delta > this.buf.length) {\n let clone = new Uint8Array((this.len + delta) * 2);\n clone.set(this.buf);\n this.buf = clone;\n }\n this.len += delta;\n return this.len - delta;\n }\n write8(value) {\n let offset = this._write(1);\n this.buf[offset] = value;\n }\n write32(value) {\n let offset = this._write(4);\n writeUInt32LE(this.buf, value, offset);\n }\n write(bytes) {\n let offset = this._write(4 + bytes.length);\n writeUInt32LE(this.buf, bytes.length, offset);\n this.buf.set(bytes, offset + 4);\n }\n _read(delta) {\n if (this.ptr + delta > this.buf.length) {\n throw new Error(\"Invalid packet\");\n }\n this.ptr += delta;\n return this.ptr - delta;\n }\n read8() {\n return this.buf[this._read(1)];\n }\n read32() {\n return readUInt32LE(this.buf, this._read(4));\n }\n read() {\n let length = this.read32();\n let bytes = new Uint8Array(length);\n let ptr = this._read(bytes.length);\n bytes.set(this.buf.subarray(ptr, ptr + length));\n return bytes;\n }\n};\nvar encodeUTF8;\nvar decodeUTF8;\nvar encodeInvariant;\nif (typeof TextEncoder !== \"undefined\" && typeof TextDecoder !== \"undefined\") {\n let encoder = new TextEncoder();\n let decoder = new TextDecoder();\n encodeUTF8 = (text) => encoder.encode(text);\n decodeUTF8 = (bytes) => decoder.decode(bytes);\n encodeInvariant = 'new TextEncoder().encode(\"\")';\n} else if (typeof Buffer !== \"undefined\") {\n encodeUTF8 = (text) => Buffer.from(text);\n decodeUTF8 = (bytes) => {\n let { buffer, byteOffset, byteLength } = bytes;\n return Buffer.from(buffer, byteOffset, byteLength).toString();\n };\n encodeInvariant = 'Buffer.from(\"\")';\n} else {\n throw new Error(\"No UTF-8 codec found\");\n}\nif (!(encodeUTF8(\"\") instanceof Uint8Array))\n throw new Error(`Invariant violation: \"${encodeInvariant} instanceof Uint8Array\" is incorrectly false\n\nThis indicates that your JavaScript environment is broken. You cannot use\nesbuild in this environment because esbuild relies on this invariant. This\nis not a problem with esbuild. You need to fix your environment instead.\n`);\nfunction readUInt32LE(buffer, offset) {\n return buffer[offset++] | buffer[offset++] << 8 | buffer[offset++] << 16 | buffer[offset++] << 24;\n}\nfunction writeUInt32LE(buffer, value, offset) {\n buffer[offset++] = value;\n buffer[offset++] = value >> 8;\n buffer[offset++] = value >> 16;\n buffer[offset++] = value >> 24;\n}\n\n// lib/shared/common.ts\nvar quote = JSON.stringify;\nvar buildLogLevelDefault = \"warning\";\nvar transformLogLevelDefault = \"silent\";\nfunction validateAndJoinStringArray(values, what) {\n const toJoin = [];\n for (const value of values) {\n validateStringValue(value, what);\n if (value.indexOf(\",\") >= 0) throw new Error(`Invalid ${what}: ${value}`);\n toJoin.push(value);\n }\n return toJoin.join(\",\");\n}\nvar canBeAnything = () => null;\nvar mustBeBoolean = (value) => typeof value === \"boolean\" ? null : \"a boolean\";\nvar mustBeString = (value) => typeof value === \"string\" ? null : \"a string\";\nvar mustBeRegExp = (value) => value instanceof RegExp ? null : \"a RegExp object\";\nvar mustBeInteger = (value) => typeof value === \"number\" && value === (value | 0) ? null : \"an integer\";\nvar mustBeValidPortNumber = (value) => typeof value === \"number\" && value === (value | 0) && value >= 0 && value <= 65535 ? null : \"a valid port number\";\nvar mustBeFunction = (value) => typeof value === \"function\" ? null : \"a function\";\nvar mustBeArray = (value) => Array.isArray(value) ? null : \"an array\";\nvar mustBeArrayOfStrings = (value) => Array.isArray(value) && value.every((x) => typeof x === \"string\") ? null : \"an array of strings\";\nvar mustBeObject = (value) => typeof value === \"object\" && value !== null && !Array.isArray(value) ? null : \"an object\";\nvar mustBeEntryPoints = (value) => typeof value === \"object\" && value !== null ? null : \"an array or an object\";\nvar mustBeWebAssemblyModule = (value) => value instanceof WebAssembly.Module ? null : \"a WebAssembly.Module\";\nvar mustBeObjectOrNull = (value) => typeof value === \"object\" && !Array.isArray(value) ? null : \"an object or null\";\nvar mustBeStringOrBoolean = (value) => typeof value === \"string\" || typeof value === \"boolean\" ? null : \"a string or a boolean\";\nvar mustBeStringOrObject = (value) => typeof value === \"string\" || typeof value === \"object\" && value !== null && !Array.isArray(value) ? null : \"a string or an object\";\nvar mustBeStringOrArrayOfStrings = (value) => typeof value === \"string\" || Array.isArray(value) && value.every((x) => typeof x === \"string\") ? null : \"a string or an array of strings\";\nvar mustBeStringOrUint8Array = (value) => typeof value === \"string\" || value instanceof Uint8Array ? null : \"a string or a Uint8Array\";\nvar mustBeStringOrURL = (value) => typeof value === \"string\" || value instanceof URL ? null : \"a string or a URL\";\nfunction getFlag(object, keys, key, mustBeFn) {\n let value = object[key];\n keys[key + \"\"] = true;\n if (value === void 0) return void 0;\n let mustBe = mustBeFn(value);\n if (mustBe !== null) throw new Error(`${quote(key)} must be ${mustBe}`);\n return value;\n}\nfunction checkForInvalidFlags(object, keys, where) {\n for (let key in object) {\n if (!(key in keys)) {\n throw new Error(`Invalid option ${where}: ${quote(key)}`);\n }\n }\n}\nfunction validateInitializeOptions(options) {\n let keys = /* @__PURE__ */ Object.create(null);\n let wasmURL = getFlag(options, keys, \"wasmURL\", mustBeStringOrURL);\n let wasmModule = getFlag(options, keys, \"wasmModule\", mustBeWebAssemblyModule);\n let worker = getFlag(options, keys, \"worker\", mustBeBoolean);\n checkForInvalidFlags(options, keys, \"in initialize() call\");\n return {\n wasmURL,\n wasmModule,\n worker\n };\n}\nfunction validateMangleCache(mangleCache) {\n let validated;\n if (mangleCache !== void 0) {\n validated = /* @__PURE__ */ Object.create(null);\n for (let key in mangleCache) {\n let value = mangleCache[key];\n if (typeof value === \"string\" || value === false) {\n validated[key] = value;\n } else {\n throw new Error(`Expected ${quote(key)} in mangle cache to map to either a string or false`);\n }\n }\n }\n return validated;\n}\nfunction pushLogFlags(flags, options, keys, isTTY2, logLevelDefault) {\n let color = getFlag(options, keys, \"color\", mustBeBoolean);\n let logLevel = getFlag(options, keys, \"logLevel\", mustBeString);\n let logLimit = getFlag(options, keys, \"logLimit\", mustBeInteger);\n if (color !== void 0) flags.push(`--color=${color}`);\n else if (isTTY2) flags.push(`--color=true`);\n flags.push(`--log-level=${logLevel || logLevelDefault}`);\n flags.push(`--log-limit=${logLimit || 0}`);\n}\nfunction validateStringValue(value, what, key) {\n if (typeof value !== \"string\") {\n throw new Error(`Expected value for ${what}${key !== void 0 ? \" \" + quote(key) : \"\"} to be a string, got ${typeof value} instead`);\n }\n return value;\n}\nfunction pushCommonFlags(flags, options, keys) {\n let legalComments = getFlag(options, keys, \"legalComments\", mustBeString);\n let sourceRoot = getFlag(options, keys, \"sourceRoot\", mustBeString);\n let sourcesContent = getFlag(options, keys, \"sourcesContent\", mustBeBoolean);\n let target = getFlag(options, keys, \"target\", mustBeStringOrArrayOfStrings);\n let format = getFlag(options, keys, \"format\", mustBeString);\n let globalName = getFlag(options, keys, \"globalName\", mustBeString);\n let mangleProps = getFlag(options, keys, \"mangleProps\", mustBeRegExp);\n let reserveProps = getFlag(options, keys, \"reserveProps\", mustBeRegExp);\n let mangleQuoted = getFlag(options, keys, \"mangleQuoted\", mustBeBoolean);\n let minify = getFlag(options, keys, \"minify\", mustBeBoolean);\n let minifySyntax = getFlag(options, keys, \"minifySyntax\", mustBeBoolean);\n let minifyWhitespace = getFlag(options, keys, \"minifyWhitespace\", mustBeBoolean);\n let minifyIdentifiers = getFlag(options, keys, \"minifyIdentifiers\", mustBeBoolean);\n let lineLimit = getFlag(options, keys, \"lineLimit\", mustBeInteger);\n let drop = getFlag(options, keys, \"drop\", mustBeArrayOfStrings);\n let dropLabels = getFlag(options, keys, \"dropLabels\", mustBeArrayOfStrings);\n let charset = getFlag(options, keys, \"charset\", mustBeString);\n let treeShaking = getFlag(options, keys, \"treeShaking\", mustBeBoolean);\n let ignoreAnnotations = getFlag(options, keys, \"ignoreAnnotations\", mustBeBoolean);\n let jsx = getFlag(options, keys, \"jsx\", mustBeString);\n let jsxFactory = getFlag(options, keys, \"jsxFactory\", mustBeString);\n let jsxFragment = getFlag(options, keys, \"jsxFragment\", mustBeString);\n let jsxImportSource = getFlag(options, keys, \"jsxImportSource\", mustBeString);\n let jsxDev = getFlag(options, keys, \"jsxDev\", mustBeBoolean);\n let jsxSideEffects = getFlag(options, keys, \"jsxSideEffects\", mustBeBoolean);\n let define = getFlag(options, keys, \"define\", mustBeObject);\n let logOverride = getFlag(options, keys, \"logOverride\", mustBeObject);\n let supported = getFlag(options, keys, \"supported\", mustBeObject);\n let pure = getFlag(options, keys, \"pure\", mustBeArrayOfStrings);\n let keepNames = getFlag(options, keys, \"keepNames\", mustBeBoolean);\n let platform = getFlag(options, keys, \"platform\", mustBeString);\n let tsconfigRaw = getFlag(options, keys, \"tsconfigRaw\", mustBeStringOrObject);\n let absPaths = getFlag(options, keys, \"absPaths\", mustBeArrayOfStrings);\n if (legalComments) flags.push(`--legal-comments=${legalComments}`);\n if (sourceRoot !== void 0) flags.push(`--source-root=${sourceRoot}`);\n if (sourcesContent !== void 0) flags.push(`--sources-content=${sourcesContent}`);\n if (target) flags.push(`--target=${validateAndJoinStringArray(Array.isArray(target) ? target : [target], \"target\")}`);\n if (format) flags.push(`--format=${format}`);\n if (globalName) flags.push(`--global-name=${globalName}`);\n if (platform) flags.push(`--platform=${platform}`);\n if (tsconfigRaw) flags.push(`--tsconfig-raw=${typeof tsconfigRaw === \"string\" ? tsconfigRaw : JSON.stringify(tsconfigRaw)}`);\n if (minify) flags.push(\"--minify\");\n if (minifySyntax) flags.push(\"--minify-syntax\");\n if (minifyWhitespace) flags.push(\"--minify-whitespace\");\n if (minifyIdentifiers) flags.push(\"--minify-identifiers\");\n if (lineLimit) flags.push(`--line-limit=${lineLimit}`);\n if (charset) flags.push(`--charset=${charset}`);\n if (treeShaking !== void 0) flags.push(`--tree-shaking=${treeShaking}`);\n if (ignoreAnnotations) flags.push(`--ignore-annotations`);\n if (drop) for (let what of drop) flags.push(`--drop:${validateStringValue(what, \"drop\")}`);\n if (dropLabels) flags.push(`--drop-labels=${validateAndJoinStringArray(dropLabels, \"drop label\")}`);\n if (absPaths) flags.push(`--abs-paths=${validateAndJoinStringArray(absPaths, \"abs paths\")}`);\n if (mangleProps) flags.push(`--mangle-props=${jsRegExpToGoRegExp(mangleProps)}`);\n if (reserveProps) flags.push(`--reserve-props=${jsRegExpToGoRegExp(reserveProps)}`);\n if (mangleQuoted !== void 0) flags.push(`--mangle-quoted=${mangleQuoted}`);\n if (jsx) flags.push(`--jsx=${jsx}`);\n if (jsxFactory) flags.push(`--jsx-factory=${jsxFactory}`);\n if (jsxFragment) flags.push(`--jsx-fragment=${jsxFragment}`);\n if (jsxImportSource) flags.push(`--jsx-import-source=${jsxImportSource}`);\n if (jsxDev) flags.push(`--jsx-dev`);\n if (jsxSideEffects) flags.push(`--jsx-side-effects`);\n if (define) {\n for (let key in define) {\n if (key.indexOf(\"=\") >= 0) throw new Error(`Invalid define: ${key}`);\n flags.push(`--define:${key}=${validateStringValue(define[key], \"define\", key)}`);\n }\n }\n if (logOverride) {\n for (let key in logOverride) {\n if (key.indexOf(\"=\") >= 0) throw new Error(`Invalid log override: ${key}`);\n flags.push(`--log-override:${key}=${validateStringValue(logOverride[key], \"log override\", key)}`);\n }\n }\n if (supported) {\n for (let key in supported) {\n if (key.indexOf(\"=\") >= 0) throw new Error(`Invalid supported: ${key}`);\n const value = supported[key];\n if (typeof value !== \"boolean\") throw new Error(`Expected value for supported ${quote(key)} to be a boolean, got ${typeof value} instead`);\n flags.push(`--supported:${key}=${value}`);\n }\n }\n if (pure) for (let fn of pure) flags.push(`--pure:${validateStringValue(fn, \"pure\")}`);\n if (keepNames) flags.push(`--keep-names`);\n}\nfunction flagsForBuildOptions(callName, options, isTTY2, logLevelDefault, writeDefault) {\n var _a2;\n let flags = [];\n let entries = [];\n let keys = /* @__PURE__ */ Object.create(null);\n let stdinContents = null;\n let stdinResolveDir = null;\n pushLogFlags(flags, options, keys, isTTY2, logLevelDefault);\n pushCommonFlags(flags, options, keys);\n let sourcemap = getFlag(options, keys, \"sourcemap\", mustBeStringOrBoolean);\n let bundle = getFlag(options, keys, \"bundle\", mustBeBoolean);\n let splitting = getFlag(options, keys, \"splitting\", mustBeBoolean);\n let preserveSymlinks = getFlag(options, keys, \"preserveSymlinks\", mustBeBoolean);\n let metafile = getFlag(options, keys, \"metafile\", mustBeBoolean);\n let outfile = getFlag(options, keys, \"outfile\", mustBeString);\n let outdir = getFlag(options, keys, \"outdir\", mustBeString);\n let outbase = getFlag(options, keys, \"outbase\", mustBeString);\n let tsconfig = getFlag(options, keys, \"tsconfig\", mustBeString);\n let resolveExtensions = getFlag(options, keys, \"resolveExtensions\", mustBeArrayOfStrings);\n let nodePathsInput = getFlag(options, keys, \"nodePaths\", mustBeArrayOfStrings);\n let mainFields = getFlag(options, keys, \"mainFields\", mustBeArrayOfStrings);\n let conditions = getFlag(options, keys, \"conditions\", mustBeArrayOfStrings);\n let external = getFlag(options, keys, \"external\", mustBeArrayOfStrings);\n let packages = getFlag(options, keys, \"packages\", mustBeString);\n let alias = getFlag(options, keys, \"alias\", mustBeObject);\n let loader = getFlag(options, keys, \"loader\", mustBeObject);\n let outExtension = getFlag(options, keys, \"outExtension\", mustBeObject);\n let publicPath = getFlag(options, keys, \"publicPath\", mustBeString);\n let entryNames = getFlag(options, keys, \"entryNames\", mustBeString);\n let chunkNames = getFlag(options, keys, \"chunkNames\", mustBeString);\n let assetNames = getFlag(options, keys, \"assetNames\", mustBeString);\n let inject = getFlag(options, keys, \"inject\", mustBeArrayOfStrings);\n let banner = getFlag(options, keys, \"banner\", mustBeObject);\n let footer = getFlag(options, keys, \"footer\", mustBeObject);\n let entryPoints = getFlag(options, keys, \"entryPoints\", mustBeEntryPoints);\n let absWorkingDir = getFlag(options, keys, \"absWorkingDir\", mustBeString);\n let stdin = getFlag(options, keys, \"stdin\", mustBeObject);\n let write = (_a2 = getFlag(options, keys, \"write\", mustBeBoolean)) != null ? _a2 : writeDefault;\n let allowOverwrite = getFlag(options, keys, \"allowOverwrite\", mustBeBoolean);\n let mangleCache = getFlag(options, keys, \"mangleCache\", mustBeObject);\n keys.plugins = true;\n checkForInvalidFlags(options, keys, `in ${callName}() call`);\n if (sourcemap) flags.push(`--sourcemap${sourcemap === true ? \"\" : `=${sourcemap}`}`);\n if (bundle) flags.push(\"--bundle\");\n if (allowOverwrite) flags.push(\"--allow-overwrite\");\n if (splitting) flags.push(\"--splitting\");\n if (preserveSymlinks) flags.push(\"--preserve-symlinks\");\n if (metafile) flags.push(`--metafile`);\n if (outfile) flags.push(`--outfile=${outfile}`);\n if (outdir) flags.push(`--outdir=${outdir}`);\n if (outbase) flags.push(`--outbase=${outbase}`);\n if (tsconfig) flags.push(`--tsconfig=${tsconfig}`);\n if (packages) flags.push(`--packages=${packages}`);\n if (resolveExtensions) flags.push(`--resolve-extensions=${validateAndJoinStringArray(resolveExtensions, \"resolve extension\")}`);\n if (publicPath) flags.push(`--public-path=${publicPath}`);\n if (entryNames) flags.push(`--entry-names=${entryNames}`);\n if (chunkNames) flags.push(`--chunk-names=${chunkNames}`);\n if (assetNames) flags.push(`--asset-names=${assetNames}`);\n if (mainFields) flags.push(`--main-fields=${validateAndJoinStringArray(mainFields, \"main field\")}`);\n if (conditions) flags.push(`--conditions=${validateAndJoinStringArray(conditions, \"condition\")}`);\n if (external) for (let name of external) flags.push(`--external:${validateStringValue(name, \"external\")}`);\n if (alias) {\n for (let old in alias) {\n if (old.indexOf(\"=\") >= 0) throw new Error(`Invalid package name in alias: ${old}`);\n flags.push(`--alias:${old}=${validateStringValue(alias[old], \"alias\", old)}`);\n }\n }\n if (banner) {\n for (let type in banner) {\n if (type.indexOf(\"=\") >= 0) throw new Error(`Invalid banner file type: ${type}`);\n flags.push(`--banner:${type}=${validateStringValue(banner[type], \"banner\", type)}`);\n }\n }\n if (footer) {\n for (let type in footer) {\n if (type.indexOf(\"=\") >= 0) throw new Error(`Invalid footer file type: ${type}`);\n flags.push(`--footer:${type}=${validateStringValue(footer[type], \"footer\", type)}`);\n }\n }\n if (inject) for (let path3 of inject) flags.push(`--inject:${validateStringValue(path3, \"inject\")}`);\n if (loader) {\n for (let ext in loader) {\n if (ext.indexOf(\"=\") >= 0) throw new Error(`Invalid loader extension: ${ext}`);\n flags.push(`--loader:${ext}=${validateStringValue(loader[ext], \"loader\", ext)}`);\n }\n }\n if (outExtension) {\n for (let ext in outExtension) {\n if (ext.indexOf(\"=\") >= 0) throw new Error(`Invalid out extension: ${ext}`);\n flags.push(`--out-extension:${ext}=${validateStringValue(outExtension[ext], \"out extension\", ext)}`);\n }\n }\n if (entryPoints) {\n if (Array.isArray(entryPoints)) {\n for (let i = 0, n = entryPoints.length; i < n; i++) {\n let entryPoint = entryPoints[i];\n if (typeof entryPoint === \"object\" && entryPoint !== null) {\n let entryPointKeys = /* @__PURE__ */ Object.create(null);\n let input = getFlag(entryPoint, entryPointKeys, \"in\", mustBeString);\n let output = getFlag(entryPoint, entryPointKeys, \"out\", mustBeString);\n checkForInvalidFlags(entryPoint, entryPointKeys, \"in entry point at index \" + i);\n if (input === void 0) throw new Error('Missing property \"in\" for entry point at index ' + i);\n if (output === void 0) throw new Error('Missing property \"out\" for entry point at index ' + i);\n entries.push([output, input]);\n } else {\n entries.push([\"\", validateStringValue(entryPoint, \"entry point at index \" + i)]);\n }\n }\n } else {\n for (let key in entryPoints) {\n entries.push([key, validateStringValue(entryPoints[key], \"entry point\", key)]);\n }\n }\n }\n if (stdin) {\n let stdinKeys = /* @__PURE__ */ Object.create(null);\n let contents = getFlag(stdin, stdinKeys, \"contents\", mustBeStringOrUint8Array);\n let resolveDir = getFlag(stdin, stdinKeys, \"resolveDir\", mustBeString);\n let sourcefile = getFlag(stdin, stdinKeys, \"sourcefile\", mustBeString);\n let loader2 = getFlag(stdin, stdinKeys, \"loader\", mustBeString);\n checkForInvalidFlags(stdin, stdinKeys, 'in \"stdin\" object');\n if (sourcefile) flags.push(`--sourcefile=${sourcefile}`);\n if (loader2) flags.push(`--loader=${loader2}`);\n if (resolveDir) stdinResolveDir = resolveDir;\n if (typeof contents === \"string\") stdinContents = encodeUTF8(contents);\n else if (contents instanceof Uint8Array) stdinContents = contents;\n }\n let nodePaths = [];\n if (nodePathsInput) {\n for (let value of nodePathsInput) {\n value += \"\";\n nodePaths.push(value);\n }\n }\n return {\n entries,\n flags,\n write,\n stdinContents,\n stdinResolveDir,\n absWorkingDir,\n nodePaths,\n mangleCache: validateMangleCache(mangleCache)\n };\n}\nfunction flagsForTransformOptions(callName, options, isTTY2, logLevelDefault) {\n let flags = [];\n let keys = /* @__PURE__ */ Object.create(null);\n pushLogFlags(flags, options, keys, isTTY2, logLevelDefault);\n pushCommonFlags(flags, options, keys);\n let sourcemap = getFlag(options, keys, \"sourcemap\", mustBeStringOrBoolean);\n let sourcefile = getFlag(options, keys, \"sourcefile\", mustBeString);\n let loader = getFlag(options, keys, \"loader\", mustBeString);\n let banner = getFlag(options, keys, \"banner\", mustBeString);\n let footer = getFlag(options, keys, \"footer\", mustBeString);\n let mangleCache = getFlag(options, keys, \"mangleCache\", mustBeObject);\n checkForInvalidFlags(options, keys, `in ${callName}() call`);\n if (sourcemap) flags.push(`--sourcemap=${sourcemap === true ? \"external\" : sourcemap}`);\n if (sourcefile) flags.push(`--sourcefile=${sourcefile}`);\n if (loader) flags.push(`--loader=${loader}`);\n if (banner) flags.push(`--banner=${banner}`);\n if (footer) flags.push(`--footer=${footer}`);\n return {\n flags,\n mangleCache: validateMangleCache(mangleCache)\n };\n}\nfunction createChannel(streamIn) {\n const requestCallbacksByKey = {};\n const closeData = { didClose: false, reason: \"\" };\n let responseCallbacks = {};\n let nextRequestID = 0;\n let nextBuildKey = 0;\n let stdout = new Uint8Array(16 * 1024);\n let stdoutUsed = 0;\n let readFromStdout = (chunk) => {\n let limit = stdoutUsed + chunk.length;\n if (limit > stdout.length) {\n let swap = new Uint8Array(limit * 2);\n swap.set(stdout);\n stdout = swap;\n }\n stdout.set(chunk, stdoutUsed);\n stdoutUsed += chunk.length;\n let offset = 0;\n while (offset + 4 <= stdoutUsed) {\n let length = readUInt32LE(stdout, offset);\n if (offset + 4 + length > stdoutUsed) {\n break;\n }\n offset += 4;\n handleIncomingPacket(stdout.subarray(offset, offset + length));\n offset += length;\n }\n if (offset > 0) {\n stdout.copyWithin(0, offset, stdoutUsed);\n stdoutUsed -= offset;\n }\n };\n let afterClose = (error) => {\n closeData.didClose = true;\n if (error) closeData.reason = \": \" + (error.message || error);\n const text = \"The service was stopped\" + closeData.reason;\n for (let id in responseCallbacks) {\n responseCallbacks[id](text, null);\n }\n responseCallbacks = {};\n };\n let sendRequest = (refs, value, callback) => {\n if (closeData.didClose) return callback(\"The service is no longer running\" + closeData.reason, null);\n let id = nextRequestID++;\n responseCallbacks[id] = (error, response) => {\n try {\n callback(error, response);\n } finally {\n if (refs) refs.unref();\n }\n };\n if (refs) refs.ref();\n streamIn.writeToStdin(encodePacket({ id, isRequest: true, value }));\n };\n let sendResponse = (id, value) => {\n if (closeData.didClose) throw new Error(\"The service is no longer running\" + closeData.reason);\n streamIn.writeToStdin(encodePacket({ id, isRequest: false, value }));\n };\n let handleRequest = async (id, request) => {\n try {\n if (request.command === \"ping\") {\n sendResponse(id, {});\n return;\n }\n if (typeof request.key === \"number\") {\n const requestCallbacks = requestCallbacksByKey[request.key];\n if (!requestCallbacks) {\n return;\n }\n const callback = requestCallbacks[request.command];\n if (callback) {\n await callback(id, request);\n return;\n }\n }\n throw new Error(`Invalid command: ` + request.command);\n } catch (e) {\n const errors = [extractErrorMessageV8(e, streamIn, null, void 0, \"\")];\n try {\n sendResponse(id, { errors });\n } catch {\n }\n }\n };\n let isFirstPacket = true;\n let handleIncomingPacket = (bytes) => {\n if (isFirstPacket) {\n isFirstPacket = false;\n let binaryVersion = String.fromCharCode(...bytes);\n if (binaryVersion !== \"0.25.12\") {\n throw new Error(`Cannot start service: Host version \"${\"0.25.12\"}\" does not match binary version ${quote(binaryVersion)}`);\n }\n return;\n }\n let packet = decodePacket(bytes);\n if (packet.isRequest) {\n handleRequest(packet.id, packet.value);\n } else {\n let callback = responseCallbacks[packet.id];\n delete responseCallbacks[packet.id];\n if (packet.value.error) callback(packet.value.error, {});\n else callback(null, packet.value);\n }\n };\n let buildOrContext = ({ callName, refs, options, isTTY: isTTY2, defaultWD: defaultWD2, callback }) => {\n let refCount = 0;\n const buildKey = nextBuildKey++;\n const requestCallbacks = {};\n const buildRefs = {\n ref() {\n if (++refCount === 1) {\n if (refs) refs.ref();\n }\n },\n unref() {\n if (--refCount === 0) {\n delete requestCallbacksByKey[buildKey];\n if (refs) refs.unref();\n }\n }\n };\n requestCallbacksByKey[buildKey] = requestCallbacks;\n buildRefs.ref();\n buildOrContextImpl(\n callName,\n buildKey,\n sendRequest,\n sendResponse,\n buildRefs,\n streamIn,\n requestCallbacks,\n options,\n isTTY2,\n defaultWD2,\n (err, res) => {\n try {\n callback(err, res);\n } finally {\n buildRefs.unref();\n }\n }\n );\n };\n let transform2 = ({ callName, refs, input, options, isTTY: isTTY2, fs: fs3, callback }) => {\n const details = createObjectStash();\n let start = (inputPath) => {\n try {\n if (typeof input !== \"string\" && !(input instanceof Uint8Array))\n throw new Error('The input to \"transform\" must be a string or a Uint8Array');\n let {\n flags,\n mangleCache\n } = flagsForTransformOptions(callName, options, isTTY2, transformLogLevelDefault);\n let request = {\n command: \"transform\",\n flags,\n inputFS: inputPath !== null,\n input: inputPath !== null ? encodeUTF8(inputPath) : typeof input === \"string\" ? encodeUTF8(input) : input\n };\n if (mangleCache) request.mangleCache = mangleCache;\n sendRequest(refs, request, (error, response) => {\n if (error) return callback(new Error(error), null);\n let errors = replaceDetailsInMessages(response.errors, details);\n let warnings = replaceDetailsInMessages(response.warnings, details);\n let outstanding = 1;\n let next = () => {\n if (--outstanding === 0) {\n let result = {\n warnings,\n code: response.code,\n map: response.map,\n mangleCache: void 0,\n legalComments: void 0\n };\n if (\"legalComments\" in response) result.legalComments = response == null ? void 0 : response.legalComments;\n if (response.mangleCache) result.mangleCache = response == null ? void 0 : response.mangleCache;\n callback(null, result);\n }\n };\n if (errors.length > 0) return callback(failureErrorWithLog(\"Transform failed\", errors, warnings), null);\n if (response.codeFS) {\n outstanding++;\n fs3.readFile(response.code, (err, contents) => {\n if (err !== null) {\n callback(err, null);\n } else {\n response.code = contents;\n next();\n }\n });\n }\n if (response.mapFS) {\n outstanding++;\n fs3.readFile(response.map, (err, contents) => {\n if (err !== null) {\n callback(err, null);\n } else {\n response.map = contents;\n next();\n }\n });\n }\n next();\n });\n } catch (e) {\n let flags = [];\n try {\n pushLogFlags(flags, options, {}, isTTY2, transformLogLevelDefault);\n } catch {\n }\n const error = extractErrorMessageV8(e, streamIn, details, void 0, \"\");\n sendRequest(refs, { command: \"error\", flags, error }, () => {\n error.detail = details.load(error.detail);\n callback(failureErrorWithLog(\"Transform failed\", [error], []), null);\n });\n }\n };\n if ((typeof input === \"string\" || input instanceof Uint8Array) && input.length > 1024 * 1024) {\n let next = start;\n start = () => fs3.writeFile(input, next);\n }\n start(null);\n };\n let formatMessages2 = ({ callName, refs, messages, options, callback }) => {\n if (!options) throw new Error(`Missing second argument in ${callName}() call`);\n let keys = {};\n let kind = getFlag(options, keys, \"kind\", mustBeString);\n let color = getFlag(options, keys, \"color\", mustBeBoolean);\n let terminalWidth = getFlag(options, keys, \"terminalWidth\", mustBeInteger);\n checkForInvalidFlags(options, keys, `in ${callName}() call`);\n if (kind === void 0) throw new Error(`Missing \"kind\" in ${callName}() call`);\n if (kind !== \"error\" && kind !== \"warning\") throw new Error(`Expected \"kind\" to be \"error\" or \"warning\" in ${callName}() call`);\n let request = {\n command: \"format-msgs\",\n messages: sanitizeMessages(messages, \"messages\", null, \"\", terminalWidth),\n isWarning: kind === \"warning\"\n };\n if (color !== void 0) request.color = color;\n if (terminalWidth !== void 0) request.terminalWidth = terminalWidth;\n sendRequest(refs, request, (error, response) => {\n if (error) return callback(new Error(error), null);\n callback(null, response.messages);\n });\n };\n let analyzeMetafile2 = ({ callName, refs, metafile, options, callback }) => {\n if (options === void 0) options = {};\n let keys = {};\n let color = getFlag(options, keys, \"color\", mustBeBoolean);\n let verbose = getFlag(options, keys, \"verbose\", mustBeBoolean);\n checkForInvalidFlags(options, keys, `in ${callName}() call`);\n let request = {\n command: \"analyze-metafile\",\n metafile\n };\n if (color !== void 0) request.color = color;\n if (verbose !== void 0) request.verbose = verbose;\n sendRequest(refs, request, (error, response) => {\n if (error) return callback(new Error(error), null);\n callback(null, response.result);\n });\n };\n return {\n readFromStdout,\n afterClose,\n service: {\n buildOrContext,\n transform: transform2,\n formatMessages: formatMessages2,\n analyzeMetafile: analyzeMetafile2\n }\n };\n}\nfunction buildOrContextImpl(callName, buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, options, isTTY2, defaultWD2, callback) {\n const details = createObjectStash();\n const isContext = callName === \"context\";\n const handleError = (e, pluginName) => {\n const flags = [];\n try {\n pushLogFlags(flags, options, {}, isTTY2, buildLogLevelDefault);\n } catch {\n }\n const message = extractErrorMessageV8(e, streamIn, details, void 0, pluginName);\n sendRequest(refs, { command: \"error\", flags, error: message }, () => {\n message.detail = details.load(message.detail);\n callback(failureErrorWithLog(isContext ? \"Context failed\" : \"Build failed\", [message], []), null);\n });\n };\n let plugins;\n if (typeof options === \"object\") {\n const value = options.plugins;\n if (value !== void 0) {\n if (!Array.isArray(value)) return handleError(new Error(`\"plugins\" must be an array`), \"\");\n plugins = value;\n }\n }\n if (plugins && plugins.length > 0) {\n if (streamIn.isSync) return handleError(new Error(\"Cannot use plugins in synchronous API calls\"), \"\");\n handlePlugins(\n buildKey,\n sendRequest,\n sendResponse,\n refs,\n streamIn,\n requestCallbacks,\n options,\n plugins,\n details\n ).then(\n (result) => {\n if (!result.ok) return handleError(result.error, result.pluginName);\n try {\n buildOrContextContinue(result.requestPlugins, result.runOnEndCallbacks, result.scheduleOnDisposeCallbacks);\n } catch (e) {\n handleError(e, \"\");\n }\n },\n (e) => handleError(e, \"\")\n );\n return;\n }\n try {\n buildOrContextContinue(null, (result, done) => done([], []), () => {\n });\n } catch (e) {\n handleError(e, \"\");\n }\n function buildOrContextContinue(requestPlugins, runOnEndCallbacks, scheduleOnDisposeCallbacks) {\n const writeDefault = streamIn.hasFS;\n const {\n entries,\n flags,\n write,\n stdinContents,\n stdinResolveDir,\n absWorkingDir,\n nodePaths,\n mangleCache\n } = flagsForBuildOptions(callName, options, isTTY2, buildLogLevelDefault, writeDefault);\n if (write && !streamIn.hasFS) throw new Error(`The \"write\" option is unavailable in this environment`);\n const request = {\n command: \"build\",\n key: buildKey,\n entries,\n flags,\n write,\n stdinContents,\n stdinResolveDir,\n absWorkingDir: absWorkingDir || defaultWD2,\n nodePaths,\n context: isContext\n };\n if (requestPlugins) request.plugins = requestPlugins;\n if (mangleCache) request.mangleCache = mangleCache;\n const buildResponseToResult = (response, callback2) => {\n const result = {\n errors: replaceDetailsInMessages(response.errors, details),\n warnings: replaceDetailsInMessages(response.warnings, details),\n outputFiles: void 0,\n metafile: void 0,\n mangleCache: void 0\n };\n const originalErrors = result.errors.slice();\n const originalWarnings = result.warnings.slice();\n if (response.outputFiles) result.outputFiles = response.outputFiles.map(convertOutputFiles);\n if (response.metafile) result.metafile = JSON.parse(response.metafile);\n if (response.mangleCache) result.mangleCache = response.mangleCache;\n if (response.writeToStdout !== void 0) console.log(decodeUTF8(response.writeToStdout).replace(/\\n$/, \"\"));\n runOnEndCallbacks(result, (onEndErrors, onEndWarnings) => {\n if (originalErrors.length > 0 || onEndErrors.length > 0) {\n const error = failureErrorWithLog(\"Build failed\", originalErrors.concat(onEndErrors), originalWarnings.concat(onEndWarnings));\n return callback2(error, null, onEndErrors, onEndWarnings);\n }\n callback2(null, result, onEndErrors, onEndWarnings);\n });\n };\n let latestResultPromise;\n let provideLatestResult;\n if (isContext)\n requestCallbacks[\"on-end\"] = (id, request2) => new Promise((resolve) => {\n buildResponseToResult(request2, (err, result, onEndErrors, onEndWarnings) => {\n const response = {\n errors: onEndErrors,\n warnings: onEndWarnings\n };\n if (provideLatestResult) provideLatestResult(err, result);\n latestResultPromise = void 0;\n provideLatestResult = void 0;\n sendResponse(id, response);\n resolve();\n });\n });\n sendRequest(refs, request, (error, response) => {\n if (error) return callback(new Error(error), null);\n if (!isContext) {\n return buildResponseToResult(response, (err, res) => {\n scheduleOnDisposeCallbacks();\n return callback(err, res);\n });\n }\n if (response.errors.length > 0) {\n return callback(failureErrorWithLog(\"Context failed\", response.errors, response.warnings), null);\n }\n let didDispose = false;\n const result = {\n rebuild: () => {\n if (!latestResultPromise) latestResultPromise = new Promise((resolve, reject) => {\n let settlePromise;\n provideLatestResult = (err, result2) => {\n if (!settlePromise) settlePromise = () => err ? reject(err) : resolve(result2);\n };\n const triggerAnotherBuild = () => {\n const request2 = {\n command: \"rebuild\",\n key: buildKey\n };\n sendRequest(refs, request2, (error2, response2) => {\n if (error2) {\n reject(new Error(error2));\n } else if (settlePromise) {\n settlePromise();\n } else {\n triggerAnotherBuild();\n }\n });\n };\n triggerAnotherBuild();\n });\n return latestResultPromise;\n },\n watch: (options2 = {}) => new Promise((resolve, reject) => {\n if (!streamIn.hasFS) throw new Error(`Cannot use the \"watch\" API in this environment`);\n const keys = {};\n const delay = getFlag(options2, keys, \"delay\", mustBeInteger);\n checkForInvalidFlags(options2, keys, `in watch() call`);\n const request2 = {\n command: \"watch\",\n key: buildKey\n };\n if (delay) request2.delay = delay;\n sendRequest(refs, request2, (error2) => {\n if (error2) reject(new Error(error2));\n else resolve(void 0);\n });\n }),\n serve: (options2 = {}) => new Promise((resolve, reject) => {\n if (!streamIn.hasFS) throw new Error(`Cannot use the \"serve\" API in this environment`);\n const keys = {};\n const port = getFlag(options2, keys, \"port\", mustBeValidPortNumber);\n const host = getFlag(options2, keys, \"host\", mustBeString);\n const servedir = getFlag(options2, keys, \"servedir\", mustBeString);\n const keyfile = getFlag(options2, keys, \"keyfile\", mustBeString);\n const certfile = getFlag(options2, keys, \"certfile\", mustBeString);\n const fallback = getFlag(options2, keys, \"fallback\", mustBeString);\n const cors = getFlag(options2, keys, \"cors\", mustBeObject);\n const onRequest = getFlag(options2, keys, \"onRequest\", mustBeFunction);\n checkForInvalidFlags(options2, keys, `in serve() call`);\n const request2 = {\n command: \"serve\",\n key: buildKey,\n onRequest: !!onRequest\n };\n if (port !== void 0) request2.port = port;\n if (host !== void 0) request2.host = host;\n if (servedir !== void 0) request2.servedir = servedir;\n if (keyfile !== void 0) request2.keyfile = keyfile;\n if (certfile !== void 0) request2.certfile = certfile;\n if (fallback !== void 0) request2.fallback = fallback;\n if (cors) {\n const corsKeys = {};\n const origin = getFlag(cors, corsKeys, \"origin\", mustBeStringOrArrayOfStrings);\n checkForInvalidFlags(cors, corsKeys, `on \"cors\" object`);\n if (Array.isArray(origin)) request2.corsOrigin = origin;\n else if (origin !== void 0) request2.corsOrigin = [origin];\n }\n sendRequest(refs, request2, (error2, response2) => {\n if (error2) return reject(new Error(error2));\n if (onRequest) {\n requestCallbacks[\"serve-request\"] = (id, request3) => {\n onRequest(request3.args);\n sendResponse(id, {});\n };\n }\n resolve(response2);\n });\n }),\n cancel: () => new Promise((resolve) => {\n if (didDispose) return resolve();\n const request2 = {\n command: \"cancel\",\n key: buildKey\n };\n sendRequest(refs, request2, () => {\n resolve();\n });\n }),\n dispose: () => new Promise((resolve) => {\n if (didDispose) return resolve();\n didDispose = true;\n const request2 = {\n command: \"dispose\",\n key: buildKey\n };\n sendRequest(refs, request2, () => {\n resolve();\n scheduleOnDisposeCallbacks();\n refs.unref();\n });\n })\n };\n refs.ref();\n callback(null, result);\n });\n }\n}\nvar handlePlugins = async (buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, initialOptions, plugins, details) => {\n let onStartCallbacks = [];\n let onEndCallbacks = [];\n let onResolveCallbacks = {};\n let onLoadCallbacks = {};\n let onDisposeCallbacks = [];\n let nextCallbackID = 0;\n let i = 0;\n let requestPlugins = [];\n let isSetupDone = false;\n plugins = [...plugins];\n for (let item of plugins) {\n let keys = {};\n if (typeof item !== \"object\") throw new Error(`Plugin at index ${i} must be an object`);\n const name = getFlag(item, keys, \"name\", mustBeString);\n if (typeof name !== \"string\" || name === \"\") throw new Error(`Plugin at index ${i} is missing a name`);\n try {\n let setup = getFlag(item, keys, \"setup\", mustBeFunction);\n if (typeof setup !== \"function\") throw new Error(`Plugin is missing a setup function`);\n checkForInvalidFlags(item, keys, `on plugin ${quote(name)}`);\n let plugin = {\n name,\n onStart: false,\n onEnd: false,\n onResolve: [],\n onLoad: []\n };\n i++;\n let resolve = (path3, options = {}) => {\n if (!isSetupDone) throw new Error('Cannot call \"resolve\" before plugin setup has completed');\n if (typeof path3 !== \"string\") throw new Error(`The path to resolve must be a string`);\n let keys2 = /* @__PURE__ */ Object.create(null);\n let pluginName = getFlag(options, keys2, \"pluginName\", mustBeString);\n let importer = getFlag(options, keys2, \"importer\", mustBeString);\n let namespace = getFlag(options, keys2, \"namespace\", mustBeString);\n let resolveDir = getFlag(options, keys2, \"resolveDir\", mustBeString);\n let kind = getFlag(options, keys2, \"kind\", mustBeString);\n let pluginData = getFlag(options, keys2, \"pluginData\", canBeAnything);\n let importAttributes = getFlag(options, keys2, \"with\", mustBeObject);\n checkForInvalidFlags(options, keys2, \"in resolve() call\");\n return new Promise((resolve2, reject) => {\n const request = {\n command: \"resolve\",\n path: path3,\n key: buildKey,\n pluginName: name\n };\n if (pluginName != null) request.pluginName = pluginName;\n if (importer != null) request.importer = importer;\n if (namespace != null) request.namespace = namespace;\n if (resolveDir != null) request.resolveDir = resolveDir;\n if (kind != null) request.kind = kind;\n else throw new Error(`Must specify \"kind\" when calling \"resolve\"`);\n if (pluginData != null) request.pluginData = details.store(pluginData);\n if (importAttributes != null) request.with = sanitizeStringMap(importAttributes, \"with\");\n sendRequest(refs, request, (error, response) => {\n if (error !== null) reject(new Error(error));\n else resolve2({\n errors: replaceDetailsInMessages(response.errors, details),\n warnings: replaceDetailsInMessages(response.warnings, details),\n path: response.path,\n external: response.external,\n sideEffects: response.sideEffects,\n namespace: response.namespace,\n suffix: response.suffix,\n pluginData: details.load(response.pluginData)\n });\n });\n });\n };\n let promise = setup({\n initialOptions,\n resolve,\n onStart(callback) {\n let registeredText = `This error came from the \"onStart\" callback registered here:`;\n let registeredNote = extractCallerV8(new Error(registeredText), streamIn, \"onStart\");\n onStartCallbacks.push({ name, callback, note: registeredNote });\n plugin.onStart = true;\n },\n onEnd(callback) {\n let registeredText = `This error came from the \"onEnd\" callback registered here:`;\n let registeredNote = extractCallerV8(new Error(registeredText), streamIn, \"onEnd\");\n onEndCallbacks.push({ name, callback, note: registeredNote });\n plugin.onEnd = true;\n },\n onResolve(options, callback) {\n let registeredText = `This error came from the \"onResolve\" callback registered here:`;\n let registeredNote = extractCallerV8(new Error(registeredText), streamIn, \"onResolve\");\n let keys2 = {};\n let filter = getFlag(options, keys2, \"filter\", mustBeRegExp);\n let namespace = getFlag(options, keys2, \"namespace\", mustBeString);\n checkForInvalidFlags(options, keys2, `in onResolve() call for plugin ${quote(name)}`);\n if (filter == null) throw new Error(`onResolve() call is missing a filter`);\n let id = nextCallbackID++;\n onResolveCallbacks[id] = { name, callback, note: registeredNote };\n plugin.onResolve.push({ id, filter: jsRegExpToGoRegExp(filter), namespace: namespace || \"\" });\n },\n onLoad(options, callback) {\n let registeredText = `This error came from the \"onLoad\" callback registered here:`;\n let registeredNote = extractCallerV8(new Error(registeredText), streamIn, \"onLoad\");\n let keys2 = {};\n let filter = getFlag(options, keys2, \"filter\", mustBeRegExp);\n let namespace = getFlag(options, keys2, \"namespace\", mustBeString);\n checkForInvalidFlags(options, keys2, `in onLoad() call for plugin ${quote(name)}`);\n if (filter == null) throw new Error(`onLoad() call is missing a filter`);\n let id = nextCallbackID++;\n onLoadCallbacks[id] = { name, callback, note: registeredNote };\n plugin.onLoad.push({ id, filter: jsRegExpToGoRegExp(filter), namespace: namespace || \"\" });\n },\n onDispose(callback) {\n onDisposeCallbacks.push(callback);\n },\n esbuild: streamIn.esbuild\n });\n if (promise) await promise;\n requestPlugins.push(plugin);\n } catch (e) {\n return { ok: false, error: e, pluginName: name };\n }\n }\n requestCallbacks[\"on-start\"] = async (id, request) => {\n details.clear();\n let response = { errors: [], warnings: [] };\n await Promise.all(onStartCallbacks.map(async ({ name, callback, note }) => {\n try {\n let result = await callback();\n if (result != null) {\n if (typeof result !== \"object\") throw new Error(`Expected onStart() callback in plugin ${quote(name)} to return an object`);\n let keys = {};\n let errors = getFlag(result, keys, \"errors\", mustBeArray);\n let warnings = getFlag(result, keys, \"warnings\", mustBeArray);\n checkForInvalidFlags(result, keys, `from onStart() callback in plugin ${quote(name)}`);\n if (errors != null) response.errors.push(...sanitizeMessages(errors, \"errors\", details, name, void 0));\n if (warnings != null) response.warnings.push(...sanitizeMessages(warnings, \"warnings\", details, name, void 0));\n }\n } catch (e) {\n response.errors.push(extractErrorMessageV8(e, streamIn, details, note && note(), name));\n }\n }));\n sendResponse(id, response);\n };\n requestCallbacks[\"on-resolve\"] = async (id, request) => {\n let response = {}, name = \"\", callback, note;\n for (let id2 of request.ids) {\n try {\n ({ name, callback, note } = onResolveCallbacks[id2]);\n let result = await callback({\n path: request.path,\n importer: request.importer,\n namespace: request.namespace,\n resolveDir: request.resolveDir,\n kind: request.kind,\n pluginData: details.load(request.pluginData),\n with: request.with\n });\n if (result != null) {\n if (typeof result !== \"object\") throw new Error(`Expected onResolve() callback in plugin ${quote(name)} to return an object`);\n let keys = {};\n let pluginName = getFlag(result, keys, \"pluginName\", mustBeString);\n let path3 = getFlag(result, keys, \"path\", mustBeString);\n let namespace = getFlag(result, keys, \"namespace\", mustBeString);\n let suffix = getFlag(result, keys, \"suffix\", mustBeString);\n let external = getFlag(result, keys, \"external\", mustBeBoolean);\n let sideEffects = getFlag(result, keys, \"sideEffects\", mustBeBoolean);\n let pluginData = getFlag(result, keys, \"pluginData\", canBeAnything);\n let errors = getFlag(result, keys, \"errors\", mustBeArray);\n let warnings = getFlag(result, keys, \"warnings\", mustBeArray);\n let watchFiles = getFlag(result, keys, \"watchFiles\", mustBeArrayOfStrings);\n let watchDirs = getFlag(result, keys, \"watchDirs\", mustBeArrayOfStrings);\n checkForInvalidFlags(result, keys, `from onResolve() callback in plugin ${quote(name)}`);\n response.id = id2;\n if (pluginName != null) response.pluginName = pluginName;\n if (path3 != null) response.path = path3;\n if (namespace != null) response.namespace = namespace;\n if (suffix != null) response.suffix = suffix;\n if (external != null) response.external = external;\n if (sideEffects != null) response.sideEffects = sideEffects;\n if (pluginData != null) response.pluginData = details.store(pluginData);\n if (errors != null) response.errors = sanitizeMessages(errors, \"errors\", details, name, void 0);\n if (warnings != null) response.warnings = sanitizeMessages(warnings, \"warnings\", details, name, void 0);\n if (watchFiles != null) response.watchFiles = sanitizeStringArray(watchFiles, \"watchFiles\");\n if (watchDirs != null) response.watchDirs = sanitizeStringArray(watchDirs, \"watchDirs\");\n break;\n }\n } catch (e) {\n response = { id: id2, errors: [extractErrorMessageV8(e, streamIn, details, note && note(), name)] };\n break;\n }\n }\n sendResponse(id, response);\n };\n requestCallbacks[\"on-load\"] = async (id, request) => {\n let response = {}, name = \"\", callback, note;\n for (let id2 of request.ids) {\n try {\n ({ name, callback, note } = onLoadCallbacks[id2]);\n let result = await callback({\n path: request.path,\n namespace: request.namespace,\n suffix: request.suffix,\n pluginData: details.load(request.pluginData),\n with: request.with\n });\n if (result != null) {\n if (typeof result !== \"object\") throw new Error(`Expected onLoad() callback in plugin ${quote(name)} to return an object`);\n let keys = {};\n let pluginName = getFlag(result, keys, \"pluginName\", mustBeString);\n let contents = getFlag(result, keys, \"contents\", mustBeStringOrUint8Array);\n let resolveDir = getFlag(result, keys, \"resolveDir\", mustBeString);\n let pluginData = getFlag(result, keys, \"pluginData\", canBeAnything);\n let loader = getFlag(result, keys, \"loader\", mustBeString);\n let errors = getFlag(result, keys, \"errors\", mustBeArray);\n let warnings = getFlag(result, keys, \"warnings\", mustBeArray);\n let watchFiles = getFlag(result, keys, \"watchFiles\", mustBeArrayOfStrings);\n let watchDirs = getFlag(result, keys, \"watchDirs\", mustBeArrayOfStrings);\n checkForInvalidFlags(result, keys, `from onLoad() callback in plugin ${quote(name)}`);\n response.id = id2;\n if (pluginName != null) response.pluginName = pluginName;\n if (contents instanceof Uint8Array) response.contents = contents;\n else if (contents != null) response.contents = encodeUTF8(contents);\n if (resolveDir != null) response.resolveDir = resolveDir;\n if (pluginData != null) response.pluginData = details.store(pluginData);\n if (loader != null) response.loader = loader;\n if (errors != null) response.errors = sanitizeMessages(errors, \"errors\", details, name, void 0);\n if (warnings != null) response.warnings = sanitizeMessages(warnings, \"warnings\", details, name, void 0);\n if (watchFiles != null) response.watchFiles = sanitizeStringArray(watchFiles, \"watchFiles\");\n if (watchDirs != null) response.watchDirs = sanitizeStringArray(watchDirs, \"watchDirs\");\n break;\n }\n } catch (e) {\n response = { id: id2, errors: [extractErrorMessageV8(e, streamIn, details, note && note(), name)] };\n break;\n }\n }\n sendResponse(id, response);\n };\n let runOnEndCallbacks = (result, done) => done([], []);\n if (onEndCallbacks.length > 0) {\n runOnEndCallbacks = (result, done) => {\n (async () => {\n const onEndErrors = [];\n const onEndWarnings = [];\n for (const { name, callback, note } of onEndCallbacks) {\n let newErrors;\n let newWarnings;\n try {\n const value = await callback(result);\n if (value != null) {\n if (typeof value !== \"object\") throw new Error(`Expected onEnd() callback in plugin ${quote(name)} to return an object`);\n let keys = {};\n let errors = getFlag(value, keys, \"errors\", mustBeArray);\n let warnings = getFlag(value, keys, \"warnings\", mustBeArray);\n checkForInvalidFlags(value, keys, `from onEnd() callback in plugin ${quote(name)}`);\n if (errors != null) newErrors = sanitizeMessages(errors, \"errors\", details, name, void 0);\n if (warnings != null) newWarnings = sanitizeMessages(warnings, \"warnings\", details, name, void 0);\n }\n } catch (e) {\n newErrors = [extractErrorMessageV8(e, streamIn, details, note && note(), name)];\n }\n if (newErrors) {\n onEndErrors.push(...newErrors);\n try {\n result.errors.push(...newErrors);\n } catch {\n }\n }\n if (newWarnings) {\n onEndWarnings.push(...newWarnings);\n try {\n result.warnings.push(...newWarnings);\n } catch {\n }\n }\n }\n done(onEndErrors, onEndWarnings);\n })();\n };\n }\n let scheduleOnDisposeCallbacks = () => {\n for (const cb of onDisposeCallbacks) {\n setTimeout(() => cb(), 0);\n }\n };\n isSetupDone = true;\n return {\n ok: true,\n requestPlugins,\n runOnEndCallbacks,\n scheduleOnDisposeCallbacks\n };\n};\nfunction createObjectStash() {\n const map = /* @__PURE__ */ new Map();\n let nextID = 0;\n return {\n clear() {\n map.clear();\n },\n load(id) {\n return map.get(id);\n },\n store(value) {\n if (value === void 0) return -1;\n const id = nextID++;\n map.set(id, value);\n return id;\n }\n };\n}\nfunction extractCallerV8(e, streamIn, ident) {\n let note;\n let tried = false;\n return () => {\n if (tried) return note;\n tried = true;\n try {\n let lines = (e.stack + \"\").split(\"\\n\");\n lines.splice(1, 1);\n let location = parseStackLinesV8(streamIn, lines, ident);\n if (location) {\n note = { text: e.message, location };\n return note;\n }\n } catch {\n }\n };\n}\nfunction extractErrorMessageV8(e, streamIn, stash, note, pluginName) {\n let text = \"Internal error\";\n let location = null;\n try {\n text = (e && e.message || e) + \"\";\n } catch {\n }\n try {\n location = parseStackLinesV8(streamIn, (e.stack + \"\").split(\"\\n\"), \"\");\n } catch {\n }\n return { id: \"\", pluginName, text, location, notes: note ? [note] : [], detail: stash ? stash.store(e) : -1 };\n}\nfunction parseStackLinesV8(streamIn, lines, ident) {\n let at = \" at \";\n if (streamIn.readFileSync && !lines[0].startsWith(at) && lines[1].startsWith(at)) {\n for (let i = 1; i < lines.length; i++) {\n let line = lines[i];\n if (!line.startsWith(at)) continue;\n line = line.slice(at.length);\n while (true) {\n let match = /^(?:new |async )?\\S+ \\((.*)\\)$/.exec(line);\n if (match) {\n line = match[1];\n continue;\n }\n match = /^eval at \\S+ \\((.*)\\)(?:, \\S+:\\d+:\\d+)?$/.exec(line);\n if (match) {\n line = match[1];\n continue;\n }\n match = /^(\\S+):(\\d+):(\\d+)$/.exec(line);\n if (match) {\n let contents;\n try {\n contents = streamIn.readFileSync(match[1], \"utf8\");\n } catch {\n break;\n }\n let lineText = contents.split(/\\r\\n|\\r|\\n|\\u2028|\\u2029/)[+match[2] - 1] || \"\";\n let column = +match[3] - 1;\n let length = lineText.slice(column, column + ident.length) === ident ? ident.length : 0;\n return {\n file: match[1],\n namespace: \"file\",\n line: +match[2],\n column: encodeUTF8(lineText.slice(0, column)).length,\n length: encodeUTF8(lineText.slice(column, column + length)).length,\n lineText: lineText + \"\\n\" + lines.slice(1).join(\"\\n\"),\n suggestion: \"\"\n };\n }\n break;\n }\n }\n }\n return null;\n}\nfunction failureErrorWithLog(text, errors, warnings) {\n let limit = 5;\n text += errors.length < 1 ? \"\" : ` with ${errors.length} error${errors.length < 2 ? \"\" : \"s\"}:` + errors.slice(0, limit + 1).map((e, i) => {\n if (i === limit) return \"\\n...\";\n if (!e.location) return `\nerror: ${e.text}`;\n let { file, line, column } = e.location;\n let pluginText = e.pluginName ? `[plugin: ${e.pluginName}] ` : \"\";\n return `\n${file}:${line}:${column}: ERROR: ${pluginText}${e.text}`;\n }).join(\"\");\n let error = new Error(text);\n for (const [key, value] of [[\"errors\", errors], [\"warnings\", warnings]]) {\n Object.defineProperty(error, key, {\n configurable: true,\n enumerable: true,\n get: () => value,\n set: (value2) => Object.defineProperty(error, key, {\n configurable: true,\n enumerable: true,\n value: value2\n })\n });\n }\n return error;\n}\nfunction replaceDetailsInMessages(messages, stash) {\n for (const message of messages) {\n message.detail = stash.load(message.detail);\n }\n return messages;\n}\nfunction sanitizeLocation(location, where, terminalWidth) {\n if (location == null) return null;\n let keys = {};\n let file = getFlag(location, keys, \"file\", mustBeString);\n let namespace = getFlag(location, keys, \"namespace\", mustBeString);\n let line = getFlag(location, keys, \"line\", mustBeInteger);\n let column = getFlag(location, keys, \"column\", mustBeInteger);\n let length = getFlag(location, keys, \"length\", mustBeInteger);\n let lineText = getFlag(location, keys, \"lineText\", mustBeString);\n let suggestion = getFlag(location, keys, \"suggestion\", mustBeString);\n checkForInvalidFlags(location, keys, where);\n if (lineText) {\n const relevantASCII = lineText.slice(\n 0,\n (column && column > 0 ? column : 0) + (length && length > 0 ? length : 0) + (terminalWidth && terminalWidth > 0 ? terminalWidth : 80)\n );\n if (!/[\\x7F-\\uFFFF]/.test(relevantASCII) && !/\\n/.test(lineText)) {\n lineText = relevantASCII;\n }\n }\n return {\n file: file || \"\",\n namespace: namespace || \"\",\n line: line || 0,\n column: column || 0,\n length: length || 0,\n lineText: lineText || \"\",\n suggestion: suggestion || \"\"\n };\n}\nfunction sanitizeMessages(messages, property, stash, fallbackPluginName, terminalWidth) {\n let messagesClone = [];\n let index = 0;\n for (const message of messages) {\n let keys = {};\n let id = getFlag(message, keys, \"id\", mustBeString);\n let pluginName = getFlag(message, keys, \"pluginName\", mustBeString);\n let text = getFlag(message, keys, \"text\", mustBeString);\n let location = getFlag(message, keys, \"location\", mustBeObjectOrNull);\n let notes = getFlag(message, keys, \"notes\", mustBeArray);\n let detail = getFlag(message, keys, \"detail\", canBeAnything);\n let where = `in element ${index} of \"${property}\"`;\n checkForInvalidFlags(message, keys, where);\n let notesClone = [];\n if (notes) {\n for (const note of notes) {\n let noteKeys = {};\n let noteText = getFlag(note, noteKeys, \"text\", mustBeString);\n let noteLocation = getFlag(note, noteKeys, \"location\", mustBeObjectOrNull);\n checkForInvalidFlags(note, noteKeys, where);\n notesClone.push({\n text: noteText || \"\",\n location: sanitizeLocation(noteLocation, where, terminalWidth)\n });\n }\n }\n messagesClone.push({\n id: id || \"\",\n pluginName: pluginName || fallbackPluginName,\n text: text || \"\",\n location: sanitizeLocation(location, where, terminalWidth),\n notes: notesClone,\n detail: stash ? stash.store(detail) : -1\n });\n index++;\n }\n return messagesClone;\n}\nfunction sanitizeStringArray(values, property) {\n const result = [];\n for (const value of values) {\n if (typeof value !== \"string\") throw new Error(`${quote(property)} must be an array of strings`);\n result.push(value);\n }\n return result;\n}\nfunction sanitizeStringMap(map, property) {\n const result = /* @__PURE__ */ Object.create(null);\n for (const key in map) {\n const value = map[key];\n if (typeof value !== \"string\") throw new Error(`key ${quote(key)} in object ${quote(property)} must be a string`);\n result[key] = value;\n }\n return result;\n}\nfunction convertOutputFiles({ path: path3, contents, hash }) {\n let text = null;\n return {\n path: path3,\n contents,\n hash,\n get text() {\n const binary = this.contents;\n if (text === null || binary !== contents) {\n contents = binary;\n text = decodeUTF8(binary);\n }\n return text;\n }\n };\n}\nfunction jsRegExpToGoRegExp(regexp) {\n let result = regexp.source;\n if (regexp.flags) result = `(?${regexp.flags})${result}`;\n return result;\n}\n\n// lib/npm/node-platform.ts\nvar fs = require(\"fs\");\nvar os = require(\"os\");\nvar path = require(\"path\");\nvar ESBUILD_BINARY_PATH = process.env.ESBUILD_BINARY_PATH || ESBUILD_BINARY_PATH;\nvar isValidBinaryPath = (x) => !!x && x !== \"/usr/bin/esbuild\";\nvar packageDarwin_arm64 = \"@esbuild/darwin-arm64\";\nvar packageDarwin_x64 = \"@esbuild/darwin-x64\";\nvar knownWindowsPackages = {\n \"win32 arm64 LE\": \"@esbuild/win32-arm64\",\n \"win32 ia32 LE\": \"@esbuild/win32-ia32\",\n \"win32 x64 LE\": \"@esbuild/win32-x64\"\n};\nvar knownUnixlikePackages = {\n \"aix ppc64 BE\": \"@esbuild/aix-ppc64\",\n \"android arm64 LE\": \"@esbuild/android-arm64\",\n \"darwin arm64 LE\": \"@esbuild/darwin-arm64\",\n \"darwin x64 LE\": \"@esbuild/darwin-x64\",\n \"freebsd arm64 LE\": \"@esbuild/freebsd-arm64\",\n \"freebsd x64 LE\": \"@esbuild/freebsd-x64\",\n \"linux arm LE\": \"@esbuild/linux-arm\",\n \"linux arm64 LE\": \"@esbuild/linux-arm64\",\n \"linux ia32 LE\": \"@esbuild/linux-ia32\",\n \"linux mips64el LE\": \"@esbuild/linux-mips64el\",\n \"linux ppc64 LE\": \"@esbuild/linux-ppc64\",\n \"linux riscv64 LE\": \"@esbuild/linux-riscv64\",\n \"linux s390x BE\": \"@esbuild/linux-s390x\",\n \"linux x64 LE\": \"@esbuild/linux-x64\",\n \"linux loong64 LE\": \"@esbuild/linux-loong64\",\n \"netbsd arm64 LE\": \"@esbuild/netbsd-arm64\",\n \"netbsd x64 LE\": \"@esbuild/netbsd-x64\",\n \"openbsd arm64 LE\": \"@esbuild/openbsd-arm64\",\n \"openbsd x64 LE\": \"@esbuild/openbsd-x64\",\n \"sunos x64 LE\": \"@esbuild/sunos-x64\"\n};\nvar knownWebAssemblyFallbackPackages = {\n \"android arm LE\": \"@esbuild/android-arm\",\n \"android x64 LE\": \"@esbuild/android-x64\",\n \"openharmony arm64 LE\": \"@esbuild/openharmony-arm64\"\n};\nfunction pkgAndSubpathForCurrentPlatform() {\n let pkg;\n let subpath;\n let isWASM = false;\n let platformKey = `${process.platform} ${os.arch()} ${os.endianness()}`;\n if (platformKey in knownWindowsPackages) {\n pkg = knownWindowsPackages[platformKey];\n subpath = \"esbuild.exe\";\n } else if (platformKey in knownUnixlikePackages) {\n pkg = knownUnixlikePackages[platformKey];\n subpath = \"bin/esbuild\";\n } else if (platformKey in knownWebAssemblyFallbackPackages) {\n pkg = knownWebAssemblyFallbackPackages[platformKey];\n subpath = \"bin/esbuild\";\n isWASM = true;\n } else {\n throw new Error(`Unsupported platform: ${platformKey}`);\n }\n return { pkg, subpath, isWASM };\n}\nfunction pkgForSomeOtherPlatform() {\n const libMainJS = require.resolve(\"esbuild\");\n const nodeModulesDirectory = path.dirname(path.dirname(path.dirname(libMainJS)));\n if (path.basename(nodeModulesDirectory) === \"node_modules\") {\n for (const unixKey in knownUnixlikePackages) {\n try {\n const pkg = knownUnixlikePackages[unixKey];\n if (fs.existsSync(path.join(nodeModulesDirectory, pkg))) return pkg;\n } catch {\n }\n }\n for (const windowsKey in knownWindowsPackages) {\n try {\n const pkg = knownWindowsPackages[windowsKey];\n if (fs.existsSync(path.join(nodeModulesDirectory, pkg))) return pkg;\n } catch {\n }\n }\n }\n return null;\n}\nfunction downloadedBinPath(pkg, subpath) {\n const esbuildLibDir = path.dirname(require.resolve(\"esbuild\"));\n return path.join(esbuildLibDir, `downloaded-${pkg.replace(\"/\", \"-\")}-${path.basename(subpath)}`);\n}\nfunction generateBinPath() {\n if (isValidBinaryPath(ESBUILD_BINARY_PATH)) {\n if (!fs.existsSync(ESBUILD_BINARY_PATH)) {\n console.warn(`[esbuild] Ignoring bad configuration: ESBUILD_BINARY_PATH=${ESBUILD_BINARY_PATH}`);\n } else {\n return { binPath: ESBUILD_BINARY_PATH, isWASM: false };\n }\n }\n const { pkg, subpath, isWASM } = pkgAndSubpathForCurrentPlatform();\n let binPath;\n try {\n binPath = require.resolve(`${pkg}/${subpath}`);\n } catch (e) {\n binPath = downloadedBinPath(pkg, subpath);\n if (!fs.existsSync(binPath)) {\n try {\n require.resolve(pkg);\n } catch {\n const otherPkg = pkgForSomeOtherPlatform();\n if (otherPkg) {\n let suggestions = `\nSpecifically the \"${otherPkg}\" package is present but this platform\nneeds the \"${pkg}\" package instead. People often get into this\nsituation by installing esbuild on Windows or macOS and copying \"node_modules\"\ninto a Docker image that runs Linux, or by copying \"node_modules\" between\nWindows and WSL environments.\n\nIf you are installing with npm, you can try not copying the \"node_modules\"\ndirectory when you copy the files over, and running \"npm ci\" or \"npm install\"\non the destination platform after the copy. Or you could consider using yarn\ninstead of npm which has built-in support for installing a package on multiple\nplatforms simultaneously.\n\nIf you are installing with yarn, you can try listing both this platform and the\nother platform in your \".yarnrc.yml\" file using the \"supportedArchitectures\"\nfeature: https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures\nKeep in mind that this means multiple copies of esbuild will be present.\n`;\n if (pkg === packageDarwin_x64 && otherPkg === packageDarwin_arm64 || pkg === packageDarwin_arm64 && otherPkg === packageDarwin_x64) {\n suggestions = `\nSpecifically the \"${otherPkg}\" package is present but this platform\nneeds the \"${pkg}\" package instead. People often get into this\nsituation by installing esbuild with npm running inside of Rosetta 2 and then\ntrying to use it with node running outside of Rosetta 2, or vice versa (Rosetta\n2 is Apple's on-the-fly x86_64-to-arm64 translation service).\n\nIf you are installing with npm, you can try ensuring that both npm and node are\nnot running under Rosetta 2 and then reinstalling esbuild. This likely involves\nchanging how you installed npm and/or node. For example, installing node with\nthe universal installer here should work: https://nodejs.org/en/download/. Or\nyou could consider using yarn instead of npm which has built-in support for\ninstalling a package on multiple platforms simultaneously.\n\nIf you are installing with yarn, you can try listing both \"arm64\" and \"x64\"\nin your \".yarnrc.yml\" file using the \"supportedArchitectures\" feature:\nhttps://yarnpkg.com/configuration/yarnrc/#supportedArchitectures\nKeep in mind that this means multiple copies of esbuild will be present.\n`;\n }\n throw new Error(`\nYou installed esbuild for another platform than the one you're currently using.\nThis won't work because esbuild is written with native code and needs to\ninstall a platform-specific binary executable.\n${suggestions}\nAnother alternative is to use the \"esbuild-wasm\" package instead, which works\nthe same way on all platforms. But it comes with a heavy performance cost and\ncan sometimes be 10x slower than the \"esbuild\" package, so you may also not\nwant to do that.\n`);\n }\n throw new Error(`The package \"${pkg}\" could not be found, and is needed by esbuild.\n\nIf you are installing esbuild with npm, make sure that you don't specify the\n\"--no-optional\" or \"--omit=optional\" flags. The \"optionalDependencies\" feature\nof \"package.json\" is used by esbuild to install the correct binary executable\nfor your current platform.`);\n }\n throw e;\n }\n }\n if (/\\.zip\\//.test(binPath)) {\n let pnpapi;\n try {\n pnpapi = require(\"pnpapi\");\n } catch (e) {\n }\n if (pnpapi) {\n const root = pnpapi.getPackageInformation(pnpapi.topLevel).packageLocation;\n const binTargetPath = path.join(\n root,\n \"node_modules\",\n \".cache\",\n \"esbuild\",\n `pnpapi-${pkg.replace(\"/\", \"-\")}-${\"0.25.12\"}-${path.basename(subpath)}`\n );\n if (!fs.existsSync(binTargetPath)) {\n fs.mkdirSync(path.dirname(binTargetPath), { recursive: true });\n fs.copyFileSync(binPath, binTargetPath);\n fs.chmodSync(binTargetPath, 493);\n }\n return { binPath: binTargetPath, isWASM };\n }\n }\n return { binPath, isWASM };\n}\n\n// lib/npm/node.ts\nvar child_process = require(\"child_process\");\nvar crypto = require(\"crypto\");\nvar path2 = require(\"path\");\nvar fs2 = require(\"fs\");\nvar os2 = require(\"os\");\nvar tty = require(\"tty\");\nvar worker_threads;\nif (process.env.ESBUILD_WORKER_THREADS !== \"0\") {\n try {\n worker_threads = require(\"worker_threads\");\n } catch {\n }\n let [major, minor] = process.versions.node.split(\".\");\n if (\n // {\n if ((!ESBUILD_BINARY_PATH || false) && (path2.basename(__filename) !== \"main.js\" || path2.basename(__dirname) !== \"lib\")) {\n throw new Error(\n `The esbuild JavaScript API cannot be bundled. Please mark the \"esbuild\" package as external so it's not included in the bundle.\n\nMore information: The file containing the code for esbuild's JavaScript API (${__filename}) does not appear to be inside the esbuild package on the file system, which usually means that the esbuild package was bundled into another file. This is problematic because the API needs to run a binary executable inside the esbuild package which is located using a relative path from the API code to the executable. If the esbuild package is bundled, the relative path will be incorrect and the executable won't be found.`\n );\n }\n if (false) {\n return [\"node\", [path2.join(__dirname, \"..\", \"bin\", \"esbuild\")]];\n } else {\n const { binPath, isWASM } = generateBinPath();\n if (isWASM) {\n return [\"node\", [binPath]];\n } else {\n return [binPath, []];\n }\n }\n};\nvar isTTY = () => tty.isatty(2);\nvar fsSync = {\n readFile(tempFile, callback) {\n try {\n let contents = fs2.readFileSync(tempFile, \"utf8\");\n try {\n fs2.unlinkSync(tempFile);\n } catch {\n }\n callback(null, contents);\n } catch (err) {\n callback(err, null);\n }\n },\n writeFile(contents, callback) {\n try {\n let tempFile = randomFileName();\n fs2.writeFileSync(tempFile, contents);\n callback(tempFile);\n } catch {\n callback(null);\n }\n }\n};\nvar fsAsync = {\n readFile(tempFile, callback) {\n try {\n fs2.readFile(tempFile, \"utf8\", (err, contents) => {\n try {\n fs2.unlink(tempFile, () => callback(err, contents));\n } catch {\n callback(err, contents);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n },\n writeFile(contents, callback) {\n try {\n let tempFile = randomFileName();\n fs2.writeFile(tempFile, contents, (err) => err !== null ? callback(null) : callback(tempFile));\n } catch {\n callback(null);\n }\n }\n};\nvar version = \"0.25.12\";\nvar build = (options) => ensureServiceIsRunning().build(options);\nvar context = (buildOptions) => ensureServiceIsRunning().context(buildOptions);\nvar transform = (input, options) => ensureServiceIsRunning().transform(input, options);\nvar formatMessages = (messages, options) => ensureServiceIsRunning().formatMessages(messages, options);\nvar analyzeMetafile = (messages, options) => ensureServiceIsRunning().analyzeMetafile(messages, options);\nvar buildSync = (options) => {\n if (worker_threads && !isInternalWorkerThread) {\n if (!workerThreadService) workerThreadService = startWorkerThreadService(worker_threads);\n return workerThreadService.buildSync(options);\n }\n let result;\n runServiceSync((service) => service.buildOrContext({\n callName: \"buildSync\",\n refs: null,\n options,\n isTTY: isTTY(),\n defaultWD,\n callback: (err, res) => {\n if (err) throw err;\n result = res;\n }\n }));\n return result;\n};\nvar transformSync = (input, options) => {\n if (worker_threads && !isInternalWorkerThread) {\n if (!workerThreadService) workerThreadService = startWorkerThreadService(worker_threads);\n return workerThreadService.transformSync(input, options);\n }\n let result;\n runServiceSync((service) => service.transform({\n callName: \"transformSync\",\n refs: null,\n input,\n options: options || {},\n isTTY: isTTY(),\n fs: fsSync,\n callback: (err, res) => {\n if (err) throw err;\n result = res;\n }\n }));\n return result;\n};\nvar formatMessagesSync = (messages, options) => {\n if (worker_threads && !isInternalWorkerThread) {\n if (!workerThreadService) workerThreadService = startWorkerThreadService(worker_threads);\n return workerThreadService.formatMessagesSync(messages, options);\n }\n let result;\n runServiceSync((service) => service.formatMessages({\n callName: \"formatMessagesSync\",\n refs: null,\n messages,\n options,\n callback: (err, res) => {\n if (err) throw err;\n result = res;\n }\n }));\n return result;\n};\nvar analyzeMetafileSync = (metafile, options) => {\n if (worker_threads && !isInternalWorkerThread) {\n if (!workerThreadService) workerThreadService = startWorkerThreadService(worker_threads);\n return workerThreadService.analyzeMetafileSync(metafile, options);\n }\n let result;\n runServiceSync((service) => service.analyzeMetafile({\n callName: \"analyzeMetafileSync\",\n refs: null,\n metafile: typeof metafile === \"string\" ? metafile : JSON.stringify(metafile),\n options,\n callback: (err, res) => {\n if (err) throw err;\n result = res;\n }\n }));\n return result;\n};\nvar stop = () => {\n if (stopService) stopService();\n if (workerThreadService) workerThreadService.stop();\n return Promise.resolve();\n};\nvar initializeWasCalled = false;\nvar initialize = (options) => {\n options = validateInitializeOptions(options || {});\n if (options.wasmURL) throw new Error(`The \"wasmURL\" option only works in the browser`);\n if (options.wasmModule) throw new Error(`The \"wasmModule\" option only works in the browser`);\n if (options.worker) throw new Error(`The \"worker\" option only works in the browser`);\n if (initializeWasCalled) throw new Error('Cannot call \"initialize\" more than once');\n ensureServiceIsRunning();\n initializeWasCalled = true;\n return Promise.resolve();\n};\nvar defaultWD = process.cwd();\nvar longLivedService;\nvar stopService;\nvar ensureServiceIsRunning = () => {\n if (longLivedService) return longLivedService;\n let [command, args] = esbuildCommandAndArgs();\n let child = child_process.spawn(command, args.concat(`--service=${\"0.25.12\"}`, \"--ping\"), {\n windowsHide: true,\n stdio: [\"pipe\", \"pipe\", \"inherit\"],\n cwd: defaultWD\n });\n let { readFromStdout, afterClose, service } = createChannel({\n writeToStdin(bytes) {\n child.stdin.write(bytes, (err) => {\n if (err) afterClose(err);\n });\n },\n readFileSync: fs2.readFileSync,\n isSync: false,\n hasFS: true,\n esbuild: node_exports\n });\n child.stdin.on(\"error\", afterClose);\n child.on(\"error\", afterClose);\n const stdin = child.stdin;\n const stdout = child.stdout;\n stdout.on(\"data\", readFromStdout);\n stdout.on(\"end\", afterClose);\n stopService = () => {\n stdin.destroy();\n stdout.destroy();\n child.kill();\n initializeWasCalled = false;\n longLivedService = void 0;\n stopService = void 0;\n };\n let refCount = 0;\n child.unref();\n if (stdin.unref) {\n stdin.unref();\n }\n if (stdout.unref) {\n stdout.unref();\n }\n const refs = {\n ref() {\n if (++refCount === 1) child.ref();\n },\n unref() {\n if (--refCount === 0) child.unref();\n }\n };\n longLivedService = {\n build: (options) => new Promise((resolve, reject) => {\n service.buildOrContext({\n callName: \"build\",\n refs,\n options,\n isTTY: isTTY(),\n defaultWD,\n callback: (err, res) => err ? reject(err) : resolve(res)\n });\n }),\n context: (options) => new Promise((resolve, reject) => service.buildOrContext({\n callName: \"context\",\n refs,\n options,\n isTTY: isTTY(),\n defaultWD,\n callback: (err, res) => err ? reject(err) : resolve(res)\n })),\n transform: (input, options) => new Promise((resolve, reject) => service.transform({\n callName: \"transform\",\n refs,\n input,\n options: options || {},\n isTTY: isTTY(),\n fs: fsAsync,\n callback: (err, res) => err ? reject(err) : resolve(res)\n })),\n formatMessages: (messages, options) => new Promise((resolve, reject) => service.formatMessages({\n callName: \"formatMessages\",\n refs,\n messages,\n options,\n callback: (err, res) => err ? reject(err) : resolve(res)\n })),\n analyzeMetafile: (metafile, options) => new Promise((resolve, reject) => service.analyzeMetafile({\n callName: \"analyzeMetafile\",\n refs,\n metafile: typeof metafile === \"string\" ? metafile : JSON.stringify(metafile),\n options,\n callback: (err, res) => err ? reject(err) : resolve(res)\n }))\n };\n return longLivedService;\n};\nvar runServiceSync = (callback) => {\n let [command, args] = esbuildCommandAndArgs();\n let stdin = new Uint8Array();\n let { readFromStdout, afterClose, service } = createChannel({\n writeToStdin(bytes) {\n if (stdin.length !== 0) throw new Error(\"Must run at most one command\");\n stdin = bytes;\n },\n isSync: true,\n hasFS: true,\n esbuild: node_exports\n });\n callback(service);\n let stdout = child_process.execFileSync(command, args.concat(`--service=${\"0.25.12\"}`), {\n cwd: defaultWD,\n windowsHide: true,\n input: stdin,\n // We don't know how large the output could be. If it's too large, the\n // command will fail with ENOBUFS. Reserve 16mb for now since that feels\n // like it should be enough. Also allow overriding this with an environment\n // variable.\n maxBuffer: +process.env.ESBUILD_MAX_BUFFER || 16 * 1024 * 1024\n });\n readFromStdout(stdout);\n afterClose(null);\n};\nvar randomFileName = () => {\n return path2.join(os2.tmpdir(), `esbuild-${crypto.randomBytes(32).toString(\"hex\")}`);\n};\nvar workerThreadService = null;\nvar startWorkerThreadService = (worker_threads2) => {\n let { port1: mainPort, port2: workerPort } = new worker_threads2.MessageChannel();\n let worker = new worker_threads2.Worker(__filename, {\n workerData: { workerPort, defaultWD, esbuildVersion: \"0.25.12\" },\n transferList: [workerPort],\n // From node's documentation: https://nodejs.org/api/worker_threads.html\n //\n // Take care when launching worker threads from preload scripts (scripts loaded\n // and run using the `-r` command line flag). Unless the `execArgv` option is\n // explicitly set, new Worker threads automatically inherit the command line flags\n // from the running process and will preload the same preload scripts as the main\n // thread. If the preload script unconditionally launches a worker thread, every\n // thread spawned will spawn another until the application crashes.\n //\n execArgv: []\n });\n let nextID = 0;\n let fakeBuildError = (text) => {\n let error = new Error(`Build failed with 1 error:\nerror: ${text}`);\n let errors = [{ id: \"\", pluginName: \"\", text, location: null, notes: [], detail: void 0 }];\n error.errors = errors;\n error.warnings = [];\n return error;\n };\n let validateBuildSyncOptions = (options) => {\n if (!options) return;\n let plugins = options.plugins;\n if (plugins && plugins.length > 0) throw fakeBuildError(`Cannot use plugins in synchronous API calls`);\n };\n let applyProperties = (object, properties) => {\n for (let key in properties) {\n object[key] = properties[key];\n }\n };\n let runCallSync = (command, args) => {\n let id = nextID++;\n let sharedBuffer = new SharedArrayBuffer(8);\n let sharedBufferView = new Int32Array(sharedBuffer);\n let msg = { sharedBuffer, id, command, args };\n worker.postMessage(msg);\n let status = Atomics.wait(sharedBufferView, 0, 0);\n if (status !== \"ok\" && status !== \"not-equal\") throw new Error(\"Internal error: Atomics.wait() failed: \" + status);\n let { message: { id: id2, resolve, reject, properties } } = worker_threads2.receiveMessageOnPort(mainPort);\n if (id !== id2) throw new Error(`Internal error: Expected id ${id} but got id ${id2}`);\n if (reject) {\n applyProperties(reject, properties);\n throw reject;\n }\n return resolve;\n };\n worker.unref();\n return {\n buildSync(options) {\n validateBuildSyncOptions(options);\n return runCallSync(\"build\", [options]);\n },\n transformSync(input, options) {\n return runCallSync(\"transform\", [input, options]);\n },\n formatMessagesSync(messages, options) {\n return runCallSync(\"formatMessages\", [messages, options]);\n },\n analyzeMetafileSync(metafile, options) {\n return runCallSync(\"analyzeMetafile\", [metafile, options]);\n },\n stop() {\n worker.terminate();\n workerThreadService = null;\n }\n };\n};\nvar startSyncServiceWorker = () => {\n let workerPort = worker_threads.workerData.workerPort;\n let parentPort = worker_threads.parentPort;\n let extractProperties = (object) => {\n let properties = {};\n if (object && typeof object === \"object\") {\n for (let key in object) {\n properties[key] = object[key];\n }\n }\n return properties;\n };\n try {\n let service = ensureServiceIsRunning();\n defaultWD = worker_threads.workerData.defaultWD;\n parentPort.on(\"message\", (msg) => {\n (async () => {\n let { sharedBuffer, id, command, args } = msg;\n let sharedBufferView = new Int32Array(sharedBuffer);\n try {\n switch (command) {\n case \"build\":\n workerPort.postMessage({ id, resolve: await service.build(args[0]) });\n break;\n case \"transform\":\n workerPort.postMessage({ id, resolve: await service.transform(args[0], args[1]) });\n break;\n case \"formatMessages\":\n workerPort.postMessage({ id, resolve: await service.formatMessages(args[0], args[1]) });\n break;\n case \"analyzeMetafile\":\n workerPort.postMessage({ id, resolve: await service.analyzeMetafile(args[0], args[1]) });\n break;\n default:\n throw new Error(`Invalid command: ${command}`);\n }\n } catch (reject) {\n workerPort.postMessage({ id, reject, properties: extractProperties(reject) });\n }\n Atomics.add(sharedBufferView, 0, 1);\n Atomics.notify(sharedBufferView, 0, Infinity);\n })();\n });\n } catch (reject) {\n parentPort.on(\"message\", (msg) => {\n let { sharedBuffer, id } = msg;\n let sharedBufferView = new Int32Array(sharedBuffer);\n workerPort.postMessage({ id, reject, properties: extractProperties(reject) });\n Atomics.add(sharedBufferView, 0, 1);\n Atomics.notify(sharedBufferView, 0, Infinity);\n });\n }\n};\nif (isInternalWorkerThread) {\n startSyncServiceWorker();\n}\nvar node_default = node_exports;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n analyzeMetafile,\n analyzeMetafileSync,\n build,\n buildSync,\n context,\n formatMessages,\n formatMessagesSync,\n initialize,\n stop,\n transform,\n transformSync,\n version\n});\n"], - "mappings": "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", - "names": [] -} diff --git a/node_modules/.vite/deps/three.js b/node_modules/.vite/deps/three.js index 24b4754..22741da 100644 --- a/node_modules/.vite/deps/three.js +++ b/node_modules/.vite/deps/three.js @@ -427,8 +427,7 @@ import { setConsoleFunction, warn, warnOnce -} from "./chunk-22FAE54D.js"; -import "./chunk-VUNV25KB.js"; +} from "./chunk-5P7KF7VS.js"; export { ACESFilmicToneMapping, AddEquation, diff --git a/node_modules/.vite/deps/three_examples_jsm_controls_OrbitControls__js.js b/node_modules/.vite/deps/three_examples_jsm_controls_OrbitControls__js.js index 3878759..75c49d7 100644 --- a/node_modules/.vite/deps/three_examples_jsm_controls_OrbitControls__js.js +++ b/node_modules/.vite/deps/three_examples_jsm_controls_OrbitControls__js.js @@ -9,8 +9,7 @@ import { TOUCH, Vector2, Vector3 -} from "./chunk-22FAE54D.js"; -import "./chunk-VUNV25KB.js"; +} from "./chunk-5P7KF7VS.js"; // node_modules/three/examples/jsm/controls/OrbitControls.js var _changeEvent = { type: "change" }; diff --git a/node_modules/.vite/deps/three_examples_jsm_controls_OrbitControls__js.js.map b/node_modules/.vite/deps/three_examples_jsm_controls_OrbitControls__js.js.map index f3fb554..65cc654 100644 --- a/node_modules/.vite/deps/three_examples_jsm_controls_OrbitControls__js.js.map +++ b/node_modules/.vite/deps/three_examples_jsm_controls_OrbitControls__js.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../three/examples/jsm/controls/OrbitControls.js"], "sourcesContent": ["import {\n\tControls,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3,\n\tPlane,\n\tRay,\n\tMathUtils\n} from 'three';\n\n/**\n * Fires when the camera has been transformed by the controls.\n *\n * @event OrbitControls#change\n * @type {Object}\n */\nconst _changeEvent = { type: 'change' };\n\n/**\n * Fires when an interaction was initiated.\n *\n * @event OrbitControls#start\n * @type {Object}\n */\nconst _startEvent = { type: 'start' };\n\n/**\n * Fires when an interaction has finished.\n *\n * @event OrbitControls#end\n * @type {Object}\n */\nconst _endEvent = { type: 'end' };\n\nconst _ray = new Ray();\nconst _plane = new Plane();\nconst _TILT_LIMIT = Math.cos( 70 * MathUtils.DEG2RAD );\n\nconst _v = new Vector3();\nconst _twoPI = 2 * Math.PI;\n\nconst _STATE = {\n\tNONE: - 1,\n\tROTATE: 0,\n\tDOLLY: 1,\n\tPAN: 2,\n\tTOUCH_ROTATE: 3,\n\tTOUCH_PAN: 4,\n\tTOUCH_DOLLY_PAN: 5,\n\tTOUCH_DOLLY_ROTATE: 6\n};\nconst _EPS = 0.000001;\n\n\n/**\n * Orbit controls allow the camera to orbit around a target.\n *\n * OrbitControls performs orbiting, dollying (zooming), and panning. Unlike {@link TrackballControls},\n * it maintains the \"up\" direction `object.up` (+Y by default).\n *\n * - Orbit: Left mouse / touch: one-finger move.\n * - Zoom: Middle mouse, or mousewheel / touch: two-finger spread or squish.\n * - Pan: Right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move.\n *\n * ```js\n * const controls = new OrbitControls( camera, renderer.domElement );\n *\n * // controls.update() must be called after any manual changes to the camera's transform\n * camera.position.set( 0, 20, 100 );\n * controls.update();\n *\n * function animate() {\n *\n * \t// required if controls.enableDamping or controls.autoRotate are set to true\n * \tcontrols.update();\n *\n * \trenderer.render( scene, camera );\n *\n * }\n * ```\n *\n * @augments Controls\n * @three_import import { OrbitControls } from 'three/addons/controls/OrbitControls.js';\n */\nclass OrbitControls extends Controls {\n\n\t/**\n\t * Constructs a new controls instance.\n\t *\n\t * @param {Object3D} object - The object that is managed by the controls.\n\t * @param {?HTMLElement} domElement - The HTML element used for event listeners.\n\t */\n\tconstructor( object, domElement = null ) {\n\n\t\tsuper( object, domElement );\n\n\t\tthis.state = _STATE.NONE;\n\n\t\t/**\n\t\t * The focus point of the controls, the `object` orbits around this.\n\t\t * It can be updated manually at any point to change the focus of the controls.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.target = new Vector3();\n\n\t\t/**\n\t\t * The focus point of the `minTargetRadius` and `maxTargetRadius` limits.\n\t\t * It can be updated manually at any point to change the center of interest\n\t\t * for the `target`.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.cursor = new Vector3();\n\n\t\t/**\n\t\t * How far you can dolly in (perspective camera only).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.minDistance = 0;\n\n\t\t/**\n\t\t * How far you can dolly out (perspective camera only).\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.maxDistance = Infinity;\n\n\t\t/**\n\t\t * How far you can zoom in (orthographic camera only).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.minZoom = 0;\n\n\t\t/**\n\t\t * How far you can zoom out (orthographic camera only).\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.maxZoom = Infinity;\n\n\t\t/**\n\t\t * How close you can get the target to the 3D `cursor`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.minTargetRadius = 0;\n\n\t\t/**\n\t\t * How far you can move the target from the 3D `cursor`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tthis.maxTargetRadius = Infinity;\n\n\t\t/**\n\t\t * How far you can orbit vertically, lower limit. Range is `[0, Math.PI]` radians.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.minPolarAngle = 0;\n\n\t\t/**\n\t\t * How far you can orbit vertically, upper limit. Range is `[0, Math.PI]` radians.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Math.PI\n\t\t */\n\t\tthis.maxPolarAngle = Math.PI;\n\n\t\t/**\n\t\t * How far you can orbit horizontally, lower limit. If set, the interval `[ min, max ]`\n\t\t * must be a sub-interval of `[ - 2 PI, 2 PI ]`, with `( max - min < 2 PI )`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default -Infinity\n\t\t */\n\t\tthis.minAzimuthAngle = - Infinity;\n\n\t\t/**\n\t\t * How far you can orbit horizontally, upper limit. If set, the interval `[ min, max ]`\n\t\t * must be a sub-interval of `[ - 2 PI, 2 PI ]`, with `( max - min < 2 PI )`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default -Infinity\n\t\t */\n\t\tthis.maxAzimuthAngle = Infinity;\n\n\t\t/**\n\t\t * Set to `true` to enable damping (inertia), which can be used to give a sense of weight\n\t\t * to the controls. Note that if this is enabled, you must call `update()` in your animation\n\t\t * loop.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.enableDamping = false;\n\n\t\t/**\n\t\t * The damping inertia used if `enableDamping` is set to `true`.\n\t\t *\n\t\t * Note that for this to work, you must call `update()` in your animation loop.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.05\n\t\t */\n\t\tthis.dampingFactor = 0.05;\n\n\t\t/**\n\t\t * Enable or disable zooming (dollying) of the camera.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.enableZoom = true;\n\n\t\t/**\n\t\t * Speed of zooming / dollying.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.zoomSpeed = 1.0;\n\n\t\t/**\n\t\t * Enable or disable horizontal and vertical rotation of the camera.\n\t\t *\n\t\t * Note that it is possible to disable a single axis by setting the min and max of the\n\t\t * `minPolarAngle` or `minAzimuthAngle` to the same value, which will cause the vertical\n\t\t * or horizontal rotation to be fixed at that value.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.enableRotate = true;\n\n\t\t/**\n\t\t * Speed of rotation.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.rotateSpeed = 1.0;\n\n\t\t/**\n\t\t * How fast to rotate the camera when the keyboard is used.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.keyRotateSpeed = 1.0;\n\n\t\t/**\n\t\t * Enable or disable camera panning.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.enablePan = true;\n\n\t\t/**\n\t\t * Speed of panning.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.panSpeed = 1.0;\n\n\t\t/**\n\t\t * Defines how the camera's position is translated when panning. If `true`, the camera pans\n\t\t * in screen space. Otherwise, the camera pans in the plane orthogonal to the camera's up\n\t\t * direction.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.screenSpacePanning = true;\n\n\t\t/**\n\t\t * How fast to pan the camera when the keyboard is used in\n\t\t * pixels per keypress.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 7\n\t\t */\n\t\tthis.keyPanSpeed = 7.0;\n\n\t\t/**\n\t\t * Setting this property to `true` allows to zoom to the cursor's position.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.zoomToCursor = false;\n\n\t\t/**\n\t\t * Set to true to automatically rotate around the target\n\t\t *\n\t\t * Note that if this is enabled, you must call `update()` in your animation loop.\n\t\t * If you want the auto-rotate speed to be independent of the frame rate (the refresh\n\t\t * rate of the display), you must pass the time `deltaTime`, in seconds, to `update()`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.autoRotate = false;\n\n\t\t/**\n\t\t * How fast to rotate around the target if `autoRotate` is `true`. The default equates to 30 seconds\n\t\t * per orbit at 60fps.\n\t\t *\n\t\t * Note that if `autoRotate` is enabled, you must call `update()` in your animation loop.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2\n\t\t */\n\t\tthis.autoRotateSpeed = 2.0;\n\n\t\t/**\n\t\t * This object contains references to the keycodes for controlling camera panning.\n\t\t *\n\t\t * ```js\n\t\t * controls.keys = {\n\t\t * \tLEFT: 'ArrowLeft', //left arrow\n\t\t * \tUP: 'ArrowUp', // up arrow\n\t\t * \tRIGHT: 'ArrowRight', // right arrow\n\t\t * \tBOTTOM: 'ArrowDown' // down arrow\n\t\t * }\n\t\t * ```\n\t\t * @type {Object}\n\t\t */\n\t\tthis.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' };\n\n\t\t/**\n\t\t * This object contains references to the mouse actions used by the controls.\n\t\t *\n\t\t * ```js\n\t\t * controls.mouseButtons = {\n\t\t * \tLEFT: THREE.MOUSE.ROTATE,\n\t\t * \tMIDDLE: THREE.MOUSE.DOLLY,\n\t\t * \tRIGHT: THREE.MOUSE.PAN\n\t\t * }\n\t\t * ```\n\t\t * @type {Object}\n\t\t */\n\t\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t\t/**\n\t\t * This object contains references to the touch actions used by the controls.\n\t\t *\n\t\t * ```js\n\t\t * controls.mouseButtons = {\n\t\t * \tONE: THREE.TOUCH.ROTATE,\n\t\t * \tTWO: THREE.TOUCH.DOLLY_PAN\n\t\t * }\n\t\t * ```\n\t\t * @type {Object}\n\t\t */\n\t\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t\t/**\n\t\t * Used internally by `saveState()` and `reset()`.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.target0 = this.target.clone();\n\n\t\t/**\n\t\t * Used internally by `saveState()` and `reset()`.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.position0 = this.object.position.clone();\n\n\t\t/**\n\t\t * Used internally by `saveState()` and `reset()`.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.zoom0 = this.object.zoom;\n\n\t\t// the target DOM element for key events\n\t\tthis._domElementKeyEvents = null;\n\n\t\t// internals\n\n\t\tthis._lastPosition = new Vector3();\n\t\tthis._lastQuaternion = new Quaternion();\n\t\tthis._lastTargetPosition = new Vector3();\n\n\t\t// so camera.up is the orbit axis\n\t\tthis._quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\tthis._quatInverse = this._quat.clone().invert();\n\n\t\t// current position in spherical coordinates\n\t\tthis._spherical = new Spherical();\n\t\tthis._sphericalDelta = new Spherical();\n\n\t\tthis._scale = 1;\n\t\tthis._panOffset = new Vector3();\n\n\t\tthis._rotateStart = new Vector2();\n\t\tthis._rotateEnd = new Vector2();\n\t\tthis._rotateDelta = new Vector2();\n\n\t\tthis._panStart = new Vector2();\n\t\tthis._panEnd = new Vector2();\n\t\tthis._panDelta = new Vector2();\n\n\t\tthis._dollyStart = new Vector2();\n\t\tthis._dollyEnd = new Vector2();\n\t\tthis._dollyDelta = new Vector2();\n\n\t\tthis._dollyDirection = new Vector3();\n\t\tthis._mouse = new Vector2();\n\t\tthis._performCursorZoom = false;\n\n\t\tthis._pointers = [];\n\t\tthis._pointerPositions = {};\n\n\t\tthis._controlActive = false;\n\n\t\t// event listeners\n\n\t\tthis._onPointerMove = onPointerMove.bind( this );\n\t\tthis._onPointerDown = onPointerDown.bind( this );\n\t\tthis._onPointerUp = onPointerUp.bind( this );\n\t\tthis._onContextMenu = onContextMenu.bind( this );\n\t\tthis._onMouseWheel = onMouseWheel.bind( this );\n\t\tthis._onKeyDown = onKeyDown.bind( this );\n\n\t\tthis._onTouchStart = onTouchStart.bind( this );\n\t\tthis._onTouchMove = onTouchMove.bind( this );\n\n\t\tthis._onMouseDown = onMouseDown.bind( this );\n\t\tthis._onMouseMove = onMouseMove.bind( this );\n\n\t\tthis._interceptControlDown = interceptControlDown.bind( this );\n\t\tthis._interceptControlUp = interceptControlUp.bind( this );\n\n\t\t//\n\n\t\tif ( this.domElement !== null ) {\n\n\t\t\tthis.connect( this.domElement );\n\n\t\t}\n\n\t\tthis.update();\n\n\t}\n\n\tconnect( element ) {\n\n\t\tsuper.connect( element );\n\n\t\tthis.domElement.addEventListener( 'pointerdown', this._onPointerDown );\n\t\tthis.domElement.addEventListener( 'pointercancel', this._onPointerUp );\n\n\t\tthis.domElement.addEventListener( 'contextmenu', this._onContextMenu );\n\t\tthis.domElement.addEventListener( 'wheel', this._onMouseWheel, { passive: false } );\n\n\t\tconst document = this.domElement.getRootNode(); // offscreen canvas compatibility\n\t\tdocument.addEventListener( 'keydown', this._interceptControlDown, { passive: true, capture: true } );\n\n\t\tthis.domElement.style.touchAction = 'none'; // disable touch scroll\n\n\t}\n\n\tdisconnect() {\n\n\t\tthis.domElement.removeEventListener( 'pointerdown', this._onPointerDown );\n\t\tthis.domElement.removeEventListener( 'pointermove', this._onPointerMove );\n\t\tthis.domElement.removeEventListener( 'pointerup', this._onPointerUp );\n\t\tthis.domElement.removeEventListener( 'pointercancel', this._onPointerUp );\n\n\t\tthis.domElement.removeEventListener( 'wheel', this._onMouseWheel );\n\t\tthis.domElement.removeEventListener( 'contextmenu', this._onContextMenu );\n\n\t\tthis.stopListenToKeyEvents();\n\n\t\tconst document = this.domElement.getRootNode(); // offscreen canvas compatibility\n\t\tdocument.removeEventListener( 'keydown', this._interceptControlDown, { capture: true } );\n\n\t\tthis.domElement.style.touchAction = 'auto';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.disconnect();\n\n\t}\n\n\t/**\n\t * Get the current vertical rotation, in radians.\n\t *\n\t * @return {number} The current vertical rotation, in radians.\n\t */\n\tgetPolarAngle() {\n\n\t\treturn this._spherical.phi;\n\n\t}\n\n\t/**\n\t * Get the current horizontal rotation, in radians.\n\t *\n\t * @return {number} The current horizontal rotation, in radians.\n\t */\n\tgetAzimuthalAngle() {\n\n\t\treturn this._spherical.theta;\n\n\t}\n\n\t/**\n\t * Returns the distance from the camera to the target.\n\t *\n\t * @return {number} The distance from the camera to the target.\n\t */\n\tgetDistance() {\n\n\t\treturn this.object.position.distanceTo( this.target );\n\n\t}\n\n\t/**\n\t * Adds key event listeners to the given DOM element.\n\t * `window` is a recommended argument for using this method.\n\t *\n\t * @param {HTMLElement} domElement - The DOM element\n\t */\n\tlistenToKeyEvents( domElement ) {\n\n\t\tdomElement.addEventListener( 'keydown', this._onKeyDown );\n\t\tthis._domElementKeyEvents = domElement;\n\n\t}\n\n\t/**\n\t * Removes the key event listener previously defined with `listenToKeyEvents()`.\n\t */\n\tstopListenToKeyEvents() {\n\n\t\tif ( this._domElementKeyEvents !== null ) {\n\n\t\t\tthis._domElementKeyEvents.removeEventListener( 'keydown', this._onKeyDown );\n\t\t\tthis._domElementKeyEvents = null;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Save the current state of the controls. This can later be recovered with `reset()`.\n\t */\n\tsaveState() {\n\n\t\tthis.target0.copy( this.target );\n\t\tthis.position0.copy( this.object.position );\n\t\tthis.zoom0 = this.object.zoom;\n\n\t}\n\n\t/**\n\t * Reset the controls to their state from either the last time the `saveState()`\n\t * was called, or the initial state.\n\t */\n\treset() {\n\n\t\tthis.target.copy( this.target0 );\n\t\tthis.object.position.copy( this.position0 );\n\t\tthis.object.zoom = this.zoom0;\n\n\t\tthis.object.updateProjectionMatrix();\n\t\tthis.dispatchEvent( _changeEvent );\n\n\t\tthis.update();\n\n\t\tthis.state = _STATE.NONE;\n\n\t}\n\n\tupdate( deltaTime = null ) {\n\n\t\tconst position = this.object.position;\n\n\t\t_v.copy( position ).sub( this.target );\n\n\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t_v.applyQuaternion( this._quat );\n\n\t\t// angle from z-axis around y-axis\n\t\tthis._spherical.setFromVector3( _v );\n\n\t\tif ( this.autoRotate && this.state === _STATE.NONE ) {\n\n\t\t\tthis._rotateLeft( this._getAutoRotationAngle( deltaTime ) );\n\n\t\t}\n\n\t\tif ( this.enableDamping ) {\n\n\t\t\tthis._spherical.theta += this._sphericalDelta.theta * this.dampingFactor;\n\t\t\tthis._spherical.phi += this._sphericalDelta.phi * this.dampingFactor;\n\n\t\t} else {\n\n\t\t\tthis._spherical.theta += this._sphericalDelta.theta;\n\t\t\tthis._spherical.phi += this._sphericalDelta.phi;\n\n\t\t}\n\n\t\t// restrict theta to be between desired limits\n\n\t\tlet min = this.minAzimuthAngle;\n\t\tlet max = this.maxAzimuthAngle;\n\n\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\tif ( min < - Math.PI ) min += _twoPI; else if ( min > Math.PI ) min -= _twoPI;\n\n\t\t\tif ( max < - Math.PI ) max += _twoPI; else if ( max > Math.PI ) max -= _twoPI;\n\n\t\t\tif ( min <= max ) {\n\n\t\t\t\tthis._spherical.theta = Math.max( min, Math.min( max, this._spherical.theta ) );\n\n\t\t\t} else {\n\n\t\t\t\tthis._spherical.theta = ( this._spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\tMath.max( min, this._spherical.theta ) :\n\t\t\t\t\tMath.min( max, this._spherical.theta );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restrict phi to be between desired limits\n\t\tthis._spherical.phi = Math.max( this.minPolarAngle, Math.min( this.maxPolarAngle, this._spherical.phi ) );\n\n\t\tthis._spherical.makeSafe();\n\n\n\t\t// move target to panned location\n\n\t\tif ( this.enableDamping === true ) {\n\n\t\t\tthis.target.addScaledVector( this._panOffset, this.dampingFactor );\n\n\t\t} else {\n\n\t\t\tthis.target.add( this._panOffset );\n\n\t\t}\n\n\t\t// Limit the target distance from the cursor to create a sphere around the center of interest\n\t\tthis.target.sub( this.cursor );\n\t\tthis.target.clampLength( this.minTargetRadius, this.maxTargetRadius );\n\t\tthis.target.add( this.cursor );\n\n\t\tlet zoomChanged = false;\n\t\t// adjust the camera position based on zoom only if we're not zooming to the cursor or if it's an ortho camera\n\t\t// we adjust zoom later in these cases\n\t\tif ( this.zoomToCursor && this._performCursorZoom || this.object.isOrthographicCamera ) {\n\n\t\t\tthis._spherical.radius = this._clampDistance( this._spherical.radius );\n\n\t\t} else {\n\n\t\t\tconst prevRadius = this._spherical.radius;\n\t\t\tthis._spherical.radius = this._clampDistance( this._spherical.radius * this._scale );\n\t\t\tzoomChanged = prevRadius != this._spherical.radius;\n\n\t\t}\n\n\t\t_v.setFromSpherical( this._spherical );\n\n\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t_v.applyQuaternion( this._quatInverse );\n\n\t\tposition.copy( this.target ).add( _v );\n\n\t\tthis.object.lookAt( this.target );\n\n\t\tif ( this.enableDamping === true ) {\n\n\t\t\tthis._sphericalDelta.theta *= ( 1 - this.dampingFactor );\n\t\t\tthis._sphericalDelta.phi *= ( 1 - this.dampingFactor );\n\n\t\t\tthis._panOffset.multiplyScalar( 1 - this.dampingFactor );\n\n\t\t} else {\n\n\t\t\tthis._sphericalDelta.set( 0, 0, 0 );\n\n\t\t\tthis._panOffset.set( 0, 0, 0 );\n\n\t\t}\n\n\t\t// adjust camera position\n\t\tif ( this.zoomToCursor && this._performCursorZoom ) {\n\n\t\t\tlet newRadius = null;\n\t\t\tif ( this.object.isPerspectiveCamera ) {\n\n\t\t\t\t// move the camera down the pointer ray\n\t\t\t\t// this method avoids floating point error\n\t\t\t\tconst prevRadius = _v.length();\n\t\t\t\tnewRadius = this._clampDistance( prevRadius * this._scale );\n\n\t\t\t\tconst radiusDelta = prevRadius - newRadius;\n\t\t\t\tthis.object.position.addScaledVector( this._dollyDirection, radiusDelta );\n\t\t\t\tthis.object.updateMatrixWorld();\n\n\t\t\t\tzoomChanged = !! radiusDelta;\n\n\t\t\t} else if ( this.object.isOrthographicCamera ) {\n\n\t\t\t\t// adjust the ortho camera position based on zoom changes\n\t\t\t\tconst mouseBefore = new Vector3( this._mouse.x, this._mouse.y, 0 );\n\t\t\t\tmouseBefore.unproject( this.object );\n\n\t\t\t\tconst prevZoom = this.object.zoom;\n\t\t\t\tthis.object.zoom = Math.max( this.minZoom, Math.min( this.maxZoom, this.object.zoom / this._scale ) );\n\t\t\t\tthis.object.updateProjectionMatrix();\n\n\t\t\t\tzoomChanged = prevZoom !== this.object.zoom;\n\n\t\t\t\tconst mouseAfter = new Vector3( this._mouse.x, this._mouse.y, 0 );\n\t\t\t\tmouseAfter.unproject( this.object );\n\n\t\t\t\tthis.object.position.sub( mouseAfter ).add( mouseBefore );\n\t\t\t\tthis.object.updateMatrixWorld();\n\n\t\t\t\tnewRadius = _v.length();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.' );\n\t\t\t\tthis.zoomToCursor = false;\n\n\t\t\t}\n\n\t\t\t// handle the placement of the target\n\t\t\tif ( newRadius !== null ) {\n\n\t\t\t\tif ( this.screenSpacePanning ) {\n\n\t\t\t\t\t// position the orbit target in front of the new camera position\n\t\t\t\t\tthis.target.set( 0, 0, - 1 )\n\t\t\t\t\t\t.transformDirection( this.object.matrix )\n\t\t\t\t\t\t.multiplyScalar( newRadius )\n\t\t\t\t\t\t.add( this.object.position );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// get the ray and translation plane to compute target\n\t\t\t\t\t_ray.origin.copy( this.object.position );\n\t\t\t\t\t_ray.direction.set( 0, 0, - 1 ).transformDirection( this.object.matrix );\n\n\t\t\t\t\t// if the camera is 20 degrees above the horizon then don't adjust the focus target to avoid\n\t\t\t\t\t// extremely large values\n\t\t\t\t\tif ( Math.abs( this.object.up.dot( _ray.direction ) ) < _TILT_LIMIT ) {\n\n\t\t\t\t\t\tthis.object.lookAt( this.target );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_plane.setFromNormalAndCoplanarPoint( this.object.up, this.target );\n\t\t\t\t\t\t_ray.intersectPlane( _plane, this.target );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( this.object.isOrthographicCamera ) {\n\n\t\t\tconst prevZoom = this.object.zoom;\n\t\t\tthis.object.zoom = Math.max( this.minZoom, Math.min( this.maxZoom, this.object.zoom / this._scale ) );\n\n\t\t\tif ( prevZoom !== this.object.zoom ) {\n\n\t\t\t\tthis.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._scale = 1;\n\t\tthis._performCursorZoom = false;\n\n\t\t// update condition is:\n\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\tif ( zoomChanged ||\n\t\t\tthis._lastPosition.distanceToSquared( this.object.position ) > _EPS ||\n\t\t\t8 * ( 1 - this._lastQuaternion.dot( this.object.quaternion ) ) > _EPS ||\n\t\t\tthis._lastTargetPosition.distanceToSquared( this.target ) > _EPS ) {\n\n\t\t\tthis.dispatchEvent( _changeEvent );\n\n\t\t\tthis._lastPosition.copy( this.object.position );\n\t\t\tthis._lastQuaternion.copy( this.object.quaternion );\n\t\t\tthis._lastTargetPosition.copy( this.target );\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t_getAutoRotationAngle( deltaTime ) {\n\n\t\tif ( deltaTime !== null ) {\n\n\t\t\treturn ( _twoPI / 60 * this.autoRotateSpeed ) * deltaTime;\n\n\t\t} else {\n\n\t\t\treturn _twoPI / 60 / 60 * this.autoRotateSpeed;\n\n\t\t}\n\n\t}\n\n\t_getZoomScale( delta ) {\n\n\t\tconst normalizedDelta = Math.abs( delta * 0.01 );\n\t\treturn Math.pow( 0.95, this.zoomSpeed * normalizedDelta );\n\n\t}\n\n\t_rotateLeft( angle ) {\n\n\t\tthis._sphericalDelta.theta -= angle;\n\n\t}\n\n\t_rotateUp( angle ) {\n\n\t\tthis._sphericalDelta.phi -= angle;\n\n\t}\n\n\t_panLeft( distance, objectMatrix ) {\n\n\t\t_v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t_v.multiplyScalar( - distance );\n\n\t\tthis._panOffset.add( _v );\n\n\t}\n\n\t_panUp( distance, objectMatrix ) {\n\n\t\tif ( this.screenSpacePanning === true ) {\n\n\t\t\t_v.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t} else {\n\n\t\t\t_v.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t_v.crossVectors( this.object.up, _v );\n\n\t\t}\n\n\t\t_v.multiplyScalar( distance );\n\n\t\tthis._panOffset.add( _v );\n\n\t}\n\n\t// deltaX and deltaY are in pixels; right and down are positive\n\t_pan( deltaX, deltaY ) {\n\n\t\tconst element = this.domElement;\n\n\t\tif ( this.object.isPerspectiveCamera ) {\n\n\t\t\t// perspective\n\t\t\tconst position = this.object.position;\n\t\t\t_v.copy( position ).sub( this.target );\n\t\t\tlet targetDistance = _v.length();\n\n\t\t\t// half of the fov is center to top of screen\n\t\t\ttargetDistance *= Math.tan( ( this.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\tthis._panLeft( 2 * deltaX * targetDistance / element.clientHeight, this.object.matrix );\n\t\t\tthis._panUp( 2 * deltaY * targetDistance / element.clientHeight, this.object.matrix );\n\n\t\t} else if ( this.object.isOrthographicCamera ) {\n\n\t\t\t// orthographic\n\t\t\tthis._panLeft( deltaX * ( this.object.right - this.object.left ) / this.object.zoom / element.clientWidth, this.object.matrix );\n\t\t\tthis._panUp( deltaY * ( this.object.top - this.object.bottom ) / this.object.zoom / element.clientHeight, this.object.matrix );\n\n\t\t} else {\n\n\t\t\t// camera neither orthographic nor perspective\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\tthis.enablePan = false;\n\n\t\t}\n\n\t}\n\n\t_dollyOut( dollyScale ) {\n\n\t\tif ( this.object.isPerspectiveCamera || this.object.isOrthographicCamera ) {\n\n\t\t\tthis._scale /= dollyScale;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tthis.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\t_dollyIn( dollyScale ) {\n\n\t\tif ( this.object.isPerspectiveCamera || this.object.isOrthographicCamera ) {\n\n\t\t\tthis._scale *= dollyScale;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tthis.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\t_updateZoomParameters( x, y ) {\n\n\t\tif ( ! this.zoomToCursor ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._performCursorZoom = true;\n\n\t\tconst rect = this.domElement.getBoundingClientRect();\n\t\tconst dx = x - rect.left;\n\t\tconst dy = y - rect.top;\n\t\tconst w = rect.width;\n\t\tconst h = rect.height;\n\n\t\tthis._mouse.x = ( dx / w ) * 2 - 1;\n\t\tthis._mouse.y = - ( dy / h ) * 2 + 1;\n\n\t\tthis._dollyDirection.set( this._mouse.x, this._mouse.y, 1 ).unproject( this.object ).sub( this.object.position ).normalize();\n\n\t}\n\n\t_clampDistance( dist ) {\n\n\t\treturn Math.max( this.minDistance, Math.min( this.maxDistance, dist ) );\n\n\t}\n\n\t//\n\t// event callbacks - update the object state\n\t//\n\n\t_handleMouseDownRotate( event ) {\n\n\t\tthis._rotateStart.set( event.clientX, event.clientY );\n\n\t}\n\n\t_handleMouseDownDolly( event ) {\n\n\t\tthis._updateZoomParameters( event.clientX, event.clientX );\n\t\tthis._dollyStart.set( event.clientX, event.clientY );\n\n\t}\n\n\t_handleMouseDownPan( event ) {\n\n\t\tthis._panStart.set( event.clientX, event.clientY );\n\n\t}\n\n\t_handleMouseMoveRotate( event ) {\n\n\t\tthis._rotateEnd.set( event.clientX, event.clientY );\n\n\t\tthis._rotateDelta.subVectors( this._rotateEnd, this._rotateStart ).multiplyScalar( this.rotateSpeed );\n\n\t\tconst element = this.domElement;\n\n\t\tthis._rotateLeft( _twoPI * this._rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\tthis._rotateUp( _twoPI * this._rotateDelta.y / element.clientHeight );\n\n\t\tthis._rotateStart.copy( this._rotateEnd );\n\n\t\tthis.update();\n\n\t}\n\n\t_handleMouseMoveDolly( event ) {\n\n\t\tthis._dollyEnd.set( event.clientX, event.clientY );\n\n\t\tthis._dollyDelta.subVectors( this._dollyEnd, this._dollyStart );\n\n\t\tif ( this._dollyDelta.y > 0 ) {\n\n\t\t\tthis._dollyOut( this._getZoomScale( this._dollyDelta.y ) );\n\n\t\t} else if ( this._dollyDelta.y < 0 ) {\n\n\t\t\tthis._dollyIn( this._getZoomScale( this._dollyDelta.y ) );\n\n\t\t}\n\n\t\tthis._dollyStart.copy( this._dollyEnd );\n\n\t\tthis.update();\n\n\t}\n\n\t_handleMouseMovePan( event ) {\n\n\t\tthis._panEnd.set( event.clientX, event.clientY );\n\n\t\tthis._panDelta.subVectors( this._panEnd, this._panStart ).multiplyScalar( this.panSpeed );\n\n\t\tthis._pan( this._panDelta.x, this._panDelta.y );\n\n\t\tthis._panStart.copy( this._panEnd );\n\n\t\tthis.update();\n\n\t}\n\n\t_handleMouseWheel( event ) {\n\n\t\tthis._updateZoomParameters( event.clientX, event.clientY );\n\n\t\tif ( event.deltaY < 0 ) {\n\n\t\t\tthis._dollyIn( this._getZoomScale( event.deltaY ) );\n\n\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\tthis._dollyOut( this._getZoomScale( event.deltaY ) );\n\n\t\t}\n\n\t\tthis.update();\n\n\t}\n\n\t_handleKeyDown( event ) {\n\n\t\tlet needsUpdate = false;\n\n\t\tswitch ( event.code ) {\n\n\t\t\tcase this.keys.UP:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( this.enableRotate ) {\n\n\t\t\t\t\t\tthis._rotateUp( _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( this.enablePan ) {\n\n\t\t\t\t\t\tthis._pan( 0, this.keyPanSpeed );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase this.keys.BOTTOM:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( this.enableRotate ) {\n\n\t\t\t\t\t\tthis._rotateUp( - _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( this.enablePan ) {\n\n\t\t\t\t\t\tthis._pan( 0, - this.keyPanSpeed );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase this.keys.LEFT:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( this.enableRotate ) {\n\n\t\t\t\t\t\tthis._rotateLeft( _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( this.enablePan ) {\n\n\t\t\t\t\t\tthis._pan( this.keyPanSpeed, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase this.keys.RIGHT:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( this.enableRotate ) {\n\n\t\t\t\t\t\tthis._rotateLeft( - _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( this.enablePan ) {\n\n\t\t\t\t\t\tthis._pan( - this.keyPanSpeed, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\tevent.preventDefault();\n\n\t\t\tthis.update();\n\n\t\t}\n\n\n\t}\n\n\t_handleTouchStartRotate( event ) {\n\n\t\tif ( this._pointers.length === 1 ) {\n\n\t\t\tthis._rotateStart.set( event.pageX, event.pageY );\n\n\t\t} else {\n\n\t\t\tconst position = this._getSecondPointerPosition( event );\n\n\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\tthis._rotateStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\t_handleTouchStartPan( event ) {\n\n\t\tif ( this._pointers.length === 1 ) {\n\n\t\t\tthis._panStart.set( event.pageX, event.pageY );\n\n\t\t} else {\n\n\t\t\tconst position = this._getSecondPointerPosition( event );\n\n\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\tthis._panStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\t_handleTouchStartDolly( event ) {\n\n\t\tconst position = this._getSecondPointerPosition( event );\n\n\t\tconst dx = event.pageX - position.x;\n\t\tconst dy = event.pageY - position.y;\n\n\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tthis._dollyStart.set( 0, distance );\n\n\t}\n\n\t_handleTouchStartDollyPan( event ) {\n\n\t\tif ( this.enableZoom ) this._handleTouchStartDolly( event );\n\n\t\tif ( this.enablePan ) this._handleTouchStartPan( event );\n\n\t}\n\n\t_handleTouchStartDollyRotate( event ) {\n\n\t\tif ( this.enableZoom ) this._handleTouchStartDolly( event );\n\n\t\tif ( this.enableRotate ) this._handleTouchStartRotate( event );\n\n\t}\n\n\t_handleTouchMoveRotate( event ) {\n\n\t\tif ( this._pointers.length == 1 ) {\n\n\t\t\tthis._rotateEnd.set( event.pageX, event.pageY );\n\n\t\t} else {\n\n\t\t\tconst position = this._getSecondPointerPosition( event );\n\n\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\tthis._rotateEnd.set( x, y );\n\n\t\t}\n\n\t\tthis._rotateDelta.subVectors( this._rotateEnd, this._rotateStart ).multiplyScalar( this.rotateSpeed );\n\n\t\tconst element = this.domElement;\n\n\t\tthis._rotateLeft( _twoPI * this._rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\tthis._rotateUp( _twoPI * this._rotateDelta.y / element.clientHeight );\n\n\t\tthis._rotateStart.copy( this._rotateEnd );\n\n\t}\n\n\t_handleTouchMovePan( event ) {\n\n\t\tif ( this._pointers.length === 1 ) {\n\n\t\t\tthis._panEnd.set( event.pageX, event.pageY );\n\n\t\t} else {\n\n\t\t\tconst position = this._getSecondPointerPosition( event );\n\n\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\tthis._panEnd.set( x, y );\n\n\t\t}\n\n\t\tthis._panDelta.subVectors( this._panEnd, this._panStart ).multiplyScalar( this.panSpeed );\n\n\t\tthis._pan( this._panDelta.x, this._panDelta.y );\n\n\t\tthis._panStart.copy( this._panEnd );\n\n\t}\n\n\t_handleTouchMoveDolly( event ) {\n\n\t\tconst position = this._getSecondPointerPosition( event );\n\n\t\tconst dx = event.pageX - position.x;\n\t\tconst dy = event.pageY - position.y;\n\n\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tthis._dollyEnd.set( 0, distance );\n\n\t\tthis._dollyDelta.set( 0, Math.pow( this._dollyEnd.y / this._dollyStart.y, this.zoomSpeed ) );\n\n\t\tthis._dollyOut( this._dollyDelta.y );\n\n\t\tthis._dollyStart.copy( this._dollyEnd );\n\n\t\tconst centerX = ( event.pageX + position.x ) * 0.5;\n\t\tconst centerY = ( event.pageY + position.y ) * 0.5;\n\n\t\tthis._updateZoomParameters( centerX, centerY );\n\n\t}\n\n\t_handleTouchMoveDollyPan( event ) {\n\n\t\tif ( this.enableZoom ) this._handleTouchMoveDolly( event );\n\n\t\tif ( this.enablePan ) this._handleTouchMovePan( event );\n\n\t}\n\n\t_handleTouchMoveDollyRotate( event ) {\n\n\t\tif ( this.enableZoom ) this._handleTouchMoveDolly( event );\n\n\t\tif ( this.enableRotate ) this._handleTouchMoveRotate( event );\n\n\t}\n\n\t// pointers\n\n\t_addPointer( event ) {\n\n\t\tthis._pointers.push( event.pointerId );\n\n\t}\n\n\t_removePointer( event ) {\n\n\t\tdelete this._pointerPositions[ event.pointerId ];\n\n\t\tfor ( let i = 0; i < this._pointers.length; i ++ ) {\n\n\t\t\tif ( this._pointers[ i ] == event.pointerId ) {\n\n\t\t\t\tthis._pointers.splice( i, 1 );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_isTrackingPointer( event ) {\n\n\t\tfor ( let i = 0; i < this._pointers.length; i ++ ) {\n\n\t\t\tif ( this._pointers[ i ] == event.pointerId ) return true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t_trackPointer( event ) {\n\n\t\tlet position = this._pointerPositions[ event.pointerId ];\n\n\t\tif ( position === undefined ) {\n\n\t\t\tposition = new Vector2();\n\t\t\tthis._pointerPositions[ event.pointerId ] = position;\n\n\t\t}\n\n\t\tposition.set( event.pageX, event.pageY );\n\n\t}\n\n\t_getSecondPointerPosition( event ) {\n\n\t\tconst pointerId = ( event.pointerId === this._pointers[ 0 ] ) ? this._pointers[ 1 ] : this._pointers[ 0 ];\n\n\t\treturn this._pointerPositions[ pointerId ];\n\n\t}\n\n\t//\n\n\t_customWheelEvent( event ) {\n\n\t\tconst mode = event.deltaMode;\n\n\t\t// minimal wheel event altered to meet delta-zoom demand\n\t\tconst newEvent = {\n\t\t\tclientX: event.clientX,\n\t\t\tclientY: event.clientY,\n\t\t\tdeltaY: event.deltaY,\n\t\t};\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 1: // LINE_MODE\n\t\t\t\tnewEvent.deltaY *= 16;\n\t\t\t\tbreak;\n\n\t\t\tcase 2: // PAGE_MODE\n\t\t\t\tnewEvent.deltaY *= 100;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\t// detect if event was triggered by pinching\n\t\tif ( event.ctrlKey && ! this._controlActive ) {\n\n\t\t\tnewEvent.deltaY *= 10;\n\n\t\t}\n\n\t\treturn newEvent;\n\n\t}\n\n}\n\nfunction onPointerDown( event ) {\n\n\tif ( this.enabled === false ) return;\n\n\tif ( this._pointers.length === 0 ) {\n\n\t\tthis.domElement.setPointerCapture( event.pointerId );\n\n\t\tthis.domElement.addEventListener( 'pointermove', this._onPointerMove );\n\t\tthis.domElement.addEventListener( 'pointerup', this._onPointerUp );\n\n\t}\n\n\t//\n\n\tif ( this._isTrackingPointer( event ) ) return;\n\n\t//\n\n\tthis._addPointer( event );\n\n\tif ( event.pointerType === 'touch' ) {\n\n\t\tthis._onTouchStart( event );\n\n\t} else {\n\n\t\tthis._onMouseDown( event );\n\n\t}\n\n}\n\nfunction onPointerMove( event ) {\n\n\tif ( this.enabled === false ) return;\n\n\tif ( event.pointerType === 'touch' ) {\n\n\t\tthis._onTouchMove( event );\n\n\t} else {\n\n\t\tthis._onMouseMove( event );\n\n\t}\n\n}\n\nfunction onPointerUp( event ) {\n\n\tthis._removePointer( event );\n\n\tswitch ( this._pointers.length ) {\n\n\t\tcase 0:\n\n\t\t\tthis.domElement.releasePointerCapture( event.pointerId );\n\n\t\t\tthis.domElement.removeEventListener( 'pointermove', this._onPointerMove );\n\t\t\tthis.domElement.removeEventListener( 'pointerup', this._onPointerUp );\n\n\t\t\tthis.dispatchEvent( _endEvent );\n\n\t\t\tthis.state = _STATE.NONE;\n\n\t\t\tbreak;\n\n\t\tcase 1:\n\n\t\t\tconst pointerId = this._pointers[ 0 ];\n\t\t\tconst position = this._pointerPositions[ pointerId ];\n\n\t\t\t// minimal placeholder event - allows state correction on pointer-up\n\t\t\tthis._onTouchStart( { pointerId: pointerId, pageX: position.x, pageY: position.y } );\n\n\t\t\tbreak;\n\n\t}\n\n}\n\nfunction onMouseDown( event ) {\n\n\tlet mouseAction;\n\n\tswitch ( event.button ) {\n\n\t\tcase 0:\n\n\t\t\tmouseAction = this.mouseButtons.LEFT;\n\t\t\tbreak;\n\n\t\tcase 1:\n\n\t\t\tmouseAction = this.mouseButtons.MIDDLE;\n\t\t\tbreak;\n\n\t\tcase 2:\n\n\t\t\tmouseAction = this.mouseButtons.RIGHT;\n\t\t\tbreak;\n\n\t\tdefault:\n\n\t\t\tmouseAction = - 1;\n\n\t}\n\n\tswitch ( mouseAction ) {\n\n\t\tcase MOUSE.DOLLY:\n\n\t\t\tif ( this.enableZoom === false ) return;\n\n\t\t\tthis._handleMouseDownDolly( event );\n\n\t\t\tthis.state = _STATE.DOLLY;\n\n\t\t\tbreak;\n\n\t\tcase MOUSE.ROTATE:\n\n\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\tif ( this.enablePan === false ) return;\n\n\t\t\t\tthis._handleMouseDownPan( event );\n\n\t\t\t\tthis.state = _STATE.PAN;\n\n\t\t\t} else {\n\n\t\t\t\tif ( this.enableRotate === false ) return;\n\n\t\t\t\tthis._handleMouseDownRotate( event );\n\n\t\t\t\tthis.state = _STATE.ROTATE;\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase MOUSE.PAN:\n\n\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\tif ( this.enableRotate === false ) return;\n\n\t\t\t\tthis._handleMouseDownRotate( event );\n\n\t\t\t\tthis.state = _STATE.ROTATE;\n\n\t\t\t} else {\n\n\t\t\t\tif ( this.enablePan === false ) return;\n\n\t\t\t\tthis._handleMouseDownPan( event );\n\n\t\t\t\tthis.state = _STATE.PAN;\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tdefault:\n\n\t\t\tthis.state = _STATE.NONE;\n\n\t}\n\n\tif ( this.state !== _STATE.NONE ) {\n\n\t\tthis.dispatchEvent( _startEvent );\n\n\t}\n\n}\n\nfunction onMouseMove( event ) {\n\n\tswitch ( this.state ) {\n\n\t\tcase _STATE.ROTATE:\n\n\t\t\tif ( this.enableRotate === false ) return;\n\n\t\t\tthis._handleMouseMoveRotate( event );\n\n\t\t\tbreak;\n\n\t\tcase _STATE.DOLLY:\n\n\t\t\tif ( this.enableZoom === false ) return;\n\n\t\t\tthis._handleMouseMoveDolly( event );\n\n\t\t\tbreak;\n\n\t\tcase _STATE.PAN:\n\n\t\t\tif ( this.enablePan === false ) return;\n\n\t\t\tthis._handleMouseMovePan( event );\n\n\t\t\tbreak;\n\n\t}\n\n}\n\nfunction onMouseWheel( event ) {\n\n\tif ( this.enabled === false || this.enableZoom === false || this.state !== _STATE.NONE ) return;\n\n\tevent.preventDefault();\n\n\tthis.dispatchEvent( _startEvent );\n\n\tthis._handleMouseWheel( this._customWheelEvent( event ) );\n\n\tthis.dispatchEvent( _endEvent );\n\n}\n\nfunction onKeyDown( event ) {\n\n\tif ( this.enabled === false ) return;\n\n\tthis._handleKeyDown( event );\n\n}\n\nfunction onTouchStart( event ) {\n\n\tthis._trackPointer( event );\n\n\tswitch ( this._pointers.length ) {\n\n\t\tcase 1:\n\n\t\t\tswitch ( this.touches.ONE ) {\n\n\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\tif ( this.enableRotate === false ) return;\n\n\t\t\t\t\tthis._handleTouchStartRotate( event );\n\n\t\t\t\t\tthis.state = _STATE.TOUCH_ROTATE;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\tif ( this.enablePan === false ) return;\n\n\t\t\t\t\tthis._handleTouchStartPan( event );\n\n\t\t\t\t\tthis.state = _STATE.TOUCH_PAN;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tthis.state = _STATE.NONE;\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase 2:\n\n\t\t\tswitch ( this.touches.TWO ) {\n\n\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\tif ( this.enableZoom === false && this.enablePan === false ) return;\n\n\t\t\t\t\tthis._handleTouchStartDollyPan( event );\n\n\t\t\t\t\tthis.state = _STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\tif ( this.enableZoom === false && this.enableRotate === false ) return;\n\n\t\t\t\t\tthis._handleTouchStartDollyRotate( event );\n\n\t\t\t\t\tthis.state = _STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tthis.state = _STATE.NONE;\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tdefault:\n\n\t\t\tthis.state = _STATE.NONE;\n\n\t}\n\n\tif ( this.state !== _STATE.NONE ) {\n\n\t\tthis.dispatchEvent( _startEvent );\n\n\t}\n\n}\n\nfunction onTouchMove( event ) {\n\n\tthis._trackPointer( event );\n\n\tswitch ( this.state ) {\n\n\t\tcase _STATE.TOUCH_ROTATE:\n\n\t\t\tif ( this.enableRotate === false ) return;\n\n\t\t\tthis._handleTouchMoveRotate( event );\n\n\t\t\tthis.update();\n\n\t\t\tbreak;\n\n\t\tcase _STATE.TOUCH_PAN:\n\n\t\t\tif ( this.enablePan === false ) return;\n\n\t\t\tthis._handleTouchMovePan( event );\n\n\t\t\tthis.update();\n\n\t\t\tbreak;\n\n\t\tcase _STATE.TOUCH_DOLLY_PAN:\n\n\t\t\tif ( this.enableZoom === false && this.enablePan === false ) return;\n\n\t\t\tthis._handleTouchMoveDollyPan( event );\n\n\t\t\tthis.update();\n\n\t\t\tbreak;\n\n\t\tcase _STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\tif ( this.enableZoom === false && this.enableRotate === false ) return;\n\n\t\t\tthis._handleTouchMoveDollyRotate( event );\n\n\t\t\tthis.update();\n\n\t\t\tbreak;\n\n\t\tdefault:\n\n\t\t\tthis.state = _STATE.NONE;\n\n\t}\n\n}\n\nfunction onContextMenu( event ) {\n\n\tif ( this.enabled === false ) return;\n\n\tevent.preventDefault();\n\n}\n\nfunction interceptControlDown( event ) {\n\n\tif ( event.key === 'Control' ) {\n\n\t\tthis._controlActive = true;\n\n\t\tconst document = this.domElement.getRootNode(); // offscreen canvas compatibility\n\n\t\tdocument.addEventListener( 'keyup', this._interceptControlUp, { passive: true, capture: true } );\n\n\t}\n\n}\n\nfunction interceptControlUp( event ) {\n\n\tif ( event.key === 'Control' ) {\n\n\t\tthis._controlActive = false;\n\n\t\tconst document = this.domElement.getRootNode(); // offscreen canvas compatibility\n\n\t\tdocument.removeEventListener( 'keyup', this._interceptControlUp, { passive: true, capture: true } );\n\n\t}\n\n}\n\nexport { OrbitControls };\n"], - "mappings": "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", + "mappings": "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", "names": [] } diff --git a/node_modules/.vite/deps/three_examples_jsm_controls_TransformControls__js.js b/node_modules/.vite/deps/three_examples_jsm_controls_TransformControls__js.js deleted file mode 100644 index 021e369..0000000 --- a/node_modules/.vite/deps/three_examples_jsm_controls_TransformControls__js.js +++ /dev/null @@ -1,1121 +0,0 @@ -import { - BoxGeometry, - BufferGeometry, - Controls, - CylinderGeometry, - DoubleSide, - Euler, - Float32BufferAttribute, - Line, - LineBasicMaterial, - Matrix4, - Mesh, - MeshBasicMaterial, - Object3D, - OctahedronGeometry, - PlaneGeometry, - Quaternion, - Raycaster, - SphereGeometry, - TorusGeometry, - Vector3 -} from "./chunk-22FAE54D.js"; -import "./chunk-VUNV25KB.js"; - -// node_modules/three/examples/jsm/controls/TransformControls.js -var _raycaster = new Raycaster(); -var _tempVector = new Vector3(); -var _tempVector2 = new Vector3(); -var _tempQuaternion = new Quaternion(); -var _unit = { - X: new Vector3(1, 0, 0), - Y: new Vector3(0, 1, 0), - Z: new Vector3(0, 0, 1) -}; -var _changeEvent = { type: "change" }; -var _mouseDownEvent = { type: "mouseDown", mode: null }; -var _mouseUpEvent = { type: "mouseUp", mode: null }; -var _objectChangeEvent = { type: "objectChange" }; -var TransformControls = class extends Controls { - /** - * Constructs a new controls instance. - * - * @param {Camera} camera - The camera of the rendered scene. - * @param {?HTMLElement} domElement - The HTML element used for event listeners. - */ - constructor(camera, domElement = null) { - super(void 0, domElement); - const root = new TransformControlsRoot(this); - this._root = root; - const gizmo = new TransformControlsGizmo(); - this._gizmo = gizmo; - root.add(gizmo); - const plane = new TransformControlsPlane(); - this._plane = plane; - root.add(plane); - const scope = this; - function defineProperty(propName, defaultValue) { - let propValue = defaultValue; - Object.defineProperty(scope, propName, { - get: function() { - return propValue !== void 0 ? propValue : defaultValue; - }, - set: function(value) { - if (propValue !== value) { - propValue = value; - plane[propName] = value; - gizmo[propName] = value; - scope.dispatchEvent({ type: propName + "-changed", value }); - scope.dispatchEvent(_changeEvent); - } - } - }); - scope[propName] = defaultValue; - plane[propName] = defaultValue; - gizmo[propName] = defaultValue; - } - defineProperty("camera", camera); - defineProperty("object", void 0); - defineProperty("enabled", true); - defineProperty("axis", null); - defineProperty("mode", "translate"); - defineProperty("translationSnap", null); - defineProperty("rotationSnap", null); - defineProperty("scaleSnap", null); - defineProperty("space", "world"); - defineProperty("size", 1); - defineProperty("dragging", false); - defineProperty("showX", true); - defineProperty("showY", true); - defineProperty("showZ", true); - defineProperty("minX", -Infinity); - defineProperty("maxX", Infinity); - defineProperty("minY", -Infinity); - defineProperty("maxY", Infinity); - defineProperty("minZ", -Infinity); - defineProperty("maxZ", Infinity); - const worldPosition = new Vector3(); - const worldPositionStart = new Vector3(); - const worldQuaternion = new Quaternion(); - const worldQuaternionStart = new Quaternion(); - const cameraPosition = new Vector3(); - const cameraQuaternion = new Quaternion(); - const pointStart = new Vector3(); - const pointEnd = new Vector3(); - const rotationAxis = new Vector3(); - const rotationAngle = 0; - const eye = new Vector3(); - defineProperty("worldPosition", worldPosition); - defineProperty("worldPositionStart", worldPositionStart); - defineProperty("worldQuaternion", worldQuaternion); - defineProperty("worldQuaternionStart", worldQuaternionStart); - defineProperty("cameraPosition", cameraPosition); - defineProperty("cameraQuaternion", cameraQuaternion); - defineProperty("pointStart", pointStart); - defineProperty("pointEnd", pointEnd); - defineProperty("rotationAxis", rotationAxis); - defineProperty("rotationAngle", rotationAngle); - defineProperty("eye", eye); - this._offset = new Vector3(); - this._startNorm = new Vector3(); - this._endNorm = new Vector3(); - this._cameraScale = new Vector3(); - this._parentPosition = new Vector3(); - this._parentQuaternion = new Quaternion(); - this._parentQuaternionInv = new Quaternion(); - this._parentScale = new Vector3(); - this._worldScaleStart = new Vector3(); - this._worldQuaternionInv = new Quaternion(); - this._worldScale = new Vector3(); - this._positionStart = new Vector3(); - this._quaternionStart = new Quaternion(); - this._scaleStart = new Vector3(); - this._getPointer = getPointer.bind(this); - this._onPointerDown = onPointerDown.bind(this); - this._onPointerHover = onPointerHover.bind(this); - this._onPointerMove = onPointerMove.bind(this); - this._onPointerUp = onPointerUp.bind(this); - if (domElement !== null) { - this.connect(domElement); - } - } - connect(element) { - super.connect(element); - this.domElement.addEventListener("pointerdown", this._onPointerDown); - this.domElement.addEventListener("pointermove", this._onPointerHover); - this.domElement.addEventListener("pointerup", this._onPointerUp); - this.domElement.style.touchAction = "none"; - } - disconnect() { - this.domElement.removeEventListener("pointerdown", this._onPointerDown); - this.domElement.removeEventListener("pointermove", this._onPointerHover); - this.domElement.removeEventListener("pointermove", this._onPointerMove); - this.domElement.removeEventListener("pointerup", this._onPointerUp); - this.domElement.style.touchAction = "auto"; - } - /** - * Returns the visual representation of the controls. Add the helper to your scene to - * visually transform the attached 3D object. - * - * @return {TransformControlsRoot} The helper. - */ - getHelper() { - return this._root; - } - pointerHover(pointer) { - if (this.object === void 0 || this.dragging === true) return; - if (pointer !== null) _raycaster.setFromCamera(pointer, this.camera); - const intersect = intersectObjectWithRay(this._gizmo.picker[this.mode], _raycaster); - if (intersect) { - this.axis = intersect.object.name; - } else { - this.axis = null; - } - } - pointerDown(pointer) { - if (this.object === void 0 || this.dragging === true || pointer != null && pointer.button !== 0) return; - if (this.axis !== null) { - if (pointer !== null) _raycaster.setFromCamera(pointer, this.camera); - const planeIntersect = intersectObjectWithRay(this._plane, _raycaster, true); - if (planeIntersect) { - this.object.updateMatrixWorld(); - this.object.parent.updateMatrixWorld(); - this._positionStart.copy(this.object.position); - this._quaternionStart.copy(this.object.quaternion); - this._scaleStart.copy(this.object.scale); - this.object.matrixWorld.decompose(this.worldPositionStart, this.worldQuaternionStart, this._worldScaleStart); - this.pointStart.copy(planeIntersect.point).sub(this.worldPositionStart); - } - this.dragging = true; - _mouseDownEvent.mode = this.mode; - this.dispatchEvent(_mouseDownEvent); - } - } - pointerMove(pointer) { - const axis = this.axis; - const mode = this.mode; - const object = this.object; - let space = this.space; - if (mode === "scale") { - space = "local"; - } else if (axis === "E" || axis === "XYZE" || axis === "XYZ") { - space = "world"; - } - if (object === void 0 || axis === null || this.dragging === false || pointer !== null && pointer.button !== -1) return; - if (pointer !== null) _raycaster.setFromCamera(pointer, this.camera); - const planeIntersect = intersectObjectWithRay(this._plane, _raycaster, true); - if (!planeIntersect) return; - this.pointEnd.copy(planeIntersect.point).sub(this.worldPositionStart); - if (mode === "translate") { - this._offset.copy(this.pointEnd).sub(this.pointStart); - if (space === "local" && axis !== "XYZ") { - this._offset.applyQuaternion(this._worldQuaternionInv); - } - if (axis.indexOf("X") === -1) this._offset.x = 0; - if (axis.indexOf("Y") === -1) this._offset.y = 0; - if (axis.indexOf("Z") === -1) this._offset.z = 0; - if (space === "local" && axis !== "XYZ") { - this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale); - } else { - this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale); - } - object.position.copy(this._offset).add(this._positionStart); - if (this.translationSnap) { - if (space === "local") { - object.position.applyQuaternion(_tempQuaternion.copy(this._quaternionStart).invert()); - if (axis.search("X") !== -1) { - object.position.x = Math.round(object.position.x / this.translationSnap) * this.translationSnap; - } - if (axis.search("Y") !== -1) { - object.position.y = Math.round(object.position.y / this.translationSnap) * this.translationSnap; - } - if (axis.search("Z") !== -1) { - object.position.z = Math.round(object.position.z / this.translationSnap) * this.translationSnap; - } - object.position.applyQuaternion(this._quaternionStart); - } - if (space === "world") { - if (object.parent) { - object.position.add(_tempVector.setFromMatrixPosition(object.parent.matrixWorld)); - } - if (axis.search("X") !== -1) { - object.position.x = Math.round(object.position.x / this.translationSnap) * this.translationSnap; - } - if (axis.search("Y") !== -1) { - object.position.y = Math.round(object.position.y / this.translationSnap) * this.translationSnap; - } - if (axis.search("Z") !== -1) { - object.position.z = Math.round(object.position.z / this.translationSnap) * this.translationSnap; - } - if (object.parent) { - object.position.sub(_tempVector.setFromMatrixPosition(object.parent.matrixWorld)); - } - } - } - object.position.x = Math.max(this.minX, Math.min(this.maxX, object.position.x)); - object.position.y = Math.max(this.minY, Math.min(this.maxY, object.position.y)); - object.position.z = Math.max(this.minZ, Math.min(this.maxZ, object.position.z)); - } else if (mode === "scale") { - if (axis.search("XYZ") !== -1) { - let d = this.pointEnd.length() / this.pointStart.length(); - if (this.pointEnd.dot(this.pointStart) < 0) d *= -1; - _tempVector2.set(d, d, d); - } else { - _tempVector.copy(this.pointStart); - _tempVector2.copy(this.pointEnd); - _tempVector.applyQuaternion(this._worldQuaternionInv); - _tempVector2.applyQuaternion(this._worldQuaternionInv); - _tempVector2.divide(_tempVector); - if (axis.search("X") === -1) { - _tempVector2.x = 1; - } - if (axis.search("Y") === -1) { - _tempVector2.y = 1; - } - if (axis.search("Z") === -1) { - _tempVector2.z = 1; - } - } - object.scale.copy(this._scaleStart).multiply(_tempVector2); - if (this.scaleSnap) { - if (axis.search("X") !== -1) { - object.scale.x = Math.round(object.scale.x / this.scaleSnap) * this.scaleSnap || this.scaleSnap; - } - if (axis.search("Y") !== -1) { - object.scale.y = Math.round(object.scale.y / this.scaleSnap) * this.scaleSnap || this.scaleSnap; - } - if (axis.search("Z") !== -1) { - object.scale.z = Math.round(object.scale.z / this.scaleSnap) * this.scaleSnap || this.scaleSnap; - } - } - } else if (mode === "rotate") { - this._offset.copy(this.pointEnd).sub(this.pointStart); - const ROTATION_SPEED = 20 / this.worldPosition.distanceTo(_tempVector.setFromMatrixPosition(this.camera.matrixWorld)); - let _inPlaneRotation = false; - if (axis === "XYZE") { - this.rotationAxis.copy(this._offset).cross(this.eye).normalize(); - this.rotationAngle = this._offset.dot(_tempVector.copy(this.rotationAxis).cross(this.eye)) * ROTATION_SPEED; - } else if (axis === "X" || axis === "Y" || axis === "Z") { - this.rotationAxis.copy(_unit[axis]); - _tempVector.copy(_unit[axis]); - if (space === "local") { - _tempVector.applyQuaternion(this.worldQuaternion); - } - _tempVector.cross(this.eye); - if (_tempVector.length() === 0) { - _inPlaneRotation = true; - } else { - this.rotationAngle = this._offset.dot(_tempVector.normalize()) * ROTATION_SPEED; - } - } - if (axis === "E" || _inPlaneRotation) { - this.rotationAxis.copy(this.eye); - this.rotationAngle = this.pointEnd.angleTo(this.pointStart); - this._startNorm.copy(this.pointStart).normalize(); - this._endNorm.copy(this.pointEnd).normalize(); - this.rotationAngle *= this._endNorm.cross(this._startNorm).dot(this.eye) < 0 ? 1 : -1; - } - if (this.rotationSnap) this.rotationAngle = Math.round(this.rotationAngle / this.rotationSnap) * this.rotationSnap; - if (space === "local" && axis !== "E" && axis !== "XYZE") { - object.quaternion.copy(this._quaternionStart); - object.quaternion.multiply(_tempQuaternion.setFromAxisAngle(this.rotationAxis, this.rotationAngle)).normalize(); - } else { - this.rotationAxis.applyQuaternion(this._parentQuaternionInv); - object.quaternion.copy(_tempQuaternion.setFromAxisAngle(this.rotationAxis, this.rotationAngle)); - object.quaternion.multiply(this._quaternionStart).normalize(); - } - } - this.dispatchEvent(_changeEvent); - this.dispatchEvent(_objectChangeEvent); - } - pointerUp(pointer) { - if (pointer !== null && pointer.button !== 0) return; - if (this.dragging && this.axis !== null) { - _mouseUpEvent.mode = this.mode; - this.dispatchEvent(_mouseUpEvent); - } - this.dragging = false; - this.axis = null; - } - dispose() { - this.disconnect(); - this._root.dispose(); - } - /** - * Sets the 3D object that should be transformed and ensures the controls UI is visible. - * - * @param {Object3D} object - The 3D object that should be transformed. - * @return {TransformControls} A reference to this controls. - */ - attach(object) { - this.object = object; - this._root.visible = true; - return this; - } - /** - * Removes the current 3D object from the controls and makes the helper UI invisible. - * - * @return {TransformControls} A reference to this controls. - */ - detach() { - this.object = void 0; - this.axis = null; - this._root.visible = false; - return this; - } - /** - * Resets the object's position, rotation and scale to when the current transform began. - */ - reset() { - if (!this.enabled) return; - if (this.dragging) { - this.object.position.copy(this._positionStart); - this.object.quaternion.copy(this._quaternionStart); - this.object.scale.copy(this._scaleStart); - this.dispatchEvent(_changeEvent); - this.dispatchEvent(_objectChangeEvent); - this.pointStart.copy(this.pointEnd); - } - } - /** - * Returns the raycaster that is used for user interaction. This object is shared between all - * instances of `TransformControls`. - * - * @returns {Raycaster} The internal raycaster. - */ - getRaycaster() { - return _raycaster; - } - /** - * Returns the transformation mode. - * - * @returns {'translate'|'rotate'|'scale'} The transformation mode. - */ - getMode() { - return this.mode; - } - /** - * Sets the given transformation mode. - * - * @param {'translate'|'rotate'|'scale'} mode - The transformation mode to set. - */ - setMode(mode) { - this.mode = mode; - } - /** - * Sets the translation snap. - * - * @param {?number} translationSnap - The translation snap to set. - */ - setTranslationSnap(translationSnap) { - this.translationSnap = translationSnap; - } - /** - * Sets the rotation snap. - * - * @param {?number} rotationSnap - The rotation snap to set. - */ - setRotationSnap(rotationSnap) { - this.rotationSnap = rotationSnap; - } - /** - * Sets the scale snap. - * - * @param {?number} scaleSnap - The scale snap to set. - */ - setScaleSnap(scaleSnap) { - this.scaleSnap = scaleSnap; - } - /** - * Sets the size of the helper UI. - * - * @param {number} size - The size to set. - */ - setSize(size) { - this.size = size; - } - /** - * Sets the coordinate space in which transformations are applied. - * - * @param {'world'|'local'} space - The space to set. - */ - setSpace(space) { - this.space = space; - } - /** - * Sets the colors of the control's gizmo. - * - * @param {number|Color|string} xAxis - The x-axis color. - * @param {number|Color|string} yAxis - The y-axis color. - * @param {number|Color|string} zAxis - The z-axis color. - * @param {number|Color|string} active - The color for active elements. - */ - setColors(xAxis, yAxis, zAxis, active) { - const materialLib = this._gizmo.materialLib; - materialLib.xAxis.color.set(xAxis); - materialLib.yAxis.color.set(yAxis); - materialLib.zAxis.color.set(zAxis); - materialLib.active.color.set(active); - materialLib.xAxisTransparent.color.set(xAxis); - materialLib.yAxisTransparent.color.set(yAxis); - materialLib.zAxisTransparent.color.set(zAxis); - materialLib.activeTransparent.color.set(active); - if (materialLib.xAxis._color) materialLib.xAxis._color.set(xAxis); - if (materialLib.yAxis._color) materialLib.yAxis._color.set(yAxis); - if (materialLib.zAxis._color) materialLib.zAxis._color.set(zAxis); - if (materialLib.active._color) materialLib.active._color.set(active); - if (materialLib.xAxisTransparent._color) materialLib.xAxisTransparent._color.set(xAxis); - if (materialLib.yAxisTransparent._color) materialLib.yAxisTransparent._color.set(yAxis); - if (materialLib.zAxisTransparent._color) materialLib.zAxisTransparent._color.set(zAxis); - if (materialLib.activeTransparent._color) materialLib.activeTransparent._color.set(active); - } -}; -function getPointer(event) { - if (this.domElement.ownerDocument.pointerLockElement) { - return { - x: 0, - y: 0, - button: event.button - }; - } else { - const rect = this.domElement.getBoundingClientRect(); - return { - x: (event.clientX - rect.left) / rect.width * 2 - 1, - y: -(event.clientY - rect.top) / rect.height * 2 + 1, - button: event.button - }; - } -} -function onPointerHover(event) { - if (!this.enabled) return; - switch (event.pointerType) { - case "mouse": - case "pen": - this.pointerHover(this._getPointer(event)); - break; - } -} -function onPointerDown(event) { - if (!this.enabled) return; - if (!document.pointerLockElement) { - this.domElement.setPointerCapture(event.pointerId); - } - this.domElement.addEventListener("pointermove", this._onPointerMove); - this.pointerHover(this._getPointer(event)); - this.pointerDown(this._getPointer(event)); -} -function onPointerMove(event) { - if (!this.enabled) return; - this.pointerMove(this._getPointer(event)); -} -function onPointerUp(event) { - if (!this.enabled) return; - this.domElement.releasePointerCapture(event.pointerId); - this.domElement.removeEventListener("pointermove", this._onPointerMove); - this.pointerUp(this._getPointer(event)); -} -function intersectObjectWithRay(object, raycaster, includeInvisible) { - const allIntersections = raycaster.intersectObject(object, true); - for (let i = 0; i < allIntersections.length; i++) { - if (allIntersections[i].object.visible || includeInvisible) { - return allIntersections[i]; - } - } - return false; -} -var _tempEuler = new Euler(); -var _alignVector = new Vector3(0, 1, 0); -var _zeroVector = new Vector3(0, 0, 0); -var _lookAtMatrix = new Matrix4(); -var _tempQuaternion2 = new Quaternion(); -var _identityQuaternion = new Quaternion(); -var _dirVector = new Vector3(); -var _tempMatrix = new Matrix4(); -var _unitX = new Vector3(1, 0, 0); -var _unitY = new Vector3(0, 1, 0); -var _unitZ = new Vector3(0, 0, 1); -var _v1 = new Vector3(); -var _v2 = new Vector3(); -var _v3 = new Vector3(); -var TransformControlsRoot = class extends Object3D { - constructor(controls) { - super(); - this.isTransformControlsRoot = true; - this.controls = controls; - this.visible = false; - } - // updateMatrixWorld updates key transformation variables - updateMatrixWorld(force) { - const controls = this.controls; - if (controls.object !== void 0) { - controls.object.updateMatrixWorld(); - if (controls.object.parent === null) { - console.error("TransformControls: The attached 3D object must be a part of the scene graph."); - } else { - controls.object.parent.matrixWorld.decompose(controls._parentPosition, controls._parentQuaternion, controls._parentScale); - } - controls.object.matrixWorld.decompose(controls.worldPosition, controls.worldQuaternion, controls._worldScale); - controls._parentQuaternionInv.copy(controls._parentQuaternion).invert(); - controls._worldQuaternionInv.copy(controls.worldQuaternion).invert(); - } - controls.camera.updateMatrixWorld(); - controls.camera.matrixWorld.decompose(controls.cameraPosition, controls.cameraQuaternion, controls._cameraScale); - if (controls.camera.isOrthographicCamera) { - controls.camera.getWorldDirection(controls.eye).negate(); - } else { - controls.eye.copy(controls.cameraPosition).sub(controls.worldPosition).normalize(); - } - super.updateMatrixWorld(force); - } - dispose() { - this.traverse(function(child) { - if (child.geometry) child.geometry.dispose(); - if (child.material) child.material.dispose(); - }); - } -}; -var TransformControlsGizmo = class extends Object3D { - constructor() { - super(); - this.isTransformControlsGizmo = true; - this.type = "TransformControlsGizmo"; - const gizmoMaterial = new MeshBasicMaterial({ - depthTest: false, - depthWrite: false, - fog: false, - toneMapped: false, - transparent: true - }); - const gizmoLineMaterial = new LineBasicMaterial({ - depthTest: false, - depthWrite: false, - fog: false, - toneMapped: false, - transparent: true - }); - const matInvisible = gizmoMaterial.clone(); - matInvisible.opacity = 0.15; - const matHelper = gizmoLineMaterial.clone(); - matHelper.opacity = 0.5; - const matRed = gizmoMaterial.clone(); - matRed.color.setHex(16711680); - const matGreen = gizmoMaterial.clone(); - matGreen.color.setHex(65280); - const matBlue = gizmoMaterial.clone(); - matBlue.color.setHex(255); - const matRedTransparent = gizmoMaterial.clone(); - matRedTransparent.color.setHex(16711680); - matRedTransparent.opacity = 0.5; - const matGreenTransparent = gizmoMaterial.clone(); - matGreenTransparent.color.setHex(65280); - matGreenTransparent.opacity = 0.5; - const matBlueTransparent = gizmoMaterial.clone(); - matBlueTransparent.color.setHex(255); - matBlueTransparent.opacity = 0.5; - const matWhiteTransparent = gizmoMaterial.clone(); - matWhiteTransparent.opacity = 0.25; - const matYellowTransparent = gizmoMaterial.clone(); - matYellowTransparent.color.setHex(16776960); - matYellowTransparent.opacity = 0.25; - const matYellow = gizmoMaterial.clone(); - matYellow.color.setHex(16776960); - const matGray = gizmoMaterial.clone(); - matGray.color.setHex(7895160); - this.materialLib = { - xAxis: matRed, - yAxis: matGreen, - zAxis: matBlue, - active: matYellow, - xAxisTransparent: matRedTransparent, - yAxisTransparent: matGreenTransparent, - zAxisTransparent: matBlueTransparent, - activeTransparent: matYellowTransparent - }; - const arrowGeometry = new CylinderGeometry(0, 0.04, 0.1, 12); - arrowGeometry.translate(0, 0.05, 0); - const scaleHandleGeometry = new BoxGeometry(0.08, 0.08, 0.08); - scaleHandleGeometry.translate(0, 0.04, 0); - const lineGeometry = new BufferGeometry(); - lineGeometry.setAttribute("position", new Float32BufferAttribute([0, 0, 0, 1, 0, 0], 3)); - const lineGeometry2 = new CylinderGeometry(75e-4, 75e-4, 0.5, 3); - lineGeometry2.translate(0, 0.25, 0); - function CircleGeometry(radius, arc) { - const geometry = new TorusGeometry(radius, 75e-4, 3, 64, arc * Math.PI * 2); - geometry.rotateY(Math.PI / 2); - geometry.rotateX(Math.PI / 2); - return geometry; - } - function TranslateHelperGeometry() { - const geometry = new BufferGeometry(); - geometry.setAttribute("position", new Float32BufferAttribute([0, 0, 0, 1, 1, 1], 3)); - return geometry; - } - const gizmoTranslate = { - X: [ - [new Mesh(arrowGeometry, matRed), [0.5, 0, 0], [0, 0, -Math.PI / 2]], - [new Mesh(arrowGeometry, matRed), [-0.5, 0, 0], [0, 0, Math.PI / 2]], - [new Mesh(lineGeometry2, matRed), [0, 0, 0], [0, 0, -Math.PI / 2]] - ], - Y: [ - [new Mesh(arrowGeometry, matGreen), [0, 0.5, 0]], - [new Mesh(arrowGeometry, matGreen), [0, -0.5, 0], [Math.PI, 0, 0]], - [new Mesh(lineGeometry2, matGreen)] - ], - Z: [ - [new Mesh(arrowGeometry, matBlue), [0, 0, 0.5], [Math.PI / 2, 0, 0]], - [new Mesh(arrowGeometry, matBlue), [0, 0, -0.5], [-Math.PI / 2, 0, 0]], - [new Mesh(lineGeometry2, matBlue), null, [Math.PI / 2, 0, 0]] - ], - XYZ: [ - [new Mesh(new OctahedronGeometry(0.1, 0), matWhiteTransparent), [0, 0, 0]] - ], - XY: [ - [new Mesh(new BoxGeometry(0.15, 0.15, 0.01), matBlueTransparent), [0.15, 0.15, 0]] - ], - YZ: [ - [new Mesh(new BoxGeometry(0.15, 0.15, 0.01), matRedTransparent), [0, 0.15, 0.15], [0, Math.PI / 2, 0]] - ], - XZ: [ - [new Mesh(new BoxGeometry(0.15, 0.15, 0.01), matGreenTransparent), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]] - ] - }; - const pickerTranslate = { - X: [ - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0.3, 0, 0], [0, 0, -Math.PI / 2]], - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [-0.3, 0, 0], [0, 0, Math.PI / 2]] - ], - Y: [ - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, 0.3, 0]], - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, -0.3, 0], [0, 0, Math.PI]] - ], - Z: [ - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, 0, 0.3], [Math.PI / 2, 0, 0]], - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, 0, -0.3], [-Math.PI / 2, 0, 0]] - ], - XYZ: [ - [new Mesh(new OctahedronGeometry(0.2, 0), matInvisible)] - ], - XY: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.01), matInvisible), [0.15, 0.15, 0]] - ], - YZ: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.01), matInvisible), [0, 0.15, 0.15], [0, Math.PI / 2, 0]] - ], - XZ: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.01), matInvisible), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]] - ] - }; - const helperTranslate = { - START: [ - [new Mesh(new OctahedronGeometry(0.01, 2), matHelper), null, null, null, "helper"] - ], - END: [ - [new Mesh(new OctahedronGeometry(0.01, 2), matHelper), null, null, null, "helper"] - ], - DELTA: [ - [new Line(TranslateHelperGeometry(), matHelper), null, null, null, "helper"] - ], - X: [ - [new Line(lineGeometry, matHelper), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"] - ], - Y: [ - [new Line(lineGeometry, matHelper), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], "helper"] - ], - Z: [ - [new Line(lineGeometry, matHelper), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], "helper"] - ] - }; - const gizmoRotate = { - XYZE: [ - [new Mesh(CircleGeometry(0.5, 1), matGray), null, [0, Math.PI / 2, 0]] - ], - X: [ - [new Mesh(CircleGeometry(0.5, 0.5), matRed)] - ], - Y: [ - [new Mesh(CircleGeometry(0.5, 0.5), matGreen), null, [0, 0, -Math.PI / 2]] - ], - Z: [ - [new Mesh(CircleGeometry(0.5, 0.5), matBlue), null, [0, Math.PI / 2, 0]] - ], - E: [ - [new Mesh(CircleGeometry(0.75, 1), matYellowTransparent), null, [0, Math.PI / 2, 0]] - ] - }; - const helperRotate = { - AXIS: [ - [new Line(lineGeometry, matHelper), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"] - ] - }; - const pickerRotate = { - XYZE: [ - [new Mesh(new SphereGeometry(0.25, 10, 8), matInvisible)] - ], - X: [ - [new Mesh(new TorusGeometry(0.5, 0.1, 4, 24), matInvisible), [0, 0, 0], [0, -Math.PI / 2, -Math.PI / 2]] - ], - Y: [ - [new Mesh(new TorusGeometry(0.5, 0.1, 4, 24), matInvisible), [0, 0, 0], [Math.PI / 2, 0, 0]] - ], - Z: [ - [new Mesh(new TorusGeometry(0.5, 0.1, 4, 24), matInvisible), [0, 0, 0], [0, 0, -Math.PI / 2]] - ], - E: [ - [new Mesh(new TorusGeometry(0.75, 0.1, 2, 24), matInvisible)] - ] - }; - const gizmoScale = { - X: [ - [new Mesh(scaleHandleGeometry, matRed), [0.5, 0, 0], [0, 0, -Math.PI / 2]], - [new Mesh(lineGeometry2, matRed), [0, 0, 0], [0, 0, -Math.PI / 2]], - [new Mesh(scaleHandleGeometry, matRed), [-0.5, 0, 0], [0, 0, Math.PI / 2]] - ], - Y: [ - [new Mesh(scaleHandleGeometry, matGreen), [0, 0.5, 0]], - [new Mesh(lineGeometry2, matGreen)], - [new Mesh(scaleHandleGeometry, matGreen), [0, -0.5, 0], [0, 0, Math.PI]] - ], - Z: [ - [new Mesh(scaleHandleGeometry, matBlue), [0, 0, 0.5], [Math.PI / 2, 0, 0]], - [new Mesh(lineGeometry2, matBlue), [0, 0, 0], [Math.PI / 2, 0, 0]], - [new Mesh(scaleHandleGeometry, matBlue), [0, 0, -0.5], [-Math.PI / 2, 0, 0]] - ], - XY: [ - [new Mesh(new BoxGeometry(0.15, 0.15, 0.01), matBlueTransparent), [0.15, 0.15, 0]] - ], - YZ: [ - [new Mesh(new BoxGeometry(0.15, 0.15, 0.01), matRedTransparent), [0, 0.15, 0.15], [0, Math.PI / 2, 0]] - ], - XZ: [ - [new Mesh(new BoxGeometry(0.15, 0.15, 0.01), matGreenTransparent), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]] - ], - XYZ: [ - [new Mesh(new BoxGeometry(0.1, 0.1, 0.1), matWhiteTransparent)] - ] - }; - const pickerScale = { - X: [ - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0.3, 0, 0], [0, 0, -Math.PI / 2]], - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [-0.3, 0, 0], [0, 0, Math.PI / 2]] - ], - Y: [ - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, 0.3, 0]], - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, -0.3, 0], [0, 0, Math.PI]] - ], - Z: [ - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, 0, 0.3], [Math.PI / 2, 0, 0]], - [new Mesh(new CylinderGeometry(0.2, 0, 0.6, 4), matInvisible), [0, 0, -0.3], [-Math.PI / 2, 0, 0]] - ], - XY: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.01), matInvisible), [0.15, 0.15, 0]] - ], - YZ: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.01), matInvisible), [0, 0.15, 0.15], [0, Math.PI / 2, 0]] - ], - XZ: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.01), matInvisible), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]] - ], - XYZ: [ - [new Mesh(new BoxGeometry(0.2, 0.2, 0.2), matInvisible), [0, 0, 0]] - ] - }; - const helperScale = { - X: [ - [new Line(lineGeometry, matHelper), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"] - ], - Y: [ - [new Line(lineGeometry, matHelper), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], "helper"] - ], - Z: [ - [new Line(lineGeometry, matHelper), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], "helper"] - ] - }; - function setupGizmo(gizmoMap) { - const gizmo = new Object3D(); - for (const name in gizmoMap) { - for (let i = gizmoMap[name].length; i--; ) { - const object = gizmoMap[name][i][0].clone(); - const position = gizmoMap[name][i][1]; - const rotation = gizmoMap[name][i][2]; - const scale = gizmoMap[name][i][3]; - const tag = gizmoMap[name][i][4]; - object.name = name; - object.tag = tag; - if (position) { - object.position.set(position[0], position[1], position[2]); - } - if (rotation) { - object.rotation.set(rotation[0], rotation[1], rotation[2]); - } - if (scale) { - object.scale.set(scale[0], scale[1], scale[2]); - } - object.updateMatrix(); - const tempGeometry = object.geometry.clone(); - tempGeometry.applyMatrix4(object.matrix); - object.geometry = tempGeometry; - object.renderOrder = Infinity; - object.position.set(0, 0, 0); - object.rotation.set(0, 0, 0); - object.scale.set(1, 1, 1); - gizmo.add(object); - } - } - return gizmo; - } - this.gizmo = {}; - this.picker = {}; - this.helper = {}; - this.add(this.gizmo["translate"] = setupGizmo(gizmoTranslate)); - this.add(this.gizmo["rotate"] = setupGizmo(gizmoRotate)); - this.add(this.gizmo["scale"] = setupGizmo(gizmoScale)); - this.add(this.picker["translate"] = setupGizmo(pickerTranslate)); - this.add(this.picker["rotate"] = setupGizmo(pickerRotate)); - this.add(this.picker["scale"] = setupGizmo(pickerScale)); - this.add(this.helper["translate"] = setupGizmo(helperTranslate)); - this.add(this.helper["rotate"] = setupGizmo(helperRotate)); - this.add(this.helper["scale"] = setupGizmo(helperScale)); - this.picker["translate"].visible = false; - this.picker["rotate"].visible = false; - this.picker["scale"].visible = false; - } - // updateMatrixWorld will update transformations and appearance of individual handles - updateMatrixWorld(force) { - const space = this.mode === "scale" ? "local" : this.space; - const quaternion = space === "local" ? this.worldQuaternion : _identityQuaternion; - this.gizmo["translate"].visible = this.mode === "translate"; - this.gizmo["rotate"].visible = this.mode === "rotate"; - this.gizmo["scale"].visible = this.mode === "scale"; - this.helper["translate"].visible = this.mode === "translate"; - this.helper["rotate"].visible = this.mode === "rotate"; - this.helper["scale"].visible = this.mode === "scale"; - let handles = []; - handles = handles.concat(this.picker[this.mode].children); - handles = handles.concat(this.gizmo[this.mode].children); - handles = handles.concat(this.helper[this.mode].children); - for (let i = 0; i < handles.length; i++) { - const handle = handles[i]; - handle.visible = true; - handle.rotation.set(0, 0, 0); - handle.position.copy(this.worldPosition); - let factor; - if (this.camera.isOrthographicCamera) { - factor = (this.camera.top - this.camera.bottom) / this.camera.zoom; - } else { - factor = this.worldPosition.distanceTo(this.cameraPosition) * Math.min(1.9 * Math.tan(Math.PI * this.camera.fov / 360) / this.camera.zoom, 7); - } - handle.scale.set(1, 1, 1).multiplyScalar(factor * this.size / 4); - if (handle.tag === "helper") { - handle.visible = false; - if (handle.name === "AXIS") { - handle.visible = !!this.axis; - if (this.axis === "X") { - _tempQuaternion.setFromEuler(_tempEuler.set(0, 0, 0)); - handle.quaternion.copy(quaternion).multiply(_tempQuaternion); - if (Math.abs(_alignVector.copy(_unitX).applyQuaternion(quaternion).dot(this.eye)) > 0.9) { - handle.visible = false; - } - } - if (this.axis === "Y") { - _tempQuaternion.setFromEuler(_tempEuler.set(0, 0, Math.PI / 2)); - handle.quaternion.copy(quaternion).multiply(_tempQuaternion); - if (Math.abs(_alignVector.copy(_unitY).applyQuaternion(quaternion).dot(this.eye)) > 0.9) { - handle.visible = false; - } - } - if (this.axis === "Z") { - _tempQuaternion.setFromEuler(_tempEuler.set(0, Math.PI / 2, 0)); - handle.quaternion.copy(quaternion).multiply(_tempQuaternion); - if (Math.abs(_alignVector.copy(_unitZ).applyQuaternion(quaternion).dot(this.eye)) > 0.9) { - handle.visible = false; - } - } - if (this.axis === "XYZE") { - _tempQuaternion.setFromEuler(_tempEuler.set(0, Math.PI / 2, 0)); - _alignVector.copy(this.rotationAxis); - handle.quaternion.setFromRotationMatrix(_lookAtMatrix.lookAt(_zeroVector, _alignVector, _unitY)); - handle.quaternion.multiply(_tempQuaternion); - handle.visible = this.dragging; - } - if (this.axis === "E") { - handle.visible = false; - } - } else if (handle.name === "START") { - handle.position.copy(this.worldPositionStart); - handle.visible = this.dragging; - } else if (handle.name === "END") { - handle.position.copy(this.worldPosition); - handle.visible = this.dragging; - } else if (handle.name === "DELTA") { - handle.position.copy(this.worldPositionStart); - handle.quaternion.copy(this.worldQuaternionStart); - _tempVector.set(1e-10, 1e-10, 1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1); - _tempVector.applyQuaternion(this.worldQuaternionStart.clone().invert()); - handle.scale.copy(_tempVector); - handle.visible = this.dragging; - } else { - handle.quaternion.copy(quaternion); - if (this.dragging) { - handle.position.copy(this.worldPositionStart); - } else { - handle.position.copy(this.worldPosition); - } - if (this.axis) { - handle.visible = this.axis.search(handle.name) !== -1; - } - } - continue; - } - handle.quaternion.copy(quaternion); - if (this.mode === "translate" || this.mode === "scale") { - const AXIS_HIDE_THRESHOLD = 0.99; - const PLANE_HIDE_THRESHOLD = 0.2; - if (handle.name === "X") { - if (Math.abs(_alignVector.copy(_unitX).applyQuaternion(quaternion).dot(this.eye)) > AXIS_HIDE_THRESHOLD) { - handle.scale.set(1e-10, 1e-10, 1e-10); - handle.visible = false; - } - } - if (handle.name === "Y") { - if (Math.abs(_alignVector.copy(_unitY).applyQuaternion(quaternion).dot(this.eye)) > AXIS_HIDE_THRESHOLD) { - handle.scale.set(1e-10, 1e-10, 1e-10); - handle.visible = false; - } - } - if (handle.name === "Z") { - if (Math.abs(_alignVector.copy(_unitZ).applyQuaternion(quaternion).dot(this.eye)) > AXIS_HIDE_THRESHOLD) { - handle.scale.set(1e-10, 1e-10, 1e-10); - handle.visible = false; - } - } - if (handle.name === "XY") { - if (Math.abs(_alignVector.copy(_unitZ).applyQuaternion(quaternion).dot(this.eye)) < PLANE_HIDE_THRESHOLD) { - handle.scale.set(1e-10, 1e-10, 1e-10); - handle.visible = false; - } - } - if (handle.name === "YZ") { - if (Math.abs(_alignVector.copy(_unitX).applyQuaternion(quaternion).dot(this.eye)) < PLANE_HIDE_THRESHOLD) { - handle.scale.set(1e-10, 1e-10, 1e-10); - handle.visible = false; - } - } - if (handle.name === "XZ") { - if (Math.abs(_alignVector.copy(_unitY).applyQuaternion(quaternion).dot(this.eye)) < PLANE_HIDE_THRESHOLD) { - handle.scale.set(1e-10, 1e-10, 1e-10); - handle.visible = false; - } - } - } else if (this.mode === "rotate") { - _tempQuaternion2.copy(quaternion); - _alignVector.copy(this.eye).applyQuaternion(_tempQuaternion.copy(quaternion).invert()); - if (handle.name.search("E") !== -1) { - handle.quaternion.setFromRotationMatrix(_lookAtMatrix.lookAt(this.eye, _zeroVector, _unitY)); - } - if (handle.name === "X") { - _tempQuaternion.setFromAxisAngle(_unitX, Math.atan2(-_alignVector.y, _alignVector.z)); - _tempQuaternion.multiplyQuaternions(_tempQuaternion2, _tempQuaternion); - handle.quaternion.copy(_tempQuaternion); - } - if (handle.name === "Y") { - _tempQuaternion.setFromAxisAngle(_unitY, Math.atan2(_alignVector.x, _alignVector.z)); - _tempQuaternion.multiplyQuaternions(_tempQuaternion2, _tempQuaternion); - handle.quaternion.copy(_tempQuaternion); - } - if (handle.name === "Z") { - _tempQuaternion.setFromAxisAngle(_unitZ, Math.atan2(_alignVector.y, _alignVector.x)); - _tempQuaternion.multiplyQuaternions(_tempQuaternion2, _tempQuaternion); - handle.quaternion.copy(_tempQuaternion); - } - } - handle.visible = handle.visible && (handle.name.indexOf("X") === -1 || this.showX); - handle.visible = handle.visible && (handle.name.indexOf("Y") === -1 || this.showY); - handle.visible = handle.visible && (handle.name.indexOf("Z") === -1 || this.showZ); - handle.visible = handle.visible && (handle.name.indexOf("E") === -1 || this.showX && this.showY && this.showZ); - handle.material._color = handle.material._color || handle.material.color.clone(); - handle.material._opacity = handle.material._opacity || handle.material.opacity; - handle.material.color.copy(handle.material._color); - handle.material.opacity = handle.material._opacity; - if (this.enabled && this.axis) { - if (handle.name === this.axis) { - handle.material.color.copy(this.materialLib.active.color); - handle.material.opacity = 1; - } else if (this.axis.split("").some(function(a) { - return handle.name === a; - })) { - handle.material.color.copy(this.materialLib.active.color); - handle.material.opacity = 1; - } - } - } - super.updateMatrixWorld(force); - } -}; -var TransformControlsPlane = class extends Mesh { - constructor() { - super( - new PlaneGeometry(1e5, 1e5, 2, 2), - new MeshBasicMaterial({ visible: false, wireframe: true, side: DoubleSide, transparent: true, opacity: 0.1, toneMapped: false }) - ); - this.isTransformControlsPlane = true; - this.type = "TransformControlsPlane"; - } - updateMatrixWorld(force) { - let space = this.space; - this.position.copy(this.worldPosition); - if (this.mode === "scale") space = "local"; - _v1.copy(_unitX).applyQuaternion(space === "local" ? this.worldQuaternion : _identityQuaternion); - _v2.copy(_unitY).applyQuaternion(space === "local" ? this.worldQuaternion : _identityQuaternion); - _v3.copy(_unitZ).applyQuaternion(space === "local" ? this.worldQuaternion : _identityQuaternion); - _alignVector.copy(_v2); - switch (this.mode) { - case "translate": - case "scale": - switch (this.axis) { - case "X": - _alignVector.copy(this.eye).cross(_v1); - _dirVector.copy(_v1).cross(_alignVector); - break; - case "Y": - _alignVector.copy(this.eye).cross(_v2); - _dirVector.copy(_v2).cross(_alignVector); - break; - case "Z": - _alignVector.copy(this.eye).cross(_v3); - _dirVector.copy(_v3).cross(_alignVector); - break; - case "XY": - _dirVector.copy(_v3); - break; - case "YZ": - _dirVector.copy(_v1); - break; - case "XZ": - _alignVector.copy(_v3); - _dirVector.copy(_v2); - break; - case "XYZ": - case "E": - _dirVector.set(0, 0, 0); - break; - } - break; - case "rotate": - default: - _dirVector.set(0, 0, 0); - } - if (_dirVector.length() === 0) { - this.quaternion.copy(this.cameraQuaternion); - } else { - _tempMatrix.lookAt(_tempVector.set(0, 0, 0), _dirVector, _alignVector); - this.quaternion.setFromRotationMatrix(_tempMatrix); - } - super.updateMatrixWorld(force); - } -}; -export { - TransformControls, - TransformControlsGizmo, - TransformControlsPlane -}; -//# sourceMappingURL=three_examples_jsm_controls_TransformControls__js.js.map diff --git a/node_modules/.vite/deps/three_examples_jsm_controls_TransformControls__js.js.map b/node_modules/.vite/deps/three_examples_jsm_controls_TransformControls__js.js.map deleted file mode 100644 index 9eaddcb..0000000 --- a/node_modules/.vite/deps/three_examples_jsm_controls_TransformControls__js.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../three/examples/jsm/controls/TransformControls.js"], - "sourcesContent": ["import {\n\tBoxGeometry,\n\tBufferGeometry,\n\tControls,\n\tCylinderGeometry,\n\tDoubleSide,\n\tEuler,\n\tFloat32BufferAttribute,\n\tLine,\n\tLineBasicMaterial,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tObject3D,\n\tOctahedronGeometry,\n\tPlaneGeometry,\n\tQuaternion,\n\tRaycaster,\n\tSphereGeometry,\n\tTorusGeometry,\n\tVector3\n} from 'three';\n\nconst _raycaster = new Raycaster();\n\nconst _tempVector = new Vector3();\nconst _tempVector2 = new Vector3();\nconst _tempQuaternion = new Quaternion();\nconst _unit = {\n\tX: new Vector3( 1, 0, 0 ),\n\tY: new Vector3( 0, 1, 0 ),\n\tZ: new Vector3( 0, 0, 1 )\n};\n\n/**\n * Fires if any type of change (object or property change) is performed. Property changes\n * are separate events you can add event listeners to. The event type is \"propertyname-changed\".\n *\n * @event TransformControls#change\n * @type {Object}\n */\nconst _changeEvent = { type: 'change' };\n\n/**\n * Fires if a pointer (mouse/touch) becomes active.\n *\n * @event TransformControls#mouseDown\n * @type {Object}\n */\nconst _mouseDownEvent = { type: 'mouseDown', mode: null };\n\n/**\n * Fires if a pointer (mouse/touch) is no longer active.\n *\n * @event TransformControls#mouseUp\n * @type {Object}\n */\nconst _mouseUpEvent = { type: 'mouseUp', mode: null };\n\n/**\n * Fires if the controlled 3D object is changed.\n *\n * @event TransformControls#objectChange\n * @type {Object}\n */\nconst _objectChangeEvent = { type: 'objectChange' };\n\n/**\n * This class can be used to transform objects in 3D space by adapting a similar interaction model\n * of DCC tools like Blender. Unlike other controls, it is not intended to transform the scene's camera.\n *\n * `TransformControls` expects that its attached 3D object is part of the scene graph.\n *\n * @augments Controls\n * @three_import import { TransformControls } from 'three/addons/controls/TransformControls.js';\n */\nclass TransformControls extends Controls {\n\n\t/**\n\t * Constructs a new controls instance.\n\t *\n\t * @param {Camera} camera - The camera of the rendered scene.\n\t * @param {?HTMLElement} domElement - The HTML element used for event listeners.\n\t */\n\tconstructor( camera, domElement = null ) {\n\n\t\tsuper( undefined, domElement );\n\n\t\tconst root = new TransformControlsRoot( this );\n\t\tthis._root = root;\n\n\t\tconst gizmo = new TransformControlsGizmo();\n\t\tthis._gizmo = gizmo;\n\t\troot.add( gizmo );\n\n\t\tconst plane = new TransformControlsPlane();\n\t\tthis._plane = plane;\n\t\troot.add( plane );\n\n\t\tconst scope = this;\n\n\t\t// Defined getter, setter and store for a property\n\t\tfunction defineProperty( propName, defaultValue ) {\n\n\t\t\tlet propValue = defaultValue;\n\n\t\t\tObject.defineProperty( scope, propName, {\n\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn propValue !== undefined ? propValue : defaultValue;\n\n\t\t\t\t},\n\n\t\t\t\tset: function ( value ) {\n\n\t\t\t\t\tif ( propValue !== value ) {\n\n\t\t\t\t\t\tpropValue = value;\n\t\t\t\t\t\tplane[ propName ] = value;\n\t\t\t\t\t\tgizmo[ propName ] = value;\n\n\t\t\t\t\t\tscope.dispatchEvent( { type: propName + '-changed', value: value } );\n\t\t\t\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tscope[ propName ] = defaultValue;\n\t\t\tplane[ propName ] = defaultValue;\n\t\t\tgizmo[ propName ] = defaultValue;\n\n\t\t}\n\n\t\t// Define properties with getters/setter\n\t\t// Setting the defined property will automatically trigger change event\n\t\t// Defined properties are passed down to gizmo and plane\n\n\t\t/**\n\t\t * The camera of the rendered scene.\n\t\t *\n\t\t * @name TransformControls#camera\n\t\t * @type {Camera}\n\t\t */\n\t\tdefineProperty( 'camera', camera );\n\t\tdefineProperty( 'object', undefined );\n\t\tdefineProperty( 'enabled', true );\n\n\t\t/**\n\t\t * The current transformation axis.\n\t\t *\n\t\t * @name TransformControls#axis\n\t\t * @type {string}\n\t\t */\n\t\tdefineProperty( 'axis', null );\n\n\t\t/**\n\t\t * The current transformation axis.\n\t\t *\n\t\t * @name TransformControls#mode\n\t\t * @type {('translate'|'rotate'|'scale')}\n\t\t * @default 'translate'\n\t\t */\n\t\tdefineProperty( 'mode', 'translate' );\n\n\t\t/**\n\t\t * By default, 3D objects are continuously translated. If you set this property to a numeric\n\t\t * value (world units), you can define in which steps the 3D object should be translated.\n\t\t *\n\t\t * @name TransformControls#translationSnap\n\t\t * @type {?number}\n\t\t * @default null\n\t\t */\n\t\tdefineProperty( 'translationSnap', null );\n\n\t\t/**\n\t\t * By default, 3D objects are continuously rotated. If you set this property to a numeric\n\t\t * value (radians), you can define in which steps the 3D object should be rotated.\n\t\t *\n\t\t * @name TransformControls#rotationSnap\n\t\t * @type {?number}\n\t\t * @default null\n\t\t */\n\t\tdefineProperty( 'rotationSnap', null );\n\n\t\t/**\n\t\t * By default, 3D objects are continuously scaled. If you set this property to a numeric\n\t\t * value, you can define in which steps the 3D object should be scaled.\n\t\t *\n\t\t * @name TransformControls#scaleSnap\n\t\t * @type {?number}\n\t\t * @default null\n\t\t */\n\t\tdefineProperty( 'scaleSnap', null );\n\n\t\t/**\n\t\t * Defines in which coordinate space transformations should be performed.\n\t\t *\n\t\t * @name TransformControls#space\n\t\t * @type {('world'|'local')}\n\t\t * @default 'world'\n\t\t */\n\t\tdefineProperty( 'space', 'world' );\n\n\t\t/**\n\t\t * The size of the helper UI (axes/planes).\n\t\t *\n\t\t * @name TransformControls#size\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tdefineProperty( 'size', 1 );\n\n\t\t/**\n\t\t * Whether dragging is currently performed or not.\n\t\t *\n\t\t * @name TransformControls#dragging\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default false\n\t\t */\n\t\tdefineProperty( 'dragging', false );\n\n\t\t/**\n\t\t * Whether the x-axis helper should be visible or not.\n\t\t *\n\t\t * @name TransformControls#showX\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tdefineProperty( 'showX', true );\n\n\t\t/**\n\t\t * Whether the y-axis helper should be visible or not.\n\t\t *\n\t\t * @name TransformControls#showY\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tdefineProperty( 'showY', true );\n\n\t\t/**\n\t\t * Whether the z-axis helper should be visible or not.\n\t\t *\n\t\t * @name TransformControls#showZ\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tdefineProperty( 'showZ', true );\n\n\t\t/**\n\t\t * The minimum allowed X position during translation.\n\t\t *\n\t\t * @name TransformControls#minX\n\t\t * @type {number}\n\t\t * @default -Infinity\n\t\t */\n\t\tdefineProperty( 'minX', - Infinity );\n\n\t\t/**\n\t\t * The maximum allowed X position during translation.\n\t\t *\n\t\t * @name TransformControls#maxX\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tdefineProperty( 'maxX', Infinity );\n\n\t\t/**\n\t\t * The minimum allowed y position during translation.\n\t\t *\n\t\t * @name TransformControls#minY\n\t\t * @type {number}\n\t\t * @default -Infinity\n\t\t */\n\t\tdefineProperty( 'minY', - Infinity );\n\n\t\t/**\n\t\t * The maximum allowed Y position during translation.\n\t\t *\n\t\t * @name TransformControls#maxY\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tdefineProperty( 'maxY', Infinity );\n\n\t\t/**\n\t\t * The minimum allowed z position during translation.\n\t\t *\n\t\t * @name TransformControls#minZ\n\t\t * @type {number}\n\t\t * @default -Infinity\n\t\t */\n\t\tdefineProperty( 'minZ', - Infinity );\n\n\t\t/**\n\t\t * The maximum allowed Z position during translation.\n\t\t *\n\t\t * @name TransformControls#maxZ\n\t\t * @type {number}\n\t\t * @default Infinity\n\t\t */\n\t\tdefineProperty( 'maxZ', Infinity );\n\n\t\t// Reusable utility variables\n\n\t\tconst worldPosition = new Vector3();\n\t\tconst worldPositionStart = new Vector3();\n\t\tconst worldQuaternion = new Quaternion();\n\t\tconst worldQuaternionStart = new Quaternion();\n\t\tconst cameraPosition = new Vector3();\n\t\tconst cameraQuaternion = new Quaternion();\n\t\tconst pointStart = new Vector3();\n\t\tconst pointEnd = new Vector3();\n\t\tconst rotationAxis = new Vector3();\n\t\tconst rotationAngle = 0;\n\t\tconst eye = new Vector3();\n\n\t\t// TODO: remove properties unused in plane and gizmo\n\n\t\tdefineProperty( 'worldPosition', worldPosition );\n\t\tdefineProperty( 'worldPositionStart', worldPositionStart );\n\t\tdefineProperty( 'worldQuaternion', worldQuaternion );\n\t\tdefineProperty( 'worldQuaternionStart', worldQuaternionStart );\n\t\tdefineProperty( 'cameraPosition', cameraPosition );\n\t\tdefineProperty( 'cameraQuaternion', cameraQuaternion );\n\t\tdefineProperty( 'pointStart', pointStart );\n\t\tdefineProperty( 'pointEnd', pointEnd );\n\t\tdefineProperty( 'rotationAxis', rotationAxis );\n\t\tdefineProperty( 'rotationAngle', rotationAngle );\n\t\tdefineProperty( 'eye', eye );\n\n\t\tthis._offset = new Vector3();\n\t\tthis._startNorm = new Vector3();\n\t\tthis._endNorm = new Vector3();\n\t\tthis._cameraScale = new Vector3();\n\n\t\tthis._parentPosition = new Vector3();\n\t\tthis._parentQuaternion = new Quaternion();\n\t\tthis._parentQuaternionInv = new Quaternion();\n\t\tthis._parentScale = new Vector3();\n\n\t\tthis._worldScaleStart = new Vector3();\n\t\tthis._worldQuaternionInv = new Quaternion();\n\t\tthis._worldScale = new Vector3();\n\n\t\tthis._positionStart = new Vector3();\n\t\tthis._quaternionStart = new Quaternion();\n\t\tthis._scaleStart = new Vector3();\n\n\t\tthis._getPointer = getPointer.bind( this );\n\t\tthis._onPointerDown = onPointerDown.bind( this );\n\t\tthis._onPointerHover = onPointerHover.bind( this );\n\t\tthis._onPointerMove = onPointerMove.bind( this );\n\t\tthis._onPointerUp = onPointerUp.bind( this );\n\n\t\tif ( domElement !== null ) {\n\n\t\t\tthis.connect( domElement );\n\n\t\t}\n\n\t}\n\n\tconnect( element ) {\n\n\t\tsuper.connect( element );\n\n\t\tthis.domElement.addEventListener( 'pointerdown', this._onPointerDown );\n\t\tthis.domElement.addEventListener( 'pointermove', this._onPointerHover );\n\t\tthis.domElement.addEventListener( 'pointerup', this._onPointerUp );\n\n\t\tthis.domElement.style.touchAction = 'none'; // disable touch scroll\n\n\t}\n\n\tdisconnect() {\n\n\t\tthis.domElement.removeEventListener( 'pointerdown', this._onPointerDown );\n\t\tthis.domElement.removeEventListener( 'pointermove', this._onPointerHover );\n\t\tthis.domElement.removeEventListener( 'pointermove', this._onPointerMove );\n\t\tthis.domElement.removeEventListener( 'pointerup', this._onPointerUp );\n\n\t\tthis.domElement.style.touchAction = 'auto';\n\n\t}\n\n\t/**\n\t * Returns the visual representation of the controls. Add the helper to your scene to\n\t * visually transform the attached 3D object.\n\t *\n\t * @return {TransformControlsRoot} The helper.\n\t */\n\tgetHelper() {\n\n\t\treturn this._root;\n\n\t}\n\n\tpointerHover( pointer ) {\n\n\t\tif ( this.object === undefined || this.dragging === true ) return;\n\n\t\tif ( pointer !== null ) _raycaster.setFromCamera( pointer, this.camera );\n\n\t\tconst intersect = intersectObjectWithRay( this._gizmo.picker[ this.mode ], _raycaster );\n\n\t\tif ( intersect ) {\n\n\t\t\tthis.axis = intersect.object.name;\n\n\t\t} else {\n\n\t\t\tthis.axis = null;\n\n\t\t}\n\n\t}\n\n\tpointerDown( pointer ) {\n\n\t\tif ( this.object === undefined || this.dragging === true || ( pointer != null && pointer.button !== 0 ) ) return;\n\n\t\tif ( this.axis !== null ) {\n\n\t\t\tif ( pointer !== null ) _raycaster.setFromCamera( pointer, this.camera );\n\n\t\t\tconst planeIntersect = intersectObjectWithRay( this._plane, _raycaster, true );\n\n\t\t\tif ( planeIntersect ) {\n\n\t\t\t\tthis.object.updateMatrixWorld();\n\t\t\t\tthis.object.parent.updateMatrixWorld();\n\n\t\t\t\tthis._positionStart.copy( this.object.position );\n\t\t\t\tthis._quaternionStart.copy( this.object.quaternion );\n\t\t\t\tthis._scaleStart.copy( this.object.scale );\n\n\t\t\t\tthis.object.matrixWorld.decompose( this.worldPositionStart, this.worldQuaternionStart, this._worldScaleStart );\n\n\t\t\t\tthis.pointStart.copy( planeIntersect.point ).sub( this.worldPositionStart );\n\n\t\t\t}\n\n\t\t\tthis.dragging = true;\n\t\t\t_mouseDownEvent.mode = this.mode;\n\t\t\tthis.dispatchEvent( _mouseDownEvent );\n\n\t\t}\n\n\t}\n\n\tpointerMove( pointer ) {\n\n\t\tconst axis = this.axis;\n\t\tconst mode = this.mode;\n\t\tconst object = this.object;\n\t\tlet space = this.space;\n\n\t\tif ( mode === 'scale' ) {\n\n\t\t\tspace = 'local';\n\n\t\t} else if ( axis === 'E' || axis === 'XYZE' || axis === 'XYZ' ) {\n\n\t\t\tspace = 'world';\n\n\t\t}\n\n\t\tif ( object === undefined || axis === null || this.dragging === false || ( pointer !== null && pointer.button !== - 1 ) ) return;\n\n\t\tif ( pointer !== null ) _raycaster.setFromCamera( pointer, this.camera );\n\n\t\tconst planeIntersect = intersectObjectWithRay( this._plane, _raycaster, true );\n\n\t\tif ( ! planeIntersect ) return;\n\n\t\tthis.pointEnd.copy( planeIntersect.point ).sub( this.worldPositionStart );\n\n\t\tif ( mode === 'translate' ) {\n\n\t\t\t// Apply translate\n\n\t\t\tthis._offset.copy( this.pointEnd ).sub( this.pointStart );\n\n\t\t\tif ( space === 'local' && axis !== 'XYZ' ) {\n\n\t\t\t\tthis._offset.applyQuaternion( this._worldQuaternionInv );\n\n\t\t\t}\n\n\t\t\tif ( axis.indexOf( 'X' ) === - 1 ) this._offset.x = 0;\n\t\t\tif ( axis.indexOf( 'Y' ) === - 1 ) this._offset.y = 0;\n\t\t\tif ( axis.indexOf( 'Z' ) === - 1 ) this._offset.z = 0;\n\n\t\t\tif ( space === 'local' && axis !== 'XYZ' ) {\n\n\t\t\t\tthis._offset.applyQuaternion( this._quaternionStart ).divide( this._parentScale );\n\n\t\t\t} else {\n\n\t\t\t\tthis._offset.applyQuaternion( this._parentQuaternionInv ).divide( this._parentScale );\n\n\t\t\t}\n\n\t\t\tobject.position.copy( this._offset ).add( this._positionStart );\n\n\t\t\t// Apply translation snap\n\n\t\t\tif ( this.translationSnap ) {\n\n\t\t\t\tif ( space === 'local' ) {\n\n\t\t\t\t\tobject.position.applyQuaternion( _tempQuaternion.copy( this._quaternionStart ).invert() );\n\n\t\t\t\t\tif ( axis.search( 'X' ) !== - 1 ) {\n\n\t\t\t\t\t\tobject.position.x = Math.round( object.position.x / this.translationSnap ) * this.translationSnap;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( axis.search( 'Y' ) !== - 1 ) {\n\n\t\t\t\t\t\tobject.position.y = Math.round( object.position.y / this.translationSnap ) * this.translationSnap;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( axis.search( 'Z' ) !== - 1 ) {\n\n\t\t\t\t\t\tobject.position.z = Math.round( object.position.z / this.translationSnap ) * this.translationSnap;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobject.position.applyQuaternion( this._quaternionStart );\n\n\t\t\t\t}\n\n\t\t\t\tif ( space === 'world' ) {\n\n\t\t\t\t\tif ( object.parent ) {\n\n\t\t\t\t\t\tobject.position.add( _tempVector.setFromMatrixPosition( object.parent.matrixWorld ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( axis.search( 'X' ) !== - 1 ) {\n\n\t\t\t\t\t\tobject.position.x = Math.round( object.position.x / this.translationSnap ) * this.translationSnap;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( axis.search( 'Y' ) !== - 1 ) {\n\n\t\t\t\t\t\tobject.position.y = Math.round( object.position.y / this.translationSnap ) * this.translationSnap;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( axis.search( 'Z' ) !== - 1 ) {\n\n\t\t\t\t\t\tobject.position.z = Math.round( object.position.z / this.translationSnap ) * this.translationSnap;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( object.parent ) {\n\n\t\t\t\t\t\tobject.position.sub( _tempVector.setFromMatrixPosition( object.parent.matrixWorld ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tobject.position.x = Math.max( this.minX, Math.min( this.maxX, object.position.x ) );\n\t\t\tobject.position.y = Math.max( this.minY, Math.min( this.maxY, object.position.y ) );\n\t\t\tobject.position.z = Math.max( this.minZ, Math.min( this.maxZ, object.position.z ) );\n\n\t\t} else if ( mode === 'scale' ) {\n\n\t\t\tif ( axis.search( 'XYZ' ) !== - 1 ) {\n\n\t\t\t\tlet d = this.pointEnd.length() / this.pointStart.length();\n\n\t\t\t\tif ( this.pointEnd.dot( this.pointStart ) < 0 ) d *= - 1;\n\n\t\t\t\t_tempVector2.set( d, d, d );\n\n\t\t\t} else {\n\n\t\t\t\t_tempVector.copy( this.pointStart );\n\t\t\t\t_tempVector2.copy( this.pointEnd );\n\n\t\t\t\t_tempVector.applyQuaternion( this._worldQuaternionInv );\n\t\t\t\t_tempVector2.applyQuaternion( this._worldQuaternionInv );\n\n\t\t\t\t_tempVector2.divide( _tempVector );\n\n\t\t\t\tif ( axis.search( 'X' ) === - 1 ) {\n\n\t\t\t\t\t_tempVector2.x = 1;\n\n\t\t\t\t}\n\n\t\t\t\tif ( axis.search( 'Y' ) === - 1 ) {\n\n\t\t\t\t\t_tempVector2.y = 1;\n\n\t\t\t\t}\n\n\t\t\t\tif ( axis.search( 'Z' ) === - 1 ) {\n\n\t\t\t\t\t_tempVector2.z = 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Apply scale\n\n\t\t\tobject.scale.copy( this._scaleStart ).multiply( _tempVector2 );\n\n\t\t\tif ( this.scaleSnap ) {\n\n\t\t\t\tif ( axis.search( 'X' ) !== - 1 ) {\n\n\t\t\t\t\tobject.scale.x = Math.round( object.scale.x / this.scaleSnap ) * this.scaleSnap || this.scaleSnap;\n\n\t\t\t\t}\n\n\t\t\t\tif ( axis.search( 'Y' ) !== - 1 ) {\n\n\t\t\t\t\tobject.scale.y = Math.round( object.scale.y / this.scaleSnap ) * this.scaleSnap || this.scaleSnap;\n\n\t\t\t\t}\n\n\t\t\t\tif ( axis.search( 'Z' ) !== - 1 ) {\n\n\t\t\t\t\tobject.scale.z = Math.round( object.scale.z / this.scaleSnap ) * this.scaleSnap || this.scaleSnap;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( mode === 'rotate' ) {\n\n\t\t\tthis._offset.copy( this.pointEnd ).sub( this.pointStart );\n\n\t\t\tconst ROTATION_SPEED = 20 / this.worldPosition.distanceTo( _tempVector.setFromMatrixPosition( this.camera.matrixWorld ) );\n\n\t\t\tlet _inPlaneRotation = false;\n\n\t\t\tif ( axis === 'XYZE' ) {\n\n\t\t\t\tthis.rotationAxis.copy( this._offset ).cross( this.eye ).normalize();\n\t\t\t\tthis.rotationAngle = this._offset.dot( _tempVector.copy( this.rotationAxis ).cross( this.eye ) ) * ROTATION_SPEED;\n\n\t\t\t} else if ( axis === 'X' || axis === 'Y' || axis === 'Z' ) {\n\n\t\t\t\tthis.rotationAxis.copy( _unit[ axis ] );\n\n\t\t\t\t_tempVector.copy( _unit[ axis ] );\n\n\t\t\t\tif ( space === 'local' ) {\n\n\t\t\t\t\t_tempVector.applyQuaternion( this.worldQuaternion );\n\n\t\t\t\t}\n\n\t\t\t\t_tempVector.cross( this.eye );\n\n\t\t\t\t// When _tempVector is 0 after cross with this.eye the vectors are parallel and should use in-plane rotation logic.\n\t\t\t\tif ( _tempVector.length() === 0 ) {\n\n\t\t\t\t\t_inPlaneRotation = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.rotationAngle = this._offset.dot( _tempVector.normalize() ) * ROTATION_SPEED;\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t\tif ( axis === 'E' || _inPlaneRotation ) {\n\n\t\t\t\tthis.rotationAxis.copy( this.eye );\n\t\t\t\tthis.rotationAngle = this.pointEnd.angleTo( this.pointStart );\n\n\t\t\t\tthis._startNorm.copy( this.pointStart ).normalize();\n\t\t\t\tthis._endNorm.copy( this.pointEnd ).normalize();\n\n\t\t\t\tthis.rotationAngle *= ( this._endNorm.cross( this._startNorm ).dot( this.eye ) < 0 ? 1 : - 1 );\n\n\t\t\t}\n\n\t\t\t// Apply rotation snap\n\n\t\t\tif ( this.rotationSnap ) this.rotationAngle = Math.round( this.rotationAngle / this.rotationSnap ) * this.rotationSnap;\n\n\t\t\t// Apply rotate\n\t\t\tif ( space === 'local' && axis !== 'E' && axis !== 'XYZE' ) {\n\n\t\t\t\tobject.quaternion.copy( this._quaternionStart );\n\t\t\t\tobject.quaternion.multiply( _tempQuaternion.setFromAxisAngle( this.rotationAxis, this.rotationAngle ) ).normalize();\n\n\t\t\t} else {\n\n\t\t\t\tthis.rotationAxis.applyQuaternion( this._parentQuaternionInv );\n\t\t\t\tobject.quaternion.copy( _tempQuaternion.setFromAxisAngle( this.rotationAxis, this.rotationAngle ) );\n\t\t\t\tobject.quaternion.multiply( this._quaternionStart ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( _changeEvent );\n\t\tthis.dispatchEvent( _objectChangeEvent );\n\n\t}\n\n\tpointerUp( pointer ) {\n\n\t\tif ( pointer !== null && pointer.button !== 0 ) return;\n\n\t\tif ( this.dragging && ( this.axis !== null ) ) {\n\n\t\t\t_mouseUpEvent.mode = this.mode;\n\t\t\tthis.dispatchEvent( _mouseUpEvent );\n\n\t\t}\n\n\t\tthis.dragging = false;\n\t\tthis.axis = null;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.disconnect();\n\n\t\tthis._root.dispose();\n\n\t}\n\n\t/**\n\t * Sets the 3D object that should be transformed and ensures the controls UI is visible.\n\t *\n\t * @param {Object3D} object - The 3D object that should be transformed.\n\t * @return {TransformControls} A reference to this controls.\n\t */\n\tattach( object ) {\n\n\t\tthis.object = object;\n\t\tthis._root.visible = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes the current 3D object from the controls and makes the helper UI invisible.\n\t *\n\t * @return {TransformControls} A reference to this controls.\n\t */\n\tdetach() {\n\n\t\tthis.object = undefined;\n\t\tthis.axis = null;\n\n\t\tthis._root.visible = false;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Resets the object's position, rotation and scale to when the current transform began.\n\t */\n\treset() {\n\n\t\tif ( ! this.enabled ) return;\n\n\t\tif ( this.dragging ) {\n\n\t\t\tthis.object.position.copy( this._positionStart );\n\t\t\tthis.object.quaternion.copy( this._quaternionStart );\n\t\t\tthis.object.scale.copy( this._scaleStart );\n\n\t\t\tthis.dispatchEvent( _changeEvent );\n\t\t\tthis.dispatchEvent( _objectChangeEvent );\n\n\t\t\tthis.pointStart.copy( this.pointEnd );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns the raycaster that is used for user interaction. This object is shared between all\n\t * instances of `TransformControls`.\n\t *\n\t * @returns {Raycaster} The internal raycaster.\n\t */\n\tgetRaycaster() {\n\n\t\treturn _raycaster;\n\n\t}\n\n\t/**\n\t * Returns the transformation mode.\n\t *\n\t * @returns {'translate'|'rotate'|'scale'} The transformation mode.\n\t */\n\tgetMode() {\n\n\t\treturn this.mode;\n\n\t}\n\n\t/**\n\t * Sets the given transformation mode.\n\t *\n\t * @param {'translate'|'rotate'|'scale'} mode - The transformation mode to set.\n\t */\n\tsetMode( mode ) {\n\n\t\tthis.mode = mode;\n\n\t}\n\n\t/**\n\t * Sets the translation snap.\n\t *\n\t * @param {?number} translationSnap - The translation snap to set.\n\t */\n\tsetTranslationSnap( translationSnap ) {\n\n\t\tthis.translationSnap = translationSnap;\n\n\t}\n\n\t/**\n\t * Sets the rotation snap.\n\t *\n\t * @param {?number} rotationSnap - The rotation snap to set.\n\t */\n\tsetRotationSnap( rotationSnap ) {\n\n\t\tthis.rotationSnap = rotationSnap;\n\n\t}\n\n\t/**\n\t * Sets the scale snap.\n\t *\n\t * @param {?number} scaleSnap - The scale snap to set.\n\t */\n\tsetScaleSnap( scaleSnap ) {\n\n\t\tthis.scaleSnap = scaleSnap;\n\n\t}\n\n\t/**\n\t * Sets the size of the helper UI.\n\t *\n\t * @param {number} size - The size to set.\n\t */\n\tsetSize( size ) {\n\n\t\tthis.size = size;\n\n\t}\n\n\t/**\n\t * Sets the coordinate space in which transformations are applied.\n\t *\n\t * @param {'world'|'local'} space - The space to set.\n\t */\n\tsetSpace( space ) {\n\n\t\tthis.space = space;\n\n\t}\n\n\t/**\n\t * Sets the colors of the control's gizmo.\n\t *\n\t * @param {number|Color|string} xAxis - The x-axis color.\n\t * @param {number|Color|string} yAxis - The y-axis color.\n\t * @param {number|Color|string} zAxis - The z-axis color.\n\t * @param {number|Color|string} active - The color for active elements.\n\t */\n\tsetColors( xAxis, yAxis, zAxis, active ) {\n\n\t\tconst materialLib = this._gizmo.materialLib;\n\n\t\tmaterialLib.xAxis.color.set( xAxis );\n\t\tmaterialLib.yAxis.color.set( yAxis );\n\t\tmaterialLib.zAxis.color.set( zAxis );\n\t\tmaterialLib.active.color.set( active );\n\t\tmaterialLib.xAxisTransparent.color.set( xAxis );\n\t\tmaterialLib.yAxisTransparent.color.set( yAxis );\n\t\tmaterialLib.zAxisTransparent.color.set( zAxis );\n\t\tmaterialLib.activeTransparent.color.set( active );\n\n\t\t// update color caches\n\n\t\tif ( materialLib.xAxis._color ) materialLib.xAxis._color.set( xAxis );\n\t\tif ( materialLib.yAxis._color ) materialLib.yAxis._color.set( yAxis );\n\t\tif ( materialLib.zAxis._color ) materialLib.zAxis._color.set( zAxis );\n\t\tif ( materialLib.active._color ) materialLib.active._color.set( active );\n\t\tif ( materialLib.xAxisTransparent._color ) materialLib.xAxisTransparent._color.set( xAxis );\n\t\tif ( materialLib.yAxisTransparent._color ) materialLib.yAxisTransparent._color.set( yAxis );\n\t\tif ( materialLib.zAxisTransparent._color ) materialLib.zAxisTransparent._color.set( zAxis );\n\t\tif ( materialLib.activeTransparent._color ) materialLib.activeTransparent._color.set( active );\n\n\t}\n\n}\n\n// mouse / touch event handlers\n\nfunction getPointer( event ) {\n\n\tif ( this.domElement.ownerDocument.pointerLockElement ) {\n\n\t\treturn {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\tbutton: event.button\n\t\t};\n\n\t} else {\n\n\t\tconst rect = this.domElement.getBoundingClientRect();\n\n\t\treturn {\n\t\t\tx: ( event.clientX - rect.left ) / rect.width * 2 - 1,\n\t\t\ty: - ( event.clientY - rect.top ) / rect.height * 2 + 1,\n\t\t\tbutton: event.button\n\t\t};\n\n\t}\n\n}\n\nfunction onPointerHover( event ) {\n\n\tif ( ! this.enabled ) return;\n\n\tswitch ( event.pointerType ) {\n\n\t\tcase 'mouse':\n\t\tcase 'pen':\n\t\t\tthis.pointerHover( this._getPointer( event ) );\n\t\t\tbreak;\n\n\t}\n\n}\n\nfunction onPointerDown( event ) {\n\n\tif ( ! this.enabled ) return;\n\n\tif ( ! document.pointerLockElement ) {\n\n\t\tthis.domElement.setPointerCapture( event.pointerId );\n\n\t}\n\n\tthis.domElement.addEventListener( 'pointermove', this._onPointerMove );\n\n\tthis.pointerHover( this._getPointer( event ) );\n\tthis.pointerDown( this._getPointer( event ) );\n\n}\n\nfunction onPointerMove( event ) {\n\n\tif ( ! this.enabled ) return;\n\n\tthis.pointerMove( this._getPointer( event ) );\n\n}\n\nfunction onPointerUp( event ) {\n\n\tif ( ! this.enabled ) return;\n\n\tthis.domElement.releasePointerCapture( event.pointerId );\n\n\tthis.domElement.removeEventListener( 'pointermove', this._onPointerMove );\n\n\tthis.pointerUp( this._getPointer( event ) );\n\n}\n\nfunction intersectObjectWithRay( object, raycaster, includeInvisible ) {\n\n\tconst allIntersections = raycaster.intersectObject( object, true );\n\n\tfor ( let i = 0; i < allIntersections.length; i ++ ) {\n\n\t\tif ( allIntersections[ i ].object.visible || includeInvisible ) {\n\n\t\t\treturn allIntersections[ i ];\n\n\t\t}\n\n\t}\n\n\treturn false;\n\n}\n\n//\n\n// Reusable utility variables\n\nconst _tempEuler = new Euler();\nconst _alignVector = new Vector3( 0, 1, 0 );\nconst _zeroVector = new Vector3( 0, 0, 0 );\nconst _lookAtMatrix = new Matrix4();\nconst _tempQuaternion2 = new Quaternion();\nconst _identityQuaternion = new Quaternion();\nconst _dirVector = new Vector3();\nconst _tempMatrix = new Matrix4();\n\nconst _unitX = new Vector3( 1, 0, 0 );\nconst _unitY = new Vector3( 0, 1, 0 );\nconst _unitZ = new Vector3( 0, 0, 1 );\n\nconst _v1 = new Vector3();\nconst _v2 = new Vector3();\nconst _v3 = new Vector3();\n\nclass TransformControlsRoot extends Object3D {\n\n\tconstructor( controls ) {\n\n\t\tsuper();\n\n\t\tthis.isTransformControlsRoot = true;\n\n\t\tthis.controls = controls;\n\t\tthis.visible = false;\n\n\t}\n\n\t// updateMatrixWorld updates key transformation variables\n\tupdateMatrixWorld( force ) {\n\n\t\tconst controls = this.controls;\n\n\t\tif ( controls.object !== undefined ) {\n\n\t\t\tcontrols.object.updateMatrixWorld();\n\n\t\t\tif ( controls.object.parent === null ) {\n\n\t\t\t\tconsole.error( 'TransformControls: The attached 3D object must be a part of the scene graph.' );\n\n\t\t\t} else {\n\n\t\t\t\tcontrols.object.parent.matrixWorld.decompose( controls._parentPosition, controls._parentQuaternion, controls._parentScale );\n\n\t\t\t}\n\n\t\t\tcontrols.object.matrixWorld.decompose( controls.worldPosition, controls.worldQuaternion, controls._worldScale );\n\n\t\t\tcontrols._parentQuaternionInv.copy( controls._parentQuaternion ).invert();\n\t\t\tcontrols._worldQuaternionInv.copy( controls.worldQuaternion ).invert();\n\n\t\t}\n\n\t\tcontrols.camera.updateMatrixWorld();\n\t\tcontrols.camera.matrixWorld.decompose( controls.cameraPosition, controls.cameraQuaternion, controls._cameraScale );\n\n\t\tif ( controls.camera.isOrthographicCamera ) {\n\n\t\t\tcontrols.camera.getWorldDirection( controls.eye ).negate();\n\n\t\t} else {\n\n\t\t\tcontrols.eye.copy( controls.cameraPosition ).sub( controls.worldPosition ).normalize();\n\n\t\t}\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.traverse( function ( child ) {\n\n\t\t\tif ( child.geometry ) child.geometry.dispose();\n\t\t\tif ( child.material ) child.material.dispose();\n\n\t\t} );\n\n\t}\n\n}\n\nclass TransformControlsGizmo extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isTransformControlsGizmo = true;\n\n\t\tthis.type = 'TransformControlsGizmo';\n\n\t\t// shared materials\n\n\t\tconst gizmoMaterial = new MeshBasicMaterial( {\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tfog: false,\n\t\t\ttoneMapped: false,\n\t\t\ttransparent: true\n\t\t} );\n\n\t\tconst gizmoLineMaterial = new LineBasicMaterial( {\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tfog: false,\n\t\t\ttoneMapped: false,\n\t\t\ttransparent: true\n\t\t} );\n\n\t\t// Make unique material for each axis/color\n\n\t\tconst matInvisible = gizmoMaterial.clone();\n\t\tmatInvisible.opacity = 0.15;\n\n\t\tconst matHelper = gizmoLineMaterial.clone();\n\t\tmatHelper.opacity = 0.5;\n\n\t\tconst matRed = gizmoMaterial.clone();\n\t\tmatRed.color.setHex( 0xff0000 );\n\n\t\tconst matGreen = gizmoMaterial.clone();\n\t\tmatGreen.color.setHex( 0x00ff00 );\n\n\t\tconst matBlue = gizmoMaterial.clone();\n\t\tmatBlue.color.setHex( 0x0000ff );\n\n\t\tconst matRedTransparent = gizmoMaterial.clone();\n\t\tmatRedTransparent.color.setHex( 0xff0000 );\n\t\tmatRedTransparent.opacity = 0.5;\n\n\t\tconst matGreenTransparent = gizmoMaterial.clone();\n\t\tmatGreenTransparent.color.setHex( 0x00ff00 );\n\t\tmatGreenTransparent.opacity = 0.5;\n\n\t\tconst matBlueTransparent = gizmoMaterial.clone();\n\t\tmatBlueTransparent.color.setHex( 0x0000ff );\n\t\tmatBlueTransparent.opacity = 0.5;\n\n\t\tconst matWhiteTransparent = gizmoMaterial.clone();\n\t\tmatWhiteTransparent.opacity = 0.25;\n\n\t\tconst matYellowTransparent = gizmoMaterial.clone();\n\t\tmatYellowTransparent.color.setHex( 0xffff00 );\n\t\tmatYellowTransparent.opacity = 0.25;\n\n\t\tconst matYellow = gizmoMaterial.clone();\n\t\tmatYellow.color.setHex( 0xffff00 );\n\n\t\tconst matGray = gizmoMaterial.clone();\n\t\tmatGray.color.setHex( 0x787878 );\n\n\t\t// materials in the below property are configurable via setColors()\n\n\t\tthis.materialLib = {\n\t\t\txAxis: matRed,\n\t\t\tyAxis: matGreen,\n\t\t\tzAxis: matBlue,\n\t\t\tactive: matYellow,\n\t\t\txAxisTransparent: matRedTransparent,\n\t\t\tyAxisTransparent: matGreenTransparent,\n\t\t\tzAxisTransparent: matBlueTransparent,\n\t\t\tactiveTransparent: matYellowTransparent\n\t\t};\n\n\t\t// reusable geometry\n\n\t\tconst arrowGeometry = new CylinderGeometry( 0, 0.04, 0.1, 12 );\n\t\tarrowGeometry.translate( 0, 0.05, 0 );\n\n\t\tconst scaleHandleGeometry = new BoxGeometry( 0.08, 0.08, 0.08 );\n\t\tscaleHandleGeometry.translate( 0, 0.04, 0 );\n\n\t\tconst lineGeometry = new BufferGeometry();\n\t\tlineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0,\t1, 0, 0 ], 3 ) );\n\n\t\tconst lineGeometry2 = new CylinderGeometry( 0.0075, 0.0075, 0.5, 3 );\n\t\tlineGeometry2.translate( 0, 0.25, 0 );\n\n\t\tfunction CircleGeometry( radius, arc ) {\n\n\t\t\tconst geometry = new TorusGeometry( radius, 0.0075, 3, 64, arc * Math.PI * 2 );\n\t\t\tgeometry.rotateY( Math.PI / 2 );\n\t\t\tgeometry.rotateX( Math.PI / 2 );\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\t// Special geometry for transform helper. If scaled with position vector it spans from [0,0,0] to position\n\n\t\tfunction TranslateHelperGeometry() {\n\n\t\t\tconst geometry = new BufferGeometry();\n\n\t\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 1, 1, 1 ], 3 ) );\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\t// Gizmo definitions - custom hierarchy definitions for setupGizmo() function\n\n\t\tconst gizmoTranslate = {\n\t\t\tX: [\n\t\t\t\t[ new Mesh( arrowGeometry, matRed ), [ 0.5, 0, 0 ], [ 0, 0, - Math.PI / 2 ]],\n\t\t\t\t[ new Mesh( arrowGeometry, matRed ), [ - 0.5, 0, 0 ], [ 0, 0, Math.PI / 2 ]],\n\t\t\t\t[ new Mesh( lineGeometry2, matRed ), [ 0, 0, 0 ], [ 0, 0, - Math.PI / 2 ]]\n\t\t\t],\n\t\t\tY: [\n\t\t\t\t[ new Mesh( arrowGeometry, matGreen ), [ 0, 0.5, 0 ]],\n\t\t\t\t[ new Mesh( arrowGeometry, matGreen ), [ 0, - 0.5, 0 ], [ Math.PI, 0, 0 ]],\n\t\t\t\t[ new Mesh( lineGeometry2, matGreen ) ]\n\t\t\t],\n\t\t\tZ: [\n\t\t\t\t[ new Mesh( arrowGeometry, matBlue ), [ 0, 0, 0.5 ], [ Math.PI / 2, 0, 0 ]],\n\t\t\t\t[ new Mesh( arrowGeometry, matBlue ), [ 0, 0, - 0.5 ], [ - Math.PI / 2, 0, 0 ]],\n\t\t\t\t[ new Mesh( lineGeometry2, matBlue ), null, [ Math.PI / 2, 0, 0 ]]\n\t\t\t],\n\t\t\tXYZ: [\n\t\t\t\t[ new Mesh( new OctahedronGeometry( 0.1, 0 ), matWhiteTransparent ), [ 0, 0, 0 ]]\n\t\t\t],\n\t\t\tXY: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matBlueTransparent ), [ 0.15, 0.15, 0 ]]\n\t\t\t],\n\t\t\tYZ: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matRedTransparent ), [ 0, 0.15, 0.15 ], [ 0, Math.PI / 2, 0 ]]\n\t\t\t],\n\t\t\tXZ: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matGreenTransparent ), [ 0.15, 0, 0.15 ], [ - Math.PI / 2, 0, 0 ]]\n\t\t\t]\n\t\t};\n\n\t\tconst pickerTranslate = {\n\t\t\tX: [\n\t\t\t\t[ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0.3, 0, 0 ], [ 0, 0, - Math.PI / 2 ]],\n\t\t\t\t[ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ - 0.3, 0, 0 ], [ 0, 0, Math.PI / 2 ]]\n\t\t\t],\n\t\t\tY: [\n\t\t\t\t[ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, 0.3, 0 ]],\n\t\t\t\t[ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, - 0.3, 0 ], [ 0, 0, Math.PI ]]\n\t\t\t],\n\t\t\tZ: [\n\t\t\t\t[ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, 0, 0.3 ], [ Math.PI / 2, 0, 0 ]],\n\t\t\t\t[ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, 0, - 0.3 ], [ - Math.PI / 2, 0, 0 ]]\n\t\t\t],\n\t\t\tXYZ: [\n\t\t\t\t[ new Mesh( new OctahedronGeometry( 0.2, 0 ), matInvisible ) ]\n\t\t\t],\n\t\t\tXY: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.2, 0.2, 0.01 ), matInvisible ), [ 0.15, 0.15, 0 ]]\n\t\t\t],\n\t\t\tYZ: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.2, 0.2, 0.01 ), matInvisible ), [ 0, 0.15, 0.15 ], [ 0, Math.PI / 2, 0 ]]\n\t\t\t],\n\t\t\tXZ: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.2, 0.2, 0.01 ), matInvisible ), [ 0.15, 0, 0.15 ], [ - Math.PI / 2, 0, 0 ]]\n\t\t\t]\n\t\t};\n\n\t\tconst helperTranslate = {\n\t\t\tSTART: [\n\t\t\t\t[ new Mesh( new OctahedronGeometry( 0.01, 2 ), matHelper ), null, null, null, 'helper' ]\n\t\t\t],\n\t\t\tEND: [\n\t\t\t\t[ new Mesh( new OctahedronGeometry( 0.01, 2 ), matHelper ), null, null, null, 'helper' ]\n\t\t\t],\n\t\t\tDELTA: [\n\t\t\t\t[ new Line( TranslateHelperGeometry(), matHelper ), null, null, null, 'helper' ]\n\t\t\t],\n\t\t\tX: [\n\t\t\t\t[ new Line( lineGeometry, matHelper ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ]\n\t\t\t],\n\t\t\tY: [\n\t\t\t\t[ new Line( lineGeometry, matHelper ), [ 0, - 1e3, 0 ], [ 0, 0, Math.PI / 2 ], [ 1e6, 1, 1 ], 'helper' ]\n\t\t\t],\n\t\t\tZ: [\n\t\t\t\t[ new Line( lineGeometry, matHelper ), [ 0, 0, - 1e3 ], [ 0, - Math.PI / 2, 0 ], [ 1e6, 1, 1 ], 'helper' ]\n\t\t\t]\n\t\t};\n\n\t\tconst gizmoRotate = {\n\t\t\tXYZE: [\n\t\t\t\t[ new Mesh( CircleGeometry( 0.5, 1 ), matGray ), null, [ 0, Math.PI / 2, 0 ]]\n\t\t\t],\n\t\t\tX: [\n\t\t\t\t[ new Mesh( CircleGeometry( 0.5, 0.5 ), matRed ) ]\n\t\t\t],\n\t\t\tY: [\n\t\t\t\t[ new Mesh( CircleGeometry( 0.5, 0.5 ), matGreen ), null, [ 0, 0, - Math.PI / 2 ]]\n\t\t\t],\n\t\t\tZ: [\n\t\t\t\t[ new Mesh( CircleGeometry( 0.5, 0.5 ), matBlue ), null, [ 0, Math.PI / 2, 0 ]]\n\t\t\t],\n\t\t\tE: [\n\t\t\t\t[ new Mesh( CircleGeometry( 0.75, 1 ), matYellowTransparent ), null, [ 0, Math.PI / 2, 0 ]]\n\t\t\t]\n\t\t};\n\n\t\tconst helperRotate = {\n\t\t\tAXIS: [\n\t\t\t\t[ new Line( lineGeometry, matHelper ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ]\n\t\t\t]\n\t\t};\n\n\t\tconst pickerRotate = {\n\t\t\tXYZE: [\n\t\t\t\t[ new Mesh( new SphereGeometry( 0.25, 10, 8 ), matInvisible ) ]\n\t\t\t],\n\t\t\tX: [\n\t\t\t\t[ new Mesh( new TorusGeometry( 0.5, 0.1, 4, 24 ), matInvisible ), [ 0, 0, 0 ], [ 0, - Math.PI / 2, - Math.PI / 2 ]],\n\t\t\t],\n\t\t\tY: [\n\t\t\t\t[ new Mesh( new TorusGeometry( 0.5, 0.1, 4, 24 ), matInvisible ), [ 0, 0, 0 ], [ Math.PI / 2, 0, 0 ]],\n\t\t\t],\n\t\t\tZ: [\n\t\t\t\t[ new Mesh( new TorusGeometry( 0.5, 0.1, 4, 24 ), matInvisible ), [ 0, 0, 0 ], [ 0, 0, - Math.PI / 2 ]],\n\t\t\t],\n\t\t\tE: [\n\t\t\t\t[ new Mesh( new TorusGeometry( 0.75, 0.1, 2, 24 ), matInvisible ) ]\n\t\t\t]\n\t\t};\n\n\t\tconst gizmoScale = {\n\t\t\tX: [\n\t\t\t\t[ new Mesh( scaleHandleGeometry, matRed ), [ 0.5, 0, 0 ], [ 0, 0, - Math.PI / 2 ]],\n\t\t\t\t[ new Mesh( lineGeometry2, matRed ), [ 0, 0, 0 ], [ 0, 0, - Math.PI / 2 ]],\n\t\t\t\t[ new Mesh( scaleHandleGeometry, matRed ), [ - 0.5, 0, 0 ], [ 0, 0, Math.PI / 2 ]],\n\t\t\t],\n\t\t\tY: [\n\t\t\t\t[ new Mesh( scaleHandleGeometry, matGreen ), [ 0, 0.5, 0 ]],\n\t\t\t\t[ new Mesh( lineGeometry2, matGreen ) ],\n\t\t\t\t[ new Mesh( scaleHandleGeometry, matGreen ), [ 0, - 0.5, 0 ], [ 0, 0, Math.PI ]],\n\t\t\t],\n\t\t\tZ: [\n\t\t\t\t[ new Mesh( scaleHandleGeometry, matBlue ), [ 0, 0, 0.5 ], [ Math.PI / 2, 0, 0 ]],\n\t\t\t\t[ new Mesh( lineGeometry2, matBlue ), [ 0, 0, 0 ], [ Math.PI / 2, 0, 0 ]],\n\t\t\t\t[ new Mesh( scaleHandleGeometry, matBlue ), [ 0, 0, - 0.5 ], [ - Math.PI / 2, 0, 0 ]]\n\t\t\t],\n\t\t\tXY: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matBlueTransparent ), [ 0.15, 0.15, 0 ]]\n\t\t\t],\n\t\t\tYZ: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matRedTransparent ), [ 0, 0.15, 0.15 ], [ 0, Math.PI / 2, 0 ]]\n\t\t\t],\n\t\t\tXZ: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matGreenTransparent ), [ 0.15, 0, 0.15 ], [ - Math.PI / 2, 0, 0 ]]\n\t\t\t],\n\t\t\tXYZ: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.1, 0.1, 0.1 ), matWhiteTransparent ) ],\n\t\t\t]\n\t\t};\n\n\t\tconst pickerScale = {\n\t\t\tX: [\n\t\t\t\t[ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0.3, 0, 0 ], [ 0, 0, - Math.PI / 2 ]],\n\t\t\t\t[ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ - 0.3, 0, 0 ], [ 0, 0, Math.PI / 2 ]]\n\t\t\t],\n\t\t\tY: [\n\t\t\t\t[ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, 0.3, 0 ]],\n\t\t\t\t[ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, - 0.3, 0 ], [ 0, 0, Math.PI ]]\n\t\t\t],\n\t\t\tZ: [\n\t\t\t\t[ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, 0, 0.3 ], [ Math.PI / 2, 0, 0 ]],\n\t\t\t\t[ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, 0, - 0.3 ], [ - Math.PI / 2, 0, 0 ]]\n\t\t\t],\n\t\t\tXY: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.2, 0.2, 0.01 ), matInvisible ), [ 0.15, 0.15, 0 ]],\n\t\t\t],\n\t\t\tYZ: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.2, 0.2, 0.01 ), matInvisible ), [ 0, 0.15, 0.15 ], [ 0, Math.PI / 2, 0 ]],\n\t\t\t],\n\t\t\tXZ: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.2, 0.2, 0.01 ), matInvisible ), [ 0.15, 0, 0.15 ], [ - Math.PI / 2, 0, 0 ]],\n\t\t\t],\n\t\t\tXYZ: [\n\t\t\t\t[ new Mesh( new BoxGeometry( 0.2, 0.2, 0.2 ), matInvisible ), [ 0, 0, 0 ]],\n\t\t\t]\n\t\t};\n\n\t\tconst helperScale = {\n\t\t\tX: [\n\t\t\t\t[ new Line( lineGeometry, matHelper ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ]\n\t\t\t],\n\t\t\tY: [\n\t\t\t\t[ new Line( lineGeometry, matHelper ), [ 0, - 1e3, 0 ], [ 0, 0, Math.PI / 2 ], [ 1e6, 1, 1 ], 'helper' ]\n\t\t\t],\n\t\t\tZ: [\n\t\t\t\t[ new Line( lineGeometry, matHelper ), [ 0, 0, - 1e3 ], [ 0, - Math.PI / 2, 0 ], [ 1e6, 1, 1 ], 'helper' ]\n\t\t\t]\n\t\t};\n\n\t\t// Creates an Object3D with gizmos described in custom hierarchy definition.\n\n\t\tfunction setupGizmo( gizmoMap ) {\n\n\t\t\tconst gizmo = new Object3D();\n\n\t\t\tfor ( const name in gizmoMap ) {\n\n\t\t\t\tfor ( let i = gizmoMap[ name ].length; i --; ) {\n\n\t\t\t\t\tconst object = gizmoMap[ name ][ i ][ 0 ].clone();\n\t\t\t\t\tconst position = gizmoMap[ name ][ i ][ 1 ];\n\t\t\t\t\tconst rotation = gizmoMap[ name ][ i ][ 2 ];\n\t\t\t\t\tconst scale = gizmoMap[ name ][ i ][ 3 ];\n\t\t\t\t\tconst tag = gizmoMap[ name ][ i ][ 4 ];\n\n\t\t\t\t\t// name and tag properties are essential for picking and updating logic.\n\t\t\t\t\tobject.name = name;\n\t\t\t\t\tobject.tag = tag;\n\n\t\t\t\t\tif ( position ) {\n\n\t\t\t\t\t\tobject.position.set( position[ 0 ], position[ 1 ], position[ 2 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( rotation ) {\n\n\t\t\t\t\t\tobject.rotation.set( rotation[ 0 ], rotation[ 1 ], rotation[ 2 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( scale ) {\n\n\t\t\t\t\t\tobject.scale.set( scale[ 0 ], scale[ 1 ], scale[ 2 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobject.updateMatrix();\n\n\t\t\t\t\tconst tempGeometry = object.geometry.clone();\n\t\t\t\t\ttempGeometry.applyMatrix4( object.matrix );\n\t\t\t\t\tobject.geometry = tempGeometry;\n\t\t\t\t\tobject.renderOrder = Infinity;\n\n\t\t\t\t\tobject.position.set( 0, 0, 0 );\n\t\t\t\t\tobject.rotation.set( 0, 0, 0 );\n\t\t\t\t\tobject.scale.set( 1, 1, 1 );\n\n\t\t\t\t\tgizmo.add( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn gizmo;\n\n\t\t}\n\n\t\t// Gizmo creation\n\n\t\tthis.gizmo = {};\n\t\tthis.picker = {};\n\t\tthis.helper = {};\n\n\t\tthis.add( this.gizmo[ 'translate' ] = setupGizmo( gizmoTranslate ) );\n\t\tthis.add( this.gizmo[ 'rotate' ] = setupGizmo( gizmoRotate ) );\n\t\tthis.add( this.gizmo[ 'scale' ] = setupGizmo( gizmoScale ) );\n\t\tthis.add( this.picker[ 'translate' ] = setupGizmo( pickerTranslate ) );\n\t\tthis.add( this.picker[ 'rotate' ] = setupGizmo( pickerRotate ) );\n\t\tthis.add( this.picker[ 'scale' ] = setupGizmo( pickerScale ) );\n\t\tthis.add( this.helper[ 'translate' ] = setupGizmo( helperTranslate ) );\n\t\tthis.add( this.helper[ 'rotate' ] = setupGizmo( helperRotate ) );\n\t\tthis.add( this.helper[ 'scale' ] = setupGizmo( helperScale ) );\n\n\t\t// Pickers should be hidden always\n\n\t\tthis.picker[ 'translate' ].visible = false;\n\t\tthis.picker[ 'rotate' ].visible = false;\n\t\tthis.picker[ 'scale' ].visible = false;\n\n\t}\n\n\t// updateMatrixWorld will update transformations and appearance of individual handles\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst space = ( this.mode === 'scale' ) ? 'local' : this.space; // scale always oriented to local rotation\n\n\t\tconst quaternion = ( space === 'local' ) ? this.worldQuaternion : _identityQuaternion;\n\n\t\t// Show only gizmos for current transform mode\n\n\t\tthis.gizmo[ 'translate' ].visible = this.mode === 'translate';\n\t\tthis.gizmo[ 'rotate' ].visible = this.mode === 'rotate';\n\t\tthis.gizmo[ 'scale' ].visible = this.mode === 'scale';\n\n\t\tthis.helper[ 'translate' ].visible = this.mode === 'translate';\n\t\tthis.helper[ 'rotate' ].visible = this.mode === 'rotate';\n\t\tthis.helper[ 'scale' ].visible = this.mode === 'scale';\n\n\n\t\tlet handles = [];\n\t\thandles = handles.concat( this.picker[ this.mode ].children );\n\t\thandles = handles.concat( this.gizmo[ this.mode ].children );\n\t\thandles = handles.concat( this.helper[ this.mode ].children );\n\n\t\tfor ( let i = 0; i < handles.length; i ++ ) {\n\n\t\t\tconst handle = handles[ i ];\n\n\t\t\t// hide aligned to camera\n\n\t\t\thandle.visible = true;\n\t\t\thandle.rotation.set( 0, 0, 0 );\n\t\t\thandle.position.copy( this.worldPosition );\n\n\t\t\tlet factor;\n\n\t\t\tif ( this.camera.isOrthographicCamera ) {\n\n\t\t\t\tfactor = ( this.camera.top - this.camera.bottom ) / this.camera.zoom;\n\n\t\t\t} else {\n\n\t\t\t\tfactor = this.worldPosition.distanceTo( this.cameraPosition ) * Math.min( 1.9 * Math.tan( Math.PI * this.camera.fov / 360 ) / this.camera.zoom, 7 );\n\n\t\t\t}\n\n\t\t\thandle.scale.set( 1, 1, 1 ).multiplyScalar( factor * this.size / 4 );\n\n\t\t\t// TODO: simplify helpers and consider decoupling from gizmo\n\n\t\t\tif ( handle.tag === 'helper' ) {\n\n\t\t\t\thandle.visible = false;\n\n\t\t\t\tif ( handle.name === 'AXIS' ) {\n\n\t\t\t\t\thandle.visible = !! this.axis;\n\n\t\t\t\t\tif ( this.axis === 'X' ) {\n\n\t\t\t\t\t\t_tempQuaternion.setFromEuler( _tempEuler.set( 0, 0, 0 ) );\n\t\t\t\t\t\thandle.quaternion.copy( quaternion ).multiply( _tempQuaternion );\n\n\t\t\t\t\t\tif ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) > 0.9 ) {\n\n\t\t\t\t\t\t\thandle.visible = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( this.axis === 'Y' ) {\n\n\t\t\t\t\t\t_tempQuaternion.setFromEuler( _tempEuler.set( 0, 0, Math.PI / 2 ) );\n\t\t\t\t\t\thandle.quaternion.copy( quaternion ).multiply( _tempQuaternion );\n\n\t\t\t\t\t\tif ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) > 0.9 ) {\n\n\t\t\t\t\t\t\thandle.visible = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( this.axis === 'Z' ) {\n\n\t\t\t\t\t\t_tempQuaternion.setFromEuler( _tempEuler.set( 0, Math.PI / 2, 0 ) );\n\t\t\t\t\t\thandle.quaternion.copy( quaternion ).multiply( _tempQuaternion );\n\n\t\t\t\t\t\tif ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) > 0.9 ) {\n\n\t\t\t\t\t\t\thandle.visible = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( this.axis === 'XYZE' ) {\n\n\t\t\t\t\t\t_tempQuaternion.setFromEuler( _tempEuler.set( 0, Math.PI / 2, 0 ) );\n\t\t\t\t\t\t_alignVector.copy( this.rotationAxis );\n\t\t\t\t\t\thandle.quaternion.setFromRotationMatrix( _lookAtMatrix.lookAt( _zeroVector, _alignVector, _unitY ) );\n\t\t\t\t\t\thandle.quaternion.multiply( _tempQuaternion );\n\t\t\t\t\t\thandle.visible = this.dragging;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( this.axis === 'E' ) {\n\n\t\t\t\t\t\thandle.visible = false;\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else if ( handle.name === 'START' ) {\n\n\t\t\t\t\thandle.position.copy( this.worldPositionStart );\n\t\t\t\t\thandle.visible = this.dragging;\n\n\t\t\t\t} else if ( handle.name === 'END' ) {\n\n\t\t\t\t\thandle.position.copy( this.worldPosition );\n\t\t\t\t\thandle.visible = this.dragging;\n\n\t\t\t\t} else if ( handle.name === 'DELTA' ) {\n\n\t\t\t\t\thandle.position.copy( this.worldPositionStart );\n\t\t\t\t\thandle.quaternion.copy( this.worldQuaternionStart );\n\t\t\t\t\t_tempVector.set( 1e-10, 1e-10, 1e-10 ).add( this.worldPositionStart ).sub( this.worldPosition ).multiplyScalar( - 1 );\n\t\t\t\t\t_tempVector.applyQuaternion( this.worldQuaternionStart.clone().invert() );\n\t\t\t\t\thandle.scale.copy( _tempVector );\n\t\t\t\t\thandle.visible = this.dragging;\n\n\t\t\t\t} else {\n\n\t\t\t\t\thandle.quaternion.copy( quaternion );\n\n\t\t\t\t\tif ( this.dragging ) {\n\n\t\t\t\t\t\thandle.position.copy( this.worldPositionStart );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\thandle.position.copy( this.worldPosition );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( this.axis ) {\n\n\t\t\t\t\t\thandle.visible = this.axis.search( handle.name ) !== - 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// If updating helper, skip rest of the loop\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// Align handles to current local or world rotation\n\n\t\t\thandle.quaternion.copy( quaternion );\n\n\t\t\tif ( this.mode === 'translate' || this.mode === 'scale' ) {\n\n\t\t\t\t// Hide translate and scale axis facing the camera\n\n\t\t\t\tconst AXIS_HIDE_THRESHOLD = 0.99;\n\t\t\t\tconst PLANE_HIDE_THRESHOLD = 0.2;\n\n\t\t\t\tif ( handle.name === 'X' ) {\n\n\t\t\t\t\tif ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_THRESHOLD ) {\n\n\t\t\t\t\t\thandle.scale.set( 1e-10, 1e-10, 1e-10 );\n\t\t\t\t\t\thandle.visible = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( handle.name === 'Y' ) {\n\n\t\t\t\t\tif ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_THRESHOLD ) {\n\n\t\t\t\t\t\thandle.scale.set( 1e-10, 1e-10, 1e-10 );\n\t\t\t\t\t\thandle.visible = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( handle.name === 'Z' ) {\n\n\t\t\t\t\tif ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_THRESHOLD ) {\n\n\t\t\t\t\t\thandle.scale.set( 1e-10, 1e-10, 1e-10 );\n\t\t\t\t\t\thandle.visible = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( handle.name === 'XY' ) {\n\n\t\t\t\t\tif ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_THRESHOLD ) {\n\n\t\t\t\t\t\thandle.scale.set( 1e-10, 1e-10, 1e-10 );\n\t\t\t\t\t\thandle.visible = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( handle.name === 'YZ' ) {\n\n\t\t\t\t\tif ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_THRESHOLD ) {\n\n\t\t\t\t\t\thandle.scale.set( 1e-10, 1e-10, 1e-10 );\n\t\t\t\t\t\thandle.visible = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( handle.name === 'XZ' ) {\n\n\t\t\t\t\tif ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_THRESHOLD ) {\n\n\t\t\t\t\t\thandle.scale.set( 1e-10, 1e-10, 1e-10 );\n\t\t\t\t\t\thandle.visible = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( this.mode === 'rotate' ) {\n\n\t\t\t\t// Align handles to current local or world rotation\n\n\t\t\t\t_tempQuaternion2.copy( quaternion );\n\t\t\t\t_alignVector.copy( this.eye ).applyQuaternion( _tempQuaternion.copy( quaternion ).invert() );\n\n\t\t\t\tif ( handle.name.search( 'E' ) !== - 1 ) {\n\n\t\t\t\t\thandle.quaternion.setFromRotationMatrix( _lookAtMatrix.lookAt( this.eye, _zeroVector, _unitY ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( handle.name === 'X' ) {\n\n\t\t\t\t\t_tempQuaternion.setFromAxisAngle( _unitX, Math.atan2( - _alignVector.y, _alignVector.z ) );\n\t\t\t\t\t_tempQuaternion.multiplyQuaternions( _tempQuaternion2, _tempQuaternion );\n\t\t\t\t\thandle.quaternion.copy( _tempQuaternion );\n\n\t\t\t\t}\n\n\t\t\t\tif ( handle.name === 'Y' ) {\n\n\t\t\t\t\t_tempQuaternion.setFromAxisAngle( _unitY, Math.atan2( _alignVector.x, _alignVector.z ) );\n\t\t\t\t\t_tempQuaternion.multiplyQuaternions( _tempQuaternion2, _tempQuaternion );\n\t\t\t\t\thandle.quaternion.copy( _tempQuaternion );\n\n\t\t\t\t}\n\n\t\t\t\tif ( handle.name === 'Z' ) {\n\n\t\t\t\t\t_tempQuaternion.setFromAxisAngle( _unitZ, Math.atan2( _alignVector.y, _alignVector.x ) );\n\t\t\t\t\t_tempQuaternion.multiplyQuaternions( _tempQuaternion2, _tempQuaternion );\n\t\t\t\t\thandle.quaternion.copy( _tempQuaternion );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Hide disabled axes\n\t\t\thandle.visible = handle.visible && ( handle.name.indexOf( 'X' ) === - 1 || this.showX );\n\t\t\thandle.visible = handle.visible && ( handle.name.indexOf( 'Y' ) === - 1 || this.showY );\n\t\t\thandle.visible = handle.visible && ( handle.name.indexOf( 'Z' ) === - 1 || this.showZ );\n\t\t\thandle.visible = handle.visible && ( handle.name.indexOf( 'E' ) === - 1 || ( this.showX && this.showY && this.showZ ) );\n\n\t\t\t// highlight selected axis\n\n\t\t\thandle.material._color = handle.material._color || handle.material.color.clone();\n\t\t\thandle.material._opacity = handle.material._opacity || handle.material.opacity;\n\n\t\t\thandle.material.color.copy( handle.material._color );\n\t\t\thandle.material.opacity = handle.material._opacity;\n\n\t\t\tif ( this.enabled && this.axis ) {\n\n\t\t\t\tif ( handle.name === this.axis ) {\n\n\t\t\t\t\thandle.material.color.copy( this.materialLib.active.color );\n\t\t\t\t\thandle.material.opacity = 1.0;\n\n\t\t\t\t} else if ( this.axis.split( '' ).some( function ( a ) {\n\n\t\t\t\t\treturn handle.name === a;\n\n\t\t\t\t} ) ) {\n\n\t\t\t\t\thandle.material.color.copy( this.materialLib.active.color );\n\t\t\t\t\thandle.material.opacity = 1.0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\n//\n\nclass TransformControlsPlane extends Mesh {\n\n\tconstructor() {\n\n\t\tsuper(\n\t\t\tnew PlaneGeometry( 100000, 100000, 2, 2 ),\n\t\t\tnew MeshBasicMaterial( { visible: false, wireframe: true, side: DoubleSide, transparent: true, opacity: 0.1, toneMapped: false } )\n\t\t);\n\n\t\tthis.isTransformControlsPlane = true;\n\n\t\tthis.type = 'TransformControlsPlane';\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tlet space = this.space;\n\n\t\tthis.position.copy( this.worldPosition );\n\n\t\tif ( this.mode === 'scale' ) space = 'local'; // scale always oriented to local rotation\n\n\t\t_v1.copy( _unitX ).applyQuaternion( space === 'local' ? this.worldQuaternion : _identityQuaternion );\n\t\t_v2.copy( _unitY ).applyQuaternion( space === 'local' ? this.worldQuaternion : _identityQuaternion );\n\t\t_v3.copy( _unitZ ).applyQuaternion( space === 'local' ? this.worldQuaternion : _identityQuaternion );\n\n\t\t// Align the plane for current transform mode, axis and space.\n\n\t\t_alignVector.copy( _v2 );\n\n\t\tswitch ( this.mode ) {\n\n\t\t\tcase 'translate':\n\t\t\tcase 'scale':\n\t\t\t\tswitch ( this.axis ) {\n\n\t\t\t\t\tcase 'X':\n\t\t\t\t\t\t_alignVector.copy( this.eye ).cross( _v1 );\n\t\t\t\t\t\t_dirVector.copy( _v1 ).cross( _alignVector );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Y':\n\t\t\t\t\t\t_alignVector.copy( this.eye ).cross( _v2 );\n\t\t\t\t\t\t_dirVector.copy( _v2 ).cross( _alignVector );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Z':\n\t\t\t\t\t\t_alignVector.copy( this.eye ).cross( _v3 );\n\t\t\t\t\t\t_dirVector.copy( _v3 ).cross( _alignVector );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'XY':\n\t\t\t\t\t\t_dirVector.copy( _v3 );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'YZ':\n\t\t\t\t\t\t_dirVector.copy( _v1 );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'XZ':\n\t\t\t\t\t\t_alignVector.copy( _v3 );\n\t\t\t\t\t\t_dirVector.copy( _v2 );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'XYZ':\n\t\t\t\t\tcase 'E':\n\t\t\t\t\t\t_dirVector.set( 0, 0, 0 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase 'rotate':\n\t\t\tdefault:\n\t\t\t\t// special case for rotate\n\t\t\t\t_dirVector.set( 0, 0, 0 );\n\n\t\t}\n\n\t\tif ( _dirVector.length() === 0 ) {\n\n\t\t\t// If in rotate mode, make the plane parallel to camera\n\t\t\tthis.quaternion.copy( this.cameraQuaternion );\n\n\t\t} else {\n\n\t\t\t_tempMatrix.lookAt( _tempVector.set( 0, 0, 0 ), _dirVector, _alignVector );\n\n\t\t\tthis.quaternion.setFromRotationMatrix( _tempMatrix );\n\n\t\t}\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nexport { TransformControls, TransformControlsGizmo, TransformControlsPlane };\n"], - "mappings": "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", - "names": [] -} diff --git a/node_modules/.vite/deps/three_examples_jsm_loaders_ColladaLoader__js.js b/node_modules/.vite/deps/three_examples_jsm_loaders_ColladaLoader__js.js index a9dd701..e5b027e 100644 --- a/node_modules/.vite/deps/three_examples_jsm_loaders_ColladaLoader__js.js +++ b/node_modules/.vite/deps/three_examples_jsm_loaders_ColladaLoader__js.js @@ -40,8 +40,7 @@ import { Vector2, Vector3, VectorKeyframeTrack -} from "./chunk-22FAE54D.js"; -import "./chunk-VUNV25KB.js"; +} from "./chunk-5P7KF7VS.js"; // node_modules/three/examples/jsm/loaders/TGALoader.js var TGALoader = class extends DataTextureLoader { diff --git a/node_modules/.vite/deps/three_examples_jsm_loaders_ColladaLoader__js.js.map b/node_modules/.vite/deps/three_examples_jsm_loaders_ColladaLoader__js.js.map index 203ab7c..c97c1ac 100644 --- a/node_modules/.vite/deps/three_examples_jsm_loaders_ColladaLoader__js.js.map +++ b/node_modules/.vite/deps/three_examples_jsm_loaders_ColladaLoader__js.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../three/examples/jsm/loaders/TGALoader.js", "../../three/examples/jsm/loaders/ColladaLoader.js"], "sourcesContent": ["import {\n\tDataTextureLoader,\n\tLinearMipmapLinearFilter\n} from 'three';\n\n/**\n * A loader for the TGA texture format.\n *\n * ```js\n * const loader = new TGALoader();\n * const texture = await loader.loadAsync( 'textures/crate_color8.tga' );\n * texture.colorSpace = THREE.SRGBColorSpace; // only for color textures\n * ```\n *\n * @augments DataTextureLoader\n * @three_import import { TGALoader } from 'three/addons/loaders/TGALoader.js';\n */\nclass TGALoader extends DataTextureLoader {\n\n\t/**\n\t * Constructs a new TGA loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Parses the given TGA texture data.\n\t *\n\t * @param {ArrayBuffer} buffer - The raw texture data.\n\t * @return {DataTextureLoader~TexData} An object representing the parsed texture data.\n\t */\n\tparse( buffer ) {\n\n\t\t// reference from vthibault, https://github.com/vthibault/roBrowser/blob/master/src/Loaders/Targa.js\n\n\t\tfunction tgaCheckHeader( header ) {\n\n\t\t\tswitch ( header.image_type ) {\n\n\t\t\t\t// check indexed type\n\n\t\t\t\tcase TGA_TYPE_INDEXED:\n\t\t\t\tcase TGA_TYPE_RLE_INDEXED:\n\t\t\t\t\tif ( header.colormap_length > 256 || header.colormap_size !== 24 || header.colormap_type !== 1 ) {\n\n\t\t\t\t\t\tthrow new Error( 'THREE.TGALoader: Invalid type colormap data for indexed type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t// check colormap type\n\n\t\t\t\tcase TGA_TYPE_RGB:\n\t\t\t\tcase TGA_TYPE_GREY:\n\t\t\t\tcase TGA_TYPE_RLE_RGB:\n\t\t\t\tcase TGA_TYPE_RLE_GREY:\n\t\t\t\t\tif ( header.colormap_type ) {\n\n\t\t\t\t\t\tthrow new Error( 'THREE.TGALoader: Invalid type colormap data for colormap type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t// What the need of a file without data ?\n\n\t\t\t\tcase TGA_TYPE_NO_DATA:\n\t\t\t\t\tthrow new Error( 'THREE.TGALoader: No data.' );\n\n\t\t\t\t\t// Invalid type ?\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'THREE.TGALoader: Invalid type ' + header.image_type );\n\n\t\t\t}\n\n\t\t\t// check image width and height\n\n\t\t\tif ( header.width <= 0 || header.height <= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.TGALoader: Invalid image size.' );\n\n\t\t\t}\n\n\t\t\t// check image pixel size\n\n\t\t\tif ( header.pixel_size !== 8 && header.pixel_size !== 16 &&\n\t\t\t\theader.pixel_size !== 24 && header.pixel_size !== 32 ) {\n\n\t\t\t\tthrow new Error( 'THREE.TGALoader: Invalid pixel size ' + header.pixel_size );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// parse tga image buffer\n\n\t\tfunction tgaParse( use_rle, use_pal, header, offset, data ) {\n\n\t\t\tlet pixel_data,\n\t\t\t\tpalettes;\n\n\t\t\tconst pixel_size = header.pixel_size >> 3;\n\t\t\tconst pixel_total = header.width * header.height * pixel_size;\n\n\t\t\t // read palettes\n\n\t\t\t if ( use_pal ) {\n\n\t\t\t\t palettes = data.subarray( offset, offset += header.colormap_length * ( header.colormap_size >> 3 ) );\n\n\t\t\t }\n\n\t\t\t // read RLE\n\n\t\t\t if ( use_rle ) {\n\n\t\t\t\t pixel_data = new Uint8Array( pixel_total );\n\n\t\t\t\tlet c, count, i;\n\t\t\t\tlet shift = 0;\n\t\t\t\tconst pixels = new Uint8Array( pixel_size );\n\n\t\t\t\twhile ( shift < pixel_total ) {\n\n\t\t\t\t\tc = data[ offset ++ ];\n\t\t\t\t\tcount = ( c & 0x7f ) + 1;\n\n\t\t\t\t\t// RLE pixels\n\n\t\t\t\t\tif ( c & 0x80 ) {\n\n\t\t\t\t\t\t// bind pixel tmp array\n\n\t\t\t\t\t\tfor ( i = 0; i < pixel_size; ++ i ) {\n\n\t\t\t\t\t\t\tpixels[ i ] = data[ offset ++ ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// copy pixel array\n\n\t\t\t\t\t\tfor ( i = 0; i < count; ++ i ) {\n\n\t\t\t\t\t\t\tpixel_data.set( pixels, shift + i * pixel_size );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tshift += pixel_size * count;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// raw pixels\n\n\t\t\t\t\t\tcount *= pixel_size;\n\n\t\t\t\t\t\tfor ( i = 0; i < count; ++ i ) {\n\n\t\t\t\t\t\t\tpixel_data[ shift + i ] = data[ offset ++ ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tshift += count;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t } else {\n\n\t\t\t\t// raw pixels\n\n\t\t\t\tpixel_data = data.subarray(\n\t\t\t\t\t offset, offset += ( use_pal ? header.width * header.height : pixel_total )\n\t\t\t\t);\n\n\t\t\t }\n\n\t\t\t return {\n\t\t\t\tpixel_data: pixel_data,\n\t\t\t\tpalettes: palettes\n\t\t\t };\n\n\t\t}\n\n\t\tfunction tgaGetImageData8bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image, palettes ) {\n\n\t\t\tconst colormap = palettes;\n\t\t\tlet color, i = 0, x, y;\n\t\t\tconst width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i ++ ) {\n\n\t\t\t\t\tcolor = image[ i ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = colormap[ ( color * 3 ) + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = colormap[ ( color * 3 ) + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = colormap[ ( color * 3 ) + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData16bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tlet color, i = 0, x, y;\n\t\t\tconst width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 2 ) {\n\n\t\t\t\t\tcolor = image[ i + 0 ] + ( image[ i + 1 ] << 8 );\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = ( color & 0x7C00 ) >> 7;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = ( color & 0x03E0 ) >> 2;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = ( color & 0x001F ) << 3;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = ( color & 0x8000 ) ? 0 : 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData24bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tlet i = 0, x, y;\n\t\t\tconst width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 3 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageData32bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tlet i = 0, x, y;\n\t\t\tconst width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 4 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 1 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 2 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = image[ i + 3 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageDataGrey8bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tlet color, i = 0, x, y;\n\t\t\tconst width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i ++ ) {\n\n\t\t\t\t\tcolor = image[ i ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = color;\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction tgaGetImageDataGrey16bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {\n\n\t\t\tlet i = 0, x, y;\n\t\t\tconst width = header.width;\n\n\t\t\tfor ( y = y_start; y !== y_end; y += y_step ) {\n\n\t\t\t\tfor ( x = x_start; x !== x_end; x += x_step, i += 2 ) {\n\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];\n\t\t\t\t\timageData[ ( x + width * y ) * 4 + 3 ] = image[ i + 1 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn imageData;\n\n\t\t}\n\n\t\tfunction getTgaRGBA( data, width, height, image, palette ) {\n\n\t\t\tlet x_start,\n\t\t\t\ty_start,\n\t\t\t\tx_step,\n\t\t\t\ty_step,\n\t\t\t\tx_end,\n\t\t\t\ty_end;\n\n\t\t\tswitch ( ( header.flags & TGA_ORIGIN_MASK ) >> TGA_ORIGIN_SHIFT ) {\n\n\t\t\t\tdefault:\n\t\t\t\tcase TGA_ORIGIN_UL:\n\t\t\t\t\tx_start = 0;\n\t\t\t\t\tx_step = 1;\n\t\t\t\t\tx_end = width;\n\t\t\t\t\ty_start = 0;\n\t\t\t\t\ty_step = 1;\n\t\t\t\t\ty_end = height;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_BL:\n\t\t\t\t\tx_start = 0;\n\t\t\t\t\tx_step = 1;\n\t\t\t\t\tx_end = width;\n\t\t\t\t\ty_start = height - 1;\n\t\t\t\t\ty_step = - 1;\n\t\t\t\t\ty_end = - 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_UR:\n\t\t\t\t\tx_start = width - 1;\n\t\t\t\t\tx_step = - 1;\n\t\t\t\t\tx_end = - 1;\n\t\t\t\t\ty_start = 0;\n\t\t\t\t\ty_step = 1;\n\t\t\t\t\ty_end = height;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase TGA_ORIGIN_BR:\n\t\t\t\t\tx_start = width - 1;\n\t\t\t\t\tx_step = - 1;\n\t\t\t\t\tx_end = - 1;\n\t\t\t\t\ty_start = height - 1;\n\t\t\t\t\ty_step = - 1;\n\t\t\t\t\ty_end = - 1;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( use_grey ) {\n\n\t\t\t\tswitch ( header.pixel_size ) {\n\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\ttgaGetImageDataGrey8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\ttgaGetImageDataGrey16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error( 'THREE.TGALoader: Format not supported.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( header.pixel_size ) {\n\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\ttgaGetImageData8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image, palette );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\ttgaGetImageData16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 24:\n\t\t\t\t\t\ttgaGetImageData24bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 32:\n\t\t\t\t\t\ttgaGetImageData32bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error( 'THREE.TGALoader: Format not supported.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Load image data according to specific method\n\t\t\t// let func = 'tgaGetImageData' + (use_grey ? 'Grey' : '') + (header.pixel_size) + 'bits';\n\t\t\t// func(data, y_start, y_step, y_end, x_start, x_step, x_end, width, image, palette );\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// TGA constants\n\n\t\tconst TGA_TYPE_NO_DATA = 0,\n\t\t\tTGA_TYPE_INDEXED = 1,\n\t\t\tTGA_TYPE_RGB = 2,\n\t\t\tTGA_TYPE_GREY = 3,\n\t\t\tTGA_TYPE_RLE_INDEXED = 9,\n\t\t\tTGA_TYPE_RLE_RGB = 10,\n\t\t\tTGA_TYPE_RLE_GREY = 11,\n\n\t\t\tTGA_ORIGIN_MASK = 0x30,\n\t\t\tTGA_ORIGIN_SHIFT = 0x04,\n\t\t\tTGA_ORIGIN_BL = 0x00,\n\t\t\tTGA_ORIGIN_BR = 0x01,\n\t\t\tTGA_ORIGIN_UL = 0x02,\n\t\t\tTGA_ORIGIN_UR = 0x03;\n\n\t\tif ( buffer.length < 19 ) throw new Error( 'THREE.TGALoader: Not enough data to contain header.' );\n\n\t\tlet offset = 0;\n\n\t\tconst content = new Uint8Array( buffer ),\n\t\t\theader = {\n\t\t\t\tid_length: content[ offset ++ ],\n\t\t\t\tcolormap_type: content[ offset ++ ],\n\t\t\t\timage_type: content[ offset ++ ],\n\t\t\t\tcolormap_index: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tcolormap_length: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tcolormap_size: content[ offset ++ ],\n\t\t\t\torigin: [\n\t\t\t\t\tcontent[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\t\tcontent[ offset ++ ] | content[ offset ++ ] << 8\n\t\t\t\t],\n\t\t\t\twidth: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\theight: content[ offset ++ ] | content[ offset ++ ] << 8,\n\t\t\t\tpixel_size: content[ offset ++ ],\n\t\t\t\tflags: content[ offset ++ ]\n\t\t\t};\n\n\t\t// check tga if it is valid format\n\n\t\ttgaCheckHeader( header );\n\n\t\tif ( header.id_length + offset > buffer.length ) {\n\n\t\t\tthrow new Error( 'THREE.TGALoader: No data.' );\n\n\t\t}\n\n\t\t// skip the needn't data\n\n\t\toffset += header.id_length;\n\n\t\t// get targa information about RLE compression and palette\n\n\t\tlet use_rle = false,\n\t\t\tuse_pal = false,\n\t\t\tuse_grey = false;\n\n\t\tswitch ( header.image_type ) {\n\n\t\t\tcase TGA_TYPE_RLE_INDEXED:\n\t\t\t\tuse_rle = true;\n\t\t\t\tuse_pal = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_INDEXED:\n\t\t\t\tuse_pal = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RLE_RGB:\n\t\t\t\tuse_rle = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RGB:\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_RLE_GREY:\n\t\t\t\tuse_rle = true;\n\t\t\t\tuse_grey = true;\n\t\t\t\tbreak;\n\n\t\t\tcase TGA_TYPE_GREY:\n\t\t\t\tuse_grey = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\t//\n\n\t\tconst imageData = new Uint8Array( header.width * header.height * 4 );\n\t\tconst result = tgaParse( use_rle, use_pal, header, offset, content );\n\t\tgetTgaRGBA( imageData, header.width, header.height, result.pixel_data, result.palettes );\n\n\t\treturn {\n\n\t\t\tdata: imageData,\n\t\t\twidth: header.width,\n\t\t\theight: header.height,\n\t\t\tflipY: true,\n\t\t\tgenerateMipmaps: true,\n\t\t\tminFilter: LinearMipmapLinearFilter,\n\n\t\t};\n\n\t}\n\n}\n\nexport { TGALoader };\n", "import {\n\tAmbientLight,\n\tAnimationClip,\n\tBone,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tColorManagement,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tFrontSide,\n\tGroup,\n\tLine,\n\tLineBasicMaterial,\n\tLineSegments,\n\tLoader,\n\tLoaderUtils,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshLambertMaterial,\n\tMeshPhongMaterial,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tRepeatWrapping,\n\tScene,\n\tSkeleton,\n\tSkinnedMesh,\n\tSpotLight,\n\tTextureLoader,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tSRGBColorSpace\n} from 'three';\nimport { TGALoader } from '../loaders/TGALoader.js';\n\n/**\n * A loader for the Collada format.\n *\n * The Collada format is very complex so this loader only supports a subset of what\n * is defined in the [official specification](https://www.khronos.org/files/collada_spec_1_5.pdf).\n *\n * Assets with a Z-UP coordinate system are transformed it into Y-UP by a simple rotation.\n * The vertex data are not converted.\n *\n * ```js\n * const loader = new ColladaLoader();\n *\n * const result = await loader.loadAsync( './models/collada/elf/elf.dae' );\n * scene.add( result.scene );\n * ```\n *\n * @augments Loader\n * @three_import import { ColladaLoader } from 'three/addons/loaders/ColladaLoader.js';\n */\nclass ColladaLoader extends Loader {\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded Collada asset\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function({scene:Group,animations:Array,kinematics:Object})} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( scope.path === '' ) ? LoaderUtils.extractUrlBase( url ) : scope.path;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( text, path ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Parses the given Collada data and returns a result object holding the parsed scene,\n\t * an array of animation clips and kinematics.\n\t *\n\t * @param {string} text - The raw Collada data as a string.\n\t * @param {string} [path] - The asset path.\n\t * @return {?{scene:Group,animations:Array,kinematics:Object}} An object representing the parsed asset.\n\t */\n\tparse( text, path ) {\n\n\t\tfunction getElementsByTagName( xml, name ) {\n\n\t\t\t// Non recursive xml.getElementsByTagName() ...\n\n\t\t\tconst array = [];\n\t\t\tconst childNodes = xml.childNodes;\n\n\t\t\tfor ( let i = 0, l = childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = childNodes[ i ];\n\n\t\t\t\tif ( child.nodeName === name ) {\n\n\t\t\t\t\tarray.push( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseStrings( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tconst parts = text.trim().split( /\\s+/ );\n\t\t\tconst array = new Array( parts.length );\n\n\t\t\tfor ( let i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parts[ i ];\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseFloats( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tconst parts = text.trim().split( /\\s+/ );\n\t\t\tconst array = new Array( parts.length );\n\n\t\t\tfor ( let i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parseFloat( parts[ i ] );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseInts( text ) {\n\n\t\t\tif ( text.length === 0 ) return [];\n\n\t\t\tconst parts = text.trim().split( /\\s+/ );\n\t\t\tconst array = new Array( parts.length );\n\n\t\t\tfor ( let i = 0, l = parts.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ] = parseInt( parts[ i ] );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t}\n\n\t\tfunction parseId( text ) {\n\n\t\t\treturn text.substring( 1 );\n\n\t\t}\n\n\t\tfunction generateId() {\n\n\t\t\treturn 'three_default_' + ( count ++ );\n\n\t\t}\n\n\t\tfunction isEmpty( object ) {\n\n\t\t\treturn Object.keys( object ).length === 0;\n\n\t\t}\n\n\t\t// asset\n\n\t\tfunction parseAsset( xml ) {\n\n\t\t\treturn {\n\t\t\t\tunit: parseAssetUnit( getElementsByTagName( xml, 'unit' )[ 0 ] ),\n\t\t\t\tupAxis: parseAssetUpAxis( getElementsByTagName( xml, 'up_axis' )[ 0 ] )\n\t\t\t};\n\n\t\t}\n\n\t\tfunction parseAssetUnit( xml ) {\n\n\t\t\tif ( ( xml !== undefined ) && ( xml.hasAttribute( 'meter' ) === true ) ) {\n\n\t\t\t\treturn parseFloat( xml.getAttribute( 'meter' ) );\n\n\t\t\t} else {\n\n\t\t\t\treturn 1; // default 1 meter\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAssetUpAxis( xml ) {\n\n\t\t\treturn xml !== undefined ? xml.textContent : 'Y_UP';\n\n\t\t}\n\n\t\t// library\n\n\t\tfunction parseLibrary( xml, libraryName, nodeName, parser ) {\n\n\t\t\tconst library = getElementsByTagName( xml, libraryName )[ 0 ];\n\n\t\t\tif ( library !== undefined ) {\n\n\t\t\t\tconst elements = getElementsByTagName( library, nodeName );\n\n\t\t\t\tfor ( let i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\t\tparser( elements[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction buildLibrary( data, builder ) {\n\n\t\t\tfor ( const name in data ) {\n\n\t\t\t\tconst object = data[ name ];\n\t\t\t\tobject.build = builder( data[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// get\n\n\t\tfunction getBuild( data, builder ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\tdata.build = builder( data );\n\n\t\t\treturn data.build;\n\n\t\t}\n\n\t\t// animation\n\n\t\tfunction parseAnimation( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tsources: {},\n\t\t\t\tsamplers: {},\n\t\t\t\tchannels: {}\n\t\t\t};\n\n\t\t\tlet hasChildren = false;\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tlet id;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tid = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'sampler':\n\t\t\t\t\t\tid = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.samplers[ id ] = parseAnimationSampler( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'channel':\n\t\t\t\t\t\tid = child.getAttribute( 'target' );\n\t\t\t\t\t\tdata.channels[ id ] = parseAnimationChannel( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'animation':\n\t\t\t\t\t\t// hierarchy of related animations\n\t\t\t\t\t\tparseAnimation( child );\n\t\t\t\t\t\thasChildren = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasChildren === false ) {\n\n\t\t\t\t// since 'id' attributes can be optional, it's necessary to generate a UUID for unique assignment\n\n\t\t\t\tlibrary.animations[ xml.getAttribute( 'id' ) || MathUtils.generateUUID() ] = data;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAnimationSampler( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tinputs: {},\n\t\t\t};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tconst id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tconst semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tdata.inputs[ semantic ] = id;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseAnimationChannel( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tconst target = xml.getAttribute( 'target' );\n\n\t\t\t// parsing SID Addressing Syntax\n\n\t\t\tlet parts = target.split( '/' );\n\n\t\t\tconst id = parts.shift();\n\t\t\tlet sid = parts.shift();\n\n\t\t\t// check selection syntax\n\n\t\t\tconst arraySyntax = ( sid.indexOf( '(' ) !== - 1 );\n\t\t\tconst memberSyntax = ( sid.indexOf( '.' ) !== - 1 );\n\n\t\t\tif ( memberSyntax ) {\n\n\t\t\t\t// member selection access\n\n\t\t\t\tparts = sid.split( '.' );\n\t\t\t\tsid = parts.shift();\n\t\t\t\tdata.member = parts.shift();\n\n\t\t\t} else if ( arraySyntax ) {\n\n\t\t\t\t// array-access syntax. can be used to express fields in one-dimensional vectors or two-dimensional matrices.\n\n\t\t\t\tconst indices = sid.split( '(' );\n\t\t\t\tsid = indices.shift();\n\n\t\t\t\tfor ( let i = 0; i < indices.length; i ++ ) {\n\n\t\t\t\t\tindices[ i ] = parseInt( indices[ i ].replace( /\\)/, '' ) );\n\n\t\t\t\t}\n\n\t\t\t\tdata.indices = indices;\n\n\t\t\t}\n\n\t\t\tdata.id = id;\n\t\t\tdata.sid = sid;\n\n\t\t\tdata.arraySyntax = arraySyntax;\n\t\t\tdata.memberSyntax = memberSyntax;\n\n\t\t\tdata.sampler = parseId( xml.getAttribute( 'source' ) );\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildAnimation( data ) {\n\n\t\t\tconst tracks = [];\n\n\t\t\tconst channels = data.channels;\n\t\t\tconst samplers = data.samplers;\n\t\t\tconst sources = data.sources;\n\n\t\t\tfor ( const target in channels ) {\n\n\t\t\t\tif ( channels.hasOwnProperty( target ) ) {\n\n\t\t\t\t\tconst channel = channels[ target ];\n\t\t\t\t\tconst sampler = samplers[ channel.sampler ];\n\n\t\t\t\t\tconst inputId = sampler.inputs.INPUT;\n\t\t\t\t\tconst outputId = sampler.inputs.OUTPUT;\n\n\t\t\t\t\tconst inputSource = sources[ inputId ];\n\t\t\t\t\tconst outputSource = sources[ outputId ];\n\n\t\t\t\t\tconst animation = buildAnimationChannel( channel, inputSource, outputSource );\n\n\t\t\t\t\tcreateKeyframeTracks( animation, tracks );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn tracks;\n\n\t\t}\n\n\t\tfunction getAnimation( id ) {\n\n\t\t\treturn getBuild( library.animations[ id ], buildAnimation );\n\n\t\t}\n\n\t\tfunction buildAnimationChannel( channel, inputSource, outputSource ) {\n\n\t\t\tconst node = library.nodes[ channel.id ];\n\t\t\tconst object3D = getNode( node.id );\n\n\t\t\tconst transform = node.transforms[ channel.sid ];\n\t\t\tconst defaultMatrix = node.matrix.clone().transpose();\n\n\t\t\tlet time, stride;\n\t\t\tlet i, il, j, jl;\n\n\t\t\tconst data = {};\n\n\t\t\t// the collada spec allows the animation of data in various ways.\n\t\t\t// depending on the transform type (matrix, translate, rotate, scale), we execute different logic\n\n\t\t\tswitch ( transform ) {\n\n\t\t\t\tcase 'matrix':\n\n\t\t\t\t\tfor ( i = 0, il = inputSource.array.length; i < il; i ++ ) {\n\n\t\t\t\t\t\ttime = inputSource.array[ i ];\n\t\t\t\t\t\tstride = i * outputSource.stride;\n\n\t\t\t\t\t\tif ( data[ time ] === undefined ) data[ time ] = {};\n\n\t\t\t\t\t\tif ( channel.arraySyntax === true ) {\n\n\t\t\t\t\t\t\tconst value = outputSource.array[ stride ];\n\t\t\t\t\t\t\tconst index = channel.indices[ 0 ] + 4 * channel.indices[ 1 ];\n\n\t\t\t\t\t\t\tdata[ time ][ index ] = value;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( j = 0, jl = outputSource.stride; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\t\tdata[ time ][ j ] = outputSource.array[ stride + j ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'translate':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'rotate':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'scale':\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Animation transform type \"%s\" not yet implemented.', transform );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tconst keyframes = prepareAnimationData( data, defaultMatrix );\n\n\t\t\tconst animation = {\n\t\t\t\tname: object3D.uuid,\n\t\t\t\tkeyframes: keyframes\n\t\t\t};\n\n\t\t\treturn animation;\n\n\t\t}\n\n\t\tfunction prepareAnimationData( data, defaultMatrix ) {\n\n\t\t\tconst keyframes = [];\n\n\t\t\t// transfer data into a sortable array\n\n\t\t\tfor ( const time in data ) {\n\n\t\t\t\tkeyframes.push( { time: parseFloat( time ), value: data[ time ] } );\n\n\t\t\t}\n\n\t\t\t// ensure keyframes are sorted by time\n\n\t\t\tkeyframes.sort( ascending );\n\n\t\t\t// now we clean up all animation data, so we can use them for keyframe tracks\n\n\t\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\t\ttransformAnimationData( keyframes, i, defaultMatrix.elements[ i ] );\n\n\t\t\t}\n\n\t\t\treturn keyframes;\n\n\t\t\t// array sort function\n\n\t\t\tfunction ascending( a, b ) {\n\n\t\t\t\treturn a.time - b.time;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst position = new Vector3();\n\t\tconst scale = new Vector3();\n\t\tconst quaternion = new Quaternion();\n\n\t\tfunction createKeyframeTracks( animation, tracks ) {\n\n\t\t\tconst keyframes = animation.keyframes;\n\t\t\tconst name = animation.name;\n\n\t\t\tconst times = [];\n\t\t\tconst positionData = [];\n\t\t\tconst quaternionData = [];\n\t\t\tconst scaleData = [];\n\n\t\t\tfor ( let i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tconst keyframe = keyframes[ i ];\n\n\t\t\t\tconst time = keyframe.time;\n\t\t\t\tconst value = keyframe.value;\n\n\t\t\t\tmatrix.fromArray( value ).transpose();\n\t\t\t\tmatrix.decompose( position, quaternion, scale );\n\n\t\t\t\ttimes.push( time );\n\t\t\t\tpositionData.push( position.x, position.y, position.z );\n\t\t\t\tquaternionData.push( quaternion.x, quaternion.y, quaternion.z, quaternion.w );\n\t\t\t\tscaleData.push( scale.x, scale.y, scale.z );\n\n\t\t\t}\n\n\t\t\tif ( positionData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.position', times, positionData ) );\n\t\t\tif ( quaternionData.length > 0 ) tracks.push( new QuaternionKeyframeTrack( name + '.quaternion', times, quaternionData ) );\n\t\t\tif ( scaleData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.scale', times, scaleData ) );\n\n\t\t\treturn tracks;\n\n\t\t}\n\n\t\tfunction transformAnimationData( keyframes, property, defaultValue ) {\n\n\t\t\tlet keyframe;\n\n\t\t\tlet empty = true;\n\t\t\tlet i, l;\n\n\t\t\t// check, if values of a property are missing in our keyframes\n\n\t\t\tfor ( i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tkeyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] === undefined ) {\n\n\t\t\t\t\tkeyframe.value[ property ] = null; // mark as missing\n\n\t\t\t\t} else {\n\n\t\t\t\t\tempty = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( empty === true ) {\n\n\t\t\t\t// no values at all, so we set a default value\n\n\t\t\t\tfor ( i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\t\tkeyframe = keyframes[ i ];\n\n\t\t\t\t\tkeyframe.value[ property ] = defaultValue;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// filling gaps\n\n\t\t\t\tcreateMissingKeyframes( keyframes, property );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction createMissingKeyframes( keyframes, property ) {\n\n\t\t\tlet prev, next;\n\n\t\t\tfor ( let i = 0, l = keyframes.length; i < l; i ++ ) {\n\n\t\t\t\tconst keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] === null ) {\n\n\t\t\t\t\tprev = getPrev( keyframes, i, property );\n\t\t\t\t\tnext = getNext( keyframes, i, property );\n\n\t\t\t\t\tif ( prev === null ) {\n\n\t\t\t\t\t\tkeyframe.value[ property ] = next.value[ property ];\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( next === null ) {\n\n\t\t\t\t\t\tkeyframe.value[ property ] = prev.value[ property ];\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tinterpolate( keyframe, prev, next, property );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getPrev( keyframes, i, property ) {\n\n\t\t\twhile ( i >= 0 ) {\n\n\t\t\t\tconst keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] !== null ) return keyframe;\n\n\t\t\t\ti --;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction getNext( keyframes, i, property ) {\n\n\t\t\twhile ( i < keyframes.length ) {\n\n\t\t\t\tconst keyframe = keyframes[ i ];\n\n\t\t\t\tif ( keyframe.value[ property ] !== null ) return keyframe;\n\n\t\t\t\ti ++;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction interpolate( key, prev, next, property ) {\n\n\t\t\tif ( ( next.time - prev.time ) === 0 ) {\n\n\t\t\t\tkey.value[ property ] = prev.value[ property ];\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tkey.value[ property ] = ( ( key.time - prev.time ) * ( next.value[ property ] - prev.value[ property ] ) / ( next.time - prev.time ) ) + prev.value[ property ];\n\n\t\t}\n\n\t\t// animation clips\n\n\t\tfunction parseAnimationClip( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tname: xml.getAttribute( 'id' ) || 'default',\n\t\t\t\tstart: parseFloat( xml.getAttribute( 'start' ) || 0 ),\n\t\t\t\tend: parseFloat( xml.getAttribute( 'end' ) || 0 ),\n\t\t\t\tanimations: []\n\t\t\t};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'instance_animation':\n\t\t\t\t\t\tdata.animations.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.clips[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildAnimationClip( data ) {\n\n\t\t\tconst tracks = [];\n\n\t\t\tconst name = data.name;\n\t\t\tconst duration = ( data.end - data.start ) || - 1;\n\t\t\tconst animations = data.animations;\n\n\t\t\tfor ( let i = 0, il = animations.length; i < il; i ++ ) {\n\n\t\t\t\tconst animationTracks = getAnimation( animations[ i ] );\n\n\t\t\t\tfor ( let j = 0, jl = animationTracks.length; j < jl; j ++ ) {\n\n\t\t\t\t\ttracks.push( animationTracks[ j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( name, duration, tracks );\n\n\t\t}\n\n\t\tfunction getAnimationClip( id ) {\n\n\t\t\treturn getBuild( library.clips[ id ], buildAnimationClip );\n\n\t\t}\n\n\t\t// controller\n\n\t\tfunction parseController( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'skin':\n\t\t\t\t\t\t// there is exactly one skin per controller\n\t\t\t\t\t\tdata.id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tdata.skin = parseSkin( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'morph':\n\t\t\t\t\t\tdata.id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Morph target animation not supported yet.' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.controllers[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseSkin( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tsources: {}\n\t\t\t};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_shape_matrix':\n\t\t\t\t\t\tdata.bindShapeMatrix = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tconst id = child.getAttribute( 'id' );\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'joints':\n\t\t\t\t\t\tdata.joints = parseJoints( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vertex_weights':\n\t\t\t\t\t\tdata.vertexWeights = parseVertexWeights( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseJoints( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tinputs: {}\n\t\t\t};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tconst semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tconst id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tdata.inputs[ semantic ] = id;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseVertexWeights( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tinputs: {}\n\t\t\t};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tconst semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tconst id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tconst offset = parseInt( child.getAttribute( 'offset' ) );\n\t\t\t\t\t\tdata.inputs[ semantic ] = { id: id, offset: offset };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vcount':\n\t\t\t\t\t\tdata.vcount = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v':\n\t\t\t\t\t\tdata.v = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildController( data ) {\n\n\t\t\tconst build = {\n\t\t\t\tid: data.id\n\t\t\t};\n\n\t\t\tconst geometry = library.geometries[ build.id ];\n\n\t\t\tif ( data.skin !== undefined ) {\n\n\t\t\t\tbuild.skin = buildSkin( data.skin );\n\n\t\t\t\t// we enhance the 'sources' property of the corresponding geometry with our skin data\n\n\t\t\t\tgeometry.sources.skinIndices = build.skin.indices;\n\t\t\t\tgeometry.sources.skinWeights = build.skin.weights;\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildSkin( data ) {\n\n\t\t\tconst BONE_LIMIT = 4;\n\n\t\t\tconst build = {\n\t\t\t\tjoints: [], // this must be an array to preserve the joint order\n\t\t\t\tindices: {\n\t\t\t\t\tarray: [],\n\t\t\t\t\tstride: BONE_LIMIT\n\t\t\t\t},\n\t\t\t\tweights: {\n\t\t\t\t\tarray: [],\n\t\t\t\t\tstride: BONE_LIMIT\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst sources = data.sources;\n\t\t\tconst vertexWeights = data.vertexWeights;\n\n\t\t\tconst vcount = vertexWeights.vcount;\n\t\t\tconst v = vertexWeights.v;\n\t\t\tconst jointOffset = vertexWeights.inputs.JOINT.offset;\n\t\t\tconst weightOffset = vertexWeights.inputs.WEIGHT.offset;\n\n\t\t\tconst jointSource = data.sources[ data.joints.inputs.JOINT ];\n\t\t\tconst inverseSource = data.sources[ data.joints.inputs.INV_BIND_MATRIX ];\n\n\t\t\tconst weights = sources[ vertexWeights.inputs.WEIGHT.id ].array;\n\t\t\tlet stride = 0;\n\n\t\t\tlet i, j, l;\n\n\t\t\t// process skin data for each vertex\n\n\t\t\tfor ( i = 0, l = vcount.length; i < l; i ++ ) {\n\n\t\t\t\tconst jointCount = vcount[ i ]; // this is the amount of joints that affect a single vertex\n\t\t\t\tconst vertexSkinData = [];\n\n\t\t\t\tfor ( j = 0; j < jointCount; j ++ ) {\n\n\t\t\t\t\tconst skinIndex = v[ stride + jointOffset ];\n\t\t\t\t\tconst weightId = v[ stride + weightOffset ];\n\t\t\t\t\tconst skinWeight = weights[ weightId ];\n\n\t\t\t\t\tvertexSkinData.push( { index: skinIndex, weight: skinWeight } );\n\n\t\t\t\t\tstride += 2;\n\n\t\t\t\t}\n\n\t\t\t\t// we sort the joints in descending order based on the weights.\n\t\t\t\t// this ensures, we only proceed the most important joints of the vertex\n\n\t\t\t\tvertexSkinData.sort( descending );\n\n\t\t\t\t// now we provide for each vertex a set of four index and weight values.\n\t\t\t\t// the order of the skin data matches the order of vertices\n\n\t\t\t\tfor ( j = 0; j < BONE_LIMIT; j ++ ) {\n\n\t\t\t\t\tconst d = vertexSkinData[ j ];\n\n\t\t\t\t\tif ( d !== undefined ) {\n\n\t\t\t\t\t\tbuild.indices.array.push( d.index );\n\t\t\t\t\t\tbuild.weights.array.push( d.weight );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbuild.indices.array.push( 0 );\n\t\t\t\t\t\tbuild.weights.array.push( 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// setup bind matrix\n\n\t\t\tif ( data.bindShapeMatrix ) {\n\n\t\t\t\tbuild.bindMatrix = new Matrix4().fromArray( data.bindShapeMatrix ).transpose();\n\n\t\t\t} else {\n\n\t\t\t\tbuild.bindMatrix = new Matrix4().identity();\n\n\t\t\t}\n\n\t\t\t// process bones and inverse bind matrix data\n\n\t\t\tfor ( i = 0, l = jointSource.array.length; i < l; i ++ ) {\n\n\t\t\t\tconst name = jointSource.array[ i ];\n\t\t\t\tconst boneInverse = new Matrix4().fromArray( inverseSource.array, i * inverseSource.stride ).transpose();\n\n\t\t\t\tbuild.joints.push( { name: name, boneInverse: boneInverse } );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t\t// array sort function\n\n\t\t\tfunction descending( a, b ) {\n\n\t\t\t\treturn b.weight - a.weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getController( id ) {\n\n\t\t\treturn getBuild( library.controllers[ id ], buildController );\n\n\t\t}\n\n\t\t// image\n\n\t\tfunction parseImage( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tinit_from: getElementsByTagName( xml, 'init_from' )[ 0 ].textContent\n\t\t\t};\n\n\t\t\tlibrary.images[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildImage( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data.init_from;\n\n\t\t}\n\n\t\tfunction getImage( id ) {\n\n\t\t\tconst data = library.images[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildImage );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find image with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// effect\n\n\t\tfunction parseEffect( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'profile_COMMON':\n\t\t\t\t\t\tdata.profile = parseEffectProfileCOMMON( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.effects[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseEffectProfileCOMMON( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tsurfaces: {},\n\t\t\t\tsamplers: {}\n\t\t\t};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'newparam':\n\t\t\t\t\t\tparseEffectNewparam( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tdata.technique = parseEffectTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tdata.extra = parseEffectExtra( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectNewparam( xml, data ) {\n\n\t\t\tconst sid = xml.getAttribute( 'sid' );\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'surface':\n\t\t\t\t\t\tdata.surfaces[ sid ] = parseEffectSurface( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'sampler2D':\n\t\t\t\t\t\tdata.samplers[ sid ] = parseEffectSampler( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectSurface( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'init_from':\n\t\t\t\t\t\tdata.init_from = child.textContent;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectSampler( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tdata.source = child.textContent;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectTechnique( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'constant':\n\t\t\t\t\tcase 'lambert':\n\t\t\t\t\tcase 'blinn':\n\t\t\t\t\tcase 'phong':\n\t\t\t\t\t\tdata.type = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseEffectParameters( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tdata.extra = parseEffectExtra( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameters( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'emission':\n\t\t\t\t\tcase 'diffuse':\n\t\t\t\t\tcase 'specular':\n\t\t\t\t\tcase 'bump':\n\t\t\t\t\tcase 'ambient':\n\t\t\t\t\tcase 'shininess':\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseEffectParameter( child );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\t\tdata[ child.nodeName ] = {\n\t\t\t\t\t\t\topaque: child.hasAttribute( 'opaque' ) ? child.getAttribute( 'opaque' ) : 'A_ONE',\n\t\t\t\t\t\t\tdata: parseEffectParameter( child )\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameter( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'float':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'texture':\n\t\t\t\t\t\tdata[ child.nodeName ] = { id: child.getAttribute( 'texture' ), extra: parseEffectParameterTexture( child ) };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameterTexture( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\ttechnique: {}\n\t\t\t};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tparseEffectParameterTextureExtra( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectParameterTextureExtra( xml, data ) {\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tparseEffectParameterTextureExtraTechnique( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectParameterTextureExtraTechnique( xml, data ) {\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'repeatU':\n\t\t\t\t\tcase 'repeatV':\n\t\t\t\t\tcase 'offsetU':\n\t\t\t\t\tcase 'offsetV':\n\t\t\t\t\t\tdata.technique[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'wrapU':\n\t\t\t\t\tcase 'wrapV':\n\n\t\t\t\t\t\t// some files have values for wrapU/wrapV which become NaN via parseInt\n\n\t\t\t\t\t\tif ( child.textContent.toUpperCase() === 'TRUE' ) {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = 1;\n\n\t\t\t\t\t\t} else if ( child.textContent.toUpperCase() === 'FALSE' ) {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tdata.technique[ child.nodeName ] = parseInt( child.textContent );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'bump':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseEffectExtraTechniqueBump( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseEffectExtra( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique':\n\t\t\t\t\t\tdata.technique = parseEffectExtraTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectExtraTechnique( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'double_sided':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseInt( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'bump':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseEffectExtraTechniqueBump( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseEffectExtraTechniqueBump( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'texture':\n\t\t\t\t\t\tdata[ child.nodeName ] = { id: child.getAttribute( 'texture' ), texcoord: child.getAttribute( 'texcoord' ), extra: parseEffectParameterTexture( child ) };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildEffect( data ) {\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getEffect( id ) {\n\n\t\t\treturn getBuild( library.effects[ id ], buildEffect );\n\n\t\t}\n\n\t\t// material\n\n\t\tfunction parseMaterial( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tname: xml.getAttribute( 'name' )\n\t\t\t};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'instance_effect':\n\t\t\t\t\t\tdata.url = parseId( child.getAttribute( 'url' ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.materials[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction getTextureLoader( image ) {\n\n\t\t\tlet loader;\n\n\t\t\tlet extension = image.slice( ( image.lastIndexOf( '.' ) - 1 >>> 0 ) + 2 ); // http://www.jstips.co/en/javascript/get-file-extension/\n\t\t\textension = extension.toLowerCase();\n\n\t\t\tswitch ( extension ) {\n\n\t\t\t\tcase 'tga':\n\t\t\t\t\tloader = tgaLoader;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tloader = textureLoader;\n\n\t\t\t}\n\n\t\t\treturn loader;\n\n\t\t}\n\n\t\tfunction buildMaterial( data ) {\n\n\t\t\tconst effect = getEffect( data.url );\n\t\t\tconst technique = effect.profile.technique;\n\n\t\t\tlet material;\n\n\t\t\tswitch ( technique.type ) {\n\n\t\t\t\tcase 'phong':\n\t\t\t\tcase 'blinn':\n\t\t\t\t\tmaterial = new MeshPhongMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'lambert':\n\t\t\t\t\tmaterial = new MeshLambertMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tmaterial = new MeshBasicMaterial();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tmaterial.name = data.name || '';\n\n\t\t\tfunction getTexture( textureObject, colorSpace = null ) {\n\n\t\t\t\tconst sampler = effect.profile.samplers[ textureObject.id ];\n\t\t\t\tlet image = null;\n\n\t\t\t\t// get image\n\n\t\t\t\tif ( sampler !== undefined ) {\n\n\t\t\t\t\tconst surface = effect.profile.surfaces[ sampler.source ];\n\t\t\t\t\timage = getImage( surface.init_from );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).' );\n\t\t\t\t\timage = getImage( textureObject.id );\n\n\t\t\t\t}\n\n\t\t\t\t// create texture if image is available\n\n\t\t\t\tif ( image !== null ) {\n\n\t\t\t\t\tconst loader = getTextureLoader( image );\n\n\t\t\t\t\tif ( loader !== undefined ) {\n\n\t\t\t\t\t\tconst texture = loader.load( image );\n\n\t\t\t\t\t\tconst extra = textureObject.extra;\n\n\t\t\t\t\t\tif ( extra !== undefined && extra.technique !== undefined && isEmpty( extra.technique ) === false ) {\n\n\t\t\t\t\t\t\tconst technique = extra.technique;\n\n\t\t\t\t\t\t\ttexture.wrapS = technique.wrapU ? RepeatWrapping : ClampToEdgeWrapping;\n\t\t\t\t\t\t\ttexture.wrapT = technique.wrapV ? RepeatWrapping : ClampToEdgeWrapping;\n\n\t\t\t\t\t\t\ttexture.offset.set( technique.offsetU || 0, technique.offsetV || 0 );\n\t\t\t\t\t\t\ttexture.repeat.set( technique.repeatU || 1, technique.repeatV || 1 );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\ttexture.wrapS = RepeatWrapping;\n\t\t\t\t\t\t\ttexture.wrapT = RepeatWrapping;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( colorSpace !== null ) {\n\n\t\t\t\t\t\t\ttexture.colorSpace = colorSpace;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Loader for texture %s not found.', image );\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t create texture with ID:', textureObject.id );\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst parameters = technique.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tconst parameter = parameters[ key ];\n\n\t\t\t\tswitch ( key ) {\n\n\t\t\t\t\tcase 'diffuse':\n\t\t\t\t\t\tif ( parameter.color ) material.color.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.map = getTexture( parameter.texture, SRGBColorSpace );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specular':\n\t\t\t\t\t\tif ( parameter.color && material.specular ) material.specular.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.specularMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bump':\n\t\t\t\t\t\tif ( parameter.texture ) material.normalMap = getTexture( parameter.texture );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'ambient':\n\t\t\t\t\t\tif ( parameter.texture ) material.lightMap = getTexture( parameter.texture, SRGBColorSpace );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shininess':\n\t\t\t\t\t\tif ( parameter.float && material.shininess ) material.shininess = parameter.float;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'emission':\n\t\t\t\t\t\tif ( parameter.color && material.emissive ) material.emissive.fromArray( parameter.color );\n\t\t\t\t\t\tif ( parameter.texture ) material.emissiveMap = getTexture( parameter.texture, SRGBColorSpace );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tColorManagement.colorSpaceToWorking( material.color, SRGBColorSpace );\n\t\t\tif ( material.specular ) ColorManagement.colorSpaceToWorking( material.specular, SRGBColorSpace );\n\t\t\tif ( material.emissive ) ColorManagement.colorSpaceToWorking( material.emissive, SRGBColorSpace );\n\n\t\t\t//\n\n\t\t\tlet transparent = parameters[ 'transparent' ];\n\t\t\tlet transparency = parameters[ 'transparency' ];\n\n\t\t\t// does not exist but \n\n\t\t\tif ( transparency === undefined && transparent ) {\n\n\t\t\t\ttransparency = {\n\t\t\t\t\tfloat: 1\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\t// does not exist but \n\n\t\t\tif ( transparent === undefined && transparency ) {\n\n\t\t\t\ttransparent = {\n\t\t\t\t\topaque: 'A_ONE',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tcolor: [ 1, 1, 1, 1 ]\n\t\t\t\t\t} };\n\n\t\t\t}\n\n\t\t\tif ( transparent && transparency ) {\n\n\t\t\t\t// handle case if a texture exists but no color\n\n\t\t\t\tif ( transparent.data.texture ) {\n\n\t\t\t\t\t// we do not set an alpha map (see #13792)\n\n\t\t\t\t\tmaterial.transparent = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst color = transparent.data.color;\n\n\t\t\t\t\tswitch ( transparent.opaque ) {\n\n\t\t\t\t\t\tcase 'A_ONE':\n\t\t\t\t\t\t\tmaterial.opacity = color[ 3 ] * transparency.float;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'RGB_ZERO':\n\t\t\t\t\t\t\tmaterial.opacity = 1 - ( color[ 0 ] * transparency.float );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'A_ZERO':\n\t\t\t\t\t\t\tmaterial.opacity = 1 - ( color[ 3 ] * transparency.float );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'RGB_ONE':\n\t\t\t\t\t\t\tmaterial.opacity = color[ 0 ] * transparency.float;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Invalid opaque type \"%s\" of transparent tag.', transparent.opaque );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( material.opacity < 1 ) material.transparent = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\n\t\t\tif ( technique.extra !== undefined && technique.extra.technique !== undefined ) {\n\n\t\t\t\tconst techniques = technique.extra.technique;\n\n\t\t\t\tfor ( const k in techniques ) {\n\n\t\t\t\t\tconst v = techniques[ k ];\n\n\t\t\t\t\tswitch ( k ) {\n\n\t\t\t\t\t\tcase 'double_sided':\n\t\t\t\t\t\t\tmaterial.side = ( v === 1 ? DoubleSide : FrontSide );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'bump':\n\t\t\t\t\t\t\tmaterial.normalMap = getTexture( v.texture );\n\t\t\t\t\t\t\tmaterial.normalScale = new Vector2( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn material;\n\n\t\t}\n\n\t\tfunction getMaterial( id ) {\n\n\t\t\treturn getBuild( library.materials[ id ], buildMaterial );\n\n\t\t}\n\n\t\t// camera\n\n\t\tfunction parseCamera( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tname: xml.getAttribute( 'name' )\n\t\t\t};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'optics':\n\t\t\t\t\t\tdata.optics = parseCameraOptics( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.cameras[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseCameraOptics( xml ) {\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\treturn parseCameraTechnique( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {};\n\n\t\t}\n\n\t\tfunction parseCameraTechnique( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'perspective':\n\t\t\t\t\tcase 'orthographic':\n\n\t\t\t\t\t\tdata.technique = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseCameraParameters( child );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseCameraParameters( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'xfov':\n\t\t\t\t\tcase 'yfov':\n\t\t\t\t\tcase 'xmag':\n\t\t\t\t\tcase 'ymag':\n\t\t\t\t\tcase 'znear':\n\t\t\t\t\tcase 'zfar':\n\t\t\t\t\tcase 'aspect_ratio':\n\t\t\t\t\t\tdata[ child.nodeName ] = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildCamera( data ) {\n\n\t\t\tlet camera;\n\n\t\t\tswitch ( data.optics.technique ) {\n\n\t\t\t\tcase 'perspective':\n\t\t\t\t\tcamera = new PerspectiveCamera(\n\t\t\t\t\t\tdata.optics.parameters.yfov,\n\t\t\t\t\t\tdata.optics.parameters.aspect_ratio,\n\t\t\t\t\t\tdata.optics.parameters.znear,\n\t\t\t\t\t\tdata.optics.parameters.zfar\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'orthographic':\n\t\t\t\t\tlet ymag = data.optics.parameters.ymag;\n\t\t\t\t\tlet xmag = data.optics.parameters.xmag;\n\t\t\t\t\tconst aspectRatio = data.optics.parameters.aspect_ratio;\n\n\t\t\t\t\txmag = ( xmag === undefined ) ? ( ymag * aspectRatio ) : xmag;\n\t\t\t\t\tymag = ( ymag === undefined ) ? ( xmag / aspectRatio ) : ymag;\n\n\t\t\t\t\txmag *= 0.5;\n\t\t\t\t\tymag *= 0.5;\n\n\t\t\t\t\tcamera = new OrthographicCamera(\n\t\t\t\t\t\t- xmag, xmag, ymag, - ymag, // left, right, top, bottom\n\t\t\t\t\t\tdata.optics.parameters.znear,\n\t\t\t\t\t\tdata.optics.parameters.zfar\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tcamera.name = data.name || '';\n\n\t\t\treturn camera;\n\n\t\t}\n\n\t\tfunction getCamera( id ) {\n\n\t\t\tconst data = library.cameras[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildCamera );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find camera with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// light\n\n\t\tfunction parseLight( xml ) {\n\n\t\t\tlet data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tdata = parseLightTechnique( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.lights[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseLightTechnique( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'directional':\n\t\t\t\t\tcase 'point':\n\t\t\t\t\tcase 'spot':\n\t\t\t\t\tcase 'ambient':\n\n\t\t\t\t\t\tdata.technique = child.nodeName;\n\t\t\t\t\t\tdata.parameters = parseLightParameters( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseLightParameters( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tconst array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.color = new Color().fromArray( array );\n\t\t\t\t\t\tColorManagement.colorSpaceToWorking( data.color, SRGBColorSpace );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'falloff_angle':\n\t\t\t\t\t\tdata.falloffAngle = parseFloat( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'quadratic_attenuation':\n\t\t\t\t\t\tconst f = parseFloat( child.textContent );\n\t\t\t\t\t\tdata.distance = f ? Math.sqrt( 1 / f ) : 0;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildLight( data ) {\n\n\t\t\tlet light;\n\n\t\t\tswitch ( data.technique ) {\n\n\t\t\t\tcase 'directional':\n\t\t\t\t\tlight = new DirectionalLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'point':\n\t\t\t\t\tlight = new PointLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'spot':\n\t\t\t\t\tlight = new SpotLight();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ambient':\n\t\t\t\t\tlight = new AmbientLight();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( data.parameters.color ) light.color.copy( data.parameters.color );\n\t\t\tif ( data.parameters.distance ) light.distance = data.parameters.distance;\n\n\t\t\treturn light;\n\n\t\t}\n\n\t\tfunction getLight( id ) {\n\n\t\t\tconst data = library.lights[ id ];\n\n\t\t\tif ( data !== undefined ) {\n\n\t\t\t\treturn getBuild( data, buildLight );\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: Couldn\\'t find light with ID:', id );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// geometry\n\n\t\tfunction parseGeometry( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tname: xml.getAttribute( 'name' ),\n\t\t\t\tsources: {},\n\t\t\t\tvertices: {},\n\t\t\t\tprimitives: []\n\t\t\t};\n\n\t\t\tconst mesh = getElementsByTagName( xml, 'mesh' )[ 0 ];\n\n\t\t\t// the following tags inside geometry are not supported yet (see https://github.com/mrdoob/three.js/pull/12606): convex_mesh, spline, brep\n\t\t\tif ( mesh === undefined ) return;\n\n\t\t\tfor ( let i = 0; i < mesh.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = mesh.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tconst id = child.getAttribute( 'id' );\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'source':\n\t\t\t\t\t\tdata.sources[ id ] = parseSource( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vertices':\n\t\t\t\t\t\t// data.sources[ id ] = data.sources[ parseId( getElementsByTagName( child, 'input' )[ 0 ].getAttribute( 'source' ) ) ];\n\t\t\t\t\t\tdata.vertices = parseGeometryVertices( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'polygons':\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unsupported primitive type: ', child.nodeName );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\tcase 'polylist':\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\t\tdata.primitives.push( parseGeometryPrimitive( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.geometries[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parseSource( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tarray: [],\n\t\t\t\tstride: 3\n\t\t\t};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'float_array':\n\t\t\t\t\t\tdata.array = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Name_array':\n\t\t\t\t\t\tdata.array = parseStrings( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tconst accessor = getElementsByTagName( child, 'accessor' )[ 0 ];\n\n\t\t\t\t\t\tif ( accessor !== undefined ) {\n\n\t\t\t\t\t\t\tdata.stride = parseInt( accessor.getAttribute( 'stride' ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseGeometryVertices( xml ) {\n\n\t\t\tconst data = {};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tdata[ child.getAttribute( 'semantic' ) ] = parseId( child.getAttribute( 'source' ) );\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseGeometryPrimitive( xml ) {\n\n\t\t\tconst primitive = {\n\t\t\t\ttype: xml.nodeName,\n\t\t\t\tmaterial: xml.getAttribute( 'material' ),\n\t\t\t\tcount: parseInt( xml.getAttribute( 'count' ) ),\n\t\t\t\tinputs: {},\n\t\t\t\tstride: 0,\n\t\t\t\thasUV: false\n\t\t\t};\n\n\t\t\tfor ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'input':\n\t\t\t\t\t\tconst id = parseId( child.getAttribute( 'source' ) );\n\t\t\t\t\t\tconst semantic = child.getAttribute( 'semantic' );\n\t\t\t\t\t\tconst offset = parseInt( child.getAttribute( 'offset' ) );\n\t\t\t\t\t\tconst set = parseInt( child.getAttribute( 'set' ) );\n\t\t\t\t\t\tconst inputname = ( set > 0 ? semantic + set : semantic );\n\t\t\t\t\t\tprimitive.inputs[ inputname ] = { id: id, offset: offset };\n\t\t\t\t\t\tprimitive.stride = Math.max( primitive.stride, offset + 1 );\n\t\t\t\t\t\tif ( semantic === 'TEXCOORD' ) primitive.hasUV = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'vcount':\n\t\t\t\t\t\tprimitive.vcount = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'p':\n\t\t\t\t\t\tprimitive.p = parseInts( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn primitive;\n\n\t\t}\n\n\t\tfunction groupPrimitives( primitives ) {\n\n\t\t\tconst build = {};\n\n\t\t\tfor ( let i = 0; i < primitives.length; i ++ ) {\n\n\t\t\t\tconst primitive = primitives[ i ];\n\n\t\t\t\tif ( build[ primitive.type ] === undefined ) build[ primitive.type ] = [];\n\n\t\t\t\tbuild[ primitive.type ].push( primitive );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction checkUVCoordinates( primitives ) {\n\n\t\t\tlet count = 0;\n\n\t\t\tfor ( let i = 0, l = primitives.length; i < l; i ++ ) {\n\n\t\t\t\tconst primitive = primitives[ i ];\n\n\t\t\t\tif ( primitive.hasUV === true ) {\n\n\t\t\t\t\tcount ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( count > 0 && count < primitives.length ) {\n\n\t\t\t\tprimitives.uvsNeedsFix = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction buildGeometry( data ) {\n\n\t\t\tconst build = {};\n\n\t\t\tconst sources = data.sources;\n\t\t\tconst vertices = data.vertices;\n\t\t\tconst primitives = data.primitives;\n\n\t\t\tif ( primitives.length === 0 ) return {};\n\n\t\t\t// our goal is to create one buffer geometry for a single type of primitives\n\t\t\t// first, we group all primitives by their type\n\n\t\t\tconst groupedPrimitives = groupPrimitives( primitives );\n\n\t\t\tfor ( const type in groupedPrimitives ) {\n\n\t\t\t\tconst primitiveType = groupedPrimitives[ type ];\n\n\t\t\t\t// second, ensure consistent uv coordinates for each type of primitives (polylist,triangles or lines)\n\n\t\t\t\tcheckUVCoordinates( primitiveType );\n\n\t\t\t\t// third, create a buffer geometry for each type of primitives\n\n\t\t\t\tbuild[ type ] = buildGeometryType( primitiveType, sources, vertices );\n\n\t\t\t}\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildGeometryType( primitives, sources, vertices ) {\n\n\t\t\tconst build = {};\n\n\t\t\tconst position = { array: [], stride: 0 };\n\t\t\tconst normal = { array: [], stride: 0 };\n\t\t\tconst uv = { array: [], stride: 0 };\n\t\t\tconst uv1 = { array: [], stride: 0 };\n\t\t\tconst color = { array: [], stride: 0 };\n\n\t\t\tconst skinIndex = { array: [], stride: 4 };\n\t\t\tconst skinWeight = { array: [], stride: 4 };\n\n\t\t\tconst geometry = new BufferGeometry();\n\n\t\t\tconst materialKeys = [];\n\n\t\t\tlet start = 0;\n\n\t\t\tfor ( let p = 0; p < primitives.length; p ++ ) {\n\n\t\t\t\tconst primitive = primitives[ p ];\n\t\t\t\tconst inputs = primitive.inputs;\n\n\t\t\t\t// groups\n\n\t\t\t\tlet count = 0;\n\n\t\t\t\tswitch ( primitive.type ) {\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\t\tcount = primitive.count * 2;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\t\tcount = primitive.count * 3;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'polylist':\n\n\t\t\t\t\t\tfor ( let g = 0; g < primitive.count; g ++ ) {\n\n\t\t\t\t\t\t\tconst vc = primitive.vcount[ g ];\n\n\t\t\t\t\t\t\tswitch ( vc ) {\n\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\tcount += 3; // single triangle\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\tcount += 6; // quad, subdivided into two triangles\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tcount += ( vc - 2 ) * 3; // polylist with more than four vertices\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unknown primitive type:', primitive.type );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addGroup( start, count, p );\n\t\t\t\tstart += count;\n\n\t\t\t\t// material\n\n\t\t\t\tif ( primitive.material ) {\n\n\t\t\t\t\tmaterialKeys.push( primitive.material );\n\n\t\t\t\t}\n\n\t\t\t\t// geometry data\n\n\t\t\t\tfor ( const name in inputs ) {\n\n\t\t\t\t\tconst input = inputs[ name ];\n\n\t\t\t\t\tswitch ( name )\t{\n\n\t\t\t\t\t\tcase 'VERTEX':\n\t\t\t\t\t\t\tfor ( const key in vertices ) {\n\n\t\t\t\t\t\t\t\tconst id = vertices[ key ];\n\n\t\t\t\t\t\t\t\tswitch ( key ) {\n\n\t\t\t\t\t\t\t\t\tcase 'POSITION':\n\t\t\t\t\t\t\t\t\t\tconst prevLength = position.array.length;\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, position.array );\n\t\t\t\t\t\t\t\t\t\tposition.stride = sources[ id ].stride;\n\n\t\t\t\t\t\t\t\t\t\tif ( sources.skinWeights && sources.skinIndices ) {\n\n\t\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources.skinIndices, input.offset, skinIndex.array );\n\t\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources.skinWeights, input.offset, skinWeight.array );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// see #3803\n\n\t\t\t\t\t\t\t\t\t\tif ( primitive.hasUV === false && primitives.uvsNeedsFix === true ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst count = ( position.array.length - prevLength ) / position.stride;\n\n\t\t\t\t\t\t\t\t\t\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// fill missing uv coordinates\n\n\t\t\t\t\t\t\t\t\t\t\t\tuv.array.push( 0, 0 );\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'NORMAL':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, normal.array );\n\t\t\t\t\t\t\t\t\t\tnormal.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'COLOR':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, color.array );\n\t\t\t\t\t\t\t\t\t\tcolor.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'TEXCOORD':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, uv.array );\n\t\t\t\t\t\t\t\t\t\tuv.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase 'TEXCOORD1':\n\t\t\t\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ id ], input.offset, uv1.array );\n\t\t\t\t\t\t\t\t\t\tuv.stride = sources[ id ].stride;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Semantic \"%s\" not handled in geometry build process.', key );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'NORMAL':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, normal.array );\n\t\t\t\t\t\t\tnormal.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'COLOR':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, color.array, true );\n\t\t\t\t\t\t\tcolor.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TEXCOORD':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, uv.array );\n\t\t\t\t\t\t\tuv.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TEXCOORD1':\n\t\t\t\t\t\t\tbuildGeometryData( primitive, sources[ input.id ], input.offset, uv1.array );\n\t\t\t\t\t\t\tuv1.stride = sources[ input.id ].stride;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tif ( position.array.length > 0 ) geometry.setAttribute( 'position', new Float32BufferAttribute( position.array, position.stride ) );\n\t\t\tif ( normal.array.length > 0 ) geometry.setAttribute( 'normal', new Float32BufferAttribute( normal.array, normal.stride ) );\n\t\t\tif ( color.array.length > 0 ) geometry.setAttribute( 'color', new Float32BufferAttribute( color.array, color.stride ) );\n\t\t\tif ( uv.array.length > 0 ) geometry.setAttribute( 'uv', new Float32BufferAttribute( uv.array, uv.stride ) );\n\t\t\tif ( uv1.array.length > 0 ) geometry.setAttribute( 'uv1', new Float32BufferAttribute( uv1.array, uv1.stride ) );\n\n\t\t\tif ( skinIndex.array.length > 0 ) geometry.setAttribute( 'skinIndex', new Float32BufferAttribute( skinIndex.array, skinIndex.stride ) );\n\t\t\tif ( skinWeight.array.length > 0 ) geometry.setAttribute( 'skinWeight', new Float32BufferAttribute( skinWeight.array, skinWeight.stride ) );\n\n\t\t\tbuild.data = geometry;\n\t\t\tbuild.type = primitives[ 0 ].type;\n\t\t\tbuild.materialKeys = materialKeys;\n\n\t\t\treturn build;\n\n\t\t}\n\n\t\tfunction buildGeometryData( primitive, source, offset, array, isColor = false ) {\n\n\t\t\tconst indices = primitive.p;\n\t\t\tconst stride = primitive.stride;\n\t\t\tconst vcount = primitive.vcount;\n\n\t\t\tfunction pushVector( i ) {\n\n\t\t\t\tlet index = indices[ i + offset ] * sourceStride;\n\t\t\t\tconst length = index + sourceStride;\n\n\t\t\t\tfor ( ; index < length; index ++ ) {\n\n\t\t\t\t\tarray.push( sourceArray[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( isColor ) {\n\n\t\t\t\t\t// convert the vertex colors from srgb to linear if present\n\t\t\t\t\tconst startIndex = array.length - sourceStride - 1;\n\t\t\t\t\ttempColor.setRGB(\n\t\t\t\t\t\tarray[ startIndex + 0 ],\n\t\t\t\t\t\tarray[ startIndex + 1 ],\n\t\t\t\t\t\tarray[ startIndex + 2 ],\n\t\t\t\t\t\tSRGBColorSpace\n\t\t\t\t\t);\n\n\t\t\t\t\tarray[ startIndex + 0 ] = tempColor.r;\n\t\t\t\t\tarray[ startIndex + 1 ] = tempColor.g;\n\t\t\t\t\tarray[ startIndex + 2 ] = tempColor.b;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst sourceArray = source.array;\n\t\t\tconst sourceStride = source.stride;\n\n\t\t\tif ( primitive.vcount !== undefined ) {\n\n\t\t\t\tlet index = 0;\n\n\t\t\t\tfor ( let i = 0, l = vcount.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst count = vcount[ i ];\n\n\t\t\t\t\tif ( count === 4 ) {\n\n\t\t\t\t\t\tconst a = index + stride * 0;\n\t\t\t\t\t\tconst b = index + stride * 1;\n\t\t\t\t\t\tconst c = index + stride * 2;\n\t\t\t\t\t\tconst d = index + stride * 3;\n\n\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( d );\n\t\t\t\t\t\tpushVector( b ); pushVector( c ); pushVector( d );\n\n\t\t\t\t\t} else if ( count === 3 ) {\n\n\t\t\t\t\t\tconst a = index + stride * 0;\n\t\t\t\t\t\tconst b = index + stride * 1;\n\t\t\t\t\t\tconst c = index + stride * 2;\n\n\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( c );\n\n\t\t\t\t\t} else if ( count > 4 ) {\n\n\t\t\t\t\t\tfor ( let k = 1, kl = ( count - 2 ); k <= kl; k ++ ) {\n\n\t\t\t\t\t\t\tconst a = index + stride * 0;\n\t\t\t\t\t\t\tconst b = index + stride * k;\n\t\t\t\t\t\t\tconst c = index + stride * ( k + 1 );\n\n\t\t\t\t\t\t\tpushVector( a ); pushVector( b ); pushVector( c );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tindex += stride * count;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = indices.length; i < l; i += stride ) {\n\n\t\t\t\t\tpushVector( i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getGeometry( id ) {\n\n\t\t\treturn getBuild( library.geometries[ id ], buildGeometry );\n\n\t\t}\n\n\t\t// kinematics\n\n\t\tfunction parseKinematicsModel( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\tjoints: {},\n\t\t\t\tlinks: []\n\t\t\t};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tparseKinematicsTechniqueCommon( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.kinematicsModels[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildKinematicsModel( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getKinematicsModel( id ) {\n\n\t\t\treturn getBuild( library.kinematicsModels[ id ], buildKinematicsModel );\n\n\t\t}\n\n\t\tfunction parseKinematicsTechniqueCommon( xml, data ) {\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'joint':\n\t\t\t\t\t\tdata.joints[ child.getAttribute( 'sid' ) ] = parseKinematicsJoint( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'link':\n\t\t\t\t\t\tdata.links.push( parseKinematicsLink( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseKinematicsJoint( xml ) {\n\n\t\t\tlet data;\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'prismatic':\n\t\t\t\t\tcase 'revolute':\n\t\t\t\t\t\tdata = parseKinematicsJointParameter( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsJointParameter( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\taxis: new Vector3(),\n\t\t\t\tlimits: {\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 0\n\t\t\t\t},\n\t\t\t\ttype: xml.nodeName,\n\t\t\t\tstatic: false,\n\t\t\t\tzeroPosition: 0,\n\t\t\t\tmiddlePosition: 0\n\t\t\t};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'axis':\n\t\t\t\t\t\tconst array = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.axis.fromArray( array );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'limits':\n\t\t\t\t\t\tconst max = child.getElementsByTagName( 'max' )[ 0 ];\n\t\t\t\t\t\tconst min = child.getElementsByTagName( 'min' )[ 0 ];\n\n\t\t\t\t\t\tdata.limits.max = parseFloat( max.textContent );\n\t\t\t\t\t\tdata.limits.min = parseFloat( min.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// if min is equal to or greater than max, consider the joint static\n\n\t\t\tif ( data.limits.min >= data.limits.max ) {\n\n\t\t\t\tdata.static = true;\n\n\t\t\t}\n\n\t\t\t// calculate middle position\n\n\t\t\tdata.middlePosition = ( data.limits.min + data.limits.max ) / 2.0;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsLink( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\tattachments: [],\n\t\t\t\ttransforms: []\n\t\t\t};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'attachment_full':\n\t\t\t\t\t\tdata.attachments.push( parseKinematicsAttachment( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tdata.transforms.push( parseKinematicsTransform( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsAttachment( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tjoint: xml.getAttribute( 'joint' ).split( '/' ).pop(),\n\t\t\t\ttransforms: [],\n\t\t\t\tlinks: []\n\t\t\t};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'link':\n\t\t\t\t\t\tdata.links.push( parseKinematicsLink( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tdata.transforms.push( parseKinematicsTransform( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseKinematicsTransform( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\ttype: xml.nodeName\n\t\t\t};\n\n\t\t\tconst array = parseFloats( xml.textContent );\n\n\t\t\tswitch ( data.type ) {\n\n\t\t\t\tcase 'matrix':\n\t\t\t\t\tdata.obj = new Matrix4();\n\t\t\t\t\tdata.obj.fromArray( array ).transpose();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'translate':\n\t\t\t\t\tdata.obj = new Vector3();\n\t\t\t\t\tdata.obj.fromArray( array );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'rotate':\n\t\t\t\t\tdata.obj = new Vector3();\n\t\t\t\t\tdata.obj.fromArray( array );\n\t\t\t\t\tdata.angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// physics\n\n\t\tfunction parsePhysicsModel( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\trigidBodies: {}\n\t\t\t};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'rigid_body':\n\t\t\t\t\t\tdata.rigidBodies[ child.getAttribute( 'name' ) ] = {};\n\t\t\t\t\t\tparsePhysicsRigidBody( child, data.rigidBodies[ child.getAttribute( 'name' ) ] );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.physicsModels[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction parsePhysicsRigidBody( xml, data ) {\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'technique_common':\n\t\t\t\t\t\tparsePhysicsTechniqueCommon( child, data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parsePhysicsTechniqueCommon( xml, data ) {\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'inertia':\n\t\t\t\t\t\tdata.inertia = parseFloats( child.textContent );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'mass':\n\t\t\t\t\t\tdata.mass = parseFloats( child.textContent )[ 0 ];\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// scene\n\n\t\tfunction parseKinematicsScene( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tbindJointAxis: []\n\t\t\t};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_joint_axis':\n\t\t\t\t\t\tdata.bindJointAxis.push( parseKinematicsBindJointAxis( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlibrary.kinematicsScenes[ parseId( xml.getAttribute( 'url' ) ) ] = data;\n\n\t\t}\n\n\t\tfunction parseKinematicsBindJointAxis( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\ttarget: xml.getAttribute( 'target' ).split( '/' ).pop()\n\t\t\t};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'axis':\n\t\t\t\t\t\tconst param = child.getElementsByTagName( 'param' )[ 0 ];\n\t\t\t\t\t\tdata.axis = param.textContent;\n\t\t\t\t\t\tconst tmpJointIndex = data.axis.split( 'inst_' ).pop().split( 'axis' )[ 0 ];\n\t\t\t\t\t\tdata.jointIndex = tmpJointIndex.substring( 0, tmpJointIndex.length - 1 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildKinematicsScene( data ) {\n\n\t\t\tif ( data.build !== undefined ) return data.build;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction getKinematicsScene( id ) {\n\n\t\t\treturn getBuild( library.kinematicsScenes[ id ], buildKinematicsScene );\n\n\t\t}\n\n\t\tfunction setupKinematics() {\n\n\t\t\tconst kinematicsModelId = Object.keys( library.kinematicsModels )[ 0 ];\n\t\t\tconst kinematicsSceneId = Object.keys( library.kinematicsScenes )[ 0 ];\n\t\t\tconst visualSceneId = Object.keys( library.visualScenes )[ 0 ];\n\n\t\t\tif ( kinematicsModelId === undefined || kinematicsSceneId === undefined ) return;\n\n\t\t\tconst kinematicsModel = getKinematicsModel( kinematicsModelId );\n\t\t\tconst kinematicsScene = getKinematicsScene( kinematicsSceneId );\n\t\t\tconst visualScene = getVisualScene( visualSceneId );\n\n\t\t\tconst bindJointAxis = kinematicsScene.bindJointAxis;\n\t\t\tconst jointMap = {};\n\n\t\t\tfor ( let i = 0, l = bindJointAxis.length; i < l; i ++ ) {\n\n\t\t\t\tconst axis = bindJointAxis[ i ];\n\n\t\t\t\t// the result of the following query is an element of type 'translate', 'rotate','scale' or 'matrix'\n\n\t\t\t\tconst targetElement = collada.querySelector( '[sid=\"' + axis.target + '\"]' );\n\n\t\t\t\tif ( targetElement ) {\n\n\t\t\t\t\t// get the parent of the transform element\n\n\t\t\t\t\tconst parentVisualElement = targetElement.parentElement;\n\n\t\t\t\t\t// connect the joint of the kinematics model with the element in the visual scene\n\n\t\t\t\t\tconnect( axis.jointIndex, parentVisualElement );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction connect( jointIndex, visualElement ) {\n\n\t\t\t\tconst visualElementName = visualElement.getAttribute( 'name' );\n\t\t\t\tconst joint = kinematicsModel.joints[ jointIndex ];\n\n\t\t\t\tvisualScene.traverse( function ( object ) {\n\n\t\t\t\t\tif ( object.name === visualElementName ) {\n\n\t\t\t\t\t\tjointMap[ jointIndex ] = {\n\t\t\t\t\t\t\tobject: object,\n\t\t\t\t\t\t\ttransforms: buildTransformList( visualElement ),\n\t\t\t\t\t\t\tjoint: joint,\n\t\t\t\t\t\t\tposition: joint.zeroPosition\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tconst m0 = new Matrix4();\n\n\t\t\tkinematics = {\n\n\t\t\t\tjoints: kinematicsModel && kinematicsModel.joints,\n\n\t\t\t\tgetJointValue: function ( jointIndex ) {\n\n\t\t\t\t\tconst jointData = jointMap[ jointIndex ];\n\n\t\t\t\t\tif ( jointData ) {\n\n\t\t\t\t\t\treturn jointData.position;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' doesn\\'t exist.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetJointValue: function ( jointIndex, value ) {\n\n\t\t\t\t\tconst jointData = jointMap[ jointIndex ];\n\n\t\t\t\t\tif ( jointData ) {\n\n\t\t\t\t\t\tconst joint = jointData.joint;\n\n\t\t\t\t\t\tif ( value > joint.limits.max || value < joint.limits.min ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' value ' + value + ' outside of limits (min: ' + joint.limits.min + ', max: ' + joint.limits.max + ').' );\n\n\t\t\t\t\t\t} else if ( joint.static ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' is static.' );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconst object = jointData.object;\n\t\t\t\t\t\t\tconst axis = joint.axis;\n\t\t\t\t\t\t\tconst transforms = jointData.transforms;\n\n\t\t\t\t\t\t\tmatrix.identity();\n\n\t\t\t\t\t\t\t// each update, we have to apply all transforms in the correct order\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < transforms.length; i ++ ) {\n\n\t\t\t\t\t\t\t\tconst transform = transforms[ i ];\n\n\t\t\t\t\t\t\t\t// if there is a connection of the transform node with a joint, apply the joint value\n\n\t\t\t\t\t\t\t\tif ( transform.sid && transform.sid.indexOf( jointIndex ) !== - 1 ) {\n\n\t\t\t\t\t\t\t\t\tswitch ( joint.type ) {\n\n\t\t\t\t\t\t\t\t\t\tcase 'revolute':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeRotationAxis( axis, MathUtils.degToRad( value ) ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'prismatic':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeTranslation( axis.x * value, axis.y * value, axis.z * value ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Unknown joint type: ' + joint.type );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tswitch ( transform.type ) {\n\n\t\t\t\t\t\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( transform.obj );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'translate':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeTranslation( transform.obj.x, transform.obj.y, transform.obj.z ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.scale( transform.obj );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\t\t\t\t\t\tmatrix.multiply( m0.makeRotationAxis( transform.obj, transform.angle ) );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tobject.matrix.copy( matrix );\n\t\t\t\t\t\t\tobject.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\t\t\t\t\tjointMap[ jointIndex ].position = value;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.log( 'THREE.ColladaLoader: ' + jointIndex + ' does not exist.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t\tfunction buildTransformList( node ) {\n\n\t\t\tconst transforms = [];\n\n\t\t\tconst xml = collada.querySelector( '[id=\"' + node.id + '\"]' );\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tlet array, vector;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\tarray = parseFloats( child.textContent );\n\t\t\t\t\t\tconst matrix = new Matrix4().fromArray( array ).transpose();\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: matrix\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tarray = parseFloats( child.textContent );\n\t\t\t\t\t\tvector = new Vector3().fromArray( array );\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: vector\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tarray = parseFloats( child.textContent );\n\t\t\t\t\t\tvector = new Vector3().fromArray( array );\n\t\t\t\t\t\tconst angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\t\ttransforms.push( {\n\t\t\t\t\t\t\tsid: child.getAttribute( 'sid' ),\n\t\t\t\t\t\t\ttype: child.nodeName,\n\t\t\t\t\t\t\tobj: vector,\n\t\t\t\t\t\t\tangle: angle\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn transforms;\n\n\t\t}\n\n\t\t// nodes\n\n\t\tfunction prepareNodes( xml ) {\n\n\t\t\tconst elements = xml.getElementsByTagName( 'node' );\n\n\t\t\t// ensure all node elements have id attributes\n\n\t\t\tfor ( let i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\tconst element = elements[ i ];\n\n\t\t\t\tif ( element.hasAttribute( 'id' ) === false ) {\n\n\t\t\t\t\telement.setAttribute( 'id', generateId() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst matrix = new Matrix4();\n\t\tconst vector = new Vector3();\n\n\t\tfunction parseNode( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tname: xml.getAttribute( 'name' ) || '',\n\t\t\t\ttype: xml.getAttribute( 'type' ),\n\t\t\t\tid: xml.getAttribute( 'id' ),\n\t\t\t\tsid: xml.getAttribute( 'sid' ),\n\t\t\t\tmatrix: new Matrix4(),\n\t\t\t\tnodes: [],\n\t\t\t\tinstanceCameras: [],\n\t\t\t\tinstanceControllers: [],\n\t\t\t\tinstanceLights: [],\n\t\t\t\tinstanceGeometries: [],\n\t\t\t\tinstanceNodes: [],\n\t\t\t\ttransforms: {}\n\t\t\t};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tif ( child.nodeType !== 1 ) continue;\n\n\t\t\t\tlet array;\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'node':\n\t\t\t\t\t\tdata.nodes.push( child.getAttribute( 'id' ) );\n\t\t\t\t\t\tparseNode( child );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_camera':\n\t\t\t\t\t\tdata.instanceCameras.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_controller':\n\t\t\t\t\t\tdata.instanceControllers.push( parseNodeInstance( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_light':\n\t\t\t\t\t\tdata.instanceLights.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_geometry':\n\t\t\t\t\t\tdata.instanceGeometries.push( parseNodeInstance( child ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'instance_node':\n\t\t\t\t\t\tdata.instanceNodes.push( parseId( child.getAttribute( 'url' ) ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'matrix':\n\t\t\t\t\t\tarray = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.fromArray( array ).transpose() );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'translate':\n\t\t\t\t\t\tarray = parseFloats( child.textContent );\n\t\t\t\t\t\tvector.fromArray( array );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.makeTranslation( vector.x, vector.y, vector.z ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tarray = parseFloats( child.textContent );\n\t\t\t\t\t\tconst angle = MathUtils.degToRad( array[ 3 ] );\n\t\t\t\t\t\tdata.matrix.multiply( matrix.makeRotationAxis( vector.fromArray( array ), angle ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tarray = parseFloats( child.textContent );\n\t\t\t\t\t\tdata.matrix.scale( vector.fromArray( array ) );\n\t\t\t\t\t\tdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'extra':\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.log( child );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasNode( data.id ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.', data.id );\n\n\t\t\t} else {\n\n\t\t\t\tlibrary.nodes[ data.id ] = data;\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction parseNodeInstance( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tid: parseId( xml.getAttribute( 'url' ) ),\n\t\t\t\tmaterials: {},\n\t\t\t\tskeletons: []\n\t\t\t};\n\n\t\t\tfor ( let i = 0; i < xml.childNodes.length; i ++ ) {\n\n\t\t\t\tconst child = xml.childNodes[ i ];\n\n\t\t\t\tswitch ( child.nodeName ) {\n\n\t\t\t\t\tcase 'bind_material':\n\t\t\t\t\t\tconst instances = child.getElementsByTagName( 'instance_material' );\n\n\t\t\t\t\t\tfor ( let j = 0; j < instances.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst instance = instances[ j ];\n\t\t\t\t\t\t\tconst symbol = instance.getAttribute( 'symbol' );\n\t\t\t\t\t\t\tconst target = instance.getAttribute( 'target' );\n\n\t\t\t\t\t\t\tdata.materials[ symbol ] = parseId( target );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'skeleton':\n\t\t\t\t\t\tdata.skeletons.push( parseId( child.textContent ) );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tfunction buildSkeleton( skeletons, joints ) {\n\n\t\t\tconst boneData = [];\n\t\t\tconst sortedBoneData = [];\n\n\t\t\tlet i, j, data;\n\n\t\t\t// a skeleton can have multiple root bones. collada expresses this\n\t\t\t// situation with multiple \"skeleton\" tags per controller instance\n\n\t\t\tfor ( i = 0; i < skeletons.length; i ++ ) {\n\n\t\t\t\tconst skeleton = skeletons[ i ];\n\n\t\t\t\tlet root;\n\n\t\t\t\tif ( hasNode( skeleton ) ) {\n\n\t\t\t\t\troot = getNode( skeleton );\n\t\t\t\t\tbuildBoneHierarchy( root, joints, boneData );\n\n\t\t\t\t} else if ( hasVisualScene( skeleton ) ) {\n\n\t\t\t\t\t// handle case where the skeleton refers to the visual scene (#13335)\n\n\t\t\t\t\tconst visualScene = library.visualScenes[ skeleton ];\n\t\t\t\t\tconst children = visualScene.children;\n\n\t\t\t\t\tfor ( let j = 0; j < children.length; j ++ ) {\n\n\t\t\t\t\t\tconst child = children[ j ];\n\n\t\t\t\t\t\tif ( child.type === 'JOINT' ) {\n\n\t\t\t\t\t\t\tconst root = getNode( child.id );\n\t\t\t\t\t\t\tbuildBoneHierarchy( root, joints, boneData );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.ColladaLoader: Unable to find root bone of skeleton with ID:', skeleton );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// sort bone data (the order is defined in the corresponding controller)\n\n\t\t\tfor ( i = 0; i < joints.length; i ++ ) {\n\n\t\t\t\tfor ( j = 0; j < boneData.length; j ++ ) {\n\n\t\t\t\t\tdata = boneData[ j ];\n\n\t\t\t\t\tif ( data.bone.name === joints[ i ].name ) {\n\n\t\t\t\t\t\tsortedBoneData[ i ] = data;\n\t\t\t\t\t\tdata.processed = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add unprocessed bone data at the end of the list\n\n\t\t\tfor ( i = 0; i < boneData.length; i ++ ) {\n\n\t\t\t\tdata = boneData[ i ];\n\n\t\t\t\tif ( data.processed === false ) {\n\n\t\t\t\t\tsortedBoneData.push( data );\n\t\t\t\t\tdata.processed = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// setup arrays for skeleton creation\n\n\t\t\tconst bones = [];\n\t\t\tconst boneInverses = [];\n\n\t\t\tfor ( i = 0; i < sortedBoneData.length; i ++ ) {\n\n\t\t\t\tdata = sortedBoneData[ i ];\n\n\t\t\t\tbones.push( data.bone );\n\t\t\t\tboneInverses.push( data.boneInverse );\n\n\t\t\t}\n\n\t\t\treturn new Skeleton( bones, boneInverses );\n\n\t\t}\n\n\t\tfunction buildBoneHierarchy( root, joints, boneData ) {\n\n\t\t\t// setup bone data from visual scene\n\n\t\t\troot.traverse( function ( object ) {\n\n\t\t\t\tif ( object.isBone === true ) {\n\n\t\t\t\t\tlet boneInverse;\n\n\t\t\t\t\t// retrieve the boneInverse from the controller data\n\n\t\t\t\t\tfor ( let i = 0; i < joints.length; i ++ ) {\n\n\t\t\t\t\t\tconst joint = joints[ i ];\n\n\t\t\t\t\t\tif ( joint.name === object.name ) {\n\n\t\t\t\t\t\t\tboneInverse = joint.boneInverse;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( boneInverse === undefined ) {\n\n\t\t\t\t\t\t// Unfortunately, there can be joints in the visual scene that are not part of the\n\t\t\t\t\t\t// corresponding controller. In this case, we have to create a dummy boneInverse matrix\n\t\t\t\t\t\t// for the respective bone. This bone won't affect any vertices, because there are no skin indices\n\t\t\t\t\t\t// and weights defined for it. But we still have to add the bone to the sorted bone list in order to\n\t\t\t\t\t\t// ensure a correct animation of the model.\n\n\t\t\t\t\t\tboneInverse = new Matrix4();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tboneData.push( { bone: object, boneInverse: boneInverse, processed: false } );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction buildNode( data ) {\n\n\t\t\tconst objects = [];\n\n\t\t\tconst matrix = data.matrix;\n\t\t\tconst nodes = data.nodes;\n\t\t\tconst type = data.type;\n\t\t\tconst instanceCameras = data.instanceCameras;\n\t\t\tconst instanceControllers = data.instanceControllers;\n\t\t\tconst instanceLights = data.instanceLights;\n\t\t\tconst instanceGeometries = data.instanceGeometries;\n\t\t\tconst instanceNodes = data.instanceNodes;\n\n\t\t\t// nodes\n\n\t\t\tfor ( let i = 0, l = nodes.length; i < l; i ++ ) {\n\n\t\t\t\tobjects.push( getNode( nodes[ i ] ) );\n\n\t\t\t}\n\n\t\t\t// instance cameras\n\n\t\t\tfor ( let i = 0, l = instanceCameras.length; i < l; i ++ ) {\n\n\t\t\t\tconst instanceCamera = getCamera( instanceCameras[ i ] );\n\n\t\t\t\tif ( instanceCamera !== null ) {\n\n\t\t\t\t\tobjects.push( instanceCamera.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance controllers\n\n\t\t\tfor ( let i = 0, l = instanceControllers.length; i < l; i ++ ) {\n\n\t\t\t\tconst instance = instanceControllers[ i ];\n\t\t\t\tconst controller = getController( instance.id );\n\t\t\t\tconst geometries = getGeometry( controller.id );\n\t\t\t\tconst newObjects = buildObjects( geometries, instance.materials );\n\n\t\t\t\tconst skeletons = instance.skeletons;\n\t\t\t\tconst joints = controller.skin.joints;\n\n\t\t\t\tconst skeleton = buildSkeleton( skeletons, joints );\n\n\t\t\t\tfor ( let j = 0, jl = newObjects.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst object = newObjects[ j ];\n\n\t\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t\tobject.bind( skeleton, controller.skin.bindMatrix );\n\t\t\t\t\t\tobject.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects.push( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance lights\n\n\t\t\tfor ( let i = 0, l = instanceLights.length; i < l; i ++ ) {\n\n\t\t\t\tconst instanceLight = getLight( instanceLights[ i ] );\n\n\t\t\t\tif ( instanceLight !== null ) {\n\n\t\t\t\t\tobjects.push( instanceLight.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance geometries\n\n\t\t\tfor ( let i = 0, l = instanceGeometries.length; i < l; i ++ ) {\n\n\t\t\t\tconst instance = instanceGeometries[ i ];\n\n\t\t\t\t// a single geometry instance in collada can lead to multiple object3Ds.\n\t\t\t\t// this is the case when primitives are combined like triangles and lines\n\n\t\t\t\tconst geometries = getGeometry( instance.id );\n\t\t\t\tconst newObjects = buildObjects( geometries, instance.materials );\n\n\t\t\t\tfor ( let j = 0, jl = newObjects.length; j < jl; j ++ ) {\n\n\t\t\t\t\tobjects.push( newObjects[ j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// instance nodes\n\n\t\t\tfor ( let i = 0, l = instanceNodes.length; i < l; i ++ ) {\n\n\t\t\t\tobjects.push( getNode( instanceNodes[ i ] ).clone() );\n\n\t\t\t}\n\n\t\t\tlet object;\n\n\t\t\tif ( nodes.length === 0 && objects.length === 1 ) {\n\n\t\t\t\tobject = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tobject = ( type === 'JOINT' ) ? new Bone() : new Group();\n\n\t\t\t\tfor ( let i = 0; i < objects.length; i ++ ) {\n\n\t\t\t\t\tobject.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tobject.name = ( type === 'JOINT' ) ? data.sid : data.name;\n\t\t\tobject.matrix.copy( matrix );\n\t\t\tobject.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\treturn object;\n\n\t\t}\n\n\t\tconst fallbackMaterial = new MeshBasicMaterial( {\n\t\t\tname: Loader.DEFAULT_MATERIAL_NAME,\n\t\t\tcolor: 0xff00ff\n\t\t} );\n\n\t\tfunction resolveMaterialBinding( keys, instanceMaterials ) {\n\n\t\t\tconst materials = [];\n\n\t\t\tfor ( let i = 0, l = keys.length; i < l; i ++ ) {\n\n\t\t\t\tconst id = instanceMaterials[ keys[ i ] ];\n\n\t\t\t\tif ( id === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Material with key %s not found. Apply fallback material.', keys[ i ] );\n\t\t\t\t\tmaterials.push( fallbackMaterial );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmaterials.push( getMaterial( id ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn materials;\n\n\t\t}\n\n\t\tfunction buildObjects( geometries, instanceMaterials ) {\n\n\t\t\tconst objects = [];\n\n\t\t\tfor ( const type in geometries ) {\n\n\t\t\t\tconst geometry = geometries[ type ];\n\n\t\t\t\tconst materials = resolveMaterialBinding( geometry.materialKeys, instanceMaterials );\n\n\t\t\t\t// handle case if no materials are defined\n\n\t\t\t\tif ( materials.length === 0 ) {\n\n\t\t\t\t\tif ( type === 'lines' || type === 'linestrips' ) {\n\n\t\t\t\t\t\tmaterials.push( new LineBasicMaterial() );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tmaterials.push( new MeshPhongMaterial() );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// Collada allows to use phong and lambert materials with lines. Replacing these cases with LineBasicMaterial.\n\n\t\t\t\tif ( type === 'lines' || type === 'linestrips' ) {\n\n\t\t\t\t\tfor ( let i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst material = materials[ i ];\n\n\t\t\t\t\t\tif ( material.isMeshPhongMaterial === true || material.isMeshLambertMaterial === true ) {\n\n\t\t\t\t\t\t\tconst lineMaterial = new LineBasicMaterial();\n\n\t\t\t\t\t\t\t// copy compatible properties\n\n\t\t\t\t\t\t\tlineMaterial.color.copy( material.color );\n\t\t\t\t\t\t\tlineMaterial.opacity = material.opacity;\n\t\t\t\t\t\t\tlineMaterial.transparent = material.transparent;\n\n\t\t\t\t\t\t\t// replace material\n\n\t\t\t\t\t\t\tmaterials[ i ] = lineMaterial;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// regard skinning\n\n\t\t\t\tconst skinning = ( geometry.data.attributes.skinIndex !== undefined );\n\n\t\t\t\t// choose between a single or multi materials (material array)\n\n\t\t\t\tconst material = ( materials.length === 1 ) ? materials[ 0 ] : materials;\n\n\t\t\t\t// now create a specific 3D object\n\n\t\t\t\tlet object;\n\n\t\t\t\tswitch ( type ) {\n\n\t\t\t\t\tcase 'lines':\n\t\t\t\t\t\tobject = new LineSegments( geometry.data, material );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'linestrips':\n\t\t\t\t\t\tobject = new Line( geometry.data, material );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'triangles':\n\t\t\t\t\tcase 'polylist':\n\t\t\t\t\t\tif ( skinning ) {\n\n\t\t\t\t\t\t\tobject = new SkinnedMesh( geometry.data, material );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tobject = new Mesh( geometry.data, material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tobjects.push( object );\n\n\t\t\t}\n\n\t\t\treturn objects;\n\n\t\t}\n\n\t\tfunction hasNode( id ) {\n\n\t\t\treturn library.nodes[ id ] !== undefined;\n\n\t\t}\n\n\t\tfunction getNode( id ) {\n\n\t\t\treturn getBuild( library.nodes[ id ], buildNode );\n\n\t\t}\n\n\t\t// visual scenes\n\n\t\tfunction parseVisualScene( xml ) {\n\n\t\t\tconst data = {\n\t\t\t\tname: xml.getAttribute( 'name' ),\n\t\t\t\tchildren: []\n\t\t\t};\n\n\t\t\tprepareNodes( xml );\n\n\t\t\tconst elements = getElementsByTagName( xml, 'node' );\n\n\t\t\tfor ( let i = 0; i < elements.length; i ++ ) {\n\n\t\t\t\tdata.children.push( parseNode( elements[ i ] ) );\n\n\t\t\t}\n\n\t\t\tlibrary.visualScenes[ xml.getAttribute( 'id' ) ] = data;\n\n\t\t}\n\n\t\tfunction buildVisualScene( data ) {\n\n\t\t\tconst group = new Group();\n\t\t\tgroup.name = data.name;\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tgroup.add( getNode( child.id ) );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t}\n\n\t\tfunction hasVisualScene( id ) {\n\n\t\t\treturn library.visualScenes[ id ] !== undefined;\n\n\t\t}\n\n\t\tfunction getVisualScene( id ) {\n\n\t\t\treturn getBuild( library.visualScenes[ id ], buildVisualScene );\n\n\t\t}\n\n\t\t// scenes\n\n\t\tfunction parseScene( xml ) {\n\n\t\t\tconst instance = getElementsByTagName( xml, 'instance_visual_scene' )[ 0 ];\n\t\t\treturn getVisualScene( parseId( instance.getAttribute( 'url' ) ) );\n\n\t\t}\n\n\t\tfunction setupAnimations() {\n\n\t\t\tconst clips = library.clips;\n\n\t\t\tif ( isEmpty( clips ) === true ) {\n\n\t\t\t\tif ( isEmpty( library.animations ) === false ) {\n\n\t\t\t\t\t// if there are animations but no clips, we create a default clip for playback\n\n\t\t\t\t\tconst tracks = [];\n\n\t\t\t\t\tfor ( const id in library.animations ) {\n\n\t\t\t\t\t\tconst animationTracks = getAnimation( id );\n\n\t\t\t\t\t\tfor ( let i = 0, l = animationTracks.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\ttracks.push( animationTracks[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tanimations.push( new AnimationClip( 'default', - 1, tracks ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( const id in clips ) {\n\n\t\t\t\t\tanimations.push( getAnimationClip( id ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// convert the parser error element into text with each child elements text\n\t\t// separated by new lines.\n\n\t\tfunction parserErrorToText( parserError ) {\n\n\t\t\tlet result = '';\n\t\t\tconst stack = [ parserError ];\n\n\t\t\twhile ( stack.length ) {\n\n\t\t\t\tconst node = stack.shift();\n\n\t\t\t\tif ( node.nodeType === Node.TEXT_NODE ) {\n\n\t\t\t\t\tresult += node.textContent;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tresult += '\\n';\n\t\t\t\t\tstack.push( ...node.childNodes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result.trim();\n\n\t\t}\n\n\t\tif ( text.length === 0 ) {\n\n\t\t\treturn { scene: new Scene() };\n\n\t\t}\n\n\t\tconst xml = new DOMParser().parseFromString( text, 'application/xml' );\n\n\t\tconst collada = getElementsByTagName( xml, 'COLLADA' )[ 0 ];\n\n\t\tconst parserError = xml.getElementsByTagName( 'parsererror' )[ 0 ];\n\t\tif ( parserError !== undefined ) {\n\n\t\t\t// Chrome will return parser error with a div in it\n\n\t\t\tconst errorElement = getElementsByTagName( parserError, 'div' )[ 0 ];\n\t\t\tlet errorText;\n\n\t\t\tif ( errorElement ) {\n\n\t\t\t\terrorText = errorElement.textContent;\n\n\t\t\t} else {\n\n\t\t\t\terrorText = parserErrorToText( parserError );\n\n\t\t\t}\n\n\t\t\tconsole.error( 'THREE.ColladaLoader: Failed to parse collada file.\\n', errorText );\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// metadata\n\n\t\tconst version = collada.getAttribute( 'version' );\n\t\tconsole.debug( 'THREE.ColladaLoader: File version', version );\n\n\t\tconst asset = parseAsset( getElementsByTagName( collada, 'asset' )[ 0 ] );\n\t\tconst textureLoader = new TextureLoader( this.manager );\n\t\ttextureLoader.setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );\n\n\t\tlet tgaLoader;\n\n\t\tif ( TGALoader ) {\n\n\t\t\ttgaLoader = new TGALoader( this.manager );\n\t\t\ttgaLoader.setPath( this.resourcePath || path );\n\n\t\t}\n\n\t\t//\n\n\t\tconst tempColor = new Color();\n\t\tconst animations = [];\n\t\tlet kinematics = {};\n\t\tlet count = 0;\n\n\t\t//\n\n\t\tconst library = {\n\t\t\tanimations: {},\n\t\t\tclips: {},\n\t\t\tcontrollers: {},\n\t\t\timages: {},\n\t\t\teffects: {},\n\t\t\tmaterials: {},\n\t\t\tcameras: {},\n\t\t\tlights: {},\n\t\t\tgeometries: {},\n\t\t\tnodes: {},\n\t\t\tvisualScenes: {},\n\t\t\tkinematicsModels: {},\n\t\t\tphysicsModels: {},\n\t\t\tkinematicsScenes: {}\n\t\t};\n\n\t\tparseLibrary( collada, 'library_animations', 'animation', parseAnimation );\n\t\tparseLibrary( collada, 'library_animation_clips', 'animation_clip', parseAnimationClip );\n\t\tparseLibrary( collada, 'library_controllers', 'controller', parseController );\n\t\tparseLibrary( collada, 'library_images', 'image', parseImage );\n\t\tparseLibrary( collada, 'library_effects', 'effect', parseEffect );\n\t\tparseLibrary( collada, 'library_materials', 'material', parseMaterial );\n\t\tparseLibrary( collada, 'library_cameras', 'camera', parseCamera );\n\t\tparseLibrary( collada, 'library_lights', 'light', parseLight );\n\t\tparseLibrary( collada, 'library_geometries', 'geometry', parseGeometry );\n\t\tparseLibrary( collada, 'library_nodes', 'node', parseNode );\n\t\tparseLibrary( collada, 'library_visual_scenes', 'visual_scene', parseVisualScene );\n\t\tparseLibrary( collada, 'library_kinematics_models', 'kinematics_model', parseKinematicsModel );\n\t\tparseLibrary( collada, 'library_physics_models', 'physics_model', parsePhysicsModel );\n\t\tparseLibrary( collada, 'scene', 'instance_kinematics_scene', parseKinematicsScene );\n\n\t\tbuildLibrary( library.animations, buildAnimation );\n\t\tbuildLibrary( library.clips, buildAnimationClip );\n\t\tbuildLibrary( library.controllers, buildController );\n\t\tbuildLibrary( library.images, buildImage );\n\t\tbuildLibrary( library.effects, buildEffect );\n\t\tbuildLibrary( library.materials, buildMaterial );\n\t\tbuildLibrary( library.cameras, buildCamera );\n\t\tbuildLibrary( library.lights, buildLight );\n\t\tbuildLibrary( library.geometries, buildGeometry );\n\t\tbuildLibrary( library.visualScenes, buildVisualScene );\n\n\t\tsetupAnimations();\n\t\tsetupKinematics();\n\n\t\tconst scene = parseScene( getElementsByTagName( collada, 'scene' )[ 0 ] );\n\t\tscene.animations = animations;\n\n\t\tif ( asset.upAxis === 'Z_UP' ) {\n\n\t\t\tconsole.warn( 'THREE.ColladaLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted, see #24289.' );\n\t\t\tscene.rotation.set( - Math.PI / 2, 0, 0 );\n\n\t\t}\n\n\t\tscene.scale.multiplyScalar( asset.unit );\n\n\t\treturn {\n\t\t\tget animations() {\n\n\t\t\t\tconsole.warn( 'THREE.ColladaLoader: Please access animations over scene.animations now.' );\n\t\t\t\treturn animations;\n\n\t\t\t},\n\t\t\tkinematics: kinematics,\n\t\t\tlibrary: library,\n\t\t\tscene: scene\n\t\t};\n\n\t}\n\n}\n\nexport { ColladaLoader };\n"], - "mappings": "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", + "mappings": "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", "names": ["header", "use_rle", "use_pal", "offset", "imageData", "xml", "text", "library", "animations", "technique", "count", "position", "vector", "matrix", "j", "root", "object", "material", "parserError"] } diff --git a/node_modules/.vite/deps/three_examples_jsm_loaders_STLLoader__js.js b/node_modules/.vite/deps/three_examples_jsm_loaders_STLLoader__js.js index a80075d..754b666 100644 --- a/node_modules/.vite/deps/three_examples_jsm_loaders_STLLoader__js.js +++ b/node_modules/.vite/deps/three_examples_jsm_loaders_STLLoader__js.js @@ -7,8 +7,7 @@ import { Loader, SRGBColorSpace, Vector3 -} from "./chunk-22FAE54D.js"; -import "./chunk-VUNV25KB.js"; +} from "./chunk-5P7KF7VS.js"; // node_modules/three/examples/jsm/loaders/STLLoader.js var STLLoader = class extends Loader { diff --git a/node_modules/.vite/deps/three_examples_jsm_loaders_STLLoader__js.js.map b/node_modules/.vite/deps/three_examples_jsm_loaders_STLLoader__js.js.map index 13d47c6..29fe0a6 100644 --- a/node_modules/.vite/deps/three_examples_jsm_loaders_STLLoader__js.js.map +++ b/node_modules/.vite/deps/three_examples_jsm_loaders_STLLoader__js.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../three/examples/jsm/loaders/STLLoader.js"], "sourcesContent": ["import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tColor,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tLoader,\n\tVector3,\n\tSRGBColorSpace\n} from 'three';\n\n/**\n * A loader for the STL format, as created by Solidworks and other CAD programs.\n *\n * Supports both binary and ASCII encoded files. The loader returns a non-indexed buffer geometry.\n *\n * Limitations:\n * - Binary decoding supports \"Magics\" color format (http://en.wikipedia.org/wiki/STL_(file_format)#Color_in_binary_STL).\n * - There is perhaps some question as to how valid it is to always assume little-endian-ness.\n * - ASCII decoding assumes file is UTF-8.\n *\n * ```js\n * const loader = new STLLoader();\n * const geometry = await loader.loadAsync( './models/stl/slotted_disk.stl' )\n * scene.add( new THREE.Mesh( geometry ) );\n * ```\n * For binary STLs geometry might contain colors for vertices. To use it:\n * ```js\n * // use the same code to load STL as above\n * if ( geometry.hasColors ) {\n * \tmaterial = new THREE.MeshPhongMaterial( { opacity: geometry.alpha, vertexColors: true } );\n * }\n * const mesh = new THREE.Mesh( geometry, material );\n * ```\n * For ASCII STLs containing multiple solids, each solid is assigned to a different group.\n * Groups can be used to assign a different color by defining an array of materials with the same length of\n * geometry.groups and passing it to the Mesh constructor:\n *\n * ```js\n * const materials = [];\n * const nGeometryGroups = geometry.groups.length;\n *\n * for ( let i = 0; i < nGeometryGroups; i ++ ) {\n * \tconst material = new THREE.MeshPhongMaterial( { color: colorMap[ i ], wireframe: false } );\n * \tmaterials.push( material );\n * }\n *\n * const mesh = new THREE.Mesh(geometry, materials);\n * ```\n *\n * @augments Loader\n * @three_import import { STLLoader } from 'three/addons/loaders/STLLoader.js';\n */\nclass STLLoader extends Loader {\n\n\t/**\n\t * Constructs a new STL loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\t/**\n\t * Starts loading from the given URL and passes the loaded STL asset\n\t * to the `onLoad()` callback.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.\n\t * @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( text ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/**\n\t * Parses the given STL data and returns the resulting geometry.\n\t *\n\t * @param {ArrayBuffer} data - The raw STL data as an array buffer.\n\t * @return {BufferGeometry} The parsed geometry.\n\t */\n\tparse( data ) {\n\n\t\tfunction isBinary( data ) {\n\n\t\t\tconst reader = new DataView( data );\n\t\t\tconst face_size = ( 32 / 8 * 3 ) + ( ( 32 / 8 * 3 ) * 3 ) + ( 16 / 8 );\n\t\t\tconst n_faces = reader.getUint32( 80, true );\n\t\t\tconst expect = 80 + ( 32 / 8 ) + ( n_faces * face_size );\n\n\t\t\tif ( expect === reader.byteLength ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\t// An ASCII STL data must begin with 'solid ' as the first six bytes.\n\t\t\t// However, ASCII STLs lacking the SPACE after the 'd' are known to be\n\t\t\t// plentiful. So, check the first 5 bytes for 'solid'.\n\n\t\t\t// Several encodings, such as UTF-8, precede the text with up to 5 bytes:\n\t\t\t// https://en.wikipedia.org/wiki/Byte_order_mark#Byte_order_marks_by_encoding\n\t\t\t// Search for \"solid\" to start anywhere after those prefixes.\n\n\t\t\t// US-ASCII ordinal values for 's', 'o', 'l', 'i', 'd'\n\n\t\t\tconst solid = [ 115, 111, 108, 105, 100 ];\n\n\t\t\tfor ( let off = 0; off < 5; off ++ ) {\n\n\t\t\t\t// If \"solid\" text is matched to the current offset, declare it to be an ASCII STL.\n\n\t\t\t\tif ( matchDataViewAt( solid, reader, off ) ) return false;\n\n\t\t\t}\n\n\t\t\t// Couldn't find \"solid\" text at the beginning; it is binary STL.\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction matchDataViewAt( query, reader, offset ) {\n\n\t\t\t// Check if each byte in query matches the corresponding byte from the current offset\n\n\t\t\tfor ( let i = 0, il = query.length; i < il; i ++ ) {\n\n\t\t\t\tif ( query[ i ] !== reader.getUint8( offset + i ) ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction parseBinary( data ) {\n\n\t\t\tconst reader = new DataView( data );\n\t\t\tconst faces = reader.getUint32( 80, true );\n\n\t\t\tlet r, g, b, hasColors = false, colors;\n\t\t\tlet defaultR, defaultG, defaultB, alpha;\n\n\t\t\t// process STL header\n\t\t\t// check for default color in header (\"COLOR=rgba\" sequence).\n\n\t\t\tfor ( let index = 0; index < 80 - 10; index ++ ) {\n\n\t\t\t\tif ( ( reader.getUint32( index, false ) == 0x434F4C4F /*COLO*/ ) &&\n\t\t\t\t\t( reader.getUint8( index + 4 ) == 0x52 /*'R'*/ ) &&\n\t\t\t\t\t( reader.getUint8( index + 5 ) == 0x3D /*'='*/ ) ) {\n\n\t\t\t\t\thasColors = true;\n\t\t\t\t\tcolors = new Float32Array( faces * 3 * 3 );\n\n\t\t\t\t\tdefaultR = reader.getUint8( index + 6 ) / 255;\n\t\t\t\t\tdefaultG = reader.getUint8( index + 7 ) / 255;\n\t\t\t\t\tdefaultB = reader.getUint8( index + 8 ) / 255;\n\t\t\t\t\talpha = reader.getUint8( index + 9 ) / 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst dataOffset = 84;\n\t\t\tconst faceLength = 12 * 4 + 2;\n\n\t\t\tconst geometry = new BufferGeometry();\n\n\t\t\tconst vertices = new Float32Array( faces * 3 * 3 );\n\t\t\tconst normals = new Float32Array( faces * 3 * 3 );\n\n\t\t\tconst color = new Color();\n\n\t\t\tfor ( let face = 0; face < faces; face ++ ) {\n\n\t\t\t\tconst start = dataOffset + face * faceLength;\n\t\t\t\tconst normalX = reader.getFloat32( start, true );\n\t\t\t\tconst normalY = reader.getFloat32( start + 4, true );\n\t\t\t\tconst normalZ = reader.getFloat32( start + 8, true );\n\n\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\tconst packedColor = reader.getUint16( start + 48, true );\n\n\t\t\t\t\tif ( ( packedColor & 0x8000 ) === 0 ) {\n\n\t\t\t\t\t\t// facet has its own unique color\n\n\t\t\t\t\t\tr = ( packedColor & 0x1F ) / 31;\n\t\t\t\t\t\tg = ( ( packedColor >> 5 ) & 0x1F ) / 31;\n\t\t\t\t\t\tb = ( ( packedColor >> 10 ) & 0x1F ) / 31;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tr = defaultR;\n\t\t\t\t\t\tg = defaultG;\n\t\t\t\t\t\tb = defaultB;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 1; i <= 3; i ++ ) {\n\n\t\t\t\t\tconst vertexstart = start + i * 12;\n\t\t\t\t\tconst componentIdx = ( face * 3 * 3 ) + ( ( i - 1 ) * 3 );\n\n\t\t\t\t\tvertices[ componentIdx ] = reader.getFloat32( vertexstart, true );\n\t\t\t\t\tvertices[ componentIdx + 1 ] = reader.getFloat32( vertexstart + 4, true );\n\t\t\t\t\tvertices[ componentIdx + 2 ] = reader.getFloat32( vertexstart + 8, true );\n\n\t\t\t\t\tnormals[ componentIdx ] = normalX;\n\t\t\t\t\tnormals[ componentIdx + 1 ] = normalY;\n\t\t\t\t\tnormals[ componentIdx + 2 ] = normalZ;\n\n\t\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\t\tcolor.setRGB( r, g, b, SRGBColorSpace );\n\n\t\t\t\t\t\tcolors[ componentIdx ] = color.r;\n\t\t\t\t\t\tcolors[ componentIdx + 1 ] = color.g;\n\t\t\t\t\t\tcolors[ componentIdx + 2 ] = color.b;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\t\t\tgeometry.setAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\n\t\t\tif ( hasColors ) {\n\n\t\t\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\t\t\t\tgeometry.hasColors = true;\n\t\t\t\tgeometry.alpha = alpha;\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction parseASCII( data ) {\n\n\t\t\tconst geometry = new BufferGeometry();\n\t\t\tconst patternSolid = /solid([\\s\\S]*?)endsolid/g;\n\t\t\tconst patternFace = /facet([\\s\\S]*?)endfacet/g;\n\t\t\tconst patternName = /solid\\s(.+)/;\n\t\t\tlet faceCounter = 0;\n\n\t\t\tconst patternFloat = /[\\s]+([+-]?(?:\\d*)(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/.source;\n\t\t\tconst patternVertex = new RegExp( 'vertex' + patternFloat + patternFloat + patternFloat, 'g' );\n\t\t\tconst patternNormal = new RegExp( 'normal' + patternFloat + patternFloat + patternFloat, 'g' );\n\n\t\t\tconst vertices = [];\n\t\t\tconst normals = [];\n\t\t\tconst groupNames = [];\n\n\t\t\tconst normal = new Vector3();\n\n\t\t\tlet result;\n\n\t\t\tlet groupCount = 0;\n\t\t\tlet startVertex = 0;\n\t\t\tlet endVertex = 0;\n\n\t\t\twhile ( ( result = patternSolid.exec( data ) ) !== null ) {\n\n\t\t\t\tstartVertex = endVertex;\n\n\t\t\t\tconst solid = result[ 0 ];\n\n\t\t\t\tconst name = ( result = patternName.exec( solid ) ) !== null ? result[ 1 ] : '';\n\t\t\t\tgroupNames.push( name );\n\n\t\t\t\twhile ( ( result = patternFace.exec( solid ) ) !== null ) {\n\n\t\t\t\t\tlet vertexCountPerFace = 0;\n\t\t\t\t\tlet normalCountPerFace = 0;\n\n\t\t\t\t\tconst text = result[ 0 ];\n\n\t\t\t\t\twhile ( ( result = patternNormal.exec( text ) ) !== null ) {\n\n\t\t\t\t\t\tnormal.x = parseFloat( result[ 1 ] );\n\t\t\t\t\t\tnormal.y = parseFloat( result[ 2 ] );\n\t\t\t\t\t\tnormal.z = parseFloat( result[ 3 ] );\n\t\t\t\t\t\tnormalCountPerFace ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\twhile ( ( result = patternVertex.exec( text ) ) !== null ) {\n\n\t\t\t\t\t\tvertices.push( parseFloat( result[ 1 ] ), parseFloat( result[ 2 ] ), parseFloat( result[ 3 ] ) );\n\t\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\t\t\t\t\t\tvertexCountPerFace ++;\n\t\t\t\t\t\tendVertex ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// every face have to own ONE valid normal\n\n\t\t\t\t\tif ( normalCountPerFace !== 1 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.STLLoader: Something isn\\'t right with the normal of face number ' + faceCounter );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// each face have to own THREE valid vertices\n\n\t\t\t\t\tif ( vertexCountPerFace !== 3 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.STLLoader: Something isn\\'t right with the vertices of face number ' + faceCounter );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfaceCounter ++;\n\n\t\t\t\t}\n\n\t\t\t\tconst start = startVertex;\n\t\t\t\tconst count = endVertex - startVertex;\n\n\t\t\t\tgeometry.userData.groupNames = groupNames;\n\n\t\t\t\tgeometry.addGroup( start, count, groupCount );\n\t\t\t\tgroupCount ++;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\t\tgeometry.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction ensureString( buffer ) {\n\n\t\t\tif ( typeof buffer !== 'string' ) {\n\n\t\t\t\treturn new TextDecoder().decode( buffer );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t}\n\n\t\tfunction ensureBinary( buffer ) {\n\n\t\t\tif ( typeof buffer === 'string' ) {\n\n\t\t\t\tconst array_buffer = new Uint8Array( buffer.length );\n\t\t\t\tfor ( let i = 0; i < buffer.length; i ++ ) {\n\n\t\t\t\t\tarray_buffer[ i ] = buffer.charCodeAt( i ) & 0xff; // implicitly assumes little-endian\n\n\t\t\t\t}\n\n\t\t\t\treturn array_buffer.buffer || array_buffer;\n\n\t\t\t} else {\n\n\t\t\t\treturn buffer;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// start\n\n\t\tconst binData = ensureBinary( data );\n\n\t\treturn isBinary( binData ) ? parseBinary( binData ) : parseASCII( ensureString( data ) );\n\n\t}\n\n}\n\nexport { STLLoader };\n"], - "mappings": "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", + "mappings": "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", "names": ["data"] } diff --git a/node_modules/@esbuild/linux-x64/README.md b/node_modules/@esbuild/linux-x64/README.md new file mode 100644 index 0000000..b2f1930 --- /dev/null +++ b/node_modules/@esbuild/linux-x64/README.md @@ -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. diff --git a/node_modules/@esbuild/linux-x64/bin/esbuild b/node_modules/@esbuild/linux-x64/bin/esbuild new file mode 100644 index 0000000..49cca62 Binary files /dev/null and b/node_modules/@esbuild/linux-x64/bin/esbuild differ diff --git a/node_modules/@esbuild/linux-x64/package.json b/node_modules/@esbuild/linux-x64/package.json new file mode 100644 index 0000000..cf36fa7 --- /dev/null +++ b/node_modules/@esbuild/linux-x64/package.json @@ -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" + ] +} diff --git a/node_modules/@rollup/rollup-linux-x64-gnu/README.md b/node_modules/@rollup/rollup-linux-x64-gnu/README.md new file mode 100644 index 0000000..cabe280 --- /dev/null +++ b/node_modules/@rollup/rollup-linux-x64-gnu/README.md @@ -0,0 +1,3 @@ +# `@rollup/rollup-linux-x64-gnu` + +This is the **x86_64-unknown-linux-gnu** binary for `rollup` diff --git a/node_modules/@rollup/rollup-linux-x64-gnu/package.json b/node_modules/@rollup/rollup-linux-x64-gnu/package.json new file mode 100644 index 0000000..34ad30d --- /dev/null +++ b/node_modules/@rollup/rollup-linux-x64-gnu/package.json @@ -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" +} \ No newline at end of file diff --git a/node_modules/@rollup/rollup-linux-x64-gnu/rollup.linux-x64-gnu.node b/node_modules/@rollup/rollup-linux-x64-gnu/rollup.linux-x64-gnu.node new file mode 100644 index 0000000..357f69d Binary files /dev/null and b/node_modules/@rollup/rollup-linux-x64-gnu/rollup.linux-x64-gnu.node differ diff --git a/node_modules/@rollup/rollup-linux-x64-musl/README.md b/node_modules/@rollup/rollup-linux-x64-musl/README.md new file mode 100644 index 0000000..5848a6c --- /dev/null +++ b/node_modules/@rollup/rollup-linux-x64-musl/README.md @@ -0,0 +1,3 @@ +# `@rollup/rollup-linux-x64-musl` + +This is the **x86_64-unknown-linux-musl** binary for `rollup` diff --git a/node_modules/@rollup/rollup-linux-x64-musl/package.json b/node_modules/@rollup/rollup-linux-x64-musl/package.json new file mode 100644 index 0000000..f531215 --- /dev/null +++ b/node_modules/@rollup/rollup-linux-x64-musl/package.json @@ -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" +} \ No newline at end of file diff --git a/node_modules/@rollup/rollup-linux-x64-musl/rollup.linux-x64-musl.node b/node_modules/@rollup/rollup-linux-x64-musl/rollup.linux-x64-musl.node new file mode 100644 index 0000000..d202915 Binary files /dev/null and b/node_modules/@rollup/rollup-linux-x64-musl/rollup.linux-x64-musl.node differ diff --git a/node_modules/@types/estree/README.md b/node_modules/@types/estree/README.md index 3a8c041..2af760b 100644 --- a/node_modules/@types/estree/README.md +++ b/node_modules/@types/estree/README.md @@ -1,15 +1,15 @@ -# Installation -> `npm install --save @types/estree` - -# Summary -This package contains type definitions for estree (https://github.com/estree/estree). - -# Details -Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree. - -### Additional Details - * Last updated: Fri, 06 Jun 2025 00:04:33 GMT - * Dependencies: none - -# Credits -These definitions were written by [RReverser](https://github.com/RReverser). +# Installation +> `npm install --save @types/estree` + +# Summary +This package contains type definitions for estree (https://github.com/estree/estree). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree. + +### Additional Details + * Last updated: Fri, 06 Jun 2025 00:04:33 GMT + * Dependencies: none + +# Credits +These definitions were written by [RReverser](https://github.com/RReverser). diff --git a/node_modules/rollup/dist/bin/rollup b/node_modules/rollup/dist/bin/rollup index 0736941..bb50091 100644 --- a/node_modules/rollup/dist/bin/rollup +++ b/node_modules/rollup/dist/bin/rollup @@ -1246,76 +1246,76 @@ yargsParser.camelCase = camelCase; yargsParser.decamelize = decamelize; yargsParser.looksLikeNumber = looksLikeNumber; -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -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 -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ - - -function __addDisposableResource(env, value, async) { - if (value !== null && value !== void 0) { - if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); - var dispose, inner; - if (async) { - if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); - dispose = value[Symbol.asyncDispose]; - } - if (dispose === void 0) { - if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); - dispose = value[Symbol.dispose]; - if (async) inner = dispose; - } - if (typeof dispose !== "function") throw new TypeError("Object not disposable."); - if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; - env.stack.push({ value: value, dispose: dispose, async: async }); - } - else if (async) { - env.stack.push({ async: true }); - } - return value; - -} - -var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { - var e = new Error(message); - return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; -}; - -function __disposeResources(env) { - function fail(e) { - env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; - env.hasError = true; - } - var r, s = 0; - function next() { - while (r = env.stack.pop()) { - try { - if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); - if (r.dispose) { - var result = r.dispose.call(r.value); - if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); - } - else s |= 1; - } - catch (e) { - fail(e); - } - } - if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); - if (env.hasError) throw env.error; - } - return next(); +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +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 +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + + +function __addDisposableResource(env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose, inner; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + if (async) inner = dispose; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; + +} + +var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +function __disposeResources(env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + var r, s = 0; + function next() { + while (r = env.stack.pop()) { + try { + if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); + if (r.dispose) { + var result = r.dispose.call(r.value); + if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + else s |= 1; + } + catch (e) { + fail(e); + } + } + if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); + if (env.hasError) throw env.error; + } + return next(); } const toZeroIfInfinity = value => Number.isFinite(value) ? value : 0; diff --git a/node_modules/vite/LICENSE.md b/node_modules/vite/LICENSE.md index ed5c856..a1a072f 100644 --- a/node_modules/vite/LICENSE.md +++ b/node_modules/vite/LICENSE.md @@ -31,7 +31,7 @@ BSD-2-Clause, CC0-1.0, ISC, MIT ## @jridgewell/gen-mapping, @jridgewell/remapping, @jridgewell/sourcemap-codec, @jridgewell/trace-mapping License: MIT 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 > @@ -84,20 +84,20 @@ Repository: https://github.com/jridgewell/resolve-uri ## @polka/compression License: MIT -Repository: lukeed/polka +Repository: https://github.com/lukeed/polka --------------------------------------- ## @polka/url License: MIT By: Luke Edwards -Repository: lukeed/polka +Repository: https://github.com/lukeed/polka --------------------------------------- ## @rolldown/pluginutils License: MIT -Repository: git+https://github.com/rolldown/rolldown.git +Repository: https://github.com/rolldown/rolldown > 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 License: MIT By: Johannes Stein -Repository: rollup/plugins +Repository: https://github.com/rollup/plugins License: MIT By: Rich Harris -Repository: rollup/plugins +Repository: https://github.com/rollup/plugins License: MIT By: LarsDenBakker -Repository: rollup/plugins +Repository: https://github.com/rollup/plugins License: MIT By: Rich Harris -Repository: rollup/plugins +Repository: https://github.com/rollup/plugins > The MIT License (MIT) > @@ -194,7 +194,7 @@ Repository: https://github.com/micromatch/anymatch ## artichokie License: MIT By: sapphi-red, Evan You -Repository: git+https://github.com/sapphi-red/artichokie.git +Repository: https://github.com/sapphi-red/artichokie > MIT License > @@ -224,7 +224,7 @@ Repository: git+https://github.com/sapphi-red/artichokie.git ## binary-extensions License: MIT By: Sindre Sorhus -Repository: sindresorhus/binary-extensions +Repository: https://github.com/sindresorhus/binary-extensions > MIT License > @@ -242,15 +242,15 @@ Repository: sindresorhus/binary-extensions ## braces, fill-range, is-number License: MIT By: Jon Schlinkert, Brian Woodward, Elan Shanker, Eugene Sharygin, hemanth.hm -Repository: micromatch/braces +Repository: https://github.com/micromatch/braces License: MIT By: Jon Schlinkert, Edo Rivai, Paul Miller, Rouven Weßling -Repository: jonschlinkert/fill-range +Repository: https://github.com/jonschlinkert/fill-range License: MIT By: Jon Schlinkert, Olsten Larck, Rouven Weßling -Repository: jonschlinkert/is-number +Repository: https://github.com/jonschlinkert/is-number > 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 License: MIT 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 > @@ -296,7 +296,7 @@ Repositories: sindresorhus/bundle-name, sindresorhus/default-browser, sindresorh ## cac License: MIT By: egoist -Repository: egoist/cac +Repository: https://github.com/egoist/cac > The MIT License (MIT) > @@ -325,7 +325,7 @@ Repository: egoist/cac ## chokidar License: MIT By: Paul Miller, Elan Shanker -Repository: git+https://github.com/paulmillr/chokidar.git +Repository: https://github.com/paulmillr/chokidar > The MIT License (MIT) > @@ -354,7 +354,7 @@ Repository: git+https://github.com/paulmillr/chokidar.git ## commondir, shell-quote License: MIT 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 > @@ -386,7 +386,7 @@ Repositories: http://github.com/substack/node-commondir.git, http://github.com/l ## connect License: MIT By: TJ Holowaychuk, Douglas Christopher Wilson, Jonathan Ong, Tim Caswell -Repository: senchalabs/connect +Repository: https://github.com/senchalabs/connect > (The MIT License) > @@ -419,7 +419,7 @@ Repository: senchalabs/connect ## convert-source-map License: MIT By: Thorsten Lorenz -Repository: git://github.com/thlorenz/convert-source-map.git +Repository: https://github.com/thlorenz/convert-source-map > Copyright 2013 Thorsten Lorenz. > All rights reserved. @@ -450,7 +450,7 @@ Repository: git://github.com/thlorenz/convert-source-map.git ## cors License: MIT By: Troy Goode -Repository: expressjs/cors +Repository: https://github.com/expressjs/cors > (The MIT License) > @@ -480,7 +480,7 @@ Repository: expressjs/cors ## cross-spawn License: MIT By: André Cruz -Repository: git@github.com:moxystudio/node-cross-spawn.git +Repository: https://github.com/moxystudio/node-cross-spawn > The MIT License (MIT) > @@ -509,7 +509,7 @@ Repository: git@github.com:moxystudio/node-cross-spawn.git ## cssesc License: MIT By: Mathias Bynens -Repository: https://github.com/mathiasbynens/cssesc.git +Repository: https://github.com/mathiasbynens/cssesc > Copyright Mathias Bynens > @@ -537,7 +537,7 @@ Repository: https://github.com/mathiasbynens/cssesc.git ## debug License: MIT 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) > @@ -563,7 +563,7 @@ Repository: git://github.com/debug-js/debug.git ## dotenv License: BSD-2-Clause -Repository: git://github.com/motdotla/dotenv.git +Repository: https://github.com/motdotla/dotenv > Copyright (c) 2015, Scott Motte > All rights reserved. @@ -625,7 +625,7 @@ Repository: https://github.com/motdotla/dotenv-expand ## ee-first License: MIT By: Jonathan Ong, Douglas Christopher Wilson -Repository: jonathanong/ee-first +Repository: https://github.com/jonathanong/ee-first > The MIT License (MIT) > @@ -654,7 +654,7 @@ Repository: jonathanong/ee-first ## encodeurl License: MIT By: Douglas Christopher Wilson -Repository: pillarjs/encodeurl +Repository: https://github.com/pillarjs/encodeurl > (The MIT License) > @@ -684,7 +684,7 @@ Repository: pillarjs/encodeurl ## entities License: BSD-2-Clause By: Felix Boehm -Repository: git://github.com/fb55/entities.git +Repository: https://github.com/fb55/entities > Copyright (c) Felix Böhm > All rights reserved. @@ -703,7 +703,7 @@ Repository: git://github.com/fb55/entities.git ## es-module-lexer License: MIT By: Guy Bedford -Repository: git+https://github.com/guybedford/es-module-lexer.git +Repository: https://github.com/guybedford/es-module-lexer > MIT License > ----------- @@ -720,7 +720,7 @@ Repository: git+https://github.com/guybedford/es-module-lexer.git ## escape-html License: MIT -Repository: component/escape-html +Repository: https://github.com/component/escape-html > (The MIT License) > @@ -767,7 +767,7 @@ Repository: https://github.com/Rich-Harris/estree-walker ## etag License: MIT By: Douglas Christopher Wilson, David Björklund -Repository: jshttp/etag +Repository: https://github.com/jshttp/etag > (The MIT License) > @@ -797,7 +797,7 @@ Repository: jshttp/etag ## finalhandler License: MIT By: Douglas Christopher Wilson -Repository: pillarjs/finalhandler +Repository: https://github.com/pillarjs/finalhandler > (The MIT License) > @@ -827,7 +827,7 @@ Repository: pillarjs/finalhandler ## follow-redirects License: MIT 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 2014–present Olivier Lalonde , James Talmage , Ruben Verborgh > @@ -853,7 +853,7 @@ Repository: git+ssh://git@github.com/follow-redirects/follow-redirects.git ## generic-names License: MIT 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) > @@ -882,7 +882,7 @@ Repository: git+https://github.com/css-modules/generic-names.git ## glob-parent License: ISC By: Gulp Team, Elan Shanker, Blaine Bublitz -Repository: gulpjs/glob-parent +Repository: https://github.com/gulpjs/glob-parent > The ISC License > @@ -905,7 +905,7 @@ Repository: gulpjs/glob-parent ## host-validation-middleware License: MIT 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 > @@ -934,7 +934,7 @@ Repository: git+https://github.com/sapphi-red/host-validation-middleware.git ## http-proxy-3 License: MIT 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 > @@ -964,7 +964,7 @@ Repository: https://github.com/sagemathinc/http-proxy-3.git ## icss-utils License: ISC By: Glen Maddern -Repository: git+https://github.com/css-modules/icss-utils.git +Repository: https://github.com/css-modules/icss-utils > ISC License (ISC) > Copyright 2018 Glen Maddern @@ -978,7 +978,7 @@ Repository: git+https://github.com/css-modules/icss-utils.git ## is-binary-path License: MIT By: Sindre Sorhus -Repository: sindresorhus/is-binary-path +Repository: https://github.com/sindresorhus/is-binary-path > MIT License > @@ -995,7 +995,7 @@ Repository: sindresorhus/is-binary-path ## is-extglob License: MIT By: Jon Schlinkert -Repository: jonschlinkert/is-extglob +Repository: https://github.com/jonschlinkert/is-extglob > The MIT License (MIT) > @@ -1024,7 +1024,7 @@ Repository: jonschlinkert/is-extglob ## is-glob License: MIT By: Jon Schlinkert, Brian Woodward, Daniel Perez -Repository: micromatch/is-glob +Repository: https://github.com/micromatch/is-glob > The MIT License (MIT) > @@ -1053,14 +1053,14 @@ Repository: micromatch/is-glob ## is-reference License: MIT By: Rich Harris -Repository: git+https://github.com/Rich-Harris/is-reference.git +Repository: https://github.com/Rich-Harris/is-reference --------------------------------------- ## isexe, which License: ISC 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 > @@ -1083,7 +1083,7 @@ Repositories: git+https://github.com/isaacs/isexe.git, git://github.com/isaacs/n ## js-tokens License: MIT By: Simon Lydell -Repository: lydell/js-tokens +Repository: https://github.com/lydell/js-tokens > The MIT License (MIT) > @@ -1112,7 +1112,7 @@ Repository: lydell/js-tokens ## launch-editor, launch-editor-middleware License: MIT 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) > @@ -1170,7 +1170,7 @@ Repository: https://github.com/antonk52/lilconfig ## loader-utils License: MIT 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 > @@ -1198,7 +1198,7 @@ Repository: https://github.com/webpack/loader-utils.git ## lodash.camelcase License: MIT By: John-David Dalton, Blaine Bublitz, Mathias Bynens -Repository: lodash/lodash +Repository: https://github.com/lodash/lodash > Copyright jQuery Foundation and other contributors > @@ -1253,7 +1253,7 @@ Repository: lodash/lodash ## magic-string License: MIT By: Rich Harris -Repository: https://github.com/rich-harris/magic-string.git +Repository: https://github.com/Rich-Harris/magic-string > Copyright 2018 Rich Harris > @@ -1267,7 +1267,7 @@ Repository: https://github.com/rich-harris/magic-string.git ## mlly, ufo License: MIT -Repositories: unjs/mlly, unjs/ufo +Repositories: https://github.com/unjs/mlly, https://github.com/unjs/ufo > MIT License > @@ -1296,7 +1296,7 @@ Repositories: unjs/mlly, unjs/ufo ## mrmime License: MIT By: Luke Edwards -Repository: lukeed/mrmime +Repository: https://github.com/lukeed/mrmime > The MIT License (MIT) > @@ -1324,7 +1324,7 @@ Repository: lukeed/mrmime ## ms License: MIT -Repository: vercel/ms +Repository: https://github.com/vercel/ms > The MIT License (MIT) > @@ -1353,7 +1353,7 @@ Repository: vercel/ms ## normalize-path License: MIT By: Jon Schlinkert, Blaine Bublitz -Repository: jonschlinkert/normalize-path +Repository: https://github.com/jonschlinkert/normalize-path > The MIT License (MIT) > @@ -1382,7 +1382,7 @@ Repository: jonschlinkert/normalize-path ## object-assign License: MIT By: Sindre Sorhus -Repository: sindresorhus/object-assign +Repository: https://github.com/sindresorhus/object-assign > The MIT License (MIT) > @@ -1411,7 +1411,7 @@ Repository: sindresorhus/object-assign ## on-finished License: MIT By: Douglas Christopher Wilson, Jonathan Ong -Repository: jshttp/on-finished +Repository: https://github.com/jshttp/on-finished > (The MIT License) > @@ -1442,7 +1442,7 @@ Repository: jshttp/on-finished ## parse5 License: MIT 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) > @@ -1469,7 +1469,7 @@ Repository: git://github.com/inikulin/parse5.git ## parseurl License: MIT By: Douglas Christopher Wilson, Jonathan Ong -Repository: pillarjs/parseurl +Repository: https://github.com/pillarjs/parseurl > (The MIT License) > @@ -1500,7 +1500,7 @@ Repository: pillarjs/parseurl ## path-key, shebang-regex License: MIT 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 > @@ -1516,7 +1516,7 @@ Repositories: sindresorhus/path-key, sindresorhus/shebang-regex ## periscopic License: MIT -Repository: Rich-Harris/periscopic +Repository: https://github.com/Rich-Harris/periscopic > Copyright (c) 2019 Rich Harris > @@ -1531,7 +1531,7 @@ Repository: Rich-Harris/periscopic ## picocolors License: ISC By: Alexey Raspopov -Repository: alexeyraspopov/picocolors +Repository: https://github.com/alexeyraspopov/picocolors > ISC License > @@ -1554,7 +1554,7 @@ Repository: alexeyraspopov/picocolors ## postcss-import License: MIT By: Maxime Thirouin -Repository: https://github.com/postcss/postcss-import.git +Repository: https://github.com/postcss/postcss-import > The MIT License (MIT) > @@ -1582,7 +1582,7 @@ Repository: https://github.com/postcss/postcss-import.git ## postcss-load-config License: MIT 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) > @@ -1610,7 +1610,7 @@ Repository: postcss/postcss-load-config ## postcss-modules License: MIT By: Alexander Madyankin -Repository: https://github.com/css-modules/postcss-modules.git +Repository: https://github.com/css-modules/postcss-modules > The MIT License (MIT) > @@ -1638,7 +1638,7 @@ Repository: https://github.com/css-modules/postcss-modules.git ## postcss-modules-extract-imports License: ISC 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 > @@ -1651,7 +1651,7 @@ Repository: https://github.com/css-modules/postcss-modules-extract-imports.git ## postcss-modules-local-by-default License: MIT 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) > @@ -1679,7 +1679,7 @@ Repository: https://github.com/css-modules/postcss-modules-local-by-default.git ## postcss-modules-scope License: ISC 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) > @@ -1694,7 +1694,7 @@ Repository: https://github.com/css-modules/postcss-modules-scope.git ## postcss-modules-values License: ISC 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) > @@ -1709,7 +1709,7 @@ Repository: git+https://github.com/css-modules/postcss-modules-values.git ## postcss-selector-parser License: MIT By: Ben Briggs, Chris Eppstein -Repository: postcss/postcss-selector-parser +Repository: https://github.com/postcss/postcss-selector-parser > Copyright (c) Ben Briggs (http://beneb.info) > @@ -1739,7 +1739,7 @@ Repository: postcss/postcss-selector-parser ## postcss-value-parser License: MIT By: Bogdan Chadkin -Repository: https://github.com/TrySound/postcss-value-parser.git +Repository: https://github.com/TrySound/postcss-value-parser > Copyright (c) Bogdan Chadkin > @@ -1769,7 +1769,7 @@ Repository: https://github.com/TrySound/postcss-value-parser.git ## readdirp License: MIT By: Thorsten Lorenz, Paul Miller -Repository: git://github.com/paulmillr/readdirp.git +Repository: https://github.com/paulmillr/readdirp > MIT License > @@ -1798,7 +1798,7 @@ Repository: git://github.com/paulmillr/readdirp.git ## resolve.exports, totalist License: MIT 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) > @@ -1827,7 +1827,7 @@ Repositories: lukeed/resolve.exports, lukeed/totalist ## shebang-command License: MIT By: Kevin Mårtensson -Repository: kevva/shebang-command +Repository: https://github.com/kevva/shebang-command > MIT License > @@ -1844,14 +1844,14 @@ Repository: kevva/shebang-command ## sirv License: MIT By: Luke Edwards -Repository: lukeed/sirv +Repository: https://github.com/lukeed/sirv --------------------------------------- ## statuses License: MIT By: Douglas Christopher Wilson, Jonathan Ong -Repository: jshttp/statuses +Repository: https://github.com/jshttp/statuses > The MIT License (MIT) > @@ -1881,14 +1881,14 @@ Repository: jshttp/statuses ## string-hash License: CC0-1.0 By: The Dark Sky Company -Repository: git://github.com/darkskyapp/string-hash.git +Repository: https://github.com/darkskyapp/string-hash --------------------------------------- ## strip-literal License: MIT By: Anthony Fu -Repository: git+https://github.com/antfu/strip-literal.git +Repository: https://github.com/antfu/strip-literal > MIT License > @@ -1917,7 +1917,7 @@ Repository: git+https://github.com/antfu/strip-literal.git ## to-regex-range License: MIT By: Jon Schlinkert, Rouven Weßling -Repository: micromatch/to-regex-range +Repository: https://github.com/micromatch/to-regex-range > The MIT License (MIT) > @@ -1946,7 +1946,7 @@ Repository: micromatch/to-regex-range ## tsconfck License: MIT By: dominikg -Repository: git+https://github.com/dominikg/tsconfck.git +Repository: https://github.com/dominikg/tsconfck > MIT License > @@ -2000,7 +2000,7 @@ Repository: git+https://github.com/dominikg/tsconfck.git ## unpipe License: MIT By: Douglas Christopher Wilson -Repository: stream-utils/unpipe +Repository: https://github.com/stream-utils/unpipe > (The MIT License) > @@ -2030,7 +2030,7 @@ Repository: stream-utils/unpipe ## util-deprecate License: MIT By: Nathan Rajlich -Repository: git://github.com/TooTallNate/util-deprecate.git +Repository: https://github.com/TooTallNate/util-deprecate > (The MIT License) > @@ -2062,7 +2062,7 @@ Repository: git://github.com/TooTallNate/util-deprecate.git ## utils-merge License: MIT By: Jared Hanson -Repository: git://github.com/jaredhanson/utils-merge.git +Repository: https://github.com/jaredhanson/utils-merge > The MIT License (MIT) > @@ -2090,7 +2090,7 @@ Repository: git://github.com/jaredhanson/utils-merge.git ## vary License: MIT By: Douglas Christopher Wilson -Repository: jshttp/vary +Repository: https://github.com/jshttp/vary > (The MIT License) > @@ -2120,7 +2120,7 @@ Repository: jshttp/vary ## ws License: MIT By: Einar Otto Stangvik -Repository: git+https://github.com/websockets/ws.git +Repository: https://github.com/websockets/ws > Copyright (c) 2011 Einar Otto Stangvik > Copyright (c) 2013 Arnout Kazemier and contributors diff --git a/node_modules/vite/dist/client/client.mjs b/node_modules/vite/dist/client/client.mjs index 23919b4..b6356b9 100644 --- a/node_modules/vite/dist/client/client.mjs +++ b/node_modules/vite/dist/client/client.mjs @@ -1,6 +1,6 @@ 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) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o$1) { @@ -11,7 +11,7 @@ function _typeof(o) { } //#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) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; @@ -24,14 +24,14 @@ function toPrimitive(t, r) { } //#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) { var i = toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } //#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) { return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, diff --git a/node_modules/vite/dist/node/chunks/build.js b/node_modules/vite/dist/node/chunks/build.js index 688ef38..a27da73 100644 --- a/node_modules/vite/dist/node/chunks/build.js +++ b/node_modules/vite/dist/node/chunks/build.js @@ -1,4 +1,4 @@ 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 }; \ No newline at end of file +export { BuildEnvironment, build, buildEnvironmentOptionsDefaults, builderOptionsDefaults, createBuilder, createToImportMetaURLBasedRelativeRuntime, injectEnvironmentToHooks, onRollupLog, resolveBuildEnvironmentOptions, resolveBuildOutputs, resolveBuildPlugins, resolveBuilderOptions, resolveLibFilename, resolveUserExternal, toOutputFilePathInCss, toOutputFilePathInHtml, toOutputFilePathInJS, toOutputFilePathWithoutRuntime }; \ No newline at end of file diff --git a/node_modules/vite/dist/node/chunks/build2.js b/node_modules/vite/dist/node/chunks/build2.js index 55a7109..225b126 100644 --- a/node_modules/vite/dist/node/chunks/build2.js +++ b/node_modules/vite/dist/node/chunks/build2.js @@ -1,5 +1,5 @@ -import { __commonJS, __require } from "./chunk.js"; -import { require_lib } from "./lib.js"; +import { n as __require, t as __commonJS } from "./chunk.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 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 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 }); + exports.default = void 0; var _icssUtils = require_src$4(); const importRegexp = /^:import\((.+)\)$/; 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 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 }); + exports.default = void 0; var _postcss$1 = _interopRequireDefault$21(__require("postcss")); var _path = _interopRequireDefault$21(__require("path")); 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 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.unesc = exports.stripComments = exports.getProp = exports.ensureObject = void 0; var _unesc$1 = _interopRequireDefault$20(require_unesc()); exports.unesc = _unesc$1["default"]; 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 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.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"; exports.TAG = TAG; var STRING = "string"; @@ -2372,6 +2376,7 @@ var require_selector = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/po //#endregion //#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 hasOwnProperty$1 = {}.hasOwnProperty; 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 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["default"] = void 0; exports.unescapeValue = unescapeValue; var _cssesc = _interopRequireDefault$9(require_cssesc()); 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 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.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; exports.ampersand = ampersand; 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 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.FIELDS = void 0; exports["default"] = tokenize; var t = _interopRequireWildcard$2(require_tokenTypes()); 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 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.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 _className = _interopRequireDefault$3(require_className()); 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 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.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0; exports.isContainer = isContainer; + exports.isIdentifier = void 0; exports.isNamespace = isNamespace; + exports.isNesting = void 0; exports.isNode = isNode; + exports.isPseudo = void 0; exports.isPseudoClass = isPseudoClass; exports.isPseudoElement = isPseudoElement; + exports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = void 0; var _types$1 = require_types(); 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); @@ -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 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 }); + exports.behaviours = void 0; exports.getDefaultPlugins = getDefaultPlugins; exports.getDefaultScopeBehaviour = getDefaultScopeBehaviour; exports.getScopedNameGenerator = getScopedNameGenerator; diff --git a/node_modules/vite/dist/node/chunks/chunk.js b/node_modules/vite/dist/node/chunks/chunk.js index 78c1032..9db0145 100644 --- a/node_modules/vite/dist/node/chunks/chunk.js +++ b/node_modules/vite/dist/node/chunks/chunk.js @@ -28,4 +28,4 @@ var __toDynamicImportESM = (isNodeMode) => (mod) => __toESM(mod.default, isNodeM var __require = /* @__PURE__ */ createRequire(import.meta.url); //#endregion -export { __commonJS, __require, __toDynamicImportESM, __toESM }; \ No newline at end of file +export { __toESM as i, __require as n, __toDynamicImportESM as r, __commonJS as t }; \ No newline at end of file diff --git a/node_modules/vite/dist/node/chunks/config.js b/node_modules/vite/dist/node/chunks/config.js index 618db72..bfc5dfa 100644 --- a/node_modules/vite/dist/node/chunks/config.js +++ b/node_modules/vite/dist/node/chunks/config.js @@ -1,5 +1,5 @@ -import { __commonJS, __require, __toDynamicImportESM, __toESM } from "./chunk.js"; -import { 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 } from "./logger.js"; +import { i as __toESM, n as __require, r as __toDynamicImportESM, t as __commonJS } from "./chunk.js"; +import { A as OPTIMIZABLE_ENTRY_RE, C as ERR_FILE_NOT_FOUND_IN_OPTIMIZED_DEP_DIR, D as JS_TYPES_RE, E as FS_PREFIX, F as defaultAllowedOrigins, I as loopbackHosts, L as wildcardHosts, M as SPECIAL_QUERY_RE, N as VERSION, O as KNOWN_ASSET_TYPES, P as VITE_PACKAGE_DIR, R as require_picocolors, S as ENV_PUBLIC_PATH, T as ESBUILD_BASELINE_WIDELY_AVAILABLE_TARGET, _ as DEFAULT_SERVER_CONDITIONS, a as CLIENT_ENTRY, b as DEV_PROD_CONDITION, c as DEFAULT_ASSETS_INLINE_LIMIT, d as DEFAULT_CLIENT_MAIN_FIELDS, f as DEFAULT_CONFIG_FILES, g as DEFAULT_PREVIEW_PORT, h as DEFAULT_EXTERNAL_CONDITIONS, i as CLIENT_DIR, j as ROLLUP_HOOKS, k as METADATA_FILENAME, l as DEFAULT_ASSETS_RE, m as DEFAULT_EXTENSIONS, n as createLogger, o as CLIENT_PUBLIC_PATH, p as DEFAULT_DEV_PORT, r as printServerUrls, s as CSS_LANGS_RE, t as LogLevels, u as DEFAULT_CLIENT_CONDITIONS, v as DEFAULT_SERVER_MAIN_FIELDS, w as ERR_OPTIMIZE_DEPS_PROCESSING_ERROR, x as ENV_ENTRY, y as DEP_VERSION_RE } from "./logger.js"; import { builtinModules, createRequire } from "node:module"; import { parseAst, parseAstAsync } from "rollup/parseAst"; import * as fs$1 from "node:fs"; @@ -23,11 +23,12 @@ import { gzip } from "node:zlib"; import readline from "node:readline"; import { createRequire as createRequire$1 } from "module"; import { MessageChannel, Worker } from "node:worker_threads"; -import { Buffer as Buffer$1 } from "node:buffer"; -import { escapePath, glob, globSync, isDynamicPattern } from "tinyglobby"; +import isModuleSyncConditionEnabled from "#module-sync-enabled"; import assert from "node:assert"; import process$1 from "node:process"; import v8 from "node:v8"; +import { escapePath, glob, globSync, isDynamicPattern } from "tinyglobby"; +import { Buffer as Buffer$1 } from "node:buffer"; import { EventEmitter } from "node:events"; import { STATUS_CODES, createServer, get } from "node:http"; import { createServer as createServer$1, get as get$1 } from "node:https"; @@ -106,6 +107,68 @@ function promiseWithResolvers() { }; } +//#endregion +//#region src/module-runner/importMetaResolver.ts +const customizationHookNamespace = "vite-module-runner:import-meta-resolve/v1/"; +const customizationHooksModule = ` + +export async function resolve(specifier, context, nextResolve) { + if (specifier.startsWith(${JSON.stringify(customizationHookNamespace)})) { + const data = specifier.slice(${JSON.stringify(customizationHookNamespace)}.length) + const [parsedSpecifier, parsedImporter] = JSON.parse(data) + specifier = parsedSpecifier + context.parentURL = parsedImporter + } + return nextResolve(specifier, context) +} + +`; +function customizationHookResolve(specifier, context, nextResolve) { + if (specifier.startsWith(customizationHookNamespace)) { + const data = specifier.slice(42); + const [parsedSpecifier, parsedImporter] = JSON.parse(data); + specifier = parsedSpecifier; + context.parentURL = parsedImporter; + } + return nextResolve(specifier, context); +} +async function createImportMetaResolver() { + let module$1; + try { + module$1 = (await import("node:module")).Module; + } catch { + return; + } + if (!module$1) return; + if (module$1.registerHooks) { + module$1.registerHooks({ resolve: customizationHookResolve }); + return importMetaResolveWithCustomHook; + } + if (!module$1.register) return; + try { + const hookModuleContent = `data:text/javascript,${encodeURI(customizationHooksModule)}`; + module$1.register(hookModuleContent); + } catch (e$1) { + if ("code" in e$1 && e$1.code === "ERR_NETWORK_IMPORT_DISALLOWED") return; + throw e$1; + } + return importMetaResolveWithCustomHook; +} +function importMetaResolveWithCustomHook(specifier, importer) { + return import.meta.resolve(`${customizationHookNamespace}${JSON.stringify([specifier, importer])}`); +} +const importMetaResolveWithCustomHookString = ` + + (() => { + const resolve = 'resolve' + return (specifier, importer) => + import.meta[resolve]( + \`${customizationHookNamespace}\${JSON.stringify([specifier, importer])}\`, + ) + })() + +`; + //#endregion //#region ../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs var comma = ",".charCodeAt(0); @@ -1789,6 +1852,14 @@ const dataToEsm = function dataToEsm$1(data, options$1 = {}) { return `${namedExportCode}${arbitraryExportCode}${defaultExportCode}`; }; +//#endregion +//#region src/shared/builtin.ts +function createIsBuiltin(builtins) { + const plainBuiltinsSet = new Set(builtins.filter((builtin) => typeof builtin === "string")); + const regexBuiltins = builtins.filter((builtin) => typeof builtin !== "string"); + return (id) => plainBuiltinsSet.has(id) || regexBuiltins.some((regexp) => regexp.test(id)); +} + //#endregion //#region src/node/packages.ts let pnp; @@ -2030,11 +2101,6 @@ function isBuiltin(builtins, id) { } return isBuiltin$1(id); } -function createIsBuiltin(builtins) { - const plainBuiltinsSet = new Set(builtins.filter((builtin) => typeof builtin === "string")); - const regexBuiltins = builtins.filter((builtin) => typeof builtin !== "string"); - return (id) => plainBuiltinsSet.has(id) || regexBuiltins.some((regexp) => regexp.test(id)); -} const nodeLikeBuiltins = [ ...nodeBuiltins, /* @__PURE__ */ new RegExp(`^${NODE_BUILTIN_NAMESPACE}`), @@ -2059,10 +2125,6 @@ function isOptimizable(id, optimizeDeps$1) { } const bareImportRE = /^(?![a-zA-Z]:)[\w@](?!.*:\/\/)/; const deepImportRE = /^([^@][^/]*)\/|^(@[^/]+\/[^/]+)\//; -const _require$1 = createRequire( - /** #__KEEP__ */ - import.meta.url -); const _dirname = path.dirname(fileURLToPath( /** #__KEEP__ */ import.meta.url @@ -2535,6 +2597,17 @@ async function resolveHostname(optionsHost) { name }; } +function extractHostnamesFromCerts(certs) { + const certList = certs ? arraify(certs) : []; + if (certList.length === 0) return []; + return unique(certList.map((cert) => { + try { + return new crypto.X509Certificate(cert); + } catch { + return null; + } + }).flatMap((cert) => cert?.subjectAltName ? extractHostnamesFromSubjectAltName(cert.subjectAltName) : [])); +} function resolveServerUrls(server, options$1, hostname, httpsOptions, config$2) { const address = server.address(); const isAddressInfo = (x) => x?.address; @@ -2560,11 +2633,10 @@ function resolveServerUrls(server, options$1, hostname, httpsOptions, config$2) if (detail.address.includes("127.0.0.1")) local.push(url$3); else network.push(url$3); }); - const cert = httpsOptions?.cert && !Array.isArray(httpsOptions.cert) ? new crypto.X509Certificate(httpsOptions.cert) : void 0; - const hostnameFromCert = cert?.subjectAltName ? extractHostnamesFromSubjectAltName(cert.subjectAltName) : []; - if (hostnameFromCert.length > 0) { + const hostnamesFromCert = extractHostnamesFromCerts(httpsOptions?.cert); + if (hostnamesFromCert.length > 0) { const existings = new Set([...local, ...network]); - local.push(...hostnameFromCert.map((hostname$1) => `https://${hostname$1}:${port}${base}`).filter((url$3) => !existings.has(url$3))); + local.push(...hostnamesFromCert.map((hostname$1) => `${protocol}://${hostname$1}:${port}${base}`).filter((url$3) => !existings.has(url$3))); } return { local, @@ -2609,14 +2681,6 @@ function getHash(text, length = 8) { if (length <= 64) return h$2; return h$2.padEnd(length, "_"); } -const requireResolveFromRootWithFallback = (root, id) => { - if (!(resolvePackageData(id, root) || resolvePackageData(id, _dirname))) { - const error$1 = /* @__PURE__ */ new Error(`${JSON.stringify(id)} not found.`); - error$1.code = "MODULE_NOT_FOUND"; - throw error$1; - } - return _require$1.resolve(id, { paths: [root, _dirname] }); -}; function emptyCssComments(raw) { return raw.replace(multilineCommentsRE, blankReplacer); } @@ -2972,7 +3036,7 @@ var require_commondir = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/c }) }); //#endregion -//#region ../../node_modules/.pnpm/magic-string@0.30.19/node_modules/magic-string/dist/magic-string.es.mjs +//#region ../../node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.mjs var BitSet = class BitSet { constructor(arg) { this.bits = arg instanceof BitSet ? arg.bits.slice() : []; @@ -6300,7 +6364,6 @@ function esbuildPlugin(config$2) { const filter$1 = createFilter(include || /\.(m?ts|[jt]sx)$/, exclude || /\.js$/); const transformOptions = { target: "esnext", - charset: "utf8", ...esbuildTransformOptions, minify: false, minifyIdentifiers: false, @@ -6371,7 +6434,6 @@ function resolveEsbuildTranspileOptions(config$2, format$3) { const isEsLibBuild = config$2.build.lib && format$3 === "es"; const esbuildOptions = config$2.esbuild || {}; const options$1 = { - charset: "utf8", ...esbuildOptions, loader: "js", target: target || void 0, @@ -6799,927 +6861,509 @@ var WorkerWithFallback = class { }; //#endregion -//#region src/node/plugins/terser.ts -let terserPath; -const loadTerserPath = (root) => { - if (terserPath) return terserPath; - try { - terserPath = requireResolveFromRootWithFallback(root, "terser"); - } catch (e$1) { - if (e$1.code === "MODULE_NOT_FOUND") throw new Error("terser not found. Since Vite v3, terser has become an optional dependency. You need to install it."); +//#region ../../node_modules/.pnpm/resolve.exports@2.0.3/node_modules/resolve.exports/dist/index.mjs +function e(e$1, n$2, r$1) { + throw new Error(r$1 ? `No known conditions for "${n$2}" specifier in "${e$1}" package` : `Missing "${n$2}" specifier in "${e$1}" package`); +} +function n(n$2, i$1, o$1, f$1) { + let s$2, u, l = r(n$2, o$1), c = function(e$1) { + let n$3 = new Set(["default", ...e$1.conditions || []]); + return e$1.unsafe || n$3.add(e$1.require ? "require" : "import"), e$1.unsafe || n$3.add(e$1.browser ? "browser" : "node"), n$3; + }(f$1 || {}), a = i$1[l]; + if (void 0 === a) { + let e$1, n$3, r$1, t$1; + for (t$1 in i$1) n$3 && t$1.length < n$3.length || ("/" === t$1[t$1.length - 1] && l.startsWith(t$1) ? (u = l.substring(t$1.length), n$3 = t$1) : t$1.length > 1 && (r$1 = t$1.indexOf("*", 1), ~r$1 && (e$1 = RegExp("^" + t$1.substring(0, r$1) + "(.*)" + t$1.substring(1 + r$1) + "$").exec(l), e$1 && e$1[1] && (u = e$1[1], n$3 = t$1)))); + a = i$1[n$3]; + } + return a || e(n$2, l), s$2 = t(a, c), s$2 || e(n$2, l, 1), u && function(e$1, n$3) { + let r$1, t$1 = 0, i$2 = e$1.length, o$2 = /[*]/g, f$2 = /[/]$/; + for (; t$1 < i$2; t$1++) e$1[t$1] = o$2.test(r$1 = e$1[t$1]) ? r$1.replace(o$2, n$3) : f$2.test(r$1) ? r$1 + n$3 : r$1; + }(s$2, u), s$2; +} +function r(e$1, n$2, r$1) { + if (e$1 === n$2 || "." === n$2) return "."; + let t$1 = e$1 + "/", i$1 = t$1.length, o$1 = n$2.slice(0, i$1) === t$1, f$1 = o$1 ? n$2.slice(i$1) : n$2; + return "#" === f$1[0] ? f$1 : o$1 || !r$1 ? "./" === f$1.slice(0, 2) ? f$1 : "./" + f$1 : f$1; +} +function t(e$1, n$2, r$1) { + if (e$1) { + if ("string" == typeof e$1) return r$1 && r$1.add(e$1), [e$1]; + let i$1, o$1; + if (Array.isArray(e$1)) { + for (o$1 = r$1 || /* @__PURE__ */ new Set(), i$1 = 0; i$1 < e$1.length; i$1++) t(e$1[i$1], n$2, o$1); + if (!r$1 && o$1.size) return [...o$1]; + } else for (i$1 in e$1) if (n$2.has(i$1)) return t(e$1[i$1], n$2, r$1); + } +} +function o(e$1, r$1, t$1) { + let i$1, o$1 = e$1.exports; + if (o$1) { + if ("string" == typeof o$1) o$1 = { ".": o$1 }; + else for (i$1 in o$1) { + "." !== i$1[0] && (o$1 = { ".": o$1 }); + break; + } + return n(e$1.name, o$1, r$1 || ".", t$1); + } +} +function f(e$1, r$1, t$1) { + if (e$1.imports) return n(e$1.name, e$1.imports, r$1, t$1); +} + +//#endregion +//#region ../../node_modules/.pnpm/ufo@1.6.1/node_modules/ufo/dist/index.mjs +const HASH_RE = /#/g; +const AMPERSAND_RE = /&/g; +const SLASH_RE = /\//g; +const EQUAL_RE = /=/g; +const PLUS_RE = /\+/g; +const ENC_CARET_RE = /%5e/gi; +const ENC_BACKTICK_RE = /%60/gi; +const ENC_PIPE_RE = /%7c/gi; +const ENC_SPACE_RE = /%20/gi; +function encode(text) { + return encodeURI("" + text).replace(ENC_PIPE_RE, "|"); +} +function encodeQueryValue(input) { + return encode(typeof input === "string" ? input : JSON.stringify(input)).replace(PLUS_RE, "%2B").replace(ENC_SPACE_RE, "+").replace(HASH_RE, "%23").replace(AMPERSAND_RE, "%26").replace(ENC_BACKTICK_RE, "`").replace(ENC_CARET_RE, "^").replace(SLASH_RE, "%2F"); +} +function encodeQueryKey(text) { + return encodeQueryValue(text).replace(EQUAL_RE, "%3D"); +} +function encodeQueryItem(key, value$1) { + if (typeof value$1 === "number" || typeof value$1 === "boolean") value$1 = String(value$1); + if (!value$1) return encodeQueryKey(key); + if (Array.isArray(value$1)) return value$1.map((_value) => `${encodeQueryKey(key)}=${encodeQueryValue(_value)}`).join("&"); + return `${encodeQueryKey(key)}=${encodeQueryValue(value$1)}`; +} +function stringifyQuery(query) { + return Object.keys(query).filter((k) => query[k] !== void 0).map((k) => encodeQueryItem(k, query[k])).filter(Boolean).join("&"); +} +const protocolRelative = Symbol.for("ufo:protocolRelative"); + +//#endregion +//#region ../../node_modules/.pnpm/mlly@1.8.0/node_modules/mlly/dist/index.mjs +const BUILTIN_MODULES = new Set(builtinModules); +function clearImports(imports) { + return (imports || "").replace(/\/\/[^\n]*\n|\/\*.*\*\//g, "").replace(/\s+/g, " "); +} +function getImportNames(cleanedImports) { + const topLevelImports = cleanedImports.replace(/{[^}]*}/, ""); + return { + namespacedImport: topLevelImports.match(/\* as \s*(\S*)/)?.[1], + defaultImport: topLevelImports.split(",").find((index) => !/[*{}]/.test(index))?.trim() || void 0 + }; +} +/** +* @typedef ErrnoExceptionFields +* @property {number | undefined} [errnode] +* @property {string | undefined} [code] +* @property {string | undefined} [path] +* @property {string | undefined} [syscall] +* @property {string | undefined} [url] +* +* @typedef {Error & ErrnoExceptionFields} ErrnoException +*/ +const own$1 = {}.hasOwnProperty; +const classRegExp = /^([A-Z][a-z\d]*)+$/; +const kTypes = new Set([ + "string", + "function", + "number", + "object", + "Function", + "Object", + "boolean", + "bigint", + "symbol" +]); +const codes$1 = {}; +/** +* Create a list string in the form like 'A and B' or 'A, B, ..., and Z'. +* We cannot use Intl.ListFormat because it's not available in +* --without-intl builds. +* +* @param {Array} array +* An array of strings. +* @param {string} [type] +* The list type to be inserted before the last element. +* @returns {string} +*/ +function formatList(array, type = "and") { + return array.length < 3 ? array.join(` ${type} `) : `${array.slice(0, -1).join(", ")}, ${type} ${array[array.length - 1]}`; +} +/** @type {Map} */ +const messages = /* @__PURE__ */ new Map(); +const nodeInternalPrefix = "__node_internal_"; +/** @type {number} */ +let userStackTraceLimit; +codes$1.ERR_INVALID_ARG_TYPE = createError( + "ERR_INVALID_ARG_TYPE", + /** + * @param {string} name + * @param {Array | string} expected + * @param {unknown} actual + */ + (name, expected, actual) => { + assert(typeof name === "string", "'name' must be a string"); + if (!Array.isArray(expected)) expected = [expected]; + let message = "The "; + if (name.endsWith(" argument")) message += `${name} `; else { - const message = /* @__PURE__ */ new Error(`terser failed to load:\n${e$1.message}`); - message.stack = e$1.stack + "\n" + message.stack; - throw message; + const type = name.includes(".") ? "property" : "argument"; + message += `"${name}" ${type} `; } - } - return terserPath; -}; -function terserPlugin(config$2) { - const { maxWorkers,...terserOptions } = config$2.build.terserOptions; - const makeWorker = () => new WorkerWithFallback(() => async (terserPath$1, code, options$1) => { - const terser = (await import(terserPath$1)).default; - try { - return await terser.minify(code, options$1); - } catch (e$1) { - throw { - stack: e$1.stack, - ...e$1 - }; + message += "must be "; + /** @type {Array} */ + const types = []; + /** @type {Array} */ + const instances = []; + /** @type {Array} */ + const other = []; + for (const value$1 of expected) { + assert(typeof value$1 === "string", "All expected entries have to be of type string"); + if (kTypes.has(value$1)) types.push(value$1.toLowerCase()); + else if (classRegExp.exec(value$1) === null) { + assert(value$1 !== "object", "The value \"object\" should be written as \"Object\""); + other.push(value$1); + } else instances.push(value$1); } - }, { - shouldUseFake(_terserPath, _code, options$1) { - return !!(typeof options$1.mangle === "object" && (options$1.mangle.nth_identifier?.get || typeof options$1.mangle.properties === "object" && options$1.mangle.properties.nth_identifier?.get) || typeof options$1.format?.comments === "function" || typeof options$1.output?.comments === "function" || options$1.nameCache); - }, - max: maxWorkers - }); - let worker; - return { - name: "vite:terser", - applyToEnvironment(environment) { - return !!environment.config.build.minify; - }, - async renderChunk(code, chunk, outputOptions) { - if (config$2.build.minify !== "terser" && !outputOptions.__vite_force_terser__) return null; - if (config$2.build.lib && outputOptions.format === "es") return null; - worker ||= makeWorker(); - const terserPath$1 = pathToFileURL(loadTerserPath(config$2.root)).href; - try { - const res = await worker.run(terserPath$1, code, { - safari10: true, - ...terserOptions, - sourceMap: !!outputOptions.sourcemap, - module: outputOptions.format.startsWith("es"), - toplevel: outputOptions.format === "cjs" - }); - return { - code: res.code, - map: res.map - }; - } catch (e$1) { - if (e$1.line !== void 0 && e$1.col !== void 0) e$1.loc = { - file: chunk.fileName, - line: e$1.line, - column: e$1.col - }; - if (e$1.pos !== void 0) e$1.frame = generateCodeFrame(code, e$1.pos); - throw e$1; + if (instances.length > 0) { + const pos = types.indexOf("object"); + if (pos !== -1) { + types.slice(pos, 1); + instances.push("Object"); } - }, - closeBundle() { - worker?.stop(); } - }; -} - -//#endregion -//#region ../../node_modules/.pnpm/mrmime@2.0.1/node_modules/mrmime/index.mjs -const mimes = { - "3g2": "video/3gpp2", - "3gp": "video/3gpp", - "3gpp": "video/3gpp", - "3mf": "model/3mf", - "aac": "audio/aac", - "ac": "application/pkix-attr-cert", - "adp": "audio/adpcm", - "adts": "audio/aac", - "ai": "application/postscript", - "aml": "application/automationml-aml+xml", - "amlx": "application/automationml-amlx+zip", - "amr": "audio/amr", - "apng": "image/apng", - "appcache": "text/cache-manifest", - "appinstaller": "application/appinstaller", - "appx": "application/appx", - "appxbundle": "application/appxbundle", - "asc": "application/pgp-keys", - "atom": "application/atom+xml", - "atomcat": "application/atomcat+xml", - "atomdeleted": "application/atomdeleted+xml", - "atomsvc": "application/atomsvc+xml", - "au": "audio/basic", - "avci": "image/avci", - "avcs": "image/avcs", - "avif": "image/avif", - "aw": "application/applixware", - "bdoc": "application/bdoc", - "bin": "application/octet-stream", - "bmp": "image/bmp", - "bpk": "application/octet-stream", - "btf": "image/prs.btif", - "btif": "image/prs.btif", - "buffer": "application/octet-stream", - "ccxml": "application/ccxml+xml", - "cdfx": "application/cdfx+xml", - "cdmia": "application/cdmi-capability", - "cdmic": "application/cdmi-container", - "cdmid": "application/cdmi-domain", - "cdmio": "application/cdmi-object", - "cdmiq": "application/cdmi-queue", - "cer": "application/pkix-cert", - "cgm": "image/cgm", - "cjs": "application/node", - "class": "application/java-vm", - "coffee": "text/coffeescript", - "conf": "text/plain", - "cpl": "application/cpl+xml", - "cpt": "application/mac-compactpro", - "crl": "application/pkix-crl", - "css": "text/css", - "csv": "text/csv", - "cu": "application/cu-seeme", - "cwl": "application/cwl", - "cww": "application/prs.cww", - "davmount": "application/davmount+xml", - "dbk": "application/docbook+xml", - "deb": "application/octet-stream", - "def": "text/plain", - "deploy": "application/octet-stream", - "dib": "image/bmp", - "disposition-notification": "message/disposition-notification", - "dist": "application/octet-stream", - "distz": "application/octet-stream", - "dll": "application/octet-stream", - "dmg": "application/octet-stream", - "dms": "application/octet-stream", - "doc": "application/msword", - "dot": "application/msword", - "dpx": "image/dpx", - "drle": "image/dicom-rle", - "dsc": "text/prs.lines.tag", - "dssc": "application/dssc+der", - "dtd": "application/xml-dtd", - "dump": "application/octet-stream", - "dwd": "application/atsc-dwd+xml", - "ear": "application/java-archive", - "ecma": "application/ecmascript", - "elc": "application/octet-stream", - "emf": "image/emf", - "eml": "message/rfc822", - "emma": "application/emma+xml", - "emotionml": "application/emotionml+xml", - "eps": "application/postscript", - "epub": "application/epub+zip", - "exe": "application/octet-stream", - "exi": "application/exi", - "exp": "application/express", - "exr": "image/aces", - "ez": "application/andrew-inset", - "fdf": "application/fdf", - "fdt": "application/fdt+xml", - "fits": "image/fits", - "g3": "image/g3fax", - "gbr": "application/rpki-ghostbusters", - "geojson": "application/geo+json", - "gif": "image/gif", - "glb": "model/gltf-binary", - "gltf": "model/gltf+json", - "gml": "application/gml+xml", - "gpx": "application/gpx+xml", - "gram": "application/srgs", - "grxml": "application/srgs+xml", - "gxf": "application/gxf", - "gz": "application/gzip", - "h261": "video/h261", - "h263": "video/h263", - "h264": "video/h264", - "heic": "image/heic", - "heics": "image/heic-sequence", - "heif": "image/heif", - "heifs": "image/heif-sequence", - "hej2": "image/hej2k", - "held": "application/atsc-held+xml", - "hjson": "application/hjson", - "hlp": "application/winhlp", - "hqx": "application/mac-binhex40", - "hsj2": "image/hsj2", - "htm": "text/html", - "html": "text/html", - "ics": "text/calendar", - "ief": "image/ief", - "ifb": "text/calendar", - "iges": "model/iges", - "igs": "model/iges", - "img": "application/octet-stream", - "in": "text/plain", - "ini": "text/plain", - "ink": "application/inkml+xml", - "inkml": "application/inkml+xml", - "ipfix": "application/ipfix", - "iso": "application/octet-stream", - "its": "application/its+xml", - "jade": "text/jade", - "jar": "application/java-archive", - "jhc": "image/jphc", - "jls": "image/jls", - "jp2": "image/jp2", - "jpe": "image/jpeg", - "jpeg": "image/jpeg", - "jpf": "image/jpx", - "jpg": "image/jpeg", - "jpg2": "image/jp2", - "jpgm": "image/jpm", - "jpgv": "video/jpeg", - "jph": "image/jph", - "jpm": "image/jpm", - "jpx": "image/jpx", - "js": "text/javascript", - "json": "application/json", - "json5": "application/json5", - "jsonld": "application/ld+json", - "jsonml": "application/jsonml+json", - "jsx": "text/jsx", - "jt": "model/jt", - "jxl": "image/jxl", - "jxr": "image/jxr", - "jxra": "image/jxra", - "jxrs": "image/jxrs", - "jxs": "image/jxs", - "jxsc": "image/jxsc", - "jxsi": "image/jxsi", - "jxss": "image/jxss", - "kar": "audio/midi", - "ktx": "image/ktx", - "ktx2": "image/ktx2", - "less": "text/less", - "lgr": "application/lgr+xml", - "list": "text/plain", - "litcoffee": "text/coffeescript", - "log": "text/plain", - "lostxml": "application/lost+xml", - "lrf": "application/octet-stream", - "m1v": "video/mpeg", - "m21": "application/mp21", - "m2a": "audio/mpeg", - "m2t": "video/mp2t", - "m2ts": "video/mp2t", - "m2v": "video/mpeg", - "m3a": "audio/mpeg", - "m4a": "audio/mp4", - "m4p": "application/mp4", - "m4s": "video/iso.segment", - "ma": "application/mathematica", - "mads": "application/mads+xml", - "maei": "application/mmt-aei+xml", - "man": "text/troff", - "manifest": "text/cache-manifest", - "map": "application/json", - "mar": "application/octet-stream", - "markdown": "text/markdown", - "mathml": "application/mathml+xml", - "mb": "application/mathematica", - "mbox": "application/mbox", - "md": "text/markdown", - "mdx": "text/mdx", - "me": "text/troff", - "mesh": "model/mesh", - "meta4": "application/metalink4+xml", - "metalink": "application/metalink+xml", - "mets": "application/mets+xml", - "mft": "application/rpki-manifest", - "mid": "audio/midi", - "midi": "audio/midi", - "mime": "message/rfc822", - "mj2": "video/mj2", - "mjp2": "video/mj2", - "mjs": "text/javascript", - "mml": "text/mathml", - "mods": "application/mods+xml", - "mov": "video/quicktime", - "mp2": "audio/mpeg", - "mp21": "application/mp21", - "mp2a": "audio/mpeg", - "mp3": "audio/mpeg", - "mp4": "video/mp4", - "mp4a": "audio/mp4", - "mp4s": "application/mp4", - "mp4v": "video/mp4", - "mpd": "application/dash+xml", - "mpe": "video/mpeg", - "mpeg": "video/mpeg", - "mpf": "application/media-policy-dataset+xml", - "mpg": "video/mpeg", - "mpg4": "video/mp4", - "mpga": "audio/mpeg", - "mpp": "application/dash-patch+xml", - "mrc": "application/marc", - "mrcx": "application/marcxml+xml", - "ms": "text/troff", - "mscml": "application/mediaservercontrol+xml", - "msh": "model/mesh", - "msi": "application/octet-stream", - "msix": "application/msix", - "msixbundle": "application/msixbundle", - "msm": "application/octet-stream", - "msp": "application/octet-stream", - "mtl": "model/mtl", - "mts": "video/mp2t", - "musd": "application/mmt-usd+xml", - "mxf": "application/mxf", - "mxmf": "audio/mobile-xmf", - "mxml": "application/xv+xml", - "n3": "text/n3", - "nb": "application/mathematica", - "nq": "application/n-quads", - "nt": "application/n-triples", - "obj": "model/obj", - "oda": "application/oda", - "oga": "audio/ogg", - "ogg": "audio/ogg", - "ogv": "video/ogg", - "ogx": "application/ogg", - "omdoc": "application/omdoc+xml", - "onepkg": "application/onenote", - "onetmp": "application/onenote", - "onetoc": "application/onenote", - "onetoc2": "application/onenote", - "opf": "application/oebps-package+xml", - "opus": "audio/ogg", - "otf": "font/otf", - "owl": "application/rdf+xml", - "oxps": "application/oxps", - "p10": "application/pkcs10", - "p7c": "application/pkcs7-mime", - "p7m": "application/pkcs7-mime", - "p7s": "application/pkcs7-signature", - "p8": "application/pkcs8", - "pdf": "application/pdf", - "pfr": "application/font-tdpfr", - "pgp": "application/pgp-encrypted", - "pkg": "application/octet-stream", - "pki": "application/pkixcmp", - "pkipath": "application/pkix-pkipath", - "pls": "application/pls+xml", - "png": "image/png", - "prc": "model/prc", - "prf": "application/pics-rules", - "provx": "application/provenance+xml", - "ps": "application/postscript", - "pskcxml": "application/pskc+xml", - "pti": "image/prs.pti", - "qt": "video/quicktime", - "raml": "application/raml+yaml", - "rapd": "application/route-apd+xml", - "rdf": "application/rdf+xml", - "relo": "application/p2p-overlay+xml", - "rif": "application/reginfo+xml", - "rl": "application/resource-lists+xml", - "rld": "application/resource-lists-diff+xml", - "rmi": "audio/midi", - "rnc": "application/relax-ng-compact-syntax", - "rng": "application/xml", - "roa": "application/rpki-roa", - "roff": "text/troff", - "rq": "application/sparql-query", - "rs": "application/rls-services+xml", - "rsat": "application/atsc-rsat+xml", - "rsd": "application/rsd+xml", - "rsheet": "application/urc-ressheet+xml", - "rss": "application/rss+xml", - "rtf": "text/rtf", - "rtx": "text/richtext", - "rusd": "application/route-usd+xml", - "s3m": "audio/s3m", - "sbml": "application/sbml+xml", - "scq": "application/scvp-cv-request", - "scs": "application/scvp-cv-response", - "sdp": "application/sdp", - "senmlx": "application/senml+xml", - "sensmlx": "application/sensml+xml", - "ser": "application/java-serialized-object", - "setpay": "application/set-payment-initiation", - "setreg": "application/set-registration-initiation", - "sgi": "image/sgi", - "sgm": "text/sgml", - "sgml": "text/sgml", - "shex": "text/shex", - "shf": "application/shf+xml", - "shtml": "text/html", - "sieve": "application/sieve", - "sig": "application/pgp-signature", - "sil": "audio/silk", - "silo": "model/mesh", - "siv": "application/sieve", - "slim": "text/slim", - "slm": "text/slim", - "sls": "application/route-s-tsid+xml", - "smi": "application/smil+xml", - "smil": "application/smil+xml", - "snd": "audio/basic", - "so": "application/octet-stream", - "spdx": "text/spdx", - "spp": "application/scvp-vp-response", - "spq": "application/scvp-vp-request", - "spx": "audio/ogg", - "sql": "application/sql", - "sru": "application/sru+xml", - "srx": "application/sparql-results+xml", - "ssdl": "application/ssdl+xml", - "ssml": "application/ssml+xml", - "stk": "application/hyperstudio", - "stl": "model/stl", - "stpx": "model/step+xml", - "stpxz": "model/step-xml+zip", - "stpz": "model/step+zip", - "styl": "text/stylus", - "stylus": "text/stylus", - "svg": "image/svg+xml", - "svgz": "image/svg+xml", - "swidtag": "application/swid+xml", - "t": "text/troff", - "t38": "image/t38", - "td": "application/urc-targetdesc+xml", - "tei": "application/tei+xml", - "teicorpus": "application/tei+xml", - "text": "text/plain", - "tfi": "application/thraud+xml", - "tfx": "image/tiff-fx", - "tif": "image/tiff", - "tiff": "image/tiff", - "toml": "application/toml", - "tr": "text/troff", - "trig": "application/trig", - "ts": "video/mp2t", - "tsd": "application/timestamped-data", - "tsv": "text/tab-separated-values", - "ttc": "font/collection", - "ttf": "font/ttf", - "ttl": "text/turtle", - "ttml": "application/ttml+xml", - "txt": "text/plain", - "u3d": "model/u3d", - "u8dsn": "message/global-delivery-status", - "u8hdr": "message/global-headers", - "u8mdn": "message/global-disposition-notification", - "u8msg": "message/global", - "ubj": "application/ubjson", - "uri": "text/uri-list", - "uris": "text/uri-list", - "urls": "text/uri-list", - "vcard": "text/vcard", - "vrml": "model/vrml", - "vtt": "text/vtt", - "vxml": "application/voicexml+xml", - "war": "application/java-archive", - "wasm": "application/wasm", - "wav": "audio/wav", - "weba": "audio/webm", - "webm": "video/webm", - "webmanifest": "application/manifest+json", - "webp": "image/webp", - "wgsl": "text/wgsl", - "wgt": "application/widget", - "wif": "application/watcherinfo+xml", - "wmf": "image/wmf", - "woff": "font/woff", - "woff2": "font/woff2", - "wrl": "model/vrml", - "wsdl": "application/wsdl+xml", - "wspolicy": "application/wspolicy+xml", - "x3d": "model/x3d+xml", - "x3db": "model/x3d+fastinfoset", - "x3dbz": "model/x3d+binary", - "x3dv": "model/x3d-vrml", - "x3dvz": "model/x3d+vrml", - "x3dz": "model/x3d+xml", - "xaml": "application/xaml+xml", - "xav": "application/xcap-att+xml", - "xca": "application/xcap-caps+xml", - "xcs": "application/calendar+xml", - "xdf": "application/xcap-diff+xml", - "xdssc": "application/dssc+xml", - "xel": "application/xcap-el+xml", - "xenc": "application/xenc+xml", - "xer": "application/patch-ops-error+xml", - "xfdf": "application/xfdf", - "xht": "application/xhtml+xml", - "xhtml": "application/xhtml+xml", - "xhvml": "application/xv+xml", - "xlf": "application/xliff+xml", - "xm": "audio/xm", - "xml": "text/xml", - "xns": "application/xcap-ns+xml", - "xop": "application/xop+xml", - "xpl": "application/xproc+xml", - "xsd": "application/xml", - "xsf": "application/prs.xsf+xml", - "xsl": "application/xml", - "xslt": "application/xml", - "xspf": "application/xspf+xml", - "xvm": "application/xv+xml", - "xvml": "application/xv+xml", - "yaml": "text/yaml", - "yang": "application/yang", - "yin": "application/yin+xml", - "yml": "text/yaml", - "zip": "application/zip" -}; -function lookup(extn) { - let tmp = ("" + extn).trim().toLowerCase(); - let idx = tmp.lastIndexOf("."); - return mimes[!~idx ? tmp : tmp.substring(++idx)]; -} - -//#endregion -//#region src/node/publicDir.ts -const publicFilesMap = /* @__PURE__ */ new WeakMap(); -async function initPublicFiles(config$2) { - let fileNames; - try { - fileNames = await recursiveReaddir(config$2.publicDir); - } catch (e$1) { - if (e$1.code === ERR_SYMLINK_IN_RECURSIVE_READDIR) return; - throw e$1; - } - const publicFiles = new Set(fileNames.map((fileName) => fileName.slice(config$2.publicDir.length))); - publicFilesMap.set(config$2, publicFiles); - return publicFiles; -} -function getPublicFiles(config$2) { - return publicFilesMap.get(config$2); -} -function checkPublicFile(url$3, config$2) { - const { publicDir } = config$2; - if (!publicDir || url$3[0] !== "/") return; - const fileName = cleanUrl(url$3); - const publicFiles = getPublicFiles(config$2); - if (publicFiles) return publicFiles.has(fileName) ? normalizePath(path.join(publicDir, fileName)) : void 0; - const publicFile = normalizePath(path.join(publicDir, fileName)); - if (!publicFile.startsWith(withTrailingSlash(publicDir))) return; - return tryStatSync(publicFile)?.isFile() ? publicFile : void 0; -} - -//#endregion -//#region src/node/plugins/asset.ts -var import_picocolors$30 = /* @__PURE__ */ __toESM(require_picocolors(), 1); -const assetUrlRE = /__VITE_ASSET__([\w$]+)__(?:\$_(.*?)__)?/g; -const jsSourceMapRE = /\.[cm]?js\.map$/; -const noInlineRE = /[?&]no-inline\b/; -const inlineRE$3 = /[?&]inline\b/; -const assetCache = /* @__PURE__ */ new WeakMap(); -/** a set of referenceId for entry CSS assets for each environment */ -const cssEntriesMap = /* @__PURE__ */ new WeakMap(); -function registerCustomMime() { - mimes.ico = "image/x-icon"; - mimes.cur = "image/x-icon"; - mimes.flac = "audio/flac"; - mimes.eot = "application/vnd.ms-fontobject"; -} -function renderAssetUrlInJS(pluginContext, chunk, opts, code) { - const { environment } = pluginContext; - const toRelativeRuntime = createToImportMetaURLBasedRelativeRuntime(opts.format, environment.config.isWorker); - let match; - let s$2; - assetUrlRE.lastIndex = 0; - while (match = assetUrlRE.exec(code)) { - s$2 ||= new MagicString(code); - const [full, referenceId, postfix = ""] = match; - const file = pluginContext.getFileName(referenceId); - chunk.viteMetadata.importedAssets.add(cleanUrl(file)); - const replacement = toOutputFilePathInJS(environment, file + postfix, "asset", chunk.fileName, "js", toRelativeRuntime); - const replacementString = typeof replacement === "string" ? JSON.stringify(encodeURIPath(replacement)).slice(1, -1) : `"+${replacement.runtime}+"`; - s$2.update(match.index, match.index + full.length, replacementString); - } - const publicAssetUrlMap = publicAssetUrlCache.get(environment.getTopLevelConfig()); - publicAssetUrlRE.lastIndex = 0; - while (match = publicAssetUrlRE.exec(code)) { - s$2 ||= new MagicString(code); - const [full, hash$1] = match; - const replacement = toOutputFilePathInJS(environment, publicAssetUrlMap.get(hash$1).slice(1), "public", chunk.fileName, "js", toRelativeRuntime); - const replacementString = typeof replacement === "string" ? JSON.stringify(encodeURIPath(replacement)).slice(1, -1) : `"+${replacement.runtime}+"`; - s$2.update(match.index, match.index + full.length, replacementString); - } - return s$2; + if (types.length > 0) { + message += `${types.length > 1 ? "one of type" : "of type"} ${formatList(types, "or")}`; + if (instances.length > 0 || other.length > 0) message += " or "; + } + if (instances.length > 0) { + message += `an instance of ${formatList(instances, "or")}`; + if (other.length > 0) message += " or "; + } + if (other.length > 0) if (other.length > 1) message += `one of ${formatList(other, "or")}`; + else { + if (other[0].toLowerCase() !== other[0]) message += "an "; + message += `${other[0]}`; + } + message += `. Received ${determineSpecificType(actual)}`; + return message; + }, + TypeError +); +codes$1.ERR_INVALID_MODULE_SPECIFIER = createError( + "ERR_INVALID_MODULE_SPECIFIER", + /** + * @param {string} request + * @param {string} reason + * @param {string} [base] + */ + (request, reason, base = void 0) => { + return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ""}`; + }, + TypeError +); +codes$1.ERR_INVALID_PACKAGE_CONFIG = createError( + "ERR_INVALID_PACKAGE_CONFIG", + /** + * @param {string} path + * @param {string} [base] + * @param {string} [message] + */ + (path$13, base, message) => { + return `Invalid package config ${path$13}${base ? ` while importing ${base}` : ""}${message ? `. ${message}` : ""}`; + }, + Error +); +codes$1.ERR_INVALID_PACKAGE_TARGET = createError( + "ERR_INVALID_PACKAGE_TARGET", + /** + * @param {string} packagePath + * @param {string} key + * @param {unknown} target + * @param {boolean} [isImport=false] + * @param {string} [base] + */ + (packagePath, key, target, isImport = false, base = void 0) => { + const relatedError = typeof target === "string" && !isImport && target.length > 0 && !target.startsWith("./"); + if (key === ".") { + assert(isImport === false); + return `Invalid "exports" main target ${JSON.stringify(target)} defined in the package config ${packagePath}package.json${base ? ` imported from ${base}` : ""}${relatedError ? "; targets must start with \"./\"" : ""}`; + } + return `Invalid "${isImport ? "imports" : "exports"}" target ${JSON.stringify(target)} defined for '${key}' in the package config ${packagePath}package.json${base ? ` imported from ${base}` : ""}${relatedError ? "; targets must start with \"./\"" : ""}`; + }, + Error +); +codes$1.ERR_MODULE_NOT_FOUND = createError( + "ERR_MODULE_NOT_FOUND", + /** + * @param {string} path + * @param {string} base + * @param {boolean} [exactUrl] + */ + (path$13, base, exactUrl = false) => { + return `Cannot find ${exactUrl ? "module" : "package"} '${path$13}' imported from ${base}`; + }, + Error +); +codes$1.ERR_NETWORK_IMPORT_DISALLOWED = createError("ERR_NETWORK_IMPORT_DISALLOWED", "import of '%s' by %s is not supported: %s", Error); +codes$1.ERR_PACKAGE_IMPORT_NOT_DEFINED = createError( + "ERR_PACKAGE_IMPORT_NOT_DEFINED", + /** + * @param {string} specifier + * @param {string} packagePath + * @param {string} base + */ + (specifier, packagePath, base) => { + return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ""} imported from ${base}`; + }, + TypeError +); +codes$1.ERR_PACKAGE_PATH_NOT_EXPORTED = createError( + "ERR_PACKAGE_PATH_NOT_EXPORTED", + /** + * @param {string} packagePath + * @param {string} subpath + * @param {string} [base] + */ + (packagePath, subpath, base = void 0) => { + if (subpath === ".") return `No "exports" main defined in ${packagePath}package.json${base ? ` imported from ${base}` : ""}`; + return `Package subpath '${subpath}' is not defined by "exports" in ${packagePath}package.json${base ? ` imported from ${base}` : ""}`; + }, + Error +); +codes$1.ERR_UNSUPPORTED_DIR_IMPORT = createError("ERR_UNSUPPORTED_DIR_IMPORT", "Directory import '%s' is not supported resolving ES modules imported from %s", Error); +codes$1.ERR_UNSUPPORTED_RESOLVE_REQUEST = createError("ERR_UNSUPPORTED_RESOLVE_REQUEST", "Failed to resolve module specifier \"%s\" from \"%s\": Invalid relative URL or base scheme is not hierarchical.", TypeError); +codes$1.ERR_UNKNOWN_FILE_EXTENSION = createError( + "ERR_UNKNOWN_FILE_EXTENSION", + /** + * @param {string} extension + * @param {string} path + */ + (extension$1, path$13) => { + return `Unknown file extension "${extension$1}" for ${path$13}`; + }, + TypeError +); +codes$1.ERR_INVALID_ARG_VALUE = createError( + "ERR_INVALID_ARG_VALUE", + /** + * @param {string} name + * @param {unknown} value + * @param {string} [reason='is invalid'] + */ + (name, value$1, reason = "is invalid") => { + let inspected = inspect(value$1); + if (inspected.length > 128) inspected = `${inspected.slice(0, 128)}...`; + return `The ${name.includes(".") ? "property" : "argument"} '${name}' ${reason}. Received ${inspected}`; + }, + TypeError +); +/** +* Utility function for registering the error codes. Only used here. Exported +* *only* to allow for testing. +* @param {string} sym +* @param {MessageFunction | string} value +* @param {ErrorConstructor} constructor +* @returns {new (...parameters: Array) => Error} +*/ +function createError(sym, value$1, constructor) { + messages.set(sym, value$1); + return makeNodeErrorWithCode(constructor, sym); } /** -* Also supports loading plain strings with import text from './foo.txt?raw' +* @param {ErrorConstructor} Base +* @param {string} key +* @returns {ErrorConstructor} */ -function assetPlugin(config$2) { - registerCustomMime(); - return { - name: "vite:asset", - perEnvironmentStartEndDuringDev: true, - buildStart() { - assetCache.set(this.environment, /* @__PURE__ */ new Map()); - cssEntriesMap.set(this.environment, /* @__PURE__ */ new Set()); - }, - resolveId: { handler(id) { - if (!config$2.assetsInclude(cleanUrl(id)) && !urlRE.test(id)) return; - if (checkPublicFile(id, config$2)) return id; - } }, - load: { - filter: { id: { exclude: /^\0/ } }, - async handler(id) { - if (rawRE.test(id)) { - const file = checkPublicFile(id, config$2) || cleanUrl(id); - this.addWatchFile(file); - return `export default ${JSON.stringify(await fsp.readFile(file, "utf-8"))}`; - } - if (!urlRE.test(id) && !config$2.assetsInclude(cleanUrl(id))) return; - id = removeUrlQuery(id); - let url$3 = await fileToUrl$1(this, id); - if (!url$3.startsWith("data:") && this.environment.mode === "dev") { - const mod = this.environment.moduleGraph.getModuleById(id); - if (mod && mod.lastHMRTimestamp > 0) url$3 = injectQuery(url$3, `t=${mod.lastHMRTimestamp}`); - } - return { - code: `export default ${JSON.stringify(encodeURIPath(url$3))}`, - moduleSideEffects: config$2.command === "build" && this.getModuleInfo(id)?.isEntry ? "no-treeshake" : false, - meta: config$2.command === "build" ? { "vite:asset": true } : void 0 - }; +function makeNodeErrorWithCode(Base, key) { + return NodeError; + /** + * @param {Array} parameters + */ + function NodeError(...parameters) { + const limit = Error.stackTraceLimit; + if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = 0; + const error$1 = new Base(); + if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = limit; + const message = getMessage(key, parameters, error$1); + Object.defineProperties(error$1, { + message: { + value: message, + enumerable: false, + writable: true, + configurable: true + }, + toString: { + value() { + return `${this.name} [${key}]: ${this.message}`; + }, + enumerable: false, + writable: true, + configurable: true } - }, - renderChunk(code, chunk, opts) { - const s$2 = renderAssetUrlInJS(this, chunk, opts, code); - if (s$2) return { - code: s$2.toString(), - map: this.environment.config.build.sourcemap ? s$2.generateMap({ hires: "boundary" }) : null - }; - else return null; - }, - generateBundle(_, bundle) { - let importedFiles; - for (const file in bundle) { - const chunk = bundle[file]; - if (chunk.type === "chunk" && chunk.isEntry && chunk.moduleIds.length === 1 && config$2.assetsInclude(chunk.moduleIds[0]) && this.getModuleInfo(chunk.moduleIds[0])?.meta["vite:asset"]) { - if (!importedFiles) { - importedFiles = /* @__PURE__ */ new Set(); - for (const file$1 in bundle) { - const chunk$1 = bundle[file$1]; - if (chunk$1.type === "chunk") { - for (const importedFile of chunk$1.imports) importedFiles.add(importedFile); - for (const importedFile of chunk$1.dynamicImports) importedFiles.add(importedFile); - } - } - } - if (!importedFiles.has(file)) delete bundle[file]; - } - } - if (config$2.command === "build" && !this.environment.config.build.emitAssets) { - for (const file in bundle) if (bundle[file].type === "asset" && !file.endsWith("ssr-manifest.json") && !jsSourceMapRE.test(file)) delete bundle[file]; - } - } - }; -} -async function fileToUrl$1(pluginContext, id) { - const { environment } = pluginContext; - if (environment.config.command === "serve") return fileToDevUrl(environment, id); - else return fileToBuiltUrl(pluginContext, id); -} -async function fileToDevUrl(environment, id, skipBase = false) { - const config$2 = environment.getTopLevelConfig(); - const publicFile = checkPublicFile(id, config$2); - if (inlineRE$3.test(id)) { - const file = publicFile || cleanUrl(id); - return assetToDataURL(environment, file, await fsp.readFile(file)); - } - const cleanedId = cleanUrl(id); - if (cleanedId.endsWith(".svg")) { - const file = publicFile || cleanedId; - const content = await fsp.readFile(file); - if (shouldInline(environment, file, id, content, void 0, void 0)) return assetToDataURL(environment, file, content); - } - let rtn; - if (publicFile) rtn = id; - else if (id.startsWith(withTrailingSlash(config$2.root))) rtn = "/" + path.posix.relative(config$2.root, id); - else rtn = path.posix.join(FS_PREFIX, id); - if (skipBase) return rtn; - return joinUrlSegments(joinUrlSegments(config$2.server.origin ?? "", config$2.decodedBase), removeLeadingSlash(rtn)); -} -function getPublicAssetFilename(hash$1, config$2) { - return publicAssetUrlCache.get(config$2)?.get(hash$1); -} -const publicAssetUrlCache = /* @__PURE__ */ new WeakMap(); -const publicAssetUrlRE = /__VITE_PUBLIC_ASSET__([a-z\d]{8})__/g; -function publicFileToBuiltUrl(url$3, config$2) { - if (config$2.command !== "build") return joinUrlSegments(config$2.decodedBase, url$3); - const hash$1 = getHash(url$3); - let cache$1 = publicAssetUrlCache.get(config$2); - if (!cache$1) { - cache$1 = /* @__PURE__ */ new Map(); - publicAssetUrlCache.set(config$2, cache$1); - } - if (!cache$1.get(hash$1)) cache$1.set(hash$1, url$3); - return `__VITE_PUBLIC_ASSET__${hash$1}__`; -} -const GIT_LFS_PREFIX = Buffer$1.from("version https://git-lfs.github.com"); -function isGitLfsPlaceholder(content) { - if (content.length < GIT_LFS_PREFIX.length) return false; - return GIT_LFS_PREFIX.compare(content, 0, GIT_LFS_PREFIX.length) === 0; -} -/** -* Register an asset to be emitted as part of the bundle (if necessary) -* and returns the resolved public URL -*/ -async function fileToBuiltUrl(pluginContext, id, skipPublicCheck = false, forceInline) { - const environment = pluginContext.environment; - const topLevelConfig = environment.getTopLevelConfig(); - if (!skipPublicCheck) { - const publicFile = checkPublicFile(id, topLevelConfig); - if (publicFile) if (inlineRE$3.test(id)) id = publicFile; - else return publicFileToBuiltUrl(id, topLevelConfig); - } - const cache$1 = assetCache.get(environment); - const cached = cache$1.get(id); - if (cached) return cached; - let { file, postfix } = splitFileAndPostfix(id); - const content = await fsp.readFile(file); - let url$3; - if (shouldInline(environment, file, id, content, pluginContext, forceInline)) url$3 = assetToDataURL(environment, file, content); - else { - const originalFileName = normalizePath(path.relative(environment.config.root, file)); - const referenceId = pluginContext.emitFile({ - type: "asset", - name: path.basename(file), - originalFileName, - source: content }); - if (environment.config.command === "build" && noInlineRE.test(postfix)) postfix = postfix.replace(noInlineRE, "").replace(/^&/, "?"); - url$3 = `__VITE_ASSET__${referenceId}__${postfix ? `$_${postfix}__` : ``}`; - } - cache$1.set(id, url$3); - return url$3; -} -async function urlToBuiltUrl(pluginContext, url$3, importer, forceInline) { - const topLevelConfig = pluginContext.environment.getTopLevelConfig(); - if (checkPublicFile(url$3, topLevelConfig)) return publicFileToBuiltUrl(url$3, topLevelConfig); - return fileToBuiltUrl(pluginContext, normalizePath(url$3[0] === "/" ? path.join(topLevelConfig.root, url$3) : path.join(path.dirname(importer), url$3)), true, forceInline); -} -function shouldInline(environment, file, id, content, buildPluginContext, forceInline) { - if (noInlineRE.test(id)) return false; - if (inlineRE$3.test(id)) return true; - if (buildPluginContext) { - if (environment.config.build.lib) return true; - if (buildPluginContext.getModuleInfo(id)?.isEntry) return false; - } - if (forceInline !== void 0) return forceInline; - if (file.endsWith(".html")) return false; - if (file.endsWith(".svg") && id.includes("#")) return false; - let limit; - const { assetsInlineLimit } = environment.config.build; - if (typeof assetsInlineLimit === "function") { - const userShouldInline = assetsInlineLimit(file, content); - if (userShouldInline != null) return userShouldInline; - limit = DEFAULT_ASSETS_INLINE_LIMIT; - } else limit = Number(assetsInlineLimit); - return content.length < limit && !isGitLfsPlaceholder(content); -} -function assetToDataURL(environment, file, content) { - if (environment.config.build.lib && isGitLfsPlaceholder(content)) environment.logger.warn(import_picocolors$30.default.yellow(`Inlined file ${file} was not downloaded via Git LFS`)); - if (file.endsWith(".svg")) return svgToDataURL(content); - else return `data:${lookup(file) ?? "application/octet-stream"};base64,${content.toString("base64")}`; -} -const nestedQuotesRE = /"[^"']*'[^"]*"|'[^'"]*"[^']*'/; -function svgToDataURL(content) { - const stringContent = content.toString(); - if (stringContent.includes("\s+<").replaceAll("\"", "'").replaceAll("%", "%25").replaceAll("#", "%23").replaceAll("<", "%3c").replaceAll(">", "%3e").replaceAll(/\s+/g, "%20"); -} - -//#endregion -//#region src/node/plugins/manifest.ts -const endsWithJSRE = /\.[cm]?js$/; -function manifestPlugin() { - const getState = perEnvironmentState(() => { - return { - manifest: {}, - outputCount: 0, - reset() { - this.manifest = {}; - this.outputCount = 0; - } - }; - }); - return { - name: "vite:manifest", - perEnvironmentStartEndDuringDev: true, - applyToEnvironment(environment) { - return !!environment.config.build.manifest; - }, - buildStart() { - getState(this).reset(); - }, - generateBundle({ format: format$3 }, bundle) { - const state = getState(this); - const { manifest } = state; - const { root } = this.environment.config; - const buildOptions = this.environment.config.build; - function getChunkName(chunk) { - return getChunkOriginalFileName(chunk, root, format$3) ?? `_${path.basename(chunk.fileName)}`; - } - function getInternalImports(imports) { - const filteredImports = []; - for (const file of imports) { - if (bundle[file] === void 0) continue; - filteredImports.push(getChunkName(bundle[file])); - } - return filteredImports; - } - function createChunk(chunk) { - const manifestChunk = { - file: chunk.fileName, - name: chunk.name - }; - if (chunk.facadeModuleId) manifestChunk.src = getChunkName(chunk); - if (chunk.isEntry) manifestChunk.isEntry = true; - if (chunk.isDynamicEntry) manifestChunk.isDynamicEntry = true; - if (chunk.imports.length) { - const internalImports = getInternalImports(chunk.imports); - if (internalImports.length > 0) manifestChunk.imports = internalImports; - } - if (chunk.dynamicImports.length) { - const internalImports = getInternalImports(chunk.dynamicImports); - if (internalImports.length > 0) manifestChunk.dynamicImports = internalImports; - } - if (chunk.viteMetadata?.importedCss.size) manifestChunk.css = [...chunk.viteMetadata.importedCss]; - if (chunk.viteMetadata?.importedAssets.size) manifestChunk.assets = [...chunk.viteMetadata.importedAssets]; - return manifestChunk; - } - function createAsset(asset, src, isEntry) { - const manifestChunk = { - file: asset.fileName, - src - }; - if (isEntry) { - manifestChunk.isEntry = true; - manifestChunk.names = asset.names; - } - return manifestChunk; - } - const entryCssReferenceIds = cssEntriesMap.get(this.environment); - const entryCssAssetFileNames = /* @__PURE__ */ new Set(); - for (const id of entryCssReferenceIds) try { - const fileName = this.getFileName(id); - entryCssAssetFileNames.add(fileName); - } catch {} - for (const file in bundle) { - const chunk = bundle[file]; - if (chunk.type === "chunk") manifest[getChunkName(chunk)] = createChunk(chunk); - else if (chunk.type === "asset" && chunk.names.length > 0) { - const src = chunk.originalFileNames.length > 0 ? chunk.originalFileNames[0] : `_${path.basename(chunk.fileName)}`; - const asset = createAsset(chunk, src, entryCssAssetFileNames.has(chunk.fileName)); - const file$1 = manifest[src]?.file; - if (!(file$1 && endsWithJSRE.test(file$1))) manifest[src] = asset; - for (const originalFileName of chunk.originalFileNames.slice(1)) { - const file$2 = manifest[originalFileName]?.file; - if (!(file$2 && endsWithJSRE.test(file$2))) manifest[originalFileName] = asset; - } - } - } - state.outputCount++; - const output = buildOptions.rollupOptions.output; - if (state.outputCount >= (Array.isArray(output) ? output.length : 1)) this.emitFile({ - fileName: typeof buildOptions.manifest === "string" ? buildOptions.manifest : ".vite/manifest.json", - type: "asset", - source: JSON.stringify(sortObjectKeys(manifest), void 0, 2) - }); - } - }; -} -function getChunkOriginalFileName(chunk, root, format$3) { - if (chunk.facadeModuleId) { - let name = normalizePath(path.relative(root, chunk.facadeModuleId)); - if (format$3 === "system" && !chunk.name.includes("-legacy")) { - const ext = path.extname(name); - const endPos = ext.length !== 0 ? -ext.length : void 0; - name = `${name.slice(0, endPos)}-legacy${ext}`; - } - return name.replace(/\0/g, ""); + captureLargerStackTrace(error$1); + error$1.code = key; + return error$1; } } - -//#endregion -//#region src/node/plugins/dataUri.ts -const dataUriRE = /^([^/]+\/[^;,]+)(;base64)?,([\s\S]*)$/; -const base64RE = /base64/i; -const dataUriPrefix = `\0/@data-uri/`; /** -* Build only, since importing from a data URI works natively. +* @returns {boolean} */ -function dataURIPlugin() { - let resolved; - return { - name: "vite:data-uri", - buildStart() { - resolved = /* @__PURE__ */ new Map(); - }, - resolveId(id) { - if (!id.trimStart().startsWith("data:")) return; - const uri = new URL$1(id); - if (uri.protocol !== "data:") return; - const match = dataUriRE.exec(uri.pathname); - if (!match) return; - const [, mime, format$3, data] = match; - if (mime !== "text/javascript") throw new Error(`data URI with non-JavaScript mime type is not supported. If you're using legacy JavaScript MIME types (such as 'application/javascript'), please use 'text/javascript' instead.`); - const content = format$3 && base64RE.test(format$3.substring(1)) ? Buffer.from(data, "base64").toString("utf-8") : data; - resolved.set(id, content); - return dataUriPrefix + id; - }, - load(id) { - if (id.startsWith(dataUriPrefix)) return resolved.get(id.slice(dataUriPrefix.length)); +function isErrorStackTraceLimitWritable() { + try { + if (v8.startupSnapshot.isBuildingSnapshot()) return false; + } catch {} + const desc = Object.getOwnPropertyDescriptor(Error, "stackTraceLimit"); + if (desc === void 0) return Object.isExtensible(Error); + return own$1.call(desc, "writable") && desc.writable !== void 0 ? desc.writable : desc.set !== void 0; +} +/** +* This function removes unnecessary frames from Node.js core errors. +* @template {(...parameters: unknown[]) => unknown} T +* @param {T} wrappedFunction +* @returns {T} +*/ +function hideStackFrames(wrappedFunction) { + const hidden = nodeInternalPrefix + wrappedFunction.name; + Object.defineProperty(wrappedFunction, "name", { value: hidden }); + return wrappedFunction; +} +const captureLargerStackTrace = hideStackFrames( + /** + * @param {Error} error + * @returns {Error} + */ + function(error$1) { + const stackTraceLimitIsWritable = isErrorStackTraceLimitWritable(); + if (stackTraceLimitIsWritable) { + userStackTraceLimit = Error.stackTraceLimit; + Error.stackTraceLimit = Number.POSITIVE_INFINITY; } + Error.captureStackTrace(error$1); + if (stackTraceLimitIsWritable) Error.stackTraceLimit = userStackTraceLimit; + return error$1; + } +); +/** +* @param {string} key +* @param {Array} parameters +* @param {Error} self +* @returns {string} +*/ +function getMessage(key, parameters, self$1) { + const message = messages.get(key); + assert(message !== void 0, "expected `message` to be found"); + if (typeof message === "function") { + assert(message.length <= parameters.length, `Code: ${key}; The provided arguments length (${parameters.length}) does not match the required ones (${message.length}).`); + return Reflect.apply(message, self$1, parameters); + } + const regex = /%[dfijoOs]/g; + let expectedLength = 0; + while (regex.exec(message) !== null) expectedLength++; + assert(expectedLength === parameters.length, `Code: ${key}; The provided arguments length (${parameters.length}) does not match the required ones (${expectedLength}).`); + if (parameters.length === 0) return message; + parameters.unshift(message); + return Reflect.apply(format, null, parameters); +} +/** +* Determine the specific type of a value for type-mismatch errors. +* @param {unknown} value +* @returns {string} +*/ +function determineSpecificType(value$1) { + if (value$1 === null || value$1 === void 0) return String(value$1); + if (typeof value$1 === "function" && value$1.name) return `function ${value$1.name}`; + if (typeof value$1 === "object") { + if (value$1.constructor && value$1.constructor.name) return `an instance of ${value$1.constructor.name}`; + return `${inspect(value$1, { depth: -1 })}`; + } + let inspected = inspect(value$1, { colors: false }); + if (inspected.length > 28) inspected = `${inspected.slice(0, 25)}...`; + return `type ${typeof value$1} (${inspected})`; +} +const ESM_STATIC_IMPORT_RE = /(?<=\s|^|;|\})import\s*(?:[\s"']*(?[\p{L}\p{M}\w\t\n\r $*,/{}@.]+)from\s*)?["']\s*(?(?<="\s*)[^"]*[^\s"](?=\s*")|(?<='\s*)[^']*[^\s'](?=\s*'))\s*["'][\s;]*/gmu; +const TYPE_RE = /^\s*?type\s/; +function parseStaticImport(matched) { + const cleanedImports = clearImports(matched.imports); + const namedImports = {}; + const _matches = cleanedImports.match(/{([^}]*)}/)?.[1]?.split(",") || []; + for (const namedImport of _matches) { + const _match = namedImport.match(/^\s*(\S*) as (\S*)\s*$/); + const source = _match?.[1] || namedImport.trim(); + const importName = _match?.[2] || source; + if (source && !TYPE_RE.test(source)) namedImports[source] = importName; + } + const { namespacedImport, defaultImport } = getImportNames(cleanedImports); + return { + ...matched, + defaultImport, + namespacedImport, + namedImports }; } +const ESM_RE = /(?:[\s;]|^)(?:import[\s\w*,{}]*from|import\s*["'*{]|export\b\s*(?:[*{]|default|class|type|function|const|var|let|async function)|import\.meta\b)/m; +const COMMENT_RE = /\/\*.+?\*\/|\/\/.*(?=[nr])/g; +function hasESMSyntax(code, opts = {}) { + if (opts.stripComments) code = code.replace(COMMENT_RE, ""); + return ESM_RE.test(code); +} + +//#endregion +//#region ../../node_modules/.pnpm/@rolldown+pluginutils@1.0.0-beta.46/node_modules/@rolldown/pluginutils/dist/simple-filters.js +/** +* Constructs a RegExp that matches the exact string specified. +* +* This is useful for plugin hook filters. +* +* @param str the string to match. +* @param flags flags for the RegExp. +* +* @example +* ```ts +* import { exactRegex } from '@rolldown/pluginutils'; +* const plugin = { +* name: 'plugin', +* resolveId: { +* filter: { id: exactRegex('foo') }, +* handler(id) {} // will only be called for `foo` +* } +* } +* ``` +*/ +function exactRegex(str, flags) { + return new RegExp(`^${escapeRegex$1(str)}$`, flags); +} +/** +* Constructs a RegExp that matches a value that has the specified prefix. +* +* This is useful for plugin hook filters. +* +* @param str the string to match. +* @param flags flags for the RegExp. +* +* @example +* ```ts +* import { prefixRegex } from '@rolldown/pluginutils'; +* const plugin = { +* name: 'plugin', +* resolveId: { +* filter: { id: prefixRegex('foo') }, +* handler(id) {} // will only be called for IDs starting with `foo` +* } +* } +* ``` +*/ +function prefixRegex(str, flags) { + return new RegExp(`^${escapeRegex$1(str)}`, flags); +} +const escapeRegexRE = /[-/\\^$*+?.()|[\]{}]/g; +function escapeRegex$1(str) { + return str.replace(escapeRegexRE, "\\$&"); +} //#endregion //#region ../../node_modules/.pnpm/es-module-lexer@1.7.0/node_modules/es-module-lexer/dist/lexer.js @@ -7794,282 +7438,6 @@ const init = WebAssembly.compile(E()).then(WebAssembly.instantiate).then((({ exp C = A$1; })); -//#endregion -//#region ../../node_modules/.pnpm/convert-source-map@2.0.0/node_modules/convert-source-map/index.js -var require_convert_source_map = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/convert-source-map@2.0.0/node_modules/convert-source-map/index.js": ((exports) => { - Object.defineProperty(exports, "commentRegex", { get: function getCommentRegex() { - return /^\s*?\/[\/\*][@#]\s+?sourceMappingURL=data:(((?:application|text)\/json)(?:;charset=([^;,]+?)?)?)?(?:;(base64))?,(.*?)$/gm; - } }); - Object.defineProperty(exports, "mapFileCommentRegex", { get: function getMapFileCommentRegex() { - return /(?:\/\/[@#][ \t]+?sourceMappingURL=([^\s'"`]+?)[ \t]*?$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^*]+?)[ \t]*?(?:\*\/){1}[ \t]*?$)/gm; - } }); - var decodeBase64; - if (typeof Buffer !== "undefined") if (typeof Buffer.from === "function") decodeBase64 = decodeBase64WithBufferFrom; - else decodeBase64 = decodeBase64WithNewBuffer; - else decodeBase64 = decodeBase64WithAtob; - function decodeBase64WithBufferFrom(base64) { - return Buffer.from(base64, "base64").toString(); - } - function decodeBase64WithNewBuffer(base64) { - if (typeof value === "number") throw new TypeError("The value to decode must not be of type number."); - return new Buffer(base64, "base64").toString(); - } - function decodeBase64WithAtob(base64) { - return decodeURIComponent(escape(atob(base64))); - } - function stripComment(sm) { - return sm.split(",").pop(); - } - function readFromFileMap(sm, read) { - var r$1 = exports.mapFileCommentRegex.exec(sm); - var filename = r$1[1] || r$1[2]; - try { - var sm = read(filename); - if (sm != null && typeof sm.catch === "function") return sm.catch(throwError); - else return sm; - } catch (e$1) { - throwError(e$1); - } - function throwError(e$1) { - throw new Error("An error occurred while trying to read the map file at " + filename + "\n" + e$1.stack); - } - } - function Converter(sm, opts) { - opts = opts || {}; - if (opts.hasComment) sm = stripComment(sm); - if (opts.encoding === "base64") sm = decodeBase64(sm); - else if (opts.encoding === "uri") sm = decodeURIComponent(sm); - if (opts.isJSON || opts.encoding) sm = JSON.parse(sm); - this.sourcemap = sm; - } - Converter.prototype.toJSON = function(space) { - return JSON.stringify(this.sourcemap, null, space); - }; - if (typeof Buffer !== "undefined") if (typeof Buffer.from === "function") Converter.prototype.toBase64 = encodeBase64WithBufferFrom; - else Converter.prototype.toBase64 = encodeBase64WithNewBuffer; - else Converter.prototype.toBase64 = encodeBase64WithBtoa; - function encodeBase64WithBufferFrom() { - var json = this.toJSON(); - return Buffer.from(json, "utf8").toString("base64"); - } - function encodeBase64WithNewBuffer() { - var json = this.toJSON(); - if (typeof json === "number") throw new TypeError("The json to encode must not be of type number."); - return new Buffer(json, "utf8").toString("base64"); - } - function encodeBase64WithBtoa() { - var json = this.toJSON(); - return btoa(unescape(encodeURIComponent(json))); - } - Converter.prototype.toURI = function() { - var json = this.toJSON(); - return encodeURIComponent(json); - }; - Converter.prototype.toComment = function(options$1) { - var encoding, content, data; - if (options$1 != null && options$1.encoding === "uri") { - encoding = ""; - content = this.toURI(); - } else { - encoding = ";base64"; - content = this.toBase64(); - } - data = "sourceMappingURL=data:application/json;charset=utf-8" + encoding + "," + content; - return options$1 != null && options$1.multiline ? "/*# " + data + " */" : "//# " + data; - }; - Converter.prototype.toObject = function() { - return JSON.parse(this.toJSON()); - }; - Converter.prototype.addProperty = function(key, value$1) { - if (this.sourcemap.hasOwnProperty(key)) throw new Error("property \"" + key + "\" already exists on the sourcemap, use set property instead"); - return this.setProperty(key, value$1); - }; - Converter.prototype.setProperty = function(key, value$1) { - this.sourcemap[key] = value$1; - return this; - }; - Converter.prototype.getProperty = function(key) { - return this.sourcemap[key]; - }; - exports.fromObject = function(obj) { - return new Converter(obj); - }; - exports.fromJSON = function(json) { - return new Converter(json, { isJSON: true }); - }; - exports.fromURI = function(uri) { - return new Converter(uri, { encoding: "uri" }); - }; - exports.fromBase64 = function(base64) { - return new Converter(base64, { encoding: "base64" }); - }; - exports.fromComment = function(comment) { - var m$2, encoding; - comment = comment.replace(/^\/\*/g, "//").replace(/\*\/$/g, ""); - m$2 = exports.commentRegex.exec(comment); - encoding = m$2 && m$2[4] || "uri"; - return new Converter(comment, { - encoding, - hasComment: true - }); - }; - function makeConverter(sm) { - return new Converter(sm, { isJSON: true }); - } - exports.fromMapFileComment = function(comment, read) { - if (typeof read === "string") throw new Error("String directory paths are no longer supported with `fromMapFileComment`\nPlease review the Upgrading documentation at https://github.com/thlorenz/convert-source-map#upgrading"); - var sm = readFromFileMap(comment, read); - if (sm != null && typeof sm.then === "function") return sm.then(makeConverter); - else return makeConverter(sm); - }; - exports.fromSource = function(content) { - var m$2 = content.match(exports.commentRegex); - return m$2 ? exports.fromComment(m$2.pop()) : null; - }; - exports.fromMapFileSource = function(content, read) { - if (typeof read === "string") throw new Error("String directory paths are no longer supported with `fromMapFileSource`\nPlease review the Upgrading documentation at https://github.com/thlorenz/convert-source-map#upgrading"); - var m$2 = content.match(exports.mapFileCommentRegex); - return m$2 ? exports.fromMapFileComment(m$2.pop(), read) : null; - }; - exports.removeComments = function(src) { - return src.replace(exports.commentRegex, ""); - }; - exports.removeMapFileComments = function(src) { - return src.replace(exports.mapFileCommentRegex, ""); - }; - exports.generateMapFileComment = function(file, options$1) { - var data = "sourceMappingURL=" + file; - return options$1 && options$1.multiline ? "/*# " + data + " */" : "//# " + data; - }; -}) }); - -//#endregion -//#region ../../node_modules/.pnpm/@rolldown+pluginutils@1.0.0-beta.43/node_modules/@rolldown/pluginutils/dist/index.mjs -/** -* Constructs a RegExp that matches the exact string specified. -* -* This is useful for plugin hook filters. -* -* @param str the string to match. -* @param flags flags for the RegExp. -* -* @example -* ```ts -* import { exactRegex } from '@rolldown/pluginutils'; -* const plugin = { -* name: 'plugin', -* resolveId: { -* filter: { id: exactRegex('foo') }, -* handler(id) {} // will only be called for `foo` -* } -* } -* ``` -*/ -function exactRegex(str, flags) { - return new RegExp(`^${escapeRegex$1(str)}$`, flags); -} -/** -* Constructs a RegExp that matches a value that has the specified prefix. -* -* This is useful for plugin hook filters. -* -* @param str the string to match. -* @param flags flags for the RegExp. -* -* @example -* ```ts -* import { prefixRegex } from '@rolldown/pluginutils'; -* const plugin = { -* name: 'plugin', -* resolveId: { -* filter: { id: prefixRegex('foo') }, -* handler(id) {} // will only be called for IDs starting with `foo` -* } -* } -* ``` -*/ -function prefixRegex(str, flags) { - return new RegExp(`^${escapeRegex$1(str)}`, flags); -} -const escapeRegexRE = /[-/\\^$*+?.()|[\]{}]/g; -function escapeRegex$1(str) { - return str.replace(escapeRegexRE, "\\$&"); -} - -//#endregion -//#region src/node/server/sourcemap.ts -var import_convert_source_map$2 = /* @__PURE__ */ __toESM(require_convert_source_map(), 1); -const debug$16 = createDebugger("vite:sourcemap", { onlyWhenFocused: true }); -const virtualSourceRE = /^(?:dep:|browser-external:|virtual:)|\0/; -async function computeSourceRoute(map$1, file) { - let sourceRoot; - try { - sourceRoot = await fsp.realpath(path.resolve(path.dirname(file), map$1.sourceRoot || "")); - } catch {} - return sourceRoot; -} -async function injectSourcesContent(map$1, file, logger) { - let sourceRootPromise; - const missingSources = []; - const sourcesContent = map$1.sourcesContent || []; - const sourcesContentPromises = []; - for (let index = 0; index < map$1.sources.length; index++) { - const sourcePath = map$1.sources[index]; - if (sourcesContent[index] == null && sourcePath && !virtualSourceRE.test(sourcePath)) sourcesContentPromises.push((async () => { - sourceRootPromise ??= computeSourceRoute(map$1, file); - const sourceRoot = await sourceRootPromise; - let resolvedSourcePath = cleanUrl(decodeURI(sourcePath)); - if (sourceRoot) resolvedSourcePath = path.resolve(sourceRoot, resolvedSourcePath); - sourcesContent[index] = await fsp.readFile(resolvedSourcePath, "utf-8").catch(() => { - missingSources.push(resolvedSourcePath); - return null; - }); - })()); - } - await Promise.all(sourcesContentPromises); - map$1.sourcesContent = sourcesContent; - if (missingSources.length) { - logger.warnOnce(`Sourcemap for "${file}" points to missing source files`); - debug$16?.(`Missing sources:\n ` + missingSources.join(`\n `)); - } -} -function genSourceMapUrl(map$1) { - if (typeof map$1 !== "string") map$1 = JSON.stringify(map$1); - return `data:application/json;base64,${Buffer.from(map$1).toString("base64")}`; -} -function getCodeWithSourcemap(type, code, map$1) { - if (debug$16) code += `\n/*${JSON.stringify(map$1, null, 2).replace(/\*\//g, "*\\/")}*/\n`; - if (type === "js") code += `\n//# sourceMappingURL=${genSourceMapUrl(map$1)}`; - else if (type === "css") code += `\n/*# sourceMappingURL=${genSourceMapUrl(map$1)} */`; - return code; -} -function applySourcemapIgnoreList(map$1, sourcemapPath, sourcemapIgnoreList, logger) { - let { x_google_ignoreList } = map$1; - if (x_google_ignoreList === void 0) x_google_ignoreList = []; - for (let sourcesIndex = 0; sourcesIndex < map$1.sources.length; ++sourcesIndex) { - const sourcePath = map$1.sources[sourcesIndex]; - if (!sourcePath) continue; - const ignoreList = sourcemapIgnoreList(path.isAbsolute(sourcePath) ? sourcePath : path.resolve(path.dirname(sourcemapPath), sourcePath), sourcemapPath); - if (logger && typeof ignoreList !== "boolean") logger.warn("sourcemapIgnoreList function must return a boolean."); - if (ignoreList && !x_google_ignoreList.includes(sourcesIndex)) x_google_ignoreList.push(sourcesIndex); - } - if (x_google_ignoreList.length > 0) { - if (!map$1.x_google_ignoreList) map$1.x_google_ignoreList = x_google_ignoreList; - } -} -async function extractSourcemapFromFile(code, filePath) { - const map$1 = (import_convert_source_map$2.fromSource(code) || await import_convert_source_map$2.fromMapFileSource(code, createConvertSourceMapReadMap(filePath)))?.toObject(); - if (map$1) return { - code: code.replace(import_convert_source_map$2.default.mapFileCommentRegex, blankReplacer), - map: map$1 - }; -} -function createConvertSourceMapReadMap(originalFileName) { - return (filename) => { - return fsp.readFile(path.resolve(path.dirname(originalFileName), filename), "utf-8"); - }; -} - //#endregion //#region ../../node_modules/.pnpm/lilconfig@3.1.3/node_modules/lilconfig/src/index.js var require_src$1 = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/lilconfig@3.1.3/node_modules/lilconfig/src/index.js": ((exports, module) => { @@ -8683,6 +8051,258 @@ var require_src = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/postcss module.exports = rc; }) }); +//#endregion +//#region ../../node_modules/.pnpm/convert-source-map@2.0.0/node_modules/convert-source-map/index.js +var require_convert_source_map = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/convert-source-map@2.0.0/node_modules/convert-source-map/index.js": ((exports) => { + Object.defineProperty(exports, "commentRegex", { get: function getCommentRegex() { + return /^\s*?\/[\/\*][@#]\s+?sourceMappingURL=data:(((?:application|text)\/json)(?:;charset=([^;,]+?)?)?)?(?:;(base64))?,(.*?)$/gm; + } }); + Object.defineProperty(exports, "mapFileCommentRegex", { get: function getMapFileCommentRegex() { + return /(?:\/\/[@#][ \t]+?sourceMappingURL=([^\s'"`]+?)[ \t]*?$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^*]+?)[ \t]*?(?:\*\/){1}[ \t]*?$)/gm; + } }); + var decodeBase64; + if (typeof Buffer !== "undefined") if (typeof Buffer.from === "function") decodeBase64 = decodeBase64WithBufferFrom; + else decodeBase64 = decodeBase64WithNewBuffer; + else decodeBase64 = decodeBase64WithAtob; + function decodeBase64WithBufferFrom(base64) { + return Buffer.from(base64, "base64").toString(); + } + function decodeBase64WithNewBuffer(base64) { + if (typeof value === "number") throw new TypeError("The value to decode must not be of type number."); + return new Buffer(base64, "base64").toString(); + } + function decodeBase64WithAtob(base64) { + return decodeURIComponent(escape(atob(base64))); + } + function stripComment(sm) { + return sm.split(",").pop(); + } + function readFromFileMap(sm, read) { + var r$1 = exports.mapFileCommentRegex.exec(sm); + var filename = r$1[1] || r$1[2]; + try { + var sm = read(filename); + if (sm != null && typeof sm.catch === "function") return sm.catch(throwError); + else return sm; + } catch (e$1) { + throwError(e$1); + } + function throwError(e$1) { + throw new Error("An error occurred while trying to read the map file at " + filename + "\n" + e$1.stack); + } + } + function Converter(sm, opts) { + opts = opts || {}; + if (opts.hasComment) sm = stripComment(sm); + if (opts.encoding === "base64") sm = decodeBase64(sm); + else if (opts.encoding === "uri") sm = decodeURIComponent(sm); + if (opts.isJSON || opts.encoding) sm = JSON.parse(sm); + this.sourcemap = sm; + } + Converter.prototype.toJSON = function(space) { + return JSON.stringify(this.sourcemap, null, space); + }; + if (typeof Buffer !== "undefined") if (typeof Buffer.from === "function") Converter.prototype.toBase64 = encodeBase64WithBufferFrom; + else Converter.prototype.toBase64 = encodeBase64WithNewBuffer; + else Converter.prototype.toBase64 = encodeBase64WithBtoa; + function encodeBase64WithBufferFrom() { + var json = this.toJSON(); + return Buffer.from(json, "utf8").toString("base64"); + } + function encodeBase64WithNewBuffer() { + var json = this.toJSON(); + if (typeof json === "number") throw new TypeError("The json to encode must not be of type number."); + return new Buffer(json, "utf8").toString("base64"); + } + function encodeBase64WithBtoa() { + var json = this.toJSON(); + return btoa(unescape(encodeURIComponent(json))); + } + Converter.prototype.toURI = function() { + var json = this.toJSON(); + return encodeURIComponent(json); + }; + Converter.prototype.toComment = function(options$1) { + var encoding, content, data; + if (options$1 != null && options$1.encoding === "uri") { + encoding = ""; + content = this.toURI(); + } else { + encoding = ";base64"; + content = this.toBase64(); + } + data = "sourceMappingURL=data:application/json;charset=utf-8" + encoding + "," + content; + return options$1 != null && options$1.multiline ? "/*# " + data + " */" : "//# " + data; + }; + Converter.prototype.toObject = function() { + return JSON.parse(this.toJSON()); + }; + Converter.prototype.addProperty = function(key, value$1) { + if (this.sourcemap.hasOwnProperty(key)) throw new Error("property \"" + key + "\" already exists on the sourcemap, use set property instead"); + return this.setProperty(key, value$1); + }; + Converter.prototype.setProperty = function(key, value$1) { + this.sourcemap[key] = value$1; + return this; + }; + Converter.prototype.getProperty = function(key) { + return this.sourcemap[key]; + }; + exports.fromObject = function(obj) { + return new Converter(obj); + }; + exports.fromJSON = function(json) { + return new Converter(json, { isJSON: true }); + }; + exports.fromURI = function(uri) { + return new Converter(uri, { encoding: "uri" }); + }; + exports.fromBase64 = function(base64) { + return new Converter(base64, { encoding: "base64" }); + }; + exports.fromComment = function(comment) { + var m$2, encoding; + comment = comment.replace(/^\/\*/g, "//").replace(/\*\/$/g, ""); + m$2 = exports.commentRegex.exec(comment); + encoding = m$2 && m$2[4] || "uri"; + return new Converter(comment, { + encoding, + hasComment: true + }); + }; + function makeConverter(sm) { + return new Converter(sm, { isJSON: true }); + } + exports.fromMapFileComment = function(comment, read) { + if (typeof read === "string") throw new Error("String directory paths are no longer supported with `fromMapFileComment`\nPlease review the Upgrading documentation at https://github.com/thlorenz/convert-source-map#upgrading"); + var sm = readFromFileMap(comment, read); + if (sm != null && typeof sm.then === "function") return sm.then(makeConverter); + else return makeConverter(sm); + }; + exports.fromSource = function(content) { + var m$2 = content.match(exports.commentRegex); + return m$2 ? exports.fromComment(m$2.pop()) : null; + }; + exports.fromMapFileSource = function(content, read) { + if (typeof read === "string") throw new Error("String directory paths are no longer supported with `fromMapFileSource`\nPlease review the Upgrading documentation at https://github.com/thlorenz/convert-source-map#upgrading"); + var m$2 = content.match(exports.mapFileCommentRegex); + return m$2 ? exports.fromMapFileComment(m$2.pop(), read) : null; + }; + exports.removeComments = function(src) { + return src.replace(exports.commentRegex, ""); + }; + exports.removeMapFileComments = function(src) { + return src.replace(exports.mapFileCommentRegex, ""); + }; + exports.generateMapFileComment = function(file, options$1) { + var data = "sourceMappingURL=" + file; + return options$1 && options$1.multiline ? "/*# " + data + " */" : "//# " + data; + }; +}) }); + +//#endregion +//#region src/node/server/sourcemap.ts +var import_convert_source_map$2 = /* @__PURE__ */ __toESM(require_convert_source_map(), 1); +const debug$16 = createDebugger("vite:sourcemap", { onlyWhenFocused: true }); +const virtualSourceRE = /^(?:dep:|browser-external:|virtual:)|\0/; +async function computeSourceRoute(map$1, file) { + let sourceRoot; + try { + sourceRoot = await fsp.realpath(path.resolve(path.dirname(file), map$1.sourceRoot || "")); + } catch {} + return sourceRoot; +} +async function injectSourcesContent(map$1, file, logger) { + let sourceRootPromise; + const missingSources = []; + const sourcesContent = map$1.sourcesContent || []; + const sourcesContentPromises = []; + for (let index = 0; index < map$1.sources.length; index++) { + const sourcePath = map$1.sources[index]; + if (sourcesContent[index] == null && sourcePath && !virtualSourceRE.test(sourcePath)) sourcesContentPromises.push((async () => { + sourceRootPromise ??= computeSourceRoute(map$1, file); + const sourceRoot = await sourceRootPromise; + let resolvedSourcePath = cleanUrl(decodeURI(sourcePath)); + if (sourceRoot) resolvedSourcePath = path.resolve(sourceRoot, resolvedSourcePath); + sourcesContent[index] = await fsp.readFile(resolvedSourcePath, "utf-8").catch(() => { + missingSources.push(resolvedSourcePath); + return null; + }); + })()); + } + await Promise.all(sourcesContentPromises); + map$1.sourcesContent = sourcesContent; + if (missingSources.length) { + logger.warnOnce(`Sourcemap for "${file}" points to missing source files`); + debug$16?.(`Missing sources:\n ` + missingSources.join(`\n `)); + } +} +function genSourceMapUrl(map$1) { + if (typeof map$1 !== "string") map$1 = JSON.stringify(map$1); + return `data:application/json;base64,${Buffer.from(map$1).toString("base64")}`; +} +function getCodeWithSourcemap(type, code, map$1) { + if (debug$16) code += `\n/*${JSON.stringify(map$1, null, 2).replace(/\*\//g, "*\\/")}*/\n`; + if (type === "js") code += `\n//# sourceMappingURL=${genSourceMapUrl(map$1)}`; + else if (type === "css") code += `\n/*# sourceMappingURL=${genSourceMapUrl(map$1)} */`; + return code; +} +function applySourcemapIgnoreList(map$1, sourcemapPath, sourcemapIgnoreList, logger) { + let { x_google_ignoreList } = map$1; + if (x_google_ignoreList === void 0) x_google_ignoreList = []; + for (let sourcesIndex = 0; sourcesIndex < map$1.sources.length; ++sourcesIndex) { + const sourcePath = map$1.sources[sourcesIndex]; + if (!sourcePath) continue; + const ignoreList = sourcemapIgnoreList(path.isAbsolute(sourcePath) ? sourcePath : path.resolve(path.dirname(sourcemapPath), sourcePath), sourcemapPath); + if (logger && typeof ignoreList !== "boolean") logger.warn("sourcemapIgnoreList function must return a boolean."); + if (ignoreList && !x_google_ignoreList.includes(sourcesIndex)) x_google_ignoreList.push(sourcesIndex); + } + if (x_google_ignoreList.length > 0) { + if (!map$1.x_google_ignoreList) map$1.x_google_ignoreList = x_google_ignoreList; + } +} +async function extractSourcemapFromFile(code, filePath) { + const map$1 = (import_convert_source_map$2.fromSource(code) || await import_convert_source_map$2.fromMapFileSource(code, createConvertSourceMapReadMap(filePath)))?.toObject(); + if (map$1) return { + code: code.replace(import_convert_source_map$2.default.mapFileCommentRegex, blankReplacer), + map: map$1 + }; +} +function createConvertSourceMapReadMap(originalFileName) { + return (filename) => { + return fsp.readFile(path.resolve(path.dirname(originalFileName), filename), "utf-8"); + }; +} + +//#endregion +//#region src/node/publicDir.ts +const publicFilesMap = /* @__PURE__ */ new WeakMap(); +async function initPublicFiles(config$2) { + let fileNames; + try { + fileNames = await recursiveReaddir(config$2.publicDir); + } catch (e$1) { + if (e$1.code === ERR_SYMLINK_IN_RECURSIVE_READDIR) return; + throw e$1; + } + const publicFiles = new Set(fileNames.map((fileName) => fileName.slice(config$2.publicDir.length))); + publicFilesMap.set(config$2, publicFiles); + return publicFiles; +} +function getPublicFiles(config$2) { + return publicFilesMap.get(config$2); +} +function checkPublicFile(url$3, config$2) { + const { publicDir } = config$2; + if (!publicDir || url$3[0] !== "/") return; + const fileName = cleanUrl(url$3); + const publicFiles = getPublicFiles(config$2); + if (publicFiles) return publicFiles.has(fileName) ? normalizePath(path.join(publicDir, fileName)) : void 0; + const publicFile = normalizePath(path.join(publicDir, fileName)); + if (!publicFile.startsWith(withTrailingSlash(publicDir))) return; + return tryStatSync(publicFile)?.isFile() ? publicFile : void 0; +} + //#endregion //#region ../../node_modules/.pnpm/@rollup+plugin-alias@5.1.1_rollup@4.43.0/node_modules/@rollup/plugin-alias/dist/es/index.js function matches$1(pattern, importee) { @@ -8747,8 +8367,690 @@ function alias(options$1 = {}) { }; } +//#endregion +//#region ../../node_modules/.pnpm/mrmime@2.0.1/node_modules/mrmime/index.mjs +const mimes = { + "3g2": "video/3gpp2", + "3gp": "video/3gpp", + "3gpp": "video/3gpp", + "3mf": "model/3mf", + "aac": "audio/aac", + "ac": "application/pkix-attr-cert", + "adp": "audio/adpcm", + "adts": "audio/aac", + "ai": "application/postscript", + "aml": "application/automationml-aml+xml", + "amlx": "application/automationml-amlx+zip", + "amr": "audio/amr", + "apng": "image/apng", + "appcache": "text/cache-manifest", + "appinstaller": "application/appinstaller", + "appx": "application/appx", + "appxbundle": "application/appxbundle", + "asc": "application/pgp-keys", + "atom": "application/atom+xml", + "atomcat": "application/atomcat+xml", + "atomdeleted": "application/atomdeleted+xml", + "atomsvc": "application/atomsvc+xml", + "au": "audio/basic", + "avci": "image/avci", + "avcs": "image/avcs", + "avif": "image/avif", + "aw": "application/applixware", + "bdoc": "application/bdoc", + "bin": "application/octet-stream", + "bmp": "image/bmp", + "bpk": "application/octet-stream", + "btf": "image/prs.btif", + "btif": "image/prs.btif", + "buffer": "application/octet-stream", + "ccxml": "application/ccxml+xml", + "cdfx": "application/cdfx+xml", + "cdmia": "application/cdmi-capability", + "cdmic": "application/cdmi-container", + "cdmid": "application/cdmi-domain", + "cdmio": "application/cdmi-object", + "cdmiq": "application/cdmi-queue", + "cer": "application/pkix-cert", + "cgm": "image/cgm", + "cjs": "application/node", + "class": "application/java-vm", + "coffee": "text/coffeescript", + "conf": "text/plain", + "cpl": "application/cpl+xml", + "cpt": "application/mac-compactpro", + "crl": "application/pkix-crl", + "css": "text/css", + "csv": "text/csv", + "cu": "application/cu-seeme", + "cwl": "application/cwl", + "cww": "application/prs.cww", + "davmount": "application/davmount+xml", + "dbk": "application/docbook+xml", + "deb": "application/octet-stream", + "def": "text/plain", + "deploy": "application/octet-stream", + "dib": "image/bmp", + "disposition-notification": "message/disposition-notification", + "dist": "application/octet-stream", + "distz": "application/octet-stream", + "dll": "application/octet-stream", + "dmg": "application/octet-stream", + "dms": "application/octet-stream", + "doc": "application/msword", + "dot": "application/msword", + "dpx": "image/dpx", + "drle": "image/dicom-rle", + "dsc": "text/prs.lines.tag", + "dssc": "application/dssc+der", + "dtd": "application/xml-dtd", + "dump": "application/octet-stream", + "dwd": "application/atsc-dwd+xml", + "ear": "application/java-archive", + "ecma": "application/ecmascript", + "elc": "application/octet-stream", + "emf": "image/emf", + "eml": "message/rfc822", + "emma": "application/emma+xml", + "emotionml": "application/emotionml+xml", + "eps": "application/postscript", + "epub": "application/epub+zip", + "exe": "application/octet-stream", + "exi": "application/exi", + "exp": "application/express", + "exr": "image/aces", + "ez": "application/andrew-inset", + "fdf": "application/fdf", + "fdt": "application/fdt+xml", + "fits": "image/fits", + "g3": "image/g3fax", + "gbr": "application/rpki-ghostbusters", + "geojson": "application/geo+json", + "gif": "image/gif", + "glb": "model/gltf-binary", + "gltf": "model/gltf+json", + "gml": "application/gml+xml", + "gpx": "application/gpx+xml", + "gram": "application/srgs", + "grxml": "application/srgs+xml", + "gxf": "application/gxf", + "gz": "application/gzip", + "h261": "video/h261", + "h263": "video/h263", + "h264": "video/h264", + "heic": "image/heic", + "heics": "image/heic-sequence", + "heif": "image/heif", + "heifs": "image/heif-sequence", + "hej2": "image/hej2k", + "held": "application/atsc-held+xml", + "hjson": "application/hjson", + "hlp": "application/winhlp", + "hqx": "application/mac-binhex40", + "hsj2": "image/hsj2", + "htm": "text/html", + "html": "text/html", + "ics": "text/calendar", + "ief": "image/ief", + "ifb": "text/calendar", + "iges": "model/iges", + "igs": "model/iges", + "img": "application/octet-stream", + "in": "text/plain", + "ini": "text/plain", + "ink": "application/inkml+xml", + "inkml": "application/inkml+xml", + "ipfix": "application/ipfix", + "iso": "application/octet-stream", + "its": "application/its+xml", + "jade": "text/jade", + "jar": "application/java-archive", + "jhc": "image/jphc", + "jls": "image/jls", + "jp2": "image/jp2", + "jpe": "image/jpeg", + "jpeg": "image/jpeg", + "jpf": "image/jpx", + "jpg": "image/jpeg", + "jpg2": "image/jp2", + "jpgm": "image/jpm", + "jpgv": "video/jpeg", + "jph": "image/jph", + "jpm": "image/jpm", + "jpx": "image/jpx", + "js": "text/javascript", + "json": "application/json", + "json5": "application/json5", + "jsonld": "application/ld+json", + "jsonml": "application/jsonml+json", + "jsx": "text/jsx", + "jt": "model/jt", + "jxl": "image/jxl", + "jxr": "image/jxr", + "jxra": "image/jxra", + "jxrs": "image/jxrs", + "jxs": "image/jxs", + "jxsc": "image/jxsc", + "jxsi": "image/jxsi", + "jxss": "image/jxss", + "kar": "audio/midi", + "ktx": "image/ktx", + "ktx2": "image/ktx2", + "less": "text/less", + "lgr": "application/lgr+xml", + "list": "text/plain", + "litcoffee": "text/coffeescript", + "log": "text/plain", + "lostxml": "application/lost+xml", + "lrf": "application/octet-stream", + "m1v": "video/mpeg", + "m21": "application/mp21", + "m2a": "audio/mpeg", + "m2t": "video/mp2t", + "m2ts": "video/mp2t", + "m2v": "video/mpeg", + "m3a": "audio/mpeg", + "m4a": "audio/mp4", + "m4p": "application/mp4", + "m4s": "video/iso.segment", + "ma": "application/mathematica", + "mads": "application/mads+xml", + "maei": "application/mmt-aei+xml", + "man": "text/troff", + "manifest": "text/cache-manifest", + "map": "application/json", + "mar": "application/octet-stream", + "markdown": "text/markdown", + "mathml": "application/mathml+xml", + "mb": "application/mathematica", + "mbox": "application/mbox", + "md": "text/markdown", + "mdx": "text/mdx", + "me": "text/troff", + "mesh": "model/mesh", + "meta4": "application/metalink4+xml", + "metalink": "application/metalink+xml", + "mets": "application/mets+xml", + "mft": "application/rpki-manifest", + "mid": "audio/midi", + "midi": "audio/midi", + "mime": "message/rfc822", + "mj2": "video/mj2", + "mjp2": "video/mj2", + "mjs": "text/javascript", + "mml": "text/mathml", + "mods": "application/mods+xml", + "mov": "video/quicktime", + "mp2": "audio/mpeg", + "mp21": "application/mp21", + "mp2a": "audio/mpeg", + "mp3": "audio/mpeg", + "mp4": "video/mp4", + "mp4a": "audio/mp4", + "mp4s": "application/mp4", + "mp4v": "video/mp4", + "mpd": "application/dash+xml", + "mpe": "video/mpeg", + "mpeg": "video/mpeg", + "mpf": "application/media-policy-dataset+xml", + "mpg": "video/mpeg", + "mpg4": "video/mp4", + "mpga": "audio/mpeg", + "mpp": "application/dash-patch+xml", + "mrc": "application/marc", + "mrcx": "application/marcxml+xml", + "ms": "text/troff", + "mscml": "application/mediaservercontrol+xml", + "msh": "model/mesh", + "msi": "application/octet-stream", + "msix": "application/msix", + "msixbundle": "application/msixbundle", + "msm": "application/octet-stream", + "msp": "application/octet-stream", + "mtl": "model/mtl", + "mts": "video/mp2t", + "musd": "application/mmt-usd+xml", + "mxf": "application/mxf", + "mxmf": "audio/mobile-xmf", + "mxml": "application/xv+xml", + "n3": "text/n3", + "nb": "application/mathematica", + "nq": "application/n-quads", + "nt": "application/n-triples", + "obj": "model/obj", + "oda": "application/oda", + "oga": "audio/ogg", + "ogg": "audio/ogg", + "ogv": "video/ogg", + "ogx": "application/ogg", + "omdoc": "application/omdoc+xml", + "onepkg": "application/onenote", + "onetmp": "application/onenote", + "onetoc": "application/onenote", + "onetoc2": "application/onenote", + "opf": "application/oebps-package+xml", + "opus": "audio/ogg", + "otf": "font/otf", + "owl": "application/rdf+xml", + "oxps": "application/oxps", + "p10": "application/pkcs10", + "p7c": "application/pkcs7-mime", + "p7m": "application/pkcs7-mime", + "p7s": "application/pkcs7-signature", + "p8": "application/pkcs8", + "pdf": "application/pdf", + "pfr": "application/font-tdpfr", + "pgp": "application/pgp-encrypted", + "pkg": "application/octet-stream", + "pki": "application/pkixcmp", + "pkipath": "application/pkix-pkipath", + "pls": "application/pls+xml", + "png": "image/png", + "prc": "model/prc", + "prf": "application/pics-rules", + "provx": "application/provenance+xml", + "ps": "application/postscript", + "pskcxml": "application/pskc+xml", + "pti": "image/prs.pti", + "qt": "video/quicktime", + "raml": "application/raml+yaml", + "rapd": "application/route-apd+xml", + "rdf": "application/rdf+xml", + "relo": "application/p2p-overlay+xml", + "rif": "application/reginfo+xml", + "rl": "application/resource-lists+xml", + "rld": "application/resource-lists-diff+xml", + "rmi": "audio/midi", + "rnc": "application/relax-ng-compact-syntax", + "rng": "application/xml", + "roa": "application/rpki-roa", + "roff": "text/troff", + "rq": "application/sparql-query", + "rs": "application/rls-services+xml", + "rsat": "application/atsc-rsat+xml", + "rsd": "application/rsd+xml", + "rsheet": "application/urc-ressheet+xml", + "rss": "application/rss+xml", + "rtf": "text/rtf", + "rtx": "text/richtext", + "rusd": "application/route-usd+xml", + "s3m": "audio/s3m", + "sbml": "application/sbml+xml", + "scq": "application/scvp-cv-request", + "scs": "application/scvp-cv-response", + "sdp": "application/sdp", + "senmlx": "application/senml+xml", + "sensmlx": "application/sensml+xml", + "ser": "application/java-serialized-object", + "setpay": "application/set-payment-initiation", + "setreg": "application/set-registration-initiation", + "sgi": "image/sgi", + "sgm": "text/sgml", + "sgml": "text/sgml", + "shex": "text/shex", + "shf": "application/shf+xml", + "shtml": "text/html", + "sieve": "application/sieve", + "sig": "application/pgp-signature", + "sil": "audio/silk", + "silo": "model/mesh", + "siv": "application/sieve", + "slim": "text/slim", + "slm": "text/slim", + "sls": "application/route-s-tsid+xml", + "smi": "application/smil+xml", + "smil": "application/smil+xml", + "snd": "audio/basic", + "so": "application/octet-stream", + "spdx": "text/spdx", + "spp": "application/scvp-vp-response", + "spq": "application/scvp-vp-request", + "spx": "audio/ogg", + "sql": "application/sql", + "sru": "application/sru+xml", + "srx": "application/sparql-results+xml", + "ssdl": "application/ssdl+xml", + "ssml": "application/ssml+xml", + "stk": "application/hyperstudio", + "stl": "model/stl", + "stpx": "model/step+xml", + "stpxz": "model/step-xml+zip", + "stpz": "model/step+zip", + "styl": "text/stylus", + "stylus": "text/stylus", + "svg": "image/svg+xml", + "svgz": "image/svg+xml", + "swidtag": "application/swid+xml", + "t": "text/troff", + "t38": "image/t38", + "td": "application/urc-targetdesc+xml", + "tei": "application/tei+xml", + "teicorpus": "application/tei+xml", + "text": "text/plain", + "tfi": "application/thraud+xml", + "tfx": "image/tiff-fx", + "tif": "image/tiff", + "tiff": "image/tiff", + "toml": "application/toml", + "tr": "text/troff", + "trig": "application/trig", + "ts": "video/mp2t", + "tsd": "application/timestamped-data", + "tsv": "text/tab-separated-values", + "ttc": "font/collection", + "ttf": "font/ttf", + "ttl": "text/turtle", + "ttml": "application/ttml+xml", + "txt": "text/plain", + "u3d": "model/u3d", + "u8dsn": "message/global-delivery-status", + "u8hdr": "message/global-headers", + "u8mdn": "message/global-disposition-notification", + "u8msg": "message/global", + "ubj": "application/ubjson", + "uri": "text/uri-list", + "uris": "text/uri-list", + "urls": "text/uri-list", + "vcard": "text/vcard", + "vrml": "model/vrml", + "vtt": "text/vtt", + "vxml": "application/voicexml+xml", + "war": "application/java-archive", + "wasm": "application/wasm", + "wav": "audio/wav", + "weba": "audio/webm", + "webm": "video/webm", + "webmanifest": "application/manifest+json", + "webp": "image/webp", + "wgsl": "text/wgsl", + "wgt": "application/widget", + "wif": "application/watcherinfo+xml", + "wmf": "image/wmf", + "woff": "font/woff", + "woff2": "font/woff2", + "wrl": "model/vrml", + "wsdl": "application/wsdl+xml", + "wspolicy": "application/wspolicy+xml", + "x3d": "model/x3d+xml", + "x3db": "model/x3d+fastinfoset", + "x3dbz": "model/x3d+binary", + "x3dv": "model/x3d-vrml", + "x3dvz": "model/x3d+vrml", + "x3dz": "model/x3d+xml", + "xaml": "application/xaml+xml", + "xav": "application/xcap-att+xml", + "xca": "application/xcap-caps+xml", + "xcs": "application/calendar+xml", + "xdf": "application/xcap-diff+xml", + "xdssc": "application/dssc+xml", + "xel": "application/xcap-el+xml", + "xenc": "application/xenc+xml", + "xer": "application/patch-ops-error+xml", + "xfdf": "application/xfdf", + "xht": "application/xhtml+xml", + "xhtml": "application/xhtml+xml", + "xhvml": "application/xv+xml", + "xlf": "application/xliff+xml", + "xm": "audio/xm", + "xml": "text/xml", + "xns": "application/xcap-ns+xml", + "xop": "application/xop+xml", + "xpl": "application/xproc+xml", + "xsd": "application/xml", + "xsf": "application/prs.xsf+xml", + "xsl": "application/xml", + "xslt": "application/xml", + "xspf": "application/xspf+xml", + "xvm": "application/xv+xml", + "xvml": "application/xv+xml", + "yaml": "text/yaml", + "yang": "application/yang", + "yin": "application/yin+xml", + "yml": "text/yaml", + "zip": "application/zip" +}; +function lookup(extn) { + let tmp = ("" + extn).trim().toLowerCase(); + let idx = tmp.lastIndexOf("."); + return mimes[!~idx ? tmp : tmp.substring(++idx)]; +} + +//#endregion +//#region src/node/plugins/asset.ts +var import_picocolors$30 = /* @__PURE__ */ __toESM(require_picocolors(), 1); +const assetUrlRE = /__VITE_ASSET__([\w$]+)__(?:\$_(.*?)__)?/g; +const jsSourceMapRE = /\.[cm]?js\.map$/; +const noInlineRE = /[?&]no-inline\b/; +const inlineRE$3 = /[?&]inline\b/; +const assetCache = /* @__PURE__ */ new WeakMap(); +/** a set of referenceId for entry CSS assets for each environment */ +const cssEntriesMap = /* @__PURE__ */ new WeakMap(); +function registerCustomMime() { + mimes.ico = "image/x-icon"; + mimes.cur = "image/x-icon"; + mimes.flac = "audio/flac"; + mimes.eot = "application/vnd.ms-fontobject"; +} +function renderAssetUrlInJS(pluginContext, chunk, opts, code) { + const { environment } = pluginContext; + const toRelativeRuntime = createToImportMetaURLBasedRelativeRuntime(opts.format, environment.config.isWorker); + let match; + let s$2; + assetUrlRE.lastIndex = 0; + while (match = assetUrlRE.exec(code)) { + s$2 ||= new MagicString(code); + const [full, referenceId, postfix = ""] = match; + const file = pluginContext.getFileName(referenceId); + chunk.viteMetadata.importedAssets.add(cleanUrl(file)); + const replacement = toOutputFilePathInJS(environment, file + postfix, "asset", chunk.fileName, "js", toRelativeRuntime); + const replacementString = typeof replacement === "string" ? JSON.stringify(encodeURIPath(replacement)).slice(1, -1) : `"+${replacement.runtime}+"`; + s$2.update(match.index, match.index + full.length, replacementString); + } + const publicAssetUrlMap = publicAssetUrlCache.get(environment.getTopLevelConfig()); + publicAssetUrlRE.lastIndex = 0; + while (match = publicAssetUrlRE.exec(code)) { + s$2 ||= new MagicString(code); + const [full, hash$1] = match; + const replacement = toOutputFilePathInJS(environment, publicAssetUrlMap.get(hash$1).slice(1), "public", chunk.fileName, "js", toRelativeRuntime); + const replacementString = typeof replacement === "string" ? JSON.stringify(encodeURIPath(replacement)).slice(1, -1) : `"+${replacement.runtime}+"`; + s$2.update(match.index, match.index + full.length, replacementString); + } + return s$2; +} +/** +* Also supports loading plain strings with import text from './foo.txt?raw' +*/ +function assetPlugin(config$2) { + registerCustomMime(); + return { + name: "vite:asset", + perEnvironmentStartEndDuringDev: true, + buildStart() { + assetCache.set(this.environment, /* @__PURE__ */ new Map()); + cssEntriesMap.set(this.environment, /* @__PURE__ */ new Map()); + }, + resolveId: { handler(id) { + if (!config$2.assetsInclude(cleanUrl(id)) && !urlRE.test(id)) return; + if (checkPublicFile(id, config$2)) return id; + } }, + load: { + filter: { id: { exclude: /^\0/ } }, + async handler(id) { + if (rawRE.test(id)) { + const file = checkPublicFile(id, config$2) || cleanUrl(id); + this.addWatchFile(file); + return `export default ${JSON.stringify(await fsp.readFile(file, "utf-8"))}`; + } + if (!urlRE.test(id) && !config$2.assetsInclude(cleanUrl(id))) return; + id = removeUrlQuery(id); + let url$3 = await fileToUrl$1(this, id); + if (!url$3.startsWith("data:") && this.environment.mode === "dev") { + const mod = this.environment.moduleGraph.getModuleById(id); + if (mod && mod.lastHMRTimestamp > 0) url$3 = injectQuery(url$3, `t=${mod.lastHMRTimestamp}`); + } + return { + code: `export default ${JSON.stringify(encodeURIPath(url$3))}`, + moduleSideEffects: config$2.command === "build" && this.getModuleInfo(id)?.isEntry ? "no-treeshake" : false, + meta: config$2.command === "build" ? { "vite:asset": true } : void 0 + }; + } + }, + renderChunk(code, chunk, opts) { + const s$2 = renderAssetUrlInJS(this, chunk, opts, code); + if (s$2) return { + code: s$2.toString(), + map: this.environment.config.build.sourcemap ? s$2.generateMap({ hires: "boundary" }) : null + }; + else return null; + }, + generateBundle(_, bundle) { + let importedFiles; + for (const file in bundle) { + const chunk = bundle[file]; + if (chunk.type === "chunk" && chunk.isEntry && chunk.moduleIds.length === 1 && config$2.assetsInclude(chunk.moduleIds[0]) && this.getModuleInfo(chunk.moduleIds[0])?.meta["vite:asset"]) { + if (!importedFiles) { + importedFiles = /* @__PURE__ */ new Set(); + for (const file$1 in bundle) { + const chunk$1 = bundle[file$1]; + if (chunk$1.type === "chunk") { + for (const importedFile of chunk$1.imports) importedFiles.add(importedFile); + for (const importedFile of chunk$1.dynamicImports) importedFiles.add(importedFile); + } + } + } + if (!importedFiles.has(file)) delete bundle[file]; + } + } + if (config$2.command === "build" && !this.environment.config.build.emitAssets) { + for (const file in bundle) if (bundle[file].type === "asset" && !file.endsWith("ssr-manifest.json") && !jsSourceMapRE.test(file)) delete bundle[file]; + } + } + }; +} +async function fileToUrl$1(pluginContext, id) { + const { environment } = pluginContext; + if (environment.config.command === "serve") return fileToDevUrl(environment, id); + else return fileToBuiltUrl(pluginContext, id); +} +async function fileToDevUrl(environment, id, skipBase = false) { + const config$2 = environment.getTopLevelConfig(); + const publicFile = checkPublicFile(id, config$2); + if (inlineRE$3.test(id)) { + const file = publicFile || cleanUrl(id); + return assetToDataURL(environment, file, await fsp.readFile(file)); + } + const cleanedId = cleanUrl(id); + if (cleanedId.endsWith(".svg")) { + const file = publicFile || cleanedId; + const content = await fsp.readFile(file); + if (shouldInline(environment, file, id, content, void 0, void 0)) return assetToDataURL(environment, file, content); + } + let rtn; + if (publicFile) rtn = id; + else if (id.startsWith(withTrailingSlash(config$2.root))) rtn = "/" + path.posix.relative(config$2.root, id); + else rtn = path.posix.join(FS_PREFIX, id); + if (skipBase) return rtn; + return joinUrlSegments(joinUrlSegments(config$2.server.origin ?? "", config$2.decodedBase), removeLeadingSlash(rtn)); +} +function getPublicAssetFilename(hash$1, config$2) { + return publicAssetUrlCache.get(config$2)?.get(hash$1); +} +const publicAssetUrlCache = /* @__PURE__ */ new WeakMap(); +const publicAssetUrlRE = /__VITE_PUBLIC_ASSET__([a-z\d]{8})__/g; +function publicFileToBuiltUrl(url$3, config$2) { + if (config$2.command !== "build") return joinUrlSegments(config$2.decodedBase, url$3); + const hash$1 = getHash(url$3); + let cache$1 = publicAssetUrlCache.get(config$2); + if (!cache$1) { + cache$1 = /* @__PURE__ */ new Map(); + publicAssetUrlCache.set(config$2, cache$1); + } + if (!cache$1.get(hash$1)) cache$1.set(hash$1, url$3); + return `__VITE_PUBLIC_ASSET__${hash$1}__`; +} +const GIT_LFS_PREFIX = Buffer$1.from("version https://git-lfs.github.com"); +function isGitLfsPlaceholder(content) { + if (content.length < GIT_LFS_PREFIX.length) return false; + return GIT_LFS_PREFIX.compare(content, 0, GIT_LFS_PREFIX.length) === 0; +} +/** +* Register an asset to be emitted as part of the bundle (if necessary) +* and returns the resolved public URL +*/ +async function fileToBuiltUrl(pluginContext, id, skipPublicCheck = false, forceInline) { + const environment = pluginContext.environment; + const topLevelConfig = environment.getTopLevelConfig(); + if (!skipPublicCheck) { + const publicFile = checkPublicFile(id, topLevelConfig); + if (publicFile) if (inlineRE$3.test(id)) id = publicFile; + else return publicFileToBuiltUrl(id, topLevelConfig); + } + const cache$1 = assetCache.get(environment); + const cached = cache$1.get(id); + if (cached) return cached; + let { file, postfix } = splitFileAndPostfix(id); + const content = await fsp.readFile(file); + let url$3; + if (shouldInline(environment, file, id, content, pluginContext, forceInline)) url$3 = assetToDataURL(environment, file, content); + else { + const originalFileName = normalizePath(path.relative(environment.config.root, file)); + const referenceId = pluginContext.emitFile({ + type: "asset", + name: path.basename(file), + originalFileName, + source: content + }); + if (environment.config.command === "build" && noInlineRE.test(postfix)) postfix = postfix.replace(noInlineRE, "").replace(/^&/, "?"); + url$3 = `__VITE_ASSET__${referenceId}__${postfix ? `$_${postfix}__` : ``}`; + } + cache$1.set(id, url$3); + return url$3; +} +async function urlToBuiltUrl(pluginContext, url$3, importer, forceInline) { + const topLevelConfig = pluginContext.environment.getTopLevelConfig(); + if (checkPublicFile(url$3, topLevelConfig)) return publicFileToBuiltUrl(url$3, topLevelConfig); + return fileToBuiltUrl(pluginContext, normalizePath(url$3[0] === "/" ? path.join(topLevelConfig.root, url$3) : path.join(path.dirname(importer), url$3)), true, forceInline); +} +function shouldInline(environment, file, id, content, buildPluginContext, forceInline) { + if (noInlineRE.test(id)) return false; + if (inlineRE$3.test(id)) return true; + if (buildPluginContext) { + if (environment.config.build.lib) return true; + if (buildPluginContext.getModuleInfo(id)?.isEntry) return false; + } + if (forceInline !== void 0) return forceInline; + if (file.endsWith(".html")) return false; + if (file.endsWith(".svg") && id.includes("#")) return false; + let limit; + const { assetsInlineLimit } = environment.config.build; + if (typeof assetsInlineLimit === "function") { + const userShouldInline = assetsInlineLimit(file, content); + if (userShouldInline != null) return userShouldInline; + limit = DEFAULT_ASSETS_INLINE_LIMIT; + } else limit = Number(assetsInlineLimit); + return content.length < limit && !isGitLfsPlaceholder(content); +} +function assetToDataURL(environment, file, content) { + if (environment.config.build.lib && isGitLfsPlaceholder(content)) environment.logger.warn(import_picocolors$30.default.yellow(`Inlined file ${file} was not downloaded via Git LFS`)); + if (file.endsWith(".svg")) return svgToDataURL(content); + else return `data:${lookup(file) ?? "application/octet-stream"};base64,${content.toString("base64")}`; +} +const nestedQuotesRE = /"[^"']*'[^"]*"|'[^'"]*"[^']*'/; +function svgToDataURL(content) { + const stringContent = content.toString(); + if (stringContent.includes("\s+<").replaceAll("\"", "'").replaceAll("%", "%25").replaceAll("#", "%23").replaceAll("<", "%3c").replaceAll(">", "%3e").replaceAll(/\s+/g, "%20"); +} + //#endregion //#region src/node/plugins/json.ts +/** +* https://github.com/rollup/plugins/blob/master/packages/json/src/index.js +* +* This source code is licensed under the MIT license found in the +* LICENSE file at +* https://github.com/rollup/plugins/blob/master/LICENSE +*/ const jsonExtRE = /\.json(?:$|\?)(?!commonjs-(?:proxy|external))/; const jsonObjRE = /^\s*\{/; const jsonLangRE = new RegExp(`\\.(?:json|json5)(?:$|\\?)`); @@ -8817,3172 +9119,10 @@ function extractJsonErrorPosition(errorMessage, inputLength) { return errorMessageList ? Math.max(parseInt(errorMessageList[1], 10) - 1, 0) : void 0; } -//#endregion -//#region ../../node_modules/.pnpm/resolve.exports@2.0.3/node_modules/resolve.exports/dist/index.mjs -function e(e$1, n$2, r$1) { - throw new Error(r$1 ? `No known conditions for "${n$2}" specifier in "${e$1}" package` : `Missing "${n$2}" specifier in "${e$1}" package`); -} -function n(n$2, i$1, o$1, f$1) { - let s$2, u, l = r(n$2, o$1), c = function(e$1) { - let n$3 = new Set(["default", ...e$1.conditions || []]); - return e$1.unsafe || n$3.add(e$1.require ? "require" : "import"), e$1.unsafe || n$3.add(e$1.browser ? "browser" : "node"), n$3; - }(f$1 || {}), a = i$1[l]; - if (void 0 === a) { - let e$1, n$3, r$1, t$1; - for (t$1 in i$1) n$3 && t$1.length < n$3.length || ("/" === t$1[t$1.length - 1] && l.startsWith(t$1) ? (u = l.substring(t$1.length), n$3 = t$1) : t$1.length > 1 && (r$1 = t$1.indexOf("*", 1), ~r$1 && (e$1 = RegExp("^" + t$1.substring(0, r$1) + "(.*)" + t$1.substring(1 + r$1) + "$").exec(l), e$1 && e$1[1] && (u = e$1[1], n$3 = t$1)))); - a = i$1[n$3]; - } - return a || e(n$2, l), s$2 = t(a, c), s$2 || e(n$2, l, 1), u && function(e$1, n$3) { - let r$1, t$1 = 0, i$2 = e$1.length, o$2 = /[*]/g, f$2 = /[/]$/; - for (; t$1 < i$2; t$1++) e$1[t$1] = o$2.test(r$1 = e$1[t$1]) ? r$1.replace(o$2, n$3) : f$2.test(r$1) ? r$1 + n$3 : r$1; - }(s$2, u), s$2; -} -function r(e$1, n$2, r$1) { - if (e$1 === n$2 || "." === n$2) return "."; - let t$1 = e$1 + "/", i$1 = t$1.length, o$1 = n$2.slice(0, i$1) === t$1, f$1 = o$1 ? n$2.slice(i$1) : n$2; - return "#" === f$1[0] ? f$1 : o$1 || !r$1 ? "./" === f$1.slice(0, 2) ? f$1 : "./" + f$1 : f$1; -} -function t(e$1, n$2, r$1) { - if (e$1) { - if ("string" == typeof e$1) return r$1 && r$1.add(e$1), [e$1]; - let i$1, o$1; - if (Array.isArray(e$1)) { - for (o$1 = r$1 || /* @__PURE__ */ new Set(), i$1 = 0; i$1 < e$1.length; i$1++) t(e$1[i$1], n$2, o$1); - if (!r$1 && o$1.size) return [...o$1]; - } else for (i$1 in e$1) if (n$2.has(i$1)) return t(e$1[i$1], n$2, r$1); - } -} -function o(e$1, r$1, t$1) { - let i$1, o$1 = e$1.exports; - if (o$1) { - if ("string" == typeof o$1) o$1 = { ".": o$1 }; - else for (i$1 in o$1) { - "." !== i$1[0] && (o$1 = { ".": o$1 }); - break; - } - return n(e$1.name, o$1, r$1 || ".", t$1); - } -} -function f(e$1, r$1, t$1) { - if (e$1.imports) return n(e$1.name, e$1.imports, r$1, t$1); -} - -//#endregion -//#region ../../node_modules/.pnpm/ufo@1.6.1/node_modules/ufo/dist/index.mjs -const HASH_RE = /#/g; -const AMPERSAND_RE = /&/g; -const SLASH_RE = /\//g; -const EQUAL_RE = /=/g; -const PLUS_RE = /\+/g; -const ENC_CARET_RE = /%5e/gi; -const ENC_BACKTICK_RE = /%60/gi; -const ENC_PIPE_RE = /%7c/gi; -const ENC_SPACE_RE = /%20/gi; -function encode(text) { - return encodeURI("" + text).replace(ENC_PIPE_RE, "|"); -} -function encodeQueryValue(input) { - return encode(typeof input === "string" ? input : JSON.stringify(input)).replace(PLUS_RE, "%2B").replace(ENC_SPACE_RE, "+").replace(HASH_RE, "%23").replace(AMPERSAND_RE, "%26").replace(ENC_BACKTICK_RE, "`").replace(ENC_CARET_RE, "^").replace(SLASH_RE, "%2F"); -} -function encodeQueryKey(text) { - return encodeQueryValue(text).replace(EQUAL_RE, "%3D"); -} -function encodeQueryItem(key, value$1) { - if (typeof value$1 === "number" || typeof value$1 === "boolean") value$1 = String(value$1); - if (!value$1) return encodeQueryKey(key); - if (Array.isArray(value$1)) return value$1.map((_value) => `${encodeQueryKey(key)}=${encodeQueryValue(_value)}`).join("&"); - return `${encodeQueryKey(key)}=${encodeQueryValue(value$1)}`; -} -function stringifyQuery(query) { - return Object.keys(query).filter((k) => query[k] !== void 0).map((k) => encodeQueryItem(k, query[k])).filter(Boolean).join("&"); -} -const protocolRelative = Symbol.for("ufo:protocolRelative"); - -//#endregion -//#region ../../node_modules/.pnpm/mlly@1.8.0/node_modules/mlly/dist/index.mjs -const BUILTIN_MODULES = new Set(builtinModules); -function clearImports(imports) { - return (imports || "").replace(/\/\/[^\n]*\n|\/\*.*\*\//g, "").replace(/\s+/g, " "); -} -function getImportNames(cleanedImports) { - const topLevelImports = cleanedImports.replace(/{[^}]*}/, ""); - return { - namespacedImport: topLevelImports.match(/\* as \s*(\S*)/)?.[1], - defaultImport: topLevelImports.split(",").find((index) => !/[*{}]/.test(index))?.trim() || void 0 - }; -} -/** -* @typedef ErrnoExceptionFields -* @property {number | undefined} [errnode] -* @property {string | undefined} [code] -* @property {string | undefined} [path] -* @property {string | undefined} [syscall] -* @property {string | undefined} [url] -* -* @typedef {Error & ErrnoExceptionFields} ErrnoException -*/ -const own$1 = {}.hasOwnProperty; -const classRegExp = /^([A-Z][a-z\d]*)+$/; -const kTypes = new Set([ - "string", - "function", - "number", - "object", - "Function", - "Object", - "boolean", - "bigint", - "symbol" -]); -const codes$1 = {}; -/** -* Create a list string in the form like 'A and B' or 'A, B, ..., and Z'. -* We cannot use Intl.ListFormat because it's not available in -* --without-intl builds. -* -* @param {Array} array -* An array of strings. -* @param {string} [type] -* The list type to be inserted before the last element. -* @returns {string} -*/ -function formatList(array, type = "and") { - return array.length < 3 ? array.join(` ${type} `) : `${array.slice(0, -1).join(", ")}, ${type} ${array[array.length - 1]}`; -} -/** @type {Map} */ -const messages = /* @__PURE__ */ new Map(); -const nodeInternalPrefix = "__node_internal_"; -/** @type {number} */ -let userStackTraceLimit; -codes$1.ERR_INVALID_ARG_TYPE = createError( - "ERR_INVALID_ARG_TYPE", - /** - * @param {string} name - * @param {Array | string} expected - * @param {unknown} actual - */ - (name, expected, actual) => { - assert(typeof name === "string", "'name' must be a string"); - if (!Array.isArray(expected)) expected = [expected]; - let message = "The "; - if (name.endsWith(" argument")) message += `${name} `; - else { - const type = name.includes(".") ? "property" : "argument"; - message += `"${name}" ${type} `; - } - message += "must be "; - /** @type {Array} */ - const types = []; - /** @type {Array} */ - const instances = []; - /** @type {Array} */ - const other = []; - for (const value$1 of expected) { - assert(typeof value$1 === "string", "All expected entries have to be of type string"); - if (kTypes.has(value$1)) types.push(value$1.toLowerCase()); - else if (classRegExp.exec(value$1) === null) { - assert(value$1 !== "object", "The value \"object\" should be written as \"Object\""); - other.push(value$1); - } else instances.push(value$1); - } - if (instances.length > 0) { - const pos = types.indexOf("object"); - if (pos !== -1) { - types.slice(pos, 1); - instances.push("Object"); - } - } - if (types.length > 0) { - message += `${types.length > 1 ? "one of type" : "of type"} ${formatList(types, "or")}`; - if (instances.length > 0 || other.length > 0) message += " or "; - } - if (instances.length > 0) { - message += `an instance of ${formatList(instances, "or")}`; - if (other.length > 0) message += " or "; - } - if (other.length > 0) if (other.length > 1) message += `one of ${formatList(other, "or")}`; - else { - if (other[0].toLowerCase() !== other[0]) message += "an "; - message += `${other[0]}`; - } - message += `. Received ${determineSpecificType(actual)}`; - return message; - }, - TypeError -); -codes$1.ERR_INVALID_MODULE_SPECIFIER = createError( - "ERR_INVALID_MODULE_SPECIFIER", - /** - * @param {string} request - * @param {string} reason - * @param {string} [base] - */ - (request, reason, base = void 0) => { - return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ""}`; - }, - TypeError -); -codes$1.ERR_INVALID_PACKAGE_CONFIG = createError( - "ERR_INVALID_PACKAGE_CONFIG", - /** - * @param {string} path - * @param {string} [base] - * @param {string} [message] - */ - (path$13, base, message) => { - return `Invalid package config ${path$13}${base ? ` while importing ${base}` : ""}${message ? `. ${message}` : ""}`; - }, - Error -); -codes$1.ERR_INVALID_PACKAGE_TARGET = createError( - "ERR_INVALID_PACKAGE_TARGET", - /** - * @param {string} packagePath - * @param {string} key - * @param {unknown} target - * @param {boolean} [isImport=false] - * @param {string} [base] - */ - (packagePath, key, target, isImport = false, base = void 0) => { - const relatedError = typeof target === "string" && !isImport && target.length > 0 && !target.startsWith("./"); - if (key === ".") { - assert(isImport === false); - return `Invalid "exports" main target ${JSON.stringify(target)} defined in the package config ${packagePath}package.json${base ? ` imported from ${base}` : ""}${relatedError ? "; targets must start with \"./\"" : ""}`; - } - return `Invalid "${isImport ? "imports" : "exports"}" target ${JSON.stringify(target)} defined for '${key}' in the package config ${packagePath}package.json${base ? ` imported from ${base}` : ""}${relatedError ? "; targets must start with \"./\"" : ""}`; - }, - Error -); -codes$1.ERR_MODULE_NOT_FOUND = createError( - "ERR_MODULE_NOT_FOUND", - /** - * @param {string} path - * @param {string} base - * @param {boolean} [exactUrl] - */ - (path$13, base, exactUrl = false) => { - return `Cannot find ${exactUrl ? "module" : "package"} '${path$13}' imported from ${base}`; - }, - Error -); -codes$1.ERR_NETWORK_IMPORT_DISALLOWED = createError("ERR_NETWORK_IMPORT_DISALLOWED", "import of '%s' by %s is not supported: %s", Error); -codes$1.ERR_PACKAGE_IMPORT_NOT_DEFINED = createError( - "ERR_PACKAGE_IMPORT_NOT_DEFINED", - /** - * @param {string} specifier - * @param {string} packagePath - * @param {string} base - */ - (specifier, packagePath, base) => { - return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ""} imported from ${base}`; - }, - TypeError -); -codes$1.ERR_PACKAGE_PATH_NOT_EXPORTED = createError( - "ERR_PACKAGE_PATH_NOT_EXPORTED", - /** - * @param {string} packagePath - * @param {string} subpath - * @param {string} [base] - */ - (packagePath, subpath, base = void 0) => { - if (subpath === ".") return `No "exports" main defined in ${packagePath}package.json${base ? ` imported from ${base}` : ""}`; - return `Package subpath '${subpath}' is not defined by "exports" in ${packagePath}package.json${base ? ` imported from ${base}` : ""}`; - }, - Error -); -codes$1.ERR_UNSUPPORTED_DIR_IMPORT = createError("ERR_UNSUPPORTED_DIR_IMPORT", "Directory import '%s' is not supported resolving ES modules imported from %s", Error); -codes$1.ERR_UNSUPPORTED_RESOLVE_REQUEST = createError("ERR_UNSUPPORTED_RESOLVE_REQUEST", "Failed to resolve module specifier \"%s\" from \"%s\": Invalid relative URL or base scheme is not hierarchical.", TypeError); -codes$1.ERR_UNKNOWN_FILE_EXTENSION = createError( - "ERR_UNKNOWN_FILE_EXTENSION", - /** - * @param {string} extension - * @param {string} path - */ - (extension$1, path$13) => { - return `Unknown file extension "${extension$1}" for ${path$13}`; - }, - TypeError -); -codes$1.ERR_INVALID_ARG_VALUE = createError( - "ERR_INVALID_ARG_VALUE", - /** - * @param {string} name - * @param {unknown} value - * @param {string} [reason='is invalid'] - */ - (name, value$1, reason = "is invalid") => { - let inspected = inspect(value$1); - if (inspected.length > 128) inspected = `${inspected.slice(0, 128)}...`; - return `The ${name.includes(".") ? "property" : "argument"} '${name}' ${reason}. Received ${inspected}`; - }, - TypeError -); -/** -* Utility function for registering the error codes. Only used here. Exported -* *only* to allow for testing. -* @param {string} sym -* @param {MessageFunction | string} value -* @param {ErrorConstructor} constructor -* @returns {new (...parameters: Array) => Error} -*/ -function createError(sym, value$1, constructor) { - messages.set(sym, value$1); - return makeNodeErrorWithCode(constructor, sym); -} -/** -* @param {ErrorConstructor} Base -* @param {string} key -* @returns {ErrorConstructor} -*/ -function makeNodeErrorWithCode(Base, key) { - return NodeError; - /** - * @param {Array} parameters - */ - function NodeError(...parameters) { - const limit = Error.stackTraceLimit; - if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = 0; - const error$1 = new Base(); - if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = limit; - const message = getMessage(key, parameters, error$1); - Object.defineProperties(error$1, { - message: { - value: message, - enumerable: false, - writable: true, - configurable: true - }, - toString: { - value() { - return `${this.name} [${key}]: ${this.message}`; - }, - enumerable: false, - writable: true, - configurable: true - } - }); - captureLargerStackTrace(error$1); - error$1.code = key; - return error$1; - } -} -/** -* @returns {boolean} -*/ -function isErrorStackTraceLimitWritable() { - try { - if (v8.startupSnapshot.isBuildingSnapshot()) return false; - } catch {} - const desc = Object.getOwnPropertyDescriptor(Error, "stackTraceLimit"); - if (desc === void 0) return Object.isExtensible(Error); - return own$1.call(desc, "writable") && desc.writable !== void 0 ? desc.writable : desc.set !== void 0; -} -/** -* This function removes unnecessary frames from Node.js core errors. -* @template {(...parameters: unknown[]) => unknown} T -* @param {T} wrappedFunction -* @returns {T} -*/ -function hideStackFrames(wrappedFunction) { - const hidden = nodeInternalPrefix + wrappedFunction.name; - Object.defineProperty(wrappedFunction, "name", { value: hidden }); - return wrappedFunction; -} -const captureLargerStackTrace = hideStackFrames( - /** - * @param {Error} error - * @returns {Error} - */ - function(error$1) { - const stackTraceLimitIsWritable = isErrorStackTraceLimitWritable(); - if (stackTraceLimitIsWritable) { - userStackTraceLimit = Error.stackTraceLimit; - Error.stackTraceLimit = Number.POSITIVE_INFINITY; - } - Error.captureStackTrace(error$1); - if (stackTraceLimitIsWritable) Error.stackTraceLimit = userStackTraceLimit; - return error$1; - } -); -/** -* @param {string} key -* @param {Array} parameters -* @param {Error} self -* @returns {string} -*/ -function getMessage(key, parameters, self$1) { - const message = messages.get(key); - assert(message !== void 0, "expected `message` to be found"); - if (typeof message === "function") { - assert(message.length <= parameters.length, `Code: ${key}; The provided arguments length (${parameters.length}) does not match the required ones (${message.length}).`); - return Reflect.apply(message, self$1, parameters); - } - const regex = /%[dfijoOs]/g; - let expectedLength = 0; - while (regex.exec(message) !== null) expectedLength++; - assert(expectedLength === parameters.length, `Code: ${key}; The provided arguments length (${parameters.length}) does not match the required ones (${expectedLength}).`); - if (parameters.length === 0) return message; - parameters.unshift(message); - return Reflect.apply(format, null, parameters); -} -/** -* Determine the specific type of a value for type-mismatch errors. -* @param {unknown} value -* @returns {string} -*/ -function determineSpecificType(value$1) { - if (value$1 === null || value$1 === void 0) return String(value$1); - if (typeof value$1 === "function" && value$1.name) return `function ${value$1.name}`; - if (typeof value$1 === "object") { - if (value$1.constructor && value$1.constructor.name) return `an instance of ${value$1.constructor.name}`; - return `${inspect(value$1, { depth: -1 })}`; - } - let inspected = inspect(value$1, { colors: false }); - if (inspected.length > 28) inspected = `${inspected.slice(0, 25)}...`; - return `type ${typeof value$1} (${inspected})`; -} -const ESM_STATIC_IMPORT_RE = /(?<=\s|^|;|\})import\s*(?:[\s"']*(?[\p{L}\p{M}\w\t\n\r $*,/{}@.]+)from\s*)?["']\s*(?(?<="\s*)[^"]*[^\s"](?=\s*")|(?<='\s*)[^']*[^\s'](?=\s*'))\s*["'][\s;]*/gmu; -const TYPE_RE = /^\s*?type\s/; -function parseStaticImport(matched) { - const cleanedImports = clearImports(matched.imports); - const namedImports = {}; - const _matches = cleanedImports.match(/{([^}]*)}/)?.[1]?.split(",") || []; - for (const namedImport of _matches) { - const _match = namedImport.match(/^\s*(\S*) as (\S*)\s*$/); - const source = _match?.[1] || namedImport.trim(); - const importName = _match?.[2] || source; - if (source && !TYPE_RE.test(source)) namedImports[source] = importName; - } - const { namespacedImport, defaultImport } = getImportNames(cleanedImports); - return { - ...matched, - defaultImport, - namespacedImport, - namedImports - }; -} -const ESM_RE = /(?:[\s;]|^)(?:import[\s\w*,{}]*from|import\s*["'*{]|export\b\s*(?:[*{]|default|class|type|function|const|var|let|async function)|import\.meta\b)/m; -const COMMENT_RE = /\/\*.+?\*\/|\/\/.*(?=[nr])/g; -function hasESMSyntax(code, opts = {}) { - if (opts.stripComments) code = code.replace(COMMENT_RE, ""); - return ESM_RE.test(code); -} - -//#endregion -//#region src/node/optimizer/esbuildDepPlugin.ts -const externalWithConversionNamespace = "vite:dep-pre-bundle:external-conversion"; -const convertedExternalPrefix = "vite-dep-pre-bundle-external:"; -const cjsExternalFacadeNamespace = "vite:cjs-external-facade"; -const nonFacadePrefix = "vite-cjs-external-facade:"; -const externalTypes = [ - "css", - "less", - "sass", - "scss", - "styl", - "stylus", - "pcss", - "postcss", - "wasm", - "vue", - "svelte", - "marko", - "astro", - "imba", - "jsx", - "tsx", - ...KNOWN_ASSET_TYPES -]; -function esbuildDepPlugin(environment, qualified, external) { - const { isProduction } = environment.config; - const { extensions: extensions$1 } = environment.config.optimizeDeps; - const allExternalTypes = extensions$1 ? externalTypes.filter((type) => !extensions$1.includes("." + type)) : externalTypes; - const esmPackageCache = /* @__PURE__ */ new Map(); - const cjsPackageCache = /* @__PURE__ */ new Map(); - const _resolve = createBackCompatIdResolver(environment.getTopLevelConfig(), { - asSrc: false, - scan: true, - packageCache: esmPackageCache - }); - const _resolveRequire = createBackCompatIdResolver(environment.getTopLevelConfig(), { - asSrc: false, - isRequire: true, - scan: true, - packageCache: cjsPackageCache - }); - const resolve$4 = (id, importer, kind, resolveDir) => { - let _importer; - if (resolveDir) _importer = normalizePath(path.join(resolveDir, "*")); - else _importer = importer in qualified ? qualified[importer] : importer; - return (kind.startsWith("require") ? _resolveRequire : _resolve)(environment, id, _importer); - }; - const resolveResult = (id, resolved) => { - if (resolved.startsWith(browserExternalId)) return { - path: id, - namespace: "browser-external" - }; - if (resolved.startsWith(optionalPeerDepId)) return { - path: resolved, - namespace: "optional-peer-dep" - }; - if (isBuiltin(environment.config.resolve.builtins, resolved)) return; - if (isExternalUrl(resolved)) return { - path: resolved, - external: true - }; - return { path: path.resolve(resolved) }; - }; - return { - name: "vite:dep-pre-bundle", - setup(build$3) { - build$3.onEnd(() => { - esmPackageCache.clear(); - cjsPackageCache.clear(); - }); - build$3.onResolve({ filter: /* @__PURE__ */ new RegExp(`\\.(` + allExternalTypes.join("|") + `)(\\?.*)?$`) }, async ({ path: id, importer, kind }) => { - if (id.startsWith(convertedExternalPrefix)) return { - path: id.slice(29), - external: true - }; - const resolved = await resolve$4(id, importer, kind); - if (resolved) { - if (JS_TYPES_RE.test(resolved)) return { - path: resolved, - external: false - }; - if (kind === "require-call") return { - path: resolved, - namespace: externalWithConversionNamespace - }; - return { - path: resolved, - external: true - }; - } - }); - build$3.onLoad({ - filter: /./, - namespace: externalWithConversionNamespace - }, (args) => { - const modulePath = `"${convertedExternalPrefix}${args.path}"`; - return { - contents: isCSSRequest(args.path) && !isModuleCSSRequest(args.path) ? `import ${modulePath};` : `export { default } from ${modulePath};export * from ${modulePath};`, - loader: "js" - }; - }); - function resolveEntry(id) { - const flatId = flattenId(id); - if (flatId in qualified) return { path: qualified[flatId] }; - } - build$3.onResolve({ filter: /^[\w@][^:]/ }, async ({ path: id, importer, kind }) => { - if (moduleListContains(external, id)) return { - path: id, - external: true - }; - let entry; - if (!importer) { - if (entry = resolveEntry(id)) return entry; - const aliased = await _resolve(environment, id, void 0, true); - if (aliased && (entry = resolveEntry(aliased))) return entry; - } - const resolved = await resolve$4(id, importer, kind); - if (resolved) return resolveResult(id, resolved); - }); - build$3.onLoad({ - filter: /.*/, - namespace: "browser-external" - }, ({ path: path$13 }) => { - if (isProduction) return { contents: "module.exports = {}" }; - else return { contents: `\ -module.exports = Object.create(new Proxy({}, { - get(_, key) { - if ( - key !== '__esModule' && - key !== '__proto__' && - key !== 'constructor' && - key !== 'splice' - ) { - console.warn(\`Module "${path$13}" has been externalized for browser compatibility. Cannot access "${path$13}.\${key}" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.\`) - } - } -}))` }; - }); - build$3.onLoad({ - filter: /.*/, - namespace: "optional-peer-dep" - }, ({ path: path$13 }) => { - const [, peerDep, parentDep] = path$13.split(":"); - return { contents: `module.exports = {};throw new Error(\`Could not resolve "${peerDep}" imported by "${parentDep}".${isProduction ? "" : " Is it installed?"}\`)` }; - }); - } - }; -} -const matchesEntireLine = (text) => `^${escapeRegex(text)}$`; -function esbuildCjsExternalPlugin(externals, platform$2) { - return { - name: "cjs-external", - setup(build$3) { - const filter$1 = new RegExp(externals.map(matchesEntireLine).join("|")); - build$3.onResolve({ filter: /* @__PURE__ */ new RegExp(`^${nonFacadePrefix}`) }, (args) => { - return { - path: args.path.slice(25), - external: true - }; - }); - build$3.onResolve({ filter: filter$1 }, (args) => { - if (args.kind === "require-call" && platform$2 !== "node") return { - path: args.path, - namespace: cjsExternalFacadeNamespace - }; - return { - path: args.path, - external: true - }; - }); - build$3.onLoad({ - filter: /.*/, - namespace: cjsExternalFacadeNamespace - }, (args) => ({ contents: `\ -import * as m from ${JSON.stringify(nonFacadePrefix + args.path)}; -module.exports = ${isNodeBuiltin(args.path) ? "m.default" : "{ ...m }"}; -` })); - } - }; -} - -//#endregion -//#region src/node/baseEnvironment.ts -var import_picocolors$29 = /* @__PURE__ */ __toESM(require_picocolors(), 1); -const environmentColors = [ - import_picocolors$29.default.blue, - import_picocolors$29.default.magenta, - import_picocolors$29.default.green, - import_picocolors$29.default.gray -]; -var PartialEnvironment = class { - name; - getTopLevelConfig() { - return this._topLevelConfig; - } - config; - logger; - /** - * @internal - */ - _options; - /** - * @internal - */ - _topLevelConfig; - constructor(name, topLevelConfig, options$1 = topLevelConfig.environments[name]) { - if (!/^[\w$]+$/.test(name)) throw new Error(`Invalid environment name "${name}". Environment names must only contain alphanumeric characters and "$", "_".`); - this.name = name; - this._topLevelConfig = topLevelConfig; - this._options = options$1; - this.config = new Proxy(options$1, { get: (target, prop) => { - if (prop === "logger") return this.logger; - if (prop in target) return this._options[prop]; - return this._topLevelConfig[prop]; - } }); - const environment = import_picocolors$29.default.dim(`(${this.name})`); - const infoColor = environmentColors[[...this.name].reduce((acc, c) => acc + c.charCodeAt(0), 0) % environmentColors.length || 0]; - this.logger = { - get hasWarned() { - return topLevelConfig.logger.hasWarned; - }, - info(msg, opts) { - return topLevelConfig.logger.info(msg, { - ...opts, - environment: infoColor(environment) - }); - }, - warn(msg, opts) { - return topLevelConfig.logger.warn(msg, { - ...opts, - environment: import_picocolors$29.default.yellow(environment) - }); - }, - warnOnce(msg, opts) { - return topLevelConfig.logger.warnOnce(msg, { - ...opts, - environment: import_picocolors$29.default.yellow(environment) - }); - }, - error(msg, opts) { - return topLevelConfig.logger.error(msg, { - ...opts, - environment: import_picocolors$29.default.red(environment) - }); - }, - clearScreen(type) { - return topLevelConfig.logger.clearScreen(type); - }, - hasErrorLogged(error$1) { - return topLevelConfig.logger.hasErrorLogged(error$1); - } - }; - } -}; -var BaseEnvironment = class extends PartialEnvironment { - get plugins() { - return this.config.plugins; - } - /** - * @internal - */ - _initiated = false; - constructor(name, config$2, options$1 = config$2.environments[name]) { - super(name, config$2, options$1); - } -}; - -//#endregion -//#region ../../node_modules/.pnpm/js-tokens@9.0.1/node_modules/js-tokens/index.js -var require_js_tokens = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/js-tokens@9.0.1/node_modules/js-tokens/index.js": ((exports, module) => { - var HashbangComment, Identifier, JSXIdentifier, JSXPunctuator, JSXString, JSXText, KeywordsWithExpressionAfter, KeywordsWithNoLineTerminatorAfter, LineTerminatorSequence, MultiLineComment, Newline, NumericLiteral, Punctuator, RegularExpressionLiteral = /\/(?![*\/])(?:\[(?:[^\]\\\n\r\u2028\u2029]+|\\.)*\]?|[^\/[\\\n\r\u2028\u2029]+|\\.)*(\/[$_\u200C\u200D\p{ID_Continue}]*|\\)?/uy, SingleLineComment, StringLiteral, Template, TokensNotPrecedingObjectLiteral, TokensPrecedingExpression, WhiteSpace; - Punctuator = /--|\+\+|=>|\.{3}|\??\.(?!\d)|(?:&&|\|\||\?\?|[+\-%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2}|\/(?![\/*]))=?|[?~,:;[\](){}]/y; - Identifier = /(\x23?)(?=[$_\p{ID_Start}\\])(?:[$_\u200C\u200D\p{ID_Continue}]+|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+/uy; - StringLiteral = /(['"])(?:[^'"\\\n\r]+|(?!\1)['"]|\\(?:\r\n|[^]))*(\1)?/y; - NumericLiteral = /(?:0[xX][\da-fA-F](?:_?[\da-fA-F])*|0[oO][0-7](?:_?[0-7])*|0[bB][01](?:_?[01])*)n?|0n|[1-9](?:_?\d)*n|(?:(?:0(?!\d)|0\d*[89]\d*|[1-9](?:_?\d)*)(?:\.(?:\d(?:_?\d)*)?)?|\.\d(?:_?\d)*)(?:[eE][+-]?\d(?:_?\d)*)?|0[0-7]+/y; - Template = /[`}](?:[^`\\$]+|\\[^]|\$(?!\{))*(`|\$\{)?/y; - WhiteSpace = /[\t\v\f\ufeff\p{Zs}]+/uy; - LineTerminatorSequence = /\r?\n|[\r\u2028\u2029]/y; - MultiLineComment = /\/\*(?:[^*]+|\*(?!\/))*(\*\/)?/y; - SingleLineComment = /\/\/.*/y; - HashbangComment = /^#!.*/; - JSXPunctuator = /[<>.:={}]|\/(?![\/*])/y; - JSXIdentifier = /[$_\p{ID_Start}][$_\u200C\u200D\p{ID_Continue}-]*/uy; - JSXString = /(['"])(?:[^'"]+|(?!\1)['"])*(\1)?/y; - JSXText = /[^<>{}]+/y; - TokensPrecedingExpression = /^(?:[\/+-]|\.{3}|\?(?:InterpolationIn(?:JSX|Template)|NoLineTerminatorHere|NonExpressionParenEnd|UnaryIncDec))?$|[{}([,;<>=*%&|^!~?:]$/; - TokensNotPrecedingObjectLiteral = /^(?:=>|[;\]){}]|else|\?(?:NoLineTerminatorHere|NonExpressionParenEnd))?$/; - KeywordsWithExpressionAfter = /^(?:await|case|default|delete|do|else|instanceof|new|return|throw|typeof|void|yield)$/; - KeywordsWithNoLineTerminatorAfter = /^(?:return|throw|yield)$/; - Newline = RegExp(LineTerminatorSequence.source); - module.exports = function* (input, { jsx = false } = {}) { - var braces$2, firstCodePoint, isExpression, lastIndex, lastSignificantToken, length, match, mode, nextLastIndex, nextLastSignificantToken, parenNesting, postfixIncDec, punctuator, stack; - ({length} = input); - lastIndex = 0; - lastSignificantToken = ""; - stack = [{ tag: "JS" }]; - braces$2 = []; - parenNesting = 0; - postfixIncDec = false; - if (match = HashbangComment.exec(input)) { - yield { - type: "HashbangComment", - value: match[0] - }; - lastIndex = match[0].length; - } - while (lastIndex < length) { - mode = stack[stack.length - 1]; - switch (mode.tag) { - case "JS": - case "JSNonExpressionParen": - case "InterpolationInTemplate": - case "InterpolationInJSX": - if (input[lastIndex] === "/" && (TokensPrecedingExpression.test(lastSignificantToken) || KeywordsWithExpressionAfter.test(lastSignificantToken))) { - RegularExpressionLiteral.lastIndex = lastIndex; - if (match = RegularExpressionLiteral.exec(input)) { - lastIndex = RegularExpressionLiteral.lastIndex; - lastSignificantToken = match[0]; - postfixIncDec = true; - yield { - type: "RegularExpressionLiteral", - value: match[0], - closed: match[1] !== void 0 && match[1] !== "\\" - }; - continue; - } - } - Punctuator.lastIndex = lastIndex; - if (match = Punctuator.exec(input)) { - punctuator = match[0]; - nextLastIndex = Punctuator.lastIndex; - nextLastSignificantToken = punctuator; - switch (punctuator) { - case "(": - if (lastSignificantToken === "?NonExpressionParenKeyword") stack.push({ - tag: "JSNonExpressionParen", - nesting: parenNesting - }); - parenNesting++; - postfixIncDec = false; - break; - case ")": - parenNesting--; - postfixIncDec = true; - if (mode.tag === "JSNonExpressionParen" && parenNesting === mode.nesting) { - stack.pop(); - nextLastSignificantToken = "?NonExpressionParenEnd"; - postfixIncDec = false; - } - break; - case "{": - Punctuator.lastIndex = 0; - isExpression = !TokensNotPrecedingObjectLiteral.test(lastSignificantToken) && (TokensPrecedingExpression.test(lastSignificantToken) || KeywordsWithExpressionAfter.test(lastSignificantToken)); - braces$2.push(isExpression); - postfixIncDec = false; - break; - case "}": - switch (mode.tag) { - case "InterpolationInTemplate": - if (braces$2.length === mode.nesting) { - Template.lastIndex = lastIndex; - match = Template.exec(input); - lastIndex = Template.lastIndex; - lastSignificantToken = match[0]; - if (match[1] === "${") { - lastSignificantToken = "?InterpolationInTemplate"; - postfixIncDec = false; - yield { - type: "TemplateMiddle", - value: match[0] - }; - } else { - stack.pop(); - postfixIncDec = true; - yield { - type: "TemplateTail", - value: match[0], - closed: match[1] === "`" - }; - } - continue; - } - break; - case "InterpolationInJSX": if (braces$2.length === mode.nesting) { - stack.pop(); - lastIndex += 1; - lastSignificantToken = "}"; - yield { - type: "JSXPunctuator", - value: "}" - }; - continue; - } - } - postfixIncDec = braces$2.pop(); - nextLastSignificantToken = postfixIncDec ? "?ExpressionBraceEnd" : "}"; - break; - case "]": - postfixIncDec = true; - break; - case "++": - case "--": - nextLastSignificantToken = postfixIncDec ? "?PostfixIncDec" : "?UnaryIncDec"; - break; - case "<": - if (jsx && (TokensPrecedingExpression.test(lastSignificantToken) || KeywordsWithExpressionAfter.test(lastSignificantToken))) { - stack.push({ tag: "JSXTag" }); - lastIndex += 1; - lastSignificantToken = "<"; - yield { - type: "JSXPunctuator", - value: punctuator - }; - continue; - } - postfixIncDec = false; - break; - default: postfixIncDec = false; - } - lastIndex = nextLastIndex; - lastSignificantToken = nextLastSignificantToken; - yield { - type: "Punctuator", - value: punctuator - }; - continue; - } - Identifier.lastIndex = lastIndex; - if (match = Identifier.exec(input)) { - lastIndex = Identifier.lastIndex; - nextLastSignificantToken = match[0]; - switch (match[0]) { - case "for": - case "if": - case "while": - case "with": if (lastSignificantToken !== "." && lastSignificantToken !== "?.") nextLastSignificantToken = "?NonExpressionParenKeyword"; - } - lastSignificantToken = nextLastSignificantToken; - postfixIncDec = !KeywordsWithExpressionAfter.test(match[0]); - yield { - type: match[1] === "#" ? "PrivateIdentifier" : "IdentifierName", - value: match[0] - }; - continue; - } - StringLiteral.lastIndex = lastIndex; - if (match = StringLiteral.exec(input)) { - lastIndex = StringLiteral.lastIndex; - lastSignificantToken = match[0]; - postfixIncDec = true; - yield { - type: "StringLiteral", - value: match[0], - closed: match[2] !== void 0 - }; - continue; - } - NumericLiteral.lastIndex = lastIndex; - if (match = NumericLiteral.exec(input)) { - lastIndex = NumericLiteral.lastIndex; - lastSignificantToken = match[0]; - postfixIncDec = true; - yield { - type: "NumericLiteral", - value: match[0] - }; - continue; - } - Template.lastIndex = lastIndex; - if (match = Template.exec(input)) { - lastIndex = Template.lastIndex; - lastSignificantToken = match[0]; - if (match[1] === "${") { - lastSignificantToken = "?InterpolationInTemplate"; - stack.push({ - tag: "InterpolationInTemplate", - nesting: braces$2.length - }); - postfixIncDec = false; - yield { - type: "TemplateHead", - value: match[0] - }; - } else { - postfixIncDec = true; - yield { - type: "NoSubstitutionTemplate", - value: match[0], - closed: match[1] === "`" - }; - } - continue; - } - break; - case "JSXTag": - case "JSXTagEnd": - JSXPunctuator.lastIndex = lastIndex; - if (match = JSXPunctuator.exec(input)) { - lastIndex = JSXPunctuator.lastIndex; - nextLastSignificantToken = match[0]; - switch (match[0]) { - case "<": - stack.push({ tag: "JSXTag" }); - break; - case ">": - stack.pop(); - if (lastSignificantToken === "/" || mode.tag === "JSXTagEnd") { - nextLastSignificantToken = "?JSX"; - postfixIncDec = true; - } else stack.push({ tag: "JSXChildren" }); - break; - case "{": - stack.push({ - tag: "InterpolationInJSX", - nesting: braces$2.length - }); - nextLastSignificantToken = "?InterpolationInJSX"; - postfixIncDec = false; - break; - case "/": if (lastSignificantToken === "<") { - stack.pop(); - if (stack[stack.length - 1].tag === "JSXChildren") stack.pop(); - stack.push({ tag: "JSXTagEnd" }); - } - } - lastSignificantToken = nextLastSignificantToken; - yield { - type: "JSXPunctuator", - value: match[0] - }; - continue; - } - JSXIdentifier.lastIndex = lastIndex; - if (match = JSXIdentifier.exec(input)) { - lastIndex = JSXIdentifier.lastIndex; - lastSignificantToken = match[0]; - yield { - type: "JSXIdentifier", - value: match[0] - }; - continue; - } - JSXString.lastIndex = lastIndex; - if (match = JSXString.exec(input)) { - lastIndex = JSXString.lastIndex; - lastSignificantToken = match[0]; - yield { - type: "JSXString", - value: match[0], - closed: match[2] !== void 0 - }; - continue; - } - break; - case "JSXChildren": - JSXText.lastIndex = lastIndex; - if (match = JSXText.exec(input)) { - lastIndex = JSXText.lastIndex; - lastSignificantToken = match[0]; - yield { - type: "JSXText", - value: match[0] - }; - continue; - } - switch (input[lastIndex]) { - case "<": - stack.push({ tag: "JSXTag" }); - lastIndex++; - lastSignificantToken = "<"; - yield { - type: "JSXPunctuator", - value: "<" - }; - continue; - case "{": - stack.push({ - tag: "InterpolationInJSX", - nesting: braces$2.length - }); - lastIndex++; - lastSignificantToken = "?InterpolationInJSX"; - postfixIncDec = false; - yield { - type: "JSXPunctuator", - value: "{" - }; - continue; - } - } - WhiteSpace.lastIndex = lastIndex; - if (match = WhiteSpace.exec(input)) { - lastIndex = WhiteSpace.lastIndex; - yield { - type: "WhiteSpace", - value: match[0] - }; - continue; - } - LineTerminatorSequence.lastIndex = lastIndex; - if (match = LineTerminatorSequence.exec(input)) { - lastIndex = LineTerminatorSequence.lastIndex; - postfixIncDec = false; - if (KeywordsWithNoLineTerminatorAfter.test(lastSignificantToken)) lastSignificantToken = "?NoLineTerminatorHere"; - yield { - type: "LineTerminatorSequence", - value: match[0] - }; - continue; - } - MultiLineComment.lastIndex = lastIndex; - if (match = MultiLineComment.exec(input)) { - lastIndex = MultiLineComment.lastIndex; - if (Newline.test(match[0])) { - postfixIncDec = false; - if (KeywordsWithNoLineTerminatorAfter.test(lastSignificantToken)) lastSignificantToken = "?NoLineTerminatorHere"; - } - yield { - type: "MultiLineComment", - value: match[0], - closed: match[1] !== void 0 - }; - continue; - } - SingleLineComment.lastIndex = lastIndex; - if (match = SingleLineComment.exec(input)) { - lastIndex = SingleLineComment.lastIndex; - postfixIncDec = false; - yield { - type: "SingleLineComment", - value: match[0] - }; - continue; - } - firstCodePoint = String.fromCodePoint(input.codePointAt(lastIndex)); - lastIndex += firstCodePoint.length; - lastSignificantToken = firstCodePoint; - postfixIncDec = false; - yield { - type: mode.tag.startsWith("JSX") ? "JSXInvalid" : "Invalid", - value: firstCodePoint - }; - } - }; -}) }); - -//#endregion -//#region ../../node_modules/.pnpm/strip-literal@3.1.0/node_modules/strip-literal/dist/index.mjs -var import_js_tokens = /* @__PURE__ */ __toESM(require_js_tokens(), 1); -const FILL_COMMENT = " "; -function stripLiteralFromToken(token, fillChar, filter$1) { - if (token.type === "SingleLineComment") return FILL_COMMENT.repeat(token.value.length); - if (token.type === "MultiLineComment") return token.value.replace(/[^\n]/g, FILL_COMMENT); - if (token.type === "StringLiteral") { - if (!token.closed) return token.value; - const body = token.value.slice(1, -1); - if (filter$1(body)) return token.value[0] + fillChar.repeat(body.length) + token.value[token.value.length - 1]; - } - if (token.type === "NoSubstitutionTemplate") { - const body = token.value.slice(1, -1); - if (filter$1(body)) return `\`${body.replace(/[^\n]/g, fillChar)}\``; - } - if (token.type === "RegularExpressionLiteral") { - const body = token.value; - if (filter$1(body)) return body.replace(/\/(.*)\/(\w?)$/g, (_, $1, $2) => `/${fillChar.repeat($1.length)}/${$2}`); - } - if (token.type === "TemplateHead") { - const body = token.value.slice(1, -2); - if (filter$1(body)) return `\`${body.replace(/[^\n]/g, fillChar)}\${`; - } - if (token.type === "TemplateTail") { - const body = token.value.slice(0, -2); - if (filter$1(body)) return `}${body.replace(/[^\n]/g, fillChar)}\``; - } - if (token.type === "TemplateMiddle") { - const body = token.value.slice(1, -2); - if (filter$1(body)) return `}${body.replace(/[^\n]/g, fillChar)}\${`; - } - return token.value; -} -function optionsWithDefaults(options$1) { - return { - fillChar: options$1?.fillChar ?? " ", - filter: options$1?.filter ?? (() => true) - }; -} -function stripLiteral(code, options$1) { - let result = ""; - const _options = optionsWithDefaults(options$1); - for (const token of (0, import_js_tokens.default)(code, { jsx: false })) result += stripLiteralFromToken(token, _options.fillChar, _options.filter); - return result; -} - -//#endregion -//#region src/node/plugins/importMetaGlob.ts -var import_picocolors$28 = /* @__PURE__ */ __toESM(require_picocolors(), 1); -function importGlobPlugin(config$2) { - const importGlobMaps = /* @__PURE__ */ new Map(); - return { - name: "vite:import-glob", - buildStart() { - importGlobMaps.clear(); - }, - transform: { - filter: { code: "import.meta.glob" }, - async handler(code, id) { - const result = await transformGlobImport(code, id, config$2.root, (im, _, options$1) => this.resolve(im, id, options$1).then((i$1) => i$1?.id || im), config$2.experimental.importGlobRestoreExtension, config$2.logger); - if (result) { - const allGlobs = result.matches.map((i$1) => i$1.globsResolved); - if (!importGlobMaps.has(this.environment)) importGlobMaps.set(this.environment, /* @__PURE__ */ new Map()); - const globMatchers = allGlobs.map((globs) => { - const affirmed = []; - const negated = []; - for (const glob$1 of globs) if (glob$1[0] === "!") negated.push(glob$1.slice(1)); - else affirmed.push(glob$1); - const affirmedMatcher = picomatch(affirmed); - const negatedMatcher = picomatch(negated); - return (file) => { - return (affirmed.length === 0 || affirmedMatcher(file)) && !(negated.length > 0 && negatedMatcher(file)); - }; - }); - importGlobMaps.get(this.environment).set(id, globMatchers); - return transformStableResult(result.s, id, config$2); - } - } - }, - hotUpdate({ type, file, modules: oldModules }) { - if (type === "update") return; - const importGlobMap = importGlobMaps.get(this.environment); - if (!importGlobMap) return; - const modules = []; - for (const [id, globMatchers] of importGlobMap) if (globMatchers.some((matcher) => matcher(file))) { - const mod = this.environment.moduleGraph.getModuleById(id); - if (mod) modules.push(mod); - } - return modules.length > 0 ? [...oldModules, ...modules] : void 0; - } - }; -} -const importGlobRE = /\bimport\.meta\.glob(?:<\w+>)?\s*\(/g; -const objectKeysRE = /\bObject\.keys\(\s*$/; -const objectValuesRE = /\bObject\.values\(\s*$/; -const knownOptions = { - as: ["string"], - eager: ["boolean"], - import: ["string"], - exhaustive: ["boolean"], - query: ["object", "string"], - base: ["string"] -}; -const forceDefaultAs = ["raw", "url"]; -function err$1(e$1, pos) { - const error$1 = new Error(e$1); - error$1.pos = pos; - return error$1; -} -function parseGlobOptions(rawOpts, optsStartIndex, logger) { - let opts = {}; - try { - opts = evalValue(rawOpts); - } catch { - throw err$1("Vite is unable to parse the glob options as the value is not static", optsStartIndex); - } - if (opts == null) return {}; - for (const key in opts) { - if (!(key in knownOptions)) throw err$1(`Unknown glob option "${key}"`, optsStartIndex); - const allowedTypes = knownOptions[key]; - const valueType = typeof opts[key]; - if (!allowedTypes.includes(valueType)) throw err$1(`Expected glob option "${key}" to be of type ${allowedTypes.join(" or ")}, but got ${valueType}`, optsStartIndex); - } - if (opts.base) { - if (opts.base[0] === "!") throw err$1("Option \"base\" cannot start with \"!\"", optsStartIndex); - else if (opts.base[0] !== "/" && !opts.base.startsWith("./") && !opts.base.startsWith("../")) throw err$1(`Option "base" must start with '/', './' or '../', but got "${opts.base}"`, optsStartIndex); - } - if (typeof opts.query === "object") { - for (const key in opts.query) { - const value$1 = opts.query[key]; - if (![ - "string", - "number", - "boolean" - ].includes(typeof value$1)) throw err$1(`Expected glob option "query.${key}" to be of type string, number, or boolean, but got ${typeof value$1}`, optsStartIndex); - } - opts.query = stringifyQuery(opts.query); - } - if (opts.as && logger) { - const importSuggestion = forceDefaultAs.includes(opts.as) ? `, import: 'default'` : ""; - logger.warn(import_picocolors$28.default.yellow(`The glob option "as" has been deprecated in favour of "query". Please update \`as: '${opts.as}'\` to \`query: '?${opts.as}'${importSuggestion}\`.`)); - } - if (opts.as && forceDefaultAs.includes(opts.as)) { - if (opts.import && opts.import !== "default" && opts.import !== "*") throw err$1(`Option "import" can only be "default" or "*" when "as" is "${opts.as}", but got "${opts.import}"`, optsStartIndex); - opts.import = opts.import || "default"; - } - if (opts.as && opts.query) throw err$1("Options \"as\" and \"query\" cannot be used together", optsStartIndex); - if (opts.as) opts.query = opts.as; - if (opts.query && opts.query[0] !== "?") opts.query = `?${opts.query}`; - return opts; -} -async function parseImportGlob(code, importer, root, resolveId, logger) { - let cleanCode; - try { - cleanCode = stripLiteral(code); - } catch { - return []; - } - const tasks = Array.from(cleanCode.matchAll(importGlobRE)).map(async (match, index) => { - const start = match.index; - const err$2 = (msg) => { - const e$1 = /* @__PURE__ */ new Error(`Invalid glob import syntax: ${msg}`); - e$1.pos = start; - return e$1; - }; - const end = findCorrespondingCloseParenthesisPosition(cleanCode, start + match[0].length) + 1; - if (end <= 0) throw err$2("Close parenthesis not found"); - const rootAst = (await parseAstAsync(code.slice(start, end))).body[0]; - if (rootAst.type !== "ExpressionStatement") throw err$2(`Expect CallExpression, got ${rootAst.type}`); - const ast = rootAst.expression; - if (ast.type !== "CallExpression") throw err$2(`Expect CallExpression, got ${ast.type}`); - if (ast.arguments.length < 1 || ast.arguments.length > 2) throw err$2(`Expected 1-2 arguments, but got ${ast.arguments.length}`); - const arg1 = ast.arguments[0]; - const arg2 = ast.arguments[1]; - const globs = []; - const validateLiteral = (element) => { - if (!element) return; - if (element.type === "Literal") { - if (typeof element.value !== "string") throw err$2(`Expected glob to be a string, but got "${typeof element.value}"`); - globs.push(element.value); - } else if (element.type === "TemplateLiteral") { - if (element.expressions.length !== 0) throw err$2(`Expected glob to be a string, but got dynamic template literal`); - globs.push(element.quasis[0].value.raw); - } else throw err$2("Could only use literals"); - }; - if (arg1.type === "ArrayExpression") for (const element of arg1.elements) validateLiteral(element); - else validateLiteral(arg1); - let options$1 = {}; - if (arg2) { - if (arg2.type !== "ObjectExpression") throw err$2(`Expected the second argument to be an object literal, but got "${arg2.type}"`); - options$1 = parseGlobOptions(code.slice(start + arg2.start, start + arg2.end), start + arg2.start, logger); - } - const globsResolved = await Promise.all(globs.map((glob$1) => toAbsoluteGlob(glob$1, root, importer, resolveId, options$1.base))); - const isRelative$1 = globs.every((i$1) => ".!".includes(i$1[0])); - const sliceCode = cleanCode.slice(0, start); - const onlyKeys = objectKeysRE.test(sliceCode); - let onlyValues = false; - if (!onlyKeys) onlyValues = objectValuesRE.test(sliceCode); - return { - index, - globs, - globsResolved, - isRelative: isRelative$1, - options: options$1, - start, - end, - onlyKeys, - onlyValues - }; - }); - return (await Promise.all(tasks)).filter(Boolean); -} -function findCorrespondingCloseParenthesisPosition(cleanCode, openPos) { - const closePos = cleanCode.indexOf(")", openPos); - if (closePos < 0) return -1; - if (!cleanCode.slice(openPos, closePos).includes("(")) return closePos; - let remainingParenthesisCount = 0; - const cleanCodeLen = cleanCode.length; - for (let pos = openPos; pos < cleanCodeLen; pos++) switch (cleanCode[pos]) { - case "(": - remainingParenthesisCount++; - break; - case ")": - remainingParenthesisCount--; - if (remainingParenthesisCount <= 0) return pos; - } - return -1; -} -const importPrefix = "__vite_glob_"; -const { basename: basename$2, dirname: dirname$2, relative: relative$2 } = posix; -/** -* @param optimizeExport for dynamicImportVar plugin don't need to optimize export. -*/ -async function transformGlobImport(code, id, root, resolveId, restoreQueryExtension = false, logger) { - id = slash(id); - root = slash(root); - const isVirtual = isVirtualModule(id); - const dir = isVirtual ? void 0 : dirname$2(id); - const matches$2 = await parseImportGlob(code, isVirtual ? void 0 : id, root, resolveId, logger); - const matchedFiles = /* @__PURE__ */ new Set(); - if (!matches$2.length) return null; - const s$2 = new MagicString(code); - const staticImports = (await Promise.all(matches$2.map(async ({ globsResolved, isRelative: isRelative$1, options: options$1, index, start, end, onlyKeys, onlyValues }) => { - const files = (await glob(globsResolved, { - absolute: true, - cwd: getCommonBase(globsResolved) ?? root, - dot: !!options$1.exhaustive, - expandDirectories: false, - ignore: options$1.exhaustive ? [] : ["**/node_modules/**"] - })).filter((file) => file !== id).sort(); - const objectProps = []; - const staticImports$1 = []; - const resolvePaths = (file) => { - if (!dir) { - if (!options$1.base && isRelative$1) throw new Error("In virtual modules, all globs must start with '/'"); - const importPath$1 = `/${relative$2(root, file)}`; - let filePath$1 = options$1.base ? `${relative$2(posix.join(root, options$1.base), file)}` : importPath$1; - if (options$1.base && !filePath$1.startsWith("./") && !filePath$1.startsWith("../")) filePath$1 = `./${filePath$1}`; - return { - filePath: filePath$1, - importPath: importPath$1 - }; - } - let importPath = relative$2(dir, file); - if (!importPath.startsWith("./") && !importPath.startsWith("../")) importPath = `./${importPath}`; - let filePath; - if (options$1.base) { - filePath = relative$2(posix.join(options$1.base[0] === "/" ? root : dir, options$1.base), file); - if (!filePath.startsWith("./") && !filePath.startsWith("../")) filePath = `./${filePath}`; - if (options$1.base[0] === "/") importPath = `/${relative$2(root, file)}`; - } else if (isRelative$1) filePath = importPath; - else { - filePath = relative$2(root, file); - if (!filePath.startsWith("./") && !filePath.startsWith("../")) filePath = `/${filePath}`; - } - return { - filePath, - importPath - }; - }; - files.forEach((file, i$1) => { - const paths = resolvePaths(file); - const filePath = paths.filePath; - let importPath = paths.importPath; - let importQuery = options$1.query ?? ""; - if (onlyKeys) { - objectProps.push(`${JSON.stringify(filePath)}: 0`); - return; - } - if (importQuery && importQuery !== "?raw") { - const fileExtension = basename$2(file).split(".").slice(-1)[0]; - if (fileExtension && restoreQueryExtension) importQuery = `${importQuery}&lang.${fileExtension}`; - } - importPath = `${importPath}${importQuery}`; - const importKey = options$1.import && options$1.import !== "*" ? options$1.import : void 0; - if (options$1.eager) { - const variableName = `${importPrefix}${index}_${i$1}`; - const expression = importKey ? `{ ${importKey} as ${variableName} }` : `* as ${variableName}`; - staticImports$1.push(`import ${expression} from ${JSON.stringify(importPath)}`); - objectProps.push(onlyValues ? `${variableName}` : `${JSON.stringify(filePath)}: ${variableName}`); - } else { - let importStatement = `import(${JSON.stringify(importPath)})`; - if (importKey) importStatement += `.then(m => m[${JSON.stringify(importKey)}])`; - objectProps.push(onlyValues ? `() => ${importStatement}` : `${JSON.stringify(filePath)}: () => ${importStatement}`); - } - }); - files.forEach((i$1) => matchedFiles.add(i$1)); - const originalLineBreakCount = code.slice(start, end).match(/\n/g)?.length ?? 0; - const lineBreaks = originalLineBreakCount > 0 ? "\n".repeat(originalLineBreakCount) : ""; - let replacement = ""; - if (onlyKeys) replacement = `{${objectProps.join(",")}${lineBreaks}}`; - else if (onlyValues) replacement = `[${objectProps.join(",")}${lineBreaks}]`; - else replacement = `/* #__PURE__ */ Object.assign({${objectProps.join(",")}${lineBreaks}})`; - s$2.overwrite(start, end, replacement); - return staticImports$1; - }))).flat(); - if (staticImports.length) s$2.prepend(`${staticImports.join(";")};`); - return { - s: s$2, - matches: matches$2, - files: matchedFiles - }; -} -function globSafePath(path$13) { - return escapePath(normalizePath(path$13)); -} -function lastNthChar(str, n$2) { - return str.charAt(str.length - 1 - n$2); -} -function globSafeResolvedPath(resolved, glob$1) { - let numEqual = 0; - const maxEqual = Math.min(resolved.length, glob$1.length); - while (numEqual < maxEqual && lastNthChar(resolved, numEqual) === lastNthChar(glob$1, numEqual)) numEqual += 1; - const staticPartEnd = resolved.length - numEqual; - const staticPart = resolved.slice(0, staticPartEnd); - const dynamicPart = resolved.slice(staticPartEnd); - return globSafePath(staticPart) + dynamicPart; -} -async function toAbsoluteGlob(glob$1, root, importer, resolveId, base) { - let pre = ""; - if (glob$1[0] === "!") { - pre = "!"; - glob$1 = glob$1.slice(1); - } - root = globSafePath(root); - let dir; - if (base) if (base[0] === "/") dir = posix.join(root, base); - else dir = posix.resolve(importer ? globSafePath(dirname$2(importer)) : root, base); - else dir = importer ? globSafePath(dirname$2(importer)) : root; - if (glob$1[0] === "/") return pre + posix.join(root, glob$1.slice(1)); - if (glob$1.startsWith("./")) return pre + posix.join(dir, glob$1.slice(2)); - if (glob$1.startsWith("../")) return pre + posix.join(dir, glob$1); - if (glob$1.startsWith("**")) return pre + glob$1; - const isSubImportsPattern = glob$1[0] === "#" && glob$1.includes("*"); - const resolved = normalizePath(await resolveId(glob$1, importer, { custom: { "vite:import-glob": { isSubImportsPattern } } }) || glob$1); - if (isAbsolute(resolved)) return pre + globSafeResolvedPath(resolved, glob$1); - throw new Error(`Invalid glob: "${glob$1}" (resolved: "${resolved}"). It must start with '/' or './'`); -} -function getCommonBase(globsResolved) { - const bases = globsResolved.filter((g) => g[0] !== "!").map((glob$1) => { - let { base } = picomatch.scan(glob$1); - if (posix.basename(base).includes(".")) base = posix.dirname(base); - return base; - }); - if (!bases.length) return null; - let commonAncestor = ""; - const dirS = bases[0].split("/"); - for (let i$1 = 0; i$1 < dirS.length; i$1++) { - const candidate = dirS.slice(0, i$1 + 1).join("/"); - if (bases.every((base) => base.startsWith(candidate))) commonAncestor = candidate; - else break; - } - if (!commonAncestor) commonAncestor = "/"; - return commonAncestor; -} -function isVirtualModule(id) { - return id.startsWith("virtual:") || id[0] === "\0" || !id.includes("/"); -} - -//#endregion -//#region src/node/optimizer/scan.ts -var import_picocolors$27 = /* @__PURE__ */ __toESM(require_picocolors(), 1); -var ScanEnvironment = class extends BaseEnvironment { - mode = "scan"; - get pluginContainer() { - if (!this._pluginContainer) throw new Error(`${this.name} environment.pluginContainer called before initialized`); - return this._pluginContainer; - } - /** - * @internal - */ - _pluginContainer; - async init() { - if (this._initiated) return; - this._initiated = true; - this._pluginContainer = await createEnvironmentPluginContainer(this, this.plugins, void 0, false); - } -}; -function devToScanEnvironment(environment) { - return { - mode: "scan", - get name() { - return environment.name; - }, - getTopLevelConfig() { - return environment.getTopLevelConfig(); - }, - get config() { - return environment.config; - }, - get logger() { - return environment.logger; - }, - get pluginContainer() { - return environment.pluginContainer; - }, - get plugins() { - return environment.plugins; - } - }; -} -const debug$15 = createDebugger("vite:deps"); -const htmlTypesRE = /\.(html|vue|svelte|astro|imba)$/; -const importsRE = /(? context?.cancel()); - } - async function scan() { - const entries = await computeEntries(environment); - if (!entries.length) { - if (!config$2.optimizeDeps.entries && !config$2.optimizeDeps.include) environment.logger.warn(import_picocolors$27.default.yellow("(!) Could not auto-determine entry point from rollupOptions or html files and there are no explicit optimizeDeps.include patterns. Skipping dependency pre-bundling.")); - return; - } - if (scanContext.cancelled) return; - debug$15?.(`Crawling dependencies using entries: ${entries.map((entry) => `\n ${import_picocolors$27.default.dim(entry)}`).join("")}`); - const deps = {}; - const missing = {}; - let context; - try { - esbuildContext = prepareEsbuildScanner(environment, entries, deps, missing); - context = await esbuildContext; - if (scanContext.cancelled) return; - try { - await context.rebuild(); - return { - deps: orderedDependencies(deps), - missing - }; - } catch (e$1) { - if (e$1.errors && e$1.message.includes("The build was canceled")) return; - const prependMessage = import_picocolors$27.default.red(`\ - Failed to scan for dependencies from entries: - ${entries.join("\n")} - - `); - if (e$1.errors) e$1.message = prependMessage + (await formatMessages(e$1.errors, { - kind: "error", - color: true - })).join("\n"); - else e$1.message = prependMessage + e$1.message; - throw e$1; - } finally { - if (debug$15) debug$15(`Scan completed in ${(performance$1.now() - start).toFixed(2)}ms: ${Object.keys(orderedDependencies(deps)).sort().map((id) => `\n ${import_picocolors$27.default.cyan(id)} -> ${import_picocolors$27.default.dim(deps[id])}`).join("") || import_picocolors$27.default.dim("no dependencies found")}`); - } - } finally { - context?.dispose().catch((e$1) => { - environment.logger.error("Failed to dispose esbuild context", { error: e$1 }); - }); - } - } - return { - cancel, - result: scan().then((res) => res ?? { - deps: {}, - missing: {} - }) - }; -} -async function computeEntries(environment) { - let entries = []; - const explicitEntryPatterns = environment.config.optimizeDeps.entries; - const buildInput = environment.config.build.rollupOptions.input; - if (explicitEntryPatterns) entries = await globEntries(explicitEntryPatterns, environment); - else if (buildInput) { - const resolvePath = async (p) => { - const id = (await environment.pluginContainer.resolveId(p, path.join(process.cwd(), "*"), { - isEntry: true, - scan: true - }))?.id; - if (id === void 0) throw new Error(`failed to resolve rollupOptions.input value: ${JSON.stringify(p)}.`); - return id; - }; - if (typeof buildInput === "string") entries = [await resolvePath(buildInput)]; - else if (Array.isArray(buildInput)) entries = await Promise.all(buildInput.map(resolvePath)); - else if (isObject(buildInput)) entries = await Promise.all(Object.values(buildInput).map(resolvePath)); - else throw new Error("invalid rollupOptions.input value."); - } else entries = await globEntries("**/*.html", environment); - entries = entries.filter((entry) => isScannable(entry, environment.config.optimizeDeps.extensions) && fs.existsSync(entry)); - return entries; -} -async function prepareEsbuildScanner(environment, entries, deps, missing) { - const plugin = esbuildScanPlugin(environment, deps, missing, entries); - const { plugins: plugins$1 = [],...esbuildOptions } = environment.config.optimizeDeps.esbuildOptions ?? {}; - let tsconfigRaw = esbuildOptions.tsconfigRaw; - if (!tsconfigRaw && !esbuildOptions.tsconfig) { - const { tsconfig } = await loadTsconfigJsonForFile(path.join(environment.config.root, "_dummy.js")); - if (tsconfig.compilerOptions?.experimentalDecorators || tsconfig.compilerOptions?.jsx || tsconfig.compilerOptions?.jsxFactory || tsconfig.compilerOptions?.jsxFragmentFactory || tsconfig.compilerOptions?.jsxImportSource) tsconfigRaw = { compilerOptions: { - experimentalDecorators: tsconfig.compilerOptions?.experimentalDecorators, - jsx: esbuildOptions.jsx ? void 0 : tsconfig.compilerOptions?.jsx, - jsxFactory: esbuildOptions.jsxFactory ? void 0 : tsconfig.compilerOptions?.jsxFactory, - jsxFragmentFactory: esbuildOptions.jsxFragment ? void 0 : tsconfig.compilerOptions?.jsxFragmentFactory, - jsxImportSource: esbuildOptions.jsxImportSource ? void 0 : tsconfig.compilerOptions?.jsxImportSource - } }; - } - return await esbuild.context({ - absWorkingDir: process.cwd(), - write: false, - stdin: { - contents: entries.map((e$1) => `import ${JSON.stringify(e$1)}`).join("\n"), - loader: "js" - }, - bundle: true, - format: "esm", - logLevel: "silent", - plugins: [...plugins$1, plugin], - jsxDev: !environment.config.isProduction, - ...esbuildOptions, - tsconfigRaw - }); -} -function orderedDependencies(deps) { - const depsList = Object.entries(deps); - depsList.sort((a, b) => a[0].localeCompare(b[0])); - return Object.fromEntries(depsList); -} -async function globEntries(patterns, environment) { - const nodeModulesPatterns = []; - const regularPatterns = []; - for (const pattern of arraify(patterns)) if (pattern.includes("node_modules")) nodeModulesPatterns.push(pattern); - else regularPatterns.push(pattern); - const sharedOptions = { - absolute: true, - cwd: environment.config.root, - ignore: [`**/${environment.config.build.outDir}/**`, ...environment.config.optimizeDeps.entries ? [] : [`**/__tests__/**`, `**/coverage/**`]] - }; - return (await Promise.all([glob(nodeModulesPatterns, sharedOptions), glob(regularPatterns, { - ...sharedOptions, - ignore: [...sharedOptions.ignore, "**/node_modules/**"] - })])).flat(); -} -const scriptRE = /(=\s]+))?)*\s*>)(.*?)<\/script>/gis; -const commentRE$1 = //gs; -const srcRE = /\bsrc\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/i; -const typeRE = /\btype\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/i; -const langRE = /\blang\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/i; -const svelteScriptModuleRE = /\bcontext\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/i; -const svelteModuleRE = /\smodule\b/i; -function esbuildScanPlugin(environment, depImports, missing, entries) { - const seen$1 = /* @__PURE__ */ new Map(); - async function resolveId(id, importer) { - return environment.pluginContainer.resolveId(id, importer && normalizePath(importer), { scan: true }); - } - const resolve$4 = async (id, importer) => { - const key = id + (importer && path.dirname(importer)); - if (seen$1.has(key)) return seen$1.get(key); - const res = (await resolveId(id, importer))?.id; - seen$1.set(key, res); - return res; - }; - const optimizeDepsOptions = environment.config.optimizeDeps; - const include = optimizeDepsOptions.include; - const exclude = [ - ...optimizeDepsOptions.exclude ?? [], - "@vite/client", - "@vite/env" - ]; - const isUnlessEntry = (path$13) => !entries.includes(path$13); - const externalUnlessEntry = ({ path: path$13 }) => ({ - path: path$13, - external: isUnlessEntry(path$13) - }); - const doTransformGlobImport = async (contents, id, loader$1) => { - let transpiledContents; - if (loader$1 !== "js") transpiledContents = (await transform(contents, { loader: loader$1 })).code; - else transpiledContents = contents; - return (await transformGlobImport(transpiledContents, id, environment.config.root, resolve$4))?.s.toString() || transpiledContents; - }; - return { - name: "vite:dep-scan", - setup(build$3) { - const scripts = {}; - build$3.onResolve({ filter: externalRE }, ({ path: path$13 }) => ({ - path: path$13, - external: true - })); - build$3.onResolve({ filter: dataUrlRE }, ({ path: path$13 }) => ({ - path: path$13, - external: true - })); - build$3.onResolve({ filter: virtualModuleRE }, ({ path: path$13 }) => { - return { - path: path$13.replace(virtualModulePrefix, ""), - namespace: "script" - }; - }); - build$3.onLoad({ - filter: /.*/, - namespace: "script" - }, ({ path: path$13 }) => { - return scripts[path$13]; - }); - build$3.onResolve({ filter: htmlTypesRE }, async ({ path: path$13, importer }) => { - const resolved = await resolve$4(path$13, importer); - if (!resolved) return; - if (isInNodeModules(resolved) && isOptimizable(resolved, optimizeDepsOptions)) return; - return { - path: resolved, - namespace: "html" - }; - }); - const htmlTypeOnLoadCallback = async ({ path: p }) => { - let raw = await fsp.readFile(p, "utf-8"); - raw = raw.replace(commentRE$1, ""); - const isHtml = p.endsWith(".html"); - let js = ""; - let scriptId = 0; - const matches$2 = raw.matchAll(scriptRE); - for (const [, openTag, content] of matches$2) { - const typeMatch = typeRE.exec(openTag); - const type = typeMatch && (typeMatch[1] || typeMatch[2] || typeMatch[3]); - const langMatch = langRE.exec(openTag); - const lang = langMatch && (langMatch[1] || langMatch[2] || langMatch[3]); - if (isHtml && type !== "module") continue; - if (type && !(type.includes("javascript") || type.includes("ecmascript") || type === "module")) continue; - let loader$1 = "js"; - if (lang === "ts" || lang === "tsx" || lang === "jsx") loader$1 = lang; - else if (p.endsWith(".astro")) loader$1 = "ts"; - const srcMatch = srcRE.exec(openTag); - if (srcMatch) { - const src = srcMatch[1] || srcMatch[2] || srcMatch[3]; - js += `import ${JSON.stringify(src)}\n`; - } else if (content.trim()) { - const contents = content + (loader$1.startsWith("ts") ? extractImportPaths(content) : ""); - const key = `${p}?id=${scriptId++}`; - if (contents.includes("import.meta.glob")) scripts[key] = { - loader: "js", - contents: await doTransformGlobImport(contents, p, loader$1), - resolveDir: normalizePath(path.dirname(p)), - pluginData: { htmlType: { loader: loader$1 } } - }; - else scripts[key] = { - loader: loader$1, - contents, - resolveDir: normalizePath(path.dirname(p)), - pluginData: { htmlType: { loader: loader$1 } } - }; - const virtualModulePath = JSON.stringify(virtualModulePrefix + key); - let addedImport = false; - if (p.endsWith(".svelte")) { - let isModule = svelteModuleRE.test(openTag); - if (!isModule) { - const contextMatch = svelteScriptModuleRE.exec(openTag); - isModule = (contextMatch && (contextMatch[1] || contextMatch[2] || contextMatch[3])) === "module"; - } - if (!isModule) { - addedImport = true; - js += `import ${virtualModulePath}\n`; - } - } - if (!addedImport) js += `export * from ${virtualModulePath}\n`; - } - } - if (!p.endsWith(".vue") || !js.includes("export default")) js += "\nexport default {}"; - return { - loader: "js", - contents: js - }; - }; - build$3.onLoad({ - filter: htmlTypesRE, - namespace: "html" - }, htmlTypeOnLoadCallback); - build$3.onLoad({ - filter: htmlTypesRE, - namespace: "file" - }, htmlTypeOnLoadCallback); - build$3.onResolve({ filter: /^[\w@][^:]/ }, async ({ path: id, importer }) => { - if (moduleListContains(exclude, id)) return externalUnlessEntry({ path: id }); - if (depImports[id]) return externalUnlessEntry({ path: id }); - const resolved = await resolve$4(id, importer); - if (resolved) { - if (shouldExternalizeDep(resolved, id)) return externalUnlessEntry({ path: id }); - if (isInNodeModules(resolved) || include?.includes(id)) { - if (isOptimizable(resolved, optimizeDepsOptions)) depImports[id] = resolved; - return externalUnlessEntry({ path: id }); - } else if (isScannable(resolved, optimizeDepsOptions.extensions)) { - const namespace = htmlTypesRE.test(resolved) ? "html" : void 0; - return { - path: path.resolve(resolved), - namespace - }; - } else return externalUnlessEntry({ path: id }); - } else missing[id] = normalizePath(importer); - }); - const setupExternalize = (filter$1, doExternalize) => { - build$3.onResolve({ filter: filter$1 }, ({ path: path$13 }) => { - return { - path: path$13, - external: doExternalize(path$13) - }; - }); - }; - setupExternalize(CSS_LANGS_RE, isUnlessEntry); - setupExternalize(/\.(json|json5|wasm)$/, isUnlessEntry); - setupExternalize(/* @__PURE__ */ new RegExp(`\\.(${KNOWN_ASSET_TYPES.join("|")})$`), isUnlessEntry); - setupExternalize(SPECIAL_QUERY_RE, () => true); - build$3.onResolve({ filter: /.*/ }, async ({ path: id, importer }) => { - const resolved = await resolve$4(id, importer); - if (resolved) { - if (shouldExternalizeDep(resolved, id) || !isScannable(resolved, optimizeDepsOptions.extensions)) return externalUnlessEntry({ path: id }); - const namespace = htmlTypesRE.test(resolved) ? "html" : void 0; - return { - path: path.resolve(cleanUrl(resolved)), - namespace - }; - } else return externalUnlessEntry({ path: id }); - }); - build$3.onLoad({ filter: JS_TYPES_RE }, async ({ path: id }) => { - let ext = path.extname(id).slice(1); - if (ext === "mjs") ext = "js"; - const esbuildConfig = environment.config.esbuild; - let contents = await fsp.readFile(id, "utf-8"); - if (ext.endsWith("x") && esbuildConfig && esbuildConfig.jsxInject) contents = esbuildConfig.jsxInject + `\n` + contents; - const loader$1 = optimizeDepsOptions.esbuildOptions?.loader?.[`.${ext}`] ?? ext; - if (contents.includes("import.meta.glob")) return { - loader: "js", - contents: await doTransformGlobImport(contents, id, loader$1) - }; - return { - loader: loader$1, - contents - }; - }); - build$3.onLoad({ - filter: /.*/, - namespace: "file" - }, () => { - return { - loader: "js", - contents: "export default {}" - }; - }); - } - }; -} -/** -* when using TS + (Vue + `