My personal site cherry.computer
htmx tailwind axum askama

feat: replace Sass with modern CSS

Almost all the Sass features I was using can now be written in native
CSS. Some required restructuring the HTML a little bit to make the most
of the cascade but I think it's resulted in a more semantically correct
document. Especially happy with how I have replaced explicit 'left' and
'right' project IDs with a declarative approach using nth-child.

Getting rid of Sass (and autoprefixer/postcss which isn't really needed
these days) has massively improved build times as we no longer need to
shell out to JS.

I needed to bump esbuild to a newer version in order to support CSS
nesting, so also had to update its config file to accomodate API
changes.

cherry.computer 094e0c9e 3540a2c5

verified
+999 -1205
+2 -14
frontend/esbuild.js
··· 1 1 // @ts-check 2 2 /* eslint-env node */ 3 - const autoprefixer = require("autoprefixer"); 4 3 const browserslist = require("browserslist"); 5 4 const esbuild = require("esbuild"); 6 5 const { esbuildPluginBrowserslist } = require("esbuild-plugin-browserslist"); 7 - const { sassPlugin } = require("esbuild-sass-plugin"); 8 - const postcss = require("postcss"); 9 6 10 7 const argv = require("minimist")(process.argv.slice(2)); 11 8 ··· 15 12 bundle: true, 16 13 logLevel: "info", 17 14 plugins: [ 18 - sassPlugin({ 19 - async transform(source, _resolveDir, filePath) { 20 - // eslint-disable-next-line @typescript-eslint/ban-ts-comment 21 - // @ts-ignore postcss type definition seems to be borked 22 - const { css } = await postcss([autoprefixer]).process(source, { 23 - from: filePath, 24 - }); 25 - return css; 26 - }, 27 - }), 28 15 esbuildPluginBrowserslist(browserslist(), { printUnknownTargets: false }), 29 16 ], 30 17 }; ··· 44 31 .catch(() => process.exit(1)); 45 32 } else if (argv.serve) { 46 33 esbuild 47 - .serve({ servedir: "." }, devOptions) 34 + .context(devOptions) 35 + .then((context) => context.serve({ servedir: "." })) 48 36 .then(({ port }) => console.log(`serving at http://localhost:${port}`)); 49 37 } else { 50 38 esbuild.build(devOptions).catch(() => process.exit(1));
+68 -65
frontend/index.html
··· 13 13 <canvas class="logo-gl" id="spinningCanvas">spinning 'Ivo' text</canvas> 14 14 </div> 15 15 <h1>My projects</h1> 16 - <div class="project-container-right"> 17 - <div class="project-desc-right"> 18 - <h2 class="project-title">Age of Ark</h2> 19 - <p> 20 - A game developed in the summer of '14. Coded in Unity by me and Cale 21 - Tilford. Combined the ideas of action-y spaceship navigation with 22 - strategic base building. Happy with the overall aesthetic though it 23 - never got to a point where the gameplay design was 'good'. 24 - </p> 16 + <div class="projects"> 17 + <div class="project-container"> 18 + <div class="project-desc"> 19 + <h2 class="project-title">Age of Ark</h2> 20 + <p> 21 + A game developed in the summer of '14. Coded in Unity by me and Cale 22 + Tilford. Combined the ideas of action-y spaceship navigation with 23 + strategic base building. Happy with the overall aesthetic though it 24 + never got to a point where the gameplay design was 'good'. 25 + </p> 26 + </div> 27 + <img 28 + class="project-thumbnail" 29 + src="images/arkcity.png" 30 + alt="Blender render for Age of Ark's player ship" 31 + srcset=" 32 + images/arkcity.png, 33 + images/arkcity@2x.png 2x, 34 + images/arkcity@3x.png 3x 35 + " 36 + /> 25 37 </div> 26 - <img 27 - class="project-thumbnail" 28 - src="images/arkcity.png" 29 - alt="Blender render for Age of Ark's player ship" 30 - srcset=" 31 - images/arkcity.png, 32 - images/arkcity@2x.png 2x, 33 - images/arkcity@3x.png 3x 34 - " 35 - /> 36 - </div> 37 - <div class="project-container-left"> 38 - <div class="project-desc-left"> 39 - <h2 class="project-title">Placement at Feral</h2> 40 - <p> 41 - From 2015 - 2016, I interned at Feral Interactive, where I was able to 42 - help port a number of big-time AAA games to macOS and other platforms. 43 - </p> 38 + <div class="project-container"> 39 + <div class="project-desc"> 40 + <h2 class="project-title">Placement at Feral</h2> 41 + <p> 42 + From 2015 - 2016, I interned at Feral Interactive, where I was able 43 + to help port a number of big-time AAA games to macOS and other 44 + platforms. 45 + </p> 46 + </div> 47 + <img 48 + class="project-thumbnail" 49 + src="images/cheetah.jpg" 50 + alt="Cheetah referencing Feral's branding" 51 + srcset=" 52 + images/cheetah.jpg, 53 + images/cheetah@2x.jpg 2x, 54 + images/cheetah@3x.jpg 3x 55 + " 56 + /> 44 57 </div> 45 - <img 46 - class="project-thumbnail" 47 - src="images/cheetah.jpg" 48 - alt="Cheetah referencing Feral's branding" 49 - srcset=" 50 - images/cheetah.jpg, 51 - images/cheetah@2x.jpg 2x, 52 - images/cheetah@3x.jpg 3x 53 - " 54 - /> 55 - </div> 56 - <div class="project-container-right"> 57 - <div class="project-desc-right"> 58 - <h2 class="project-title">oivov.io</h2> 59 - <p> 60 - My own website. Really informative about how web technology works 61 - after a life of just using systems languages and low-level hacking. 62 - Maybe you've seen it somewhere before... 63 - </p> 58 + <div class="project-container"> 59 + <div class="project-desc-right"> 60 + <h2 class="project-title">oivov.io</h2> 61 + <p> 62 + My own website. Really informative about how web technology works 63 + after a life of just using systems languages and low-level hacking. 64 + Maybe you've seen it somewhere before... 65 + </p> 66 + </div> 67 + <img 68 + class="project-thumbnail" 69 + src="images/screen.png" 70 + alt="Infinitely recursive screenshots of this website" 71 + /> 64 72 </div> 65 - <img 66 - class="project-thumbnail" 67 - src="images/screen.png" 68 - alt="Infinitely recursive screenshots of this website" 69 - /> 70 - </div> 71 - <div class="project-container-left"> 72 - <div class="project-desc-left"> 73 - <h2 class="project-title">Misguided</h2> 74 - <p> 75 - Coming soon! An experimental exploration of anxiety and obsession 76 - within the cockpit of a space capsule controlled by interfacing with a 77 - simulated Apollo computer guidance system. 78 - </p> 73 + <div class="project-container"> 74 + <div class="project-desc"> 75 + <h2 class="project-title">Misguided</h2> 76 + <p> 77 + Coming soon! An experimental exploration of anxiety and obsession 78 + within the cockpit of a space capsule controlled by interfacing with 79 + a simulated Apollo computer guidance system. 80 + </p> 81 + </div> 82 + <img 83 + class="project-thumbnail" 84 + src="images/AGC.jpg" 85 + alt="A physical guidance computer which would be simulated" 86 + /> 79 87 </div> 80 - <img 81 - class="project-thumbnail" 82 - src="images/AGC.jpg" 83 - alt="A physical guidance computer which would be simulated" 84 - /> 85 88 </div> 86 89 <div class="scrobble-bar"> 87 90 <div class="bar-container" id="bar-container">
+799 -976
frontend/package-lock.json
··· 17 17 "@types/three": "^0.139.0", 18 18 "@typescript-eslint/eslint-plugin": "^5.20.0", 19 19 "@typescript-eslint/parser": "^5.20.0", 20 - "autoprefixer": "^10.4.5", 21 20 "browserslist": "^4.20.3", 22 - "esbuild": "^0.14.38", 23 - "esbuild-plugin-browserslist": "^0.4.9", 24 - "esbuild-sass-plugin": "^2.2.6", 21 + "esbuild": "^0.24.2", 22 + "esbuild-plugin-browserslist": "^0.15.0", 25 23 "eslint": "^8.14.0", 26 24 "eslint-config-prettier": "^8.5.0", 27 25 "minimist": "^1.2.6", 28 - "postcss": "^8.4.12", 29 26 "prettier": "^2.6.2", 30 27 "typescript": "^4.6.3" 31 28 } ··· 54 51 "esbuild": "^0.14.38" 55 52 } 56 53 }, 54 + "node_modules/@esbuild/aix-ppc64": { 55 + "version": "0.24.2", 56 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", 57 + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", 58 + "cpu": [ 59 + "ppc64" 60 + ], 61 + "dev": true, 62 + "license": "MIT", 63 + "optional": true, 64 + "os": [ 65 + "aix" 66 + ], 67 + "engines": { 68 + "node": ">=18" 69 + } 70 + }, 71 + "node_modules/@esbuild/android-arm": { 72 + "version": "0.24.2", 73 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", 74 + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", 75 + "cpu": [ 76 + "arm" 77 + ], 78 + "dev": true, 79 + "license": "MIT", 80 + "optional": true, 81 + "os": [ 82 + "android" 83 + ], 84 + "engines": { 85 + "node": ">=18" 86 + } 87 + }, 88 + "node_modules/@esbuild/android-arm64": { 89 + "version": "0.24.2", 90 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", 91 + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", 92 + "cpu": [ 93 + "arm64" 94 + ], 95 + "dev": true, 96 + "license": "MIT", 97 + "optional": true, 98 + "os": [ 99 + "android" 100 + ], 101 + "engines": { 102 + "node": ">=18" 103 + } 104 + }, 105 + "node_modules/@esbuild/android-x64": { 106 + "version": "0.24.2", 107 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", 108 + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", 109 + "cpu": [ 110 + "x64" 111 + ], 112 + "dev": true, 113 + "license": "MIT", 114 + "optional": true, 115 + "os": [ 116 + "android" 117 + ], 118 + "engines": { 119 + "node": ">=18" 120 + } 121 + }, 122 + "node_modules/@esbuild/darwin-arm64": { 123 + "version": "0.24.2", 124 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", 125 + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", 126 + "cpu": [ 127 + "arm64" 128 + ], 129 + "dev": true, 130 + "license": "MIT", 131 + "optional": true, 132 + "os": [ 133 + "darwin" 134 + ], 135 + "engines": { 136 + "node": ">=18" 137 + } 138 + }, 139 + "node_modules/@esbuild/darwin-x64": { 140 + "version": "0.24.2", 141 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", 142 + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", 143 + "cpu": [ 144 + "x64" 145 + ], 146 + "dev": true, 147 + "license": "MIT", 148 + "optional": true, 149 + "os": [ 150 + "darwin" 151 + ], 152 + "engines": { 153 + "node": ">=18" 154 + } 155 + }, 156 + "node_modules/@esbuild/freebsd-arm64": { 157 + "version": "0.24.2", 158 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", 159 + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", 160 + "cpu": [ 161 + "arm64" 162 + ], 163 + "dev": true, 164 + "license": "MIT", 165 + "optional": true, 166 + "os": [ 167 + "freebsd" 168 + ], 169 + "engines": { 170 + "node": ">=18" 171 + } 172 + }, 173 + "node_modules/@esbuild/freebsd-x64": { 174 + "version": "0.24.2", 175 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", 176 + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", 177 + "cpu": [ 178 + "x64" 179 + ], 180 + "dev": true, 181 + "license": "MIT", 182 + "optional": true, 183 + "os": [ 184 + "freebsd" 185 + ], 186 + "engines": { 187 + "node": ">=18" 188 + } 189 + }, 190 + "node_modules/@esbuild/linux-arm": { 191 + "version": "0.24.2", 192 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", 193 + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", 194 + "cpu": [ 195 + "arm" 196 + ], 197 + "dev": true, 198 + "license": "MIT", 199 + "optional": true, 200 + "os": [ 201 + "linux" 202 + ], 203 + "engines": { 204 + "node": ">=18" 205 + } 206 + }, 207 + "node_modules/@esbuild/linux-arm64": { 208 + "version": "0.24.2", 209 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", 210 + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", 211 + "cpu": [ 212 + "arm64" 213 + ], 214 + "dev": true, 215 + "license": "MIT", 216 + "optional": true, 217 + "os": [ 218 + "linux" 219 + ], 220 + "engines": { 221 + "node": ">=18" 222 + } 223 + }, 224 + "node_modules/@esbuild/linux-ia32": { 225 + "version": "0.24.2", 226 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", 227 + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", 228 + "cpu": [ 229 + "ia32" 230 + ], 231 + "dev": true, 232 + "license": "MIT", 233 + "optional": true, 234 + "os": [ 235 + "linux" 236 + ], 237 + "engines": { 238 + "node": ">=18" 239 + } 240 + }, 241 + "node_modules/@esbuild/linux-loong64": { 242 + "version": "0.24.2", 243 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", 244 + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", 245 + "cpu": [ 246 + "loong64" 247 + ], 248 + "dev": true, 249 + "license": "MIT", 250 + "optional": true, 251 + "os": [ 252 + "linux" 253 + ], 254 + "engines": { 255 + "node": ">=18" 256 + } 257 + }, 258 + "node_modules/@esbuild/linux-mips64el": { 259 + "version": "0.24.2", 260 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", 261 + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", 262 + "cpu": [ 263 + "mips64el" 264 + ], 265 + "dev": true, 266 + "license": "MIT", 267 + "optional": true, 268 + "os": [ 269 + "linux" 270 + ], 271 + "engines": { 272 + "node": ">=18" 273 + } 274 + }, 275 + "node_modules/@esbuild/linux-ppc64": { 276 + "version": "0.24.2", 277 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", 278 + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", 279 + "cpu": [ 280 + "ppc64" 281 + ], 282 + "dev": true, 283 + "license": "MIT", 284 + "optional": true, 285 + "os": [ 286 + "linux" 287 + ], 288 + "engines": { 289 + "node": ">=18" 290 + } 291 + }, 292 + "node_modules/@esbuild/linux-riscv64": { 293 + "version": "0.24.2", 294 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", 295 + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", 296 + "cpu": [ 297 + "riscv64" 298 + ], 299 + "dev": true, 300 + "license": "MIT", 301 + "optional": true, 302 + "os": [ 303 + "linux" 304 + ], 305 + "engines": { 306 + "node": ">=18" 307 + } 308 + }, 309 + "node_modules/@esbuild/linux-s390x": { 310 + "version": "0.24.2", 311 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", 312 + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", 313 + "cpu": [ 314 + "s390x" 315 + ], 316 + "dev": true, 317 + "license": "MIT", 318 + "optional": true, 319 + "os": [ 320 + "linux" 321 + ], 322 + "engines": { 323 + "node": ">=18" 324 + } 325 + }, 326 + "node_modules/@esbuild/linux-x64": { 327 + "version": "0.24.2", 328 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", 329 + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", 330 + "cpu": [ 331 + "x64" 332 + ], 333 + "dev": true, 334 + "license": "MIT", 335 + "optional": true, 336 + "os": [ 337 + "linux" 338 + ], 339 + "engines": { 340 + "node": ">=18" 341 + } 342 + }, 343 + "node_modules/@esbuild/netbsd-arm64": { 344 + "version": "0.24.2", 345 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", 346 + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", 347 + "cpu": [ 348 + "arm64" 349 + ], 350 + "dev": true, 351 + "license": "MIT", 352 + "optional": true, 353 + "os": [ 354 + "netbsd" 355 + ], 356 + "engines": { 357 + "node": ">=18" 358 + } 359 + }, 360 + "node_modules/@esbuild/netbsd-x64": { 361 + "version": "0.24.2", 362 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", 363 + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", 364 + "cpu": [ 365 + "x64" 366 + ], 367 + "dev": true, 368 + "license": "MIT", 369 + "optional": true, 370 + "os": [ 371 + "netbsd" 372 + ], 373 + "engines": { 374 + "node": ">=18" 375 + } 376 + }, 377 + "node_modules/@esbuild/openbsd-arm64": { 378 + "version": "0.24.2", 379 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", 380 + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", 381 + "cpu": [ 382 + "arm64" 383 + ], 384 + "dev": true, 385 + "license": "MIT", 386 + "optional": true, 387 + "os": [ 388 + "openbsd" 389 + ], 390 + "engines": { 391 + "node": ">=18" 392 + } 393 + }, 394 + "node_modules/@esbuild/openbsd-x64": { 395 + "version": "0.24.2", 396 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", 397 + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", 398 + "cpu": [ 399 + "x64" 400 + ], 401 + "dev": true, 402 + "license": "MIT", 403 + "optional": true, 404 + "os": [ 405 + "openbsd" 406 + ], 407 + "engines": { 408 + "node": ">=18" 409 + } 410 + }, 411 + "node_modules/@esbuild/sunos-x64": { 412 + "version": "0.24.2", 413 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", 414 + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", 415 + "cpu": [ 416 + "x64" 417 + ], 418 + "dev": true, 419 + "license": "MIT", 420 + "optional": true, 421 + "os": [ 422 + "sunos" 423 + ], 424 + "engines": { 425 + "node": ">=18" 426 + } 427 + }, 428 + "node_modules/@esbuild/win32-arm64": { 429 + "version": "0.24.2", 430 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", 431 + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", 432 + "cpu": [ 433 + "arm64" 434 + ], 435 + "dev": true, 436 + "license": "MIT", 437 + "optional": true, 438 + "os": [ 439 + "win32" 440 + ], 441 + "engines": { 442 + "node": ">=18" 443 + } 444 + }, 445 + "node_modules/@esbuild/win32-ia32": { 446 + "version": "0.24.2", 447 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", 448 + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", 449 + "cpu": [ 450 + "ia32" 451 + ], 452 + "dev": true, 453 + "license": "MIT", 454 + "optional": true, 455 + "os": [ 456 + "win32" 457 + ], 458 + "engines": { 459 + "node": ">=18" 460 + } 461 + }, 462 + "node_modules/@esbuild/win32-x64": { 463 + "version": "0.24.2", 464 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", 465 + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", 466 + "cpu": [ 467 + "x64" 468 + ], 469 + "dev": true, 470 + "license": "MIT", 471 + "optional": true, 472 + "os": [ 473 + "win32" 474 + ], 475 + "engines": { 476 + "node": ">=18" 477 + } 478 + }, 57 479 "node_modules/@eslint/eslintrc": { 58 480 "version": "1.2.2", 59 481 "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", ··· 418 840 "url": "https://github.com/chalk/ansi-styles?sponsor=1" 419 841 } 420 842 }, 421 - "node_modules/anymatch": { 422 - "version": "3.1.2", 423 - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 424 - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 425 - "dev": true, 426 - "dependencies": { 427 - "normalize-path": "^3.0.0", 428 - "picomatch": "^2.0.4" 429 - }, 430 - "engines": { 431 - "node": ">= 8" 432 - } 433 - }, 434 843 "node_modules/argparse": { 435 844 "version": "2.0.1", 436 845 "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", ··· 446 855 "node": ">=8" 447 856 } 448 857 }, 449 - "node_modules/autoprefixer": { 450 - "version": "10.4.5", 451 - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.5.tgz", 452 - "integrity": "sha512-Fvd8yCoA7lNX/OUllvS+aS1I7WRBclGXsepbvT8ZaPgrH24rgXpZzF0/6Hh3ZEkwg+0AES/Osd196VZmYoEFtw==", 453 - "dev": true, 454 - "funding": [ 455 - { 456 - "type": "opencollective", 457 - "url": "https://opencollective.com/postcss/" 458 - }, 459 - { 460 - "type": "tidelift", 461 - "url": "https://tidelift.com/funding/github/npm/autoprefixer" 462 - } 463 - ], 464 - "dependencies": { 465 - "browserslist": "^4.20.2", 466 - "caniuse-lite": "^1.0.30001332", 467 - "fraction.js": "^4.2.0", 468 - "normalize-range": "^0.1.2", 469 - "picocolors": "^1.0.0", 470 - "postcss-value-parser": "^4.2.0" 471 - }, 472 - "bin": { 473 - "autoprefixer": "bin/autoprefixer" 474 - }, 475 - "engines": { 476 - "node": "^10 || ^12 || >=14" 477 - }, 478 - "peerDependencies": { 479 - "postcss": "^8.1.0" 480 - } 481 - }, 482 858 "node_modules/balanced-match": { 483 859 "version": "1.0.2", 484 860 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 485 861 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 486 862 "dev": true 487 863 }, 488 - "node_modules/binary-extensions": { 489 - "version": "2.2.0", 490 - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 491 - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 492 - "dev": true, 493 - "engines": { 494 - "node": ">=8" 495 - } 496 - }, 497 864 "node_modules/brace-expansion": { 498 865 "version": "1.1.11", 499 866 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", ··· 517 884 } 518 885 }, 519 886 "node_modules/browserslist": { 520 - "version": "4.20.3", 521 - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", 522 - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", 887 + "version": "4.24.3", 888 + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", 889 + "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", 523 890 "dev": true, 524 891 "funding": [ 525 892 { ··· 529 896 { 530 897 "type": "tidelift", 531 898 "url": "https://tidelift.com/funding/github/npm/browserslist" 899 + }, 900 + { 901 + "type": "github", 902 + "url": "https://github.com/sponsors/ai" 532 903 } 533 904 ], 905 + "license": "MIT", 534 906 "dependencies": { 535 - "caniuse-lite": "^1.0.30001332", 536 - "electron-to-chromium": "^1.4.118", 537 - "escalade": "^3.1.1", 538 - "node-releases": "^2.0.3", 539 - "picocolors": "^1.0.0" 907 + "caniuse-lite": "^1.0.30001688", 908 + "electron-to-chromium": "^1.5.73", 909 + "node-releases": "^2.0.19", 910 + "update-browserslist-db": "^1.1.1" 540 911 }, 541 912 "bin": { 542 913 "browserslist": "cli.js" ··· 555 926 } 556 927 }, 557 928 "node_modules/caniuse-lite": { 558 - "version": "1.0.30001332", 559 - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", 560 - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", 929 + "version": "1.0.30001690", 930 + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", 931 + "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", 561 932 "dev": true, 562 933 "funding": [ 563 934 { ··· 567 938 { 568 939 "type": "tidelift", 569 940 "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 941 + }, 942 + { 943 + "type": "github", 944 + "url": "https://github.com/sponsors/ai" 570 945 } 571 - ] 946 + ], 947 + "license": "CC-BY-4.0" 572 948 }, 573 949 "node_modules/chalk": { 574 950 "version": "4.1.2", ··· 586 962 "url": "https://github.com/chalk/chalk?sponsor=1" 587 963 } 588 964 }, 589 - "node_modules/chokidar": { 590 - "version": "3.5.3", 591 - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 592 - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 593 - "dev": true, 594 - "funding": [ 595 - { 596 - "type": "individual", 597 - "url": "https://paulmillr.com/funding/" 598 - } 599 - ], 600 - "dependencies": { 601 - "anymatch": "~3.1.2", 602 - "braces": "~3.0.2", 603 - "glob-parent": "~5.1.2", 604 - "is-binary-path": "~2.1.0", 605 - "is-glob": "~4.0.1", 606 - "normalize-path": "~3.0.0", 607 - "readdirp": "~3.6.0" 608 - }, 609 - "engines": { 610 - "node": ">= 8.10.0" 611 - }, 612 - "optionalDependencies": { 613 - "fsevents": "~2.3.2" 614 - } 615 - }, 616 965 "node_modules/color-convert": { 617 966 "version": "2.0.1", 618 967 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", ··· 652 1001 } 653 1002 }, 654 1003 "node_modules/debug": { 655 - "version": "4.3.4", 656 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 657 - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1004 + "version": "4.4.0", 1005 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1006 + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 658 1007 "dev": true, 1008 + "license": "MIT", 659 1009 "dependencies": { 660 - "ms": "2.1.2" 1010 + "ms": "^2.1.3" 661 1011 }, 662 1012 "engines": { 663 1013 "node": ">=6.0" ··· 699 1049 } 700 1050 }, 701 1051 "node_modules/electron-to-chromium": { 702 - "version": "1.4.118", 703 - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz", 704 - "integrity": "sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w==", 705 - "dev": true 1052 + "version": "1.5.79", 1053 + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.79.tgz", 1054 + "integrity": "sha512-nYOxJNxQ9Om4EC88BE4pPoNI8xwSFf8pU/BAeOl4Hh/b/i6V4biTAzwV7pXi3ARKeoYO5JZKMIXTryXSVer5RA==", 1055 + "dev": true, 1056 + "license": "ISC" 706 1057 }, 707 1058 "node_modules/esbuild": { 708 - "version": "0.14.38", 709 - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", 710 - "integrity": "sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==", 1059 + "version": "0.24.2", 1060 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", 1061 + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", 711 1062 "dev": true, 712 1063 "hasInstallScript": true, 1064 + "license": "MIT", 713 1065 "bin": { 714 1066 "esbuild": "bin/esbuild" 715 1067 }, 716 1068 "engines": { 717 - "node": ">=12" 1069 + "node": ">=18" 718 1070 }, 719 1071 "optionalDependencies": { 720 - "esbuild-android-64": "0.14.38", 721 - "esbuild-android-arm64": "0.14.38", 722 - "esbuild-darwin-64": "0.14.38", 723 - "esbuild-darwin-arm64": "0.14.38", 724 - "esbuild-freebsd-64": "0.14.38", 725 - "esbuild-freebsd-arm64": "0.14.38", 726 - "esbuild-linux-32": "0.14.38", 727 - "esbuild-linux-64": "0.14.38", 728 - "esbuild-linux-arm": "0.14.38", 729 - "esbuild-linux-arm64": "0.14.38", 730 - "esbuild-linux-mips64le": "0.14.38", 731 - "esbuild-linux-ppc64le": "0.14.38", 732 - "esbuild-linux-riscv64": "0.14.38", 733 - "esbuild-linux-s390x": "0.14.38", 734 - "esbuild-netbsd-64": "0.14.38", 735 - "esbuild-openbsd-64": "0.14.38", 736 - "esbuild-sunos-64": "0.14.38", 737 - "esbuild-windows-32": "0.14.38", 738 - "esbuild-windows-64": "0.14.38", 739 - "esbuild-windows-arm64": "0.14.38" 740 - } 741 - }, 742 - "node_modules/esbuild-android-64": { 743 - "version": "0.14.38", 744 - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz", 745 - "integrity": "sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==", 746 - "cpu": [ 747 - "x64" 748 - ], 749 - "dev": true, 750 - "optional": true, 751 - "os": [ 752 - "android" 753 - ], 754 - "engines": { 755 - "node": ">=12" 756 - } 757 - }, 758 - "node_modules/esbuild-android-arm64": { 759 - "version": "0.14.38", 760 - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz", 761 - "integrity": "sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==", 762 - "cpu": [ 763 - "arm64" 764 - ], 765 - "dev": true, 766 - "optional": true, 767 - "os": [ 768 - "android" 769 - ], 770 - "engines": { 771 - "node": ">=12" 772 - } 773 - }, 774 - "node_modules/esbuild-darwin-64": { 775 - "version": "0.14.38", 776 - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz", 777 - "integrity": "sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==", 778 - "cpu": [ 779 - "x64" 780 - ], 781 - "dev": true, 782 - "optional": true, 783 - "os": [ 784 - "darwin" 785 - ], 786 - "engines": { 787 - "node": ">=12" 788 - } 789 - }, 790 - "node_modules/esbuild-darwin-arm64": { 791 - "version": "0.14.38", 792 - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz", 793 - "integrity": "sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==", 794 - "cpu": [ 795 - "arm64" 796 - ], 797 - "dev": true, 798 - "optional": true, 799 - "os": [ 800 - "darwin" 801 - ], 802 - "engines": { 803 - "node": ">=12" 804 - } 805 - }, 806 - "node_modules/esbuild-freebsd-64": { 807 - "version": "0.14.38", 808 - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz", 809 - "integrity": "sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==", 810 - "cpu": [ 811 - "x64" 812 - ], 813 - "dev": true, 814 - "optional": true, 815 - "os": [ 816 - "freebsd" 817 - ], 818 - "engines": { 819 - "node": ">=12" 820 - } 821 - }, 822 - "node_modules/esbuild-freebsd-arm64": { 823 - "version": "0.14.38", 824 - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz", 825 - "integrity": "sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==", 826 - "cpu": [ 827 - "arm64" 828 - ], 829 - "dev": true, 830 - "optional": true, 831 - "os": [ 832 - "freebsd" 833 - ], 834 - "engines": { 835 - "node": ">=12" 836 - } 837 - }, 838 - "node_modules/esbuild-linux-32": { 839 - "version": "0.14.38", 840 - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz", 841 - "integrity": "sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==", 842 - "cpu": [ 843 - "ia32" 844 - ], 845 - "dev": true, 846 - "optional": true, 847 - "os": [ 848 - "linux" 849 - ], 850 - "engines": { 851 - "node": ">=12" 852 - } 853 - }, 854 - "node_modules/esbuild-linux-64": { 855 - "version": "0.14.38", 856 - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz", 857 - "integrity": "sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==", 858 - "cpu": [ 859 - "x64" 860 - ], 861 - "dev": true, 862 - "optional": true, 863 - "os": [ 864 - "linux" 865 - ], 866 - "engines": { 867 - "node": ">=12" 868 - } 869 - }, 870 - "node_modules/esbuild-linux-arm": { 871 - "version": "0.14.38", 872 - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz", 873 - "integrity": "sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==", 874 - "cpu": [ 875 - "arm" 876 - ], 877 - "dev": true, 878 - "optional": true, 879 - "os": [ 880 - "linux" 881 - ], 882 - "engines": { 883 - "node": ">=12" 884 - } 885 - }, 886 - "node_modules/esbuild-linux-arm64": { 887 - "version": "0.14.38", 888 - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz", 889 - "integrity": "sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==", 890 - "cpu": [ 891 - "arm64" 892 - ], 893 - "dev": true, 894 - "optional": true, 895 - "os": [ 896 - "linux" 897 - ], 898 - "engines": { 899 - "node": ">=12" 900 - } 901 - }, 902 - "node_modules/esbuild-linux-mips64le": { 903 - "version": "0.14.38", 904 - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz", 905 - "integrity": "sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==", 906 - "cpu": [ 907 - "mips64el" 908 - ], 909 - "dev": true, 910 - "optional": true, 911 - "os": [ 912 - "linux" 913 - ], 914 - "engines": { 915 - "node": ">=12" 916 - } 917 - }, 918 - "node_modules/esbuild-linux-ppc64le": { 919 - "version": "0.14.38", 920 - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz", 921 - "integrity": "sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==", 922 - "cpu": [ 923 - "ppc64" 924 - ], 925 - "dev": true, 926 - "optional": true, 927 - "os": [ 928 - "linux" 929 - ], 930 - "engines": { 931 - "node": ">=12" 932 - } 933 - }, 934 - "node_modules/esbuild-linux-riscv64": { 935 - "version": "0.14.38", 936 - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz", 937 - "integrity": "sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==", 938 - "cpu": [ 939 - "riscv64" 940 - ], 941 - "dev": true, 942 - "optional": true, 943 - "os": [ 944 - "linux" 945 - ], 946 - "engines": { 947 - "node": ">=12" 948 - } 949 - }, 950 - "node_modules/esbuild-linux-s390x": { 951 - "version": "0.14.38", 952 - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz", 953 - "integrity": "sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==", 954 - "cpu": [ 955 - "s390x" 956 - ], 957 - "dev": true, 958 - "optional": true, 959 - "os": [ 960 - "linux" 961 - ], 962 - "engines": { 963 - "node": ">=12" 964 - } 965 - }, 966 - "node_modules/esbuild-netbsd-64": { 967 - "version": "0.14.38", 968 - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz", 969 - "integrity": "sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==", 970 - "cpu": [ 971 - "x64" 972 - ], 973 - "dev": true, 974 - "optional": true, 975 - "os": [ 976 - "netbsd" 977 - ], 978 - "engines": { 979 - "node": ">=12" 980 - } 981 - }, 982 - "node_modules/esbuild-openbsd-64": { 983 - "version": "0.14.38", 984 - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz", 985 - "integrity": "sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==", 986 - "cpu": [ 987 - "x64" 988 - ], 989 - "dev": true, 990 - "optional": true, 991 - "os": [ 992 - "openbsd" 993 - ], 994 - "engines": { 995 - "node": ">=12" 1072 + "@esbuild/aix-ppc64": "0.24.2", 1073 + "@esbuild/android-arm": "0.24.2", 1074 + "@esbuild/android-arm64": "0.24.2", 1075 + "@esbuild/android-x64": "0.24.2", 1076 + "@esbuild/darwin-arm64": "0.24.2", 1077 + "@esbuild/darwin-x64": "0.24.2", 1078 + "@esbuild/freebsd-arm64": "0.24.2", 1079 + "@esbuild/freebsd-x64": "0.24.2", 1080 + "@esbuild/linux-arm": "0.24.2", 1081 + "@esbuild/linux-arm64": "0.24.2", 1082 + "@esbuild/linux-ia32": "0.24.2", 1083 + "@esbuild/linux-loong64": "0.24.2", 1084 + "@esbuild/linux-mips64el": "0.24.2", 1085 + "@esbuild/linux-ppc64": "0.24.2", 1086 + "@esbuild/linux-riscv64": "0.24.2", 1087 + "@esbuild/linux-s390x": "0.24.2", 1088 + "@esbuild/linux-x64": "0.24.2", 1089 + "@esbuild/netbsd-arm64": "0.24.2", 1090 + "@esbuild/netbsd-x64": "0.24.2", 1091 + "@esbuild/openbsd-arm64": "0.24.2", 1092 + "@esbuild/openbsd-x64": "0.24.2", 1093 + "@esbuild/sunos-x64": "0.24.2", 1094 + "@esbuild/win32-arm64": "0.24.2", 1095 + "@esbuild/win32-ia32": "0.24.2", 1096 + "@esbuild/win32-x64": "0.24.2" 996 1097 } 997 1098 }, 998 1099 "node_modules/esbuild-plugin-browserslist": { 999 - "version": "0.4.9", 1000 - "resolved": "https://registry.npmjs.org/esbuild-plugin-browserslist/-/esbuild-plugin-browserslist-0.4.9.tgz", 1001 - "integrity": "sha512-PMB9eVoAvilMR+VzorCFusuO4jDYaqWE8jFePWFQ27oyL1hrTYQo39CBA0cv5AHh9cgGAWpFR7AzCTw9crq+DA==", 1100 + "version": "0.15.0", 1101 + "resolved": "https://registry.npmjs.org/esbuild-plugin-browserslist/-/esbuild-plugin-browserslist-0.15.0.tgz", 1102 + "integrity": "sha512-nZeEev2eIVLFWYcwp0iKv+lk85Yq2YIDhzCkJ5Dm5s7DxKANfjqUTyE1NRY2mEmwEW7SeAWraQEQdJP+5gV1RA==", 1002 1103 "dev": true, 1104 + "license": "MIT", 1003 1105 "dependencies": { 1004 - "debug": "^4.3.4", 1005 - "zod": "^3.14.4" 1106 + "debug": "^4.3.7", 1107 + "zod": "^3.23.8" 1006 1108 }, 1007 1109 "engines": { 1008 - "node": ">=12.13.0" 1110 + "node": ">=18" 1009 1111 }, 1010 1112 "peerDependencies": { 1011 - "browserslist": "^4.20.2", 1012 - "esbuild": "~0.14.32" 1013 - } 1014 - }, 1015 - "node_modules/esbuild-sass-plugin": { 1016 - "version": "2.2.6", 1017 - "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-2.2.6.tgz", 1018 - "integrity": "sha512-WVREJhOS6UlZNoS2FhkOA5980VVKjS6ocUK7YFghJt/94rWDNXxPI+XfkOKlSMbJF/n5wAotr37P8/9KhgkgPQ==", 1019 - "dev": true, 1020 - "dependencies": { 1021 - "esbuild": "^0.14.13", 1022 - "sass": "^1.49.0" 1023 - } 1024 - }, 1025 - "node_modules/esbuild-sass-plugin/node_modules/sass": { 1026 - "version": "1.50.1", 1027 - "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.1.tgz", 1028 - "integrity": "sha512-noTnY41KnlW2A9P8sdwESpDmo+KBNkukI1i8+hOK3footBUcohNHtdOJbckp46XO95nuvcHDDZ+4tmOnpK3hjw==", 1029 - "dev": true, 1030 - "dependencies": { 1031 - "chokidar": ">=3.0.0 <4.0.0", 1032 - "immutable": "^4.0.0", 1033 - "source-map-js": ">=0.6.2 <2.0.0" 1034 - }, 1035 - "bin": { 1036 - "sass": "sass.js" 1037 - }, 1038 - "engines": { 1039 - "node": ">=12.0.0" 1040 - } 1041 - }, 1042 - "node_modules/esbuild-sunos-64": { 1043 - "version": "0.14.38", 1044 - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz", 1045 - "integrity": "sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==", 1046 - "cpu": [ 1047 - "x64" 1048 - ], 1049 - "dev": true, 1050 - "optional": true, 1051 - "os": [ 1052 - "sunos" 1053 - ], 1054 - "engines": { 1055 - "node": ">=12" 1056 - } 1057 - }, 1058 - "node_modules/esbuild-windows-32": { 1059 - "version": "0.14.38", 1060 - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz", 1061 - "integrity": "sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==", 1062 - "cpu": [ 1063 - "ia32" 1064 - ], 1065 - "dev": true, 1066 - "optional": true, 1067 - "os": [ 1068 - "win32" 1069 - ], 1070 - "engines": { 1071 - "node": ">=12" 1072 - } 1073 - }, 1074 - "node_modules/esbuild-windows-64": { 1075 - "version": "0.14.38", 1076 - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz", 1077 - "integrity": "sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==", 1078 - "cpu": [ 1079 - "x64" 1080 - ], 1081 - "dev": true, 1082 - "optional": true, 1083 - "os": [ 1084 - "win32" 1085 - ], 1086 - "engines": { 1087 - "node": ">=12" 1088 - } 1089 - }, 1090 - "node_modules/esbuild-windows-arm64": { 1091 - "version": "0.14.38", 1092 - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz", 1093 - "integrity": "sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==", 1094 - "cpu": [ 1095 - "arm64" 1096 - ], 1097 - "dev": true, 1098 - "optional": true, 1099 - "os": [ 1100 - "win32" 1101 - ], 1102 - "engines": { 1103 - "node": ">=12" 1113 + "browserslist": "^4.21.8", 1114 + "esbuild": "~0.24.0" 1104 1115 } 1105 1116 }, 1106 1117 "node_modules/escalade": { 1107 - "version": "3.1.1", 1108 - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1109 - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1118 + "version": "3.2.0", 1119 + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 1120 + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 1110 1121 "dev": true, 1122 + "license": "MIT", 1111 1123 "engines": { 1112 1124 "node": ">=6" 1113 1125 } ··· 1391 1403 "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", 1392 1404 "dev": true 1393 1405 }, 1394 - "node_modules/fraction.js": { 1395 - "version": "4.2.0", 1396 - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", 1397 - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", 1398 - "dev": true, 1399 - "engines": { 1400 - "node": "*" 1401 - }, 1402 - "funding": { 1403 - "type": "patreon", 1404 - "url": "https://www.patreon.com/infusion" 1405 - } 1406 - }, 1407 1406 "node_modules/fs.realpath": { 1408 1407 "version": "1.0.0", 1409 1408 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1410 1409 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1411 1410 "dev": true 1412 - }, 1413 - "node_modules/fsevents": { 1414 - "version": "2.3.2", 1415 - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1416 - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1417 - "dev": true, 1418 - "hasInstallScript": true, 1419 - "optional": true, 1420 - "os": [ 1421 - "darwin" 1422 - ], 1423 - "engines": { 1424 - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1425 - } 1426 1411 }, 1427 1412 "node_modules/functional-red-black-tree": { 1428 1413 "version": "1.0.1", ··· 1515 1500 "node": ">= 4" 1516 1501 } 1517 1502 }, 1518 - "node_modules/immutable": { 1519 - "version": "4.0.0", 1520 - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", 1521 - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", 1522 - "dev": true 1523 - }, 1524 1503 "node_modules/import-fresh": { 1525 1504 "version": "3.3.0", 1526 1505 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", ··· 1562 1541 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1563 1542 "dev": true 1564 1543 }, 1565 - "node_modules/is-binary-path": { 1566 - "version": "2.1.0", 1567 - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1568 - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1569 - "dev": true, 1570 - "dependencies": { 1571 - "binary-extensions": "^2.0.0" 1572 - }, 1573 - "engines": { 1574 - "node": ">=8" 1575 - } 1576 - }, 1577 1544 "node_modules/is-extglob": { 1578 1545 "version": "2.1.1", 1579 1546 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", ··· 1706 1673 "dev": true 1707 1674 }, 1708 1675 "node_modules/ms": { 1709 - "version": "2.1.2", 1710 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1711 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1712 - "dev": true 1713 - }, 1714 - "node_modules/nanoid": { 1715 - "version": "3.3.3", 1716 - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", 1717 - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", 1676 + "version": "2.1.3", 1677 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1678 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1718 1679 "dev": true, 1719 - "bin": { 1720 - "nanoid": "bin/nanoid.cjs" 1721 - }, 1722 - "engines": { 1723 - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1724 - } 1680 + "license": "MIT" 1725 1681 }, 1726 1682 "node_modules/natural-compare": { 1727 1683 "version": "1.4.0", ··· 1730 1686 "dev": true 1731 1687 }, 1732 1688 "node_modules/node-releases": { 1733 - "version": "2.0.3", 1734 - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", 1735 - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", 1736 - "dev": true 1737 - }, 1738 - "node_modules/normalize-path": { 1739 - "version": "3.0.0", 1740 - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1741 - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1742 - "dev": true, 1743 - "engines": { 1744 - "node": ">=0.10.0" 1745 - } 1746 - }, 1747 - "node_modules/normalize-range": { 1748 - "version": "0.1.2", 1749 - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", 1750 - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", 1689 + "version": "2.0.19", 1690 + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", 1691 + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", 1751 1692 "dev": true, 1752 - "engines": { 1753 - "node": ">=0.10.0" 1754 - } 1693 + "license": "MIT" 1755 1694 }, 1756 1695 "node_modules/normalize.css": { 1757 1696 "version": "8.0.1", ··· 1824 1763 } 1825 1764 }, 1826 1765 "node_modules/picocolors": { 1827 - "version": "1.0.0", 1828 - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1829 - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1830 - "dev": true 1766 + "version": "1.1.1", 1767 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1768 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1769 + "dev": true, 1770 + "license": "ISC" 1831 1771 }, 1832 1772 "node_modules/picomatch": { 1833 1773 "version": "2.3.1", ··· 1841 1781 "url": "https://github.com/sponsors/jonschlinkert" 1842 1782 } 1843 1783 }, 1844 - "node_modules/postcss": { 1845 - "version": "8.4.12", 1846 - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", 1847 - "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", 1848 - "dev": true, 1849 - "funding": [ 1850 - { 1851 - "type": "opencollective", 1852 - "url": "https://opencollective.com/postcss/" 1853 - }, 1854 - { 1855 - "type": "tidelift", 1856 - "url": "https://tidelift.com/funding/github/npm/postcss" 1857 - } 1858 - ], 1859 - "dependencies": { 1860 - "nanoid": "^3.3.1", 1861 - "picocolors": "^1.0.0", 1862 - "source-map-js": "^1.0.2" 1863 - }, 1864 - "engines": { 1865 - "node": "^10 || ^12 || >=14" 1866 - } 1867 - }, 1868 - "node_modules/postcss-value-parser": { 1869 - "version": "4.2.0", 1870 - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 1871 - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 1872 - "dev": true 1873 - }, 1874 1784 "node_modules/prelude-ls": { 1875 1785 "version": "1.2.1", 1876 1786 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", ··· 1923 1833 "url": "https://feross.org/support" 1924 1834 } 1925 1835 ] 1926 - }, 1927 - "node_modules/readdirp": { 1928 - "version": "3.6.0", 1929 - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1930 - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1931 - "dev": true, 1932 - "dependencies": { 1933 - "picomatch": "^2.2.1" 1934 - }, 1935 - "engines": { 1936 - "node": ">=8.10.0" 1937 - } 1938 1836 }, 1939 1837 "node_modules/regexpp": { 1940 1838 "version": "3.2.0", ··· 2050 1948 "node": ">=8" 2051 1949 } 2052 1950 }, 2053 - "node_modules/source-map-js": { 2054 - "version": "1.0.2", 2055 - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2056 - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 2057 - "dev": true, 2058 - "engines": { 2059 - "node": ">=0.10.0" 2060 - } 2061 - }, 2062 1951 "node_modules/strip-ansi": { 2063 1952 "version": "6.0.1", 2064 1953 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", ··· 2183 2072 "dev": true, 2184 2073 "license": "MIT" 2185 2074 }, 2075 + "node_modules/update-browserslist-db": { 2076 + "version": "1.1.1", 2077 + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", 2078 + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", 2079 + "dev": true, 2080 + "funding": [ 2081 + { 2082 + "type": "opencollective", 2083 + "url": "https://opencollective.com/browserslist" 2084 + }, 2085 + { 2086 + "type": "tidelift", 2087 + "url": "https://tidelift.com/funding/github/npm/browserslist" 2088 + }, 2089 + { 2090 + "type": "github", 2091 + "url": "https://github.com/sponsors/ai" 2092 + } 2093 + ], 2094 + "license": "MIT", 2095 + "dependencies": { 2096 + "escalade": "^3.2.0", 2097 + "picocolors": "^1.1.0" 2098 + }, 2099 + "bin": { 2100 + "update-browserslist-db": "cli.js" 2101 + }, 2102 + "peerDependencies": { 2103 + "browserslist": ">= 4.21.0" 2104 + } 2105 + }, 2186 2106 "node_modules/uri-js": { 2187 2107 "version": "4.4.1", 2188 2108 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", ··· 2235 2155 "dev": true 2236 2156 }, 2237 2157 "node_modules/zod": { 2238 - "version": "3.14.4", 2239 - "resolved": "https://registry.npmjs.org/zod/-/zod-3.14.4.tgz", 2240 - "integrity": "sha512-U9BFLb2GO34Sfo9IUYp0w3wJLlmcyGoMd75qU9yf+DrdGA4kEx6e+l9KOkAlyUO0PSQzZCa3TR4qVlcmwqSDuw==", 2158 + "version": "3.24.1", 2159 + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", 2160 + "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", 2241 2161 "dev": true, 2162 + "license": "MIT", 2242 2163 "funding": { 2243 2164 "url": "https://github.com/sponsors/colinhacks" 2244 2165 } 2245 2166 } 2246 2167 }, 2247 2168 "dependencies": { 2169 + "@esbuild/aix-ppc64": { 2170 + "version": "0.24.2", 2171 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", 2172 + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", 2173 + "dev": true, 2174 + "optional": true 2175 + }, 2176 + "@esbuild/android-arm": { 2177 + "version": "0.24.2", 2178 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", 2179 + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", 2180 + "dev": true, 2181 + "optional": true 2182 + }, 2183 + "@esbuild/android-arm64": { 2184 + "version": "0.24.2", 2185 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", 2186 + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", 2187 + "dev": true, 2188 + "optional": true 2189 + }, 2190 + "@esbuild/android-x64": { 2191 + "version": "0.24.2", 2192 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", 2193 + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", 2194 + "dev": true, 2195 + "optional": true 2196 + }, 2197 + "@esbuild/darwin-arm64": { 2198 + "version": "0.24.2", 2199 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", 2200 + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", 2201 + "dev": true, 2202 + "optional": true 2203 + }, 2204 + "@esbuild/darwin-x64": { 2205 + "version": "0.24.2", 2206 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", 2207 + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", 2208 + "dev": true, 2209 + "optional": true 2210 + }, 2211 + "@esbuild/freebsd-arm64": { 2212 + "version": "0.24.2", 2213 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", 2214 + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", 2215 + "dev": true, 2216 + "optional": true 2217 + }, 2218 + "@esbuild/freebsd-x64": { 2219 + "version": "0.24.2", 2220 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", 2221 + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", 2222 + "dev": true, 2223 + "optional": true 2224 + }, 2225 + "@esbuild/linux-arm": { 2226 + "version": "0.24.2", 2227 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", 2228 + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", 2229 + "dev": true, 2230 + "optional": true 2231 + }, 2232 + "@esbuild/linux-arm64": { 2233 + "version": "0.24.2", 2234 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", 2235 + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", 2236 + "dev": true, 2237 + "optional": true 2238 + }, 2239 + "@esbuild/linux-ia32": { 2240 + "version": "0.24.2", 2241 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", 2242 + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", 2243 + "dev": true, 2244 + "optional": true 2245 + }, 2246 + "@esbuild/linux-loong64": { 2247 + "version": "0.24.2", 2248 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", 2249 + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", 2250 + "dev": true, 2251 + "optional": true 2252 + }, 2253 + "@esbuild/linux-mips64el": { 2254 + "version": "0.24.2", 2255 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", 2256 + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", 2257 + "dev": true, 2258 + "optional": true 2259 + }, 2260 + "@esbuild/linux-ppc64": { 2261 + "version": "0.24.2", 2262 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", 2263 + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", 2264 + "dev": true, 2265 + "optional": true 2266 + }, 2267 + "@esbuild/linux-riscv64": { 2268 + "version": "0.24.2", 2269 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", 2270 + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", 2271 + "dev": true, 2272 + "optional": true 2273 + }, 2274 + "@esbuild/linux-s390x": { 2275 + "version": "0.24.2", 2276 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", 2277 + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", 2278 + "dev": true, 2279 + "optional": true 2280 + }, 2281 + "@esbuild/linux-x64": { 2282 + "version": "0.24.2", 2283 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", 2284 + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", 2285 + "dev": true, 2286 + "optional": true 2287 + }, 2288 + "@esbuild/netbsd-arm64": { 2289 + "version": "0.24.2", 2290 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", 2291 + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", 2292 + "dev": true, 2293 + "optional": true 2294 + }, 2295 + "@esbuild/netbsd-x64": { 2296 + "version": "0.24.2", 2297 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", 2298 + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", 2299 + "dev": true, 2300 + "optional": true 2301 + }, 2302 + "@esbuild/openbsd-arm64": { 2303 + "version": "0.24.2", 2304 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", 2305 + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", 2306 + "dev": true, 2307 + "optional": true 2308 + }, 2309 + "@esbuild/openbsd-x64": { 2310 + "version": "0.24.2", 2311 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", 2312 + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", 2313 + "dev": true, 2314 + "optional": true 2315 + }, 2316 + "@esbuild/sunos-x64": { 2317 + "version": "0.24.2", 2318 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", 2319 + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", 2320 + "dev": true, 2321 + "optional": true 2322 + }, 2323 + "@esbuild/win32-arm64": { 2324 + "version": "0.24.2", 2325 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", 2326 + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", 2327 + "dev": true, 2328 + "optional": true 2329 + }, 2330 + "@esbuild/win32-ia32": { 2331 + "version": "0.24.2", 2332 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", 2333 + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", 2334 + "dev": true, 2335 + "optional": true 2336 + }, 2337 + "@esbuild/win32-x64": { 2338 + "version": "0.24.2", 2339 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", 2340 + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", 2341 + "dev": true, 2342 + "optional": true 2343 + }, 2248 2344 "@eslint/eslintrc": { 2249 2345 "version": "1.2.2", 2250 2346 "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", ··· 2479 2575 "color-convert": "^2.0.1" 2480 2576 } 2481 2577 }, 2482 - "anymatch": { 2483 - "version": "3.1.2", 2484 - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 2485 - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 2486 - "dev": true, 2487 - "requires": { 2488 - "normalize-path": "^3.0.0", 2489 - "picomatch": "^2.0.4" 2490 - } 2491 - }, 2492 2578 "argparse": { 2493 2579 "version": "2.0.1", 2494 2580 "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", ··· 2501 2587 "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 2502 2588 "dev": true 2503 2589 }, 2504 - "autoprefixer": { 2505 - "version": "10.4.5", 2506 - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.5.tgz", 2507 - "integrity": "sha512-Fvd8yCoA7lNX/OUllvS+aS1I7WRBclGXsepbvT8ZaPgrH24rgXpZzF0/6Hh3ZEkwg+0AES/Osd196VZmYoEFtw==", 2508 - "dev": true, 2509 - "requires": { 2510 - "browserslist": "^4.20.2", 2511 - "caniuse-lite": "^1.0.30001332", 2512 - "fraction.js": "^4.2.0", 2513 - "normalize-range": "^0.1.2", 2514 - "picocolors": "^1.0.0", 2515 - "postcss-value-parser": "^4.2.0" 2516 - } 2517 - }, 2518 2590 "balanced-match": { 2519 2591 "version": "1.0.2", 2520 2592 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2521 2593 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2522 - "dev": true 2523 - }, 2524 - "binary-extensions": { 2525 - "version": "2.2.0", 2526 - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 2527 - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 2528 2594 "dev": true 2529 2595 }, 2530 2596 "brace-expansion": { ··· 2547 2613 } 2548 2614 }, 2549 2615 "browserslist": { 2550 - "version": "4.20.3", 2551 - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", 2552 - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", 2616 + "version": "4.24.3", 2617 + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", 2618 + "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", 2553 2619 "dev": true, 2554 2620 "requires": { 2555 - "caniuse-lite": "^1.0.30001332", 2556 - "electron-to-chromium": "^1.4.118", 2557 - "escalade": "^3.1.1", 2558 - "node-releases": "^2.0.3", 2559 - "picocolors": "^1.0.0" 2621 + "caniuse-lite": "^1.0.30001688", 2622 + "electron-to-chromium": "^1.5.73", 2623 + "node-releases": "^2.0.19", 2624 + "update-browserslist-db": "^1.1.1" 2560 2625 } 2561 2626 }, 2562 2627 "callsites": { ··· 2566 2631 "dev": true 2567 2632 }, 2568 2633 "caniuse-lite": { 2569 - "version": "1.0.30001332", 2570 - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", 2571 - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", 2634 + "version": "1.0.30001690", 2635 + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", 2636 + "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", 2572 2637 "dev": true 2573 2638 }, 2574 2639 "chalk": { ··· 2579 2644 "requires": { 2580 2645 "ansi-styles": "^4.1.0", 2581 2646 "supports-color": "^7.1.0" 2582 - } 2583 - }, 2584 - "chokidar": { 2585 - "version": "3.5.3", 2586 - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 2587 - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 2588 - "dev": true, 2589 - "requires": { 2590 - "anymatch": "~3.1.2", 2591 - "braces": "~3.0.2", 2592 - "fsevents": "~2.3.2", 2593 - "glob-parent": "~5.1.2", 2594 - "is-binary-path": "~2.1.0", 2595 - "is-glob": "~4.0.1", 2596 - "normalize-path": "~3.0.0", 2597 - "readdirp": "~3.6.0" 2598 2647 } 2599 2648 }, 2600 2649 "color-convert": { ··· 2630 2679 } 2631 2680 }, 2632 2681 "debug": { 2633 - "version": "4.3.4", 2634 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2635 - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2682 + "version": "4.4.0", 2683 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 2684 + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 2636 2685 "dev": true, 2637 2686 "requires": { 2638 - "ms": "2.1.2" 2687 + "ms": "^2.1.3" 2639 2688 } 2640 2689 }, 2641 2690 "deep-is": { ··· 2663 2712 } 2664 2713 }, 2665 2714 "electron-to-chromium": { 2666 - "version": "1.4.118", 2667 - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz", 2668 - "integrity": "sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w==", 2715 + "version": "1.5.79", 2716 + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.79.tgz", 2717 + "integrity": "sha512-nYOxJNxQ9Om4EC88BE4pPoNI8xwSFf8pU/BAeOl4Hh/b/i6V4biTAzwV7pXi3ARKeoYO5JZKMIXTryXSVer5RA==", 2669 2718 "dev": true 2670 2719 }, 2671 2720 "esbuild": { 2672 - "version": "0.14.38", 2673 - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", 2674 - "integrity": "sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==", 2721 + "version": "0.24.2", 2722 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", 2723 + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", 2675 2724 "dev": true, 2676 2725 "requires": { 2677 - "esbuild-android-64": "0.14.38", 2678 - "esbuild-android-arm64": "0.14.38", 2679 - "esbuild-darwin-64": "0.14.38", 2680 - "esbuild-darwin-arm64": "0.14.38", 2681 - "esbuild-freebsd-64": "0.14.38", 2682 - "esbuild-freebsd-arm64": "0.14.38", 2683 - "esbuild-linux-32": "0.14.38", 2684 - "esbuild-linux-64": "0.14.38", 2685 - "esbuild-linux-arm": "0.14.38", 2686 - "esbuild-linux-arm64": "0.14.38", 2687 - "esbuild-linux-mips64le": "0.14.38", 2688 - "esbuild-linux-ppc64le": "0.14.38", 2689 - "esbuild-linux-riscv64": "0.14.38", 2690 - "esbuild-linux-s390x": "0.14.38", 2691 - "esbuild-netbsd-64": "0.14.38", 2692 - "esbuild-openbsd-64": "0.14.38", 2693 - "esbuild-sunos-64": "0.14.38", 2694 - "esbuild-windows-32": "0.14.38", 2695 - "esbuild-windows-64": "0.14.38", 2696 - "esbuild-windows-arm64": "0.14.38" 2726 + "@esbuild/aix-ppc64": "0.24.2", 2727 + "@esbuild/android-arm": "0.24.2", 2728 + "@esbuild/android-arm64": "0.24.2", 2729 + "@esbuild/android-x64": "0.24.2", 2730 + "@esbuild/darwin-arm64": "0.24.2", 2731 + "@esbuild/darwin-x64": "0.24.2", 2732 + "@esbuild/freebsd-arm64": "0.24.2", 2733 + "@esbuild/freebsd-x64": "0.24.2", 2734 + "@esbuild/linux-arm": "0.24.2", 2735 + "@esbuild/linux-arm64": "0.24.2", 2736 + "@esbuild/linux-ia32": "0.24.2", 2737 + "@esbuild/linux-loong64": "0.24.2", 2738 + "@esbuild/linux-mips64el": "0.24.2", 2739 + "@esbuild/linux-ppc64": "0.24.2", 2740 + "@esbuild/linux-riscv64": "0.24.2", 2741 + "@esbuild/linux-s390x": "0.24.2", 2742 + "@esbuild/linux-x64": "0.24.2", 2743 + "@esbuild/netbsd-arm64": "0.24.2", 2744 + "@esbuild/netbsd-x64": "0.24.2", 2745 + "@esbuild/openbsd-arm64": "0.24.2", 2746 + "@esbuild/openbsd-x64": "0.24.2", 2747 + "@esbuild/sunos-x64": "0.24.2", 2748 + "@esbuild/win32-arm64": "0.24.2", 2749 + "@esbuild/win32-ia32": "0.24.2", 2750 + "@esbuild/win32-x64": "0.24.2" 2697 2751 } 2698 2752 }, 2699 - "esbuild-android-64": { 2700 - "version": "0.14.38", 2701 - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz", 2702 - "integrity": "sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==", 2703 - "dev": true, 2704 - "optional": true 2705 - }, 2706 - "esbuild-android-arm64": { 2707 - "version": "0.14.38", 2708 - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz", 2709 - "integrity": "sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==", 2710 - "dev": true, 2711 - "optional": true 2712 - }, 2713 - "esbuild-darwin-64": { 2714 - "version": "0.14.38", 2715 - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz", 2716 - "integrity": "sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==", 2717 - "dev": true, 2718 - "optional": true 2719 - }, 2720 - "esbuild-darwin-arm64": { 2721 - "version": "0.14.38", 2722 - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz", 2723 - "integrity": "sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==", 2724 - "dev": true, 2725 - "optional": true 2726 - }, 2727 - "esbuild-freebsd-64": { 2728 - "version": "0.14.38", 2729 - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz", 2730 - "integrity": "sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==", 2731 - "dev": true, 2732 - "optional": true 2733 - }, 2734 - "esbuild-freebsd-arm64": { 2735 - "version": "0.14.38", 2736 - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz", 2737 - "integrity": "sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==", 2738 - "dev": true, 2739 - "optional": true 2740 - }, 2741 - "esbuild-linux-32": { 2742 - "version": "0.14.38", 2743 - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz", 2744 - "integrity": "sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==", 2745 - "dev": true, 2746 - "optional": true 2747 - }, 2748 - "esbuild-linux-64": { 2749 - "version": "0.14.38", 2750 - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz", 2751 - "integrity": "sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==", 2752 - "dev": true, 2753 - "optional": true 2754 - }, 2755 - "esbuild-linux-arm": { 2756 - "version": "0.14.38", 2757 - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz", 2758 - "integrity": "sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==", 2759 - "dev": true, 2760 - "optional": true 2761 - }, 2762 - "esbuild-linux-arm64": { 2763 - "version": "0.14.38", 2764 - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz", 2765 - "integrity": "sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==", 2766 - "dev": true, 2767 - "optional": true 2768 - }, 2769 - "esbuild-linux-mips64le": { 2770 - "version": "0.14.38", 2771 - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz", 2772 - "integrity": "sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==", 2773 - "dev": true, 2774 - "optional": true 2775 - }, 2776 - "esbuild-linux-ppc64le": { 2777 - "version": "0.14.38", 2778 - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz", 2779 - "integrity": "sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==", 2780 - "dev": true, 2781 - "optional": true 2782 - }, 2783 - "esbuild-linux-riscv64": { 2784 - "version": "0.14.38", 2785 - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz", 2786 - "integrity": "sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==", 2787 - "dev": true, 2788 - "optional": true 2789 - }, 2790 - "esbuild-linux-s390x": { 2791 - "version": "0.14.38", 2792 - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz", 2793 - "integrity": "sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==", 2794 - "dev": true, 2795 - "optional": true 2796 - }, 2797 - "esbuild-netbsd-64": { 2798 - "version": "0.14.38", 2799 - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz", 2800 - "integrity": "sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==", 2801 - "dev": true, 2802 - "optional": true 2803 - }, 2804 - "esbuild-openbsd-64": { 2805 - "version": "0.14.38", 2806 - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz", 2807 - "integrity": "sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==", 2808 - "dev": true, 2809 - "optional": true 2810 - }, 2811 2753 "esbuild-plugin-browserslist": { 2812 - "version": "0.4.9", 2813 - "resolved": "https://registry.npmjs.org/esbuild-plugin-browserslist/-/esbuild-plugin-browserslist-0.4.9.tgz", 2814 - "integrity": "sha512-PMB9eVoAvilMR+VzorCFusuO4jDYaqWE8jFePWFQ27oyL1hrTYQo39CBA0cv5AHh9cgGAWpFR7AzCTw9crq+DA==", 2754 + "version": "0.15.0", 2755 + "resolved": "https://registry.npmjs.org/esbuild-plugin-browserslist/-/esbuild-plugin-browserslist-0.15.0.tgz", 2756 + "integrity": "sha512-nZeEev2eIVLFWYcwp0iKv+lk85Yq2YIDhzCkJ5Dm5s7DxKANfjqUTyE1NRY2mEmwEW7SeAWraQEQdJP+5gV1RA==", 2815 2757 "dev": true, 2816 2758 "requires": { 2817 - "debug": "^4.3.4", 2818 - "zod": "^3.14.4" 2759 + "debug": "^4.3.7", 2760 + "zod": "^3.23.8" 2819 2761 } 2820 2762 }, 2821 - "esbuild-sass-plugin": { 2822 - "version": "2.2.6", 2823 - "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-2.2.6.tgz", 2824 - "integrity": "sha512-WVREJhOS6UlZNoS2FhkOA5980VVKjS6ocUK7YFghJt/94rWDNXxPI+XfkOKlSMbJF/n5wAotr37P8/9KhgkgPQ==", 2825 - "dev": true, 2826 - "requires": { 2827 - "esbuild": "^0.14.13", 2828 - "sass": "^1.49.0" 2829 - }, 2830 - "dependencies": { 2831 - "sass": { 2832 - "version": "1.50.1", 2833 - "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.1.tgz", 2834 - "integrity": "sha512-noTnY41KnlW2A9P8sdwESpDmo+KBNkukI1i8+hOK3footBUcohNHtdOJbckp46XO95nuvcHDDZ+4tmOnpK3hjw==", 2835 - "dev": true, 2836 - "requires": { 2837 - "chokidar": ">=3.0.0 <4.0.0", 2838 - "immutable": "^4.0.0", 2839 - "source-map-js": ">=0.6.2 <2.0.0" 2840 - } 2841 - } 2842 - } 2843 - }, 2844 - "esbuild-sunos-64": { 2845 - "version": "0.14.38", 2846 - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz", 2847 - "integrity": "sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==", 2848 - "dev": true, 2849 - "optional": true 2850 - }, 2851 - "esbuild-windows-32": { 2852 - "version": "0.14.38", 2853 - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz", 2854 - "integrity": "sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==", 2855 - "dev": true, 2856 - "optional": true 2857 - }, 2858 - "esbuild-windows-64": { 2859 - "version": "0.14.38", 2860 - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz", 2861 - "integrity": "sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==", 2862 - "dev": true, 2863 - "optional": true 2864 - }, 2865 - "esbuild-windows-arm64": { 2866 - "version": "0.14.38", 2867 - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz", 2868 - "integrity": "sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==", 2869 - "dev": true, 2870 - "optional": true 2871 - }, 2872 2763 "escalade": { 2873 - "version": "3.1.1", 2874 - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2875 - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2764 + "version": "3.2.0", 2765 + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 2766 + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 2876 2767 "dev": true 2877 2768 }, 2878 2769 "escape-string-regexp": { ··· 3090 2981 "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", 3091 2982 "dev": true 3092 2983 }, 3093 - "fraction.js": { 3094 - "version": "4.2.0", 3095 - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", 3096 - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", 3097 - "dev": true 3098 - }, 3099 2984 "fs.realpath": { 3100 2985 "version": "1.0.0", 3101 2986 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 3102 2987 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 3103 2988 "dev": true 3104 - }, 3105 - "fsevents": { 3106 - "version": "2.3.2", 3107 - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 3108 - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 3109 - "dev": true, 3110 - "optional": true 3111 2989 }, 3112 2990 "functional-red-black-tree": { 3113 2991 "version": "1.0.1", ··· 3173 3051 "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 3174 3052 "dev": true 3175 3053 }, 3176 - "immutable": { 3177 - "version": "4.0.0", 3178 - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", 3179 - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", 3180 - "dev": true 3181 - }, 3182 3054 "import-fresh": { 3183 3055 "version": "3.3.0", 3184 3056 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", ··· 3210 3082 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 3211 3083 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 3212 3084 "dev": true 3213 - }, 3214 - "is-binary-path": { 3215 - "version": "2.1.0", 3216 - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 3217 - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 3218 - "dev": true, 3219 - "requires": { 3220 - "binary-extensions": "^2.0.0" 3221 - } 3222 3085 }, 3223 3086 "is-extglob": { 3224 3087 "version": "2.1.1", ··· 3325 3188 "dev": true 3326 3189 }, 3327 3190 "ms": { 3328 - "version": "2.1.2", 3329 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3330 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3331 - "dev": true 3332 - }, 3333 - "nanoid": { 3334 - "version": "3.3.3", 3335 - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", 3336 - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", 3191 + "version": "2.1.3", 3192 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 3193 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 3337 3194 "dev": true 3338 3195 }, 3339 3196 "natural-compare": { ··· 3343 3200 "dev": true 3344 3201 }, 3345 3202 "node-releases": { 3346 - "version": "2.0.3", 3347 - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", 3348 - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", 3349 - "dev": true 3350 - }, 3351 - "normalize-path": { 3352 - "version": "3.0.0", 3353 - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3354 - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3355 - "dev": true 3356 - }, 3357 - "normalize-range": { 3358 - "version": "0.1.2", 3359 - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", 3360 - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", 3203 + "version": "2.0.19", 3204 + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", 3205 + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", 3361 3206 "dev": true 3362 3207 }, 3363 3208 "normalize.css": { ··· 3416 3261 "dev": true 3417 3262 }, 3418 3263 "picocolors": { 3419 - "version": "1.0.0", 3420 - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 3421 - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 3264 + "version": "1.1.1", 3265 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 3266 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 3422 3267 "dev": true 3423 3268 }, 3424 3269 "picomatch": { ··· 3427 3272 "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3428 3273 "dev": true 3429 3274 }, 3430 - "postcss": { 3431 - "version": "8.4.12", 3432 - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", 3433 - "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", 3434 - "dev": true, 3435 - "requires": { 3436 - "nanoid": "^3.3.1", 3437 - "picocolors": "^1.0.0", 3438 - "source-map-js": "^1.0.2" 3439 - } 3440 - }, 3441 - "postcss-value-parser": { 3442 - "version": "4.2.0", 3443 - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 3444 - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 3445 - "dev": true 3446 - }, 3447 3275 "prelude-ls": { 3448 3276 "version": "1.2.1", 3449 3277 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", ··· 3468 3296 "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 3469 3297 "dev": true 3470 3298 }, 3471 - "readdirp": { 3472 - "version": "3.6.0", 3473 - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 3474 - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 3475 - "dev": true, 3476 - "requires": { 3477 - "picomatch": "^2.2.1" 3478 - } 3479 - }, 3480 3299 "regexpp": { 3481 3300 "version": "3.2.0", 3482 3301 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", ··· 3541 3360 "version": "3.0.0", 3542 3361 "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 3543 3362 "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 3544 - "dev": true 3545 - }, 3546 - "source-map-js": { 3547 - "version": "1.0.2", 3548 - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 3549 - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 3550 3363 "dev": true 3551 3364 }, 3552 3365 "strip-ansi": { ··· 3635 3448 "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", 3636 3449 "dev": true 3637 3450 }, 3451 + "update-browserslist-db": { 3452 + "version": "1.1.1", 3453 + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", 3454 + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", 3455 + "dev": true, 3456 + "requires": { 3457 + "escalade": "^3.2.0", 3458 + "picocolors": "^1.1.0" 3459 + } 3460 + }, 3638 3461 "uri-js": { 3639 3462 "version": "4.4.1", 3640 3463 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", ··· 3678 3501 "dev": true 3679 3502 }, 3680 3503 "zod": { 3681 - "version": "3.14.4", 3682 - "resolved": "https://registry.npmjs.org/zod/-/zod-3.14.4.tgz", 3683 - "integrity": "sha512-U9BFLb2GO34Sfo9IUYp0w3wJLlmcyGoMd75qU9yf+DrdGA4kEx6e+l9KOkAlyUO0PSQzZCa3TR4qVlcmwqSDuw==", 3504 + "version": "3.24.1", 3505 + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", 3506 + "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", 3684 3507 "dev": true 3685 3508 } 3686 3509 }
+2 -5
frontend/package.json
··· 8 8 "@types/three": "^0.139.0", 9 9 "@typescript-eslint/eslint-plugin": "^5.20.0", 10 10 "@typescript-eslint/parser": "^5.20.0", 11 - "autoprefixer": "^10.4.5", 12 11 "browserslist": "^4.20.3", 13 - "esbuild": "^0.14.38", 14 - "esbuild-plugin-browserslist": "^0.4.9", 15 - "esbuild-sass-plugin": "^2.2.6", 12 + "esbuild": "^0.24.2", 13 + "esbuild-plugin-browserslist": "^0.15.0", 16 14 "eslint": "^8.14.0", 17 15 "eslint-config-prettier": "^8.5.0", 18 16 "minimist": "^1.2.6", 19 - "postcss": "^8.4.12", 20 17 "prettier": "^2.6.2", 21 18 "typescript": "^4.6.3" 22 19 },
+39
frontend/src/css/header.css
··· 1 + .header-container { 2 + --min-header-height: 50px; 3 + --header-viewport-proportion: 10vh; 4 + 5 + align-items: center; 6 + box-shadow: 0 2.4vh 1.2vh -2vh #808080; 7 + display: flex; 8 + height: var(--header-viewport-proportion); 9 + justify-content: space-between; 10 + min-height: var(--min-header-height); 11 + position: relative; 12 + } 13 + 14 + .title { 15 + flex: 1; 16 + font-weight: bold; 17 + font-size: 6vh; 18 + margin: auto; 19 + overflow: hidden; 20 + padding-left: 3%; 21 + white-space: nowrap; 22 + 23 + @media screen and (max-height: 500px) { 24 + font-size: calc(var(--min-header-height) * 0.6); 25 + } 26 + } 27 + 28 + .logo-gl { 29 + --logo-aspect-ratio: 2.5; 30 + 31 + height: 100%; 32 + margin: auto; 33 + padding-right: 3%; 34 + width: calc(var(--header-viewport-proportion) * var(--logo-aspect-ratio)); 35 + 36 + @media screen and (max-height: 500px) { 37 + width: calc(var(--min-header-height) * var(--logo-aspect-ratio)); 38 + } 39 + }
+86
frontend/src/css/projects.css
··· 1 + .projects { 2 + --animation-padding: calc(100% / 12); 3 + } 4 + 5 + @keyframes project-fade-in-left { 6 + 0% { 7 + opacity: 0; 8 + transform: translateX(calc(var(--animation-padding) * -1)); 9 + } 10 + 11 + 100% { 12 + opacity: 100%; 13 + transform: 0; 14 + } 15 + } 16 + 17 + @keyframes project-fade-in-right { 18 + 0% { 19 + opacity: 0; 20 + transform: translateX(var(--animation-padding)); 21 + } 22 + 23 + 100% { 24 + opacity: 100%; 25 + transform: 0; 26 + } 27 + } 28 + 29 + .project-container { 30 + align-items: center; 31 + display: flex; 32 + margin: 0 auto 6vh; 33 + max-width: 1000px; 34 + padding: 0 var(--animation-padding); 35 + 36 + @media screen and (max-width: 900px) { 37 + flex-wrap: wrap-reverse; 38 + width: auto; 39 + } 40 + animation: var(--animation) 2s 0.1s backwards ease; 41 + flex-direction: var(--flex-direction); 42 + } 43 + 44 + .project-container:nth-child(odd) { 45 + --animation: project-fade-in-right; 46 + --flex-direction: reverse; 47 + 48 + .project-desc { 49 + margin-right: var(--margin); 50 + padding-left: var(--padding); 51 + text-align: right; 52 + } 53 + } 54 + .project-container:nth-child(even) { 55 + --animation: project-fade-in-left; 56 + --flex-direction: row-reverse; 57 + 58 + .project-desc { 59 + margin-left: var(--margin); 60 + padding-right: var(--padding); 61 + text-align: left; 62 + } 63 + } 64 + 65 + .project-desc { 66 + --margin: 2%; 67 + --padding: 4%; 68 + } 69 + 70 + .project-title { 71 + display: block; 72 + font-size: 3em; 73 + margin: auto; 74 + } 75 + 76 + .project-thumbnail { 77 + flex: 1 0 auto; 78 + height: inherit; 79 + margin: auto; 80 + object-fit: contain; 81 + width: 60%; 82 + 83 + @media screen and (max-width: 900px) { 84 + margin-bottom: 12px; 85 + } 86 + }
frontend/src/scss/_defaults.scss frontend/src/css/defaults.css
-52
frontend/src/scss/_header.scss
··· 1 - @use "sass:math"; 2 - 3 - $min-header-height: 50px; 4 - 5 - @mixin header-height-break { 6 - @media screen and (max-height: ($min-header-height * 10)) { 7 - @content; 8 - } 9 - } 10 - 11 - .title { 12 - flex: 1; 13 - font: { 14 - size: 6vh; 15 - weight: bold; 16 - } 17 - margin: auto; 18 - overflow: hidden; 19 - padding-left: 3%; 20 - white-space: nowrap; 21 - 22 - @include header-height-break { 23 - font-size: $min-header-height * math.div(6, 10); 24 - } 25 - } 26 - 27 - $header-viewport-proportion: 10vh; 28 - 29 - .header-container { 30 - $container-shadow-colour: #808080; 31 - 32 - align-items: center; 33 - box-shadow: 0 2.4vh 1.2vh -2vh $container-shadow-colour; 34 - display: flex; 35 - height: $header-viewport-proportion; 36 - justify-content: space-between; 37 - min-height: $min-header-height; 38 - position: relative; 39 - } 40 - 41 - .logo-gl { 42 - $logo-aspect-ratio: math.div(25, 10); 43 - 44 - height: 100%; 45 - margin: auto; 46 - padding-right: 3%; 47 - width: $header-viewport-proportion * $logo-aspect-ratio; 48 - 49 - @include header-height-break { 50 - width: $min-header-height * $logo-aspect-ratio; 51 - } 52 - }
-87
frontend/src/scss/_projects.scss
··· 1 - @use "sass:math"; 2 - 3 - $animation-padding: math.div(100%, 1200) * 100; 4 - 5 - @mixin project-width-break { 6 - @media screen and (max-width: 900px) { 7 - @content; 8 - } 9 - } 10 - 11 - %project-container { 12 - align-items: center; 13 - display: flex; 14 - $margin-strength: auto; 15 - margin: { 16 - bottom: 6vh; 17 - left: $margin-strength; 18 - right: $margin-strength; 19 - } 20 - max-width: 1000px; 21 - padding: { 22 - left: $animation-padding; 23 - right: $animation-padding; 24 - } 25 - 26 - @include project-width-break { 27 - flex-wrap: wrap-reverse; 28 - width: auto; 29 - } 30 - } 31 - 32 - @each $alignment in left, right { 33 - @keyframes project-fade-in-#{$alignment} { 34 - 0% { 35 - opacity: 0; 36 - $animation-translation: $animation-padding; 37 - @if $alignment == left { 38 - $animation-translation: $animation-translation * -1; 39 - } 40 - transform: translateX($animation-translation); 41 - } 42 - 43 - 100% { 44 - opacity: 100%; 45 - transform: 0; 46 - } 47 - } 48 - 49 - .project-container-#{$alignment} { 50 - @extend %project-container; 51 - animation: project-fade-in-#{$alignment} 2s 0.1s backwards ease; 52 - @if $alignment == left { 53 - flex-direction: row-reverse; 54 - } @else { 55 - flex-direction: row; 56 - } 57 - } 58 - 59 - .project-desc-#{$alignment} { 60 - margin-#{$alignment}: 2%; 61 - $padding-strength: 4%; 62 - @if $alignment == left { 63 - padding-right: $padding-strength; 64 - } @else { 65 - padding-left: $padding-strength; 66 - } 67 - text-align: $alignment; 68 - } 69 - } 70 - 71 - .project-title { 72 - display: block; 73 - font-size: 3em; 74 - margin: auto; 75 - } 76 - 77 - .project-thumbnail { 78 - flex: 1 0 auto; 79 - height: inherit; 80 - margin: auto; 81 - object-fit: contain; 82 - width: 60%; 83 - 84 - @include project-width-break { 85 - margin-bottom: 12px; 86 - } 87 - }
+2 -5
frontend/src/scss/_scrobblar.scss frontend/src/css/scrobblar.css
··· 1 1 .scrobble-bar { 2 - $bar-background: #f4f4f4; 3 - background: $bar-background; 2 + background: #f4f4f4; 4 3 bottom: 0; 5 4 opacity: 0.95; 6 5 position: fixed; ··· 24 23 } 25 24 } 26 25 27 - %bar-text-container { 26 + .bar-container { 28 27 font-style: italic; 29 28 margin: auto; 30 29 overflow: hidden; 31 30 } 32 31 33 32 .bar-text-intro { 34 - @extend %bar-text-container; 35 33 display: inline; 36 34 margin-left: 11px; 37 35 white-space: pre; 38 36 } 39 37 40 38 .bar-text-music { 41 - @extend %bar-text-container; 42 39 animation: scrobblar-fade-in 0.4s 0.1s ease-in; 43 40 display: inline; 44 41 flex-grow: 1;
frontend/src/scss/main.scss frontend/src/css/main.css
+1 -1
frontend/src/ts/main.ts
··· 1 - import "../scss/main.scss"; 1 + import "../css/main.css"; 2 2 3 3 import "./header"; 4 4 import "./logo";