├── .gitignore ├── .prettierrc ├── index.html ├── package-lock.json ├── package.json ├── src ├── App.Authentication.jsx ├── App.Descendant.jsx ├── App.LazyLoading.jsx ├── App.Nested.jsx ├── App.QueryParams.jsx ├── App.Redirect.jsx ├── App.css ├── App.jsx ├── favicon.svg ├── index.css ├── logo.svg ├── main.jsx └── pages │ ├── About.jsx │ └── Home.jsx └── vite.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "printWidth": 70 4 | } 5 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-authentication", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "react-authentication", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "@loadable/component": "^5.15.2", 12 | "history": "^5.1.0", 13 | "query-string": "^7.0.1", 14 | "react": "^17.0.0", 15 | "react-dom": "^17.0.0", 16 | "react-router-dom": "^6.0.1", 17 | "use-query-params": "^1.2.3" 18 | }, 19 | "devDependencies": { 20 | "@vitejs/plugin-react": "^1.0.0", 21 | "vite": "^2.6.4" 22 | } 23 | }, 24 | "node_modules/@babel/code-frame": { 25 | "version": "7.16.0", 26 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", 27 | "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", 28 | "dev": true, 29 | "dependencies": { 30 | "@babel/highlight": "^7.16.0" 31 | }, 32 | "engines": { 33 | "node": ">=6.9.0" 34 | } 35 | }, 36 | "node_modules/@babel/compat-data": { 37 | "version": "7.16.0", 38 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", 39 | "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", 40 | "dev": true, 41 | "engines": { 42 | "node": ">=6.9.0" 43 | } 44 | }, 45 | "node_modules/@babel/core": { 46 | "version": "7.16.0", 47 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", 48 | "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", 49 | "dev": true, 50 | "dependencies": { 51 | "@babel/code-frame": "^7.16.0", 52 | "@babel/generator": "^7.16.0", 53 | "@babel/helper-compilation-targets": "^7.16.0", 54 | "@babel/helper-module-transforms": "^7.16.0", 55 | "@babel/helpers": "^7.16.0", 56 | "@babel/parser": "^7.16.0", 57 | "@babel/template": "^7.16.0", 58 | "@babel/traverse": "^7.16.0", 59 | "@babel/types": "^7.16.0", 60 | "convert-source-map": "^1.7.0", 61 | "debug": "^4.1.0", 62 | "gensync": "^1.0.0-beta.2", 63 | "json5": "^2.1.2", 64 | "semver": "^6.3.0", 65 | "source-map": "^0.5.0" 66 | }, 67 | "engines": { 68 | "node": ">=6.9.0" 69 | }, 70 | "funding": { 71 | "type": "opencollective", 72 | "url": "https://opencollective.com/babel" 73 | } 74 | }, 75 | "node_modules/@babel/generator": { 76 | "version": "7.16.0", 77 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", 78 | "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", 79 | "dev": true, 80 | "dependencies": { 81 | "@babel/types": "^7.16.0", 82 | "jsesc": "^2.5.1", 83 | "source-map": "^0.5.0" 84 | }, 85 | "engines": { 86 | "node": ">=6.9.0" 87 | } 88 | }, 89 | "node_modules/@babel/helper-annotate-as-pure": { 90 | "version": "7.16.0", 91 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", 92 | "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", 93 | "dev": true, 94 | "dependencies": { 95 | "@babel/types": "^7.16.0" 96 | }, 97 | "engines": { 98 | "node": ">=6.9.0" 99 | } 100 | }, 101 | "node_modules/@babel/helper-compilation-targets": { 102 | "version": "7.16.0", 103 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz", 104 | "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==", 105 | "dev": true, 106 | "dependencies": { 107 | "@babel/compat-data": "^7.16.0", 108 | "@babel/helper-validator-option": "^7.14.5", 109 | "browserslist": "^4.16.6", 110 | "semver": "^6.3.0" 111 | }, 112 | "engines": { 113 | "node": ">=6.9.0" 114 | }, 115 | "peerDependencies": { 116 | "@babel/core": "^7.0.0" 117 | } 118 | }, 119 | "node_modules/@babel/helper-function-name": { 120 | "version": "7.16.0", 121 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", 122 | "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", 123 | "dev": true, 124 | "dependencies": { 125 | "@babel/helper-get-function-arity": "^7.16.0", 126 | "@babel/template": "^7.16.0", 127 | "@babel/types": "^7.16.0" 128 | }, 129 | "engines": { 130 | "node": ">=6.9.0" 131 | } 132 | }, 133 | "node_modules/@babel/helper-get-function-arity": { 134 | "version": "7.16.0", 135 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", 136 | "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", 137 | "dev": true, 138 | "dependencies": { 139 | "@babel/types": "^7.16.0" 140 | }, 141 | "engines": { 142 | "node": ">=6.9.0" 143 | } 144 | }, 145 | "node_modules/@babel/helper-hoist-variables": { 146 | "version": "7.16.0", 147 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", 148 | "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", 149 | "dev": true, 150 | "dependencies": { 151 | "@babel/types": "^7.16.0" 152 | }, 153 | "engines": { 154 | "node": ">=6.9.0" 155 | } 156 | }, 157 | "node_modules/@babel/helper-member-expression-to-functions": { 158 | "version": "7.16.0", 159 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", 160 | "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", 161 | "dev": true, 162 | "dependencies": { 163 | "@babel/types": "^7.16.0" 164 | }, 165 | "engines": { 166 | "node": ">=6.9.0" 167 | } 168 | }, 169 | "node_modules/@babel/helper-module-imports": { 170 | "version": "7.16.0", 171 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", 172 | "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", 173 | "dev": true, 174 | "dependencies": { 175 | "@babel/types": "^7.16.0" 176 | }, 177 | "engines": { 178 | "node": ">=6.9.0" 179 | } 180 | }, 181 | "node_modules/@babel/helper-module-transforms": { 182 | "version": "7.16.0", 183 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", 184 | "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", 185 | "dev": true, 186 | "dependencies": { 187 | "@babel/helper-module-imports": "^7.16.0", 188 | "@babel/helper-replace-supers": "^7.16.0", 189 | "@babel/helper-simple-access": "^7.16.0", 190 | "@babel/helper-split-export-declaration": "^7.16.0", 191 | "@babel/helper-validator-identifier": "^7.15.7", 192 | "@babel/template": "^7.16.0", 193 | "@babel/traverse": "^7.16.0", 194 | "@babel/types": "^7.16.0" 195 | }, 196 | "engines": { 197 | "node": ">=6.9.0" 198 | } 199 | }, 200 | "node_modules/@babel/helper-optimise-call-expression": { 201 | "version": "7.16.0", 202 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", 203 | "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", 204 | "dev": true, 205 | "dependencies": { 206 | "@babel/types": "^7.16.0" 207 | }, 208 | "engines": { 209 | "node": ">=6.9.0" 210 | } 211 | }, 212 | "node_modules/@babel/helper-plugin-utils": { 213 | "version": "7.14.5", 214 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", 215 | "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", 216 | "dev": true, 217 | "engines": { 218 | "node": ">=6.9.0" 219 | } 220 | }, 221 | "node_modules/@babel/helper-replace-supers": { 222 | "version": "7.16.0", 223 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", 224 | "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", 225 | "dev": true, 226 | "dependencies": { 227 | "@babel/helper-member-expression-to-functions": "^7.16.0", 228 | "@babel/helper-optimise-call-expression": "^7.16.0", 229 | "@babel/traverse": "^7.16.0", 230 | "@babel/types": "^7.16.0" 231 | }, 232 | "engines": { 233 | "node": ">=6.9.0" 234 | } 235 | }, 236 | "node_modules/@babel/helper-simple-access": { 237 | "version": "7.16.0", 238 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", 239 | "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", 240 | "dev": true, 241 | "dependencies": { 242 | "@babel/types": "^7.16.0" 243 | }, 244 | "engines": { 245 | "node": ">=6.9.0" 246 | } 247 | }, 248 | "node_modules/@babel/helper-split-export-declaration": { 249 | "version": "7.16.0", 250 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", 251 | "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", 252 | "dev": true, 253 | "dependencies": { 254 | "@babel/types": "^7.16.0" 255 | }, 256 | "engines": { 257 | "node": ">=6.9.0" 258 | } 259 | }, 260 | "node_modules/@babel/helper-validator-identifier": { 261 | "version": "7.15.7", 262 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", 263 | "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", 264 | "dev": true, 265 | "engines": { 266 | "node": ">=6.9.0" 267 | } 268 | }, 269 | "node_modules/@babel/helper-validator-option": { 270 | "version": "7.14.5", 271 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", 272 | "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", 273 | "dev": true, 274 | "engines": { 275 | "node": ">=6.9.0" 276 | } 277 | }, 278 | "node_modules/@babel/helpers": { 279 | "version": "7.16.0", 280 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", 281 | "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", 282 | "dev": true, 283 | "dependencies": { 284 | "@babel/template": "^7.16.0", 285 | "@babel/traverse": "^7.16.0", 286 | "@babel/types": "^7.16.0" 287 | }, 288 | "engines": { 289 | "node": ">=6.9.0" 290 | } 291 | }, 292 | "node_modules/@babel/highlight": { 293 | "version": "7.16.0", 294 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", 295 | "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", 296 | "dev": true, 297 | "dependencies": { 298 | "@babel/helper-validator-identifier": "^7.15.7", 299 | "chalk": "^2.0.0", 300 | "js-tokens": "^4.0.0" 301 | }, 302 | "engines": { 303 | "node": ">=6.9.0" 304 | } 305 | }, 306 | "node_modules/@babel/parser": { 307 | "version": "7.16.2", 308 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", 309 | "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", 310 | "dev": true, 311 | "bin": { 312 | "parser": "bin/babel-parser.js" 313 | }, 314 | "engines": { 315 | "node": ">=6.0.0" 316 | } 317 | }, 318 | "node_modules/@babel/plugin-syntax-jsx": { 319 | "version": "7.16.0", 320 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", 321 | "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", 322 | "dev": true, 323 | "dependencies": { 324 | "@babel/helper-plugin-utils": "^7.14.5" 325 | }, 326 | "engines": { 327 | "node": ">=6.9.0" 328 | }, 329 | "peerDependencies": { 330 | "@babel/core": "^7.0.0-0" 331 | } 332 | }, 333 | "node_modules/@babel/plugin-transform-react-jsx": { 334 | "version": "7.16.0", 335 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz", 336 | "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==", 337 | "dev": true, 338 | "dependencies": { 339 | "@babel/helper-annotate-as-pure": "^7.16.0", 340 | "@babel/helper-module-imports": "^7.16.0", 341 | "@babel/helper-plugin-utils": "^7.14.5", 342 | "@babel/plugin-syntax-jsx": "^7.16.0", 343 | "@babel/types": "^7.16.0" 344 | }, 345 | "engines": { 346 | "node": ">=6.9.0" 347 | }, 348 | "peerDependencies": { 349 | "@babel/core": "^7.0.0-0" 350 | } 351 | }, 352 | "node_modules/@babel/plugin-transform-react-jsx-development": { 353 | "version": "7.16.0", 354 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz", 355 | "integrity": "sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==", 356 | "dev": true, 357 | "dependencies": { 358 | "@babel/plugin-transform-react-jsx": "^7.16.0" 359 | }, 360 | "engines": { 361 | "node": ">=6.9.0" 362 | }, 363 | "peerDependencies": { 364 | "@babel/core": "^7.0.0-0" 365 | } 366 | }, 367 | "node_modules/@babel/plugin-transform-react-jsx-self": { 368 | "version": "7.16.0", 369 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.0.tgz", 370 | "integrity": "sha512-97yCFY+2GvniqOThOSjPor8xUoDiQ0STVWAQMl3pjhJoFVe5DuXDLZCRSZxu9clx+oRCbTiXGgKEG/Yoyo6Y+w==", 371 | "dev": true, 372 | "dependencies": { 373 | "@babel/helper-plugin-utils": "^7.14.5" 374 | }, 375 | "engines": { 376 | "node": ">=6.9.0" 377 | }, 378 | "peerDependencies": { 379 | "@babel/core": "^7.0.0-0" 380 | } 381 | }, 382 | "node_modules/@babel/plugin-transform-react-jsx-source": { 383 | "version": "7.16.0", 384 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.0.tgz", 385 | "integrity": "sha512-8yvbGGrHOeb/oyPc9tzNoe9/lmIjz3HLa9Nc5dMGDyNpGjfFrk8D2KdEq9NRkftZzeoQEW6yPQ29TMZtrLiUUA==", 386 | "dev": true, 387 | "dependencies": { 388 | "@babel/helper-plugin-utils": "^7.14.5" 389 | }, 390 | "engines": { 391 | "node": ">=6.9.0" 392 | }, 393 | "peerDependencies": { 394 | "@babel/core": "^7.0.0-0" 395 | } 396 | }, 397 | "node_modules/@babel/runtime": { 398 | "version": "7.16.0", 399 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", 400 | "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", 401 | "dependencies": { 402 | "regenerator-runtime": "^0.13.4" 403 | }, 404 | "engines": { 405 | "node": ">=6.9.0" 406 | } 407 | }, 408 | "node_modules/@babel/template": { 409 | "version": "7.16.0", 410 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", 411 | "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", 412 | "dev": true, 413 | "dependencies": { 414 | "@babel/code-frame": "^7.16.0", 415 | "@babel/parser": "^7.16.0", 416 | "@babel/types": "^7.16.0" 417 | }, 418 | "engines": { 419 | "node": ">=6.9.0" 420 | } 421 | }, 422 | "node_modules/@babel/traverse": { 423 | "version": "7.16.0", 424 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", 425 | "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", 426 | "dev": true, 427 | "dependencies": { 428 | "@babel/code-frame": "^7.16.0", 429 | "@babel/generator": "^7.16.0", 430 | "@babel/helper-function-name": "^7.16.0", 431 | "@babel/helper-hoist-variables": "^7.16.0", 432 | "@babel/helper-split-export-declaration": "^7.16.0", 433 | "@babel/parser": "^7.16.0", 434 | "@babel/types": "^7.16.0", 435 | "debug": "^4.1.0", 436 | "globals": "^11.1.0" 437 | }, 438 | "engines": { 439 | "node": ">=6.9.0" 440 | } 441 | }, 442 | "node_modules/@babel/types": { 443 | "version": "7.16.0", 444 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", 445 | "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", 446 | "dev": true, 447 | "dependencies": { 448 | "@babel/helper-validator-identifier": "^7.15.7", 449 | "to-fast-properties": "^2.0.0" 450 | }, 451 | "engines": { 452 | "node": ">=6.9.0" 453 | } 454 | }, 455 | "node_modules/@loadable/component": { 456 | "version": "5.15.2", 457 | "resolved": "https://registry.npmjs.org/@loadable/component/-/component-5.15.2.tgz", 458 | "integrity": "sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==", 459 | "dependencies": { 460 | "@babel/runtime": "^7.7.7", 461 | "hoist-non-react-statics": "^3.3.1", 462 | "react-is": "^16.12.0" 463 | }, 464 | "engines": { 465 | "node": ">=8" 466 | }, 467 | "funding": { 468 | "type": "github", 469 | "url": "https://github.com/sponsors/gregberge" 470 | }, 471 | "peerDependencies": { 472 | "react": ">=16.3.0" 473 | } 474 | }, 475 | "node_modules/@rollup/pluginutils": { 476 | "version": "4.1.1", 477 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz", 478 | "integrity": "sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==", 479 | "dev": true, 480 | "dependencies": { 481 | "estree-walker": "^2.0.1", 482 | "picomatch": "^2.2.2" 483 | }, 484 | "engines": { 485 | "node": ">= 8.0.0" 486 | } 487 | }, 488 | "node_modules/@vitejs/plugin-react": { 489 | "version": "1.0.7", 490 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-1.0.7.tgz", 491 | "integrity": "sha512-dzxzohFOAVVXpGlFn6Uvw2xaSLp80Vjmg2e5G1XdMV266vVKrcDqg9CWP/AiJiXuubNUdgy1k4E8dNXI6WCyhw==", 492 | "dev": true, 493 | "dependencies": { 494 | "@babel/core": "^7.15.5", 495 | "@babel/plugin-transform-react-jsx": "^7.14.9", 496 | "@babel/plugin-transform-react-jsx-development": "^7.14.5", 497 | "@babel/plugin-transform-react-jsx-self": "^7.14.9", 498 | "@babel/plugin-transform-react-jsx-source": "^7.14.5", 499 | "@rollup/pluginutils": "^4.1.1", 500 | "react-refresh": "^0.10.0", 501 | "resolve": "^1.20.0" 502 | }, 503 | "engines": { 504 | "node": ">=12.0.0" 505 | } 506 | }, 507 | "node_modules/ansi-styles": { 508 | "version": "3.2.1", 509 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 510 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 511 | "dev": true, 512 | "dependencies": { 513 | "color-convert": "^1.9.0" 514 | }, 515 | "engines": { 516 | "node": ">=4" 517 | } 518 | }, 519 | "node_modules/browserslist": { 520 | "version": "4.17.6", 521 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", 522 | "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", 523 | "dev": true, 524 | "dependencies": { 525 | "caniuse-lite": "^1.0.30001274", 526 | "electron-to-chromium": "^1.3.886", 527 | "escalade": "^3.1.1", 528 | "node-releases": "^2.0.1", 529 | "picocolors": "^1.0.0" 530 | }, 531 | "bin": { 532 | "browserslist": "cli.js" 533 | }, 534 | "engines": { 535 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 536 | }, 537 | "funding": { 538 | "type": "opencollective", 539 | "url": "https://opencollective.com/browserslist" 540 | } 541 | }, 542 | "node_modules/caniuse-lite": { 543 | "version": "1.0.30001278", 544 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", 545 | "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", 546 | "dev": true, 547 | "funding": { 548 | "type": "opencollective", 549 | "url": "https://opencollective.com/browserslist" 550 | } 551 | }, 552 | "node_modules/chalk": { 553 | "version": "2.4.2", 554 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 555 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 556 | "dev": true, 557 | "dependencies": { 558 | "ansi-styles": "^3.2.1", 559 | "escape-string-regexp": "^1.0.5", 560 | "supports-color": "^5.3.0" 561 | }, 562 | "engines": { 563 | "node": ">=4" 564 | } 565 | }, 566 | "node_modules/color-convert": { 567 | "version": "1.9.3", 568 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 569 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 570 | "dev": true, 571 | "dependencies": { 572 | "color-name": "1.1.3" 573 | } 574 | }, 575 | "node_modules/color-name": { 576 | "version": "1.1.3", 577 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 578 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 579 | "dev": true 580 | }, 581 | "node_modules/convert-source-map": { 582 | "version": "1.8.0", 583 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 584 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 585 | "dev": true, 586 | "dependencies": { 587 | "safe-buffer": "~5.1.1" 588 | } 589 | }, 590 | "node_modules/debug": { 591 | "version": "4.3.2", 592 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 593 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 594 | "dev": true, 595 | "dependencies": { 596 | "ms": "2.1.2" 597 | }, 598 | "engines": { 599 | "node": ">=6.0" 600 | }, 601 | "peerDependenciesMeta": { 602 | "supports-color": { 603 | "optional": true 604 | } 605 | } 606 | }, 607 | "node_modules/decode-uri-component": { 608 | "version": "0.2.0", 609 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 610 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 611 | "engines": { 612 | "node": ">=0.10" 613 | } 614 | }, 615 | "node_modules/electron-to-chromium": { 616 | "version": "1.3.890", 617 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", 618 | "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", 619 | "dev": true 620 | }, 621 | "node_modules/esbuild": { 622 | "version": "0.13.12", 623 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.12.tgz", 624 | "integrity": "sha512-vTKKUt+yoz61U/BbrnmlG9XIjwpdIxmHB8DlPR0AAW6OdS+nBQBci6LUHU2q9WbBobMEIQxxDpKbkmOGYvxsow==", 625 | "dev": true, 626 | "hasInstallScript": true, 627 | "bin": { 628 | "esbuild": "bin/esbuild" 629 | }, 630 | "optionalDependencies": { 631 | "esbuild-android-arm64": "0.13.12", 632 | "esbuild-darwin-64": "0.13.12", 633 | "esbuild-darwin-arm64": "0.13.12", 634 | "esbuild-freebsd-64": "0.13.12", 635 | "esbuild-freebsd-arm64": "0.13.12", 636 | "esbuild-linux-32": "0.13.12", 637 | "esbuild-linux-64": "0.13.12", 638 | "esbuild-linux-arm": "0.13.12", 639 | "esbuild-linux-arm64": "0.13.12", 640 | "esbuild-linux-mips64le": "0.13.12", 641 | "esbuild-linux-ppc64le": "0.13.12", 642 | "esbuild-netbsd-64": "0.13.12", 643 | "esbuild-openbsd-64": "0.13.12", 644 | "esbuild-sunos-64": "0.13.12", 645 | "esbuild-windows-32": "0.13.12", 646 | "esbuild-windows-64": "0.13.12", 647 | "esbuild-windows-arm64": "0.13.12" 648 | } 649 | }, 650 | "node_modules/esbuild-android-arm64": { 651 | "version": "0.13.12", 652 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.12.tgz", 653 | "integrity": "sha512-TSVZVrb4EIXz6KaYjXfTzPyyRpXV5zgYIADXtQsIenjZ78myvDGaPi11o4ZSaHIwFHsuwkB6ne5SZRBwAQ7maw==", 654 | "cpu": [ 655 | "arm64" 656 | ], 657 | "dev": true, 658 | "optional": true, 659 | "os": [ 660 | "android" 661 | ] 662 | }, 663 | "node_modules/esbuild-darwin-64": { 664 | "version": "0.13.12", 665 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.12.tgz", 666 | "integrity": "sha512-c51C+N+UHySoV2lgfWSwwmlnLnL0JWj/LzuZt9Ltk9ub1s2Y8cr6SQV5W3mqVH1egUceew6KZ8GyI4nwu+fhsw==", 667 | "cpu": [ 668 | "x64" 669 | ], 670 | "dev": true, 671 | "optional": true, 672 | "os": [ 673 | "darwin" 674 | ] 675 | }, 676 | "node_modules/esbuild-darwin-arm64": { 677 | "version": "0.13.12", 678 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.12.tgz", 679 | "integrity": "sha512-JvAMtshP45Hd8A8wOzjkY1xAnTKTYuP/QUaKp5eUQGX+76GIie3fCdUUr2ZEKdvpSImNqxiZSIMziEiGB5oUmQ==", 680 | "cpu": [ 681 | "arm64" 682 | ], 683 | "dev": true, 684 | "optional": true, 685 | "os": [ 686 | "darwin" 687 | ] 688 | }, 689 | "node_modules/esbuild-freebsd-64": { 690 | "version": "0.13.12", 691 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.12.tgz", 692 | "integrity": "sha512-r6On/Skv9f0ZjTu6PW5o7pdXr8aOgtFOEURJZYf1XAJs0IQ+gW+o1DzXjVkIoT+n1cm3N/t1KRJfX71MPg/ZUA==", 693 | "cpu": [ 694 | "x64" 695 | ], 696 | "dev": true, 697 | "optional": true, 698 | "os": [ 699 | "freebsd" 700 | ] 701 | }, 702 | "node_modules/esbuild-freebsd-arm64": { 703 | "version": "0.13.12", 704 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.12.tgz", 705 | "integrity": "sha512-F6LmI2Q1gii073kmBE3NOTt/6zLL5zvZsxNLF8PMAwdHc+iBhD1vzfI8uQZMJA1IgXa3ocr3L3DJH9fLGXy6Yw==", 706 | "cpu": [ 707 | "arm64" 708 | ], 709 | "dev": true, 710 | "optional": true, 711 | "os": [ 712 | "freebsd" 713 | ] 714 | }, 715 | "node_modules/esbuild-linux-32": { 716 | "version": "0.13.12", 717 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.12.tgz", 718 | "integrity": "sha512-U1UZwG3UIwF7/V4tCVAo/nkBV9ag5KJiJTt+gaCmLVWH3bPLX7y+fNlhIWZy8raTMnXhMKfaTvWZ9TtmXzvkuQ==", 719 | "cpu": [ 720 | "ia32" 721 | ], 722 | "dev": true, 723 | "optional": true, 724 | "os": [ 725 | "linux" 726 | ] 727 | }, 728 | "node_modules/esbuild-linux-64": { 729 | "version": "0.13.12", 730 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.12.tgz", 731 | "integrity": "sha512-YpXSwtu2NxN3N4ifJxEdsgd6Q5d8LYqskrAwjmoCT6yQnEHJSF5uWcxv783HWN7lnGpJi9KUtDvYsnMdyGw71Q==", 732 | "cpu": [ 733 | "x64" 734 | ], 735 | "dev": true, 736 | "optional": true, 737 | "os": [ 738 | "linux" 739 | ] 740 | }, 741 | "node_modules/esbuild-linux-arm": { 742 | "version": "0.13.12", 743 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.12.tgz", 744 | "integrity": "sha512-SyiT/JKxU6J+DY2qUiSLZJqCAftIt3uoGejZ0HDnUM2MGJqEGSGh7p1ecVL2gna3PxS4P+j6WAehCwgkBPXNIw==", 745 | "cpu": [ 746 | "arm" 747 | ], 748 | "dev": true, 749 | "optional": true, 750 | "os": [ 751 | "linux" 752 | ] 753 | }, 754 | "node_modules/esbuild-linux-arm64": { 755 | "version": "0.13.12", 756 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.12.tgz", 757 | "integrity": "sha512-sgDNb8kb3BVodtAlcFGgwk+43KFCYjnFOaOfJibXnnIojNWuJHpL6aQJ4mumzNWw8Rt1xEtDQyuGK9f+Y24jGA==", 758 | "cpu": [ 759 | "arm64" 760 | ], 761 | "dev": true, 762 | "optional": true, 763 | "os": [ 764 | "linux" 765 | ] 766 | }, 767 | "node_modules/esbuild-linux-mips64le": { 768 | "version": "0.13.12", 769 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.12.tgz", 770 | "integrity": "sha512-qQJHlZBG+QwVIA8AbTEtbvF084QgDi4DaUsUnA+EolY1bxrG+UyOuGflM2ZritGhfS/k7THFjJbjH2wIeoKA2g==", 771 | "cpu": [ 772 | "mips64el" 773 | ], 774 | "dev": true, 775 | "optional": true, 776 | "os": [ 777 | "linux" 778 | ] 779 | }, 780 | "node_modules/esbuild-linux-ppc64le": { 781 | "version": "0.13.12", 782 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.12.tgz", 783 | "integrity": "sha512-2dSnm1ldL7Lppwlo04CGQUpwNn5hGqXI38OzaoPOkRsBRWFBozyGxTFSee/zHFS+Pdh3b28JJbRK3owrrRgWNw==", 784 | "cpu": [ 785 | "ppc64" 786 | ], 787 | "dev": true, 788 | "optional": true, 789 | "os": [ 790 | "linux" 791 | ] 792 | }, 793 | "node_modules/esbuild-netbsd-64": { 794 | "version": "0.13.12", 795 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.12.tgz", 796 | "integrity": "sha512-D4raxr02dcRiQNbxOLzpqBzcJNFAdsDNxjUbKkDMZBkL54Z0vZh4LRndycdZAMcIdizC/l/Yp/ZsBdAFxc5nbA==", 797 | "cpu": [ 798 | "x64" 799 | ], 800 | "dev": true, 801 | "optional": true, 802 | "os": [ 803 | "netbsd" 804 | ] 805 | }, 806 | "node_modules/esbuild-openbsd-64": { 807 | "version": "0.13.12", 808 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.12.tgz", 809 | "integrity": "sha512-KuLCmYMb2kh05QuPJ+va60bKIH5wHL8ypDkmpy47lzwmdxNsuySeCMHuTv5o2Af1RUn5KLO5ZxaZeq4GEY7DaQ==", 810 | "cpu": [ 811 | "x64" 812 | ], 813 | "dev": true, 814 | "optional": true, 815 | "os": [ 816 | "openbsd" 817 | ] 818 | }, 819 | "node_modules/esbuild-sunos-64": { 820 | "version": "0.13.12", 821 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.12.tgz", 822 | "integrity": "sha512-jBsF+e0woK3miKI8ufGWKG3o3rY9DpHvCVRn5eburMIIE+2c+y3IZ1srsthKyKI6kkXLvV4Cf/E7w56kLipMXw==", 823 | "cpu": [ 824 | "x64" 825 | ], 826 | "dev": true, 827 | "optional": true, 828 | "os": [ 829 | "sunos" 830 | ] 831 | }, 832 | "node_modules/esbuild-windows-32": { 833 | "version": "0.13.12", 834 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.12.tgz", 835 | "integrity": "sha512-L9m4lLFQrFeR7F+eLZXG82SbXZfUhyfu6CexZEil6vm+lc7GDCE0Q8DiNutkpzjv1+RAbIGVva9muItQ7HVTkQ==", 836 | "cpu": [ 837 | "ia32" 838 | ], 839 | "dev": true, 840 | "optional": true, 841 | "os": [ 842 | "win32" 843 | ] 844 | }, 845 | "node_modules/esbuild-windows-64": { 846 | "version": "0.13.12", 847 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.12.tgz", 848 | "integrity": "sha512-k4tX4uJlSbSkfs78W5d9+I9gpd+7N95W7H2bgOMFPsYREVJs31+Q2gLLHlsnlY95zBoPQMIzHooUIsixQIBjaQ==", 849 | "cpu": [ 850 | "x64" 851 | ], 852 | "dev": true, 853 | "optional": true, 854 | "os": [ 855 | "win32" 856 | ] 857 | }, 858 | "node_modules/esbuild-windows-arm64": { 859 | "version": "0.13.12", 860 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.12.tgz", 861 | "integrity": "sha512-2tTv/BpYRIvuwHpp2M960nG7uvL+d78LFW/ikPItO+2GfK51CswIKSetSpDii+cjz8e9iSPgs+BU4o8nWICBwQ==", 862 | "cpu": [ 863 | "arm64" 864 | ], 865 | "dev": true, 866 | "optional": true, 867 | "os": [ 868 | "win32" 869 | ] 870 | }, 871 | "node_modules/escalade": { 872 | "version": "3.1.1", 873 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 874 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 875 | "dev": true, 876 | "engines": { 877 | "node": ">=6" 878 | } 879 | }, 880 | "node_modules/escape-string-regexp": { 881 | "version": "1.0.5", 882 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 883 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 884 | "dev": true, 885 | "engines": { 886 | "node": ">=0.8.0" 887 | } 888 | }, 889 | "node_modules/estree-walker": { 890 | "version": "2.0.2", 891 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 892 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 893 | "dev": true 894 | }, 895 | "node_modules/filter-obj": { 896 | "version": "1.1.0", 897 | "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", 898 | "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", 899 | "engines": { 900 | "node": ">=0.10.0" 901 | } 902 | }, 903 | "node_modules/fsevents": { 904 | "version": "2.3.2", 905 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 906 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 907 | "dev": true, 908 | "hasInstallScript": true, 909 | "optional": true, 910 | "os": [ 911 | "darwin" 912 | ], 913 | "engines": { 914 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 915 | } 916 | }, 917 | "node_modules/function-bind": { 918 | "version": "1.1.1", 919 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 920 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 921 | "dev": true 922 | }, 923 | "node_modules/gensync": { 924 | "version": "1.0.0-beta.2", 925 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 926 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 927 | "dev": true, 928 | "engines": { 929 | "node": ">=6.9.0" 930 | } 931 | }, 932 | "node_modules/globals": { 933 | "version": "11.12.0", 934 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 935 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 936 | "dev": true, 937 | "engines": { 938 | "node": ">=4" 939 | } 940 | }, 941 | "node_modules/has": { 942 | "version": "1.0.3", 943 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 944 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 945 | "dev": true, 946 | "dependencies": { 947 | "function-bind": "^1.1.1" 948 | }, 949 | "engines": { 950 | "node": ">= 0.4.0" 951 | } 952 | }, 953 | "node_modules/has-flag": { 954 | "version": "3.0.0", 955 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 956 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 957 | "dev": true, 958 | "engines": { 959 | "node": ">=4" 960 | } 961 | }, 962 | "node_modules/history": { 963 | "version": "5.1.0", 964 | "resolved": "https://registry.npmjs.org/history/-/history-5.1.0.tgz", 965 | "integrity": "sha512-zPuQgPacm2vH2xdORvGGz1wQMuHSIB56yNAy5FnLuwOwgSYyPKptJtcMm6Ev+hRGeS+GzhbmRacHzvlESbFwDg==", 966 | "dependencies": { 967 | "@babel/runtime": "^7.7.6" 968 | } 969 | }, 970 | "node_modules/hoist-non-react-statics": { 971 | "version": "3.3.2", 972 | "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", 973 | "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", 974 | "dependencies": { 975 | "react-is": "^16.7.0" 976 | } 977 | }, 978 | "node_modules/is-core-module": { 979 | "version": "2.8.0", 980 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", 981 | "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", 982 | "dev": true, 983 | "dependencies": { 984 | "has": "^1.0.3" 985 | }, 986 | "funding": { 987 | "url": "https://github.com/sponsors/ljharb" 988 | } 989 | }, 990 | "node_modules/js-tokens": { 991 | "version": "4.0.0", 992 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 993 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 994 | }, 995 | "node_modules/jsesc": { 996 | "version": "2.5.2", 997 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 998 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 999 | "dev": true, 1000 | "bin": { 1001 | "jsesc": "bin/jsesc" 1002 | }, 1003 | "engines": { 1004 | "node": ">=4" 1005 | } 1006 | }, 1007 | "node_modules/json5": { 1008 | "version": "2.2.0", 1009 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", 1010 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", 1011 | "dev": true, 1012 | "dependencies": { 1013 | "minimist": "^1.2.5" 1014 | }, 1015 | "bin": { 1016 | "json5": "lib/cli.js" 1017 | }, 1018 | "engines": { 1019 | "node": ">=6" 1020 | } 1021 | }, 1022 | "node_modules/loose-envify": { 1023 | "version": "1.4.0", 1024 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1025 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1026 | "dependencies": { 1027 | "js-tokens": "^3.0.0 || ^4.0.0" 1028 | }, 1029 | "bin": { 1030 | "loose-envify": "cli.js" 1031 | } 1032 | }, 1033 | "node_modules/minimist": { 1034 | "version": "1.2.5", 1035 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1036 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1037 | "dev": true 1038 | }, 1039 | "node_modules/ms": { 1040 | "version": "2.1.2", 1041 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1042 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1043 | "dev": true 1044 | }, 1045 | "node_modules/nanoid": { 1046 | "version": "3.1.30", 1047 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", 1048 | "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", 1049 | "dev": true, 1050 | "bin": { 1051 | "nanoid": "bin/nanoid.cjs" 1052 | }, 1053 | "engines": { 1054 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1055 | } 1056 | }, 1057 | "node_modules/node-releases": { 1058 | "version": "2.0.1", 1059 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", 1060 | "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", 1061 | "dev": true 1062 | }, 1063 | "node_modules/object-assign": { 1064 | "version": "4.1.1", 1065 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1066 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1067 | "engines": { 1068 | "node": ">=0.10.0" 1069 | } 1070 | }, 1071 | "node_modules/path-parse": { 1072 | "version": "1.0.7", 1073 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1074 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1075 | "dev": true 1076 | }, 1077 | "node_modules/picocolors": { 1078 | "version": "1.0.0", 1079 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1080 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1081 | "dev": true 1082 | }, 1083 | "node_modules/picomatch": { 1084 | "version": "2.3.0", 1085 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 1086 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 1087 | "dev": true, 1088 | "engines": { 1089 | "node": ">=8.6" 1090 | }, 1091 | "funding": { 1092 | "url": "https://github.com/sponsors/jonschlinkert" 1093 | } 1094 | }, 1095 | "node_modules/postcss": { 1096 | "version": "8.3.11", 1097 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", 1098 | "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", 1099 | "dev": true, 1100 | "dependencies": { 1101 | "nanoid": "^3.1.30", 1102 | "picocolors": "^1.0.0", 1103 | "source-map-js": "^0.6.2" 1104 | }, 1105 | "engines": { 1106 | "node": "^10 || ^12 || >=14" 1107 | }, 1108 | "funding": { 1109 | "type": "opencollective", 1110 | "url": "https://opencollective.com/postcss/" 1111 | } 1112 | }, 1113 | "node_modules/query-string": { 1114 | "version": "7.0.1", 1115 | "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", 1116 | "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", 1117 | "dependencies": { 1118 | "decode-uri-component": "^0.2.0", 1119 | "filter-obj": "^1.1.0", 1120 | "split-on-first": "^1.0.0", 1121 | "strict-uri-encode": "^2.0.0" 1122 | }, 1123 | "engines": { 1124 | "node": ">=6" 1125 | }, 1126 | "funding": { 1127 | "url": "https://github.com/sponsors/sindresorhus" 1128 | } 1129 | }, 1130 | "node_modules/react": { 1131 | "version": "17.0.2", 1132 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 1133 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 1134 | "dependencies": { 1135 | "loose-envify": "^1.1.0", 1136 | "object-assign": "^4.1.1" 1137 | }, 1138 | "engines": { 1139 | "node": ">=0.10.0" 1140 | } 1141 | }, 1142 | "node_modules/react-dom": { 1143 | "version": "17.0.2", 1144 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 1145 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 1146 | "dependencies": { 1147 | "loose-envify": "^1.1.0", 1148 | "object-assign": "^4.1.1", 1149 | "scheduler": "^0.20.2" 1150 | }, 1151 | "peerDependencies": { 1152 | "react": "17.0.2" 1153 | } 1154 | }, 1155 | "node_modules/react-is": { 1156 | "version": "16.13.1", 1157 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 1158 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 1159 | }, 1160 | "node_modules/react-refresh": { 1161 | "version": "0.10.0", 1162 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.10.0.tgz", 1163 | "integrity": "sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==", 1164 | "dev": true, 1165 | "engines": { 1166 | "node": ">=0.10.0" 1167 | } 1168 | }, 1169 | "node_modules/react-router": { 1170 | "version": "6.0.1", 1171 | "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.0.1.tgz", 1172 | "integrity": "sha512-O3iab52icFnQaHWONZr50CcjRlf3gx8CCjPQ0YxN8xEuEklRJNgoZSeoYFYz0fLvA4cpnhc306Nd8BYgL4QZrQ==", 1173 | "dependencies": { 1174 | "history": "^5.1.0" 1175 | }, 1176 | "peerDependencies": { 1177 | "react": ">=16.8" 1178 | } 1179 | }, 1180 | "node_modules/react-router-dom": { 1181 | "version": "6.0.1", 1182 | "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.0.1.tgz", 1183 | "integrity": "sha512-fiE+PzFTrof5q8Z/+RHzuiin9/U/q5KY2adlHClwYexbY0DqJnHcC/0U9yv3Amz9em2/bcK7X8mk7+zxB+qhvg==", 1184 | "dependencies": { 1185 | "history": "^5.1.0", 1186 | "react-router": "6.0.1" 1187 | }, 1188 | "peerDependencies": { 1189 | "react": ">=16.8", 1190 | "react-dom": ">=16.8" 1191 | } 1192 | }, 1193 | "node_modules/regenerator-runtime": { 1194 | "version": "0.13.9", 1195 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", 1196 | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 1197 | }, 1198 | "node_modules/resolve": { 1199 | "version": "1.20.0", 1200 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 1201 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 1202 | "dev": true, 1203 | "dependencies": { 1204 | "is-core-module": "^2.2.0", 1205 | "path-parse": "^1.0.6" 1206 | }, 1207 | "funding": { 1208 | "url": "https://github.com/sponsors/ljharb" 1209 | } 1210 | }, 1211 | "node_modules/rollup": { 1212 | "version": "2.59.0", 1213 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", 1214 | "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", 1215 | "dev": true, 1216 | "bin": { 1217 | "rollup": "dist/bin/rollup" 1218 | }, 1219 | "engines": { 1220 | "node": ">=10.0.0" 1221 | }, 1222 | "optionalDependencies": { 1223 | "fsevents": "~2.3.2" 1224 | } 1225 | }, 1226 | "node_modules/safe-buffer": { 1227 | "version": "5.1.2", 1228 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1229 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1230 | "dev": true 1231 | }, 1232 | "node_modules/scheduler": { 1233 | "version": "0.20.2", 1234 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 1235 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 1236 | "dependencies": { 1237 | "loose-envify": "^1.1.0", 1238 | "object-assign": "^4.1.1" 1239 | } 1240 | }, 1241 | "node_modules/semver": { 1242 | "version": "6.3.0", 1243 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1244 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1245 | "dev": true, 1246 | "bin": { 1247 | "semver": "bin/semver.js" 1248 | } 1249 | }, 1250 | "node_modules/serialize-query-params": { 1251 | "version": "1.3.6", 1252 | "resolved": "https://registry.npmjs.org/serialize-query-params/-/serialize-query-params-1.3.6.tgz", 1253 | "integrity": "sha512-VlH7sfWNyPVZClPkRacopn6sn5uQMXBsjPVz1+pBHX895VpcYVznfJtZ49e6jymcrz+l/vowkepCZn/7xEAEdw==", 1254 | "peerDependencies": { 1255 | "query-string": ">=5.1.1" 1256 | } 1257 | }, 1258 | "node_modules/source-map": { 1259 | "version": "0.5.7", 1260 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1261 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1262 | "dev": true, 1263 | "engines": { 1264 | "node": ">=0.10.0" 1265 | } 1266 | }, 1267 | "node_modules/source-map-js": { 1268 | "version": "0.6.2", 1269 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", 1270 | "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", 1271 | "dev": true, 1272 | "engines": { 1273 | "node": ">=0.10.0" 1274 | } 1275 | }, 1276 | "node_modules/split-on-first": { 1277 | "version": "1.1.0", 1278 | "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", 1279 | "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", 1280 | "engines": { 1281 | "node": ">=6" 1282 | } 1283 | }, 1284 | "node_modules/strict-uri-encode": { 1285 | "version": "2.0.0", 1286 | "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", 1287 | "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", 1288 | "engines": { 1289 | "node": ">=4" 1290 | } 1291 | }, 1292 | "node_modules/supports-color": { 1293 | "version": "5.5.0", 1294 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1295 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1296 | "dev": true, 1297 | "dependencies": { 1298 | "has-flag": "^3.0.0" 1299 | }, 1300 | "engines": { 1301 | "node": ">=4" 1302 | } 1303 | }, 1304 | "node_modules/to-fast-properties": { 1305 | "version": "2.0.0", 1306 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1307 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 1308 | "dev": true, 1309 | "engines": { 1310 | "node": ">=4" 1311 | } 1312 | }, 1313 | "node_modules/use-query-params": { 1314 | "version": "1.2.3", 1315 | "resolved": "https://registry.npmjs.org/use-query-params/-/use-query-params-1.2.3.tgz", 1316 | "integrity": "sha512-cdG0tgbzK+FzsV6DAt2CN8Saa3WpRnze7uC4Rdh7l15epSFq7egmcB/zuREvPNwO5Yk80nUpDZpiyHsoq50d8w==", 1317 | "dependencies": { 1318 | "serialize-query-params": "^1.3.5" 1319 | }, 1320 | "peerDependencies": { 1321 | "query-string": ">=5.1.1", 1322 | "react": ">=16.8.0", 1323 | "react-dom": ">=16.8.0" 1324 | } 1325 | }, 1326 | "node_modules/vite": { 1327 | "version": "2.6.13", 1328 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.13.tgz", 1329 | "integrity": "sha512-+tGZ1OxozRirTudl4M3N3UTNJOlxdVo/qBl2IlDEy/ZpTFcskp+k5ncNjayR3bRYTCbqSOFz2JWGN1UmuDMScA==", 1330 | "dev": true, 1331 | "dependencies": { 1332 | "esbuild": "^0.13.2", 1333 | "postcss": "^8.3.8", 1334 | "resolve": "^1.20.0", 1335 | "rollup": "^2.57.0" 1336 | }, 1337 | "bin": { 1338 | "vite": "bin/vite.js" 1339 | }, 1340 | "engines": { 1341 | "node": ">=12.2.0" 1342 | }, 1343 | "optionalDependencies": { 1344 | "fsevents": "~2.3.2" 1345 | }, 1346 | "peerDependencies": { 1347 | "less": "*", 1348 | "sass": "*", 1349 | "stylus": "*" 1350 | }, 1351 | "peerDependenciesMeta": { 1352 | "less": { 1353 | "optional": true 1354 | }, 1355 | "sass": { 1356 | "optional": true 1357 | }, 1358 | "stylus": { 1359 | "optional": true 1360 | } 1361 | } 1362 | } 1363 | }, 1364 | "dependencies": { 1365 | "@babel/code-frame": { 1366 | "version": "7.16.0", 1367 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", 1368 | "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", 1369 | "dev": true, 1370 | "requires": { 1371 | "@babel/highlight": "^7.16.0" 1372 | } 1373 | }, 1374 | "@babel/compat-data": { 1375 | "version": "7.16.0", 1376 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", 1377 | "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", 1378 | "dev": true 1379 | }, 1380 | "@babel/core": { 1381 | "version": "7.16.0", 1382 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", 1383 | "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", 1384 | "dev": true, 1385 | "requires": { 1386 | "@babel/code-frame": "^7.16.0", 1387 | "@babel/generator": "^7.16.0", 1388 | "@babel/helper-compilation-targets": "^7.16.0", 1389 | "@babel/helper-module-transforms": "^7.16.0", 1390 | "@babel/helpers": "^7.16.0", 1391 | "@babel/parser": "^7.16.0", 1392 | "@babel/template": "^7.16.0", 1393 | "@babel/traverse": "^7.16.0", 1394 | "@babel/types": "^7.16.0", 1395 | "convert-source-map": "^1.7.0", 1396 | "debug": "^4.1.0", 1397 | "gensync": "^1.0.0-beta.2", 1398 | "json5": "^2.1.2", 1399 | "semver": "^6.3.0", 1400 | "source-map": "^0.5.0" 1401 | } 1402 | }, 1403 | "@babel/generator": { 1404 | "version": "7.16.0", 1405 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", 1406 | "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", 1407 | "dev": true, 1408 | "requires": { 1409 | "@babel/types": "^7.16.0", 1410 | "jsesc": "^2.5.1", 1411 | "source-map": "^0.5.0" 1412 | } 1413 | }, 1414 | "@babel/helper-annotate-as-pure": { 1415 | "version": "7.16.0", 1416 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", 1417 | "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", 1418 | "dev": true, 1419 | "requires": { 1420 | "@babel/types": "^7.16.0" 1421 | } 1422 | }, 1423 | "@babel/helper-compilation-targets": { 1424 | "version": "7.16.0", 1425 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz", 1426 | "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==", 1427 | "dev": true, 1428 | "requires": { 1429 | "@babel/compat-data": "^7.16.0", 1430 | "@babel/helper-validator-option": "^7.14.5", 1431 | "browserslist": "^4.16.6", 1432 | "semver": "^6.3.0" 1433 | } 1434 | }, 1435 | "@babel/helper-function-name": { 1436 | "version": "7.16.0", 1437 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", 1438 | "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", 1439 | "dev": true, 1440 | "requires": { 1441 | "@babel/helper-get-function-arity": "^7.16.0", 1442 | "@babel/template": "^7.16.0", 1443 | "@babel/types": "^7.16.0" 1444 | } 1445 | }, 1446 | "@babel/helper-get-function-arity": { 1447 | "version": "7.16.0", 1448 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", 1449 | "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", 1450 | "dev": true, 1451 | "requires": { 1452 | "@babel/types": "^7.16.0" 1453 | } 1454 | }, 1455 | "@babel/helper-hoist-variables": { 1456 | "version": "7.16.0", 1457 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", 1458 | "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", 1459 | "dev": true, 1460 | "requires": { 1461 | "@babel/types": "^7.16.0" 1462 | } 1463 | }, 1464 | "@babel/helper-member-expression-to-functions": { 1465 | "version": "7.16.0", 1466 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", 1467 | "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", 1468 | "dev": true, 1469 | "requires": { 1470 | "@babel/types": "^7.16.0" 1471 | } 1472 | }, 1473 | "@babel/helper-module-imports": { 1474 | "version": "7.16.0", 1475 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", 1476 | "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", 1477 | "dev": true, 1478 | "requires": { 1479 | "@babel/types": "^7.16.0" 1480 | } 1481 | }, 1482 | "@babel/helper-module-transforms": { 1483 | "version": "7.16.0", 1484 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", 1485 | "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", 1486 | "dev": true, 1487 | "requires": { 1488 | "@babel/helper-module-imports": "^7.16.0", 1489 | "@babel/helper-replace-supers": "^7.16.0", 1490 | "@babel/helper-simple-access": "^7.16.0", 1491 | "@babel/helper-split-export-declaration": "^7.16.0", 1492 | "@babel/helper-validator-identifier": "^7.15.7", 1493 | "@babel/template": "^7.16.0", 1494 | "@babel/traverse": "^7.16.0", 1495 | "@babel/types": "^7.16.0" 1496 | } 1497 | }, 1498 | "@babel/helper-optimise-call-expression": { 1499 | "version": "7.16.0", 1500 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", 1501 | "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", 1502 | "dev": true, 1503 | "requires": { 1504 | "@babel/types": "^7.16.0" 1505 | } 1506 | }, 1507 | "@babel/helper-plugin-utils": { 1508 | "version": "7.14.5", 1509 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", 1510 | "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", 1511 | "dev": true 1512 | }, 1513 | "@babel/helper-replace-supers": { 1514 | "version": "7.16.0", 1515 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", 1516 | "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", 1517 | "dev": true, 1518 | "requires": { 1519 | "@babel/helper-member-expression-to-functions": "^7.16.0", 1520 | "@babel/helper-optimise-call-expression": "^7.16.0", 1521 | "@babel/traverse": "^7.16.0", 1522 | "@babel/types": "^7.16.0" 1523 | } 1524 | }, 1525 | "@babel/helper-simple-access": { 1526 | "version": "7.16.0", 1527 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", 1528 | "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", 1529 | "dev": true, 1530 | "requires": { 1531 | "@babel/types": "^7.16.0" 1532 | } 1533 | }, 1534 | "@babel/helper-split-export-declaration": { 1535 | "version": "7.16.0", 1536 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", 1537 | "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", 1538 | "dev": true, 1539 | "requires": { 1540 | "@babel/types": "^7.16.0" 1541 | } 1542 | }, 1543 | "@babel/helper-validator-identifier": { 1544 | "version": "7.15.7", 1545 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", 1546 | "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", 1547 | "dev": true 1548 | }, 1549 | "@babel/helper-validator-option": { 1550 | "version": "7.14.5", 1551 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", 1552 | "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", 1553 | "dev": true 1554 | }, 1555 | "@babel/helpers": { 1556 | "version": "7.16.0", 1557 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", 1558 | "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", 1559 | "dev": true, 1560 | "requires": { 1561 | "@babel/template": "^7.16.0", 1562 | "@babel/traverse": "^7.16.0", 1563 | "@babel/types": "^7.16.0" 1564 | } 1565 | }, 1566 | "@babel/highlight": { 1567 | "version": "7.16.0", 1568 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", 1569 | "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", 1570 | "dev": true, 1571 | "requires": { 1572 | "@babel/helper-validator-identifier": "^7.15.7", 1573 | "chalk": "^2.0.0", 1574 | "js-tokens": "^4.0.0" 1575 | } 1576 | }, 1577 | "@babel/parser": { 1578 | "version": "7.16.2", 1579 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", 1580 | "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", 1581 | "dev": true 1582 | }, 1583 | "@babel/plugin-syntax-jsx": { 1584 | "version": "7.16.0", 1585 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", 1586 | "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", 1587 | "dev": true, 1588 | "requires": { 1589 | "@babel/helper-plugin-utils": "^7.14.5" 1590 | } 1591 | }, 1592 | "@babel/plugin-transform-react-jsx": { 1593 | "version": "7.16.0", 1594 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz", 1595 | "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==", 1596 | "dev": true, 1597 | "requires": { 1598 | "@babel/helper-annotate-as-pure": "^7.16.0", 1599 | "@babel/helper-module-imports": "^7.16.0", 1600 | "@babel/helper-plugin-utils": "^7.14.5", 1601 | "@babel/plugin-syntax-jsx": "^7.16.0", 1602 | "@babel/types": "^7.16.0" 1603 | } 1604 | }, 1605 | "@babel/plugin-transform-react-jsx-development": { 1606 | "version": "7.16.0", 1607 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz", 1608 | "integrity": "sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==", 1609 | "dev": true, 1610 | "requires": { 1611 | "@babel/plugin-transform-react-jsx": "^7.16.0" 1612 | } 1613 | }, 1614 | "@babel/plugin-transform-react-jsx-self": { 1615 | "version": "7.16.0", 1616 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.0.tgz", 1617 | "integrity": "sha512-97yCFY+2GvniqOThOSjPor8xUoDiQ0STVWAQMl3pjhJoFVe5DuXDLZCRSZxu9clx+oRCbTiXGgKEG/Yoyo6Y+w==", 1618 | "dev": true, 1619 | "requires": { 1620 | "@babel/helper-plugin-utils": "^7.14.5" 1621 | } 1622 | }, 1623 | "@babel/plugin-transform-react-jsx-source": { 1624 | "version": "7.16.0", 1625 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.0.tgz", 1626 | "integrity": "sha512-8yvbGGrHOeb/oyPc9tzNoe9/lmIjz3HLa9Nc5dMGDyNpGjfFrk8D2KdEq9NRkftZzeoQEW6yPQ29TMZtrLiUUA==", 1627 | "dev": true, 1628 | "requires": { 1629 | "@babel/helper-plugin-utils": "^7.14.5" 1630 | } 1631 | }, 1632 | "@babel/runtime": { 1633 | "version": "7.16.0", 1634 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", 1635 | "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", 1636 | "requires": { 1637 | "regenerator-runtime": "^0.13.4" 1638 | } 1639 | }, 1640 | "@babel/template": { 1641 | "version": "7.16.0", 1642 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", 1643 | "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", 1644 | "dev": true, 1645 | "requires": { 1646 | "@babel/code-frame": "^7.16.0", 1647 | "@babel/parser": "^7.16.0", 1648 | "@babel/types": "^7.16.0" 1649 | } 1650 | }, 1651 | "@babel/traverse": { 1652 | "version": "7.16.0", 1653 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", 1654 | "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", 1655 | "dev": true, 1656 | "requires": { 1657 | "@babel/code-frame": "^7.16.0", 1658 | "@babel/generator": "^7.16.0", 1659 | "@babel/helper-function-name": "^7.16.0", 1660 | "@babel/helper-hoist-variables": "^7.16.0", 1661 | "@babel/helper-split-export-declaration": "^7.16.0", 1662 | "@babel/parser": "^7.16.0", 1663 | "@babel/types": "^7.16.0", 1664 | "debug": "^4.1.0", 1665 | "globals": "^11.1.0" 1666 | } 1667 | }, 1668 | "@babel/types": { 1669 | "version": "7.16.0", 1670 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", 1671 | "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", 1672 | "dev": true, 1673 | "requires": { 1674 | "@babel/helper-validator-identifier": "^7.15.7", 1675 | "to-fast-properties": "^2.0.0" 1676 | } 1677 | }, 1678 | "@loadable/component": { 1679 | "version": "5.15.2", 1680 | "resolved": "https://registry.npmjs.org/@loadable/component/-/component-5.15.2.tgz", 1681 | "integrity": "sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==", 1682 | "requires": { 1683 | "@babel/runtime": "^7.7.7", 1684 | "hoist-non-react-statics": "^3.3.1", 1685 | "react-is": "^16.12.0" 1686 | } 1687 | }, 1688 | "@rollup/pluginutils": { 1689 | "version": "4.1.1", 1690 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz", 1691 | "integrity": "sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==", 1692 | "dev": true, 1693 | "requires": { 1694 | "estree-walker": "^2.0.1", 1695 | "picomatch": "^2.2.2" 1696 | } 1697 | }, 1698 | "@vitejs/plugin-react": { 1699 | "version": "1.0.7", 1700 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-1.0.7.tgz", 1701 | "integrity": "sha512-dzxzohFOAVVXpGlFn6Uvw2xaSLp80Vjmg2e5G1XdMV266vVKrcDqg9CWP/AiJiXuubNUdgy1k4E8dNXI6WCyhw==", 1702 | "dev": true, 1703 | "requires": { 1704 | "@babel/core": "^7.15.5", 1705 | "@babel/plugin-transform-react-jsx": "^7.14.9", 1706 | "@babel/plugin-transform-react-jsx-development": "^7.14.5", 1707 | "@babel/plugin-transform-react-jsx-self": "^7.14.9", 1708 | "@babel/plugin-transform-react-jsx-source": "^7.14.5", 1709 | "@rollup/pluginutils": "^4.1.1", 1710 | "react-refresh": "^0.10.0", 1711 | "resolve": "^1.20.0" 1712 | } 1713 | }, 1714 | "ansi-styles": { 1715 | "version": "3.2.1", 1716 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1717 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1718 | "dev": true, 1719 | "requires": { 1720 | "color-convert": "^1.9.0" 1721 | } 1722 | }, 1723 | "browserslist": { 1724 | "version": "4.17.6", 1725 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", 1726 | "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", 1727 | "dev": true, 1728 | "requires": { 1729 | "caniuse-lite": "^1.0.30001274", 1730 | "electron-to-chromium": "^1.3.886", 1731 | "escalade": "^3.1.1", 1732 | "node-releases": "^2.0.1", 1733 | "picocolors": "^1.0.0" 1734 | } 1735 | }, 1736 | "caniuse-lite": { 1737 | "version": "1.0.30001278", 1738 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", 1739 | "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", 1740 | "dev": true 1741 | }, 1742 | "chalk": { 1743 | "version": "2.4.2", 1744 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1745 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1746 | "dev": true, 1747 | "requires": { 1748 | "ansi-styles": "^3.2.1", 1749 | "escape-string-regexp": "^1.0.5", 1750 | "supports-color": "^5.3.0" 1751 | } 1752 | }, 1753 | "color-convert": { 1754 | "version": "1.9.3", 1755 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1756 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1757 | "dev": true, 1758 | "requires": { 1759 | "color-name": "1.1.3" 1760 | } 1761 | }, 1762 | "color-name": { 1763 | "version": "1.1.3", 1764 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1765 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1766 | "dev": true 1767 | }, 1768 | "convert-source-map": { 1769 | "version": "1.8.0", 1770 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 1771 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 1772 | "dev": true, 1773 | "requires": { 1774 | "safe-buffer": "~5.1.1" 1775 | } 1776 | }, 1777 | "debug": { 1778 | "version": "4.3.2", 1779 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 1780 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 1781 | "dev": true, 1782 | "requires": { 1783 | "ms": "2.1.2" 1784 | } 1785 | }, 1786 | "decode-uri-component": { 1787 | "version": "0.2.0", 1788 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 1789 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" 1790 | }, 1791 | "electron-to-chromium": { 1792 | "version": "1.3.890", 1793 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", 1794 | "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", 1795 | "dev": true 1796 | }, 1797 | "esbuild": { 1798 | "version": "0.13.12", 1799 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.12.tgz", 1800 | "integrity": "sha512-vTKKUt+yoz61U/BbrnmlG9XIjwpdIxmHB8DlPR0AAW6OdS+nBQBci6LUHU2q9WbBobMEIQxxDpKbkmOGYvxsow==", 1801 | "dev": true, 1802 | "requires": { 1803 | "esbuild-android-arm64": "0.13.12", 1804 | "esbuild-darwin-64": "0.13.12", 1805 | "esbuild-darwin-arm64": "0.13.12", 1806 | "esbuild-freebsd-64": "0.13.12", 1807 | "esbuild-freebsd-arm64": "0.13.12", 1808 | "esbuild-linux-32": "0.13.12", 1809 | "esbuild-linux-64": "0.13.12", 1810 | "esbuild-linux-arm": "0.13.12", 1811 | "esbuild-linux-arm64": "0.13.12", 1812 | "esbuild-linux-mips64le": "0.13.12", 1813 | "esbuild-linux-ppc64le": "0.13.12", 1814 | "esbuild-netbsd-64": "0.13.12", 1815 | "esbuild-openbsd-64": "0.13.12", 1816 | "esbuild-sunos-64": "0.13.12", 1817 | "esbuild-windows-32": "0.13.12", 1818 | "esbuild-windows-64": "0.13.12", 1819 | "esbuild-windows-arm64": "0.13.12" 1820 | } 1821 | }, 1822 | "esbuild-android-arm64": { 1823 | "version": "0.13.12", 1824 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.12.tgz", 1825 | "integrity": "sha512-TSVZVrb4EIXz6KaYjXfTzPyyRpXV5zgYIADXtQsIenjZ78myvDGaPi11o4ZSaHIwFHsuwkB6ne5SZRBwAQ7maw==", 1826 | "dev": true, 1827 | "optional": true 1828 | }, 1829 | "esbuild-darwin-64": { 1830 | "version": "0.13.12", 1831 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.12.tgz", 1832 | "integrity": "sha512-c51C+N+UHySoV2lgfWSwwmlnLnL0JWj/LzuZt9Ltk9ub1s2Y8cr6SQV5W3mqVH1egUceew6KZ8GyI4nwu+fhsw==", 1833 | "dev": true, 1834 | "optional": true 1835 | }, 1836 | "esbuild-darwin-arm64": { 1837 | "version": "0.13.12", 1838 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.12.tgz", 1839 | "integrity": "sha512-JvAMtshP45Hd8A8wOzjkY1xAnTKTYuP/QUaKp5eUQGX+76GIie3fCdUUr2ZEKdvpSImNqxiZSIMziEiGB5oUmQ==", 1840 | "dev": true, 1841 | "optional": true 1842 | }, 1843 | "esbuild-freebsd-64": { 1844 | "version": "0.13.12", 1845 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.12.tgz", 1846 | "integrity": "sha512-r6On/Skv9f0ZjTu6PW5o7pdXr8aOgtFOEURJZYf1XAJs0IQ+gW+o1DzXjVkIoT+n1cm3N/t1KRJfX71MPg/ZUA==", 1847 | "dev": true, 1848 | "optional": true 1849 | }, 1850 | "esbuild-freebsd-arm64": { 1851 | "version": "0.13.12", 1852 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.12.tgz", 1853 | "integrity": "sha512-F6LmI2Q1gii073kmBE3NOTt/6zLL5zvZsxNLF8PMAwdHc+iBhD1vzfI8uQZMJA1IgXa3ocr3L3DJH9fLGXy6Yw==", 1854 | "dev": true, 1855 | "optional": true 1856 | }, 1857 | "esbuild-linux-32": { 1858 | "version": "0.13.12", 1859 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.12.tgz", 1860 | "integrity": "sha512-U1UZwG3UIwF7/V4tCVAo/nkBV9ag5KJiJTt+gaCmLVWH3bPLX7y+fNlhIWZy8raTMnXhMKfaTvWZ9TtmXzvkuQ==", 1861 | "dev": true, 1862 | "optional": true 1863 | }, 1864 | "esbuild-linux-64": { 1865 | "version": "0.13.12", 1866 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.12.tgz", 1867 | "integrity": "sha512-YpXSwtu2NxN3N4ifJxEdsgd6Q5d8LYqskrAwjmoCT6yQnEHJSF5uWcxv783HWN7lnGpJi9KUtDvYsnMdyGw71Q==", 1868 | "dev": true, 1869 | "optional": true 1870 | }, 1871 | "esbuild-linux-arm": { 1872 | "version": "0.13.12", 1873 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.12.tgz", 1874 | "integrity": "sha512-SyiT/JKxU6J+DY2qUiSLZJqCAftIt3uoGejZ0HDnUM2MGJqEGSGh7p1ecVL2gna3PxS4P+j6WAehCwgkBPXNIw==", 1875 | "dev": true, 1876 | "optional": true 1877 | }, 1878 | "esbuild-linux-arm64": { 1879 | "version": "0.13.12", 1880 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.12.tgz", 1881 | "integrity": "sha512-sgDNb8kb3BVodtAlcFGgwk+43KFCYjnFOaOfJibXnnIojNWuJHpL6aQJ4mumzNWw8Rt1xEtDQyuGK9f+Y24jGA==", 1882 | "dev": true, 1883 | "optional": true 1884 | }, 1885 | "esbuild-linux-mips64le": { 1886 | "version": "0.13.12", 1887 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.12.tgz", 1888 | "integrity": "sha512-qQJHlZBG+QwVIA8AbTEtbvF084QgDi4DaUsUnA+EolY1bxrG+UyOuGflM2ZritGhfS/k7THFjJbjH2wIeoKA2g==", 1889 | "dev": true, 1890 | "optional": true 1891 | }, 1892 | "esbuild-linux-ppc64le": { 1893 | "version": "0.13.12", 1894 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.12.tgz", 1895 | "integrity": "sha512-2dSnm1ldL7Lppwlo04CGQUpwNn5hGqXI38OzaoPOkRsBRWFBozyGxTFSee/zHFS+Pdh3b28JJbRK3owrrRgWNw==", 1896 | "dev": true, 1897 | "optional": true 1898 | }, 1899 | "esbuild-netbsd-64": { 1900 | "version": "0.13.12", 1901 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.12.tgz", 1902 | "integrity": "sha512-D4raxr02dcRiQNbxOLzpqBzcJNFAdsDNxjUbKkDMZBkL54Z0vZh4LRndycdZAMcIdizC/l/Yp/ZsBdAFxc5nbA==", 1903 | "dev": true, 1904 | "optional": true 1905 | }, 1906 | "esbuild-openbsd-64": { 1907 | "version": "0.13.12", 1908 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.12.tgz", 1909 | "integrity": "sha512-KuLCmYMb2kh05QuPJ+va60bKIH5wHL8ypDkmpy47lzwmdxNsuySeCMHuTv5o2Af1RUn5KLO5ZxaZeq4GEY7DaQ==", 1910 | "dev": true, 1911 | "optional": true 1912 | }, 1913 | "esbuild-sunos-64": { 1914 | "version": "0.13.12", 1915 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.12.tgz", 1916 | "integrity": "sha512-jBsF+e0woK3miKI8ufGWKG3o3rY9DpHvCVRn5eburMIIE+2c+y3IZ1srsthKyKI6kkXLvV4Cf/E7w56kLipMXw==", 1917 | "dev": true, 1918 | "optional": true 1919 | }, 1920 | "esbuild-windows-32": { 1921 | "version": "0.13.12", 1922 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.12.tgz", 1923 | "integrity": "sha512-L9m4lLFQrFeR7F+eLZXG82SbXZfUhyfu6CexZEil6vm+lc7GDCE0Q8DiNutkpzjv1+RAbIGVva9muItQ7HVTkQ==", 1924 | "dev": true, 1925 | "optional": true 1926 | }, 1927 | "esbuild-windows-64": { 1928 | "version": "0.13.12", 1929 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.12.tgz", 1930 | "integrity": "sha512-k4tX4uJlSbSkfs78W5d9+I9gpd+7N95W7H2bgOMFPsYREVJs31+Q2gLLHlsnlY95zBoPQMIzHooUIsixQIBjaQ==", 1931 | "dev": true, 1932 | "optional": true 1933 | }, 1934 | "esbuild-windows-arm64": { 1935 | "version": "0.13.12", 1936 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.12.tgz", 1937 | "integrity": "sha512-2tTv/BpYRIvuwHpp2M960nG7uvL+d78LFW/ikPItO+2GfK51CswIKSetSpDii+cjz8e9iSPgs+BU4o8nWICBwQ==", 1938 | "dev": true, 1939 | "optional": true 1940 | }, 1941 | "escalade": { 1942 | "version": "3.1.1", 1943 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1944 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1945 | "dev": true 1946 | }, 1947 | "escape-string-regexp": { 1948 | "version": "1.0.5", 1949 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1950 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1951 | "dev": true 1952 | }, 1953 | "estree-walker": { 1954 | "version": "2.0.2", 1955 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1956 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 1957 | "dev": true 1958 | }, 1959 | "filter-obj": { 1960 | "version": "1.1.0", 1961 | "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", 1962 | "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" 1963 | }, 1964 | "fsevents": { 1965 | "version": "2.3.2", 1966 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1967 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1968 | "dev": true, 1969 | "optional": true 1970 | }, 1971 | "function-bind": { 1972 | "version": "1.1.1", 1973 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1974 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1975 | "dev": true 1976 | }, 1977 | "gensync": { 1978 | "version": "1.0.0-beta.2", 1979 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1980 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1981 | "dev": true 1982 | }, 1983 | "globals": { 1984 | "version": "11.12.0", 1985 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1986 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1987 | "dev": true 1988 | }, 1989 | "has": { 1990 | "version": "1.0.3", 1991 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1992 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1993 | "dev": true, 1994 | "requires": { 1995 | "function-bind": "^1.1.1" 1996 | } 1997 | }, 1998 | "has-flag": { 1999 | "version": "3.0.0", 2000 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2001 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 2002 | "dev": true 2003 | }, 2004 | "history": { 2005 | "version": "5.1.0", 2006 | "resolved": "https://registry.npmjs.org/history/-/history-5.1.0.tgz", 2007 | "integrity": "sha512-zPuQgPacm2vH2xdORvGGz1wQMuHSIB56yNAy5FnLuwOwgSYyPKptJtcMm6Ev+hRGeS+GzhbmRacHzvlESbFwDg==", 2008 | "requires": { 2009 | "@babel/runtime": "^7.7.6" 2010 | } 2011 | }, 2012 | "hoist-non-react-statics": { 2013 | "version": "3.3.2", 2014 | "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", 2015 | "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", 2016 | "requires": { 2017 | "react-is": "^16.7.0" 2018 | } 2019 | }, 2020 | "is-core-module": { 2021 | "version": "2.8.0", 2022 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", 2023 | "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", 2024 | "dev": true, 2025 | "requires": { 2026 | "has": "^1.0.3" 2027 | } 2028 | }, 2029 | "js-tokens": { 2030 | "version": "4.0.0", 2031 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2032 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 2033 | }, 2034 | "jsesc": { 2035 | "version": "2.5.2", 2036 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 2037 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 2038 | "dev": true 2039 | }, 2040 | "json5": { 2041 | "version": "2.2.0", 2042 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", 2043 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", 2044 | "dev": true, 2045 | "requires": { 2046 | "minimist": "^1.2.5" 2047 | } 2048 | }, 2049 | "loose-envify": { 2050 | "version": "1.4.0", 2051 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2052 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2053 | "requires": { 2054 | "js-tokens": "^3.0.0 || ^4.0.0" 2055 | } 2056 | }, 2057 | "minimist": { 2058 | "version": "1.2.5", 2059 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2060 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 2061 | "dev": true 2062 | }, 2063 | "ms": { 2064 | "version": "2.1.2", 2065 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2066 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2067 | "dev": true 2068 | }, 2069 | "nanoid": { 2070 | "version": "3.1.30", 2071 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", 2072 | "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", 2073 | "dev": true 2074 | }, 2075 | "node-releases": { 2076 | "version": "2.0.1", 2077 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", 2078 | "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", 2079 | "dev": true 2080 | }, 2081 | "object-assign": { 2082 | "version": "4.1.1", 2083 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2084 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2085 | }, 2086 | "path-parse": { 2087 | "version": "1.0.7", 2088 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2089 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2090 | "dev": true 2091 | }, 2092 | "picocolors": { 2093 | "version": "1.0.0", 2094 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 2095 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 2096 | "dev": true 2097 | }, 2098 | "picomatch": { 2099 | "version": "2.3.0", 2100 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 2101 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 2102 | "dev": true 2103 | }, 2104 | "postcss": { 2105 | "version": "8.3.11", 2106 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", 2107 | "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", 2108 | "dev": true, 2109 | "requires": { 2110 | "nanoid": "^3.1.30", 2111 | "picocolors": "^1.0.0", 2112 | "source-map-js": "^0.6.2" 2113 | } 2114 | }, 2115 | "query-string": { 2116 | "version": "7.0.1", 2117 | "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", 2118 | "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", 2119 | "requires": { 2120 | "decode-uri-component": "^0.2.0", 2121 | "filter-obj": "^1.1.0", 2122 | "split-on-first": "^1.0.0", 2123 | "strict-uri-encode": "^2.0.0" 2124 | } 2125 | }, 2126 | "react": { 2127 | "version": "17.0.2", 2128 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 2129 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 2130 | "requires": { 2131 | "loose-envify": "^1.1.0", 2132 | "object-assign": "^4.1.1" 2133 | } 2134 | }, 2135 | "react-dom": { 2136 | "version": "17.0.2", 2137 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 2138 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 2139 | "requires": { 2140 | "loose-envify": "^1.1.0", 2141 | "object-assign": "^4.1.1", 2142 | "scheduler": "^0.20.2" 2143 | } 2144 | }, 2145 | "react-is": { 2146 | "version": "16.13.1", 2147 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 2148 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 2149 | }, 2150 | "react-refresh": { 2151 | "version": "0.10.0", 2152 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.10.0.tgz", 2153 | "integrity": "sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==", 2154 | "dev": true 2155 | }, 2156 | "react-router": { 2157 | "version": "6.0.1", 2158 | "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.0.1.tgz", 2159 | "integrity": "sha512-O3iab52icFnQaHWONZr50CcjRlf3gx8CCjPQ0YxN8xEuEklRJNgoZSeoYFYz0fLvA4cpnhc306Nd8BYgL4QZrQ==", 2160 | "requires": { 2161 | "history": "^5.1.0" 2162 | } 2163 | }, 2164 | "react-router-dom": { 2165 | "version": "6.0.1", 2166 | "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.0.1.tgz", 2167 | "integrity": "sha512-fiE+PzFTrof5q8Z/+RHzuiin9/U/q5KY2adlHClwYexbY0DqJnHcC/0U9yv3Amz9em2/bcK7X8mk7+zxB+qhvg==", 2168 | "requires": { 2169 | "history": "^5.1.0", 2170 | "react-router": "6.0.1" 2171 | } 2172 | }, 2173 | "regenerator-runtime": { 2174 | "version": "0.13.9", 2175 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", 2176 | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 2177 | }, 2178 | "resolve": { 2179 | "version": "1.20.0", 2180 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 2181 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 2182 | "dev": true, 2183 | "requires": { 2184 | "is-core-module": "^2.2.0", 2185 | "path-parse": "^1.0.6" 2186 | } 2187 | }, 2188 | "rollup": { 2189 | "version": "2.59.0", 2190 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", 2191 | "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", 2192 | "dev": true, 2193 | "requires": { 2194 | "fsevents": "~2.3.2" 2195 | } 2196 | }, 2197 | "safe-buffer": { 2198 | "version": "5.1.2", 2199 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2200 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2201 | "dev": true 2202 | }, 2203 | "scheduler": { 2204 | "version": "0.20.2", 2205 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 2206 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 2207 | "requires": { 2208 | "loose-envify": "^1.1.0", 2209 | "object-assign": "^4.1.1" 2210 | } 2211 | }, 2212 | "semver": { 2213 | "version": "6.3.0", 2214 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2215 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2216 | "dev": true 2217 | }, 2218 | "serialize-query-params": { 2219 | "version": "1.3.6", 2220 | "resolved": "https://registry.npmjs.org/serialize-query-params/-/serialize-query-params-1.3.6.tgz", 2221 | "integrity": "sha512-VlH7sfWNyPVZClPkRacopn6sn5uQMXBsjPVz1+pBHX895VpcYVznfJtZ49e6jymcrz+l/vowkepCZn/7xEAEdw==", 2222 | "requires": {} 2223 | }, 2224 | "source-map": { 2225 | "version": "0.5.7", 2226 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2227 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2228 | "dev": true 2229 | }, 2230 | "source-map-js": { 2231 | "version": "0.6.2", 2232 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", 2233 | "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", 2234 | "dev": true 2235 | }, 2236 | "split-on-first": { 2237 | "version": "1.1.0", 2238 | "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", 2239 | "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" 2240 | }, 2241 | "strict-uri-encode": { 2242 | "version": "2.0.0", 2243 | "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", 2244 | "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" 2245 | }, 2246 | "supports-color": { 2247 | "version": "5.5.0", 2248 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2249 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2250 | "dev": true, 2251 | "requires": { 2252 | "has-flag": "^3.0.0" 2253 | } 2254 | }, 2255 | "to-fast-properties": { 2256 | "version": "2.0.0", 2257 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2258 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 2259 | "dev": true 2260 | }, 2261 | "use-query-params": { 2262 | "version": "1.2.3", 2263 | "resolved": "https://registry.npmjs.org/use-query-params/-/use-query-params-1.2.3.tgz", 2264 | "integrity": "sha512-cdG0tgbzK+FzsV6DAt2CN8Saa3WpRnze7uC4Rdh7l15epSFq7egmcB/zuREvPNwO5Yk80nUpDZpiyHsoq50d8w==", 2265 | "requires": { 2266 | "serialize-query-params": "^1.3.5" 2267 | } 2268 | }, 2269 | "vite": { 2270 | "version": "2.6.13", 2271 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.13.tgz", 2272 | "integrity": "sha512-+tGZ1OxozRirTudl4M3N3UTNJOlxdVo/qBl2IlDEy/ZpTFcskp+k5ncNjayR3bRYTCbqSOFz2JWGN1UmuDMScA==", 2273 | "dev": true, 2274 | "requires": { 2275 | "esbuild": "^0.13.2", 2276 | "fsevents": "~2.3.2", 2277 | "postcss": "^8.3.8", 2278 | "resolve": "^1.20.0", 2279 | "rollup": "^2.57.0" 2280 | } 2281 | } 2282 | } 2283 | } 2284 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-authentication", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "vite build", 7 | "serve": "vite preview" 8 | }, 9 | "dependencies": { 10 | "@loadable/component": "^5.15.2", 11 | "history": "^5.1.0", 12 | "query-string": "^7.0.1", 13 | "react": "^17.0.0", 14 | "react-dom": "^17.0.0", 15 | "react-router-dom": "^6.0.1", 16 | "use-query-params": "^1.2.3" 17 | }, 18 | "devDependencies": { 19 | "@vitejs/plugin-react": "^1.0.0", 20 | "vite": "^2.6.4" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/App.Authentication.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { 3 | Routes, 4 | Route, 5 | NavLink, 6 | Navigate, 7 | useNavigate, 8 | useLocation, 9 | } from 'react-router-dom'; 10 | 11 | const fakeAuth = () => 12 | new Promise((resolve) => { 13 | setTimeout(() => resolve('2342f2f1d131rf12'), 250); 14 | }); 15 | 16 | const AuthContext = React.createContext(null); 17 | 18 | const AuthProvider = ({ children }) => { 19 | const navigate = useNavigate(); 20 | const location = useLocation(); 21 | 22 | const [token, setToken] = React.useState(null); 23 | 24 | const handleLogin = async () => { 25 | const token = await fakeAuth(); 26 | 27 | setToken(token); 28 | 29 | const origin = location.state?.from?.pathname || '/dashboard'; 30 | navigate(origin); 31 | }; 32 | 33 | const handleLogout = () => { 34 | setToken(null); 35 | }; 36 | 37 | const value = { 38 | token, 39 | onLogin: handleLogin, 40 | onLogout: handleLogout, 41 | }; 42 | 43 | return ( 44 | 45 | {children} 46 | 47 | ); 48 | }; 49 | 50 | const useAuth = () => { 51 | return React.useContext(AuthContext); 52 | }; 53 | 54 | const ProtectedRoute = ({ children }) => { 55 | const { token } = useAuth(); 56 | const location = useLocation(); 57 | 58 | if (!token) { 59 | return ; 60 | } 61 | 62 | return children; 63 | }; 64 | 65 | const App = () => { 66 | return ( 67 | 68 |

React Router

69 | 70 | 71 | 72 | 73 | } /> 74 | } /> 75 | 79 | 80 | 81 | } 82 | /> 83 | 87 | 88 | 89 | } 90 | /> 91 | 92 | } /> 93 | 94 |
95 | ); 96 | }; 97 | 98 | const Navigation = () => { 99 | const { token, onLogout } = useAuth(); 100 | 101 | return ( 102 | 113 | ); 114 | }; 115 | 116 | const Home = () => { 117 | const { onLogin } = useAuth(); 118 | 119 | return ( 120 | <> 121 |

Home (Public)

122 | 123 | 126 | 127 | ); 128 | }; 129 | 130 | const Dashboard = () => { 131 | const { token } = useAuth(); 132 | 133 | return ( 134 | <> 135 |

Dashboard (Protected)

136 | 137 |
Authenticated as {token}
138 | 139 | ); 140 | }; 141 | 142 | const Admin = () => { 143 | return ( 144 | <> 145 |

Admin (Protected)

146 | 147 | ); 148 | }; 149 | 150 | const NoMatch = () => { 151 | return

There's nothing here: 404!

; 152 | }; 153 | 154 | export default App; 155 | -------------------------------------------------------------------------------- /src/App.Descendant.jsx: -------------------------------------------------------------------------------- 1 | import { 2 | Routes, 3 | Route, 4 | Outlet, 5 | Link, 6 | useParams, 7 | } from 'react-router-dom'; 8 | 9 | const App = () => { 10 | const users = [ 11 | { id: '1', firstName: 'Robin', lastName: 'Wieruch' }, 12 | { id: '2', firstName: 'Sarah', lastName: 'Finnley' }, 13 | ]; 14 | 15 | return ( 16 | 17 | }> 18 | } /> 19 | } /> 20 | } /> 21 | } /> 22 | 23 | 24 | ); 25 | }; 26 | 27 | export const Layout = () => { 28 | return ( 29 | <> 30 | 39 | 40 |
41 | 42 |
43 | 44 | ); 45 | }; 46 | 47 | export const Home = () => { 48 | return ( 49 | <> 50 |

Home

51 | 52 |

Public Page

53 | 54 | ); 55 | }; 56 | 57 | export const Users = ({ users }) => { 58 | return ( 59 | <> 60 |

Users

61 | 62 | 63 | } /> 64 | } /> 65 | 66 | 67 | 68 | 69 | ); 70 | }; 71 | 72 | export const UserList = ({ users }) => { 73 | return ( 74 | <> 75 |

User List

76 | 77 | 86 | 87 | ); 88 | }; 89 | 90 | export const UserItem = () => { 91 | const { userId } = useParams(); 92 | 93 | return ( 94 | <> 95 |

User Item: {userId}

96 | 97 | Back to Users 98 | 99 | ); 100 | }; 101 | 102 | export const NoMatch = () => { 103 | return ( 104 | <> 105 |

There's nothing here!

106 | 107 | ); 108 | }; 109 | 110 | export default App; 111 | -------------------------------------------------------------------------------- /src/App.LazyLoading.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Routes, Route, Link } from 'react-router-dom'; 3 | import loadable from '@loadable/component'; 4 | 5 | const Home = loadable(() => import('./pages/Home'), { 6 | resolveComponent: (components) => components.Home, 7 | }); 8 | 9 | const About = loadable(() => import('./pages/About'), { 10 | resolveComponent: (components) => components.About, 11 | }); 12 | 13 | const App = () => { 14 | return ( 15 | <> 16 |

React Router

17 | 18 | 22 | 23 | 24 | } /> 25 | } /> 26 | } /> 27 | 28 | 29 | ); 30 | }; 31 | 32 | const NoMatch = () => { 33 | return

There's nothing here: 404!

; 34 | }; 35 | 36 | export default App; 37 | 38 | // import loadable from '@loadable/component'; 39 | 40 | // import * as ROUTES from '@/constants/routes'; 41 | // import { Page } from '@/components/Layout/Page'; 42 | 43 | // import { Navigation } from './Navigation'; 44 | 45 | // const ReviewKpis = loadable(() => import('./ReviewKpis'), { 46 | // resolveComponent: (components) => { 47 | // return components.ReviewKpis; 48 | // }, 49 | // }); 50 | -------------------------------------------------------------------------------- /src/App.Nested.jsx: -------------------------------------------------------------------------------- 1 | import { Routes, Route, Link, Outlet } from 'react-router-dom'; 2 | 3 | const App = () => { 4 | return ( 5 | <> 6 |

React Router

7 | 8 | 12 | 13 | 14 | } /> 15 | } /> 16 | }> 17 | } /> 18 | } /> 19 | } /> 20 | } /> 21 | 22 | } /> 23 | 24 | 25 | ); 26 | }; 27 | 28 | const Home = () => { 29 | return ( 30 | <> 31 |

Home

32 | 33 | ); 34 | }; 35 | 36 | const User = () => { 37 | return ( 38 | <> 39 |

User

40 | 41 | 45 | 46 | 47 | 48 | ); 49 | }; 50 | 51 | const Profile = () => { 52 | return ( 53 | <> 54 |

Profile

55 | 56 | ); 57 | }; 58 | 59 | const Account = () => { 60 | return ( 61 | <> 62 |

Account

63 | 64 | ); 65 | }; 66 | 67 | const NoMatch = () => { 68 | return ( 69 | <> 70 |

NoMatch

71 | 72 | ); 73 | }; 74 | 75 | export default App; 76 | -------------------------------------------------------------------------------- /src/App.QueryParams.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Routes, Route, Link } from 'react-router-dom'; 3 | import { 4 | useQueryParams, 5 | StringParam, 6 | BooleanParam, 7 | withDefault, 8 | } from 'use-query-params'; 9 | 10 | const App = () => { 11 | return ( 12 | <> 13 |

React Router

14 | 15 | 19 | 20 | 21 | } /> 22 | } /> 23 | } /> 24 | } /> 25 | 26 | 27 | ); 28 | }; 29 | 30 | const bySearch = (search) => (book) => 31 | book.title 32 | .toLowerCase() 33 | .includes((search.title || '').toLowerCase()) && 34 | book.isCompleted === search.isCompleted; 35 | 36 | const Bookshelf = () => { 37 | const books = [ 38 | { 39 | title: 'The Road to Rust', 40 | type: 'BOOK', 41 | isCompleted: true, 42 | rate: 5, 43 | stars: 2, 44 | edition: '3', 45 | }, 46 | { 47 | title: 'The Road to Scala', 48 | type: 'DRAFT', 49 | isCompleted: false, 50 | rate: 4, 51 | stars: 3, 52 | edition: '1', 53 | }, 54 | ]; 55 | 56 | const [search, setSearch] = useQueryParams({ 57 | title: withDefault(StringParam, ''), 58 | isCompleted: withDefault(BooleanParam, false), 59 | }); 60 | 61 | const handleTitle = (event) => { 62 | setSearch({ title: event.target.value }); 63 | }; 64 | 65 | const handleIsCompleted = (event) => { 66 | setSearch({ isCompleted: event.target.checked }); 67 | }; 68 | 69 | console.log(search); 70 | 71 | return ( 72 | <> 73 |

Bookshelf

74 | 75 | 80 | 81 | 86 | 87 |
    88 | {books.filter(bySearch(search)).map((book) => ( 89 |
  • {book.title}
  • 90 | ))} 91 |
92 | 93 | ); 94 | }; 95 | 96 | const Home = () => { 97 | return ( 98 | <> 99 |

Home

100 | 101 | ); 102 | }; 103 | 104 | const NoMatch = () => { 105 | return ( 106 | <> 107 |

NoMatch

108 | 109 | ); 110 | }; 111 | 112 | const Checkbox = ({ label, value, onChange }) => { 113 | return ( 114 | 118 | ); 119 | }; 120 | 121 | export default App; 122 | -------------------------------------------------------------------------------- /src/App.Redirect.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Routes, Route, Link, useNavigate } from 'react-router-dom'; 3 | 4 | const App = () => { 5 | return ( 6 | <> 7 |

React Router

8 | 9 | 13 | 14 | 15 | } /> 16 | } /> 17 | } /> 18 | } /> 19 | 20 | 21 | ); 22 | }; 23 | 24 | const Home = () => { 25 | return ( 26 | <> 27 |

Home

28 | 29 | ); 30 | }; 31 | 32 | const About = () => { 33 | const shouldRedirect = true; 34 | 35 | const navigate = useNavigate(); 36 | 37 | React.useEffect(() => { 38 | if (shouldRedirect) { 39 | navigate('/home'); 40 | } 41 | }); 42 | 43 | return ( 44 | <> 45 |

About

46 | 47 | ); 48 | }; 49 | 50 | const NoMatch = () => { 51 | return

There's nothing here: 404!

; 52 | }; 53 | 54 | export default App; 55 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | } 4 | 5 | .App-logo { 6 | height: 40vmin; 7 | pointer-events: none; 8 | } 9 | 10 | @media (prefers-reduced-motion: no-preference) { 11 | .App-logo { 12 | animation: App-logo-spin infinite 20s linear; 13 | } 14 | } 15 | 16 | .App-header { 17 | background-color: #282c34; 18 | min-height: 100vh; 19 | display: flex; 20 | flex-direction: column; 21 | align-items: center; 22 | justify-content: center; 23 | font-size: calc(10px + 2vmin); 24 | color: white; 25 | } 26 | 27 | .App-link { 28 | color: #61dafb; 29 | } 30 | 31 | @keyframes App-logo-spin { 32 | from { 33 | transform: rotate(0deg); 34 | } 35 | to { 36 | transform: rotate(360deg); 37 | } 38 | } 39 | 40 | button { 41 | font-size: calc(10px + 2vmin); 42 | } 43 | -------------------------------------------------------------------------------- /src/App.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { 3 | Routes, 4 | Route, 5 | Outlet, 6 | Link, 7 | NavLink, 8 | useParams, 9 | useNavigate, 10 | useSearchParams, 11 | } from 'react-router-dom'; 12 | 13 | const App = () => { 14 | const navigate = useNavigate(); 15 | 16 | const [users, setUsers] = React.useState([ 17 | { id: '1', fullName: 'Robin Wieruch' }, 18 | { id: '2', fullName: 'Sarah Finnley' }, 19 | ]); 20 | 21 | const handleRemoveUser = (userId) => { 22 | setUsers((state) => state.filter((user) => user.id !== userId)); 23 | 24 | navigate('/users'); 25 | }; 26 | 27 | return ( 28 | 29 | }> 30 | } /> 31 | } /> 32 | }> 33 | } 36 | /> 37 | 38 | } /> 39 | 40 | 41 | ); 42 | }; 43 | 44 | const Layout = () => { 45 | const style = ({ isActive }) => ({ 46 | fontWeight: isActive ? 'bold' : 'normal', 47 | }); 48 | 49 | return ( 50 | <> 51 |

React Router

52 | 53 | 66 | 67 |
68 | 69 |
70 | 71 | ); 72 | }; 73 | 74 | const Home = () => { 75 | return ( 76 | <> 77 |

Home

78 | 79 | ); 80 | }; 81 | 82 | const Users = ({ users }) => { 83 | const [searchParams, setSearchParams] = useSearchParams(); 84 | 85 | const searchTerm = searchParams.get('name') || ''; 86 | 87 | const handleSearch = (event) => { 88 | const name = event.target.value; 89 | 90 | if (name) { 91 | setSearchParams({ name: event.target.value }); 92 | } else { 93 | setSearchParams({}); 94 | } 95 | }; 96 | 97 | return ( 98 | <> 99 |

Users

100 | 101 | 102 | 103 |
    104 | {users 105 | .filter((user) => 106 | user.fullName 107 | .toLowerCase() 108 | .includes(searchTerm.toLocaleLowerCase()) 109 | ) 110 | .map((user) => ( 111 |
  • 112 | {user.fullName} 113 |
  • 114 | ))} 115 |
116 | 117 | 118 | 119 | ); 120 | }; 121 | 122 | const User = ({ onRemoveUser }) => { 123 | const { userId } = useParams(); 124 | 125 | return ( 126 | <> 127 |

User: {userId}

128 | 129 | 132 | 133 | Back to Users 134 | 135 | ); 136 | }; 137 | 138 | const NoMatch = () => { 139 | return

There's nothing here: 404!

; 140 | }; 141 | 142 | export default App; 143 | -------------------------------------------------------------------------------- /src/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /src/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/main.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { 4 | BrowserRouter, 5 | useNavigate, 6 | useLocation, 7 | } from 'react-router-dom'; 8 | import { QueryParamProvider } from 'use-query-params'; 9 | 10 | // import App from './App.jsx'; 11 | // import App from './App.Redirect.jsx'; 12 | // import App from './App.Authentication.jsx'; 13 | // import App from './App.Nested.jsx'; 14 | // import App from './App.Descendant.jsx'; 15 | // import App from './App.QueryParams.jsx'; 16 | import App from './App.LazyLoading.jsx'; 17 | 18 | // use-query-params adapeter for React Router 6 19 | const RouteAdapter = ({ children }) => { 20 | const navigate = useNavigate(); 21 | const location = useLocation(); 22 | 23 | const adaptedHistory = React.useMemo( 24 | () => ({ 25 | replace(location) { 26 | navigate(location, { replace: true, state: location.state }); 27 | }, 28 | push(location) { 29 | navigate(location, { replace: false, state: location.state }); 30 | }, 31 | }), 32 | [navigate] 33 | ); 34 | return children({ history: adaptedHistory, location }); 35 | }; 36 | 37 | ReactDOM.render( 38 | 39 | 40 | 41 | 42 | , 43 | document.getElementById('root') 44 | ); 45 | -------------------------------------------------------------------------------- /src/pages/About.jsx: -------------------------------------------------------------------------------- 1 | export const About = () => { 2 | return ( 3 | <> 4 |

About

5 | 6 | ); 7 | }; 8 | -------------------------------------------------------------------------------- /src/pages/Home.jsx: -------------------------------------------------------------------------------- 1 | export const Home = () => { 2 | return ( 3 | <> 4 |

Home

5 | 6 | ); 7 | }; 8 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()] 7 | }) 8 | --------------------------------------------------------------------------------