├── .gitignore ├── LICENSE.md ├── README.md ├── index.ts ├── package-lock.json ├── package.json ├── src └── Starfield.tsx ├── tsconfig.json └── tsup.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 - Jay Simons 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Starfield Simulation Component 2 | 3 | This React component simulates a starfield, creating a visual representation of stars moving towards the viewer, similar to what you might see while traveling through space at high speeds. 4 | 5 | ## Features 6 | 7 | - Dynamic generation of stars. 8 | - Configurable star count, color, speed, and background. 9 | - Responsive design that adapts to different screen sizes. 10 | - Customizable blend mode for creative visual effects. 11 | 12 | ## Installation 13 | 14 | `npm i react-starfield@latest` 15 | 16 | ## Usage 17 | 18 | You can use the Starfield component in your React application like any standard component. Import the `Starfield` into your component and include it in your render method or return statement. 19 | 20 | ```jsx 21 | import Starfield from 'react-starfield'; 22 | 23 | function App() { 24 | return ( 25 |
26 | 32 | {/* Other components */} 33 |
34 | ); 35 | } 36 | 37 | export default App; 38 | ``` 39 | 40 | ### Props 41 | 42 | | Prop | Type | Default | Description | 43 | | ---------------- | ------------------- | -------------- | ------------------------------------------------- | 44 | | `starCount` | `number` | `5000` | Number of stars to be rendered. | 45 | | `starColor` | `[number, number, number]` | `[255, 255, 255]` | RGB color of the stars. | 46 | | `speedFactor` | `number` | `0.05` | Speed at which stars move towards the viewer. | 47 | | `backgroundColor`| `string` | `'black'` | Background color of the starfield. | 48 | 49 | ## Contributing 50 | 51 | Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make to the `Starfield` project are **greatly appreciated**. 52 | 53 | To contribute to `Starfield`, follow these steps: 54 | 55 | 1. Fork the repository. 56 | 2. Create a branch: `git checkout -b `. 57 | 3. Make your changes and commit them: `git commit -m ''`. 58 | 4. Push to the original branch: `git push origin /`. 59 | 5. Create the pull request. 60 | 61 | Alternatively, see the GitHub documentation on [creating a pull request](https://help.github.com/articles/creating-a-pull-request/). 62 | 63 | Please ensure you update tests as appropriate and adhere to the existing coding standards. 64 | 65 | ### Code of Conduct 66 | 67 | Our Code of Conduct ensures that all contributors can participate in a healthy and respectful environment. By participating, you agree to abide by its terms. 68 | 69 | ### Questions or Concerns? 70 | 71 | If you have any questions or concerns, please open an issue in the repository, or contact the project maintainers directly. Thank you! 72 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | import Starfield from "@/Starfield"; 2 | 3 | export default Starfield; 4 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-starfield", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "react-starfield", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "@types/node": "^20.8.10", 13 | "@types/react": "^18.2.35", 14 | "@types/react-dom": "^18.2.14", 15 | "tsup": "^7.2.0", 16 | "typescript": "^5.2.2" 17 | }, 18 | "peerDependencies": { 19 | "next": ">=13.4", 20 | "react": ">=17.0.0" 21 | } 22 | }, 23 | "node_modules/@esbuild/android-arm": { 24 | "version": "0.18.20", 25 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", 26 | "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", 27 | "cpu": [ 28 | "arm" 29 | ], 30 | "dev": true, 31 | "optional": true, 32 | "os": [ 33 | "android" 34 | ], 35 | "engines": { 36 | "node": ">=12" 37 | } 38 | }, 39 | "node_modules/@esbuild/android-arm64": { 40 | "version": "0.18.20", 41 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", 42 | "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", 43 | "cpu": [ 44 | "arm64" 45 | ], 46 | "dev": true, 47 | "optional": true, 48 | "os": [ 49 | "android" 50 | ], 51 | "engines": { 52 | "node": ">=12" 53 | } 54 | }, 55 | "node_modules/@esbuild/android-x64": { 56 | "version": "0.18.20", 57 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", 58 | "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", 59 | "cpu": [ 60 | "x64" 61 | ], 62 | "dev": true, 63 | "optional": true, 64 | "os": [ 65 | "android" 66 | ], 67 | "engines": { 68 | "node": ">=12" 69 | } 70 | }, 71 | "node_modules/@esbuild/darwin-arm64": { 72 | "version": "0.18.20", 73 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", 74 | "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", 75 | "cpu": [ 76 | "arm64" 77 | ], 78 | "dev": true, 79 | "optional": true, 80 | "os": [ 81 | "darwin" 82 | ], 83 | "engines": { 84 | "node": ">=12" 85 | } 86 | }, 87 | "node_modules/@esbuild/darwin-x64": { 88 | "version": "0.18.20", 89 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", 90 | "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", 91 | "cpu": [ 92 | "x64" 93 | ], 94 | "dev": true, 95 | "optional": true, 96 | "os": [ 97 | "darwin" 98 | ], 99 | "engines": { 100 | "node": ">=12" 101 | } 102 | }, 103 | "node_modules/@esbuild/freebsd-arm64": { 104 | "version": "0.18.20", 105 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", 106 | "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", 107 | "cpu": [ 108 | "arm64" 109 | ], 110 | "dev": true, 111 | "optional": true, 112 | "os": [ 113 | "freebsd" 114 | ], 115 | "engines": { 116 | "node": ">=12" 117 | } 118 | }, 119 | "node_modules/@esbuild/freebsd-x64": { 120 | "version": "0.18.20", 121 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", 122 | "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", 123 | "cpu": [ 124 | "x64" 125 | ], 126 | "dev": true, 127 | "optional": true, 128 | "os": [ 129 | "freebsd" 130 | ], 131 | "engines": { 132 | "node": ">=12" 133 | } 134 | }, 135 | "node_modules/@esbuild/linux-arm": { 136 | "version": "0.18.20", 137 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", 138 | "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", 139 | "cpu": [ 140 | "arm" 141 | ], 142 | "dev": true, 143 | "optional": true, 144 | "os": [ 145 | "linux" 146 | ], 147 | "engines": { 148 | "node": ">=12" 149 | } 150 | }, 151 | "node_modules/@esbuild/linux-arm64": { 152 | "version": "0.18.20", 153 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", 154 | "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", 155 | "cpu": [ 156 | "arm64" 157 | ], 158 | "dev": true, 159 | "optional": true, 160 | "os": [ 161 | "linux" 162 | ], 163 | "engines": { 164 | "node": ">=12" 165 | } 166 | }, 167 | "node_modules/@esbuild/linux-ia32": { 168 | "version": "0.18.20", 169 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", 170 | "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", 171 | "cpu": [ 172 | "ia32" 173 | ], 174 | "dev": true, 175 | "optional": true, 176 | "os": [ 177 | "linux" 178 | ], 179 | "engines": { 180 | "node": ">=12" 181 | } 182 | }, 183 | "node_modules/@esbuild/linux-loong64": { 184 | "version": "0.18.20", 185 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", 186 | "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", 187 | "cpu": [ 188 | "loong64" 189 | ], 190 | "dev": true, 191 | "optional": true, 192 | "os": [ 193 | "linux" 194 | ], 195 | "engines": { 196 | "node": ">=12" 197 | } 198 | }, 199 | "node_modules/@esbuild/linux-mips64el": { 200 | "version": "0.18.20", 201 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", 202 | "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", 203 | "cpu": [ 204 | "mips64el" 205 | ], 206 | "dev": true, 207 | "optional": true, 208 | "os": [ 209 | "linux" 210 | ], 211 | "engines": { 212 | "node": ">=12" 213 | } 214 | }, 215 | "node_modules/@esbuild/linux-ppc64": { 216 | "version": "0.18.20", 217 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", 218 | "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", 219 | "cpu": [ 220 | "ppc64" 221 | ], 222 | "dev": true, 223 | "optional": true, 224 | "os": [ 225 | "linux" 226 | ], 227 | "engines": { 228 | "node": ">=12" 229 | } 230 | }, 231 | "node_modules/@esbuild/linux-riscv64": { 232 | "version": "0.18.20", 233 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", 234 | "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", 235 | "cpu": [ 236 | "riscv64" 237 | ], 238 | "dev": true, 239 | "optional": true, 240 | "os": [ 241 | "linux" 242 | ], 243 | "engines": { 244 | "node": ">=12" 245 | } 246 | }, 247 | "node_modules/@esbuild/linux-s390x": { 248 | "version": "0.18.20", 249 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", 250 | "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", 251 | "cpu": [ 252 | "s390x" 253 | ], 254 | "dev": true, 255 | "optional": true, 256 | "os": [ 257 | "linux" 258 | ], 259 | "engines": { 260 | "node": ">=12" 261 | } 262 | }, 263 | "node_modules/@esbuild/linux-x64": { 264 | "version": "0.18.20", 265 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", 266 | "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", 267 | "cpu": [ 268 | "x64" 269 | ], 270 | "dev": true, 271 | "optional": true, 272 | "os": [ 273 | "linux" 274 | ], 275 | "engines": { 276 | "node": ">=12" 277 | } 278 | }, 279 | "node_modules/@esbuild/netbsd-x64": { 280 | "version": "0.18.20", 281 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", 282 | "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", 283 | "cpu": [ 284 | "x64" 285 | ], 286 | "dev": true, 287 | "optional": true, 288 | "os": [ 289 | "netbsd" 290 | ], 291 | "engines": { 292 | "node": ">=12" 293 | } 294 | }, 295 | "node_modules/@esbuild/openbsd-x64": { 296 | "version": "0.18.20", 297 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", 298 | "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", 299 | "cpu": [ 300 | "x64" 301 | ], 302 | "dev": true, 303 | "optional": true, 304 | "os": [ 305 | "openbsd" 306 | ], 307 | "engines": { 308 | "node": ">=12" 309 | } 310 | }, 311 | "node_modules/@esbuild/sunos-x64": { 312 | "version": "0.18.20", 313 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", 314 | "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", 315 | "cpu": [ 316 | "x64" 317 | ], 318 | "dev": true, 319 | "optional": true, 320 | "os": [ 321 | "sunos" 322 | ], 323 | "engines": { 324 | "node": ">=12" 325 | } 326 | }, 327 | "node_modules/@esbuild/win32-arm64": { 328 | "version": "0.18.20", 329 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", 330 | "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", 331 | "cpu": [ 332 | "arm64" 333 | ], 334 | "dev": true, 335 | "optional": true, 336 | "os": [ 337 | "win32" 338 | ], 339 | "engines": { 340 | "node": ">=12" 341 | } 342 | }, 343 | "node_modules/@esbuild/win32-ia32": { 344 | "version": "0.18.20", 345 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", 346 | "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", 347 | "cpu": [ 348 | "ia32" 349 | ], 350 | "dev": true, 351 | "optional": true, 352 | "os": [ 353 | "win32" 354 | ], 355 | "engines": { 356 | "node": ">=12" 357 | } 358 | }, 359 | "node_modules/@esbuild/win32-x64": { 360 | "version": "0.18.20", 361 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", 362 | "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", 363 | "cpu": [ 364 | "x64" 365 | ], 366 | "dev": true, 367 | "optional": true, 368 | "os": [ 369 | "win32" 370 | ], 371 | "engines": { 372 | "node": ">=12" 373 | } 374 | }, 375 | "node_modules/@jridgewell/gen-mapping": { 376 | "version": "0.3.3", 377 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", 378 | "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", 379 | "dev": true, 380 | "dependencies": { 381 | "@jridgewell/set-array": "^1.0.1", 382 | "@jridgewell/sourcemap-codec": "^1.4.10", 383 | "@jridgewell/trace-mapping": "^0.3.9" 384 | }, 385 | "engines": { 386 | "node": ">=6.0.0" 387 | } 388 | }, 389 | "node_modules/@jridgewell/resolve-uri": { 390 | "version": "3.1.1", 391 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", 392 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", 393 | "dev": true, 394 | "engines": { 395 | "node": ">=6.0.0" 396 | } 397 | }, 398 | "node_modules/@jridgewell/set-array": { 399 | "version": "1.1.2", 400 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 401 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 402 | "dev": true, 403 | "engines": { 404 | "node": ">=6.0.0" 405 | } 406 | }, 407 | "node_modules/@jridgewell/sourcemap-codec": { 408 | "version": "1.4.15", 409 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 410 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 411 | "dev": true 412 | }, 413 | "node_modules/@jridgewell/trace-mapping": { 414 | "version": "0.3.20", 415 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", 416 | "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", 417 | "dev": true, 418 | "dependencies": { 419 | "@jridgewell/resolve-uri": "^3.1.0", 420 | "@jridgewell/sourcemap-codec": "^1.4.14" 421 | } 422 | }, 423 | "node_modules/@next/env": { 424 | "version": "14.0.1", 425 | "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.1.tgz", 426 | "integrity": "sha512-Ms8ZswqY65/YfcjrlcIwMPD7Rg/dVjdLapMcSHG26W6O67EJDF435ShW4H4LXi1xKO1oRc97tLXUpx8jpLe86A==", 427 | "peer": true 428 | }, 429 | "node_modules/@next/swc-darwin-arm64": { 430 | "version": "14.0.1", 431 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.1.tgz", 432 | "integrity": "sha512-JyxnGCS4qT67hdOKQ0CkgFTp+PXub5W1wsGvIq98TNbF3YEIN7iDekYhYsZzc8Ov0pWEsghQt+tANdidITCLaw==", 433 | "cpu": [ 434 | "arm64" 435 | ], 436 | "optional": true, 437 | "os": [ 438 | "darwin" 439 | ], 440 | "peer": true, 441 | "engines": { 442 | "node": ">= 10" 443 | } 444 | }, 445 | "node_modules/@next/swc-darwin-x64": { 446 | "version": "14.0.1", 447 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.1.tgz", 448 | "integrity": "sha512-625Z7bb5AyIzswF9hvfZWa+HTwFZw+Jn3lOBNZB87lUS0iuCYDHqk3ujuHCkiyPtSC0xFBtYDLcrZ11mF/ap3w==", 449 | "cpu": [ 450 | "x64" 451 | ], 452 | "optional": true, 453 | "os": [ 454 | "darwin" 455 | ], 456 | "peer": true, 457 | "engines": { 458 | "node": ">= 10" 459 | } 460 | }, 461 | "node_modules/@next/swc-linux-arm64-gnu": { 462 | "version": "14.0.1", 463 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.1.tgz", 464 | "integrity": "sha512-iVpn3KG3DprFXzVHM09kvb//4CNNXBQ9NB/pTm8LO+vnnnaObnzFdS5KM+w1okwa32xH0g8EvZIhoB3fI3mS1g==", 465 | "cpu": [ 466 | "arm64" 467 | ], 468 | "optional": true, 469 | "os": [ 470 | "linux" 471 | ], 472 | "peer": true, 473 | "engines": { 474 | "node": ">= 10" 475 | } 476 | }, 477 | "node_modules/@next/swc-linux-arm64-musl": { 478 | "version": "14.0.1", 479 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.1.tgz", 480 | "integrity": "sha512-mVsGyMxTLWZXyD5sen6kGOTYVOO67lZjLApIj/JsTEEohDDt1im2nkspzfV5MvhfS7diDw6Rp/xvAQaWZTv1Ww==", 481 | "cpu": [ 482 | "arm64" 483 | ], 484 | "optional": true, 485 | "os": [ 486 | "linux" 487 | ], 488 | "peer": true, 489 | "engines": { 490 | "node": ">= 10" 491 | } 492 | }, 493 | "node_modules/@next/swc-linux-x64-gnu": { 494 | "version": "14.0.1", 495 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.1.tgz", 496 | "integrity": "sha512-wMqf90uDWN001NqCM/auRl3+qVVeKfjJdT9XW+RMIOf+rhUzadmYJu++tp2y+hUbb6GTRhT+VjQzcgg/QTD9NQ==", 497 | "cpu": [ 498 | "x64" 499 | ], 500 | "optional": true, 501 | "os": [ 502 | "linux" 503 | ], 504 | "peer": true, 505 | "engines": { 506 | "node": ">= 10" 507 | } 508 | }, 509 | "node_modules/@next/swc-linux-x64-musl": { 510 | "version": "14.0.1", 511 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.1.tgz", 512 | "integrity": "sha512-ol1X1e24w4j4QwdeNjfX0f+Nza25n+ymY0T2frTyalVczUmzkVD7QGgPTZMHfR1aLrO69hBs0G3QBYaj22J5GQ==", 513 | "cpu": [ 514 | "x64" 515 | ], 516 | "optional": true, 517 | "os": [ 518 | "linux" 519 | ], 520 | "peer": true, 521 | "engines": { 522 | "node": ">= 10" 523 | } 524 | }, 525 | "node_modules/@next/swc-win32-arm64-msvc": { 526 | "version": "14.0.1", 527 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.1.tgz", 528 | "integrity": "sha512-WEmTEeWs6yRUEnUlahTgvZteh5RJc4sEjCQIodJlZZ5/VJwVP8p2L7l6VhzQhT4h7KvLx/Ed4UViBdne6zpIsw==", 529 | "cpu": [ 530 | "arm64" 531 | ], 532 | "optional": true, 533 | "os": [ 534 | "win32" 535 | ], 536 | "peer": true, 537 | "engines": { 538 | "node": ">= 10" 539 | } 540 | }, 541 | "node_modules/@next/swc-win32-ia32-msvc": { 542 | "version": "14.0.1", 543 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.1.tgz", 544 | "integrity": "sha512-oFpHphN4ygAgZUKjzga7SoH2VGbEJXZa/KL8bHCAwCjDWle6R1SpiGOdUdA8EJ9YsG1TYWpzY6FTbUA+iAJeww==", 545 | "cpu": [ 546 | "ia32" 547 | ], 548 | "optional": true, 549 | "os": [ 550 | "win32" 551 | ], 552 | "peer": true, 553 | "engines": { 554 | "node": ">= 10" 555 | } 556 | }, 557 | "node_modules/@next/swc-win32-x64-msvc": { 558 | "version": "14.0.1", 559 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.1.tgz", 560 | "integrity": "sha512-FFp3nOJ/5qSpeWT0BZQ+YE1pSMk4IMpkME/1DwKBwhg4mJLB9L+6EXuJi4JEwaJdl5iN+UUlmUD3IsR1kx5fAg==", 561 | "cpu": [ 562 | "x64" 563 | ], 564 | "optional": true, 565 | "os": [ 566 | "win32" 567 | ], 568 | "peer": true, 569 | "engines": { 570 | "node": ">= 10" 571 | } 572 | }, 573 | "node_modules/@nodelib/fs.scandir": { 574 | "version": "2.1.5", 575 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 576 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 577 | "dev": true, 578 | "dependencies": { 579 | "@nodelib/fs.stat": "2.0.5", 580 | "run-parallel": "^1.1.9" 581 | }, 582 | "engines": { 583 | "node": ">= 8" 584 | } 585 | }, 586 | "node_modules/@nodelib/fs.stat": { 587 | "version": "2.0.5", 588 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 589 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 590 | "dev": true, 591 | "engines": { 592 | "node": ">= 8" 593 | } 594 | }, 595 | "node_modules/@nodelib/fs.walk": { 596 | "version": "1.2.8", 597 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 598 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 599 | "dev": true, 600 | "dependencies": { 601 | "@nodelib/fs.scandir": "2.1.5", 602 | "fastq": "^1.6.0" 603 | }, 604 | "engines": { 605 | "node": ">= 8" 606 | } 607 | }, 608 | "node_modules/@swc/helpers": { 609 | "version": "0.5.2", 610 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", 611 | "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", 612 | "peer": true, 613 | "dependencies": { 614 | "tslib": "^2.4.0" 615 | } 616 | }, 617 | "node_modules/@types/node": { 618 | "version": "20.8.10", 619 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz", 620 | "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==", 621 | "dev": true, 622 | "dependencies": { 623 | "undici-types": "~5.26.4" 624 | } 625 | }, 626 | "node_modules/@types/prop-types": { 627 | "version": "15.7.9", 628 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz", 629 | "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==", 630 | "dev": true 631 | }, 632 | "node_modules/@types/react": { 633 | "version": "18.2.35", 634 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.35.tgz", 635 | "integrity": "sha512-LG3xpFZ++rTndV+/XFyX5vUP7NI9yxyk+MQvBDq+CVs8I9DLSc3Ymwb1Vmw5YDoeNeHN4PDZa3HylMKJYT9PNQ==", 636 | "dev": true, 637 | "dependencies": { 638 | "@types/prop-types": "*", 639 | "@types/scheduler": "*", 640 | "csstype": "^3.0.2" 641 | } 642 | }, 643 | "node_modules/@types/react-dom": { 644 | "version": "18.2.14", 645 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.14.tgz", 646 | "integrity": "sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==", 647 | "dev": true, 648 | "dependencies": { 649 | "@types/react": "*" 650 | } 651 | }, 652 | "node_modules/@types/scheduler": { 653 | "version": "0.16.5", 654 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.5.tgz", 655 | "integrity": "sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==", 656 | "dev": true 657 | }, 658 | "node_modules/any-promise": { 659 | "version": "1.3.0", 660 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 661 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", 662 | "dev": true 663 | }, 664 | "node_modules/anymatch": { 665 | "version": "3.1.3", 666 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 667 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 668 | "dev": true, 669 | "dependencies": { 670 | "normalize-path": "^3.0.0", 671 | "picomatch": "^2.0.4" 672 | }, 673 | "engines": { 674 | "node": ">= 8" 675 | } 676 | }, 677 | "node_modules/array-union": { 678 | "version": "2.1.0", 679 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 680 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 681 | "dev": true, 682 | "engines": { 683 | "node": ">=8" 684 | } 685 | }, 686 | "node_modules/balanced-match": { 687 | "version": "1.0.2", 688 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 689 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 690 | "dev": true 691 | }, 692 | "node_modules/binary-extensions": { 693 | "version": "2.2.0", 694 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 695 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 696 | "dev": true, 697 | "engines": { 698 | "node": ">=8" 699 | } 700 | }, 701 | "node_modules/brace-expansion": { 702 | "version": "1.1.11", 703 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 704 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 705 | "dev": true, 706 | "dependencies": { 707 | "balanced-match": "^1.0.0", 708 | "concat-map": "0.0.1" 709 | } 710 | }, 711 | "node_modules/braces": { 712 | "version": "3.0.2", 713 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 714 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 715 | "dev": true, 716 | "dependencies": { 717 | "fill-range": "^7.0.1" 718 | }, 719 | "engines": { 720 | "node": ">=8" 721 | } 722 | }, 723 | "node_modules/bundle-require": { 724 | "version": "4.0.2", 725 | "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.2.tgz", 726 | "integrity": "sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==", 727 | "dev": true, 728 | "dependencies": { 729 | "load-tsconfig": "^0.2.3" 730 | }, 731 | "engines": { 732 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 733 | }, 734 | "peerDependencies": { 735 | "esbuild": ">=0.17" 736 | } 737 | }, 738 | "node_modules/busboy": { 739 | "version": "1.6.0", 740 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 741 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 742 | "peer": true, 743 | "dependencies": { 744 | "streamsearch": "^1.1.0" 745 | }, 746 | "engines": { 747 | "node": ">=10.16.0" 748 | } 749 | }, 750 | "node_modules/cac": { 751 | "version": "6.7.14", 752 | "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", 753 | "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", 754 | "dev": true, 755 | "engines": { 756 | "node": ">=8" 757 | } 758 | }, 759 | "node_modules/caniuse-lite": { 760 | "version": "1.0.30001561", 761 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", 762 | "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==", 763 | "funding": [ 764 | { 765 | "type": "opencollective", 766 | "url": "https://opencollective.com/browserslist" 767 | }, 768 | { 769 | "type": "tidelift", 770 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 771 | }, 772 | { 773 | "type": "github", 774 | "url": "https://github.com/sponsors/ai" 775 | } 776 | ], 777 | "peer": true 778 | }, 779 | "node_modules/chokidar": { 780 | "version": "3.5.3", 781 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 782 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 783 | "dev": true, 784 | "funding": [ 785 | { 786 | "type": "individual", 787 | "url": "https://paulmillr.com/funding/" 788 | } 789 | ], 790 | "dependencies": { 791 | "anymatch": "~3.1.2", 792 | "braces": "~3.0.2", 793 | "glob-parent": "~5.1.2", 794 | "is-binary-path": "~2.1.0", 795 | "is-glob": "~4.0.1", 796 | "normalize-path": "~3.0.0", 797 | "readdirp": "~3.6.0" 798 | }, 799 | "engines": { 800 | "node": ">= 8.10.0" 801 | }, 802 | "optionalDependencies": { 803 | "fsevents": "~2.3.2" 804 | } 805 | }, 806 | "node_modules/client-only": { 807 | "version": "0.0.1", 808 | "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", 809 | "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", 810 | "peer": true 811 | }, 812 | "node_modules/commander": { 813 | "version": "4.1.1", 814 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", 815 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", 816 | "dev": true, 817 | "engines": { 818 | "node": ">= 6" 819 | } 820 | }, 821 | "node_modules/concat-map": { 822 | "version": "0.0.1", 823 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 824 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 825 | "dev": true 826 | }, 827 | "node_modules/cross-spawn": { 828 | "version": "7.0.3", 829 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 830 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 831 | "dev": true, 832 | "dependencies": { 833 | "path-key": "^3.1.0", 834 | "shebang-command": "^2.0.0", 835 | "which": "^2.0.1" 836 | }, 837 | "engines": { 838 | "node": ">= 8" 839 | } 840 | }, 841 | "node_modules/csstype": { 842 | "version": "3.1.2", 843 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", 844 | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", 845 | "dev": true 846 | }, 847 | "node_modules/debug": { 848 | "version": "4.3.4", 849 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 850 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 851 | "dev": true, 852 | "dependencies": { 853 | "ms": "2.1.2" 854 | }, 855 | "engines": { 856 | "node": ">=6.0" 857 | }, 858 | "peerDependenciesMeta": { 859 | "supports-color": { 860 | "optional": true 861 | } 862 | } 863 | }, 864 | "node_modules/dir-glob": { 865 | "version": "3.0.1", 866 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 867 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 868 | "dev": true, 869 | "dependencies": { 870 | "path-type": "^4.0.0" 871 | }, 872 | "engines": { 873 | "node": ">=8" 874 | } 875 | }, 876 | "node_modules/esbuild": { 877 | "version": "0.18.20", 878 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", 879 | "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", 880 | "dev": true, 881 | "hasInstallScript": true, 882 | "bin": { 883 | "esbuild": "bin/esbuild" 884 | }, 885 | "engines": { 886 | "node": ">=12" 887 | }, 888 | "optionalDependencies": { 889 | "@esbuild/android-arm": "0.18.20", 890 | "@esbuild/android-arm64": "0.18.20", 891 | "@esbuild/android-x64": "0.18.20", 892 | "@esbuild/darwin-arm64": "0.18.20", 893 | "@esbuild/darwin-x64": "0.18.20", 894 | "@esbuild/freebsd-arm64": "0.18.20", 895 | "@esbuild/freebsd-x64": "0.18.20", 896 | "@esbuild/linux-arm": "0.18.20", 897 | "@esbuild/linux-arm64": "0.18.20", 898 | "@esbuild/linux-ia32": "0.18.20", 899 | "@esbuild/linux-loong64": "0.18.20", 900 | "@esbuild/linux-mips64el": "0.18.20", 901 | "@esbuild/linux-ppc64": "0.18.20", 902 | "@esbuild/linux-riscv64": "0.18.20", 903 | "@esbuild/linux-s390x": "0.18.20", 904 | "@esbuild/linux-x64": "0.18.20", 905 | "@esbuild/netbsd-x64": "0.18.20", 906 | "@esbuild/openbsd-x64": "0.18.20", 907 | "@esbuild/sunos-x64": "0.18.20", 908 | "@esbuild/win32-arm64": "0.18.20", 909 | "@esbuild/win32-ia32": "0.18.20", 910 | "@esbuild/win32-x64": "0.18.20" 911 | } 912 | }, 913 | "node_modules/execa": { 914 | "version": "5.1.1", 915 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 916 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 917 | "dev": true, 918 | "dependencies": { 919 | "cross-spawn": "^7.0.3", 920 | "get-stream": "^6.0.0", 921 | "human-signals": "^2.1.0", 922 | "is-stream": "^2.0.0", 923 | "merge-stream": "^2.0.0", 924 | "npm-run-path": "^4.0.1", 925 | "onetime": "^5.1.2", 926 | "signal-exit": "^3.0.3", 927 | "strip-final-newline": "^2.0.0" 928 | }, 929 | "engines": { 930 | "node": ">=10" 931 | }, 932 | "funding": { 933 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 934 | } 935 | }, 936 | "node_modules/fast-glob": { 937 | "version": "3.3.1", 938 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", 939 | "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", 940 | "dev": true, 941 | "dependencies": { 942 | "@nodelib/fs.stat": "^2.0.2", 943 | "@nodelib/fs.walk": "^1.2.3", 944 | "glob-parent": "^5.1.2", 945 | "merge2": "^1.3.0", 946 | "micromatch": "^4.0.4" 947 | }, 948 | "engines": { 949 | "node": ">=8.6.0" 950 | } 951 | }, 952 | "node_modules/fastq": { 953 | "version": "1.15.0", 954 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 955 | "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 956 | "dev": true, 957 | "dependencies": { 958 | "reusify": "^1.0.4" 959 | } 960 | }, 961 | "node_modules/fill-range": { 962 | "version": "7.0.1", 963 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 964 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 965 | "dev": true, 966 | "dependencies": { 967 | "to-regex-range": "^5.0.1" 968 | }, 969 | "engines": { 970 | "node": ">=8" 971 | } 972 | }, 973 | "node_modules/fs.realpath": { 974 | "version": "1.0.0", 975 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 976 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 977 | "dev": true 978 | }, 979 | "node_modules/fsevents": { 980 | "version": "2.3.3", 981 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 982 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 983 | "dev": true, 984 | "hasInstallScript": true, 985 | "optional": true, 986 | "os": [ 987 | "darwin" 988 | ], 989 | "engines": { 990 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 991 | } 992 | }, 993 | "node_modules/get-stream": { 994 | "version": "6.0.1", 995 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 996 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 997 | "dev": true, 998 | "engines": { 999 | "node": ">=10" 1000 | }, 1001 | "funding": { 1002 | "url": "https://github.com/sponsors/sindresorhus" 1003 | } 1004 | }, 1005 | "node_modules/glob": { 1006 | "version": "7.1.6", 1007 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1008 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1009 | "dev": true, 1010 | "dependencies": { 1011 | "fs.realpath": "^1.0.0", 1012 | "inflight": "^1.0.4", 1013 | "inherits": "2", 1014 | "minimatch": "^3.0.4", 1015 | "once": "^1.3.0", 1016 | "path-is-absolute": "^1.0.0" 1017 | }, 1018 | "engines": { 1019 | "node": "*" 1020 | }, 1021 | "funding": { 1022 | "url": "https://github.com/sponsors/isaacs" 1023 | } 1024 | }, 1025 | "node_modules/glob-parent": { 1026 | "version": "5.1.2", 1027 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1028 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1029 | "dev": true, 1030 | "dependencies": { 1031 | "is-glob": "^4.0.1" 1032 | }, 1033 | "engines": { 1034 | "node": ">= 6" 1035 | } 1036 | }, 1037 | "node_modules/glob-to-regexp": { 1038 | "version": "0.4.1", 1039 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 1040 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 1041 | "peer": true 1042 | }, 1043 | "node_modules/globby": { 1044 | "version": "11.1.0", 1045 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1046 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1047 | "dev": true, 1048 | "dependencies": { 1049 | "array-union": "^2.1.0", 1050 | "dir-glob": "^3.0.1", 1051 | "fast-glob": "^3.2.9", 1052 | "ignore": "^5.2.0", 1053 | "merge2": "^1.4.1", 1054 | "slash": "^3.0.0" 1055 | }, 1056 | "engines": { 1057 | "node": ">=10" 1058 | }, 1059 | "funding": { 1060 | "url": "https://github.com/sponsors/sindresorhus" 1061 | } 1062 | }, 1063 | "node_modules/graceful-fs": { 1064 | "version": "4.2.11", 1065 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1066 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1067 | "peer": true 1068 | }, 1069 | "node_modules/human-signals": { 1070 | "version": "2.1.0", 1071 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 1072 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 1073 | "dev": true, 1074 | "engines": { 1075 | "node": ">=10.17.0" 1076 | } 1077 | }, 1078 | "node_modules/ignore": { 1079 | "version": "5.2.4", 1080 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", 1081 | "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", 1082 | "dev": true, 1083 | "engines": { 1084 | "node": ">= 4" 1085 | } 1086 | }, 1087 | "node_modules/inflight": { 1088 | "version": "1.0.6", 1089 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1090 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1091 | "dev": true, 1092 | "dependencies": { 1093 | "once": "^1.3.0", 1094 | "wrappy": "1" 1095 | } 1096 | }, 1097 | "node_modules/inherits": { 1098 | "version": "2.0.4", 1099 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1100 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1101 | "dev": true 1102 | }, 1103 | "node_modules/is-binary-path": { 1104 | "version": "2.1.0", 1105 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1106 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1107 | "dev": true, 1108 | "dependencies": { 1109 | "binary-extensions": "^2.0.0" 1110 | }, 1111 | "engines": { 1112 | "node": ">=8" 1113 | } 1114 | }, 1115 | "node_modules/is-extglob": { 1116 | "version": "2.1.1", 1117 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1118 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1119 | "dev": true, 1120 | "engines": { 1121 | "node": ">=0.10.0" 1122 | } 1123 | }, 1124 | "node_modules/is-glob": { 1125 | "version": "4.0.3", 1126 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1127 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1128 | "dev": true, 1129 | "dependencies": { 1130 | "is-extglob": "^2.1.1" 1131 | }, 1132 | "engines": { 1133 | "node": ">=0.10.0" 1134 | } 1135 | }, 1136 | "node_modules/is-number": { 1137 | "version": "7.0.0", 1138 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1139 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1140 | "dev": true, 1141 | "engines": { 1142 | "node": ">=0.12.0" 1143 | } 1144 | }, 1145 | "node_modules/is-stream": { 1146 | "version": "2.0.1", 1147 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 1148 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 1149 | "dev": true, 1150 | "engines": { 1151 | "node": ">=8" 1152 | }, 1153 | "funding": { 1154 | "url": "https://github.com/sponsors/sindresorhus" 1155 | } 1156 | }, 1157 | "node_modules/isexe": { 1158 | "version": "2.0.0", 1159 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1160 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1161 | "dev": true 1162 | }, 1163 | "node_modules/joycon": { 1164 | "version": "3.1.1", 1165 | "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", 1166 | "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", 1167 | "dev": true, 1168 | "engines": { 1169 | "node": ">=10" 1170 | } 1171 | }, 1172 | "node_modules/js-tokens": { 1173 | "version": "4.0.0", 1174 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1175 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1176 | "peer": true 1177 | }, 1178 | "node_modules/lilconfig": { 1179 | "version": "2.1.0", 1180 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", 1181 | "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", 1182 | "dev": true, 1183 | "engines": { 1184 | "node": ">=10" 1185 | } 1186 | }, 1187 | "node_modules/lines-and-columns": { 1188 | "version": "1.2.4", 1189 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 1190 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 1191 | "dev": true 1192 | }, 1193 | "node_modules/load-tsconfig": { 1194 | "version": "0.2.5", 1195 | "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", 1196 | "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", 1197 | "dev": true, 1198 | "engines": { 1199 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1200 | } 1201 | }, 1202 | "node_modules/lodash.sortby": { 1203 | "version": "4.7.0", 1204 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", 1205 | "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", 1206 | "dev": true 1207 | }, 1208 | "node_modules/loose-envify": { 1209 | "version": "1.4.0", 1210 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1211 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1212 | "peer": true, 1213 | "dependencies": { 1214 | "js-tokens": "^3.0.0 || ^4.0.0" 1215 | }, 1216 | "bin": { 1217 | "loose-envify": "cli.js" 1218 | } 1219 | }, 1220 | "node_modules/merge-stream": { 1221 | "version": "2.0.0", 1222 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1223 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1224 | "dev": true 1225 | }, 1226 | "node_modules/merge2": { 1227 | "version": "1.4.1", 1228 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1229 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1230 | "dev": true, 1231 | "engines": { 1232 | "node": ">= 8" 1233 | } 1234 | }, 1235 | "node_modules/micromatch": { 1236 | "version": "4.0.5", 1237 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1238 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1239 | "dev": true, 1240 | "dependencies": { 1241 | "braces": "^3.0.2", 1242 | "picomatch": "^2.3.1" 1243 | }, 1244 | "engines": { 1245 | "node": ">=8.6" 1246 | } 1247 | }, 1248 | "node_modules/mimic-fn": { 1249 | "version": "2.1.0", 1250 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1251 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1252 | "dev": true, 1253 | "engines": { 1254 | "node": ">=6" 1255 | } 1256 | }, 1257 | "node_modules/minimatch": { 1258 | "version": "3.1.2", 1259 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1260 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1261 | "dev": true, 1262 | "dependencies": { 1263 | "brace-expansion": "^1.1.7" 1264 | }, 1265 | "engines": { 1266 | "node": "*" 1267 | } 1268 | }, 1269 | "node_modules/ms": { 1270 | "version": "2.1.2", 1271 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1272 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1273 | "dev": true 1274 | }, 1275 | "node_modules/mz": { 1276 | "version": "2.7.0", 1277 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", 1278 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", 1279 | "dev": true, 1280 | "dependencies": { 1281 | "any-promise": "^1.0.0", 1282 | "object-assign": "^4.0.1", 1283 | "thenify-all": "^1.0.0" 1284 | } 1285 | }, 1286 | "node_modules/nanoid": { 1287 | "version": "3.3.6", 1288 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 1289 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 1290 | "funding": [ 1291 | { 1292 | "type": "github", 1293 | "url": "https://github.com/sponsors/ai" 1294 | } 1295 | ], 1296 | "peer": true, 1297 | "bin": { 1298 | "nanoid": "bin/nanoid.cjs" 1299 | }, 1300 | "engines": { 1301 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1302 | } 1303 | }, 1304 | "node_modules/next": { 1305 | "version": "14.0.1", 1306 | "resolved": "https://registry.npmjs.org/next/-/next-14.0.1.tgz", 1307 | "integrity": "sha512-s4YaLpE4b0gmb3ggtmpmV+wt+lPRuGtANzojMQ2+gmBpgX9w5fTbjsy6dXByBuENsdCX5pukZH/GxdFgO62+pA==", 1308 | "peer": true, 1309 | "dependencies": { 1310 | "@next/env": "14.0.1", 1311 | "@swc/helpers": "0.5.2", 1312 | "busboy": "1.6.0", 1313 | "caniuse-lite": "^1.0.30001406", 1314 | "postcss": "8.4.31", 1315 | "styled-jsx": "5.1.1", 1316 | "watchpack": "2.4.0" 1317 | }, 1318 | "bin": { 1319 | "next": "dist/bin/next" 1320 | }, 1321 | "engines": { 1322 | "node": ">=18.17.0" 1323 | }, 1324 | "optionalDependencies": { 1325 | "@next/swc-darwin-arm64": "14.0.1", 1326 | "@next/swc-darwin-x64": "14.0.1", 1327 | "@next/swc-linux-arm64-gnu": "14.0.1", 1328 | "@next/swc-linux-arm64-musl": "14.0.1", 1329 | "@next/swc-linux-x64-gnu": "14.0.1", 1330 | "@next/swc-linux-x64-musl": "14.0.1", 1331 | "@next/swc-win32-arm64-msvc": "14.0.1", 1332 | "@next/swc-win32-ia32-msvc": "14.0.1", 1333 | "@next/swc-win32-x64-msvc": "14.0.1" 1334 | }, 1335 | "peerDependencies": { 1336 | "@opentelemetry/api": "^1.1.0", 1337 | "react": "^18.2.0", 1338 | "react-dom": "^18.2.0", 1339 | "sass": "^1.3.0" 1340 | }, 1341 | "peerDependenciesMeta": { 1342 | "@opentelemetry/api": { 1343 | "optional": true 1344 | }, 1345 | "sass": { 1346 | "optional": true 1347 | } 1348 | } 1349 | }, 1350 | "node_modules/normalize-path": { 1351 | "version": "3.0.0", 1352 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1353 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1354 | "dev": true, 1355 | "engines": { 1356 | "node": ">=0.10.0" 1357 | } 1358 | }, 1359 | "node_modules/npm-run-path": { 1360 | "version": "4.0.1", 1361 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 1362 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 1363 | "dev": true, 1364 | "dependencies": { 1365 | "path-key": "^3.0.0" 1366 | }, 1367 | "engines": { 1368 | "node": ">=8" 1369 | } 1370 | }, 1371 | "node_modules/object-assign": { 1372 | "version": "4.1.1", 1373 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1374 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1375 | "dev": true, 1376 | "engines": { 1377 | "node": ">=0.10.0" 1378 | } 1379 | }, 1380 | "node_modules/once": { 1381 | "version": "1.4.0", 1382 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1383 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1384 | "dev": true, 1385 | "dependencies": { 1386 | "wrappy": "1" 1387 | } 1388 | }, 1389 | "node_modules/onetime": { 1390 | "version": "5.1.2", 1391 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1392 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1393 | "dev": true, 1394 | "dependencies": { 1395 | "mimic-fn": "^2.1.0" 1396 | }, 1397 | "engines": { 1398 | "node": ">=6" 1399 | }, 1400 | "funding": { 1401 | "url": "https://github.com/sponsors/sindresorhus" 1402 | } 1403 | }, 1404 | "node_modules/path-is-absolute": { 1405 | "version": "1.0.1", 1406 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1407 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1408 | "dev": true, 1409 | "engines": { 1410 | "node": ">=0.10.0" 1411 | } 1412 | }, 1413 | "node_modules/path-key": { 1414 | "version": "3.1.1", 1415 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1416 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1417 | "dev": true, 1418 | "engines": { 1419 | "node": ">=8" 1420 | } 1421 | }, 1422 | "node_modules/path-type": { 1423 | "version": "4.0.0", 1424 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1425 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1426 | "dev": true, 1427 | "engines": { 1428 | "node": ">=8" 1429 | } 1430 | }, 1431 | "node_modules/picocolors": { 1432 | "version": "1.0.0", 1433 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1434 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1435 | "peer": true 1436 | }, 1437 | "node_modules/picomatch": { 1438 | "version": "2.3.1", 1439 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1440 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1441 | "dev": true, 1442 | "engines": { 1443 | "node": ">=8.6" 1444 | }, 1445 | "funding": { 1446 | "url": "https://github.com/sponsors/jonschlinkert" 1447 | } 1448 | }, 1449 | "node_modules/pirates": { 1450 | "version": "4.0.6", 1451 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", 1452 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", 1453 | "dev": true, 1454 | "engines": { 1455 | "node": ">= 6" 1456 | } 1457 | }, 1458 | "node_modules/postcss": { 1459 | "version": "8.4.31", 1460 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", 1461 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", 1462 | "funding": [ 1463 | { 1464 | "type": "opencollective", 1465 | "url": "https://opencollective.com/postcss/" 1466 | }, 1467 | { 1468 | "type": "tidelift", 1469 | "url": "https://tidelift.com/funding/github/npm/postcss" 1470 | }, 1471 | { 1472 | "type": "github", 1473 | "url": "https://github.com/sponsors/ai" 1474 | } 1475 | ], 1476 | "peer": true, 1477 | "dependencies": { 1478 | "nanoid": "^3.3.6", 1479 | "picocolors": "^1.0.0", 1480 | "source-map-js": "^1.0.2" 1481 | }, 1482 | "engines": { 1483 | "node": "^10 || ^12 || >=14" 1484 | } 1485 | }, 1486 | "node_modules/postcss-load-config": { 1487 | "version": "4.0.1", 1488 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", 1489 | "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", 1490 | "dev": true, 1491 | "dependencies": { 1492 | "lilconfig": "^2.0.5", 1493 | "yaml": "^2.1.1" 1494 | }, 1495 | "engines": { 1496 | "node": ">= 14" 1497 | }, 1498 | "funding": { 1499 | "type": "opencollective", 1500 | "url": "https://opencollective.com/postcss/" 1501 | }, 1502 | "peerDependencies": { 1503 | "postcss": ">=8.0.9", 1504 | "ts-node": ">=9.0.0" 1505 | }, 1506 | "peerDependenciesMeta": { 1507 | "postcss": { 1508 | "optional": true 1509 | }, 1510 | "ts-node": { 1511 | "optional": true 1512 | } 1513 | } 1514 | }, 1515 | "node_modules/punycode": { 1516 | "version": "2.3.1", 1517 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 1518 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 1519 | "dev": true, 1520 | "engines": { 1521 | "node": ">=6" 1522 | } 1523 | }, 1524 | "node_modules/queue-microtask": { 1525 | "version": "1.2.3", 1526 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1527 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1528 | "dev": true, 1529 | "funding": [ 1530 | { 1531 | "type": "github", 1532 | "url": "https://github.com/sponsors/feross" 1533 | }, 1534 | { 1535 | "type": "patreon", 1536 | "url": "https://www.patreon.com/feross" 1537 | }, 1538 | { 1539 | "type": "consulting", 1540 | "url": "https://feross.org/support" 1541 | } 1542 | ] 1543 | }, 1544 | "node_modules/react": { 1545 | "version": "18.2.0", 1546 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 1547 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 1548 | "peer": true, 1549 | "dependencies": { 1550 | "loose-envify": "^1.1.0" 1551 | }, 1552 | "engines": { 1553 | "node": ">=0.10.0" 1554 | } 1555 | }, 1556 | "node_modules/react-dom": { 1557 | "version": "18.2.0", 1558 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 1559 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 1560 | "peer": true, 1561 | "dependencies": { 1562 | "loose-envify": "^1.1.0", 1563 | "scheduler": "^0.23.0" 1564 | }, 1565 | "peerDependencies": { 1566 | "react": "^18.2.0" 1567 | } 1568 | }, 1569 | "node_modules/readdirp": { 1570 | "version": "3.6.0", 1571 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1572 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1573 | "dev": true, 1574 | "dependencies": { 1575 | "picomatch": "^2.2.1" 1576 | }, 1577 | "engines": { 1578 | "node": ">=8.10.0" 1579 | } 1580 | }, 1581 | "node_modules/resolve-from": { 1582 | "version": "5.0.0", 1583 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 1584 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 1585 | "dev": true, 1586 | "engines": { 1587 | "node": ">=8" 1588 | } 1589 | }, 1590 | "node_modules/reusify": { 1591 | "version": "1.0.4", 1592 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1593 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1594 | "dev": true, 1595 | "engines": { 1596 | "iojs": ">=1.0.0", 1597 | "node": ">=0.10.0" 1598 | } 1599 | }, 1600 | "node_modules/rollup": { 1601 | "version": "3.29.4", 1602 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", 1603 | "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", 1604 | "dev": true, 1605 | "bin": { 1606 | "rollup": "dist/bin/rollup" 1607 | }, 1608 | "engines": { 1609 | "node": ">=14.18.0", 1610 | "npm": ">=8.0.0" 1611 | }, 1612 | "optionalDependencies": { 1613 | "fsevents": "~2.3.2" 1614 | } 1615 | }, 1616 | "node_modules/run-parallel": { 1617 | "version": "1.2.0", 1618 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1619 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1620 | "dev": true, 1621 | "funding": [ 1622 | { 1623 | "type": "github", 1624 | "url": "https://github.com/sponsors/feross" 1625 | }, 1626 | { 1627 | "type": "patreon", 1628 | "url": "https://www.patreon.com/feross" 1629 | }, 1630 | { 1631 | "type": "consulting", 1632 | "url": "https://feross.org/support" 1633 | } 1634 | ], 1635 | "dependencies": { 1636 | "queue-microtask": "^1.2.2" 1637 | } 1638 | }, 1639 | "node_modules/scheduler": { 1640 | "version": "0.23.0", 1641 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 1642 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 1643 | "peer": true, 1644 | "dependencies": { 1645 | "loose-envify": "^1.1.0" 1646 | } 1647 | }, 1648 | "node_modules/shebang-command": { 1649 | "version": "2.0.0", 1650 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1651 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1652 | "dev": true, 1653 | "dependencies": { 1654 | "shebang-regex": "^3.0.0" 1655 | }, 1656 | "engines": { 1657 | "node": ">=8" 1658 | } 1659 | }, 1660 | "node_modules/shebang-regex": { 1661 | "version": "3.0.0", 1662 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1663 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1664 | "dev": true, 1665 | "engines": { 1666 | "node": ">=8" 1667 | } 1668 | }, 1669 | "node_modules/signal-exit": { 1670 | "version": "3.0.7", 1671 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1672 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 1673 | "dev": true 1674 | }, 1675 | "node_modules/slash": { 1676 | "version": "3.0.0", 1677 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 1678 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 1679 | "dev": true, 1680 | "engines": { 1681 | "node": ">=8" 1682 | } 1683 | }, 1684 | "node_modules/source-map": { 1685 | "version": "0.8.0-beta.0", 1686 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", 1687 | "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", 1688 | "dev": true, 1689 | "dependencies": { 1690 | "whatwg-url": "^7.0.0" 1691 | }, 1692 | "engines": { 1693 | "node": ">= 8" 1694 | } 1695 | }, 1696 | "node_modules/source-map-js": { 1697 | "version": "1.0.2", 1698 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1699 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1700 | "peer": true, 1701 | "engines": { 1702 | "node": ">=0.10.0" 1703 | } 1704 | }, 1705 | "node_modules/streamsearch": { 1706 | "version": "1.1.0", 1707 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 1708 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", 1709 | "peer": true, 1710 | "engines": { 1711 | "node": ">=10.0.0" 1712 | } 1713 | }, 1714 | "node_modules/strip-final-newline": { 1715 | "version": "2.0.0", 1716 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 1717 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 1718 | "dev": true, 1719 | "engines": { 1720 | "node": ">=6" 1721 | } 1722 | }, 1723 | "node_modules/styled-jsx": { 1724 | "version": "5.1.1", 1725 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", 1726 | "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", 1727 | "peer": true, 1728 | "dependencies": { 1729 | "client-only": "0.0.1" 1730 | }, 1731 | "engines": { 1732 | "node": ">= 12.0.0" 1733 | }, 1734 | "peerDependencies": { 1735 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" 1736 | }, 1737 | "peerDependenciesMeta": { 1738 | "@babel/core": { 1739 | "optional": true 1740 | }, 1741 | "babel-plugin-macros": { 1742 | "optional": true 1743 | } 1744 | } 1745 | }, 1746 | "node_modules/sucrase": { 1747 | "version": "3.34.0", 1748 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", 1749 | "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", 1750 | "dev": true, 1751 | "dependencies": { 1752 | "@jridgewell/gen-mapping": "^0.3.2", 1753 | "commander": "^4.0.0", 1754 | "glob": "7.1.6", 1755 | "lines-and-columns": "^1.1.6", 1756 | "mz": "^2.7.0", 1757 | "pirates": "^4.0.1", 1758 | "ts-interface-checker": "^0.1.9" 1759 | }, 1760 | "bin": { 1761 | "sucrase": "bin/sucrase", 1762 | "sucrase-node": "bin/sucrase-node" 1763 | }, 1764 | "engines": { 1765 | "node": ">=8" 1766 | } 1767 | }, 1768 | "node_modules/thenify": { 1769 | "version": "3.3.1", 1770 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", 1771 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", 1772 | "dev": true, 1773 | "dependencies": { 1774 | "any-promise": "^1.0.0" 1775 | } 1776 | }, 1777 | "node_modules/thenify-all": { 1778 | "version": "1.6.0", 1779 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", 1780 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", 1781 | "dev": true, 1782 | "dependencies": { 1783 | "thenify": ">= 3.1.0 < 4" 1784 | }, 1785 | "engines": { 1786 | "node": ">=0.8" 1787 | } 1788 | }, 1789 | "node_modules/to-regex-range": { 1790 | "version": "5.0.1", 1791 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1792 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1793 | "dev": true, 1794 | "dependencies": { 1795 | "is-number": "^7.0.0" 1796 | }, 1797 | "engines": { 1798 | "node": ">=8.0" 1799 | } 1800 | }, 1801 | "node_modules/tr46": { 1802 | "version": "1.0.1", 1803 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", 1804 | "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", 1805 | "dev": true, 1806 | "dependencies": { 1807 | "punycode": "^2.1.0" 1808 | } 1809 | }, 1810 | "node_modules/tree-kill": { 1811 | "version": "1.2.2", 1812 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", 1813 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", 1814 | "dev": true, 1815 | "bin": { 1816 | "tree-kill": "cli.js" 1817 | } 1818 | }, 1819 | "node_modules/ts-interface-checker": { 1820 | "version": "0.1.13", 1821 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", 1822 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", 1823 | "dev": true 1824 | }, 1825 | "node_modules/tslib": { 1826 | "version": "2.6.2", 1827 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 1828 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", 1829 | "peer": true 1830 | }, 1831 | "node_modules/tsup": { 1832 | "version": "7.2.0", 1833 | "resolved": "https://registry.npmjs.org/tsup/-/tsup-7.2.0.tgz", 1834 | "integrity": "sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==", 1835 | "dev": true, 1836 | "dependencies": { 1837 | "bundle-require": "^4.0.0", 1838 | "cac": "^6.7.12", 1839 | "chokidar": "^3.5.1", 1840 | "debug": "^4.3.1", 1841 | "esbuild": "^0.18.2", 1842 | "execa": "^5.0.0", 1843 | "globby": "^11.0.3", 1844 | "joycon": "^3.0.1", 1845 | "postcss-load-config": "^4.0.1", 1846 | "resolve-from": "^5.0.0", 1847 | "rollup": "^3.2.5", 1848 | "source-map": "0.8.0-beta.0", 1849 | "sucrase": "^3.20.3", 1850 | "tree-kill": "^1.2.2" 1851 | }, 1852 | "bin": { 1853 | "tsup": "dist/cli-default.js", 1854 | "tsup-node": "dist/cli-node.js" 1855 | }, 1856 | "engines": { 1857 | "node": ">=16.14" 1858 | }, 1859 | "peerDependencies": { 1860 | "@swc/core": "^1", 1861 | "postcss": "^8.4.12", 1862 | "typescript": ">=4.1.0" 1863 | }, 1864 | "peerDependenciesMeta": { 1865 | "@swc/core": { 1866 | "optional": true 1867 | }, 1868 | "postcss": { 1869 | "optional": true 1870 | }, 1871 | "typescript": { 1872 | "optional": true 1873 | } 1874 | } 1875 | }, 1876 | "node_modules/typescript": { 1877 | "version": "5.2.2", 1878 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", 1879 | "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", 1880 | "dev": true, 1881 | "bin": { 1882 | "tsc": "bin/tsc", 1883 | "tsserver": "bin/tsserver" 1884 | }, 1885 | "engines": { 1886 | "node": ">=14.17" 1887 | } 1888 | }, 1889 | "node_modules/undici-types": { 1890 | "version": "5.26.5", 1891 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 1892 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 1893 | "dev": true 1894 | }, 1895 | "node_modules/watchpack": { 1896 | "version": "2.4.0", 1897 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", 1898 | "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", 1899 | "peer": true, 1900 | "dependencies": { 1901 | "glob-to-regexp": "^0.4.1", 1902 | "graceful-fs": "^4.1.2" 1903 | }, 1904 | "engines": { 1905 | "node": ">=10.13.0" 1906 | } 1907 | }, 1908 | "node_modules/webidl-conversions": { 1909 | "version": "4.0.2", 1910 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", 1911 | "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", 1912 | "dev": true 1913 | }, 1914 | "node_modules/whatwg-url": { 1915 | "version": "7.1.0", 1916 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", 1917 | "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", 1918 | "dev": true, 1919 | "dependencies": { 1920 | "lodash.sortby": "^4.7.0", 1921 | "tr46": "^1.0.1", 1922 | "webidl-conversions": "^4.0.2" 1923 | } 1924 | }, 1925 | "node_modules/which": { 1926 | "version": "2.0.2", 1927 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1928 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1929 | "dev": true, 1930 | "dependencies": { 1931 | "isexe": "^2.0.0" 1932 | }, 1933 | "bin": { 1934 | "node-which": "bin/node-which" 1935 | }, 1936 | "engines": { 1937 | "node": ">= 8" 1938 | } 1939 | }, 1940 | "node_modules/wrappy": { 1941 | "version": "1.0.2", 1942 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1943 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1944 | "dev": true 1945 | }, 1946 | "node_modules/yaml": { 1947 | "version": "2.3.4", 1948 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", 1949 | "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", 1950 | "dev": true, 1951 | "engines": { 1952 | "node": ">= 14" 1953 | } 1954 | } 1955 | } 1956 | } 1957 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-starfield", 3 | "version": "1.0.3", 4 | "description": "A nifty little starfield component for React", 5 | "main": "dist/index.js", 6 | "types": "dist/index.d.ts", 7 | "files": [ 8 | "dist/**/*.js*", 9 | "dist/**/*.mjs*", 10 | "dist/**/*.d*" 11 | ], 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/designly1/react-starfield" 15 | }, 16 | "scripts": { 17 | "test": "echo \"Error: no test specified\" && exit 1", 18 | "build": "tsup" 19 | }, 20 | "author": { 21 | "name": "Jay Simons", 22 | "url": "https://jay.designly.biz" 23 | }, 24 | "license": "MIT", 25 | "peerDependencies": { 26 | "next": ">=13.4", 27 | "react": ">=17.0.0" 28 | }, 29 | "devDependencies": { 30 | "@types/node": "^20.8.10", 31 | "@types/react": "^18.2.35", 32 | "@types/react-dom": "^18.2.14", 33 | "tsup": "^7.2.0", 34 | "typescript": "^5.2.2" 35 | } 36 | } -------------------------------------------------------------------------------- /src/Starfield.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import React, { useEffect } from 'react'; 4 | 5 | interface Props { 6 | speedFactor?: number; 7 | backgroundColor?: string; 8 | starColor?: [number, number, number]; 9 | starCount?: number; 10 | } 11 | 12 | export default function Starfield(props: Props) { 13 | const { speedFactor = 0.05, backgroundColor = 'black', starColor = [255, 255, 255], starCount = 5000 } = props; 14 | 15 | useEffect(() => { 16 | const canvas = document.getElementById('starfield') as HTMLCanvasElement; 17 | 18 | if (canvas) { 19 | const c = canvas.getContext('2d'); 20 | 21 | if (c) { 22 | let w = window.innerWidth; 23 | let h = window.innerHeight; 24 | 25 | const setCanvasExtents = () => { 26 | canvas.width = w; 27 | canvas.height = h; 28 | }; 29 | 30 | setCanvasExtents(); 31 | 32 | window.onresize = () => { 33 | setCanvasExtents(); 34 | }; 35 | 36 | const makeStars = (count: number) => { 37 | const out = []; 38 | for (let i = 0; i < count; i++) { 39 | const s = { 40 | x: Math.random() * 1600 - 800, 41 | y: Math.random() * 900 - 450, 42 | z: Math.random() * 1000, 43 | }; 44 | out.push(s); 45 | } 46 | return out; 47 | }; 48 | 49 | let stars = makeStars(starCount); 50 | 51 | const clear = () => { 52 | c.fillStyle = backgroundColor; 53 | c.fillRect(0, 0, canvas.width, canvas.height); 54 | }; 55 | 56 | const putPixel = (x: number, y: number, brightness: number) => { 57 | const rgb = 58 | 'rgba(' + starColor[0] + ',' + starColor[1] + ',' + starColor[2] + ',' + brightness + ')'; 59 | c.fillStyle = rgb; 60 | c.fillRect(x, y, 1, 1); 61 | }; 62 | 63 | const moveStars = (distance: number) => { 64 | const count = stars.length; 65 | for (var i = 0; i < count; i++) { 66 | const s = stars[i]; 67 | s.z -= distance; 68 | while (s.z <= 1) { 69 | s.z += 1000; 70 | } 71 | } 72 | }; 73 | 74 | let prevTime: number; 75 | const init = (time: number) => { 76 | prevTime = time; 77 | requestAnimationFrame(tick); 78 | }; 79 | 80 | const tick = (time: number) => { 81 | let elapsed = time - prevTime; 82 | prevTime = time; 83 | 84 | moveStars(elapsed * speedFactor); 85 | 86 | clear(); 87 | 88 | const cx = w / 2; 89 | const cy = h / 2; 90 | 91 | const count = stars.length; 92 | for (var i = 0; i < count; i++) { 93 | const star = stars[i]; 94 | 95 | const x = cx + star.x / (star.z * 0.001); 96 | const y = cy + star.y / (star.z * 0.001); 97 | 98 | if (x < 0 || x >= w || y < 0 || y >= h) { 99 | continue; 100 | } 101 | 102 | const d = star.z / 1000.0; 103 | const b = 1 - d * d; 104 | 105 | putPixel(x, y, b); 106 | } 107 | 108 | requestAnimationFrame(tick); 109 | }; 110 | 111 | requestAnimationFrame(init); 112 | 113 | // add window resize listener: 114 | window.addEventListener('resize', function () { 115 | w = window.innerWidth; 116 | h = window.innerHeight; 117 | setCanvasExtents(); 118 | }); 119 | } else { 120 | console.error('Could not get 2d context from canvas element'); 121 | } 122 | } else { 123 | console.error('Could not find canvas element with id "starfield"'); 124 | } 125 | 126 | return () => { 127 | window.onresize = null; 128 | }; 129 | }, [starColor, backgroundColor, speedFactor, starCount]); 130 | 131 | return ( 132 | 148 | ); 149 | } 150 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | "jsx": "react-jsx", /* Specify what JSX code is generated. */ 17 | // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ 22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 26 | 27 | /* Modules */ 28 | "module": "commonjs", /* Specify what module code is generated. */ 29 | // "rootDir": "./", /* Specify the root folder within your source files. */ 30 | // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ 31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 32 | "paths": { 33 | "@/*": ["./src/*"] 34 | }, /* Specify a set of entries that re-map imports to additional lookup locations. */ 35 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 36 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 37 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 38 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 39 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 40 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ 41 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ 42 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ 43 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ 44 | // "resolveJsonModule": true, /* Enable importing .json files. */ 45 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ 46 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ 47 | 48 | /* JavaScript Support */ 49 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ 50 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 51 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 52 | 53 | /* Emit */ 54 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 55 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 56 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 57 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 58 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 59 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ 60 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 61 | // "removeComments": true, /* Disable emitting comments. */ 62 | // "noEmit": true, /* Disable emitting files from a compilation. */ 63 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 64 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ 65 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 66 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 67 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 68 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 69 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 70 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 71 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 72 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 73 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 74 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 75 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 76 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 77 | 78 | /* Interop Constraints */ 79 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 80 | // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ 81 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 82 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ 83 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 84 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ 85 | 86 | /* Type Checking */ 87 | "strict": true, /* Enable all strict type-checking options. */ 88 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 89 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 90 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 91 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 92 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 93 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 94 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 95 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 96 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 97 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 98 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 99 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 100 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 101 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 102 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 103 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 104 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 105 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 106 | 107 | /* Completeness */ 108 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 109 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { Options } from 'tsup'; 2 | export const tsup: Options = { 3 | target: 'esnext', 4 | clean: true, 5 | dts: true, 6 | entry: ['index.ts'], 7 | keepNames: true, 8 | minify: true, 9 | sourcemap: true, 10 | format: ['cjs'], 11 | banner: { 12 | js: `"use client"`, 13 | }, 14 | }; 15 | --------------------------------------------------------------------------------