├── .gitattributes ├── .github └── workflows │ ├── firebase-hosting-merge.yml │ └── firebase-hosting-pull-request.yml ├── .gitignore ├── .prettierrc.json ├── .yarnrc.yml ├── README.md ├── eslint.config.js ├── firebase.json ├── index.html ├── package.json ├── public └── vite.svg ├── src ├── @types │ ├── easeljs.d.ts │ └── orbitControls.d.ts ├── App.css ├── App.tsx ├── components │ ├── Sidebar.tsx │ ├── ThreeJSViewer.tsx │ └── ui │ │ └── Button.tsx ├── index.css ├── interfaces │ └── index.ts ├── main.tsx ├── utils │ ├── color.ts │ ├── constants.ts │ ├── exportimport.ts │ ├── index.ts │ └── keyboard.ts └── vite-env.d.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── yarn.lock /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/workflows/firebase-hosting-merge.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to Firebase Hosting on merge 2 | on: 3 | push: 4 | branches: 5 | - main 6 | jobs: 7 | build_and_deploy: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v4 11 | - name: Enable Corepack 12 | run: corepack enable 13 | - name: Install dependencies with Yarn 14 | run: yarn install 15 | - name: Build the project 16 | run: yarn build 17 | - uses: FirebaseExtended/action-hosting-deploy@v0 18 | with: 19 | repoToken: ${{ secrets.GITHUB_TOKEN }} 20 | firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_REACT_THREEJS_EASELJS }} 21 | channelId: live 22 | projectId: react-threejs-easeljs 23 | -------------------------------------------------------------------------------- /.github/workflows/firebase-hosting-pull-request.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to Firebase Hosting on PR 2 | on: pull_request 3 | permissions: 4 | checks: write 5 | contents: read 6 | pull-requests: write 7 | jobs: 8 | build_and_preview: 9 | if: ${{ github.event.pull_request.head.repo.full_name == github.repository }} 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | - uses: FirebaseExtended/action-hosting-deploy@v0 14 | with: 15 | repoToken: ${{ secrets.GITHUB_TOKEN }} 16 | firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_REACT_THREEJS_EASELJS }} 17 | projectId: react-threejs-easeljs 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | .firebaserc 26 | /.firebase 27 | .yarn/install-state.gz 28 | tsconfig.app.tsbuildinfo 29 | tsconfig.node.tsbuildinfo 30 | tsconfig.tsbuildinfo 31 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "avoid", 3 | "bracketSpacing": true, 4 | "htmlWhitespaceSensitivity": "css", 5 | "insertPragma": false, 6 | "jsxBracketSameLine": false, 7 | "jsxSingleQuote": true, 8 | "printWidth": 120, 9 | "proseWrap": "preserve", 10 | "quoteProps": "as-needed", 11 | "requirePragma": false, 12 | "semi": false, 13 | "singleQuote": true, 14 | "tabWidth": 2, 15 | "useTabs": false, 16 | "vueIndentScriptAndStyle": false, 17 | "endOfLine": "lf", 18 | "singleAttributePerLine": true 19 | } 20 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🌟 React - ThreeJS - EaselJS Drawing App 🎨 2 | 3 | Welcome to the **React-ThreeJS EaselJS Drawing App** – a powerful tool for creating 2D and 3D visualizations! This app covers you whether you're looking to draw, manipulate shapes, or view objects in a 3D scene. Let's unleash your creativity! 🌐✨ This is the perfect boilerplate to kickstart your drawing projects with React, ThreeJS, and EaselJS! 🚀 4 | 5 | ### 🎥 Demo Video 6 | 7 | https://github.com/user-attachments/assets/27ea7167-7dec-4ab3-911e-9e0686a1a496 8 | 9 | ### 🌍 Live Demo 10 | 11 | https://react-threejs-easeljs.web.app/ 12 | 13 | ## 🎯 Key Features 14 | 15 | - 🎨 **Draw Shapes:** Draw rectangles, circles, lines, and custom paths effortlessly with a click-and-drag interface. 16 | - ✋ **Shape Manipulation:** Move, drag, and delete shapes as needed. Shapes adjust in real time for a smooth experience! 17 | - 🌐 **3D Viewer:** Toggle between 2D and view-only 3D mode to see your drawings come to life in a new dimension. 18 | - 🎨 **Random Colors:** Each shape you create is assigned a random stroke and fill color. 19 | - ⚡ **Real-Time Updates:** Watch your canvas update instantly as you interact with shapes. 20 | - ⌨️ **Keyboard Support:** Delete selected shapes using the Delete or Backspace keys for quick editing. 21 | 22 | ## 🛠️ Tech Stack 23 | 24 | This project is built using modern technologies: 25 | 26 | - **React** ⚛️ 27 | - **Three.js** 🌐 28 | - **EaselJS** 🎨 29 | - **Vite** ⚡ 30 | - **Lodash** 🛠️ 31 | - **TypeScript** 🔧 32 | - **Firebase** 🔥 33 | - **SonarCloud** 🧪 34 | 35 | ### 📦 Dependencies 36 | 37 | The project relies on several key libraries: 38 | 39 | **React:** A library for building user interfaces. 40 | **Three.js:** A powerful 3D engine for rendering the 3D view mode. 41 | **EaselJS:** A library for drawing and manipulating 2D shapes. 42 | **Vite:** A fast build tool for modern web development. 43 | **Lodash:** A utility library for working with arrays, objects, and more. 44 | 45 | ### 🚀 Getting Started 46 | 47 | To start the project locally, fork the repo and follow these steps: 48 | 49 | ``` 50 | 1. 🍴 Fork the repository 51 | 2. 📥 Clone your forked repository 52 | 3. 🛠️ Run `yarn install` to install dependencies 53 | 4. 🚀 Run `yarn dev` to start the local development server 54 | ``` 55 | 56 | The app will run on http://localhost:5173. 57 | 58 | ### Expanding the ESLint configuration 59 | 60 | If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: 61 | 62 | - Configure the top-level `parserOptions` property like this: 63 | 64 | ```js 65 | export default tseslint.config({ 66 | languageOptions: { 67 | // other options... 68 | parserOptions: { 69 | project: ['./tsconfig.node.json', './tsconfig.app.json'], 70 | tsconfigRootDir: import.meta.dirname, 71 | }, 72 | }, 73 | }) 74 | ``` 75 | 76 | - Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked` 77 | - Optionally add `...tseslint.configs.stylisticTypeChecked` 78 | - Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config: 79 | 80 | ```js 81 | // eslint.config.js 82 | import react from 'eslint-plugin-react' 83 | 84 | export default tseslint.config({ 85 | // Set the react version 86 | settings: { react: { version: '18.3' } }, 87 | plugins: { 88 | // Add the react plugin 89 | react, 90 | }, 91 | rules: { 92 | // other rules... 93 | // Enable its recommended rules 94 | ...react.configs.recommended.rules, 95 | ...react.configs['jsx-runtime'].rules, 96 | }, 97 | }) 98 | ``` 99 | 100 | ### 👾 How can I contribute? 101 | 102 | - ⭐ Star the repository 103 | - 🛠️ Submit pull requests, report bugs, or suggest features 104 | 105 | ### 📬 Get in Touch 106 | 107 | Feel free to reach out if you have any questions or need help: 108 | 109 | - **GitHub:** https://github.com/voretexory/https://github.com/vortexory/react_threejs_drawing-app 110 | 111 | Made with ❤️ in 📍 Istanbul, using React ⚛️, Three.js 🌐, EaselJS 🎨, TypeScript 🔧, Vite ⚡, and Lodash 🛠️! 112 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js' 2 | import globals from 'globals' 3 | import reactHooks from 'eslint-plugin-react-hooks' 4 | import reactRefresh from 'eslint-plugin-react-refresh' 5 | import tseslint from 'typescript-eslint' 6 | 7 | export default tseslint.config( 8 | { ignores: ['dist'] }, 9 | { 10 | extends: [js.configs.recommended, ...tseslint.configs.recommended], 11 | files: ['**/*.{ts,tsx}'], 12 | languageOptions: { 13 | ecmaVersion: 2020, 14 | globals: globals.browser, 15 | }, 16 | plugins: { 17 | 'react-hooks': reactHooks, 18 | 'react-refresh': reactRefresh, 19 | }, 20 | rules: { 21 | ...reactHooks.configs.recommended.rules, 22 | 'react-refresh/only-export-components': ['warn', { allowConstantExport: true }], 23 | }, 24 | } 25 | ) 26 | -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosting": { 3 | "public": "dist", 4 | "ignore": [ 5 | "firebase.json", 6 | "**/.*", 7 | "**/node_modules/**" 8 | ], 9 | "rewrites": [ 10 | { 11 | "source": "**", 12 | "destination": "/index.html" 13 | } 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 14 | Drawing APP With React + ThreeJS + EaselJS 15 | 16 | 20 | 21 | 22 |
23 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-threejs-easeljs-drawing-app", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc -b && vite build", 9 | "lint": "eslint .", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@createjs/easeljs": "^2.0.0-beta.4", 14 | "lodash": "^4.17.21", 15 | "react": "^18.3.1", 16 | "react-dom": "^18.3.1", 17 | "three": "^0.169.0" 18 | }, 19 | "devDependencies": { 20 | "@eslint/js": "^9.11.1", 21 | "@types/easeljs": "^1", 22 | "@types/lodash": "^4.17.10", 23 | "@types/react": "^18.3.11", 24 | "@types/react-dom": "^18.3.1", 25 | "@types/three": "^0.169.0", 26 | "@vitejs/plugin-react": "^4.3.2", 27 | "eslint": "^9.11.1", 28 | "eslint-plugin-react-hooks": "^5.1.0-rc.0", 29 | "eslint-plugin-react-refresh": "^0.4.12", 30 | "globals": "^15.9.0", 31 | "typescript": "^5.5.3", 32 | "typescript-eslint": "^8.7.0", 33 | "vite": "^5.4.8" 34 | }, 35 | "packageManager": "yarn@4.4.0+sha512.91d93b445d9284e7ed52931369bc89a663414e5582d00eea45c67ddc459a2582919eece27c412d6ffd1bd0793ff35399381cb229326b961798ce4f4cc60ddfdb" 36 | } 37 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/@types/easeljs.d.ts: -------------------------------------------------------------------------------- 1 | // src/@types/easeljs.d.ts 2 | import { Shape as CustomShape } from '../interfaces' 3 | 4 | declare module '@createjs/easeljs' { 5 | export class Stage { 6 | constructor(canvas: HTMLCanvasElement) 7 | addChild(shape: CustomShape | Shape): void 8 | enableMouseOver(): void 9 | removeAllChildren(): void 10 | clear(): void 11 | removeChild(selectedShape: CustomShape | Shape): void 12 | update(): void 13 | children: Shape[] 14 | getObjectsUnderPoint(x: number, y: number, mode?: number): Shape[] 15 | } 16 | 17 | export class Shape { 18 | x: number 19 | y: number 20 | offset: { x: number; y: number } 21 | id: number 22 | graphics: Graphics 23 | constructor() 24 | on(event: string, handler: (this: Shape, evt: { stageX: number; stageY: number }) => void): void 25 | } 26 | 27 | export class Graphics { 28 | beginFill(color: string): Graphics 29 | beginStroke(color: string): Graphics 30 | setStrokeStyle(thickness: number): Graphics 31 | drawRect(x: number, y: number, width: number, height: number): Graphics 32 | drawCircle(x: number, y: number, radius: number): Graphics 33 | moveTo(x: number, y: number): Graphics 34 | lineTo(x: number, y: number): Graphics 35 | clear(): Graphics 36 | } 37 | 38 | export class Ticker { 39 | static framerate: number 40 | static addEventListener(event: string, listener: (event: Event) => void): void 41 | static removeEventListener(event: string, listener: (event: Event) => void): void 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/@types/orbitControls.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'three/examples/jsm/controls/OrbitControls' { 2 | import { EventDispatcher } from 'three' 3 | import { Camera } from 'three' 4 | import { HTMLElement } from 'three' 5 | 6 | export class OrbitControls extends EventDispatcher { 7 | constructor(camera: Camera, domElement?: HTMLElement) 8 | 9 | enableDamping: boolean // Add damping option 10 | dampingFactor: number // Damping factor for smooth movement 11 | enableZoom: boolean // Enable or disable zooming 12 | 13 | update(): void 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | #root { 2 | width: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import './App.css' 2 | 3 | import React, { useRef, useEffect, useState, useCallback } from 'react' 4 | import { getRandomColor } from './utils' 5 | // @ts-expect-error -> no support for EaselJS in TypeScript -> https://github.com/CreateJS/EaselJS/issues/796 6 | import { Stage, Shape, Ticker } from '@createjs/easeljs' 7 | import { Shape as ShapeInterface } from './interfaces' 8 | import { defaultPathThickness, ShapeType } from './utils/constants' 9 | import Sidebar from './components/Sidebar' 10 | import ThreeJSViewer from './components/ThreeJSViewer' 11 | import { isEmpty } from 'lodash' 12 | 13 | const Canvas: React.FC = () => { 14 | const [pathThickness, setPathThickness] = useState(defaultPathThickness) 15 | const canvasRef = useRef(null) 16 | const stageRef = useRef(null) 17 | const [shapes, setShapes] = useState([]) 18 | const [selectedShape, setSelectedShape] = useState(null) 19 | const [shapeType, setShapeType] = useState('rectangle') 20 | const [isDrawing, setIsDrawing] = useState(false) 21 | const [startPoint, setStartPoint] = useState<{ x: number; y: number } | null>(null) 22 | const [currentShape, setCurrentShape] = useState(null) 23 | const [is3DMode, setIs3DMode] = useState(false) 24 | const pathColor = useRef(getRandomColor()) 25 | 26 | const selectedIdRef = useRef(undefined) 27 | const pathPointsRef = useRef<{ x: number; y: number }[]>([]) 28 | 29 | const toggleViewMode = () => setIs3DMode(!is3DMode) 30 | 31 | const getStrokeThickness = (thickness?: number) => thickness ?? pathThickness 32 | 33 | // Function to handle shape creation 34 | const createShape = useCallback( 35 | (props: ShapeInterface) => { 36 | const stage = stageRef.current 37 | if (!stage) return 38 | 39 | const shape = new Shape() 40 | const g = shape.graphics 41 | 42 | switch (props.type) { 43 | case 'rectangle': 44 | g.beginFill(props.fillColor).beginStroke(props.strokeColor).drawRect(0, 0, props.width, props.height) 45 | break 46 | case 'circle': 47 | g.beginFill(props.fillColor).beginStroke(props.strokeColor).drawCircle(0, 0, props.radius) 48 | break 49 | case 'line': 50 | if (props.endX === undefined || props.endY === undefined) return 51 | 52 | g.beginStroke(props.strokeColor) 53 | .setStrokeStyle(getStrokeThickness(props?.thickness)) 54 | .moveTo(0, 0) 55 | .lineTo(props.endX - props.x, props.endY - props.y) 56 | break 57 | case 'path': 58 | if (props?.points && props.points?.length > 1) { 59 | g.beginStroke(props.strokeColor).setStrokeStyle(getStrokeThickness(props?.thickness)) 60 | g.moveTo(props.points[0].x, props.points[0].y) 61 | 62 | props.points.forEach((point: { x: number; y: number }, index: number) => { 63 | if (index > 0) g.lineTo(point.x, point.y) 64 | }) 65 | } 66 | break 67 | default: 68 | return 69 | } 70 | 71 | shape.x = props.x 72 | shape.y = props.y 73 | 74 | // Handle mousedown event 75 | shape.on('mousedown', function (this: Shape, evt: { stageX: number; stageY: number }) { 76 | const { stageX, stageY } = evt 77 | const { x, y } = this 78 | 79 | // Calculate the offset for dragging 80 | this.offset = { x: x - stageX, y: y - stageY } 81 | }) 82 | 83 | // Handle pressmove event (dragging) 84 | shape.on('pressmove', function (this: Shape, evt: { stageX: number; stageY: number }) { 85 | const { stageX, stageY } = evt 86 | const { offset } = this 87 | 88 | // Update position based on the drag event 89 | this.x = stageX + offset.x 90 | this.y = stageY + offset.y 91 | 92 | if (props.type === 'line') { 93 | if (props.endX === undefined || props.endY === undefined) return 94 | 95 | const dx = this.x - props.x 96 | const dy = this.y - props.y 97 | 98 | props.endX &&= props.endX + dx 99 | props.endY &&= props.endY + dy 100 | 101 | props.x = this.x 102 | props.y = this.y 103 | 104 | const g = this.graphics 105 | g.clear() 106 | .beginStroke(props.strokeColor) 107 | .setStrokeStyle(getStrokeThickness(props?.thickness)) 108 | .moveTo(0, 0) 109 | .lineTo(props.endX - props.x, props.endY - props.y) 110 | } else if (props.type === 'path' && props.points) { 111 | // Update path points relative to new position 112 | const { x, y } = props 113 | 114 | props.points = props.points.map((point: { x: number; y: number }) => ({ 115 | x: point.x + (this.x - x), 116 | y: point.y + (this.y - y), 117 | })) 118 | 119 | // Update path origin 120 | props.x = this.x 121 | props.y = this.y 122 | } 123 | 124 | // Only update the stage once per movement 125 | stage.update() 126 | }) 127 | 128 | shape.on('pressup', function (this: Shape) { 129 | const { id, x, y } = this 130 | 131 | // Update only if the coordinates have changed 132 | setShapes(prevShapes => 133 | prevShapes.map(shape => { 134 | if (shape.id === id) { 135 | if (shape.type === 'line') return { ...shape, x, y, endX: props.endX, endY: props.endY } 136 | return { ...shape, x, y, points: props?.points } 137 | } 138 | return shape 139 | }) 140 | ) 141 | }) 142 | 143 | props.id = shape?.id || shapes.length + 1 144 | 145 | stage.addChild(shape) 146 | setShapes(prevShapes => [...prevShapes, { ...props, instance: shape }]) 147 | stage.update() 148 | 149 | return shape 150 | }, 151 | [shapes] 152 | ) 153 | 154 | const startDrawing = (x: number, y: number) => { 155 | setStartPoint({ x, y }) 156 | setIsDrawing(true) 157 | 158 | const newShape = new Shape() 159 | stageRef.current?.addChild(newShape) 160 | setCurrentShape(newShape) 161 | } 162 | 163 | const draw = (x: number, y: number) => { 164 | if (!isDrawing || !startPoint || !currentShape) return 165 | 166 | const g = currentShape.graphics 167 | g.clear() 168 | 169 | const { x: startX, y: startY } = startPoint 170 | let thickness = pathThickness 171 | 172 | if (['line', 'path'].includes(shapeType) && currentShape?.graphics?._strokeStyle?.width) { 173 | thickness = currentShape?.graphics?._strokeStyle?.width 174 | } 175 | 176 | switch (shapeType) { 177 | case 'rectangle': 178 | g.beginFill(pathColor.current) 179 | .beginStroke(pathColor.current) 180 | .drawRect(startX, startY, x - startX, y - startY) 181 | break 182 | case 'circle': { 183 | const radius = Math.sqrt(Math.pow(x - startX, 2) + Math.pow(y - startY, 2)) 184 | g.beginFill(pathColor.current).beginStroke(pathColor.current).drawCircle(startX, startY, radius) 185 | break 186 | } 187 | case 'line': 188 | g.beginStroke(pathColor.current).setStrokeStyle(thickness).moveTo(startX, startY).lineTo(x, y) 189 | break 190 | case 'path': { 191 | const newPoints = g.beginStroke(pathColor.current).setStrokeStyle(thickness) 192 | 193 | if (isEmpty(pathPointsRef.current)) { 194 | newPoints.moveTo(startX, startY) 195 | } else { 196 | pathPointsRef.current.forEach(point => newPoints.lineTo(point.x, point.y)) 197 | } 198 | 199 | newPoints.lineTo(x, y) 200 | } 201 | } 202 | 203 | stageRef.current?.update() 204 | } 205 | 206 | const endDrawing = (x: number, y: number) => { 207 | if (!isDrawing || !startPoint || !currentShape) return 208 | 209 | let shapeProps: Shape 210 | const radius = Math.sqrt(Math.pow(x - startPoint.x, 2) + Math.pow(y - startPoint.y, 2)) 211 | 212 | switch (shapeType) { 213 | case 'rectangle': 214 | shapeProps = { 215 | type: 'rectangle', 216 | fillColor: pathColor.current, 217 | strokeColor: getRandomColor(), 218 | x: Math.min(startPoint.x, x), 219 | y: Math.min(startPoint.y, y), 220 | width: Math.abs(x - startPoint.x), 221 | height: Math.abs(y - startPoint.y), 222 | } 223 | break 224 | case 'circle': 225 | shapeProps = { 226 | type: 'circle', 227 | fillColor: pathColor.current, 228 | strokeColor: getRandomColor(), 229 | x: startPoint.x, 230 | y: startPoint.y, 231 | radius, 232 | } 233 | break 234 | case 'line': 235 | shapeProps = { 236 | type: 'line', 237 | fillColor: 'transparent', 238 | strokeColor: pathColor.current, 239 | x: startPoint.x, 240 | y: startPoint.y, 241 | endX: x, 242 | endY: y, 243 | thickness: pathThickness, 244 | } 245 | break 246 | default: 247 | return 248 | } 249 | 250 | createShape(shapeProps) 251 | stageRef.current?.removeChild(currentShape) 252 | setIsDrawing(false) 253 | setStartPoint(null) 254 | setCurrentShape(null) 255 | stageRef.current?.update() 256 | } 257 | 258 | // Mouse event handlers 259 | const handleCanvasMouseDown = useCallback( 260 | (event: React.MouseEvent) => { 261 | if (!isDrawing) pathColor.current = getRandomColor() 262 | const { offsetX, offsetY } = event.nativeEvent 263 | 264 | if (shapeType === 'path') { 265 | pathPointsRef.current.push({ x: offsetX, y: offsetY }) 266 | } 267 | 268 | const clickedShape = stageRef.current?.getObjectsUnderPoint(offsetX, offsetY, 1)?.[0] as ShapeInterface 269 | 270 | if (clickedShape) { 271 | selectedIdRef.current = clickedShape?.id as number 272 | setSelectedShape(clickedShape) 273 | } else { 274 | startDrawing(offsetX, offsetY) 275 | } 276 | }, 277 | [shapeType, isDrawing] 278 | ) 279 | 280 | const handleCanvasMouseMove = useCallback( 281 | (event: React.MouseEvent) => { 282 | const { offsetX, offsetY } = event.nativeEvent 283 | 284 | if (isDrawing) { 285 | draw(offsetX, offsetY) 286 | } 287 | }, 288 | [isDrawing, shapeType] 289 | ) 290 | 291 | const handleCanvasMouseUp = useCallback( 292 | (event: React.MouseEvent) => { 293 | const { offsetX, offsetY } = event.nativeEvent 294 | 295 | if (isDrawing) { 296 | if (shapeType === 'path') { 297 | pathPointsRef.current = [...pathPointsRef.current, { x: offsetX, y: offsetY }] 298 | } else { 299 | endDrawing(offsetX, offsetY) 300 | } 301 | } else if (shapeType === 'line') { 302 | // Find the shape with the corresponding id 303 | const foundLine = stageRef.current?.children.find((shape: Shape) => shape.id === selectedIdRef.current) 304 | 305 | // Extract coordinates with fallback to avoid undefined values 306 | const coordinates = { 307 | x: startPoint?.x ?? 0, 308 | y: startPoint?.y ?? 0, 309 | endX: foundLine?.x ?? 0, 310 | endY: foundLine?.y ?? 0, 311 | } 312 | 313 | // Update shapes, ensuring we don't spread undefined values 314 | setShapes(prevShapes => 315 | prevShapes.map(shape => 316 | shape.id === selectedIdRef.current ? { ...shape, ...coordinates, instance: foundLine } : shape 317 | ) 318 | ) 319 | } 320 | }, 321 | [isDrawing, shapeType] 322 | ) 323 | 324 | // Initialize canvas and attach event handlers 325 | useEffect(() => { 326 | if (canvasRef.current) { 327 | const stage = new Stage(canvasRef.current) 328 | stageRef.current = stage 329 | 330 | stage.enableMouseOver() 331 | 332 | Ticker.framerate = 60 333 | Ticker.addEventListener('tick', stage) 334 | 335 | return () => { 336 | Ticker.removeEventListener('tick', stage) 337 | stage.removeAllChildren() 338 | stage.clear() 339 | } 340 | } 341 | }, []) 342 | 343 | // Clear all shapes 344 | const clearShapes = useCallback(() => { 345 | const stage = stageRef.current 346 | 347 | if (stage) { 348 | stage.removeAllChildren() 349 | stage.clear() 350 | stage.update() 351 | } 352 | 353 | setShapes([]) 354 | setSelectedShape(null) 355 | setIsDrawing(false) 356 | pathPointsRef.current = [] 357 | }, []) 358 | 359 | // Keyboard delete, backspace handlers 360 | useEffect(() => { 361 | const handleKeyDown = (event: KeyboardEvent) => { 362 | if (['Delete', 'Backspace'].includes(event.key) && selectedShape) { 363 | const stage = stageRef.current 364 | 365 | if (stage) { 366 | stage.removeChild(selectedShape) 367 | setSelectedShape(null) 368 | setShapes(prevShapes => prevShapes.filter(shape => shape.id !== selectedShape?.id)) 369 | stage.update() 370 | } 371 | } 372 | } 373 | 374 | window.addEventListener('keydown', handleKeyDown) 375 | 376 | return () => window.removeEventListener('keydown', handleKeyDown) 377 | }, [selectedShape]) 378 | 379 | useEffect(() => { 380 | // With this effect, we can finalize the path if the user right clicks 381 | const handleRightClick = (event: MouseEvent) => { 382 | event.preventDefault() 383 | 384 | if (isDrawing) { 385 | if (shapeType === 'path' && Array.isArray(pathPointsRef.current) && pathPointsRef.current.length > 1) { 386 | const current = { 387 | type: 'path', 388 | fillColor: pathColor.current, 389 | strokeColor: pathColor.current, 390 | x: 0, 391 | y: 0, 392 | points: pathPointsRef.current, 393 | instance: stageRef.current?.children[stageRef.current?.children.length - 1] as Shape, 394 | thickness: pathThickness, 395 | } 396 | 397 | stageRef.current?.removeChild(currentShape) 398 | stageRef.current?.update() 399 | 400 | createShape({ 401 | ...current, 402 | }) 403 | 404 | pathPointsRef.current = [] 405 | setStartPoint(null) 406 | } 407 | 408 | setIsDrawing(false) 409 | } 410 | } 411 | 412 | window.addEventListener('contextmenu', handleRightClick) 413 | 414 | return () => { 415 | window.removeEventListener('contextmenu', handleRightClick) 416 | } 417 | }, [isDrawing]) 418 | 419 | useEffect(() => { 420 | setIsDrawing(false) 421 | }, [shapeType]) 422 | 423 | return ( 424 |
425 |
426 | 437 |
441 |
446 | 447 |
448 | 449 |
455 | 463 |
464 |
465 |
466 |
467 | ) 468 | } 469 | 470 | export default Canvas 471 | -------------------------------------------------------------------------------- /src/components/Sidebar.tsx: -------------------------------------------------------------------------------- 1 | import { importShapes, exportShapes } from '../utils/exportimport' 2 | import { isEmpty } from 'lodash' 3 | import { defaultPathThickness, shapeList } from '../utils/constants' 4 | import { SidebarProps } from '../interfaces' 5 | import Button from './ui/Button' 6 | 7 | export default function Sidebar({ 8 | clearShapes, 9 | createShape, 10 | setShapeType, 11 | shapes, 12 | shapeType, 13 | toggleViewMode, 14 | is3DMode, 15 | pathThickness, 16 | setPathThickness, 17 | }: Readonly) { 18 | const importFunc = (event: React.ChangeEvent) => { 19 | importShapes({ event, createShape, clearShapes }) 20 | } 21 | 22 | const setThickness = (thickness: number) => { 23 | if (thickness < 1 || isNaN(thickness)) thickness = defaultPathThickness 24 | 25 | setPathThickness(thickness) 26 | } 27 | const iconList = ['rectangle', 'circle', 'horizontal_rule', 'route'] 28 | 29 | return ( 30 |
31 | {!is3DMode && ( 32 |
33 |
SHAPES
34 |
    35 | {shapeList.map((type, index) => ( 36 |
  • 37 | 44 | 45 | {['line', 'path'].includes(type) && shapeType === type && ( 46 |
    47 | Path thickness: 48 | setThickness(Number(e.target.value))} 52 | className='p-2 border border-gray-200 rounded-md focus:outline-none focus:shadow-outline w-32' 53 | placeholder='Path thickness' 54 | /> 55 |
    56 | )} 57 |
  • 58 | ))} 59 |
60 |
61 | )} 62 |
63 |
ACTIONS
64 | 65 | {!is3DMode && ( 66 | <> 67 | 70 | 71 | {!isEmpty(shapes) && ( 72 | 78 | )} 79 | 80 | 87 | 93 | 94 | )} 95 | 96 | 103 |
104 |
105 | ) 106 | } 107 | -------------------------------------------------------------------------------- /src/components/ThreeJSViewer.tsx: -------------------------------------------------------------------------------- 1 | import React, { useRef, useEffect } from 'react' 2 | import * as THREE from 'three' 3 | import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' 4 | import { Shape as ShapeInterface } from '../interfaces' 5 | import { defaultPathThickness } from '../utils/constants' 6 | 7 | interface ThreeJSViewerProps { 8 | shapes: ShapeInterface[] 9 | } 10 | 11 | const ThreeJSViewer: React.FC = ({ shapes }) => { 12 | const containerRef = useRef(null) 13 | const sceneRef = useRef(null) 14 | 15 | useEffect(() => { 16 | const container = containerRef.current 17 | if (!container) return 18 | 19 | const scene = new THREE.Scene() 20 | scene.background = new THREE.Color(0xffffff) 21 | 22 | const camera = new THREE.PerspectiveCamera(75, 800 / 800, 0.01, 2000) 23 | camera.position.set(0, 0, 500) 24 | camera.lookAt(0, 0, 0) 25 | 26 | const renderer = new THREE.WebGLRenderer() 27 | renderer.setSize(800, 800) 28 | containerRef.current.appendChild(renderer.domElement) 29 | 30 | const controls = new OrbitControls(camera, renderer.domElement) 31 | controls.enableDamping = true 32 | controls.dampingFactor = 0.25 33 | controls.enableZoom = true 34 | 35 | const light = new THREE.AmbientLight(0xffffff, 0.5) 36 | scene.add(light) 37 | 38 | const directionalLight = new THREE.DirectionalLight(0xffffff, 0.5) 39 | directionalLight.position.set(0, 1, 0) 40 | scene.add(directionalLight) 41 | 42 | const convertTo3DCoords = (x: number, y: number): THREE.Vector3 => { 43 | const halfWidth = 400 44 | const halfHeight = 400 45 | return new THREE.Vector3(x - halfWidth, halfHeight - y, 0) 46 | } 47 | 48 | const create3DShape = (shape: ShapeInterface) => { 49 | let geometry: THREE.BufferGeometry 50 | let material: THREE.Material 51 | let mesh: THREE.Mesh 52 | 53 | const thickness = shape?.thickness ?? shape?.instance?._strokeStyle?.width ?? defaultPathThickness 54 | 55 | switch (shape.type) { 56 | case 'rectangle': { 57 | if (shape.width === undefined || shape.height === undefined) { 58 | return // Invalid rectangle, skip 59 | } 60 | 61 | const position = convertTo3DCoords(shape.x + shape.width / 2, shape.y + shape.height / 2) 62 | geometry = new THREE.BoxGeometry(shape.width, shape.height, 20) 63 | material = new THREE.MeshPhongMaterial({ color: shape.fillColor || 0xffffff }) 64 | mesh = new THREE.Mesh(geometry, material) 65 | mesh.position.copy(position) 66 | break 67 | } 68 | case 'circle': { 69 | const position = convertTo3DCoords(shape.x, shape.y) 70 | geometry = new THREE.CylinderGeometry(shape.radius, shape.radius, 20, 32) 71 | material = new THREE.MeshPhongMaterial({ color: shape.fillColor || 0xffffff }) 72 | mesh = new THREE.Mesh(geometry, material) 73 | mesh.rotation.x = Math.PI / 2 74 | mesh.position.copy(position) 75 | break 76 | } 77 | case 'line': { 78 | const startPosition = convertTo3DCoords(shape.x, shape.y) 79 | const endPosition = convertTo3DCoords(shape.endX!, shape.endY!) 80 | const lineCurve = new THREE.LineCurve3(startPosition, endPosition) 81 | geometry = new THREE.TubeGeometry(lineCurve, 10, thickness, 8, false) 82 | material = new THREE.MeshPhongMaterial({ color: shape?.strokeColor ?? 0x000000 }) 83 | mesh = new THREE.Mesh(geometry, material) 84 | break 85 | } 86 | case 'path': { 87 | if (shape.points && shape.points.length > 1) { 88 | const pathPoints = shape.points.map(point => convertTo3DCoords(point.x, point.y)) 89 | const curve = new THREE.CatmullRomCurve3(pathPoints) 90 | geometry = new THREE.TubeGeometry(curve, 64, thickness, 8, false) 91 | material = new THREE.MeshPhongMaterial({ color: shape.strokeColor || 0x000000 }) 92 | mesh = new THREE.Mesh(geometry, material) 93 | } else { 94 | return // Invalid path, skip 95 | } 96 | break 97 | } 98 | default: 99 | return // Unknown shape type, skip 100 | } 101 | 102 | scene.add(mesh) 103 | } 104 | 105 | shapes.forEach(create3DShape) 106 | 107 | sceneRef.current = scene 108 | 109 | const animate = () => { 110 | requestAnimationFrame(animate) 111 | controls.update() 112 | renderer.render(scene, camera) 113 | } 114 | 115 | animate() 116 | 117 | return () => { 118 | if (container) { 119 | container.removeChild(renderer.domElement) 120 | } 121 | renderer.dispose() 122 | } 123 | }, [shapes]) 124 | 125 | return
126 | } 127 | 128 | export default ThreeJSViewer 129 | -------------------------------------------------------------------------------- /src/components/ui/Button.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | interface ButtonProps { 4 | children: React.ReactNode 5 | onClick: React.MouseEventHandler 6 | className?: string 7 | isActive?: boolean 8 | } 9 | 10 | const Button: React.FC = ({ children, onClick, className = '', isActive = false }) => { 11 | return ( 12 | 24 | ) 25 | } 26 | 27 | export default Button 28 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; 3 | line-height: 1.5; 4 | font-weight: 400; 5 | 6 | color-scheme: light dark; 7 | color: rgba(255, 255, 255, 0.87); 8 | background-color: #242424; 9 | 10 | font-synthesis: none; 11 | text-rendering: optimizeLegibility; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | } 15 | 16 | a { 17 | font-weight: 500; 18 | color: #646cff; 19 | text-decoration: inherit; 20 | } 21 | a:hover { 22 | color: #535bf2; 23 | } 24 | 25 | body { 26 | margin: 0; 27 | display: flex; 28 | place-items: center; 29 | min-width: 320px; 30 | min-height: 100vh; 31 | } 32 | 33 | h1 { 34 | font-size: 3.2em; 35 | line-height: 1.1; 36 | } 37 | 38 | button { 39 | border-radius: 8px; 40 | border: 1px solid transparent; 41 | padding: 0.6em 1.2em; 42 | font-size: 1em; 43 | font-weight: 500; 44 | font-family: inherit; 45 | background-color: #1a1a1a; 46 | cursor: pointer; 47 | transition: border-color 0.25s; 48 | } 49 | button:hover { 50 | border-color: #646cff; 51 | } 52 | button:focus, 53 | button:focus-visible { 54 | outline: 4px auto -webkit-focus-ring-color; 55 | } 56 | 57 | @media (prefers-color-scheme: light) { 58 | :root { 59 | color: #213547; 60 | background-color: #ffffff; 61 | } 62 | a:hover { 63 | color: #747bff; 64 | } 65 | button { 66 | background-color: #f9f9f9; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/interfaces/index.ts: -------------------------------------------------------------------------------- 1 | import { ShapeType } from '../utils/constants' 2 | 3 | export interface Shape { 4 | id?: number 5 | color?: string 6 | type?: ShapeType 7 | fillColor: string 8 | strokeColor: string 9 | x: number 10 | y: number 11 | points?: { x: number; y: number }[] 12 | width?: number 13 | height?: number 14 | radius?: number 15 | endX?: number 16 | endY?: number 17 | graphics?: any 18 | instance?: any 19 | thickness?: number 20 | } 21 | 22 | export interface SidebarProps { 23 | clearShapes: () => void 24 | createShape: (props: Shape) => void 25 | setShapeType: (type: string) => void 26 | shapes: Shape[] 27 | shapeType: string 28 | toggleViewMode: () => void 29 | is3DMode: boolean 30 | pathThickness: number 31 | setPathThickness: (thickness: number) => void 32 | } 33 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import { StrictMode } from 'react' 2 | import { createRoot } from 'react-dom/client' 3 | import App from './App.tsx' 4 | import './index.css' 5 | 6 | createRoot(document.getElementById('root')!).render( 7 | 8 | 9 | , 10 | ) 11 | -------------------------------------------------------------------------------- /src/utils/color.ts: -------------------------------------------------------------------------------- 1 | export const getRandomColor = () => '#' + Math.floor(Math.random() * 16777215).toString(16) 2 | -------------------------------------------------------------------------------- /src/utils/constants.ts: -------------------------------------------------------------------------------- 1 | export const shapeList = ['rectangle', 'circle', 'line', 'path'] 2 | export type ShapeType = (typeof shapeList)[number] 3 | export const defaultPathThickness = 25 4 | -------------------------------------------------------------------------------- /src/utils/exportimport.ts: -------------------------------------------------------------------------------- 1 | import { Shape } from '../interfaces' 2 | import { defaultPathThickness } from './constants' 3 | 4 | const getUpdatedShapeData = (shape: Shape) => { 5 | const instance = shape.instance 6 | const updatedShape: Shape = { 7 | type: shape.type, 8 | fillColor: shape.fillColor, 9 | strokeColor: shape.strokeColor, 10 | x: instance ? instance.x : shape.x, 11 | y: instance ? instance.y : shape.y, 12 | width: shape.width, 13 | height: shape.height, 14 | radius: shape.radius, 15 | points: shape.points ? [...shape.points] : undefined, 16 | endX: shape.endX, 17 | endY: shape.endY, 18 | thickness: shape.thickness, 19 | } 20 | 21 | switch (shape.type) { 22 | case 'line': 23 | if (instance) { 24 | const dx = instance.x - shape.x 25 | const dy = instance.y - shape.y 26 | updatedShape.endX = (shape.endX ?? 0) + dx 27 | updatedShape.endY = (shape.endY ?? 0) + dy 28 | updatedShape.thickness ??= shape?.instance?._strokeStyle?.width || defaultPathThickness 29 | } 30 | 31 | break 32 | case 'path': 33 | if (instance && updatedShape.points) { 34 | updatedShape.x = 0 35 | updatedShape.y = 0 36 | updatedShape.thickness ??= shape?.instance?._strokeStyle?.width || defaultPathThickness 37 | 38 | const dx = instance.x - shape.x 39 | const dy = instance.y - shape.y 40 | 41 | updatedShape.points = updatedShape.points.map(point => ({ 42 | x: point.x + dx, 43 | y: point.y + dy, 44 | })) 45 | } 46 | break 47 | } 48 | 49 | return updatedShape 50 | } 51 | 52 | export const exportShapes = (shapes: Shape[]) => { 53 | // Only export active shapes (not deleted) 54 | const activeShapes = shapes.filter(shape => !shape.instance?.isDeleted) 55 | const exportedData = activeShapes.map(getUpdatedShapeData) 56 | 57 | try { 58 | const jsonString = JSON.stringify(exportedData, null, 2) 59 | const blob = new Blob([jsonString], { type: 'application/json' }) 60 | const url = URL.createObjectURL(blob) 61 | const a = document.createElement('a') 62 | a.href = url 63 | a.download = 'shapes.json' 64 | a.click() 65 | URL.revokeObjectURL(url) 66 | } catch (error) { 67 | console.error('Error during export:', error) 68 | } 69 | } 70 | 71 | export const importShapes = ({ 72 | event, 73 | createShape, 74 | clearShapes, 75 | }: Readonly<{ event: React.ChangeEvent; createShape: any; clearShapes: any }>) => { 76 | const file = event.target.files?.[0] 77 | if (file) { 78 | const reader = new FileReader() 79 | reader.onload = e => { 80 | const result = e.target?.result 81 | if (result) { 82 | try { 83 | const importedShapes: Shape[] = JSON.parse(result as string) 84 | 85 | // Clear all existing shapes before importing 86 | clearShapes() 87 | 88 | importedShapes.forEach(shapeProps => { 89 | createShape(shapeProps) 90 | }) 91 | } catch (error) { 92 | console.error('Failed to parse JSON:', error) 93 | } 94 | } 95 | } 96 | reader.readAsText(file) 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export { getRandomColor } from './color' 2 | -------------------------------------------------------------------------------- /src/utils/keyboard.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vortexory/react_threejs_drawing-app/ee888075d87d4d2333784dcce8d0d918a7b4c985/src/utils/keyboard.ts -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "useDefineForClassFields": true, 5 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "isolatedModules": true, 13 | "moduleDetection": "force", 14 | "noEmit": true, 15 | "jsx": "react-jsx", 16 | 17 | /* Linting */ 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noFallthroughCasesInSwitch": true 22 | }, 23 | "include": ["src"] 24 | } 25 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "jsx": "react-jsx", 4 | "moduleResolution": "node", 5 | "esModuleInterop": true, 6 | "skipLibCheck": true 7 | }, 8 | "files": [], 9 | "references": [ 10 | { "path": "./tsconfig.app.json" }, 11 | { "path": "./tsconfig.node.json" } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2022", 4 | "lib": ["ES2023"], 5 | "module": "ESNext", 6 | "skipLibCheck": true, 7 | 8 | /* Bundler mode */ 9 | "moduleResolution": "bundler", 10 | "allowImportingTsExtensions": true, 11 | "isolatedModules": true, 12 | "moduleDetection": "force", 13 | "noEmit": true, 14 | 15 | /* Linting */ 16 | "strict": true, 17 | "noUnusedLocals": true, 18 | "noUnusedParameters": true, 19 | "noFallthroughCasesInSwitch": true 20 | }, 21 | "include": ["vite.config.ts"] 22 | } 23 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import react from "@vitejs/plugin-react"; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | optimizeDeps: { 8 | include: ["@createjs/easeljs"], 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # This file is generated by running "yarn install" inside your project. 2 | # Manual changes might be lost - proceed with caution! 3 | 4 | __metadata: 5 | version: 8 6 | cacheKey: 10c0 7 | 8 | "@ampproject/remapping@npm:^2.2.0": 9 | version: 2.3.0 10 | resolution: "@ampproject/remapping@npm:2.3.0" 11 | dependencies: 12 | "@jridgewell/gen-mapping": "npm:^0.3.5" 13 | "@jridgewell/trace-mapping": "npm:^0.3.24" 14 | checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed 15 | languageName: node 16 | linkType: hard 17 | 18 | "@babel/code-frame@npm:^7.25.7": 19 | version: 7.25.7 20 | resolution: "@babel/code-frame@npm:7.25.7" 21 | dependencies: 22 | "@babel/highlight": "npm:^7.25.7" 23 | picocolors: "npm:^1.0.0" 24 | checksum: 10c0/14825c298bdec914caf3d24d1383b6d4cd6b030714686004992f4fc251831ecf432236652896f99d5d341f17170ae9a07b58d8d7b15aa0df8cfa1c5a7d5474bc 25 | languageName: node 26 | linkType: hard 27 | 28 | "@babel/compat-data@npm:^7.25.7": 29 | version: 7.25.8 30 | resolution: "@babel/compat-data@npm:7.25.8" 31 | checksum: 10c0/8b81c17580e5fb4cbb6a3c52079f8c283fc59c0c6bd2fe14cfcf9c44b32d2eaab71b02c5633e2c679f5896f73f8ac4036ba2e67a4c806e8f428e4b11f526d7f4 32 | languageName: node 33 | linkType: hard 34 | 35 | "@babel/core@npm:^7.25.2": 36 | version: 7.25.8 37 | resolution: "@babel/core@npm:7.25.8" 38 | dependencies: 39 | "@ampproject/remapping": "npm:^2.2.0" 40 | "@babel/code-frame": "npm:^7.25.7" 41 | "@babel/generator": "npm:^7.25.7" 42 | "@babel/helper-compilation-targets": "npm:^7.25.7" 43 | "@babel/helper-module-transforms": "npm:^7.25.7" 44 | "@babel/helpers": "npm:^7.25.7" 45 | "@babel/parser": "npm:^7.25.8" 46 | "@babel/template": "npm:^7.25.7" 47 | "@babel/traverse": "npm:^7.25.7" 48 | "@babel/types": "npm:^7.25.8" 49 | convert-source-map: "npm:^2.0.0" 50 | debug: "npm:^4.1.0" 51 | gensync: "npm:^1.0.0-beta.2" 52 | json5: "npm:^2.2.3" 53 | semver: "npm:^6.3.1" 54 | checksum: 10c0/8411ea506e6f7c8a39ab5c1524b00589fa3b087edb47389708f7fe07170929192171734666e3ea10b95a951643a531a6d09eedfe071572c9ea28516646265086 55 | languageName: node 56 | linkType: hard 57 | 58 | "@babel/generator@npm:^7.25.7": 59 | version: 7.25.7 60 | resolution: "@babel/generator@npm:7.25.7" 61 | dependencies: 62 | "@babel/types": "npm:^7.25.7" 63 | "@jridgewell/gen-mapping": "npm:^0.3.5" 64 | "@jridgewell/trace-mapping": "npm:^0.3.25" 65 | jsesc: "npm:^3.0.2" 66 | checksum: 10c0/c03a26c79864d60d04ce36b649c3fa0d6fd7b2bf6a22e22854a0457aa09206508392dd73ee40e7bc8d50b3602f9ff068afa47770cda091d332e7db1ca382ee96 67 | languageName: node 68 | linkType: hard 69 | 70 | "@babel/helper-compilation-targets@npm:^7.25.7": 71 | version: 7.25.7 72 | resolution: "@babel/helper-compilation-targets@npm:7.25.7" 73 | dependencies: 74 | "@babel/compat-data": "npm:^7.25.7" 75 | "@babel/helper-validator-option": "npm:^7.25.7" 76 | browserslist: "npm:^4.24.0" 77 | lru-cache: "npm:^5.1.1" 78 | semver: "npm:^6.3.1" 79 | checksum: 10c0/705be7e5274a3fdade68e3e2cf42e2b600316ab52794e13b91299a16f16c926f15886b6e9d6df20eb943ccc1cdba5a363d4766f8d01e47b8e6f4e01175f5e66c 80 | languageName: node 81 | linkType: hard 82 | 83 | "@babel/helper-module-imports@npm:^7.25.7": 84 | version: 7.25.7 85 | resolution: "@babel/helper-module-imports@npm:7.25.7" 86 | dependencies: 87 | "@babel/traverse": "npm:^7.25.7" 88 | "@babel/types": "npm:^7.25.7" 89 | checksum: 10c0/0fd0c3673835e5bf75558e184bcadc47c1f6dd2fe2016d53ebe1e5a6ae931a44e093015c2f9a6651c1a89f25c76d9246710c2b0b460b95ee069c464f2837fa2c 90 | languageName: node 91 | linkType: hard 92 | 93 | "@babel/helper-module-transforms@npm:^7.25.7": 94 | version: 7.25.7 95 | resolution: "@babel/helper-module-transforms@npm:7.25.7" 96 | dependencies: 97 | "@babel/helper-module-imports": "npm:^7.25.7" 98 | "@babel/helper-simple-access": "npm:^7.25.7" 99 | "@babel/helper-validator-identifier": "npm:^7.25.7" 100 | "@babel/traverse": "npm:^7.25.7" 101 | peerDependencies: 102 | "@babel/core": ^7.0.0 103 | checksum: 10c0/f37fa7d1d4df21690535b278468cbd5faf0133a3080f282000cfa4f3ffc9462a1458f866b04b6a2f2d1eec4691236cba9a867da61270dab3ab19846e62f05090 104 | languageName: node 105 | linkType: hard 106 | 107 | "@babel/helper-plugin-utils@npm:^7.25.7": 108 | version: 7.25.7 109 | resolution: "@babel/helper-plugin-utils@npm:7.25.7" 110 | checksum: 10c0/241f8cf3c5b7700e91cab7cfe5b432a3c710ae3cd5bb96dc554da536a6d25f5b9f000cc0c0917501ceb4f76ba92599ee3beb25e10adaf96be59f8df89a842faf 111 | languageName: node 112 | linkType: hard 113 | 114 | "@babel/helper-simple-access@npm:^7.25.7": 115 | version: 7.25.7 116 | resolution: "@babel/helper-simple-access@npm:7.25.7" 117 | dependencies: 118 | "@babel/traverse": "npm:^7.25.7" 119 | "@babel/types": "npm:^7.25.7" 120 | checksum: 10c0/eed1b499bfb4f613c18debd61517e3de77b6da2727ca025aa05ac81599e0269f1dddb5237db04e8bb598115d015874752e0a7f11ff38672d74a4976097417059 121 | languageName: node 122 | linkType: hard 123 | 124 | "@babel/helper-string-parser@npm:^7.25.7": 125 | version: 7.25.7 126 | resolution: "@babel/helper-string-parser@npm:7.25.7" 127 | checksum: 10c0/73ef2ceb81f8294678a0afe8ab0103729c0370cac2e830e0d5128b03be5f6a2635838af31d391d763e3c5a4460ed96f42fd7c9b552130670d525be665913bc4c 128 | languageName: node 129 | linkType: hard 130 | 131 | "@babel/helper-validator-identifier@npm:^7.25.7": 132 | version: 7.25.7 133 | resolution: "@babel/helper-validator-identifier@npm:7.25.7" 134 | checksum: 10c0/07438e5bf01ab2882a15027fdf39ac3b0ba1b251774a5130917907014684e2f70fef8fd620137ca062c4c4eedc388508d2ea7a3a7d9936a32785f4fe116c68c0 135 | languageName: node 136 | linkType: hard 137 | 138 | "@babel/helper-validator-option@npm:^7.25.7": 139 | version: 7.25.7 140 | resolution: "@babel/helper-validator-option@npm:7.25.7" 141 | checksum: 10c0/12ed418c8e3ed9ed44c8c80d823f4e42d399b5eb2e423adccb975e31a31a008cd3b5d8eab688b31f740caff4a1bb28fe06ea2fa7d635aee34cc0ad6995d50f0a 142 | languageName: node 143 | linkType: hard 144 | 145 | "@babel/helpers@npm:^7.25.7": 146 | version: 7.25.7 147 | resolution: "@babel/helpers@npm:7.25.7" 148 | dependencies: 149 | "@babel/template": "npm:^7.25.7" 150 | "@babel/types": "npm:^7.25.7" 151 | checksum: 10c0/3b3ae9e373bd785414195ef8f59976a69d5a6ebe0ef2165fdcc5165e5c3ee09e0fcee94bb457df2ddb8c0532e4146d0a9b7a96b3497399a4bff4ffe196b30228 152 | languageName: node 153 | linkType: hard 154 | 155 | "@babel/highlight@npm:^7.25.7": 156 | version: 7.25.7 157 | resolution: "@babel/highlight@npm:7.25.7" 158 | dependencies: 159 | "@babel/helper-validator-identifier": "npm:^7.25.7" 160 | chalk: "npm:^2.4.2" 161 | js-tokens: "npm:^4.0.0" 162 | picocolors: "npm:^1.0.0" 163 | checksum: 10c0/1f5894fdb0a0af6101fb2822369b2eeeae32cbeae2ef73ff73fc6a0a4a20471565cd9cfa589f54ed69df66adeca7c57266031ca9134b7bd244d023a488d419aa 164 | languageName: node 165 | linkType: hard 166 | 167 | "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.7, @babel/parser@npm:^7.25.8": 168 | version: 7.25.8 169 | resolution: "@babel/parser@npm:7.25.8" 170 | dependencies: 171 | "@babel/types": "npm:^7.25.8" 172 | bin: 173 | parser: ./bin/babel-parser.js 174 | checksum: 10c0/a1a13845b7e8dda4c970791814a4bbf60004969882f18f470e260ad822d2e1f8941948f851e9335895563610f240fa6c98481ce8019865e469502bbf21daafa4 175 | languageName: node 176 | linkType: hard 177 | 178 | "@babel/plugin-transform-react-jsx-self@npm:^7.24.7": 179 | version: 7.25.7 180 | resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.7" 181 | dependencies: 182 | "@babel/helper-plugin-utils": "npm:^7.25.7" 183 | peerDependencies: 184 | "@babel/core": ^7.0.0-0 185 | checksum: 10c0/51ab0302f808186b671722db40ef25d6f691f969aeaa8f7ef8565c5ca227c8b4dbd1002997478414d3f6984b1fd80a01303e98853fd8bd9606c35bcd72c94065 186 | languageName: node 187 | linkType: hard 188 | 189 | "@babel/plugin-transform-react-jsx-source@npm:^7.24.7": 190 | version: 7.25.7 191 | resolution: "@babel/plugin-transform-react-jsx-source@npm:7.25.7" 192 | dependencies: 193 | "@babel/helper-plugin-utils": "npm:^7.25.7" 194 | peerDependencies: 195 | "@babel/core": ^7.0.0-0 196 | checksum: 10c0/c014de49a466c18ab77bea409542f40409a6a561afc8879ecbeca6a4618161b5aa71ab0825b733c5c87bebe09a19455a79bc1bed86488a84ef712e42e1ed2875 197 | languageName: node 198 | linkType: hard 199 | 200 | "@babel/template@npm:^7.25.7": 201 | version: 7.25.7 202 | resolution: "@babel/template@npm:7.25.7" 203 | dependencies: 204 | "@babel/code-frame": "npm:^7.25.7" 205 | "@babel/parser": "npm:^7.25.7" 206 | "@babel/types": "npm:^7.25.7" 207 | checksum: 10c0/8ae9e36e4330ee83d4832531d1d9bec7dc2ef6a2a8afa1ef1229506fd60667abcb17f306d1c3d7e582251270597022990c845d5d69e7add70a5aea66720decb9 208 | languageName: node 209 | linkType: hard 210 | 211 | "@babel/traverse@npm:^7.25.7": 212 | version: 7.25.7 213 | resolution: "@babel/traverse@npm:7.25.7" 214 | dependencies: 215 | "@babel/code-frame": "npm:^7.25.7" 216 | "@babel/generator": "npm:^7.25.7" 217 | "@babel/parser": "npm:^7.25.7" 218 | "@babel/template": "npm:^7.25.7" 219 | "@babel/types": "npm:^7.25.7" 220 | debug: "npm:^4.3.1" 221 | globals: "npm:^11.1.0" 222 | checksum: 10c0/75d73e52c507a7a7a4c7971d6bf4f8f26fdd094e0d3a0193d77edf6a5efa36fc3db91ec5cc48e8b94e6eb5d5ad21af0a1040e71309172851209415fd105efb1a 223 | languageName: node 224 | linkType: hard 225 | 226 | "@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.7, @babel/types@npm:^7.25.8": 227 | version: 7.25.8 228 | resolution: "@babel/types@npm:7.25.8" 229 | dependencies: 230 | "@babel/helper-string-parser": "npm:^7.25.7" 231 | "@babel/helper-validator-identifier": "npm:^7.25.7" 232 | to-fast-properties: "npm:^2.0.0" 233 | checksum: 10c0/55ca2d6df6426c98db2769ce884ce5e9de83a512ea2dd7bcf56c811984dc14351cacf42932a723630c5afcff2455809323decd645820762182f10b7b5252b59f 234 | languageName: node 235 | linkType: hard 236 | 237 | "@createjs/core@npm:^2.0.0-beta.4": 238 | version: 2.0.0-beta.4 239 | resolution: "@createjs/core@npm:2.0.0-beta.4" 240 | checksum: 10c0/275d76e816ebf76fcefce87443530465dd9c5e3481824977051bd78f8e65b6a194af0ab18800cf5cb1484da8c6b53f9fd22bee03f48743807caa4ae2a4fcd28c 241 | languageName: node 242 | linkType: hard 243 | 244 | "@createjs/easeljs@npm:^2.0.0-beta.4": 245 | version: 2.0.0-beta.4 246 | resolution: "@createjs/easeljs@npm:2.0.0-beta.4" 247 | dependencies: 248 | "@createjs/core": "npm:^2.0.0-beta.4" 249 | "@createjs/tweenjs": "npm:^2.0.0-beta.4" 250 | checksum: 10c0/d0a904b7267a9a781c9d24751707846d7b8be09069e5d46bca629f94a8a54d982473166bf7e43c5973f6e0ce26a45a5c2c8604110ce9ce898b57294fd6a6d408 251 | languageName: node 252 | linkType: hard 253 | 254 | "@createjs/tweenjs@npm:^2.0.0-beta.4": 255 | version: 2.0.0-beta.4 256 | resolution: "@createjs/tweenjs@npm:2.0.0-beta.4" 257 | dependencies: 258 | "@createjs/core": "npm:^2.0.0-beta.4" 259 | checksum: 10c0/6ce5b1364b94ec278479a286988dcfe4dd1ad225ec2f69ef3dc7fed86b2d9d6adf0e2163bdc9972659838a914d7c35f778745193f4fa2f31cefe97dec26ff354 260 | languageName: node 261 | linkType: hard 262 | 263 | "@esbuild/aix-ppc64@npm:0.21.5": 264 | version: 0.21.5 265 | resolution: "@esbuild/aix-ppc64@npm:0.21.5" 266 | conditions: os=aix & cpu=ppc64 267 | languageName: node 268 | linkType: hard 269 | 270 | "@esbuild/android-arm64@npm:0.21.5": 271 | version: 0.21.5 272 | resolution: "@esbuild/android-arm64@npm:0.21.5" 273 | conditions: os=android & cpu=arm64 274 | languageName: node 275 | linkType: hard 276 | 277 | "@esbuild/android-arm@npm:0.21.5": 278 | version: 0.21.5 279 | resolution: "@esbuild/android-arm@npm:0.21.5" 280 | conditions: os=android & cpu=arm 281 | languageName: node 282 | linkType: hard 283 | 284 | "@esbuild/android-x64@npm:0.21.5": 285 | version: 0.21.5 286 | resolution: "@esbuild/android-x64@npm:0.21.5" 287 | conditions: os=android & cpu=x64 288 | languageName: node 289 | linkType: hard 290 | 291 | "@esbuild/darwin-arm64@npm:0.21.5": 292 | version: 0.21.5 293 | resolution: "@esbuild/darwin-arm64@npm:0.21.5" 294 | conditions: os=darwin & cpu=arm64 295 | languageName: node 296 | linkType: hard 297 | 298 | "@esbuild/darwin-x64@npm:0.21.5": 299 | version: 0.21.5 300 | resolution: "@esbuild/darwin-x64@npm:0.21.5" 301 | conditions: os=darwin & cpu=x64 302 | languageName: node 303 | linkType: hard 304 | 305 | "@esbuild/freebsd-arm64@npm:0.21.5": 306 | version: 0.21.5 307 | resolution: "@esbuild/freebsd-arm64@npm:0.21.5" 308 | conditions: os=freebsd & cpu=arm64 309 | languageName: node 310 | linkType: hard 311 | 312 | "@esbuild/freebsd-x64@npm:0.21.5": 313 | version: 0.21.5 314 | resolution: "@esbuild/freebsd-x64@npm:0.21.5" 315 | conditions: os=freebsd & cpu=x64 316 | languageName: node 317 | linkType: hard 318 | 319 | "@esbuild/linux-arm64@npm:0.21.5": 320 | version: 0.21.5 321 | resolution: "@esbuild/linux-arm64@npm:0.21.5" 322 | conditions: os=linux & cpu=arm64 323 | languageName: node 324 | linkType: hard 325 | 326 | "@esbuild/linux-arm@npm:0.21.5": 327 | version: 0.21.5 328 | resolution: "@esbuild/linux-arm@npm:0.21.5" 329 | conditions: os=linux & cpu=arm 330 | languageName: node 331 | linkType: hard 332 | 333 | "@esbuild/linux-ia32@npm:0.21.5": 334 | version: 0.21.5 335 | resolution: "@esbuild/linux-ia32@npm:0.21.5" 336 | conditions: os=linux & cpu=ia32 337 | languageName: node 338 | linkType: hard 339 | 340 | "@esbuild/linux-loong64@npm:0.21.5": 341 | version: 0.21.5 342 | resolution: "@esbuild/linux-loong64@npm:0.21.5" 343 | conditions: os=linux & cpu=loong64 344 | languageName: node 345 | linkType: hard 346 | 347 | "@esbuild/linux-mips64el@npm:0.21.5": 348 | version: 0.21.5 349 | resolution: "@esbuild/linux-mips64el@npm:0.21.5" 350 | conditions: os=linux & cpu=mips64el 351 | languageName: node 352 | linkType: hard 353 | 354 | "@esbuild/linux-ppc64@npm:0.21.5": 355 | version: 0.21.5 356 | resolution: "@esbuild/linux-ppc64@npm:0.21.5" 357 | conditions: os=linux & cpu=ppc64 358 | languageName: node 359 | linkType: hard 360 | 361 | "@esbuild/linux-riscv64@npm:0.21.5": 362 | version: 0.21.5 363 | resolution: "@esbuild/linux-riscv64@npm:0.21.5" 364 | conditions: os=linux & cpu=riscv64 365 | languageName: node 366 | linkType: hard 367 | 368 | "@esbuild/linux-s390x@npm:0.21.5": 369 | version: 0.21.5 370 | resolution: "@esbuild/linux-s390x@npm:0.21.5" 371 | conditions: os=linux & cpu=s390x 372 | languageName: node 373 | linkType: hard 374 | 375 | "@esbuild/linux-x64@npm:0.21.5": 376 | version: 0.21.5 377 | resolution: "@esbuild/linux-x64@npm:0.21.5" 378 | conditions: os=linux & cpu=x64 379 | languageName: node 380 | linkType: hard 381 | 382 | "@esbuild/netbsd-x64@npm:0.21.5": 383 | version: 0.21.5 384 | resolution: "@esbuild/netbsd-x64@npm:0.21.5" 385 | conditions: os=netbsd & cpu=x64 386 | languageName: node 387 | linkType: hard 388 | 389 | "@esbuild/openbsd-x64@npm:0.21.5": 390 | version: 0.21.5 391 | resolution: "@esbuild/openbsd-x64@npm:0.21.5" 392 | conditions: os=openbsd & cpu=x64 393 | languageName: node 394 | linkType: hard 395 | 396 | "@esbuild/sunos-x64@npm:0.21.5": 397 | version: 0.21.5 398 | resolution: "@esbuild/sunos-x64@npm:0.21.5" 399 | conditions: os=sunos & cpu=x64 400 | languageName: node 401 | linkType: hard 402 | 403 | "@esbuild/win32-arm64@npm:0.21.5": 404 | version: 0.21.5 405 | resolution: "@esbuild/win32-arm64@npm:0.21.5" 406 | conditions: os=win32 & cpu=arm64 407 | languageName: node 408 | linkType: hard 409 | 410 | "@esbuild/win32-ia32@npm:0.21.5": 411 | version: 0.21.5 412 | resolution: "@esbuild/win32-ia32@npm:0.21.5" 413 | conditions: os=win32 & cpu=ia32 414 | languageName: node 415 | linkType: hard 416 | 417 | "@esbuild/win32-x64@npm:0.21.5": 418 | version: 0.21.5 419 | resolution: "@esbuild/win32-x64@npm:0.21.5" 420 | conditions: os=win32 & cpu=x64 421 | languageName: node 422 | linkType: hard 423 | 424 | "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": 425 | version: 4.4.0 426 | resolution: "@eslint-community/eslint-utils@npm:4.4.0" 427 | dependencies: 428 | eslint-visitor-keys: "npm:^3.3.0" 429 | peerDependencies: 430 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 431 | checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e 432 | languageName: node 433 | linkType: hard 434 | 435 | "@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.11.0": 436 | version: 4.11.1 437 | resolution: "@eslint-community/regexpp@npm:4.11.1" 438 | checksum: 10c0/fbcc1cb65ef5ed5b92faa8dc542e035269065e7ebcc0b39c81a4fe98ad35cfff20b3c8df048641de15a7757e07d69f85e2579c1a5055f993413ba18c055654f8 439 | languageName: node 440 | linkType: hard 441 | 442 | "@eslint/config-array@npm:^0.18.0": 443 | version: 0.18.0 444 | resolution: "@eslint/config-array@npm:0.18.0" 445 | dependencies: 446 | "@eslint/object-schema": "npm:^2.1.4" 447 | debug: "npm:^4.3.1" 448 | minimatch: "npm:^3.1.2" 449 | checksum: 10c0/0234aeb3e6b052ad2402a647d0b4f8a6aa71524bafe1adad0b8db1dfe94d7f5f26d67c80f79bb37ac61361a1d4b14bb8fb475efe501de37263cf55eabb79868f 450 | languageName: node 451 | linkType: hard 452 | 453 | "@eslint/core@npm:^0.6.0": 454 | version: 0.6.0 455 | resolution: "@eslint/core@npm:0.6.0" 456 | checksum: 10c0/fffdb3046ad6420f8cb9204b6466fdd8632a9baeebdaf2a97d458a4eac0e16653ba50d82d61835d7d771f6ced0ec942ec482b2fbccc300e45f2cbf784537f240 457 | languageName: node 458 | linkType: hard 459 | 460 | "@eslint/eslintrc@npm:^3.1.0": 461 | version: 3.1.0 462 | resolution: "@eslint/eslintrc@npm:3.1.0" 463 | dependencies: 464 | ajv: "npm:^6.12.4" 465 | debug: "npm:^4.3.2" 466 | espree: "npm:^10.0.1" 467 | globals: "npm:^14.0.0" 468 | ignore: "npm:^5.2.0" 469 | import-fresh: "npm:^3.2.1" 470 | js-yaml: "npm:^4.1.0" 471 | minimatch: "npm:^3.1.2" 472 | strip-json-comments: "npm:^3.1.1" 473 | checksum: 10c0/5b7332ed781edcfc98caa8dedbbb843abfb9bda2e86538529c843473f580e40c69eb894410eddc6702f487e9ee8f8cfa8df83213d43a8fdb549f23ce06699167 474 | languageName: node 475 | linkType: hard 476 | 477 | "@eslint/js@npm:9.12.0, @eslint/js@npm:^9.11.1": 478 | version: 9.12.0 479 | resolution: "@eslint/js@npm:9.12.0" 480 | checksum: 10c0/325650a59a1ce3d97c69441501ebaf415607248bacbe8c8ca35adc7cb73b524f592f266a75772f496b06f3239e3ee1996722a242148085f0ee5fb3dd7065897c 481 | languageName: node 482 | linkType: hard 483 | 484 | "@eslint/object-schema@npm:^2.1.4": 485 | version: 2.1.4 486 | resolution: "@eslint/object-schema@npm:2.1.4" 487 | checksum: 10c0/e9885532ea70e483fb007bf1275968b05bb15ebaa506d98560c41a41220d33d342e19023d5f2939fed6eb59676c1bda5c847c284b4b55fce521d282004da4dda 488 | languageName: node 489 | linkType: hard 490 | 491 | "@eslint/plugin-kit@npm:^0.2.0": 492 | version: 0.2.0 493 | resolution: "@eslint/plugin-kit@npm:0.2.0" 494 | dependencies: 495 | levn: "npm:^0.4.1" 496 | checksum: 10c0/00b92bc52ad09b0e2bbbb30591c02a895f0bec3376759562590e8a57a13d096b22f8c8773b6bf791a7cf2ea614123b3d592fd006c51ac5fd0edbb90ea6d8760c 497 | languageName: node 498 | linkType: hard 499 | 500 | "@humanfs/core@npm:^0.19.0": 501 | version: 0.19.0 502 | resolution: "@humanfs/core@npm:0.19.0" 503 | checksum: 10c0/f87952d5caba6ae427a620eff783c5d0b6cef0cfc256dec359cdaa636c5f161edb8d8dad576742b3de7f0b2f222b34aad6870248e4b7d2177f013426cbcda232 504 | languageName: node 505 | linkType: hard 506 | 507 | "@humanfs/node@npm:^0.16.5": 508 | version: 0.16.5 509 | resolution: "@humanfs/node@npm:0.16.5" 510 | dependencies: 511 | "@humanfs/core": "npm:^0.19.0" 512 | "@humanwhocodes/retry": "npm:^0.3.0" 513 | checksum: 10c0/41c365ab09e7c9eaeed373d09243195aef616d6745608a36fc3e44506148c28843872f85e69e2bf5f1e992e194286155a1c1cecfcece6a2f43875e37cd243935 514 | languageName: node 515 | linkType: hard 516 | 517 | "@humanwhocodes/module-importer@npm:^1.0.1": 518 | version: 1.0.1 519 | resolution: "@humanwhocodes/module-importer@npm:1.0.1" 520 | checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 521 | languageName: node 522 | linkType: hard 523 | 524 | "@humanwhocodes/retry@npm:^0.3.0, @humanwhocodes/retry@npm:^0.3.1": 525 | version: 0.3.1 526 | resolution: "@humanwhocodes/retry@npm:0.3.1" 527 | checksum: 10c0/f0da1282dfb45e8120480b9e2e275e2ac9bbe1cf016d046fdad8e27cc1285c45bb9e711681237944445157b430093412b4446c1ab3fc4bb037861b5904101d3b 528 | languageName: node 529 | linkType: hard 530 | 531 | "@isaacs/cliui@npm:^8.0.2": 532 | version: 8.0.2 533 | resolution: "@isaacs/cliui@npm:8.0.2" 534 | dependencies: 535 | string-width: "npm:^5.1.2" 536 | string-width-cjs: "npm:string-width@^4.2.0" 537 | strip-ansi: "npm:^7.0.1" 538 | strip-ansi-cjs: "npm:strip-ansi@^6.0.1" 539 | wrap-ansi: "npm:^8.1.0" 540 | wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" 541 | checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e 542 | languageName: node 543 | linkType: hard 544 | 545 | "@jridgewell/gen-mapping@npm:^0.3.5": 546 | version: 0.3.5 547 | resolution: "@jridgewell/gen-mapping@npm:0.3.5" 548 | dependencies: 549 | "@jridgewell/set-array": "npm:^1.2.1" 550 | "@jridgewell/sourcemap-codec": "npm:^1.4.10" 551 | "@jridgewell/trace-mapping": "npm:^0.3.24" 552 | checksum: 10c0/1be4fd4a6b0f41337c4f5fdf4afc3bd19e39c3691924817108b82ffcb9c9e609c273f936932b9fba4b3a298ce2eb06d9bff4eb1cc3bd81c4f4ee1b4917e25feb 553 | languageName: node 554 | linkType: hard 555 | 556 | "@jridgewell/resolve-uri@npm:^3.1.0": 557 | version: 3.1.2 558 | resolution: "@jridgewell/resolve-uri@npm:3.1.2" 559 | checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e 560 | languageName: node 561 | linkType: hard 562 | 563 | "@jridgewell/set-array@npm:^1.2.1": 564 | version: 1.2.1 565 | resolution: "@jridgewell/set-array@npm:1.2.1" 566 | checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 567 | languageName: node 568 | linkType: hard 569 | 570 | "@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": 571 | version: 1.5.0 572 | resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" 573 | checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 574 | languageName: node 575 | linkType: hard 576 | 577 | "@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": 578 | version: 0.3.25 579 | resolution: "@jridgewell/trace-mapping@npm:0.3.25" 580 | dependencies: 581 | "@jridgewell/resolve-uri": "npm:^3.1.0" 582 | "@jridgewell/sourcemap-codec": "npm:^1.4.14" 583 | checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 584 | languageName: node 585 | linkType: hard 586 | 587 | "@nodelib/fs.scandir@npm:2.1.5": 588 | version: 2.1.5 589 | resolution: "@nodelib/fs.scandir@npm:2.1.5" 590 | dependencies: 591 | "@nodelib/fs.stat": "npm:2.0.5" 592 | run-parallel: "npm:^1.1.9" 593 | checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb 594 | languageName: node 595 | linkType: hard 596 | 597 | "@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": 598 | version: 2.0.5 599 | resolution: "@nodelib/fs.stat@npm:2.0.5" 600 | checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d 601 | languageName: node 602 | linkType: hard 603 | 604 | "@nodelib/fs.walk@npm:^1.2.3": 605 | version: 1.2.8 606 | resolution: "@nodelib/fs.walk@npm:1.2.8" 607 | dependencies: 608 | "@nodelib/fs.scandir": "npm:2.1.5" 609 | fastq: "npm:^1.6.0" 610 | checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 611 | languageName: node 612 | linkType: hard 613 | 614 | "@npmcli/agent@npm:^2.0.0": 615 | version: 2.2.2 616 | resolution: "@npmcli/agent@npm:2.2.2" 617 | dependencies: 618 | agent-base: "npm:^7.1.0" 619 | http-proxy-agent: "npm:^7.0.0" 620 | https-proxy-agent: "npm:^7.0.1" 621 | lru-cache: "npm:^10.0.1" 622 | socks-proxy-agent: "npm:^8.0.3" 623 | checksum: 10c0/325e0db7b287d4154ecd164c0815c08007abfb07653cc57bceded17bb7fd240998a3cbdbe87d700e30bef494885eccc725ab73b668020811d56623d145b524ae 624 | languageName: node 625 | linkType: hard 626 | 627 | "@npmcli/fs@npm:^3.1.0": 628 | version: 3.1.1 629 | resolution: "@npmcli/fs@npm:3.1.1" 630 | dependencies: 631 | semver: "npm:^7.3.5" 632 | checksum: 10c0/c37a5b4842bfdece3d14dfdb054f73fe15ed2d3da61b34ff76629fb5b1731647c49166fd2a8bf8b56fcfa51200382385ea8909a3cbecdad612310c114d3f6c99 633 | languageName: node 634 | linkType: hard 635 | 636 | "@pkgjs/parseargs@npm:^0.11.0": 637 | version: 0.11.0 638 | resolution: "@pkgjs/parseargs@npm:0.11.0" 639 | checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd 640 | languageName: node 641 | linkType: hard 642 | 643 | "@rollup/rollup-android-arm-eabi@npm:4.24.0": 644 | version: 4.24.0 645 | resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.0" 646 | conditions: os=android & cpu=arm 647 | languageName: node 648 | linkType: hard 649 | 650 | "@rollup/rollup-android-arm64@npm:4.24.0": 651 | version: 4.24.0 652 | resolution: "@rollup/rollup-android-arm64@npm:4.24.0" 653 | conditions: os=android & cpu=arm64 654 | languageName: node 655 | linkType: hard 656 | 657 | "@rollup/rollup-darwin-arm64@npm:4.24.0": 658 | version: 4.24.0 659 | resolution: "@rollup/rollup-darwin-arm64@npm:4.24.0" 660 | conditions: os=darwin & cpu=arm64 661 | languageName: node 662 | linkType: hard 663 | 664 | "@rollup/rollup-darwin-x64@npm:4.24.0": 665 | version: 4.24.0 666 | resolution: "@rollup/rollup-darwin-x64@npm:4.24.0" 667 | conditions: os=darwin & cpu=x64 668 | languageName: node 669 | linkType: hard 670 | 671 | "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0": 672 | version: 4.24.0 673 | resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0" 674 | conditions: os=linux & cpu=arm & libc=glibc 675 | languageName: node 676 | linkType: hard 677 | 678 | "@rollup/rollup-linux-arm-musleabihf@npm:4.24.0": 679 | version: 4.24.0 680 | resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.0" 681 | conditions: os=linux & cpu=arm & libc=musl 682 | languageName: node 683 | linkType: hard 684 | 685 | "@rollup/rollup-linux-arm64-gnu@npm:4.24.0": 686 | version: 4.24.0 687 | resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.0" 688 | conditions: os=linux & cpu=arm64 & libc=glibc 689 | languageName: node 690 | linkType: hard 691 | 692 | "@rollup/rollup-linux-arm64-musl@npm:4.24.0": 693 | version: 4.24.0 694 | resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.0" 695 | conditions: os=linux & cpu=arm64 & libc=musl 696 | languageName: node 697 | linkType: hard 698 | 699 | "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0": 700 | version: 4.24.0 701 | resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0" 702 | conditions: os=linux & cpu=ppc64 & libc=glibc 703 | languageName: node 704 | linkType: hard 705 | 706 | "@rollup/rollup-linux-riscv64-gnu@npm:4.24.0": 707 | version: 4.24.0 708 | resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.0" 709 | conditions: os=linux & cpu=riscv64 & libc=glibc 710 | languageName: node 711 | linkType: hard 712 | 713 | "@rollup/rollup-linux-s390x-gnu@npm:4.24.0": 714 | version: 4.24.0 715 | resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.0" 716 | conditions: os=linux & cpu=s390x & libc=glibc 717 | languageName: node 718 | linkType: hard 719 | 720 | "@rollup/rollup-linux-x64-gnu@npm:4.24.0": 721 | version: 4.24.0 722 | resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.0" 723 | conditions: os=linux & cpu=x64 & libc=glibc 724 | languageName: node 725 | linkType: hard 726 | 727 | "@rollup/rollup-linux-x64-musl@npm:4.24.0": 728 | version: 4.24.0 729 | resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.0" 730 | conditions: os=linux & cpu=x64 & libc=musl 731 | languageName: node 732 | linkType: hard 733 | 734 | "@rollup/rollup-win32-arm64-msvc@npm:4.24.0": 735 | version: 4.24.0 736 | resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.0" 737 | conditions: os=win32 & cpu=arm64 738 | languageName: node 739 | linkType: hard 740 | 741 | "@rollup/rollup-win32-ia32-msvc@npm:4.24.0": 742 | version: 4.24.0 743 | resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.0" 744 | conditions: os=win32 & cpu=ia32 745 | languageName: node 746 | linkType: hard 747 | 748 | "@rollup/rollup-win32-x64-msvc@npm:4.24.0": 749 | version: 4.24.0 750 | resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.0" 751 | conditions: os=win32 & cpu=x64 752 | languageName: node 753 | linkType: hard 754 | 755 | "@tweenjs/tween.js@npm:~23.1.3": 756 | version: 23.1.3 757 | resolution: "@tweenjs/tween.js@npm:23.1.3" 758 | checksum: 10c0/811b30f5f0e7409fb41833401c501c2d6f600eb5f43039dd9067a7f70aff6dad5f5ce1233848e13f0b33a269a160d9c133f344d986cbff4f1f6b72ddecd06c89 759 | languageName: node 760 | linkType: hard 761 | 762 | "@types/babel__core@npm:^7.20.5": 763 | version: 7.20.5 764 | resolution: "@types/babel__core@npm:7.20.5" 765 | dependencies: 766 | "@babel/parser": "npm:^7.20.7" 767 | "@babel/types": "npm:^7.20.7" 768 | "@types/babel__generator": "npm:*" 769 | "@types/babel__template": "npm:*" 770 | "@types/babel__traverse": "npm:*" 771 | checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff 772 | languageName: node 773 | linkType: hard 774 | 775 | "@types/babel__generator@npm:*": 776 | version: 7.6.8 777 | resolution: "@types/babel__generator@npm:7.6.8" 778 | dependencies: 779 | "@babel/types": "npm:^7.0.0" 780 | checksum: 10c0/f0ba105e7d2296bf367d6e055bb22996886c114261e2cb70bf9359556d0076c7a57239d019dee42bb063f565bade5ccb46009bce2044b2952d964bf9a454d6d2 781 | languageName: node 782 | linkType: hard 783 | 784 | "@types/babel__template@npm:*": 785 | version: 7.4.4 786 | resolution: "@types/babel__template@npm:7.4.4" 787 | dependencies: 788 | "@babel/parser": "npm:^7.1.0" 789 | "@babel/types": "npm:^7.0.0" 790 | checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b 791 | languageName: node 792 | linkType: hard 793 | 794 | "@types/babel__traverse@npm:*": 795 | version: 7.20.6 796 | resolution: "@types/babel__traverse@npm:7.20.6" 797 | dependencies: 798 | "@babel/types": "npm:^7.20.7" 799 | checksum: 10c0/7ba7db61a53e28cac955aa99af280d2600f15a8c056619c05b6fc911cbe02c61aa4f2823299221b23ce0cce00b294c0e5f618ec772aa3f247523c2e48cf7b888 800 | languageName: node 801 | linkType: hard 802 | 803 | "@types/createjs-lib@npm:*": 804 | version: 0.0.33 805 | resolution: "@types/createjs-lib@npm:0.0.33" 806 | checksum: 10c0/d76306a6df0d13dfc2a3079ba353d784107489dd7c6a1819c857b8a726a6ef5a31e75efd3646566c99bc155f3e0ef6d5b54c0f4f5e0740d4d0c0b2ed327967ea 807 | languageName: node 808 | linkType: hard 809 | 810 | "@types/easeljs@npm:^1": 811 | version: 1.0.5 812 | resolution: "@types/easeljs@npm:1.0.5" 813 | dependencies: 814 | "@types/createjs-lib": "npm:*" 815 | "@types/tweenjs": "npm:*" 816 | checksum: 10c0/0736b0d90c36cf4c8cdb58a5660454337efae0dab1bd40e43e8eb6f439b00b3bb475ccbcc9788a51fefd7da73ec1d23be26ad3cd4966d42f7121622385f4132b 817 | languageName: node 818 | linkType: hard 819 | 820 | "@types/estree@npm:1.0.6, @types/estree@npm:^1.0.6": 821 | version: 1.0.6 822 | resolution: "@types/estree@npm:1.0.6" 823 | checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a 824 | languageName: node 825 | linkType: hard 826 | 827 | "@types/json-schema@npm:^7.0.15": 828 | version: 7.0.15 829 | resolution: "@types/json-schema@npm:7.0.15" 830 | checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db 831 | languageName: node 832 | linkType: hard 833 | 834 | "@types/lodash@npm:^4.17.10": 835 | version: 4.17.10 836 | resolution: "@types/lodash@npm:4.17.10" 837 | checksum: 10c0/149b2b9fcc277204393423ed14df28894980c2322ec522fc23f2c6f7edef6ee8d876ee09ed4520f45d128adc0a7a6e618bb0017668349716cd99c6ef54a21621 838 | languageName: node 839 | linkType: hard 840 | 841 | "@types/prop-types@npm:*": 842 | version: 15.7.13 843 | resolution: "@types/prop-types@npm:15.7.13" 844 | checksum: 10c0/1b20fc67281902c6743379960247bc161f3f0406ffc0df8e7058745a85ea1538612109db0406290512947f9632fe9e10e7337bf0ce6338a91d6c948df16a7c61 845 | languageName: node 846 | linkType: hard 847 | 848 | "@types/react-dom@npm:^18.3.1": 849 | version: 18.3.1 850 | resolution: "@types/react-dom@npm:18.3.1" 851 | dependencies: 852 | "@types/react": "npm:*" 853 | checksum: 10c0/8b416551c60bb6bd8ec10e198c957910cfb271bc3922463040b0d57cf4739cdcd24b13224f8d68f10318926e1ec3cd69af0af79f0291b599a992f8c80d47f1eb 854 | languageName: node 855 | linkType: hard 856 | 857 | "@types/react@npm:*, @types/react@npm:^18.3.11": 858 | version: 18.3.11 859 | resolution: "@types/react@npm:18.3.11" 860 | dependencies: 861 | "@types/prop-types": "npm:*" 862 | csstype: "npm:^3.0.2" 863 | checksum: 10c0/ce80512246ca5bda69db85b9f4f1835189334acfb6b2c4f3eda8cabff1ff1a3ea9ce4f3b895bdbc18c94140aa45592331aa3fdeb557f525c1b048de7ce84fc0e 864 | languageName: node 865 | linkType: hard 866 | 867 | "@types/stats.js@npm:*": 868 | version: 0.17.3 869 | resolution: "@types/stats.js@npm:0.17.3" 870 | checksum: 10c0/ccccc992c6dfe08fb85049aa3ce44ca7e428db8da4a3edd20298f1c8b72768021fa8bacdfbe8e9735a7552ee5d57f667c6f557050ad2d9a87b699b3566a6177a 871 | languageName: node 872 | linkType: hard 873 | 874 | "@types/three@npm:^0.169.0": 875 | version: 0.169.0 876 | resolution: "@types/three@npm:0.169.0" 877 | dependencies: 878 | "@tweenjs/tween.js": "npm:~23.1.3" 879 | "@types/stats.js": "npm:*" 880 | "@types/webxr": "npm:*" 881 | "@webgpu/types": "npm:*" 882 | fflate: "npm:~0.8.2" 883 | meshoptimizer: "npm:~0.18.1" 884 | checksum: 10c0/d5f588dcc9df02875d46e5e6ea8ea6dc346cd1e4c0fbe7bcca4c8d9584f82ac39a951788a79fc2ffae3d5e232f99e66046adec8f93fdf51d30561a4a00c52b40 885 | languageName: node 886 | linkType: hard 887 | 888 | "@types/tweenjs@npm:*": 889 | version: 1.0.8 890 | resolution: "@types/tweenjs@npm:1.0.8" 891 | dependencies: 892 | "@types/createjs-lib": "npm:*" 893 | checksum: 10c0/6aa83fe937e8f435a9e9d594286231a83abe0dcfe32a5c47358ca3081123faa9bef75bf9f6d0a4e0194df8e7695d2a6ea6e6655ca8decdbba2e40bd1c5914a25 894 | languageName: node 895 | linkType: hard 896 | 897 | "@types/webxr@npm:*": 898 | version: 0.5.20 899 | resolution: "@types/webxr@npm:0.5.20" 900 | checksum: 10c0/f8bddda79a43bfc31ce92d9c4b6d324390c40382e4981262b6217199636b5b7cb77228dea35ce18a054a2d2e9c19d1c59e3f7b14f450527b72764db786c8c7b9 901 | languageName: node 902 | linkType: hard 903 | 904 | "@typescript-eslint/eslint-plugin@npm:8.9.0": 905 | version: 8.9.0 906 | resolution: "@typescript-eslint/eslint-plugin@npm:8.9.0" 907 | dependencies: 908 | "@eslint-community/regexpp": "npm:^4.10.0" 909 | "@typescript-eslint/scope-manager": "npm:8.9.0" 910 | "@typescript-eslint/type-utils": "npm:8.9.0" 911 | "@typescript-eslint/utils": "npm:8.9.0" 912 | "@typescript-eslint/visitor-keys": "npm:8.9.0" 913 | graphemer: "npm:^1.4.0" 914 | ignore: "npm:^5.3.1" 915 | natural-compare: "npm:^1.4.0" 916 | ts-api-utils: "npm:^1.3.0" 917 | peerDependencies: 918 | "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 919 | eslint: ^8.57.0 || ^9.0.0 920 | peerDependenciesMeta: 921 | typescript: 922 | optional: true 923 | checksum: 10c0/07f273dc270268980bbf65ea5e0c69d05377e42dbdb2dd3f4a1293a3536c049ddfb548eb9ec6e60394c2361c4a15b62b8246951f83e16a9d16799578a74dc691 924 | languageName: node 925 | linkType: hard 926 | 927 | "@typescript-eslint/parser@npm:8.9.0": 928 | version: 8.9.0 929 | resolution: "@typescript-eslint/parser@npm:8.9.0" 930 | dependencies: 931 | "@typescript-eslint/scope-manager": "npm:8.9.0" 932 | "@typescript-eslint/types": "npm:8.9.0" 933 | "@typescript-eslint/typescript-estree": "npm:8.9.0" 934 | "@typescript-eslint/visitor-keys": "npm:8.9.0" 935 | debug: "npm:^4.3.4" 936 | peerDependencies: 937 | eslint: ^8.57.0 || ^9.0.0 938 | peerDependenciesMeta: 939 | typescript: 940 | optional: true 941 | checksum: 10c0/aca7c838de85fb700ecf5682dc6f8f90a0fbfe09a3044a176c0dc3ffd9c5e7105beb0919a30824f46b02223a74119b4f5a9834a0663328987f066cb359b5dbed 942 | languageName: node 943 | linkType: hard 944 | 945 | "@typescript-eslint/scope-manager@npm:8.9.0": 946 | version: 8.9.0 947 | resolution: "@typescript-eslint/scope-manager@npm:8.9.0" 948 | dependencies: 949 | "@typescript-eslint/types": "npm:8.9.0" 950 | "@typescript-eslint/visitor-keys": "npm:8.9.0" 951 | checksum: 10c0/1fb77a982e3384d8cabd64678ea8f9de328708080ff9324bf24a44da4e8d7b7692ae4820efc3ef36027bf0fd6a061680d3c30ce63d661fb31e18970fca5e86c5 952 | languageName: node 953 | linkType: hard 954 | 955 | "@typescript-eslint/type-utils@npm:8.9.0": 956 | version: 8.9.0 957 | resolution: "@typescript-eslint/type-utils@npm:8.9.0" 958 | dependencies: 959 | "@typescript-eslint/typescript-estree": "npm:8.9.0" 960 | "@typescript-eslint/utils": "npm:8.9.0" 961 | debug: "npm:^4.3.4" 962 | ts-api-utils: "npm:^1.3.0" 963 | peerDependenciesMeta: 964 | typescript: 965 | optional: true 966 | checksum: 10c0/aff06afda9ac7d12f750e76c8f91ed8b56eefd3f3f4fbaa93a64411ec9e0bd2c2972f3407e439320d98062b16f508dce7604b8bb2b803fded9d3148e5ee721b1 967 | languageName: node 968 | linkType: hard 969 | 970 | "@typescript-eslint/types@npm:8.9.0": 971 | version: 8.9.0 972 | resolution: "@typescript-eslint/types@npm:8.9.0" 973 | checksum: 10c0/8d901b7ed2f943624c24f7fa67f7be9d49a92554d54c4f27397c05b329ceff59a9ea246810b53ff36fca08760c14305dd4ce78fbac7ca0474311b0575bf49010 974 | languageName: node 975 | linkType: hard 976 | 977 | "@typescript-eslint/typescript-estree@npm:8.9.0": 978 | version: 8.9.0 979 | resolution: "@typescript-eslint/typescript-estree@npm:8.9.0" 980 | dependencies: 981 | "@typescript-eslint/types": "npm:8.9.0" 982 | "@typescript-eslint/visitor-keys": "npm:8.9.0" 983 | debug: "npm:^4.3.4" 984 | fast-glob: "npm:^3.3.2" 985 | is-glob: "npm:^4.0.3" 986 | minimatch: "npm:^9.0.4" 987 | semver: "npm:^7.6.0" 988 | ts-api-utils: "npm:^1.3.0" 989 | peerDependenciesMeta: 990 | typescript: 991 | optional: true 992 | checksum: 10c0/bb5ec70727f07d1575e95f9d117762636209e1ab073a26c4e873e1e5b4617b000d300a23d294ad81693f7e99abe3e519725452c30b235a253edcd85b6ae052b0 993 | languageName: node 994 | linkType: hard 995 | 996 | "@typescript-eslint/utils@npm:8.9.0": 997 | version: 8.9.0 998 | resolution: "@typescript-eslint/utils@npm:8.9.0" 999 | dependencies: 1000 | "@eslint-community/eslint-utils": "npm:^4.4.0" 1001 | "@typescript-eslint/scope-manager": "npm:8.9.0" 1002 | "@typescript-eslint/types": "npm:8.9.0" 1003 | "@typescript-eslint/typescript-estree": "npm:8.9.0" 1004 | peerDependencies: 1005 | eslint: ^8.57.0 || ^9.0.0 1006 | checksum: 10c0/af13e3d501060bdc5fa04b131b3f9a90604e5c1d4845d1f8bd94b703a3c146a76debfc21fe65a7f3a0459ed6c57cf2aa3f0a052469bb23b6f35ff853fe9495b1 1007 | languageName: node 1008 | linkType: hard 1009 | 1010 | "@typescript-eslint/visitor-keys@npm:8.9.0": 1011 | version: 8.9.0 1012 | resolution: "@typescript-eslint/visitor-keys@npm:8.9.0" 1013 | dependencies: 1014 | "@typescript-eslint/types": "npm:8.9.0" 1015 | eslint-visitor-keys: "npm:^3.4.3" 1016 | checksum: 10c0/e33208b946841f1838d87d64f4ee230f798e68bdce8c181d3ac0abb567f758cb9c4bdccc919d493167869f413ca4c400e7db0f7dd7e8fc84ab6a8344076a7458 1017 | languageName: node 1018 | linkType: hard 1019 | 1020 | "@vitejs/plugin-react@npm:^4.3.2": 1021 | version: 4.3.2 1022 | resolution: "@vitejs/plugin-react@npm:4.3.2" 1023 | dependencies: 1024 | "@babel/core": "npm:^7.25.2" 1025 | "@babel/plugin-transform-react-jsx-self": "npm:^7.24.7" 1026 | "@babel/plugin-transform-react-jsx-source": "npm:^7.24.7" 1027 | "@types/babel__core": "npm:^7.20.5" 1028 | react-refresh: "npm:^0.14.2" 1029 | peerDependencies: 1030 | vite: ^4.2.0 || ^5.0.0 1031 | checksum: 10c0/945f357175bea45031dc98d379e63cd34cd60a51b3dd394b66138696625ac8b55bc913a23481f78bbe15ca558c21ea4699b936abbd8242003d7c0ad51d298727 1032 | languageName: node 1033 | linkType: hard 1034 | 1035 | "@webgpu/types@npm:*": 1036 | version: 0.1.49 1037 | resolution: "@webgpu/types@npm:0.1.49" 1038 | checksum: 10c0/96437fd51e1d45e1d8f1b2d534bcf7bc5d40c05acc22205d3ce30ddc91bb5888b3f33c84459cad226dfe67495114902fb8243225c737c618c495a9a54fbfdcb6 1039 | languageName: node 1040 | linkType: hard 1041 | 1042 | "abbrev@npm:^2.0.0": 1043 | version: 2.0.0 1044 | resolution: "abbrev@npm:2.0.0" 1045 | checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 1046 | languageName: node 1047 | linkType: hard 1048 | 1049 | "acorn-jsx@npm:^5.3.2": 1050 | version: 5.3.2 1051 | resolution: "acorn-jsx@npm:5.3.2" 1052 | peerDependencies: 1053 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 1054 | checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 1055 | languageName: node 1056 | linkType: hard 1057 | 1058 | "acorn@npm:^8.12.0": 1059 | version: 8.12.1 1060 | resolution: "acorn@npm:8.12.1" 1061 | bin: 1062 | acorn: bin/acorn 1063 | checksum: 10c0/51fb26cd678f914e13287e886da2d7021f8c2bc0ccc95e03d3e0447ee278dd3b40b9c57dc222acd5881adcf26f3edc40901a4953403232129e3876793cd17386 1064 | languageName: node 1065 | linkType: hard 1066 | 1067 | "agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": 1068 | version: 7.1.1 1069 | resolution: "agent-base@npm:7.1.1" 1070 | dependencies: 1071 | debug: "npm:^4.3.4" 1072 | checksum: 10c0/e59ce7bed9c63bf071a30cc471f2933862044c97fd9958967bfe22521d7a0f601ce4ed5a8c011799d0c726ca70312142ae193bbebb60f576b52be19d4a363b50 1073 | languageName: node 1074 | linkType: hard 1075 | 1076 | "aggregate-error@npm:^3.0.0": 1077 | version: 3.1.0 1078 | resolution: "aggregate-error@npm:3.1.0" 1079 | dependencies: 1080 | clean-stack: "npm:^2.0.0" 1081 | indent-string: "npm:^4.0.0" 1082 | checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 1083 | languageName: node 1084 | linkType: hard 1085 | 1086 | "ajv@npm:^6.12.4": 1087 | version: 6.12.6 1088 | resolution: "ajv@npm:6.12.6" 1089 | dependencies: 1090 | fast-deep-equal: "npm:^3.1.1" 1091 | fast-json-stable-stringify: "npm:^2.0.0" 1092 | json-schema-traverse: "npm:^0.4.1" 1093 | uri-js: "npm:^4.2.2" 1094 | checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 1095 | languageName: node 1096 | linkType: hard 1097 | 1098 | "ansi-regex@npm:^5.0.1": 1099 | version: 5.0.1 1100 | resolution: "ansi-regex@npm:5.0.1" 1101 | checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 1102 | languageName: node 1103 | linkType: hard 1104 | 1105 | "ansi-regex@npm:^6.0.1": 1106 | version: 6.1.0 1107 | resolution: "ansi-regex@npm:6.1.0" 1108 | checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc 1109 | languageName: node 1110 | linkType: hard 1111 | 1112 | "ansi-styles@npm:^3.2.1": 1113 | version: 3.2.1 1114 | resolution: "ansi-styles@npm:3.2.1" 1115 | dependencies: 1116 | color-convert: "npm:^1.9.0" 1117 | checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b 1118 | languageName: node 1119 | linkType: hard 1120 | 1121 | "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": 1122 | version: 4.3.0 1123 | resolution: "ansi-styles@npm:4.3.0" 1124 | dependencies: 1125 | color-convert: "npm:^2.0.1" 1126 | checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 1127 | languageName: node 1128 | linkType: hard 1129 | 1130 | "ansi-styles@npm:^6.1.0": 1131 | version: 6.2.1 1132 | resolution: "ansi-styles@npm:6.2.1" 1133 | checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c 1134 | languageName: node 1135 | linkType: hard 1136 | 1137 | "argparse@npm:^2.0.1": 1138 | version: 2.0.1 1139 | resolution: "argparse@npm:2.0.1" 1140 | checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e 1141 | languageName: node 1142 | linkType: hard 1143 | 1144 | "balanced-match@npm:^1.0.0": 1145 | version: 1.0.2 1146 | resolution: "balanced-match@npm:1.0.2" 1147 | checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee 1148 | languageName: node 1149 | linkType: hard 1150 | 1151 | "brace-expansion@npm:^1.1.7": 1152 | version: 1.1.11 1153 | resolution: "brace-expansion@npm:1.1.11" 1154 | dependencies: 1155 | balanced-match: "npm:^1.0.0" 1156 | concat-map: "npm:0.0.1" 1157 | checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 1158 | languageName: node 1159 | linkType: hard 1160 | 1161 | "brace-expansion@npm:^2.0.1": 1162 | version: 2.0.1 1163 | resolution: "brace-expansion@npm:2.0.1" 1164 | dependencies: 1165 | balanced-match: "npm:^1.0.0" 1166 | checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f 1167 | languageName: node 1168 | linkType: hard 1169 | 1170 | "braces@npm:^3.0.3": 1171 | version: 3.0.3 1172 | resolution: "braces@npm:3.0.3" 1173 | dependencies: 1174 | fill-range: "npm:^7.1.1" 1175 | checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 1176 | languageName: node 1177 | linkType: hard 1178 | 1179 | "browserslist@npm:^4.24.0": 1180 | version: 4.24.0 1181 | resolution: "browserslist@npm:4.24.0" 1182 | dependencies: 1183 | caniuse-lite: "npm:^1.0.30001663" 1184 | electron-to-chromium: "npm:^1.5.28" 1185 | node-releases: "npm:^2.0.18" 1186 | update-browserslist-db: "npm:^1.1.0" 1187 | bin: 1188 | browserslist: cli.js 1189 | checksum: 10c0/95e76ad522753c4c470427f6e3c8a4bb5478ff448841e22b3d3e53f89ecaf17b6984666d6c7e715c370f1e7fa0cf684f42e34e554236a8b2fab38ea76b9e4c52 1190 | languageName: node 1191 | linkType: hard 1192 | 1193 | "cacache@npm:^18.0.0": 1194 | version: 18.0.4 1195 | resolution: "cacache@npm:18.0.4" 1196 | dependencies: 1197 | "@npmcli/fs": "npm:^3.1.0" 1198 | fs-minipass: "npm:^3.0.0" 1199 | glob: "npm:^10.2.2" 1200 | lru-cache: "npm:^10.0.1" 1201 | minipass: "npm:^7.0.3" 1202 | minipass-collect: "npm:^2.0.1" 1203 | minipass-flush: "npm:^1.0.5" 1204 | minipass-pipeline: "npm:^1.2.4" 1205 | p-map: "npm:^4.0.0" 1206 | ssri: "npm:^10.0.0" 1207 | tar: "npm:^6.1.11" 1208 | unique-filename: "npm:^3.0.0" 1209 | checksum: 10c0/6c055bafed9de4f3dcc64ac3dc7dd24e863210902b7c470eb9ce55a806309b3efff78033e3d8b4f7dcc5d467f2db43c6a2857aaaf26f0094b8a351d44c42179f 1210 | languageName: node 1211 | linkType: hard 1212 | 1213 | "callsites@npm:^3.0.0": 1214 | version: 3.1.0 1215 | resolution: "callsites@npm:3.1.0" 1216 | checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 1217 | languageName: node 1218 | linkType: hard 1219 | 1220 | "caniuse-lite@npm:^1.0.30001663": 1221 | version: 1.0.30001668 1222 | resolution: "caniuse-lite@npm:1.0.30001668" 1223 | checksum: 10c0/247b3200aeec55038f3a11f3e6ab66f656c54d30df7b01d8d447efaba9af96ad3e17128da2ddd42ddc9cb6c286bac65b634a20955b3cc6619be7ca4601fddc8e 1224 | languageName: node 1225 | linkType: hard 1226 | 1227 | "chalk@npm:^2.4.2": 1228 | version: 2.4.2 1229 | resolution: "chalk@npm:2.4.2" 1230 | dependencies: 1231 | ansi-styles: "npm:^3.2.1" 1232 | escape-string-regexp: "npm:^1.0.5" 1233 | supports-color: "npm:^5.3.0" 1234 | checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 1235 | languageName: node 1236 | linkType: hard 1237 | 1238 | "chalk@npm:^4.0.0": 1239 | version: 4.1.2 1240 | resolution: "chalk@npm:4.1.2" 1241 | dependencies: 1242 | ansi-styles: "npm:^4.1.0" 1243 | supports-color: "npm:^7.1.0" 1244 | checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 1245 | languageName: node 1246 | linkType: hard 1247 | 1248 | "chownr@npm:^2.0.0": 1249 | version: 2.0.0 1250 | resolution: "chownr@npm:2.0.0" 1251 | checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 1252 | languageName: node 1253 | linkType: hard 1254 | 1255 | "clean-stack@npm:^2.0.0": 1256 | version: 2.2.0 1257 | resolution: "clean-stack@npm:2.2.0" 1258 | checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 1259 | languageName: node 1260 | linkType: hard 1261 | 1262 | "color-convert@npm:^1.9.0": 1263 | version: 1.9.3 1264 | resolution: "color-convert@npm:1.9.3" 1265 | dependencies: 1266 | color-name: "npm:1.1.3" 1267 | checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c 1268 | languageName: node 1269 | linkType: hard 1270 | 1271 | "color-convert@npm:^2.0.1": 1272 | version: 2.0.1 1273 | resolution: "color-convert@npm:2.0.1" 1274 | dependencies: 1275 | color-name: "npm:~1.1.4" 1276 | checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 1277 | languageName: node 1278 | linkType: hard 1279 | 1280 | "color-name@npm:1.1.3": 1281 | version: 1.1.3 1282 | resolution: "color-name@npm:1.1.3" 1283 | checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 1284 | languageName: node 1285 | linkType: hard 1286 | 1287 | "color-name@npm:~1.1.4": 1288 | version: 1.1.4 1289 | resolution: "color-name@npm:1.1.4" 1290 | checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 1291 | languageName: node 1292 | linkType: hard 1293 | 1294 | "concat-map@npm:0.0.1": 1295 | version: 0.0.1 1296 | resolution: "concat-map@npm:0.0.1" 1297 | checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f 1298 | languageName: node 1299 | linkType: hard 1300 | 1301 | "convert-source-map@npm:^2.0.0": 1302 | version: 2.0.0 1303 | resolution: "convert-source-map@npm:2.0.0" 1304 | checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b 1305 | languageName: node 1306 | linkType: hard 1307 | 1308 | "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2": 1309 | version: 7.0.3 1310 | resolution: "cross-spawn@npm:7.0.3" 1311 | dependencies: 1312 | path-key: "npm:^3.1.0" 1313 | shebang-command: "npm:^2.0.0" 1314 | which: "npm:^2.0.1" 1315 | checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 1316 | languageName: node 1317 | linkType: hard 1318 | 1319 | "csstype@npm:^3.0.2": 1320 | version: 3.1.3 1321 | resolution: "csstype@npm:3.1.3" 1322 | checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 1323 | languageName: node 1324 | linkType: hard 1325 | 1326 | "debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": 1327 | version: 4.3.7 1328 | resolution: "debug@npm:4.3.7" 1329 | dependencies: 1330 | ms: "npm:^2.1.3" 1331 | peerDependenciesMeta: 1332 | supports-color: 1333 | optional: true 1334 | checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b 1335 | languageName: node 1336 | linkType: hard 1337 | 1338 | "deep-is@npm:^0.1.3": 1339 | version: 0.1.4 1340 | resolution: "deep-is@npm:0.1.4" 1341 | checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c 1342 | languageName: node 1343 | linkType: hard 1344 | 1345 | "eastasianwidth@npm:^0.2.0": 1346 | version: 0.2.0 1347 | resolution: "eastasianwidth@npm:0.2.0" 1348 | checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 1349 | languageName: node 1350 | linkType: hard 1351 | 1352 | "electron-to-chromium@npm:^1.5.28": 1353 | version: 1.5.38 1354 | resolution: "electron-to-chromium@npm:1.5.38" 1355 | checksum: 10c0/f44715632fce33ac2444e5f0ac54684640b95bbfcdde47153e727645c33f5d18110d5af5348120a8345707c6c219d6109573b6acba56d819ca607010b75931ef 1356 | languageName: node 1357 | linkType: hard 1358 | 1359 | "emoji-regex@npm:^8.0.0": 1360 | version: 8.0.0 1361 | resolution: "emoji-regex@npm:8.0.0" 1362 | checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 1363 | languageName: node 1364 | linkType: hard 1365 | 1366 | "emoji-regex@npm:^9.2.2": 1367 | version: 9.2.2 1368 | resolution: "emoji-regex@npm:9.2.2" 1369 | checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 1370 | languageName: node 1371 | linkType: hard 1372 | 1373 | "encoding@npm:^0.1.13": 1374 | version: 0.1.13 1375 | resolution: "encoding@npm:0.1.13" 1376 | dependencies: 1377 | iconv-lite: "npm:^0.6.2" 1378 | checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 1379 | languageName: node 1380 | linkType: hard 1381 | 1382 | "env-paths@npm:^2.2.0": 1383 | version: 2.2.1 1384 | resolution: "env-paths@npm:2.2.1" 1385 | checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 1386 | languageName: node 1387 | linkType: hard 1388 | 1389 | "err-code@npm:^2.0.2": 1390 | version: 2.0.3 1391 | resolution: "err-code@npm:2.0.3" 1392 | checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 1393 | languageName: node 1394 | linkType: hard 1395 | 1396 | "esbuild@npm:^0.21.3": 1397 | version: 0.21.5 1398 | resolution: "esbuild@npm:0.21.5" 1399 | dependencies: 1400 | "@esbuild/aix-ppc64": "npm:0.21.5" 1401 | "@esbuild/android-arm": "npm:0.21.5" 1402 | "@esbuild/android-arm64": "npm:0.21.5" 1403 | "@esbuild/android-x64": "npm:0.21.5" 1404 | "@esbuild/darwin-arm64": "npm:0.21.5" 1405 | "@esbuild/darwin-x64": "npm:0.21.5" 1406 | "@esbuild/freebsd-arm64": "npm:0.21.5" 1407 | "@esbuild/freebsd-x64": "npm:0.21.5" 1408 | "@esbuild/linux-arm": "npm:0.21.5" 1409 | "@esbuild/linux-arm64": "npm:0.21.5" 1410 | "@esbuild/linux-ia32": "npm:0.21.5" 1411 | "@esbuild/linux-loong64": "npm:0.21.5" 1412 | "@esbuild/linux-mips64el": "npm:0.21.5" 1413 | "@esbuild/linux-ppc64": "npm:0.21.5" 1414 | "@esbuild/linux-riscv64": "npm:0.21.5" 1415 | "@esbuild/linux-s390x": "npm:0.21.5" 1416 | "@esbuild/linux-x64": "npm:0.21.5" 1417 | "@esbuild/netbsd-x64": "npm:0.21.5" 1418 | "@esbuild/openbsd-x64": "npm:0.21.5" 1419 | "@esbuild/sunos-x64": "npm:0.21.5" 1420 | "@esbuild/win32-arm64": "npm:0.21.5" 1421 | "@esbuild/win32-ia32": "npm:0.21.5" 1422 | "@esbuild/win32-x64": "npm:0.21.5" 1423 | dependenciesMeta: 1424 | "@esbuild/aix-ppc64": 1425 | optional: true 1426 | "@esbuild/android-arm": 1427 | optional: true 1428 | "@esbuild/android-arm64": 1429 | optional: true 1430 | "@esbuild/android-x64": 1431 | optional: true 1432 | "@esbuild/darwin-arm64": 1433 | optional: true 1434 | "@esbuild/darwin-x64": 1435 | optional: true 1436 | "@esbuild/freebsd-arm64": 1437 | optional: true 1438 | "@esbuild/freebsd-x64": 1439 | optional: true 1440 | "@esbuild/linux-arm": 1441 | optional: true 1442 | "@esbuild/linux-arm64": 1443 | optional: true 1444 | "@esbuild/linux-ia32": 1445 | optional: true 1446 | "@esbuild/linux-loong64": 1447 | optional: true 1448 | "@esbuild/linux-mips64el": 1449 | optional: true 1450 | "@esbuild/linux-ppc64": 1451 | optional: true 1452 | "@esbuild/linux-riscv64": 1453 | optional: true 1454 | "@esbuild/linux-s390x": 1455 | optional: true 1456 | "@esbuild/linux-x64": 1457 | optional: true 1458 | "@esbuild/netbsd-x64": 1459 | optional: true 1460 | "@esbuild/openbsd-x64": 1461 | optional: true 1462 | "@esbuild/sunos-x64": 1463 | optional: true 1464 | "@esbuild/win32-arm64": 1465 | optional: true 1466 | "@esbuild/win32-ia32": 1467 | optional: true 1468 | "@esbuild/win32-x64": 1469 | optional: true 1470 | bin: 1471 | esbuild: bin/esbuild 1472 | checksum: 10c0/fa08508adf683c3f399e8a014a6382a6b65542213431e26206c0720e536b31c09b50798747c2a105a4bbba1d9767b8d3615a74c2f7bf1ddf6d836cd11eb672de 1473 | languageName: node 1474 | linkType: hard 1475 | 1476 | "escalade@npm:^3.2.0": 1477 | version: 3.2.0 1478 | resolution: "escalade@npm:3.2.0" 1479 | checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 1480 | languageName: node 1481 | linkType: hard 1482 | 1483 | "escape-string-regexp@npm:^1.0.5": 1484 | version: 1.0.5 1485 | resolution: "escape-string-regexp@npm:1.0.5" 1486 | checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 1487 | languageName: node 1488 | linkType: hard 1489 | 1490 | "escape-string-regexp@npm:^4.0.0": 1491 | version: 4.0.0 1492 | resolution: "escape-string-regexp@npm:4.0.0" 1493 | checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 1494 | languageName: node 1495 | linkType: hard 1496 | 1497 | "eslint-plugin-react-hooks@npm:^5.1.0-rc.0": 1498 | version: 5.1.0-rc-fb9a90fa48-20240614 1499 | resolution: "eslint-plugin-react-hooks@npm:5.1.0-rc-fb9a90fa48-20240614" 1500 | peerDependencies: 1501 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 1502 | checksum: 10c0/e27a8073a19d8411cb1cbbd2a935d0f5ec824efb7fd17d907df5c71df47ace9faa9c08c0e8f6db627b62db202a146ff111e6b3067e31773af0b41d15a34ba956 1503 | languageName: node 1504 | linkType: hard 1505 | 1506 | "eslint-plugin-react-refresh@npm:^0.4.12": 1507 | version: 0.4.12 1508 | resolution: "eslint-plugin-react-refresh@npm:0.4.12" 1509 | peerDependencies: 1510 | eslint: ">=7" 1511 | checksum: 10c0/33dd82450f7c5fa884c5c84ffaf9d9a8b363bc155432807dc09904c7db6ba724888fac4562b058268259aa7c9270b622ef411488011b3469a2add275ed5c2273 1512 | languageName: node 1513 | linkType: hard 1514 | 1515 | "eslint-scope@npm:^8.1.0": 1516 | version: 8.1.0 1517 | resolution: "eslint-scope@npm:8.1.0" 1518 | dependencies: 1519 | esrecurse: "npm:^4.3.0" 1520 | estraverse: "npm:^5.2.0" 1521 | checksum: 10c0/ae1df7accae9ea90465c2ded70f7064d6d1f2962ef4cc87398855c4f0b3a5ab01063e0258d954bb94b184f6759febe04c3118195cab5c51978a7229948ba2875 1522 | languageName: node 1523 | linkType: hard 1524 | 1525 | "eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.3": 1526 | version: 3.4.3 1527 | resolution: "eslint-visitor-keys@npm:3.4.3" 1528 | checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 1529 | languageName: node 1530 | linkType: hard 1531 | 1532 | "eslint-visitor-keys@npm:^4.1.0": 1533 | version: 4.1.0 1534 | resolution: "eslint-visitor-keys@npm:4.1.0" 1535 | checksum: 10c0/5483ef114c93a136aa234140d7aa3bd259488dae866d35cb0d0b52e6a158f614760a57256ac8d549acc590a87042cb40f6951815caa821e55dc4fd6ef4c722eb 1536 | languageName: node 1537 | linkType: hard 1538 | 1539 | "eslint@npm:^9.11.1": 1540 | version: 9.12.0 1541 | resolution: "eslint@npm:9.12.0" 1542 | dependencies: 1543 | "@eslint-community/eslint-utils": "npm:^4.2.0" 1544 | "@eslint-community/regexpp": "npm:^4.11.0" 1545 | "@eslint/config-array": "npm:^0.18.0" 1546 | "@eslint/core": "npm:^0.6.0" 1547 | "@eslint/eslintrc": "npm:^3.1.0" 1548 | "@eslint/js": "npm:9.12.0" 1549 | "@eslint/plugin-kit": "npm:^0.2.0" 1550 | "@humanfs/node": "npm:^0.16.5" 1551 | "@humanwhocodes/module-importer": "npm:^1.0.1" 1552 | "@humanwhocodes/retry": "npm:^0.3.1" 1553 | "@types/estree": "npm:^1.0.6" 1554 | "@types/json-schema": "npm:^7.0.15" 1555 | ajv: "npm:^6.12.4" 1556 | chalk: "npm:^4.0.0" 1557 | cross-spawn: "npm:^7.0.2" 1558 | debug: "npm:^4.3.2" 1559 | escape-string-regexp: "npm:^4.0.0" 1560 | eslint-scope: "npm:^8.1.0" 1561 | eslint-visitor-keys: "npm:^4.1.0" 1562 | espree: "npm:^10.2.0" 1563 | esquery: "npm:^1.5.0" 1564 | esutils: "npm:^2.0.2" 1565 | fast-deep-equal: "npm:^3.1.3" 1566 | file-entry-cache: "npm:^8.0.0" 1567 | find-up: "npm:^5.0.0" 1568 | glob-parent: "npm:^6.0.2" 1569 | ignore: "npm:^5.2.0" 1570 | imurmurhash: "npm:^0.1.4" 1571 | is-glob: "npm:^4.0.0" 1572 | json-stable-stringify-without-jsonify: "npm:^1.0.1" 1573 | lodash.merge: "npm:^4.6.2" 1574 | minimatch: "npm:^3.1.2" 1575 | natural-compare: "npm:^1.4.0" 1576 | optionator: "npm:^0.9.3" 1577 | text-table: "npm:^0.2.0" 1578 | peerDependencies: 1579 | jiti: "*" 1580 | peerDependenciesMeta: 1581 | jiti: 1582 | optional: true 1583 | bin: 1584 | eslint: bin/eslint.js 1585 | checksum: 10c0/67cf6ea3ea28dcda7dd54aac33e2d4028eb36991d13defb0d2339c3eaa877d5dddd12cd4416ddc701a68bcde9e0bb9e65524c2e4e9914992c724f5b51e949dda 1586 | languageName: node 1587 | linkType: hard 1588 | 1589 | "espree@npm:^10.0.1, espree@npm:^10.2.0": 1590 | version: 10.2.0 1591 | resolution: "espree@npm:10.2.0" 1592 | dependencies: 1593 | acorn: "npm:^8.12.0" 1594 | acorn-jsx: "npm:^5.3.2" 1595 | eslint-visitor-keys: "npm:^4.1.0" 1596 | checksum: 10c0/2b6bfb683e7e5ab2e9513949879140898d80a2d9867ea1db6ff5b0256df81722633b60a7523a7c614f05a39aeea159dd09ad2a0e90c0e218732fc016f9086215 1597 | languageName: node 1598 | linkType: hard 1599 | 1600 | "esquery@npm:^1.5.0": 1601 | version: 1.6.0 1602 | resolution: "esquery@npm:1.6.0" 1603 | dependencies: 1604 | estraverse: "npm:^5.1.0" 1605 | checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 1606 | languageName: node 1607 | linkType: hard 1608 | 1609 | "esrecurse@npm:^4.3.0": 1610 | version: 4.3.0 1611 | resolution: "esrecurse@npm:4.3.0" 1612 | dependencies: 1613 | estraverse: "npm:^5.2.0" 1614 | checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 1615 | languageName: node 1616 | linkType: hard 1617 | 1618 | "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": 1619 | version: 5.3.0 1620 | resolution: "estraverse@npm:5.3.0" 1621 | checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 1622 | languageName: node 1623 | linkType: hard 1624 | 1625 | "esutils@npm:^2.0.2": 1626 | version: 2.0.3 1627 | resolution: "esutils@npm:2.0.3" 1628 | checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 1629 | languageName: node 1630 | linkType: hard 1631 | 1632 | "exponential-backoff@npm:^3.1.1": 1633 | version: 3.1.1 1634 | resolution: "exponential-backoff@npm:3.1.1" 1635 | checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 1636 | languageName: node 1637 | linkType: hard 1638 | 1639 | "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": 1640 | version: 3.1.3 1641 | resolution: "fast-deep-equal@npm:3.1.3" 1642 | checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 1643 | languageName: node 1644 | linkType: hard 1645 | 1646 | "fast-glob@npm:^3.3.2": 1647 | version: 3.3.2 1648 | resolution: "fast-glob@npm:3.3.2" 1649 | dependencies: 1650 | "@nodelib/fs.stat": "npm:^2.0.2" 1651 | "@nodelib/fs.walk": "npm:^1.2.3" 1652 | glob-parent: "npm:^5.1.2" 1653 | merge2: "npm:^1.3.0" 1654 | micromatch: "npm:^4.0.4" 1655 | checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 1656 | languageName: node 1657 | linkType: hard 1658 | 1659 | "fast-json-stable-stringify@npm:^2.0.0": 1660 | version: 2.1.0 1661 | resolution: "fast-json-stable-stringify@npm:2.1.0" 1662 | checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b 1663 | languageName: node 1664 | linkType: hard 1665 | 1666 | "fast-levenshtein@npm:^2.0.6": 1667 | version: 2.0.6 1668 | resolution: "fast-levenshtein@npm:2.0.6" 1669 | checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 1670 | languageName: node 1671 | linkType: hard 1672 | 1673 | "fastq@npm:^1.6.0": 1674 | version: 1.17.1 1675 | resolution: "fastq@npm:1.17.1" 1676 | dependencies: 1677 | reusify: "npm:^1.0.4" 1678 | checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 1679 | languageName: node 1680 | linkType: hard 1681 | 1682 | "fflate@npm:~0.8.2": 1683 | version: 0.8.2 1684 | resolution: "fflate@npm:0.8.2" 1685 | checksum: 10c0/03448d630c0a583abea594835a9fdb2aaf7d67787055a761515bf4ed862913cfd693b4c4ffd5c3f3b355a70cf1e19033e9ae5aedcca103188aaff91b8bd6e293 1686 | languageName: node 1687 | linkType: hard 1688 | 1689 | "file-entry-cache@npm:^8.0.0": 1690 | version: 8.0.0 1691 | resolution: "file-entry-cache@npm:8.0.0" 1692 | dependencies: 1693 | flat-cache: "npm:^4.0.0" 1694 | checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 1695 | languageName: node 1696 | linkType: hard 1697 | 1698 | "fill-range@npm:^7.1.1": 1699 | version: 7.1.1 1700 | resolution: "fill-range@npm:7.1.1" 1701 | dependencies: 1702 | to-regex-range: "npm:^5.0.1" 1703 | checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 1704 | languageName: node 1705 | linkType: hard 1706 | 1707 | "find-up@npm:^5.0.0": 1708 | version: 5.0.0 1709 | resolution: "find-up@npm:5.0.0" 1710 | dependencies: 1711 | locate-path: "npm:^6.0.0" 1712 | path-exists: "npm:^4.0.0" 1713 | checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a 1714 | languageName: node 1715 | linkType: hard 1716 | 1717 | "flat-cache@npm:^4.0.0": 1718 | version: 4.0.1 1719 | resolution: "flat-cache@npm:4.0.1" 1720 | dependencies: 1721 | flatted: "npm:^3.2.9" 1722 | keyv: "npm:^4.5.4" 1723 | checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc 1724 | languageName: node 1725 | linkType: hard 1726 | 1727 | "flatted@npm:^3.2.9": 1728 | version: 3.3.1 1729 | resolution: "flatted@npm:3.3.1" 1730 | checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf 1731 | languageName: node 1732 | linkType: hard 1733 | 1734 | "foreground-child@npm:^3.1.0": 1735 | version: 3.3.0 1736 | resolution: "foreground-child@npm:3.3.0" 1737 | dependencies: 1738 | cross-spawn: "npm:^7.0.0" 1739 | signal-exit: "npm:^4.0.1" 1740 | checksum: 10c0/028f1d41000553fcfa6c4bb5c372963bf3d9bf0b1f25a87d1a6253014343fb69dfb1b42d9625d7cf44c8ba429940f3d0ff718b62105d4d4a4f6ef8ca0a53faa2 1741 | languageName: node 1742 | linkType: hard 1743 | 1744 | "fs-minipass@npm:^2.0.0": 1745 | version: 2.1.0 1746 | resolution: "fs-minipass@npm:2.1.0" 1747 | dependencies: 1748 | minipass: "npm:^3.0.0" 1749 | checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 1750 | languageName: node 1751 | linkType: hard 1752 | 1753 | "fs-minipass@npm:^3.0.0": 1754 | version: 3.0.3 1755 | resolution: "fs-minipass@npm:3.0.3" 1756 | dependencies: 1757 | minipass: "npm:^7.0.3" 1758 | checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 1759 | languageName: node 1760 | linkType: hard 1761 | 1762 | "fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": 1763 | version: 2.3.3 1764 | resolution: "fsevents@npm:2.3.3" 1765 | dependencies: 1766 | node-gyp: "npm:latest" 1767 | checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 1768 | conditions: os=darwin 1769 | languageName: node 1770 | linkType: hard 1771 | 1772 | "fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": 1773 | version: 2.3.3 1774 | resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" 1775 | dependencies: 1776 | node-gyp: "npm:latest" 1777 | conditions: os=darwin 1778 | languageName: node 1779 | linkType: hard 1780 | 1781 | "gensync@npm:^1.0.0-beta.2": 1782 | version: 1.0.0-beta.2 1783 | resolution: "gensync@npm:1.0.0-beta.2" 1784 | checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 1785 | languageName: node 1786 | linkType: hard 1787 | 1788 | "glob-parent@npm:^5.1.2": 1789 | version: 5.1.2 1790 | resolution: "glob-parent@npm:5.1.2" 1791 | dependencies: 1792 | is-glob: "npm:^4.0.1" 1793 | checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee 1794 | languageName: node 1795 | linkType: hard 1796 | 1797 | "glob-parent@npm:^6.0.2": 1798 | version: 6.0.2 1799 | resolution: "glob-parent@npm:6.0.2" 1800 | dependencies: 1801 | is-glob: "npm:^4.0.3" 1802 | checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 1803 | languageName: node 1804 | linkType: hard 1805 | 1806 | "glob@npm:^10.2.2, glob@npm:^10.3.10": 1807 | version: 10.4.5 1808 | resolution: "glob@npm:10.4.5" 1809 | dependencies: 1810 | foreground-child: "npm:^3.1.0" 1811 | jackspeak: "npm:^3.1.2" 1812 | minimatch: "npm:^9.0.4" 1813 | minipass: "npm:^7.1.2" 1814 | package-json-from-dist: "npm:^1.0.0" 1815 | path-scurry: "npm:^1.11.1" 1816 | bin: 1817 | glob: dist/esm/bin.mjs 1818 | checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e 1819 | languageName: node 1820 | linkType: hard 1821 | 1822 | "globals@npm:^11.1.0": 1823 | version: 11.12.0 1824 | resolution: "globals@npm:11.12.0" 1825 | checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 1826 | languageName: node 1827 | linkType: hard 1828 | 1829 | "globals@npm:^14.0.0": 1830 | version: 14.0.0 1831 | resolution: "globals@npm:14.0.0" 1832 | checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d 1833 | languageName: node 1834 | linkType: hard 1835 | 1836 | "globals@npm:^15.9.0": 1837 | version: 15.11.0 1838 | resolution: "globals@npm:15.11.0" 1839 | checksum: 10c0/861e39bb6bd9bd1b9f355c25c962e5eb4b3f0e1567cf60fa6c06e8c502b0ec8706b1cce055d69d84d0b7b8e028bec5418cf629a54e7047e116538d1c1c1a375c 1840 | languageName: node 1841 | linkType: hard 1842 | 1843 | "graceful-fs@npm:^4.2.6": 1844 | version: 4.2.11 1845 | resolution: "graceful-fs@npm:4.2.11" 1846 | checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 1847 | languageName: node 1848 | linkType: hard 1849 | 1850 | "graphemer@npm:^1.4.0": 1851 | version: 1.4.0 1852 | resolution: "graphemer@npm:1.4.0" 1853 | checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 1854 | languageName: node 1855 | linkType: hard 1856 | 1857 | "has-flag@npm:^3.0.0": 1858 | version: 3.0.0 1859 | resolution: "has-flag@npm:3.0.0" 1860 | checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 1861 | languageName: node 1862 | linkType: hard 1863 | 1864 | "has-flag@npm:^4.0.0": 1865 | version: 4.0.0 1866 | resolution: "has-flag@npm:4.0.0" 1867 | checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 1868 | languageName: node 1869 | linkType: hard 1870 | 1871 | "http-cache-semantics@npm:^4.1.1": 1872 | version: 4.1.1 1873 | resolution: "http-cache-semantics@npm:4.1.1" 1874 | checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc 1875 | languageName: node 1876 | linkType: hard 1877 | 1878 | "http-proxy-agent@npm:^7.0.0": 1879 | version: 7.0.2 1880 | resolution: "http-proxy-agent@npm:7.0.2" 1881 | dependencies: 1882 | agent-base: "npm:^7.1.0" 1883 | debug: "npm:^4.3.4" 1884 | checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 1885 | languageName: node 1886 | linkType: hard 1887 | 1888 | "https-proxy-agent@npm:^7.0.1": 1889 | version: 7.0.5 1890 | resolution: "https-proxy-agent@npm:7.0.5" 1891 | dependencies: 1892 | agent-base: "npm:^7.0.2" 1893 | debug: "npm:4" 1894 | checksum: 10c0/2490e3acec397abeb88807db52cac59102d5ed758feee6df6112ab3ccd8325e8a1ce8bce6f4b66e5470eca102d31e425ace904242e4fa28dbe0c59c4bafa7b2c 1895 | languageName: node 1896 | linkType: hard 1897 | 1898 | "iconv-lite@npm:^0.6.2": 1899 | version: 0.6.3 1900 | resolution: "iconv-lite@npm:0.6.3" 1901 | dependencies: 1902 | safer-buffer: "npm:>= 2.1.2 < 3.0.0" 1903 | checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 1904 | languageName: node 1905 | linkType: hard 1906 | 1907 | "ignore@npm:^5.2.0, ignore@npm:^5.3.1": 1908 | version: 5.3.2 1909 | resolution: "ignore@npm:5.3.2" 1910 | checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 1911 | languageName: node 1912 | linkType: hard 1913 | 1914 | "import-fresh@npm:^3.2.1": 1915 | version: 3.3.0 1916 | resolution: "import-fresh@npm:3.3.0" 1917 | dependencies: 1918 | parent-module: "npm:^1.0.0" 1919 | resolve-from: "npm:^4.0.0" 1920 | checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 1921 | languageName: node 1922 | linkType: hard 1923 | 1924 | "imurmurhash@npm:^0.1.4": 1925 | version: 0.1.4 1926 | resolution: "imurmurhash@npm:0.1.4" 1927 | checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 1928 | languageName: node 1929 | linkType: hard 1930 | 1931 | "indent-string@npm:^4.0.0": 1932 | version: 4.0.0 1933 | resolution: "indent-string@npm:4.0.0" 1934 | checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f 1935 | languageName: node 1936 | linkType: hard 1937 | 1938 | "ip-address@npm:^9.0.5": 1939 | version: 9.0.5 1940 | resolution: "ip-address@npm:9.0.5" 1941 | dependencies: 1942 | jsbn: "npm:1.1.0" 1943 | sprintf-js: "npm:^1.1.3" 1944 | checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc 1945 | languageName: node 1946 | linkType: hard 1947 | 1948 | "is-extglob@npm:^2.1.1": 1949 | version: 2.1.1 1950 | resolution: "is-extglob@npm:2.1.1" 1951 | checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 1952 | languageName: node 1953 | linkType: hard 1954 | 1955 | "is-fullwidth-code-point@npm:^3.0.0": 1956 | version: 3.0.0 1957 | resolution: "is-fullwidth-code-point@npm:3.0.0" 1958 | checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc 1959 | languageName: node 1960 | linkType: hard 1961 | 1962 | "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": 1963 | version: 4.0.3 1964 | resolution: "is-glob@npm:4.0.3" 1965 | dependencies: 1966 | is-extglob: "npm:^2.1.1" 1967 | checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a 1968 | languageName: node 1969 | linkType: hard 1970 | 1971 | "is-lambda@npm:^1.0.1": 1972 | version: 1.0.1 1973 | resolution: "is-lambda@npm:1.0.1" 1974 | checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d 1975 | languageName: node 1976 | linkType: hard 1977 | 1978 | "is-number@npm:^7.0.0": 1979 | version: 7.0.0 1980 | resolution: "is-number@npm:7.0.0" 1981 | checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 1982 | languageName: node 1983 | linkType: hard 1984 | 1985 | "isexe@npm:^2.0.0": 1986 | version: 2.0.0 1987 | resolution: "isexe@npm:2.0.0" 1988 | checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d 1989 | languageName: node 1990 | linkType: hard 1991 | 1992 | "isexe@npm:^3.1.1": 1993 | version: 3.1.1 1994 | resolution: "isexe@npm:3.1.1" 1995 | checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 1996 | languageName: node 1997 | linkType: hard 1998 | 1999 | "jackspeak@npm:^3.1.2": 2000 | version: 3.4.3 2001 | resolution: "jackspeak@npm:3.4.3" 2002 | dependencies: 2003 | "@isaacs/cliui": "npm:^8.0.2" 2004 | "@pkgjs/parseargs": "npm:^0.11.0" 2005 | dependenciesMeta: 2006 | "@pkgjs/parseargs": 2007 | optional: true 2008 | checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 2009 | languageName: node 2010 | linkType: hard 2011 | 2012 | "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": 2013 | version: 4.0.0 2014 | resolution: "js-tokens@npm:4.0.0" 2015 | checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed 2016 | languageName: node 2017 | linkType: hard 2018 | 2019 | "js-yaml@npm:^4.1.0": 2020 | version: 4.1.0 2021 | resolution: "js-yaml@npm:4.1.0" 2022 | dependencies: 2023 | argparse: "npm:^2.0.1" 2024 | bin: 2025 | js-yaml: bin/js-yaml.js 2026 | checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f 2027 | languageName: node 2028 | linkType: hard 2029 | 2030 | "jsbn@npm:1.1.0": 2031 | version: 1.1.0 2032 | resolution: "jsbn@npm:1.1.0" 2033 | checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 2034 | languageName: node 2035 | linkType: hard 2036 | 2037 | "jsesc@npm:^3.0.2": 2038 | version: 3.0.2 2039 | resolution: "jsesc@npm:3.0.2" 2040 | bin: 2041 | jsesc: bin/jsesc 2042 | checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 2043 | languageName: node 2044 | linkType: hard 2045 | 2046 | "json-buffer@npm:3.0.1": 2047 | version: 3.0.1 2048 | resolution: "json-buffer@npm:3.0.1" 2049 | checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 2050 | languageName: node 2051 | linkType: hard 2052 | 2053 | "json-schema-traverse@npm:^0.4.1": 2054 | version: 0.4.1 2055 | resolution: "json-schema-traverse@npm:0.4.1" 2056 | checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce 2057 | languageName: node 2058 | linkType: hard 2059 | 2060 | "json-stable-stringify-without-jsonify@npm:^1.0.1": 2061 | version: 1.0.1 2062 | resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" 2063 | checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 2064 | languageName: node 2065 | linkType: hard 2066 | 2067 | "json5@npm:^2.2.3": 2068 | version: 2.2.3 2069 | resolution: "json5@npm:2.2.3" 2070 | bin: 2071 | json5: lib/cli.js 2072 | checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c 2073 | languageName: node 2074 | linkType: hard 2075 | 2076 | "keyv@npm:^4.5.4": 2077 | version: 4.5.4 2078 | resolution: "keyv@npm:4.5.4" 2079 | dependencies: 2080 | json-buffer: "npm:3.0.1" 2081 | checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e 2082 | languageName: node 2083 | linkType: hard 2084 | 2085 | "levn@npm:^0.4.1": 2086 | version: 0.4.1 2087 | resolution: "levn@npm:0.4.1" 2088 | dependencies: 2089 | prelude-ls: "npm:^1.2.1" 2090 | type-check: "npm:~0.4.0" 2091 | checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e 2092 | languageName: node 2093 | linkType: hard 2094 | 2095 | "locate-path@npm:^6.0.0": 2096 | version: 6.0.0 2097 | resolution: "locate-path@npm:6.0.0" 2098 | dependencies: 2099 | p-locate: "npm:^5.0.0" 2100 | checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 2101 | languageName: node 2102 | linkType: hard 2103 | 2104 | "lodash.merge@npm:^4.6.2": 2105 | version: 4.6.2 2106 | resolution: "lodash.merge@npm:4.6.2" 2107 | checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 2108 | languageName: node 2109 | linkType: hard 2110 | 2111 | "lodash@npm:^4.17.21": 2112 | version: 4.17.21 2113 | resolution: "lodash@npm:4.17.21" 2114 | checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c 2115 | languageName: node 2116 | linkType: hard 2117 | 2118 | "loose-envify@npm:^1.1.0": 2119 | version: 1.4.0 2120 | resolution: "loose-envify@npm:1.4.0" 2121 | dependencies: 2122 | js-tokens: "npm:^3.0.0 || ^4.0.0" 2123 | bin: 2124 | loose-envify: cli.js 2125 | checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e 2126 | languageName: node 2127 | linkType: hard 2128 | 2129 | "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": 2130 | version: 10.4.3 2131 | resolution: "lru-cache@npm:10.4.3" 2132 | checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb 2133 | languageName: node 2134 | linkType: hard 2135 | 2136 | "lru-cache@npm:^5.1.1": 2137 | version: 5.1.1 2138 | resolution: "lru-cache@npm:5.1.1" 2139 | dependencies: 2140 | yallist: "npm:^3.0.2" 2141 | checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 2142 | languageName: node 2143 | linkType: hard 2144 | 2145 | "make-fetch-happen@npm:^13.0.0": 2146 | version: 13.0.1 2147 | resolution: "make-fetch-happen@npm:13.0.1" 2148 | dependencies: 2149 | "@npmcli/agent": "npm:^2.0.0" 2150 | cacache: "npm:^18.0.0" 2151 | http-cache-semantics: "npm:^4.1.1" 2152 | is-lambda: "npm:^1.0.1" 2153 | minipass: "npm:^7.0.2" 2154 | minipass-fetch: "npm:^3.0.0" 2155 | minipass-flush: "npm:^1.0.5" 2156 | minipass-pipeline: "npm:^1.2.4" 2157 | negotiator: "npm:^0.6.3" 2158 | proc-log: "npm:^4.2.0" 2159 | promise-retry: "npm:^2.0.1" 2160 | ssri: "npm:^10.0.0" 2161 | checksum: 10c0/df5f4dbb6d98153b751bccf4dc4cc500de85a96a9331db9805596c46aa9f99d9555983954e6c1266d9f981ae37a9e4647f42b9a4bb5466f867f4012e582c9e7e 2162 | languageName: node 2163 | linkType: hard 2164 | 2165 | "merge2@npm:^1.3.0": 2166 | version: 1.4.1 2167 | resolution: "merge2@npm:1.4.1" 2168 | checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb 2169 | languageName: node 2170 | linkType: hard 2171 | 2172 | "meshoptimizer@npm:~0.18.1": 2173 | version: 0.18.1 2174 | resolution: "meshoptimizer@npm:0.18.1" 2175 | checksum: 10c0/8a825c58b20b65585e8d00788843929b60c66ba4297e89afaa49f7c51ab9a0f7b9130f90cc9ad1b9b48b3d1bee3beb1bc93608acba0d73e78995c3e6e5ca436b 2176 | languageName: node 2177 | linkType: hard 2178 | 2179 | "micromatch@npm:^4.0.4": 2180 | version: 4.0.8 2181 | resolution: "micromatch@npm:4.0.8" 2182 | dependencies: 2183 | braces: "npm:^3.0.3" 2184 | picomatch: "npm:^2.3.1" 2185 | checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 2186 | languageName: node 2187 | linkType: hard 2188 | 2189 | "minimatch@npm:^3.1.2": 2190 | version: 3.1.2 2191 | resolution: "minimatch@npm:3.1.2" 2192 | dependencies: 2193 | brace-expansion: "npm:^1.1.7" 2194 | checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 2195 | languageName: node 2196 | linkType: hard 2197 | 2198 | "minimatch@npm:^9.0.4": 2199 | version: 9.0.5 2200 | resolution: "minimatch@npm:9.0.5" 2201 | dependencies: 2202 | brace-expansion: "npm:^2.0.1" 2203 | checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed 2204 | languageName: node 2205 | linkType: hard 2206 | 2207 | "minipass-collect@npm:^2.0.1": 2208 | version: 2.0.1 2209 | resolution: "minipass-collect@npm:2.0.1" 2210 | dependencies: 2211 | minipass: "npm:^7.0.3" 2212 | checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e 2213 | languageName: node 2214 | linkType: hard 2215 | 2216 | "minipass-fetch@npm:^3.0.0": 2217 | version: 3.0.5 2218 | resolution: "minipass-fetch@npm:3.0.5" 2219 | dependencies: 2220 | encoding: "npm:^0.1.13" 2221 | minipass: "npm:^7.0.3" 2222 | minipass-sized: "npm:^1.0.3" 2223 | minizlib: "npm:^2.1.2" 2224 | dependenciesMeta: 2225 | encoding: 2226 | optional: true 2227 | checksum: 10c0/9d702d57f556274286fdd97e406fc38a2f5c8d15e158b498d7393b1105974b21249289ec571fa2b51e038a4872bfc82710111cf75fae98c662f3d6f95e72152b 2228 | languageName: node 2229 | linkType: hard 2230 | 2231 | "minipass-flush@npm:^1.0.5": 2232 | version: 1.0.5 2233 | resolution: "minipass-flush@npm:1.0.5" 2234 | dependencies: 2235 | minipass: "npm:^3.0.0" 2236 | checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd 2237 | languageName: node 2238 | linkType: hard 2239 | 2240 | "minipass-pipeline@npm:^1.2.4": 2241 | version: 1.2.4 2242 | resolution: "minipass-pipeline@npm:1.2.4" 2243 | dependencies: 2244 | minipass: "npm:^3.0.0" 2245 | checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 2246 | languageName: node 2247 | linkType: hard 2248 | 2249 | "minipass-sized@npm:^1.0.3": 2250 | version: 1.0.3 2251 | resolution: "minipass-sized@npm:1.0.3" 2252 | dependencies: 2253 | minipass: "npm:^3.0.0" 2254 | checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb 2255 | languageName: node 2256 | linkType: hard 2257 | 2258 | "minipass@npm:^3.0.0": 2259 | version: 3.3.6 2260 | resolution: "minipass@npm:3.3.6" 2261 | dependencies: 2262 | yallist: "npm:^4.0.0" 2263 | checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c 2264 | languageName: node 2265 | linkType: hard 2266 | 2267 | "minipass@npm:^5.0.0": 2268 | version: 5.0.0 2269 | resolution: "minipass@npm:5.0.0" 2270 | checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 2271 | languageName: node 2272 | linkType: hard 2273 | 2274 | "minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": 2275 | version: 7.1.2 2276 | resolution: "minipass@npm:7.1.2" 2277 | checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 2278 | languageName: node 2279 | linkType: hard 2280 | 2281 | "minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": 2282 | version: 2.1.2 2283 | resolution: "minizlib@npm:2.1.2" 2284 | dependencies: 2285 | minipass: "npm:^3.0.0" 2286 | yallist: "npm:^4.0.0" 2287 | checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 2288 | languageName: node 2289 | linkType: hard 2290 | 2291 | "mkdirp@npm:^1.0.3": 2292 | version: 1.0.4 2293 | resolution: "mkdirp@npm:1.0.4" 2294 | bin: 2295 | mkdirp: bin/cmd.js 2296 | checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf 2297 | languageName: node 2298 | linkType: hard 2299 | 2300 | "ms@npm:^2.1.3": 2301 | version: 2.1.3 2302 | resolution: "ms@npm:2.1.3" 2303 | checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 2304 | languageName: node 2305 | linkType: hard 2306 | 2307 | "nanoid@npm:^3.3.7": 2308 | version: 3.3.7 2309 | resolution: "nanoid@npm:3.3.7" 2310 | bin: 2311 | nanoid: bin/nanoid.cjs 2312 | checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 2313 | languageName: node 2314 | linkType: hard 2315 | 2316 | "natural-compare@npm:^1.4.0": 2317 | version: 1.4.0 2318 | resolution: "natural-compare@npm:1.4.0" 2319 | checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 2320 | languageName: node 2321 | linkType: hard 2322 | 2323 | "negotiator@npm:^0.6.3": 2324 | version: 0.6.3 2325 | resolution: "negotiator@npm:0.6.3" 2326 | checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 2327 | languageName: node 2328 | linkType: hard 2329 | 2330 | "node-gyp@npm:latest": 2331 | version: 10.2.0 2332 | resolution: "node-gyp@npm:10.2.0" 2333 | dependencies: 2334 | env-paths: "npm:^2.2.0" 2335 | exponential-backoff: "npm:^3.1.1" 2336 | glob: "npm:^10.3.10" 2337 | graceful-fs: "npm:^4.2.6" 2338 | make-fetch-happen: "npm:^13.0.0" 2339 | nopt: "npm:^7.0.0" 2340 | proc-log: "npm:^4.1.0" 2341 | semver: "npm:^7.3.5" 2342 | tar: "npm:^6.2.1" 2343 | which: "npm:^4.0.0" 2344 | bin: 2345 | node-gyp: bin/node-gyp.js 2346 | checksum: 10c0/00630d67dbd09a45aee0a5d55c05e3916ca9e6d427ee4f7bc392d2d3dc5fad7449b21fc098dd38260a53d9dcc9c879b36704a1994235d4707e7271af7e9a835b 2347 | languageName: node 2348 | linkType: hard 2349 | 2350 | "node-releases@npm:^2.0.18": 2351 | version: 2.0.18 2352 | resolution: "node-releases@npm:2.0.18" 2353 | checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27 2354 | languageName: node 2355 | linkType: hard 2356 | 2357 | "nopt@npm:^7.0.0": 2358 | version: 7.2.1 2359 | resolution: "nopt@npm:7.2.1" 2360 | dependencies: 2361 | abbrev: "npm:^2.0.0" 2362 | bin: 2363 | nopt: bin/nopt.js 2364 | checksum: 10c0/a069c7c736767121242037a22a788863accfa932ab285a1eb569eb8cd534b09d17206f68c37f096ae785647435e0c5a5a0a67b42ec743e481a455e5ae6a6df81 2365 | languageName: node 2366 | linkType: hard 2367 | 2368 | "optionator@npm:^0.9.3": 2369 | version: 0.9.4 2370 | resolution: "optionator@npm:0.9.4" 2371 | dependencies: 2372 | deep-is: "npm:^0.1.3" 2373 | fast-levenshtein: "npm:^2.0.6" 2374 | levn: "npm:^0.4.1" 2375 | prelude-ls: "npm:^1.2.1" 2376 | type-check: "npm:^0.4.0" 2377 | word-wrap: "npm:^1.2.5" 2378 | checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 2379 | languageName: node 2380 | linkType: hard 2381 | 2382 | "p-limit@npm:^3.0.2": 2383 | version: 3.1.0 2384 | resolution: "p-limit@npm:3.1.0" 2385 | dependencies: 2386 | yocto-queue: "npm:^0.1.0" 2387 | checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a 2388 | languageName: node 2389 | linkType: hard 2390 | 2391 | "p-locate@npm:^5.0.0": 2392 | version: 5.0.0 2393 | resolution: "p-locate@npm:5.0.0" 2394 | dependencies: 2395 | p-limit: "npm:^3.0.2" 2396 | checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a 2397 | languageName: node 2398 | linkType: hard 2399 | 2400 | "p-map@npm:^4.0.0": 2401 | version: 4.0.0 2402 | resolution: "p-map@npm:4.0.0" 2403 | dependencies: 2404 | aggregate-error: "npm:^3.0.0" 2405 | checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 2406 | languageName: node 2407 | linkType: hard 2408 | 2409 | "package-json-from-dist@npm:^1.0.0": 2410 | version: 1.0.1 2411 | resolution: "package-json-from-dist@npm:1.0.1" 2412 | checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b 2413 | languageName: node 2414 | linkType: hard 2415 | 2416 | "parent-module@npm:^1.0.0": 2417 | version: 1.0.1 2418 | resolution: "parent-module@npm:1.0.1" 2419 | dependencies: 2420 | callsites: "npm:^3.0.0" 2421 | checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 2422 | languageName: node 2423 | linkType: hard 2424 | 2425 | "path-exists@npm:^4.0.0": 2426 | version: 4.0.0 2427 | resolution: "path-exists@npm:4.0.0" 2428 | checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b 2429 | languageName: node 2430 | linkType: hard 2431 | 2432 | "path-key@npm:^3.1.0": 2433 | version: 3.1.1 2434 | resolution: "path-key@npm:3.1.1" 2435 | checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c 2436 | languageName: node 2437 | linkType: hard 2438 | 2439 | "path-scurry@npm:^1.11.1": 2440 | version: 1.11.1 2441 | resolution: "path-scurry@npm:1.11.1" 2442 | dependencies: 2443 | lru-cache: "npm:^10.2.0" 2444 | minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" 2445 | checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d 2446 | languageName: node 2447 | linkType: hard 2448 | 2449 | "picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": 2450 | version: 1.1.0 2451 | resolution: "picocolors@npm:1.1.0" 2452 | checksum: 10c0/86946f6032148801ef09c051c6fb13b5cf942eaf147e30ea79edb91dd32d700934edebe782a1078ff859fb2b816792e97ef4dab03d7f0b804f6b01a0df35e023 2453 | languageName: node 2454 | linkType: hard 2455 | 2456 | "picomatch@npm:^2.3.1": 2457 | version: 2.3.1 2458 | resolution: "picomatch@npm:2.3.1" 2459 | checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be 2460 | languageName: node 2461 | linkType: hard 2462 | 2463 | "postcss@npm:^8.4.43": 2464 | version: 8.4.47 2465 | resolution: "postcss@npm:8.4.47" 2466 | dependencies: 2467 | nanoid: "npm:^3.3.7" 2468 | picocolors: "npm:^1.1.0" 2469 | source-map-js: "npm:^1.2.1" 2470 | checksum: 10c0/929f68b5081b7202709456532cee2a145c1843d391508c5a09de2517e8c4791638f71dd63b1898dba6712f8839d7a6da046c72a5e44c162e908f5911f57b5f44 2471 | languageName: node 2472 | linkType: hard 2473 | 2474 | "prelude-ls@npm:^1.2.1": 2475 | version: 1.2.1 2476 | resolution: "prelude-ls@npm:1.2.1" 2477 | checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd 2478 | languageName: node 2479 | linkType: hard 2480 | 2481 | "proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": 2482 | version: 4.2.0 2483 | resolution: "proc-log@npm:4.2.0" 2484 | checksum: 10c0/17db4757c2a5c44c1e545170e6c70a26f7de58feb985091fb1763f5081cab3d01b181fb2dd240c9f4a4255a1d9227d163d5771b7e69c9e49a561692db865efb9 2485 | languageName: node 2486 | linkType: hard 2487 | 2488 | "promise-retry@npm:^2.0.1": 2489 | version: 2.0.1 2490 | resolution: "promise-retry@npm:2.0.1" 2491 | dependencies: 2492 | err-code: "npm:^2.0.2" 2493 | retry: "npm:^0.12.0" 2494 | checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 2495 | languageName: node 2496 | linkType: hard 2497 | 2498 | "punycode@npm:^2.1.0": 2499 | version: 2.3.1 2500 | resolution: "punycode@npm:2.3.1" 2501 | checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 2502 | languageName: node 2503 | linkType: hard 2504 | 2505 | "queue-microtask@npm:^1.2.2": 2506 | version: 1.2.3 2507 | resolution: "queue-microtask@npm:1.2.3" 2508 | checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 2509 | languageName: node 2510 | linkType: hard 2511 | 2512 | "react-dom@npm:^18.3.1": 2513 | version: 18.3.1 2514 | resolution: "react-dom@npm:18.3.1" 2515 | dependencies: 2516 | loose-envify: "npm:^1.1.0" 2517 | scheduler: "npm:^0.23.2" 2518 | peerDependencies: 2519 | react: ^18.3.1 2520 | checksum: 10c0/a752496c1941f958f2e8ac56239172296fcddce1365ce45222d04a1947e0cc5547df3e8447f855a81d6d39f008d7c32eab43db3712077f09e3f67c4874973e85 2521 | languageName: node 2522 | linkType: hard 2523 | 2524 | "react-refresh@npm:^0.14.2": 2525 | version: 0.14.2 2526 | resolution: "react-refresh@npm:0.14.2" 2527 | checksum: 10c0/875b72ef56b147a131e33f2abd6ec059d1989854b3ff438898e4f9310bfcc73acff709445b7ba843318a953cb9424bcc2c05af2b3d80011cee28f25aef3e2ebb 2528 | languageName: node 2529 | linkType: hard 2530 | 2531 | "react-threejs-easeljs-drawing-app@workspace:.": 2532 | version: 0.0.0-use.local 2533 | resolution: "react-threejs-easeljs-drawing-app@workspace:." 2534 | dependencies: 2535 | "@createjs/easeljs": "npm:^2.0.0-beta.4" 2536 | "@eslint/js": "npm:^9.11.1" 2537 | "@types/easeljs": "npm:^1" 2538 | "@types/lodash": "npm:^4.17.10" 2539 | "@types/react": "npm:^18.3.11" 2540 | "@types/react-dom": "npm:^18.3.1" 2541 | "@types/three": "npm:^0.169.0" 2542 | "@vitejs/plugin-react": "npm:^4.3.2" 2543 | eslint: "npm:^9.11.1" 2544 | eslint-plugin-react-hooks: "npm:^5.1.0-rc.0" 2545 | eslint-plugin-react-refresh: "npm:^0.4.12" 2546 | globals: "npm:^15.9.0" 2547 | lodash: "npm:^4.17.21" 2548 | react: "npm:^18.3.1" 2549 | react-dom: "npm:^18.3.1" 2550 | three: "npm:^0.169.0" 2551 | typescript: "npm:^5.5.3" 2552 | typescript-eslint: "npm:^8.7.0" 2553 | vite: "npm:^5.4.8" 2554 | languageName: unknown 2555 | linkType: soft 2556 | 2557 | "react@npm:^18.3.1": 2558 | version: 18.3.1 2559 | resolution: "react@npm:18.3.1" 2560 | dependencies: 2561 | loose-envify: "npm:^1.1.0" 2562 | checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3 2563 | languageName: node 2564 | linkType: hard 2565 | 2566 | "resolve-from@npm:^4.0.0": 2567 | version: 4.0.0 2568 | resolution: "resolve-from@npm:4.0.0" 2569 | checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 2570 | languageName: node 2571 | linkType: hard 2572 | 2573 | "retry@npm:^0.12.0": 2574 | version: 0.12.0 2575 | resolution: "retry@npm:0.12.0" 2576 | checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe 2577 | languageName: node 2578 | linkType: hard 2579 | 2580 | "reusify@npm:^1.0.4": 2581 | version: 1.0.4 2582 | resolution: "reusify@npm:1.0.4" 2583 | checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 2584 | languageName: node 2585 | linkType: hard 2586 | 2587 | "rollup@npm:^4.20.0": 2588 | version: 4.24.0 2589 | resolution: "rollup@npm:4.24.0" 2590 | dependencies: 2591 | "@rollup/rollup-android-arm-eabi": "npm:4.24.0" 2592 | "@rollup/rollup-android-arm64": "npm:4.24.0" 2593 | "@rollup/rollup-darwin-arm64": "npm:4.24.0" 2594 | "@rollup/rollup-darwin-x64": "npm:4.24.0" 2595 | "@rollup/rollup-linux-arm-gnueabihf": "npm:4.24.0" 2596 | "@rollup/rollup-linux-arm-musleabihf": "npm:4.24.0" 2597 | "@rollup/rollup-linux-arm64-gnu": "npm:4.24.0" 2598 | "@rollup/rollup-linux-arm64-musl": "npm:4.24.0" 2599 | "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.24.0" 2600 | "@rollup/rollup-linux-riscv64-gnu": "npm:4.24.0" 2601 | "@rollup/rollup-linux-s390x-gnu": "npm:4.24.0" 2602 | "@rollup/rollup-linux-x64-gnu": "npm:4.24.0" 2603 | "@rollup/rollup-linux-x64-musl": "npm:4.24.0" 2604 | "@rollup/rollup-win32-arm64-msvc": "npm:4.24.0" 2605 | "@rollup/rollup-win32-ia32-msvc": "npm:4.24.0" 2606 | "@rollup/rollup-win32-x64-msvc": "npm:4.24.0" 2607 | "@types/estree": "npm:1.0.6" 2608 | fsevents: "npm:~2.3.2" 2609 | dependenciesMeta: 2610 | "@rollup/rollup-android-arm-eabi": 2611 | optional: true 2612 | "@rollup/rollup-android-arm64": 2613 | optional: true 2614 | "@rollup/rollup-darwin-arm64": 2615 | optional: true 2616 | "@rollup/rollup-darwin-x64": 2617 | optional: true 2618 | "@rollup/rollup-linux-arm-gnueabihf": 2619 | optional: true 2620 | "@rollup/rollup-linux-arm-musleabihf": 2621 | optional: true 2622 | "@rollup/rollup-linux-arm64-gnu": 2623 | optional: true 2624 | "@rollup/rollup-linux-arm64-musl": 2625 | optional: true 2626 | "@rollup/rollup-linux-powerpc64le-gnu": 2627 | optional: true 2628 | "@rollup/rollup-linux-riscv64-gnu": 2629 | optional: true 2630 | "@rollup/rollup-linux-s390x-gnu": 2631 | optional: true 2632 | "@rollup/rollup-linux-x64-gnu": 2633 | optional: true 2634 | "@rollup/rollup-linux-x64-musl": 2635 | optional: true 2636 | "@rollup/rollup-win32-arm64-msvc": 2637 | optional: true 2638 | "@rollup/rollup-win32-ia32-msvc": 2639 | optional: true 2640 | "@rollup/rollup-win32-x64-msvc": 2641 | optional: true 2642 | fsevents: 2643 | optional: true 2644 | bin: 2645 | rollup: dist/bin/rollup 2646 | checksum: 10c0/77fb549c1de8afd1142d2da765adbb0cdab9f13c47df5217f00b5cf40b74219caa48c6ba2157f6249313ee81b6fa4c4fa8b3d2a0347ad6220739e00e580a808d 2647 | languageName: node 2648 | linkType: hard 2649 | 2650 | "run-parallel@npm:^1.1.9": 2651 | version: 1.2.0 2652 | resolution: "run-parallel@npm:1.2.0" 2653 | dependencies: 2654 | queue-microtask: "npm:^1.2.2" 2655 | checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 2656 | languageName: node 2657 | linkType: hard 2658 | 2659 | "safer-buffer@npm:>= 2.1.2 < 3.0.0": 2660 | version: 2.1.2 2661 | resolution: "safer-buffer@npm:2.1.2" 2662 | checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 2663 | languageName: node 2664 | linkType: hard 2665 | 2666 | "scheduler@npm:^0.23.2": 2667 | version: 0.23.2 2668 | resolution: "scheduler@npm:0.23.2" 2669 | dependencies: 2670 | loose-envify: "npm:^1.1.0" 2671 | checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78 2672 | languageName: node 2673 | linkType: hard 2674 | 2675 | "semver@npm:^6.3.1": 2676 | version: 6.3.1 2677 | resolution: "semver@npm:6.3.1" 2678 | bin: 2679 | semver: bin/semver.js 2680 | checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d 2681 | languageName: node 2682 | linkType: hard 2683 | 2684 | "semver@npm:^7.3.5, semver@npm:^7.6.0": 2685 | version: 7.6.3 2686 | resolution: "semver@npm:7.6.3" 2687 | bin: 2688 | semver: bin/semver.js 2689 | checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf 2690 | languageName: node 2691 | linkType: hard 2692 | 2693 | "shebang-command@npm:^2.0.0": 2694 | version: 2.0.0 2695 | resolution: "shebang-command@npm:2.0.0" 2696 | dependencies: 2697 | shebang-regex: "npm:^3.0.0" 2698 | checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e 2699 | languageName: node 2700 | linkType: hard 2701 | 2702 | "shebang-regex@npm:^3.0.0": 2703 | version: 3.0.0 2704 | resolution: "shebang-regex@npm:3.0.0" 2705 | checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 2706 | languageName: node 2707 | linkType: hard 2708 | 2709 | "signal-exit@npm:^4.0.1": 2710 | version: 4.1.0 2711 | resolution: "signal-exit@npm:4.1.0" 2712 | checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 2713 | languageName: node 2714 | linkType: hard 2715 | 2716 | "smart-buffer@npm:^4.2.0": 2717 | version: 4.2.0 2718 | resolution: "smart-buffer@npm:4.2.0" 2719 | checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 2720 | languageName: node 2721 | linkType: hard 2722 | 2723 | "socks-proxy-agent@npm:^8.0.3": 2724 | version: 8.0.4 2725 | resolution: "socks-proxy-agent@npm:8.0.4" 2726 | dependencies: 2727 | agent-base: "npm:^7.1.1" 2728 | debug: "npm:^4.3.4" 2729 | socks: "npm:^2.8.3" 2730 | checksum: 10c0/345593bb21b95b0508e63e703c84da11549f0a2657d6b4e3ee3612c312cb3a907eac10e53b23ede3557c6601d63252103494caa306b66560f43af7b98f53957a 2731 | languageName: node 2732 | linkType: hard 2733 | 2734 | "socks@npm:^2.8.3": 2735 | version: 2.8.3 2736 | resolution: "socks@npm:2.8.3" 2737 | dependencies: 2738 | ip-address: "npm:^9.0.5" 2739 | smart-buffer: "npm:^4.2.0" 2740 | checksum: 10c0/d54a52bf9325165770b674a67241143a3d8b4e4c8884560c4e0e078aace2a728dffc7f70150660f51b85797c4e1a3b82f9b7aa25e0a0ceae1a243365da5c51a7 2741 | languageName: node 2742 | linkType: hard 2743 | 2744 | "source-map-js@npm:^1.2.1": 2745 | version: 1.2.1 2746 | resolution: "source-map-js@npm:1.2.1" 2747 | checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf 2748 | languageName: node 2749 | linkType: hard 2750 | 2751 | "sprintf-js@npm:^1.1.3": 2752 | version: 1.1.3 2753 | resolution: "sprintf-js@npm:1.1.3" 2754 | checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec 2755 | languageName: node 2756 | linkType: hard 2757 | 2758 | "ssri@npm:^10.0.0": 2759 | version: 10.0.6 2760 | resolution: "ssri@npm:10.0.6" 2761 | dependencies: 2762 | minipass: "npm:^7.0.3" 2763 | checksum: 10c0/e5a1e23a4057a86a97971465418f22ea89bd439ac36ade88812dd920e4e61873e8abd6a9b72a03a67ef50faa00a2daf1ab745c5a15b46d03e0544a0296354227 2764 | languageName: node 2765 | linkType: hard 2766 | 2767 | "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": 2768 | version: 4.2.3 2769 | resolution: "string-width@npm:4.2.3" 2770 | dependencies: 2771 | emoji-regex: "npm:^8.0.0" 2772 | is-fullwidth-code-point: "npm:^3.0.0" 2773 | strip-ansi: "npm:^6.0.1" 2774 | checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b 2775 | languageName: node 2776 | linkType: hard 2777 | 2778 | "string-width@npm:^5.0.1, string-width@npm:^5.1.2": 2779 | version: 5.1.2 2780 | resolution: "string-width@npm:5.1.2" 2781 | dependencies: 2782 | eastasianwidth: "npm:^0.2.0" 2783 | emoji-regex: "npm:^9.2.2" 2784 | strip-ansi: "npm:^7.0.1" 2785 | checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca 2786 | languageName: node 2787 | linkType: hard 2788 | 2789 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": 2790 | version: 6.0.1 2791 | resolution: "strip-ansi@npm:6.0.1" 2792 | dependencies: 2793 | ansi-regex: "npm:^5.0.1" 2794 | checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 2795 | languageName: node 2796 | linkType: hard 2797 | 2798 | "strip-ansi@npm:^7.0.1": 2799 | version: 7.1.0 2800 | resolution: "strip-ansi@npm:7.1.0" 2801 | dependencies: 2802 | ansi-regex: "npm:^6.0.1" 2803 | checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 2804 | languageName: node 2805 | linkType: hard 2806 | 2807 | "strip-json-comments@npm:^3.1.1": 2808 | version: 3.1.1 2809 | resolution: "strip-json-comments@npm:3.1.1" 2810 | checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd 2811 | languageName: node 2812 | linkType: hard 2813 | 2814 | "supports-color@npm:^5.3.0": 2815 | version: 5.5.0 2816 | resolution: "supports-color@npm:5.5.0" 2817 | dependencies: 2818 | has-flag: "npm:^3.0.0" 2819 | checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 2820 | languageName: node 2821 | linkType: hard 2822 | 2823 | "supports-color@npm:^7.1.0": 2824 | version: 7.2.0 2825 | resolution: "supports-color@npm:7.2.0" 2826 | dependencies: 2827 | has-flag: "npm:^4.0.0" 2828 | checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 2829 | languageName: node 2830 | linkType: hard 2831 | 2832 | "tar@npm:^6.1.11, tar@npm:^6.2.1": 2833 | version: 6.2.1 2834 | resolution: "tar@npm:6.2.1" 2835 | dependencies: 2836 | chownr: "npm:^2.0.0" 2837 | fs-minipass: "npm:^2.0.0" 2838 | minipass: "npm:^5.0.0" 2839 | minizlib: "npm:^2.1.1" 2840 | mkdirp: "npm:^1.0.3" 2841 | yallist: "npm:^4.0.0" 2842 | checksum: 10c0/a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 2843 | languageName: node 2844 | linkType: hard 2845 | 2846 | "text-table@npm:^0.2.0": 2847 | version: 0.2.0 2848 | resolution: "text-table@npm:0.2.0" 2849 | checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c 2850 | languageName: node 2851 | linkType: hard 2852 | 2853 | "three@npm:^0.169.0": 2854 | version: 0.169.0 2855 | resolution: "three@npm:0.169.0" 2856 | checksum: 10c0/be2e20f45eaa50489cd22d366c41fa14528f00b873078f52fc6ef37140fa8e541e9805630bbe696ab9b027530c74e5cd341705266eb268b5219402fb9fa78ed4 2857 | languageName: node 2858 | linkType: hard 2859 | 2860 | "to-fast-properties@npm:^2.0.0": 2861 | version: 2.0.0 2862 | resolution: "to-fast-properties@npm:2.0.0" 2863 | checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 2864 | languageName: node 2865 | linkType: hard 2866 | 2867 | "to-regex-range@npm:^5.0.1": 2868 | version: 5.0.1 2869 | resolution: "to-regex-range@npm:5.0.1" 2870 | dependencies: 2871 | is-number: "npm:^7.0.0" 2872 | checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 2873 | languageName: node 2874 | linkType: hard 2875 | 2876 | "ts-api-utils@npm:^1.3.0": 2877 | version: 1.3.0 2878 | resolution: "ts-api-utils@npm:1.3.0" 2879 | peerDependencies: 2880 | typescript: ">=4.2.0" 2881 | checksum: 10c0/f54a0ba9ed56ce66baea90a3fa087a484002e807f28a8ccb2d070c75e76bde64bd0f6dce98b3802834156306050871b67eec325cb4e918015a360a3f0868c77c 2882 | languageName: node 2883 | linkType: hard 2884 | 2885 | "type-check@npm:^0.4.0, type-check@npm:~0.4.0": 2886 | version: 0.4.0 2887 | resolution: "type-check@npm:0.4.0" 2888 | dependencies: 2889 | prelude-ls: "npm:^1.2.1" 2890 | checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 2891 | languageName: node 2892 | linkType: hard 2893 | 2894 | "typescript-eslint@npm:^8.7.0": 2895 | version: 8.9.0 2896 | resolution: "typescript-eslint@npm:8.9.0" 2897 | dependencies: 2898 | "@typescript-eslint/eslint-plugin": "npm:8.9.0" 2899 | "@typescript-eslint/parser": "npm:8.9.0" 2900 | "@typescript-eslint/utils": "npm:8.9.0" 2901 | peerDependenciesMeta: 2902 | typescript: 2903 | optional: true 2904 | checksum: 10c0/96bef4f5d1da9561078fa234642cfa2d024979917b8282b82f63956789bc566bdd5806ff2b414697f3dfdee314e9c9fec05911a7502550d763a496e2ef3af2fd 2905 | languageName: node 2906 | linkType: hard 2907 | 2908 | "typescript@npm:^5.5.3": 2909 | version: 5.6.3 2910 | resolution: "typescript@npm:5.6.3" 2911 | bin: 2912 | tsc: bin/tsc 2913 | tsserver: bin/tsserver 2914 | checksum: 10c0/44f61d3fb15c35359bc60399cb8127c30bae554cd555b8e2b46d68fa79d680354b83320ad419ff1b81a0bdf324197b29affe6cc28988cd6a74d4ac60c94f9799 2915 | languageName: node 2916 | linkType: hard 2917 | 2918 | "typescript@patch:typescript@npm%3A^5.5.3#optional!builtin": 2919 | version: 5.6.3 2920 | resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin::version=5.6.3&hash=74658d" 2921 | bin: 2922 | tsc: bin/tsc 2923 | tsserver: bin/tsserver 2924 | checksum: 10c0/ac8307bb06bbfd08ae7137da740769b7d8c3ee5943188743bb622c621f8ad61d244767480f90fbd840277fbf152d8932aa20c33f867dea1bb5e79b187ca1a92f 2925 | languageName: node 2926 | linkType: hard 2927 | 2928 | "unique-filename@npm:^3.0.0": 2929 | version: 3.0.0 2930 | resolution: "unique-filename@npm:3.0.0" 2931 | dependencies: 2932 | unique-slug: "npm:^4.0.0" 2933 | checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f 2934 | languageName: node 2935 | linkType: hard 2936 | 2937 | "unique-slug@npm:^4.0.0": 2938 | version: 4.0.0 2939 | resolution: "unique-slug@npm:4.0.0" 2940 | dependencies: 2941 | imurmurhash: "npm:^0.1.4" 2942 | checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 2943 | languageName: node 2944 | linkType: hard 2945 | 2946 | "update-browserslist-db@npm:^1.1.0": 2947 | version: 1.1.1 2948 | resolution: "update-browserslist-db@npm:1.1.1" 2949 | dependencies: 2950 | escalade: "npm:^3.2.0" 2951 | picocolors: "npm:^1.1.0" 2952 | peerDependencies: 2953 | browserslist: ">= 4.21.0" 2954 | bin: 2955 | update-browserslist-db: cli.js 2956 | checksum: 10c0/536a2979adda2b4be81b07e311bd2f3ad5e978690987956bc5f514130ad50cac87cd22c710b686d79731e00fbee8ef43efe5fcd72baa241045209195d43dcc80 2957 | languageName: node 2958 | linkType: hard 2959 | 2960 | "uri-js@npm:^4.2.2": 2961 | version: 4.4.1 2962 | resolution: "uri-js@npm:4.4.1" 2963 | dependencies: 2964 | punycode: "npm:^2.1.0" 2965 | checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c 2966 | languageName: node 2967 | linkType: hard 2968 | 2969 | "vite@npm:^5.4.8": 2970 | version: 5.4.9 2971 | resolution: "vite@npm:5.4.9" 2972 | dependencies: 2973 | esbuild: "npm:^0.21.3" 2974 | fsevents: "npm:~2.3.3" 2975 | postcss: "npm:^8.4.43" 2976 | rollup: "npm:^4.20.0" 2977 | peerDependencies: 2978 | "@types/node": ^18.0.0 || >=20.0.0 2979 | less: "*" 2980 | lightningcss: ^1.21.0 2981 | sass: "*" 2982 | sass-embedded: "*" 2983 | stylus: "*" 2984 | sugarss: "*" 2985 | terser: ^5.4.0 2986 | dependenciesMeta: 2987 | fsevents: 2988 | optional: true 2989 | peerDependenciesMeta: 2990 | "@types/node": 2991 | optional: true 2992 | less: 2993 | optional: true 2994 | lightningcss: 2995 | optional: true 2996 | sass: 2997 | optional: true 2998 | sass-embedded: 2999 | optional: true 3000 | stylus: 3001 | optional: true 3002 | sugarss: 3003 | optional: true 3004 | terser: 3005 | optional: true 3006 | bin: 3007 | vite: bin/vite.js 3008 | checksum: 10c0/e9c59f2c639047e37c79bbbb151c7a55a3dc27932957cf4cf0447ee0bdcc1ddfd9b1fb3ba0465371c01ba3616d62561327855794c2d652213c3a10a32e6d369d 3009 | languageName: node 3010 | linkType: hard 3011 | 3012 | "which@npm:^2.0.1": 3013 | version: 2.0.2 3014 | resolution: "which@npm:2.0.2" 3015 | dependencies: 3016 | isexe: "npm:^2.0.0" 3017 | bin: 3018 | node-which: ./bin/node-which 3019 | checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f 3020 | languageName: node 3021 | linkType: hard 3022 | 3023 | "which@npm:^4.0.0": 3024 | version: 4.0.0 3025 | resolution: "which@npm:4.0.0" 3026 | dependencies: 3027 | isexe: "npm:^3.1.1" 3028 | bin: 3029 | node-which: bin/which.js 3030 | checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a 3031 | languageName: node 3032 | linkType: hard 3033 | 3034 | "word-wrap@npm:^1.2.5": 3035 | version: 1.2.5 3036 | resolution: "word-wrap@npm:1.2.5" 3037 | checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 3038 | languageName: node 3039 | linkType: hard 3040 | 3041 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": 3042 | version: 7.0.0 3043 | resolution: "wrap-ansi@npm:7.0.0" 3044 | dependencies: 3045 | ansi-styles: "npm:^4.0.0" 3046 | string-width: "npm:^4.1.0" 3047 | strip-ansi: "npm:^6.0.0" 3048 | checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da 3049 | languageName: node 3050 | linkType: hard 3051 | 3052 | "wrap-ansi@npm:^8.1.0": 3053 | version: 8.1.0 3054 | resolution: "wrap-ansi@npm:8.1.0" 3055 | dependencies: 3056 | ansi-styles: "npm:^6.1.0" 3057 | string-width: "npm:^5.0.1" 3058 | strip-ansi: "npm:^7.0.1" 3059 | checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 3060 | languageName: node 3061 | linkType: hard 3062 | 3063 | "yallist@npm:^3.0.2": 3064 | version: 3.1.1 3065 | resolution: "yallist@npm:3.1.1" 3066 | checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 3067 | languageName: node 3068 | linkType: hard 3069 | 3070 | "yallist@npm:^4.0.0": 3071 | version: 4.0.0 3072 | resolution: "yallist@npm:4.0.0" 3073 | checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a 3074 | languageName: node 3075 | linkType: hard 3076 | 3077 | "yocto-queue@npm:^0.1.0": 3078 | version: 0.1.0 3079 | resolution: "yocto-queue@npm:0.1.0" 3080 | checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f 3081 | languageName: node 3082 | linkType: hard 3083 | --------------------------------------------------------------------------------