├── .gitignore ├── LICENSE ├── index.html ├── package.json ├── src ├── index.tsx └── renderer.ts ├── tsconfig.json ├── vite.config.ts └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | dist 4 | 5 | # Editor directories and files 6 | .idea 7 | .vscode 8 | *.suo 9 | *.ntvs* 10 | *.njsproj 11 | *.sln 12 | *.sw? 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022-2023 Cody Bennett 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | solid three renderer 7 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "@types/three": "^0.154.0", 4 | "solid-js": "^1.7.8", 5 | "three": "^0.154.0", 6 | "typescript": "^5.1.6", 7 | "vite": "^4.4.5", 8 | "vite-plugin-solid": "^2.7.0" 9 | }, 10 | "scripts": { 11 | "dev": "vite" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import * as THREE from 'three' 2 | import { extend, render } from './renderer' 3 | 4 | const renderer = new THREE.WebGLRenderer({ alpha: true }) 5 | renderer.setSize(window.innerWidth, window.innerHeight) 6 | document.body.appendChild(renderer.domElement) 7 | 8 | const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight) 9 | camera.position.set(0, 1.3, 3) 10 | 11 | const scene = new THREE.Scene() 12 | 13 | extend({ GridHelper: THREE.GridHelper }) 14 | render(, scene) 15 | 16 | renderer.render(scene, camera) 17 | -------------------------------------------------------------------------------- /src/renderer.ts: -------------------------------------------------------------------------------- 1 | import * as THREE from 'three' 2 | import { createRenderer } from 'solid-js/universal' 3 | 4 | export type ConstructorRepresentation = new (...args: any[]) => any 5 | export type Catalogue = Record 6 | 7 | export interface EventHandlers {} 8 | export type Attach = string | ((parent: any, self: O) => () => void) 9 | export type Args = T extends ConstructorRepresentation ? ConstructorParameters : any[] 10 | 11 | export interface InstanceProps { 12 | [key: string]: unknown 13 | args?: Args

14 | object?: T 15 | dispose?: null 16 | attach?: Attach 17 | ref?: (object: T) => T 18 | } 19 | 20 | export interface Instance { 21 | type: string 22 | parent: Instance | null 23 | children: Instance[] 24 | object: O | null 25 | props: InstanceProps 26 | } 27 | 28 | /** 29 | * Resolves a potentially pierced key type against an object. 30 | */ 31 | function resolve( 32 | root: any, 33 | key: string, 34 | ): { 35 | root: any 36 | key: string 37 | target: any 38 | } { 39 | let target = root[key] 40 | if (!key.includes('-')) return { root, key, target } 41 | 42 | // Resolve pierced target 43 | const chain = key.split('-') 44 | target = chain.reduce((acc, key) => acc[key], root) 45 | key = chain.pop()! 46 | 47 | // Switch root if atomic 48 | if (!target?.set) root = chain.reduce((acc, key) => acc[key], root) 49 | 50 | return { root, key, target } 51 | } 52 | 53 | // Checks if a dash-cased string ends with an integer 54 | const INDEX_REGEX = /-\d+$/ 55 | 56 | /** 57 | * Attaches an node to a parent via its `attach` prop. 58 | */ 59 | function attach(parent: Instance, child: Instance): void { 60 | if (typeof child.props.attach === 'string') { 61 | // If attaching into an array (foo-0), create one 62 | if (INDEX_REGEX.test(child.props.attach)) { 63 | const target = child.props.attach.replace(INDEX_REGEX, '') 64 | const { root, key } = resolve(parent.object, target) 65 | if (!Array.isArray(root[key])) root[key] = [] 66 | } 67 | 68 | const { root, key } = resolve(parent.object, child.props.attach) 69 | child.object.__previousAttach = root[key] 70 | root[key] = child.object 71 | } else if (typeof child.props.attach === 'function') { 72 | child.object.__previousAttach = child.props.attach(parent.object, child.object) 73 | } 74 | } 75 | 76 | /** 77 | * Removes an node from a parent via its `attach` prop. 78 | */ 79 | function detach(parent: Instance, child: Instance): void { 80 | if (typeof child.props.attach === 'string') { 81 | const { root, key } = resolve(parent.object, child.props.attach) 82 | root[key] = child.object.__previousAttach 83 | } else if (typeof child.props.attach === 'function') { 84 | child.object.__previousAttach(parent.object, child.object) 85 | } 86 | 87 | delete child.object.__previousAttach 88 | } 89 | 90 | // Internal instance props that shouldn't be written to objects 91 | const RESERVED_PROPS = ['args', 'object', 'dispose', 'attach', 'ref'] 92 | 93 | /** 94 | * Safely mutates a THREE element, respecting special JSX syntax. 95 | */ 96 | function applyProps(object: O, props: InstanceProps): void { 97 | for (const prop in props) { 98 | // Skip reserved keys 99 | if (RESERVED_PROPS.includes(prop)) continue 100 | 101 | // Resolve dash-case props if able 102 | const value = props[prop] 103 | const { root, key, target } = resolve(object, prop) 104 | 105 | // Prefer to use properties' copy and set methods. 106 | // Otherwise, mutate the property directly 107 | if (!target?.set) root[key] = value 108 | else if (target.copy && target.constructor === (value as Object).constructor) target.copy(value) 109 | else if (Array.isArray(value)) target.set(...value) 110 | else if (!(target instanceof THREE.Color) && target.setScalar) target.setScalar(value) 111 | else target.set(value) 112 | } 113 | } 114 | 115 | const catalogue: Catalogue = {} 116 | /** 117 | * Extends the THREE catalogue, accepting an object of keys pointing to external classes. 118 | */ 119 | export const extend = (objects: Partial): void => void Object.assign(catalogue, objects) 120 | 121 | type RendererOptions = Parameters>[0] 122 | 123 | const options: RendererOptions = { 124 | createElement(type) { 125 | return { 126 | type, 127 | parent: null, 128 | children: [], 129 | object: null, 130 | props: {}, 131 | } 132 | }, 133 | setProperty(node, key, value) { 134 | // Write prop to node 135 | node.props[key] = value 136 | 137 | // Reconstruct instance on object or args change 138 | const parent = node.parent 139 | if (parent && (key === 'object' || key === 'args')) { 140 | options.removeNode(parent, node) 141 | options.insertNode(parent, node) 142 | } 143 | // If at runtime, apply prop directly to the object 144 | else if (node.object) { 145 | applyProps(node.object, { [key]: value }) 146 | } 147 | }, 148 | insertNode(parent, child, beforeChild) { 149 | // Create object on first commit 150 | if (!child.object) { 151 | const { args = [], object, ref, attach, ...props } = child.props 152 | 153 | if (child.type === 'primitive') { 154 | // Validate primitive 155 | if (!object) throw new Error('"object" must be set when using primitives!') 156 | 157 | // Link object 158 | child.object = object 159 | } else { 160 | // Validate target 161 | const target = catalogue[child.type.charAt(0).toUpperCase() + child.type.substring(1)] 162 | if (!target) throw new Error(`${child.type} is not a part of the THREE catalog! Did you forget to extend?`) 163 | 164 | // Create object 165 | child.object = new target(...args) 166 | } 167 | 168 | // Auto-attach geometry and materials 169 | if (attach === undefined) { 170 | if (child.object instanceof THREE.BufferGeometry) child.props.attach = 'geometry' 171 | else if (child.object instanceof THREE.Material) child.props.attach = 'material' 172 | } 173 | 174 | // Set initial props 175 | applyProps(child.object, props) 176 | 177 | // Expose child.object as ref 178 | ref?.(child.object) 179 | } 180 | 181 | // Link nodes 182 | child.parent = parent 183 | parent.children.push(child) 184 | 185 | // Add or manually splice child 186 | if (child.props.attach) { 187 | attach(parent, child) 188 | } else if (parent.object instanceof THREE.Object3D && child.object instanceof THREE.Object3D) { 189 | const objectIndex = parent.object.children.indexOf(beforeChild?.object) 190 | if (objectIndex !== -1) { 191 | this.removeNode(parent, beforeChild!) 192 | 193 | child.object.parent = parent.object 194 | parent.object.children.splice(objectIndex, 0, child.object) 195 | child.object.dispatchEvent({ type: 'added' }) 196 | } else { 197 | parent.object.add(child.object) 198 | } 199 | } 200 | }, 201 | removeNode(parent, child) { 202 | // Unlink child node 203 | child.parent = null 204 | const childIndex = parent.children.indexOf(child) 205 | if (childIndex !== -1) parent.children.splice(childIndex, 1) 206 | 207 | // Remove object from parent 208 | if (child.props.attach) { 209 | detach(parent, child) 210 | } else if (parent.object instanceof THREE.Object3D && child.object instanceof THREE.Object3D) { 211 | parent.object.remove(child.object) 212 | } 213 | 214 | // Safely dispose of object 215 | if (child.props.dispose !== null && child.type !== 'primitive') child.object.dispose?.() 216 | child.object = null 217 | }, 218 | getParentNode(node) { 219 | return node.parent ?? undefined 220 | }, 221 | getFirstChild(node) { 222 | return node.children[0] 223 | }, 224 | getNextSibling(node) { 225 | const index = node.parent!.children.indexOf(node) 226 | return node.children[index + 1] 227 | }, 228 | createTextNode() { 229 | throw new Error('Text is not allowed in the tree! This could be stray characters or whitespace.') 230 | }, 231 | replaceText() {}, 232 | isTextNode() { 233 | return false 234 | }, 235 | } 236 | 237 | const renderer = createRenderer(options) 238 | 239 | export function render(element: Instance | (() => Instance), container: any): () => void { 240 | return renderer.render(typeof element === 'function' ? element : () => element, { 241 | type: '', 242 | parent: null, 243 | children: [], 244 | object: container, 245 | props: {}, 246 | }) 247 | } 248 | 249 | // Manually handle ref prop 250 | export function use(fn: (element: Instance, arg: A) => T, element: Instance, arg: A): any { 251 | element.props.ref = (self: any) => renderer.use(fn, self, arg) 252 | } 253 | 254 | export const { 255 | effect, 256 | memo, 257 | createComponent, 258 | createElement, 259 | createTextNode, 260 | insertNode, 261 | insert, 262 | spread, 263 | setProp, 264 | mergeProps, 265 | } = renderer 266 | 267 | export { For, Show, Suspense, SuspenseList, Switch, Match, Index, ErrorBoundary } from 'solid-js' 268 | 269 | type Mutable = { [K in keyof T]: T[K] | Readonly } 270 | type NonFunctionKeys = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T] 271 | type Overwrite = Omit> & O 272 | 273 | interface MathRepresentation { 274 | set(...args: number[]): any 275 | } 276 | interface VectorRepresentation extends MathRepresentation { 277 | setScalar(s: number): any 278 | } 279 | type MathType = T extends THREE.Color 280 | ? Args | THREE.ColorRepresentation 281 | : T extends VectorRepresentation | THREE.Layers | THREE.Euler 282 | ? T | Parameters | number 283 | : T | Parameters 284 | type WithMathProps

= { [K in keyof P]: P[K] extends MathRepresentation | THREE.Euler ? MathType : P[K] } 285 | 286 | interface RaycastableRepresentation { 287 | raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]): void 288 | } 289 | type EventProps

= P extends RaycastableRepresentation ? Partial : {} 290 | 291 | type ElementProps> = Partial< 292 | Overwrite, EventProps

> 293 | > 294 | 295 | export type ThreeElement = Mutable< 296 | Overwrite, Omit, T>, 'object'>> 297 | > 298 | 299 | type ThreeExports = typeof THREE 300 | type ThreeElementsImpl = { 301 | [K in keyof ThreeExports as Uncapitalize]: ThreeExports[K] extends ConstructorRepresentation 302 | ? ThreeElement 303 | : never 304 | } 305 | 306 | export interface ThreeElements extends ThreeElementsImpl { 307 | primitive: Omit, 'args'> & { object: object } 308 | } 309 | 310 | declare global { 311 | namespace JSX { 312 | interface IntrinsicElements extends ThreeElements {} 313 | } 314 | } 315 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "dist", 4 | "target": "esnext", 5 | "module": "esnext", 6 | "lib": ["esnext", "dom"], 7 | "moduleResolution": "node", 8 | "strict": true, 9 | "pretty": true, 10 | "noEmit": true, 11 | "jsx": "preserve", 12 | "skipLibCheck": true, 13 | "forceConsistentCasingInFileNames": true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import solid from 'vite-plugin-solid' 3 | 4 | export default defineConfig({ 5 | plugins: [ 6 | solid({ 7 | solid: { 8 | moduleName: './renderer', 9 | generate: 'universal', 10 | }, 11 | }), 12 | ], 13 | }) 14 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.2.0": 6 | version "2.2.1" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" 8 | integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.3.0" 11 | "@jridgewell/trace-mapping" "^0.3.9" 12 | 13 | "@babel/code-frame@^7.22.5": 14 | version "7.22.5" 15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" 16 | integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== 17 | dependencies: 18 | "@babel/highlight" "^7.22.5" 19 | 20 | "@babel/compat-data@^7.22.9": 21 | version "7.22.9" 22 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" 23 | integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== 24 | 25 | "@babel/core@^7.20.5": 26 | version "7.22.9" 27 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" 28 | integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== 29 | dependencies: 30 | "@ampproject/remapping" "^2.2.0" 31 | "@babel/code-frame" "^7.22.5" 32 | "@babel/generator" "^7.22.9" 33 | "@babel/helper-compilation-targets" "^7.22.9" 34 | "@babel/helper-module-transforms" "^7.22.9" 35 | "@babel/helpers" "^7.22.6" 36 | "@babel/parser" "^7.22.7" 37 | "@babel/template" "^7.22.5" 38 | "@babel/traverse" "^7.22.8" 39 | "@babel/types" "^7.22.5" 40 | convert-source-map "^1.7.0" 41 | debug "^4.1.0" 42 | gensync "^1.0.0-beta.2" 43 | json5 "^2.2.2" 44 | semver "^6.3.1" 45 | 46 | "@babel/generator@^7.21.1", "@babel/generator@^7.22.7", "@babel/generator@^7.22.9": 47 | version "7.22.9" 48 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" 49 | integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== 50 | dependencies: 51 | "@babel/types" "^7.22.5" 52 | "@jridgewell/gen-mapping" "^0.3.2" 53 | "@jridgewell/trace-mapping" "^0.3.17" 54 | jsesc "^2.5.1" 55 | 56 | "@babel/helper-annotate-as-pure@^7.22.5": 57 | version "7.22.5" 58 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" 59 | integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== 60 | dependencies: 61 | "@babel/types" "^7.22.5" 62 | 63 | "@babel/helper-compilation-targets@^7.22.9": 64 | version "7.22.9" 65 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" 66 | integrity sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw== 67 | dependencies: 68 | "@babel/compat-data" "^7.22.9" 69 | "@babel/helper-validator-option" "^7.22.5" 70 | browserslist "^4.21.9" 71 | lru-cache "^5.1.1" 72 | semver "^6.3.1" 73 | 74 | "@babel/helper-create-class-features-plugin@^7.22.9": 75 | version "7.22.9" 76 | resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz#c36ea240bb3348f942f08b0fbe28d6d979fab236" 77 | integrity sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ== 78 | dependencies: 79 | "@babel/helper-annotate-as-pure" "^7.22.5" 80 | "@babel/helper-environment-visitor" "^7.22.5" 81 | "@babel/helper-function-name" "^7.22.5" 82 | "@babel/helper-member-expression-to-functions" "^7.22.5" 83 | "@babel/helper-optimise-call-expression" "^7.22.5" 84 | "@babel/helper-replace-supers" "^7.22.9" 85 | "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" 86 | "@babel/helper-split-export-declaration" "^7.22.6" 87 | semver "^6.3.1" 88 | 89 | "@babel/helper-environment-visitor@^7.22.5": 90 | version "7.22.5" 91 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" 92 | integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== 93 | 94 | "@babel/helper-function-name@^7.22.5": 95 | version "7.22.5" 96 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" 97 | integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== 98 | dependencies: 99 | "@babel/template" "^7.22.5" 100 | "@babel/types" "^7.22.5" 101 | 102 | "@babel/helper-hoist-variables@^7.22.5": 103 | version "7.22.5" 104 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" 105 | integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== 106 | dependencies: 107 | "@babel/types" "^7.22.5" 108 | 109 | "@babel/helper-member-expression-to-functions@^7.22.5": 110 | version "7.22.5" 111 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" 112 | integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== 113 | dependencies: 114 | "@babel/types" "^7.22.5" 115 | 116 | "@babel/helper-module-imports@7.18.6": 117 | version "7.18.6" 118 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" 119 | integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== 120 | dependencies: 121 | "@babel/types" "^7.18.6" 122 | 123 | "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.22.5": 124 | version "7.22.5" 125 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" 126 | integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== 127 | dependencies: 128 | "@babel/types" "^7.22.5" 129 | 130 | "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": 131 | version "7.22.9" 132 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" 133 | integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== 134 | dependencies: 135 | "@babel/helper-environment-visitor" "^7.22.5" 136 | "@babel/helper-module-imports" "^7.22.5" 137 | "@babel/helper-simple-access" "^7.22.5" 138 | "@babel/helper-split-export-declaration" "^7.22.6" 139 | "@babel/helper-validator-identifier" "^7.22.5" 140 | 141 | "@babel/helper-optimise-call-expression@^7.22.5": 142 | version "7.22.5" 143 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" 144 | integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== 145 | dependencies: 146 | "@babel/types" "^7.22.5" 147 | 148 | "@babel/helper-plugin-utils@^7.22.5": 149 | version "7.22.5" 150 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" 151 | integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== 152 | 153 | "@babel/helper-replace-supers@^7.22.9": 154 | version "7.22.9" 155 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" 156 | integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== 157 | dependencies: 158 | "@babel/helper-environment-visitor" "^7.22.5" 159 | "@babel/helper-member-expression-to-functions" "^7.22.5" 160 | "@babel/helper-optimise-call-expression" "^7.22.5" 161 | 162 | "@babel/helper-simple-access@^7.22.5": 163 | version "7.22.5" 164 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" 165 | integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== 166 | dependencies: 167 | "@babel/types" "^7.22.5" 168 | 169 | "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": 170 | version "7.22.5" 171 | resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" 172 | integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== 173 | dependencies: 174 | "@babel/types" "^7.22.5" 175 | 176 | "@babel/helper-split-export-declaration@^7.22.6": 177 | version "7.22.6" 178 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" 179 | integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== 180 | dependencies: 181 | "@babel/types" "^7.22.5" 182 | 183 | "@babel/helper-string-parser@^7.22.5": 184 | version "7.22.5" 185 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" 186 | integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== 187 | 188 | "@babel/helper-validator-identifier@^7.22.5": 189 | version "7.22.5" 190 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" 191 | integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== 192 | 193 | "@babel/helper-validator-option@^7.22.5": 194 | version "7.22.5" 195 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" 196 | integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== 197 | 198 | "@babel/helpers@^7.22.6": 199 | version "7.22.6" 200 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.6.tgz#8e61d3395a4f0c5a8060f309fb008200969b5ecd" 201 | integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== 202 | dependencies: 203 | "@babel/template" "^7.22.5" 204 | "@babel/traverse" "^7.22.6" 205 | "@babel/types" "^7.22.5" 206 | 207 | "@babel/highlight@^7.22.5": 208 | version "7.22.5" 209 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" 210 | integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== 211 | dependencies: 212 | "@babel/helper-validator-identifier" "^7.22.5" 213 | chalk "^2.0.0" 214 | js-tokens "^4.0.0" 215 | 216 | "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7": 217 | version "7.22.7" 218 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" 219 | integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== 220 | 221 | "@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.22.5": 222 | version "7.22.5" 223 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" 224 | integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== 225 | dependencies: 226 | "@babel/helper-plugin-utils" "^7.22.5" 227 | 228 | "@babel/plugin-syntax-typescript@^7.22.5": 229 | version "7.22.5" 230 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" 231 | integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== 232 | dependencies: 233 | "@babel/helper-plugin-utils" "^7.22.5" 234 | 235 | "@babel/plugin-transform-modules-commonjs@^7.22.5": 236 | version "7.22.5" 237 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" 238 | integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== 239 | dependencies: 240 | "@babel/helper-module-transforms" "^7.22.5" 241 | "@babel/helper-plugin-utils" "^7.22.5" 242 | "@babel/helper-simple-access" "^7.22.5" 243 | 244 | "@babel/plugin-transform-typescript@^7.22.5": 245 | version "7.22.9" 246 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz#91e08ad1eb1028ecc62662a842e93ecfbf3c7234" 247 | integrity sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg== 248 | dependencies: 249 | "@babel/helper-annotate-as-pure" "^7.22.5" 250 | "@babel/helper-create-class-features-plugin" "^7.22.9" 251 | "@babel/helper-plugin-utils" "^7.22.5" 252 | "@babel/plugin-syntax-typescript" "^7.22.5" 253 | 254 | "@babel/preset-typescript@^7.18.6": 255 | version "7.22.5" 256 | resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz#16367d8b01d640e9a507577ed4ee54e0101e51c8" 257 | integrity sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ== 258 | dependencies: 259 | "@babel/helper-plugin-utils" "^7.22.5" 260 | "@babel/helper-validator-option" "^7.22.5" 261 | "@babel/plugin-syntax-jsx" "^7.22.5" 262 | "@babel/plugin-transform-modules-commonjs" "^7.22.5" 263 | "@babel/plugin-transform-typescript" "^7.22.5" 264 | 265 | "@babel/template@^7.22.5": 266 | version "7.22.5" 267 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" 268 | integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== 269 | dependencies: 270 | "@babel/code-frame" "^7.22.5" 271 | "@babel/parser" "^7.22.5" 272 | "@babel/types" "^7.22.5" 273 | 274 | "@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8": 275 | version "7.22.8" 276 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" 277 | integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== 278 | dependencies: 279 | "@babel/code-frame" "^7.22.5" 280 | "@babel/generator" "^7.22.7" 281 | "@babel/helper-environment-visitor" "^7.22.5" 282 | "@babel/helper-function-name" "^7.22.5" 283 | "@babel/helper-hoist-variables" "^7.22.5" 284 | "@babel/helper-split-export-declaration" "^7.22.6" 285 | "@babel/parser" "^7.22.7" 286 | "@babel/types" "^7.22.5" 287 | debug "^4.1.0" 288 | globals "^11.1.0" 289 | 290 | "@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.21.2", "@babel/types@^7.22.5": 291 | version "7.22.5" 292 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" 293 | integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== 294 | dependencies: 295 | "@babel/helper-string-parser" "^7.22.5" 296 | "@babel/helper-validator-identifier" "^7.22.5" 297 | to-fast-properties "^2.0.0" 298 | 299 | "@esbuild/android-arm64@0.18.15": 300 | version "0.18.15" 301 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.15.tgz#abbe87b815d2f95ec749ffb4eba65d7d5343411f" 302 | integrity sha512-NI/gnWcMl2kXt1HJKOn2H69SYn4YNheKo6NZt1hyfKWdMbaGadxjZIkcj4Gjk/WPxnbFXs9/3HjGHaknCqjrww== 303 | 304 | "@esbuild/android-arm@0.18.15": 305 | version "0.18.15" 306 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.15.tgz#6afedd79c68d5d4d1e434e20a9ab620bb5849372" 307 | integrity sha512-wlkQBWb79/jeEEoRmrxt/yhn5T1lU236OCNpnfRzaCJHZ/5gf82uYx1qmADTBWE0AR/v7FiozE1auk2riyQd3w== 308 | 309 | "@esbuild/android-x64@0.18.15": 310 | version "0.18.15" 311 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.15.tgz#cdd886a58748b1584ad72d960c446fa958c11ab3" 312 | integrity sha512-FM9NQamSaEm/IZIhegF76aiLnng1kEsZl2eve/emxDeReVfRuRNmvT28l6hoFD9TsCxpK+i4v8LPpEj74T7yjA== 313 | 314 | "@esbuild/darwin-arm64@0.18.15": 315 | version "0.18.15" 316 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.15.tgz#648b124a6a63022adb5b0cf441e264e8f5ba4af2" 317 | integrity sha512-XmrFwEOYauKte9QjS6hz60FpOCnw4zaPAb7XV7O4lx1r39XjJhTN7ZpXqJh4sN6q60zbP6QwAVVA8N/wUyBH/w== 318 | 319 | "@esbuild/darwin-x64@0.18.15": 320 | version "0.18.15" 321 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.15.tgz#91cd2601c1604d123454d325e6b24fb6438350cf" 322 | integrity sha512-bMqBmpw1e//7Fh5GLetSZaeo9zSC4/CMtrVFdj+bqKPGJuKyfNJ5Nf2m3LknKZTS+Q4oyPiON+v3eaJ59sLB5A== 323 | 324 | "@esbuild/freebsd-arm64@0.18.15": 325 | version "0.18.15" 326 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.15.tgz#575940b0fc2f52833de4f6360445586742a8ff8b" 327 | integrity sha512-LoTK5N3bOmNI9zVLCeTgnk5Rk0WdUTrr9dyDAQGVMrNTh9EAPuNwSTCgaKOKiDpverOa0htPcO9NwslSE5xuLA== 328 | 329 | "@esbuild/freebsd-x64@0.18.15": 330 | version "0.18.15" 331 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.15.tgz#09694fc601dd8d3263a1075977ee7d3488514ef8" 332 | integrity sha512-62jX5n30VzgrjAjOk5orYeHFq6sqjvsIj1QesXvn5OZtdt5Gdj0vUNJy9NIpjfdNdqr76jjtzBJKf+h2uzYuTQ== 333 | 334 | "@esbuild/linux-arm64@0.18.15": 335 | version "0.18.15" 336 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.15.tgz#2f5d226b024964f2b5b6bce7c874a8ad31785fa2" 337 | integrity sha512-BWncQeuWDgYv0jTNzJjaNgleduV4tMbQjmk/zpPh/lUdMcNEAxy+jvneDJ6RJkrqloG7tB9S9rCrtfk/kuplsQ== 338 | 339 | "@esbuild/linux-arm@0.18.15": 340 | version "0.18.15" 341 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.15.tgz#172331fc66bbe89ba96e5e2ad583b2faa132d85c" 342 | integrity sha512-dT4URUv6ir45ZkBqhwZwyFV6cH61k8MttIwhThp2BGiVtagYvCToF+Bggyx2VI57RG4Fbt21f9TmXaYx0DeUJg== 343 | 344 | "@esbuild/linux-ia32@0.18.15": 345 | version "0.18.15" 346 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.15.tgz#fa797051131ee5f46d70c65a7edd14b6230cfc2f" 347 | integrity sha512-JPXORvgHRHITqfms1dWT/GbEY89u848dC08o0yK3fNskhp0t2TuNUnsrrSgOdH28ceb1hJuwyr8R/1RnyPwocw== 348 | 349 | "@esbuild/linux-loong64@0.18.15": 350 | version "0.18.15" 351 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.15.tgz#aeae1fa3d92b1486a91c0cb1cfd9c0ebe9168de4" 352 | integrity sha512-kArPI0DopjJCEplsVj/H+2Qgzz7vdFSacHNsgoAKpPS6W/Ndh8Oe24HRDQ5QCu4jHgN6XOtfFfLpRx3TXv/mEg== 353 | 354 | "@esbuild/linux-mips64el@0.18.15": 355 | version "0.18.15" 356 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.15.tgz#b63cfe356c33807c4d8ee5a75452922e98502073" 357 | integrity sha512-b/tmngUfO02E00c1XnNTw/0DmloKjb6XQeqxaYuzGwHe0fHVgx5/D6CWi+XH1DvkszjBUkK9BX7n1ARTOst59w== 358 | 359 | "@esbuild/linux-ppc64@0.18.15": 360 | version "0.18.15" 361 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.15.tgz#7dcb394e69cb47e4dc8a5960dd58b1a273d07f5d" 362 | integrity sha512-KXPY69MWw79QJkyvUYb2ex/OgnN/8N/Aw5UDPlgoRtoEfcBqfeLodPr42UojV3NdkoO4u10NXQdamWm1YEzSKw== 363 | 364 | "@esbuild/linux-riscv64@0.18.15": 365 | version "0.18.15" 366 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.15.tgz#fdfb9cf23b50d33112315e3194b9e16f7abf6c30" 367 | integrity sha512-komK3NEAeeGRnvFEjX1SfVg6EmkfIi5aKzevdvJqMydYr9N+pRQK0PGJXk+bhoPZwOUgLO4l99FZmLGk/L1jWg== 368 | 369 | "@esbuild/linux-s390x@0.18.15": 370 | version "0.18.15" 371 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.15.tgz#ce608d95989a502878d7cb1167df791e45268011" 372 | integrity sha512-632T5Ts6gQ2WiMLWRRyeflPAm44u2E/s/TJvn+BP6M5mnHSk93cieaypj3VSMYO2ePTCRqAFXtuYi1yv8uZJNA== 373 | 374 | "@esbuild/linux-x64@0.18.15": 375 | version "0.18.15" 376 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.15.tgz#49bbba5607702709f63b41906b4f1bcc44cf2f8e" 377 | integrity sha512-MsHtX0NgvRHsoOtYkuxyk4Vkmvk3PLRWfA4okK7c+6dT0Fu4SUqXAr9y4Q3d8vUf1VWWb6YutpL4XNe400iQ1g== 378 | 379 | "@esbuild/netbsd-x64@0.18.15": 380 | version "0.18.15" 381 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.15.tgz#08b5ccaf027c7e2174b9a19c29bebfe59dce1cfb" 382 | integrity sha512-djST6s+jQiwxMIVQ5rlt24JFIAr4uwUnzceuFL7BQT4CbrRtqBPueS4GjXSiIpmwVri1Icj/9pFRJ7/aScvT+A== 383 | 384 | "@esbuild/openbsd-x64@0.18.15": 385 | version "0.18.15" 386 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.15.tgz#38ec4223ebab562f0a89ffe20a40f05d500f89f0" 387 | integrity sha512-naeRhUIvhsgeounjkF5mvrNAVMGAm6EJWiabskeE5yOeBbLp7T89tAEw0j5Jm/CZAwyLe3c67zyCWH6fsBLCpw== 388 | 389 | "@esbuild/sunos-x64@0.18.15": 390 | version "0.18.15" 391 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.15.tgz#dbbebf641957a54b77f39ca9b10b0b38586799ba" 392 | integrity sha512-qkT2+WxyKbNIKV1AEhI8QiSIgTHMcRctzSaa/I3kVgMS5dl3fOeoqkb7pW76KwxHoriImhx7Mg3TwN/auMDsyQ== 393 | 394 | "@esbuild/win32-arm64@0.18.15": 395 | version "0.18.15" 396 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.15.tgz#7f15fe5d14b9b24eb18ca211ad92e0f5df92a18b" 397 | integrity sha512-HC4/feP+pB2Vb+cMPUjAnFyERs+HJN7E6KaeBlFdBv799MhD+aPJlfi/yk36SED58J9TPwI8MAcVpJgej4ud0A== 398 | 399 | "@esbuild/win32-ia32@0.18.15": 400 | version "0.18.15" 401 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.15.tgz#a6609735a4a5e8fbdeb045720bc8be46825566fa" 402 | integrity sha512-ovjwoRXI+gf52EVF60u9sSDj7myPixPxqzD5CmkEUmvs+W9Xd0iqISVBQn8xcx4ciIaIVlWCuTbYDOXOnOL44Q== 403 | 404 | "@esbuild/win32-x64@0.18.15": 405 | version "0.18.15" 406 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.15.tgz#41ee66253566124cc44bce1b4c760a87d9f5bf1d" 407 | integrity sha512-imUxH9a3WJARyAvrG7srLyiK73XdX83NXQkjKvQ+7vPh3ZxoLrzvPkQKKw2DwZ+RV2ZB6vBfNHP8XScAmQC3aA== 408 | 409 | "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": 410 | version "0.3.3" 411 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" 412 | integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== 413 | dependencies: 414 | "@jridgewell/set-array" "^1.0.1" 415 | "@jridgewell/sourcemap-codec" "^1.4.10" 416 | "@jridgewell/trace-mapping" "^0.3.9" 417 | 418 | "@jridgewell/resolve-uri@3.1.0": 419 | version "3.1.0" 420 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 421 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 422 | 423 | "@jridgewell/set-array@^1.0.1": 424 | version "1.1.2" 425 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 426 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 427 | 428 | "@jridgewell/sourcemap-codec@1.4.14": 429 | version "1.4.14" 430 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 431 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 432 | 433 | "@jridgewell/sourcemap-codec@^1.4.10": 434 | version "1.4.15" 435 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 436 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 437 | 438 | "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": 439 | version "0.3.18" 440 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" 441 | integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== 442 | dependencies: 443 | "@jridgewell/resolve-uri" "3.1.0" 444 | "@jridgewell/sourcemap-codec" "1.4.14" 445 | 446 | "@tweenjs/tween.js@~18.6.4": 447 | version "18.6.4" 448 | resolved "https://registry.yarnpkg.com/@tweenjs/tween.js/-/tween.js-18.6.4.tgz#40a3d0a93647124872dec8e0fd1bd5926695b6ca" 449 | integrity sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ== 450 | 451 | "@types/babel__core@^7.1.20": 452 | version "7.20.1" 453 | resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" 454 | integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== 455 | dependencies: 456 | "@babel/parser" "^7.20.7" 457 | "@babel/types" "^7.20.7" 458 | "@types/babel__generator" "*" 459 | "@types/babel__template" "*" 460 | "@types/babel__traverse" "*" 461 | 462 | "@types/babel__generator@*": 463 | version "7.6.4" 464 | resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" 465 | integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== 466 | dependencies: 467 | "@babel/types" "^7.0.0" 468 | 469 | "@types/babel__template@*": 470 | version "7.4.1" 471 | resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" 472 | integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== 473 | dependencies: 474 | "@babel/parser" "^7.1.0" 475 | "@babel/types" "^7.0.0" 476 | 477 | "@types/babel__traverse@*": 478 | version "7.20.1" 479 | resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" 480 | integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== 481 | dependencies: 482 | "@babel/types" "^7.20.7" 483 | 484 | "@types/stats.js@*": 485 | version "0.17.0" 486 | resolved "https://registry.yarnpkg.com/@types/stats.js/-/stats.js-0.17.0.tgz#0ed81d48e03b590c24da85540c1d952077a9fe20" 487 | integrity sha512-9w+a7bR8PeB0dCT/HBULU2fMqf6BAzvKbxFboYhmDtDkKPiyXYbjoe2auwsXlEFI7CFNMF1dCv3dFH5Poy9R1w== 488 | 489 | "@types/three@^0.154.0": 490 | version "0.154.0" 491 | resolved "https://registry.yarnpkg.com/@types/three/-/three-0.154.0.tgz#91f4384930ed050a14d7f13c09d5785cc167a064" 492 | integrity sha512-IioqpGhch6FdLDh4zazRn3rXHj6Vn2nVOziJdXVbJFi9CaI65LtP9qqUtpzbsHK2Ezlox8NtsLNHSw3AQzucjA== 493 | dependencies: 494 | "@tweenjs/tween.js" "~18.6.4" 495 | "@types/stats.js" "*" 496 | "@types/webxr" "*" 497 | fflate "~0.6.9" 498 | lil-gui "~0.17.0" 499 | meshoptimizer "~0.18.1" 500 | 501 | "@types/webxr@*": 502 | version "0.5.2" 503 | resolved "https://registry.yarnpkg.com/@types/webxr/-/webxr-0.5.2.tgz#5d9627b0ffe223aa3b166de7112ac8a9460dc54f" 504 | integrity sha512-szL74BnIcok9m7QwYtVmQ+EdIKwbjPANudfuvDrAF8Cljg9MKUlIoc1w5tjj9PMpeSH3U1Xnx//czQybJ0EfSw== 505 | 506 | ansi-styles@^3.2.1: 507 | version "3.2.1" 508 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 509 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 510 | dependencies: 511 | color-convert "^1.9.0" 512 | 513 | babel-plugin-jsx-dom-expressions@^0.36.10: 514 | version "0.36.10" 515 | resolved "https://registry.yarnpkg.com/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.36.10.tgz#8f05f12b1c8622453ec4db48b95e5d1495fe497a" 516 | integrity sha512-QA2k/14WGw+RgcGGnEuLWwnu4em6CGhjeXtjvgOYyFHYS2a+CzPeaVQHDOlfuiBcjq/3hWMspHMIMnPEOIzdBg== 517 | dependencies: 518 | "@babel/helper-module-imports" "7.18.6" 519 | "@babel/plugin-syntax-jsx" "^7.18.6" 520 | "@babel/types" "^7.20.7" 521 | html-entities "2.3.3" 522 | validate-html-nesting "^1.2.1" 523 | 524 | babel-preset-solid@^1.7.2: 525 | version "1.7.7" 526 | resolved "https://registry.yarnpkg.com/babel-preset-solid/-/babel-preset-solid-1.7.7.tgz#316ad3e1c11083772358c3b7796a5ab234987a0e" 527 | integrity sha512-tdxVzx3kgcIjNXAOmGRbzIhFBPeJjSakiN9yM+IYdL/+LtXNnbGqb0Va5tJb8Sjbk+QVEriovCyuzB5T7jeTvg== 528 | dependencies: 529 | babel-plugin-jsx-dom-expressions "^0.36.10" 530 | 531 | browserslist@^4.21.9: 532 | version "4.21.9" 533 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" 534 | integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== 535 | dependencies: 536 | caniuse-lite "^1.0.30001503" 537 | electron-to-chromium "^1.4.431" 538 | node-releases "^2.0.12" 539 | update-browserslist-db "^1.0.11" 540 | 541 | caniuse-lite@^1.0.30001503: 542 | version "1.0.30001517" 543 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" 544 | integrity sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA== 545 | 546 | chalk@^2.0.0: 547 | version "2.4.2" 548 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 549 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 550 | dependencies: 551 | ansi-styles "^3.2.1" 552 | escape-string-regexp "^1.0.5" 553 | supports-color "^5.3.0" 554 | 555 | color-convert@^1.9.0: 556 | version "1.9.3" 557 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 558 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 559 | dependencies: 560 | color-name "1.1.3" 561 | 562 | color-name@1.1.3: 563 | version "1.1.3" 564 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 565 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 566 | 567 | convert-source-map@^1.7.0: 568 | version "1.9.0" 569 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" 570 | integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== 571 | 572 | csstype@^3.1.0: 573 | version "3.1.2" 574 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" 575 | integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== 576 | 577 | debug@^4.1.0: 578 | version "4.3.4" 579 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 580 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 581 | dependencies: 582 | ms "2.1.2" 583 | 584 | electron-to-chromium@^1.4.431: 585 | version "1.4.466" 586 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.466.tgz#17193d70f203da3d52a89c653b8d89f47a51d79d" 587 | integrity sha512-TSkRvbXRXD8BwhcGlZXDsbI2lRoP8dvqR7LQnqQNk9KxXBc4tG8O+rTuXgTyIpEdiqSGKEBSqrxdqEntnjNncA== 588 | 589 | esbuild@^0.18.10: 590 | version "0.18.15" 591 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.15.tgz#5b5c1a22e608afd5675f82ad466c4d2cfd723f85" 592 | integrity sha512-3WOOLhrvuTGPRzQPU6waSDWrDTnQriia72McWcn6UCi43GhCHrXH4S59hKMeez+IITmdUuUyvbU9JIp+t3xlPQ== 593 | optionalDependencies: 594 | "@esbuild/android-arm" "0.18.15" 595 | "@esbuild/android-arm64" "0.18.15" 596 | "@esbuild/android-x64" "0.18.15" 597 | "@esbuild/darwin-arm64" "0.18.15" 598 | "@esbuild/darwin-x64" "0.18.15" 599 | "@esbuild/freebsd-arm64" "0.18.15" 600 | "@esbuild/freebsd-x64" "0.18.15" 601 | "@esbuild/linux-arm" "0.18.15" 602 | "@esbuild/linux-arm64" "0.18.15" 603 | "@esbuild/linux-ia32" "0.18.15" 604 | "@esbuild/linux-loong64" "0.18.15" 605 | "@esbuild/linux-mips64el" "0.18.15" 606 | "@esbuild/linux-ppc64" "0.18.15" 607 | "@esbuild/linux-riscv64" "0.18.15" 608 | "@esbuild/linux-s390x" "0.18.15" 609 | "@esbuild/linux-x64" "0.18.15" 610 | "@esbuild/netbsd-x64" "0.18.15" 611 | "@esbuild/openbsd-x64" "0.18.15" 612 | "@esbuild/sunos-x64" "0.18.15" 613 | "@esbuild/win32-arm64" "0.18.15" 614 | "@esbuild/win32-ia32" "0.18.15" 615 | "@esbuild/win32-x64" "0.18.15" 616 | 617 | escalade@^3.1.1: 618 | version "3.1.1" 619 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 620 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 621 | 622 | escape-string-regexp@^1.0.5: 623 | version "1.0.5" 624 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 625 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 626 | 627 | fflate@~0.6.9: 628 | version "0.6.10" 629 | resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.6.10.tgz#5f40f9659205936a2d18abf88b2e7781662b6d43" 630 | integrity sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg== 631 | 632 | fsevents@~2.3.2: 633 | version "2.3.2" 634 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 635 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 636 | 637 | gensync@^1.0.0-beta.2: 638 | version "1.0.0-beta.2" 639 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 640 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 641 | 642 | globals@^11.1.0: 643 | version "11.12.0" 644 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 645 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 646 | 647 | has-flag@^3.0.0: 648 | version "3.0.0" 649 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 650 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 651 | 652 | html-entities@2.3.3: 653 | version "2.3.3" 654 | resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" 655 | integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== 656 | 657 | is-what@^4.1.8: 658 | version "4.1.15" 659 | resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.15.tgz#de43a81090417a425942d67b1ae86e7fae2eee0e" 660 | integrity sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA== 661 | 662 | js-tokens@^4.0.0: 663 | version "4.0.0" 664 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 665 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 666 | 667 | jsesc@^2.5.1: 668 | version "2.5.2" 669 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 670 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 671 | 672 | json5@^2.2.2: 673 | version "2.2.3" 674 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" 675 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 676 | 677 | lil-gui@~0.17.0: 678 | version "0.17.0" 679 | resolved "https://registry.yarnpkg.com/lil-gui/-/lil-gui-0.17.0.tgz#b41ae55d0023fcd9185f7395a218db0f58189663" 680 | integrity sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ== 681 | 682 | lru-cache@^5.1.1: 683 | version "5.1.1" 684 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" 685 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 686 | dependencies: 687 | yallist "^3.0.2" 688 | 689 | merge-anything@^5.1.4: 690 | version "5.1.7" 691 | resolved "https://registry.yarnpkg.com/merge-anything/-/merge-anything-5.1.7.tgz#94f364d2b0cf21ac76067b5120e429353b3525d7" 692 | integrity sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ== 693 | dependencies: 694 | is-what "^4.1.8" 695 | 696 | meshoptimizer@~0.18.1: 697 | version "0.18.1" 698 | resolved "https://registry.yarnpkg.com/meshoptimizer/-/meshoptimizer-0.18.1.tgz#cdb90907f30a7b5b1190facd3b7ee6b7087797d8" 699 | integrity sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw== 700 | 701 | ms@2.1.2: 702 | version "2.1.2" 703 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 704 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 705 | 706 | nanoid@^3.3.6: 707 | version "3.3.6" 708 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" 709 | integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== 710 | 711 | node-releases@^2.0.12: 712 | version "2.0.13" 713 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" 714 | integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== 715 | 716 | picocolors@^1.0.0: 717 | version "1.0.0" 718 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 719 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 720 | 721 | postcss@^8.4.26: 722 | version "8.4.26" 723 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.26.tgz#1bc62ab19f8e1e5463d98cf74af39702a00a9e94" 724 | integrity sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw== 725 | dependencies: 726 | nanoid "^3.3.6" 727 | picocolors "^1.0.0" 728 | source-map-js "^1.0.2" 729 | 730 | rollup@^3.25.2: 731 | version "3.26.3" 732 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.26.3.tgz#bbc8818cadd0aebca348dbb3d68d296d220967b8" 733 | integrity sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ== 734 | optionalDependencies: 735 | fsevents "~2.3.2" 736 | 737 | semver@^6.3.1: 738 | version "6.3.1" 739 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" 740 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 741 | 742 | seroval@^0.5.0: 743 | version "0.5.1" 744 | resolved "https://registry.yarnpkg.com/seroval/-/seroval-0.5.1.tgz#e6d17365cdaaae7e50815c7e0bcd7102facdadf3" 745 | integrity sha512-ZfhQVB59hmIauJG5Ydynupy8KHyr5imGNtdDhbZG68Ufh1Ynkv9KOYOAABf71oVbQxJ8VkWnMHAjEHE7fWkH5g== 746 | 747 | solid-js@^1.7.8: 748 | version "1.7.8" 749 | resolved "https://registry.yarnpkg.com/solid-js/-/solid-js-1.7.8.tgz#6856983e3edbcc57b0e003e6fd0c741dd8865892" 750 | integrity sha512-XHBWk1FvFd0JMKljko7FfhefJMTSgYEuVKcQ2a8hzRXfiuSJAGsrPPafqEo+f6l+e8Oe3cROSpIL6kbzjC1fjQ== 751 | dependencies: 752 | csstype "^3.1.0" 753 | seroval "^0.5.0" 754 | 755 | solid-refresh@^0.5.0: 756 | version "0.5.3" 757 | resolved "https://registry.yarnpkg.com/solid-refresh/-/solid-refresh-0.5.3.tgz#41b97fa1ee655d86125abda8e398861683f926b6" 758 | integrity sha512-Otg5it5sjOdZbQZJnvo99TEBAr6J7PQ5AubZLNU6szZzg3RQQ5MX04oteBIIGDs0y2Qv8aXKm9e44V8z+UnFdw== 759 | dependencies: 760 | "@babel/generator" "^7.21.1" 761 | "@babel/helper-module-imports" "^7.18.6" 762 | "@babel/types" "^7.21.2" 763 | 764 | source-map-js@^1.0.2: 765 | version "1.0.2" 766 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 767 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 768 | 769 | supports-color@^5.3.0: 770 | version "5.5.0" 771 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 772 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 773 | dependencies: 774 | has-flag "^3.0.0" 775 | 776 | three@^0.154.0: 777 | version "0.154.0" 778 | resolved "https://registry.yarnpkg.com/three/-/three-0.154.0.tgz#dbef21e10fe6015ec283acc60d0eb58733991e27" 779 | integrity sha512-Uzz8C/5GesJzv8i+Y2prEMYUwodwZySPcNhuJUdsVMH2Yn4Nm8qlbQe6qRN5fOhg55XB0WiLfTPBxVHxpE60ug== 780 | 781 | to-fast-properties@^2.0.0: 782 | version "2.0.0" 783 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 784 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== 785 | 786 | typescript@^5.1.6: 787 | version "5.1.6" 788 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" 789 | integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== 790 | 791 | update-browserslist-db@^1.0.11: 792 | version "1.0.11" 793 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" 794 | integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== 795 | dependencies: 796 | escalade "^3.1.1" 797 | picocolors "^1.0.0" 798 | 799 | validate-html-nesting@^1.2.1: 800 | version "1.2.2" 801 | resolved "https://registry.yarnpkg.com/validate-html-nesting/-/validate-html-nesting-1.2.2.tgz#2d74de14b598a0de671fad01bd71deabb93b8aca" 802 | integrity sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg== 803 | 804 | vite-plugin-solid@^2.7.0: 805 | version "2.7.0" 806 | resolved "https://registry.yarnpkg.com/vite-plugin-solid/-/vite-plugin-solid-2.7.0.tgz#44de91335f30dfddd7f5f59a7019020860fcba2e" 807 | integrity sha512-avp/Jl5zOp/Itfo67xtDB2O61U7idviaIp4mLsjhCa13PjKNasz+IID0jYTyqUp9SFx6/PmBr6v4KgDppqompg== 808 | dependencies: 809 | "@babel/core" "^7.20.5" 810 | "@babel/preset-typescript" "^7.18.6" 811 | "@types/babel__core" "^7.1.20" 812 | babel-preset-solid "^1.7.2" 813 | merge-anything "^5.1.4" 814 | solid-refresh "^0.5.0" 815 | vitefu "^0.2.3" 816 | 817 | vite@^4.4.5: 818 | version "4.4.5" 819 | resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.5.tgz#ce9ae1a03841d2ec90f560744712495bf914f698" 820 | integrity sha512-4m5kEtAWHYr0O1Fu7rZp64CfO1PsRGZlD3TAB32UmQlpd7qg15VF7ROqGN5CyqN7HFuwr7ICNM2+fDWRqFEKaA== 821 | dependencies: 822 | esbuild "^0.18.10" 823 | postcss "^8.4.26" 824 | rollup "^3.25.2" 825 | optionalDependencies: 826 | fsevents "~2.3.2" 827 | 828 | vitefu@^0.2.3: 829 | version "0.2.4" 830 | resolved "https://registry.yarnpkg.com/vitefu/-/vitefu-0.2.4.tgz#212dc1a9d0254afe65e579351bed4e25d81e0b35" 831 | integrity sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g== 832 | 833 | yallist@^3.0.2: 834 | version "3.1.1" 835 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 836 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 837 | --------------------------------------------------------------------------------