├── .gitignore ├── .prettierrc.json ├── index.html ├── package.json ├── pnpm-lock.yaml ├── public └── vite.svg ├── src ├── App.css ├── App.tsx ├── assets │ └── react.svg ├── index.css ├── interceptors │ ├── axios.interceptor.tsx │ └── index.ts ├── main.tsx ├── models │ ├── index.ts │ └── type-with-key.ts ├── services │ └── testing.service.tsx ├── utilities │ ├── get-validation-error.tsx │ ├── index.ts │ ├── local-storage-manager.tsx │ └── snackbar-manager.tsx └── vite-env.d.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 140, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "tabWidth": 2 6 | } 7 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React + TS 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "axiosinterceptor", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "@babel/core": "^7.0.0", 13 | "@emotion/react": "^11.10.5", 14 | "@emotion/styled": "^11.10.5", 15 | "@mui/material": "^5.0.0", 16 | "axios": "^1.1.3", 17 | "notistack": "^2.0.8", 18 | "react": "^18.2.0", 19 | "react-dom": "^18.2.0", 20 | "rxjs": "^7.5.7" 21 | }, 22 | "devDependencies": { 23 | "@types/react": "^18.0.24", 24 | "@types/react-dom": "^18.0.8", 25 | "@vitejs/plugin-react": "^2.2.0", 26 | "typescript": "^4.6.4", 27 | "vite": "^3.2.3" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@babel/core': ^7.0.0 5 | '@emotion/react': ^11.10.5 6 | '@emotion/styled': ^11.10.5 7 | '@mui/material': ^5.0.0 8 | '@types/react': ^18.0.24 9 | '@types/react-dom': ^18.0.8 10 | '@vitejs/plugin-react': ^2.2.0 11 | axios: ^1.1.3 12 | notistack: ^2.0.8 13 | react: ^18.2.0 14 | react-dom: ^18.2.0 15 | rxjs: ^7.5.7 16 | typescript: ^4.6.4 17 | vite: ^3.2.3 18 | 19 | dependencies: 20 | '@babel/core': 7.20.2 21 | '@emotion/react': 11.10.5_cuziicjcvwawlf5iuhzacuhqcy 22 | '@emotion/styled': 11.10.5_hmjty4frusbltjhl3xd7udcm2y 23 | '@mui/material': 5.10.14_thp4wrxo45nyllusrnt46mid4u 24 | axios: 1.1.3 25 | notistack: 2.0.8_i2zh6h4kh2d4dfsph2ys5bh2ha 26 | react: 18.2.0 27 | react-dom: 18.2.0_react@18.2.0 28 | rxjs: 7.5.7 29 | 30 | devDependencies: 31 | '@types/react': 18.0.25 32 | '@types/react-dom': 18.0.9 33 | '@vitejs/plugin-react': 2.2.0_vite@3.2.4 34 | typescript: 4.9.3 35 | vite: 3.2.4 36 | 37 | packages: 38 | 39 | /@ampproject/remapping/2.2.0: 40 | resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} 41 | engines: {node: '>=6.0.0'} 42 | dependencies: 43 | '@jridgewell/gen-mapping': 0.1.1 44 | '@jridgewell/trace-mapping': 0.3.17 45 | 46 | /@babel/code-frame/7.18.6: 47 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} 48 | engines: {node: '>=6.9.0'} 49 | dependencies: 50 | '@babel/highlight': 7.18.6 51 | 52 | /@babel/compat-data/7.20.1: 53 | resolution: {integrity: sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==} 54 | engines: {node: '>=6.9.0'} 55 | 56 | /@babel/core/7.20.2: 57 | resolution: {integrity: sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==} 58 | engines: {node: '>=6.9.0'} 59 | dependencies: 60 | '@ampproject/remapping': 2.2.0 61 | '@babel/code-frame': 7.18.6 62 | '@babel/generator': 7.20.4 63 | '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.2 64 | '@babel/helper-module-transforms': 7.20.2 65 | '@babel/helpers': 7.20.1 66 | '@babel/parser': 7.20.3 67 | '@babel/template': 7.18.10 68 | '@babel/traverse': 7.20.1 69 | '@babel/types': 7.20.2 70 | convert-source-map: 1.9.0 71 | debug: 4.3.4 72 | gensync: 1.0.0-beta.2 73 | json5: 2.2.1 74 | semver: 6.3.0 75 | transitivePeerDependencies: 76 | - supports-color 77 | 78 | /@babel/generator/7.20.4: 79 | resolution: {integrity: sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==} 80 | engines: {node: '>=6.9.0'} 81 | dependencies: 82 | '@babel/types': 7.20.2 83 | '@jridgewell/gen-mapping': 0.3.2 84 | jsesc: 2.5.2 85 | 86 | /@babel/helper-annotate-as-pure/7.18.6: 87 | resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} 88 | engines: {node: '>=6.9.0'} 89 | dependencies: 90 | '@babel/types': 7.20.2 91 | dev: true 92 | 93 | /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.2: 94 | resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} 95 | engines: {node: '>=6.9.0'} 96 | peerDependencies: 97 | '@babel/core': ^7.0.0 98 | dependencies: 99 | '@babel/compat-data': 7.20.1 100 | '@babel/core': 7.20.2 101 | '@babel/helper-validator-option': 7.18.6 102 | browserslist: 4.21.4 103 | semver: 6.3.0 104 | 105 | /@babel/helper-environment-visitor/7.18.9: 106 | resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} 107 | engines: {node: '>=6.9.0'} 108 | 109 | /@babel/helper-function-name/7.19.0: 110 | resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} 111 | engines: {node: '>=6.9.0'} 112 | dependencies: 113 | '@babel/template': 7.18.10 114 | '@babel/types': 7.20.2 115 | 116 | /@babel/helper-hoist-variables/7.18.6: 117 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} 118 | engines: {node: '>=6.9.0'} 119 | dependencies: 120 | '@babel/types': 7.20.2 121 | 122 | /@babel/helper-module-imports/7.18.6: 123 | resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 124 | engines: {node: '>=6.9.0'} 125 | dependencies: 126 | '@babel/types': 7.20.2 127 | 128 | /@babel/helper-module-transforms/7.20.2: 129 | resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} 130 | engines: {node: '>=6.9.0'} 131 | dependencies: 132 | '@babel/helper-environment-visitor': 7.18.9 133 | '@babel/helper-module-imports': 7.18.6 134 | '@babel/helper-simple-access': 7.20.2 135 | '@babel/helper-split-export-declaration': 7.18.6 136 | '@babel/helper-validator-identifier': 7.19.1 137 | '@babel/template': 7.18.10 138 | '@babel/traverse': 7.20.1 139 | '@babel/types': 7.20.2 140 | transitivePeerDependencies: 141 | - supports-color 142 | 143 | /@babel/helper-plugin-utils/7.20.2: 144 | resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} 145 | engines: {node: '>=6.9.0'} 146 | 147 | /@babel/helper-simple-access/7.20.2: 148 | resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} 149 | engines: {node: '>=6.9.0'} 150 | dependencies: 151 | '@babel/types': 7.20.2 152 | 153 | /@babel/helper-split-export-declaration/7.18.6: 154 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} 155 | engines: {node: '>=6.9.0'} 156 | dependencies: 157 | '@babel/types': 7.20.2 158 | 159 | /@babel/helper-string-parser/7.19.4: 160 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} 161 | engines: {node: '>=6.9.0'} 162 | 163 | /@babel/helper-validator-identifier/7.19.1: 164 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 165 | engines: {node: '>=6.9.0'} 166 | 167 | /@babel/helper-validator-option/7.18.6: 168 | resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} 169 | engines: {node: '>=6.9.0'} 170 | 171 | /@babel/helpers/7.20.1: 172 | resolution: {integrity: sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==} 173 | engines: {node: '>=6.9.0'} 174 | dependencies: 175 | '@babel/template': 7.18.10 176 | '@babel/traverse': 7.20.1 177 | '@babel/types': 7.20.2 178 | transitivePeerDependencies: 179 | - supports-color 180 | 181 | /@babel/highlight/7.18.6: 182 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 183 | engines: {node: '>=6.9.0'} 184 | dependencies: 185 | '@babel/helper-validator-identifier': 7.19.1 186 | chalk: 2.4.2 187 | js-tokens: 4.0.0 188 | 189 | /@babel/parser/7.20.3: 190 | resolution: {integrity: sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==} 191 | engines: {node: '>=6.0.0'} 192 | hasBin: true 193 | dependencies: 194 | '@babel/types': 7.20.2 195 | 196 | /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.2: 197 | resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} 198 | engines: {node: '>=6.9.0'} 199 | peerDependencies: 200 | '@babel/core': ^7.0.0-0 201 | dependencies: 202 | '@babel/core': 7.20.2 203 | '@babel/helper-plugin-utils': 7.20.2 204 | 205 | /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.20.2: 206 | resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} 207 | engines: {node: '>=6.9.0'} 208 | peerDependencies: 209 | '@babel/core': ^7.0.0-0 210 | dependencies: 211 | '@babel/core': 7.20.2 212 | '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.2 213 | dev: true 214 | 215 | /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.20.2: 216 | resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} 217 | engines: {node: '>=6.9.0'} 218 | peerDependencies: 219 | '@babel/core': ^7.0.0-0 220 | dependencies: 221 | '@babel/core': 7.20.2 222 | '@babel/helper-plugin-utils': 7.20.2 223 | dev: true 224 | 225 | /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.20.2: 226 | resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} 227 | engines: {node: '>=6.9.0'} 228 | peerDependencies: 229 | '@babel/core': ^7.0.0-0 230 | dependencies: 231 | '@babel/core': 7.20.2 232 | '@babel/helper-plugin-utils': 7.20.2 233 | dev: true 234 | 235 | /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.20.2: 236 | resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} 237 | engines: {node: '>=6.9.0'} 238 | peerDependencies: 239 | '@babel/core': ^7.0.0-0 240 | dependencies: 241 | '@babel/core': 7.20.2 242 | '@babel/helper-annotate-as-pure': 7.18.6 243 | '@babel/helper-module-imports': 7.18.6 244 | '@babel/helper-plugin-utils': 7.20.2 245 | '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.2 246 | '@babel/types': 7.20.2 247 | dev: true 248 | 249 | /@babel/runtime/7.20.1: 250 | resolution: {integrity: sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==} 251 | engines: {node: '>=6.9.0'} 252 | dependencies: 253 | regenerator-runtime: 0.13.11 254 | dev: false 255 | 256 | /@babel/template/7.18.10: 257 | resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} 258 | engines: {node: '>=6.9.0'} 259 | dependencies: 260 | '@babel/code-frame': 7.18.6 261 | '@babel/parser': 7.20.3 262 | '@babel/types': 7.20.2 263 | 264 | /@babel/traverse/7.20.1: 265 | resolution: {integrity: sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==} 266 | engines: {node: '>=6.9.0'} 267 | dependencies: 268 | '@babel/code-frame': 7.18.6 269 | '@babel/generator': 7.20.4 270 | '@babel/helper-environment-visitor': 7.18.9 271 | '@babel/helper-function-name': 7.19.0 272 | '@babel/helper-hoist-variables': 7.18.6 273 | '@babel/helper-split-export-declaration': 7.18.6 274 | '@babel/parser': 7.20.3 275 | '@babel/types': 7.20.2 276 | debug: 4.3.4 277 | globals: 11.12.0 278 | transitivePeerDependencies: 279 | - supports-color 280 | 281 | /@babel/types/7.20.2: 282 | resolution: {integrity: sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==} 283 | engines: {node: '>=6.9.0'} 284 | dependencies: 285 | '@babel/helper-string-parser': 7.19.4 286 | '@babel/helper-validator-identifier': 7.19.1 287 | to-fast-properties: 2.0.0 288 | 289 | /@emotion/babel-plugin/11.10.5_@babel+core@7.20.2: 290 | resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} 291 | peerDependencies: 292 | '@babel/core': ^7.0.0 293 | dependencies: 294 | '@babel/core': 7.20.2 295 | '@babel/helper-module-imports': 7.18.6 296 | '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.2 297 | '@babel/runtime': 7.20.1 298 | '@emotion/hash': 0.9.0 299 | '@emotion/memoize': 0.8.0 300 | '@emotion/serialize': 1.1.1 301 | babel-plugin-macros: 3.1.0 302 | convert-source-map: 1.9.0 303 | escape-string-regexp: 4.0.0 304 | find-root: 1.1.0 305 | source-map: 0.5.7 306 | stylis: 4.1.3 307 | dev: false 308 | 309 | /@emotion/cache/11.10.5: 310 | resolution: {integrity: sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==} 311 | dependencies: 312 | '@emotion/memoize': 0.8.0 313 | '@emotion/sheet': 1.2.1 314 | '@emotion/utils': 1.2.0 315 | '@emotion/weak-memoize': 0.3.0 316 | stylis: 4.1.3 317 | dev: false 318 | 319 | /@emotion/hash/0.9.0: 320 | resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==} 321 | dev: false 322 | 323 | /@emotion/is-prop-valid/1.2.0: 324 | resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==} 325 | dependencies: 326 | '@emotion/memoize': 0.8.0 327 | dev: false 328 | 329 | /@emotion/memoize/0.8.0: 330 | resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} 331 | dev: false 332 | 333 | /@emotion/react/11.10.5_cuziicjcvwawlf5iuhzacuhqcy: 334 | resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==} 335 | peerDependencies: 336 | '@babel/core': ^7.0.0 337 | '@types/react': '*' 338 | react: '>=16.8.0' 339 | peerDependenciesMeta: 340 | '@babel/core': 341 | optional: true 342 | '@types/react': 343 | optional: true 344 | dependencies: 345 | '@babel/core': 7.20.2 346 | '@babel/runtime': 7.20.1 347 | '@emotion/babel-plugin': 11.10.5_@babel+core@7.20.2 348 | '@emotion/cache': 11.10.5 349 | '@emotion/serialize': 1.1.1 350 | '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 351 | '@emotion/utils': 1.2.0 352 | '@emotion/weak-memoize': 0.3.0 353 | '@types/react': 18.0.25 354 | hoist-non-react-statics: 3.3.2 355 | react: 18.2.0 356 | dev: false 357 | 358 | /@emotion/serialize/1.1.1: 359 | resolution: {integrity: sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==} 360 | dependencies: 361 | '@emotion/hash': 0.9.0 362 | '@emotion/memoize': 0.8.0 363 | '@emotion/unitless': 0.8.0 364 | '@emotion/utils': 1.2.0 365 | csstype: 3.1.1 366 | dev: false 367 | 368 | /@emotion/sheet/1.2.1: 369 | resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} 370 | dev: false 371 | 372 | /@emotion/styled/11.10.5_hmjty4frusbltjhl3xd7udcm2y: 373 | resolution: {integrity: sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==} 374 | peerDependencies: 375 | '@babel/core': ^7.0.0 376 | '@emotion/react': ^11.0.0-rc.0 377 | '@types/react': '*' 378 | react: '>=16.8.0' 379 | peerDependenciesMeta: 380 | '@babel/core': 381 | optional: true 382 | '@types/react': 383 | optional: true 384 | dependencies: 385 | '@babel/core': 7.20.2 386 | '@babel/runtime': 7.20.1 387 | '@emotion/babel-plugin': 11.10.5_@babel+core@7.20.2 388 | '@emotion/is-prop-valid': 1.2.0 389 | '@emotion/react': 11.10.5_cuziicjcvwawlf5iuhzacuhqcy 390 | '@emotion/serialize': 1.1.1 391 | '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 392 | '@emotion/utils': 1.2.0 393 | '@types/react': 18.0.25 394 | react: 18.2.0 395 | dev: false 396 | 397 | /@emotion/unitless/0.8.0: 398 | resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} 399 | dev: false 400 | 401 | /@emotion/use-insertion-effect-with-fallbacks/1.0.0_react@18.2.0: 402 | resolution: {integrity: sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==} 403 | peerDependencies: 404 | react: '>=16.8.0' 405 | dependencies: 406 | react: 18.2.0 407 | dev: false 408 | 409 | /@emotion/utils/1.2.0: 410 | resolution: {integrity: sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==} 411 | dev: false 412 | 413 | /@emotion/weak-memoize/0.3.0: 414 | resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} 415 | dev: false 416 | 417 | /@esbuild/android-arm/0.15.14: 418 | resolution: {integrity: sha512-+Rb20XXxRGisNu2WmNKk+scpanb7nL5yhuI1KR9wQFiC43ddPj/V1fmNyzlFC9bKiG4mYzxW7egtoHVcynr+OA==} 419 | engines: {node: '>=12'} 420 | cpu: [arm] 421 | os: [android] 422 | requiresBuild: true 423 | dev: true 424 | optional: true 425 | 426 | /@esbuild/linux-loong64/0.15.14: 427 | resolution: {integrity: sha512-eQi9rosGNVQFJyJWV0HCA5WZae/qWIQME7s8/j8DMvnylfBv62Pbu+zJ2eUDqNf2O4u3WB+OEXyfkpBoe194sg==} 428 | engines: {node: '>=12'} 429 | cpu: [loong64] 430 | os: [linux] 431 | requiresBuild: true 432 | dev: true 433 | optional: true 434 | 435 | /@jridgewell/gen-mapping/0.1.1: 436 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} 437 | engines: {node: '>=6.0.0'} 438 | dependencies: 439 | '@jridgewell/set-array': 1.1.2 440 | '@jridgewell/sourcemap-codec': 1.4.14 441 | 442 | /@jridgewell/gen-mapping/0.3.2: 443 | resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} 444 | engines: {node: '>=6.0.0'} 445 | dependencies: 446 | '@jridgewell/set-array': 1.1.2 447 | '@jridgewell/sourcemap-codec': 1.4.14 448 | '@jridgewell/trace-mapping': 0.3.17 449 | 450 | /@jridgewell/resolve-uri/3.1.0: 451 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 452 | engines: {node: '>=6.0.0'} 453 | 454 | /@jridgewell/set-array/1.1.2: 455 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 456 | engines: {node: '>=6.0.0'} 457 | 458 | /@jridgewell/sourcemap-codec/1.4.14: 459 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 460 | 461 | /@jridgewell/trace-mapping/0.3.17: 462 | resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} 463 | dependencies: 464 | '@jridgewell/resolve-uri': 3.1.0 465 | '@jridgewell/sourcemap-codec': 1.4.14 466 | 467 | /@mui/base/5.0.0-alpha.106_2zx2umvpluuhvlq44va5bta2da: 468 | resolution: {integrity: sha512-xJQQtwPCPwr6hGWTBdvDwHYwExn3Bw7nPQkN8Fuz8kHpZqoMVWQvvaFS557AIkkI2AFLV3DxVIMjbCvrIntBWg==} 469 | engines: {node: '>=12.0.0'} 470 | peerDependencies: 471 | '@types/react': ^17.0.0 || ^18.0.0 472 | react: ^17.0.0 || ^18.0.0 473 | react-dom: ^17.0.0 || ^18.0.0 474 | peerDependenciesMeta: 475 | '@types/react': 476 | optional: true 477 | dependencies: 478 | '@babel/runtime': 7.20.1 479 | '@emotion/is-prop-valid': 1.2.0 480 | '@mui/types': 7.2.1_@types+react@18.0.25 481 | '@mui/utils': 5.10.14_react@18.2.0 482 | '@popperjs/core': 2.11.6 483 | '@types/react': 18.0.25 484 | clsx: 1.2.1 485 | prop-types: 15.8.1 486 | react: 18.2.0 487 | react-dom: 18.2.0_react@18.2.0 488 | react-is: 18.2.0 489 | dev: false 490 | 491 | /@mui/core-downloads-tracker/5.10.14: 492 | resolution: {integrity: sha512-qLgIJNOR9Dre8JiZ/neVzOf4jf88J6YtOkQqugtMrleLjbfRVUSS4LWl9CSOjNq76quYdmYWnSDgfQqOooT2cQ==} 493 | dev: false 494 | 495 | /@mui/material/5.10.14_thp4wrxo45nyllusrnt46mid4u: 496 | resolution: {integrity: sha512-HWzKVAykePMx54WtxVwZyL1W4k3xlHYIqwMw0CaXAvgB3UE9yjABZuuGr8vG5Z6CSNWamzd+s1x8u7pQPFl9og==} 497 | engines: {node: '>=12.0.0'} 498 | peerDependencies: 499 | '@emotion/react': ^11.5.0 500 | '@emotion/styled': ^11.3.0 501 | '@types/react': ^17.0.0 || ^18.0.0 502 | react: ^17.0.0 || ^18.0.0 503 | react-dom: ^17.0.0 || ^18.0.0 504 | peerDependenciesMeta: 505 | '@emotion/react': 506 | optional: true 507 | '@emotion/styled': 508 | optional: true 509 | '@types/react': 510 | optional: true 511 | dependencies: 512 | '@babel/runtime': 7.20.1 513 | '@emotion/react': 11.10.5_cuziicjcvwawlf5iuhzacuhqcy 514 | '@emotion/styled': 11.10.5_hmjty4frusbltjhl3xd7udcm2y 515 | '@mui/base': 5.0.0-alpha.106_2zx2umvpluuhvlq44va5bta2da 516 | '@mui/core-downloads-tracker': 5.10.14 517 | '@mui/system': 5.10.14_v64nlmo6pkqfmpmxge6otzlg54 518 | '@mui/types': 7.2.1_@types+react@18.0.25 519 | '@mui/utils': 5.10.14_react@18.2.0 520 | '@types/react': 18.0.25 521 | '@types/react-transition-group': 4.4.5 522 | clsx: 1.2.1 523 | csstype: 3.1.1 524 | prop-types: 15.8.1 525 | react: 18.2.0 526 | react-dom: 18.2.0_react@18.2.0 527 | react-is: 18.2.0 528 | react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y 529 | dev: false 530 | 531 | /@mui/private-theming/5.10.14_fan5qbzahqtxlm5dzefqlqx5ia: 532 | resolution: {integrity: sha512-3aIBe8WK65CwAPDY8nB11hYnzE1CZMymi76UnaFrA/DdGDwl5Y8F6uB+StKrkVmsqF1po7Mp2odqVkHj320gXw==} 533 | engines: {node: '>=12.0.0'} 534 | peerDependencies: 535 | '@types/react': ^17.0.0 || ^18.0.0 536 | react: ^17.0.0 || ^18.0.0 537 | peerDependenciesMeta: 538 | '@types/react': 539 | optional: true 540 | dependencies: 541 | '@babel/runtime': 7.20.1 542 | '@mui/utils': 5.10.14_react@18.2.0 543 | '@types/react': 18.0.25 544 | prop-types: 15.8.1 545 | react: 18.2.0 546 | dev: false 547 | 548 | /@mui/styled-engine/5.10.14_dovxhg2tvkkxkdnqyoum6wzcxm: 549 | resolution: {integrity: sha512-bgKdM57ExogWpIfhL/ngSlzF4FhbH00vYF+Y5VALTob4uslFqje0xzoWmbfcCn4cZt2NXxZJIwhsq4vzo5itlw==} 550 | engines: {node: '>=12.0.0'} 551 | peerDependencies: 552 | '@emotion/react': ^11.4.1 553 | '@emotion/styled': ^11.3.0 554 | react: ^17.0.0 || ^18.0.0 555 | peerDependenciesMeta: 556 | '@emotion/react': 557 | optional: true 558 | '@emotion/styled': 559 | optional: true 560 | dependencies: 561 | '@babel/runtime': 7.20.1 562 | '@emotion/cache': 11.10.5 563 | '@emotion/react': 11.10.5_cuziicjcvwawlf5iuhzacuhqcy 564 | '@emotion/styled': 11.10.5_hmjty4frusbltjhl3xd7udcm2y 565 | csstype: 3.1.1 566 | prop-types: 15.8.1 567 | react: 18.2.0 568 | dev: false 569 | 570 | /@mui/system/5.10.14_v64nlmo6pkqfmpmxge6otzlg54: 571 | resolution: {integrity: sha512-2de7XCjRb1j8Od0Stmo0LwFMLpOMNT4wzfINuExXI1TVSuyxXIXUxiC5FEgJW3GMvf/a7SUR8VOiMoKlKWzukw==} 572 | engines: {node: '>=12.0.0'} 573 | peerDependencies: 574 | '@emotion/react': ^11.5.0 575 | '@emotion/styled': ^11.3.0 576 | '@types/react': ^17.0.0 || ^18.0.0 577 | react: ^17.0.0 || ^18.0.0 578 | peerDependenciesMeta: 579 | '@emotion/react': 580 | optional: true 581 | '@emotion/styled': 582 | optional: true 583 | '@types/react': 584 | optional: true 585 | dependencies: 586 | '@babel/runtime': 7.20.1 587 | '@emotion/react': 11.10.5_cuziicjcvwawlf5iuhzacuhqcy 588 | '@emotion/styled': 11.10.5_hmjty4frusbltjhl3xd7udcm2y 589 | '@mui/private-theming': 5.10.14_fan5qbzahqtxlm5dzefqlqx5ia 590 | '@mui/styled-engine': 5.10.14_dovxhg2tvkkxkdnqyoum6wzcxm 591 | '@mui/types': 7.2.1_@types+react@18.0.25 592 | '@mui/utils': 5.10.14_react@18.2.0 593 | '@types/react': 18.0.25 594 | clsx: 1.2.1 595 | csstype: 3.1.1 596 | prop-types: 15.8.1 597 | react: 18.2.0 598 | dev: false 599 | 600 | /@mui/types/7.2.1_@types+react@18.0.25: 601 | resolution: {integrity: sha512-c5mSM7ivD8EsqK6HUi9hQPr5V7TJ/IRThUQ9nWNYPdhCGriTSQV4vL6DflT99LkM+wLiIS1rVjphpEWxERep7A==} 602 | peerDependencies: 603 | '@types/react': '*' 604 | peerDependenciesMeta: 605 | '@types/react': 606 | optional: true 607 | dependencies: 608 | '@types/react': 18.0.25 609 | dev: false 610 | 611 | /@mui/utils/5.10.14_react@18.2.0: 612 | resolution: {integrity: sha512-12p59+wDZpA++XVJmKwqsZmrA1nmUQ5d0a1yQWtcDjxNyER1EDzozYN/db+FY2i5ceQh2TynPTEwGms2mXDwFg==} 613 | engines: {node: '>=12.0.0'} 614 | peerDependencies: 615 | react: ^17.0.0 || ^18.0.0 616 | dependencies: 617 | '@babel/runtime': 7.20.1 618 | '@types/prop-types': 15.7.5 619 | '@types/react-is': 17.0.3 620 | prop-types: 15.8.1 621 | react: 18.2.0 622 | react-is: 18.2.0 623 | dev: false 624 | 625 | /@popperjs/core/2.11.6: 626 | resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} 627 | dev: false 628 | 629 | /@types/parse-json/4.0.0: 630 | resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} 631 | dev: false 632 | 633 | /@types/prop-types/15.7.5: 634 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 635 | 636 | /@types/react-dom/18.0.9: 637 | resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==} 638 | dependencies: 639 | '@types/react': 18.0.25 640 | dev: true 641 | 642 | /@types/react-is/17.0.3: 643 | resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} 644 | dependencies: 645 | '@types/react': 18.0.25 646 | dev: false 647 | 648 | /@types/react-transition-group/4.4.5: 649 | resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} 650 | dependencies: 651 | '@types/react': 18.0.25 652 | dev: false 653 | 654 | /@types/react/18.0.25: 655 | resolution: {integrity: sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==} 656 | dependencies: 657 | '@types/prop-types': 15.7.5 658 | '@types/scheduler': 0.16.2 659 | csstype: 3.1.1 660 | 661 | /@types/scheduler/0.16.2: 662 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} 663 | 664 | /@vitejs/plugin-react/2.2.0_vite@3.2.4: 665 | resolution: {integrity: sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==} 666 | engines: {node: ^14.18.0 || >=16.0.0} 667 | peerDependencies: 668 | vite: ^3.0.0 669 | dependencies: 670 | '@babel/core': 7.20.2 671 | '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.2 672 | '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.2 673 | '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.2 674 | '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.2 675 | magic-string: 0.26.7 676 | react-refresh: 0.14.0 677 | vite: 3.2.4 678 | transitivePeerDependencies: 679 | - supports-color 680 | dev: true 681 | 682 | /ansi-styles/3.2.1: 683 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 684 | engines: {node: '>=4'} 685 | dependencies: 686 | color-convert: 1.9.3 687 | 688 | /asynckit/0.4.0: 689 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 690 | dev: false 691 | 692 | /axios/1.1.3: 693 | resolution: {integrity: sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==} 694 | dependencies: 695 | follow-redirects: 1.15.2 696 | form-data: 4.0.0 697 | proxy-from-env: 1.1.0 698 | transitivePeerDependencies: 699 | - debug 700 | dev: false 701 | 702 | /babel-plugin-macros/3.1.0: 703 | resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} 704 | engines: {node: '>=10', npm: '>=6'} 705 | dependencies: 706 | '@babel/runtime': 7.20.1 707 | cosmiconfig: 7.1.0 708 | resolve: 1.22.1 709 | dev: false 710 | 711 | /browserslist/4.21.4: 712 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} 713 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 714 | hasBin: true 715 | dependencies: 716 | caniuse-lite: 1.0.30001431 717 | electron-to-chromium: 1.4.284 718 | node-releases: 2.0.6 719 | update-browserslist-db: 1.0.10_browserslist@4.21.4 720 | 721 | /callsites/3.1.0: 722 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 723 | engines: {node: '>=6'} 724 | dev: false 725 | 726 | /caniuse-lite/1.0.30001431: 727 | resolution: {integrity: sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==} 728 | 729 | /chalk/2.4.2: 730 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 731 | engines: {node: '>=4'} 732 | dependencies: 733 | ansi-styles: 3.2.1 734 | escape-string-regexp: 1.0.5 735 | supports-color: 5.5.0 736 | 737 | /clsx/1.2.1: 738 | resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} 739 | engines: {node: '>=6'} 740 | dev: false 741 | 742 | /color-convert/1.9.3: 743 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 744 | dependencies: 745 | color-name: 1.1.3 746 | 747 | /color-name/1.1.3: 748 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 749 | 750 | /combined-stream/1.0.8: 751 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 752 | engines: {node: '>= 0.8'} 753 | dependencies: 754 | delayed-stream: 1.0.0 755 | dev: false 756 | 757 | /convert-source-map/1.9.0: 758 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 759 | 760 | /cosmiconfig/7.1.0: 761 | resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} 762 | engines: {node: '>=10'} 763 | dependencies: 764 | '@types/parse-json': 4.0.0 765 | import-fresh: 3.3.0 766 | parse-json: 5.2.0 767 | path-type: 4.0.0 768 | yaml: 1.10.2 769 | dev: false 770 | 771 | /csstype/3.1.1: 772 | resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} 773 | 774 | /debug/4.3.4: 775 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 776 | engines: {node: '>=6.0'} 777 | peerDependencies: 778 | supports-color: '*' 779 | peerDependenciesMeta: 780 | supports-color: 781 | optional: true 782 | dependencies: 783 | ms: 2.1.2 784 | 785 | /delayed-stream/1.0.0: 786 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 787 | engines: {node: '>=0.4.0'} 788 | dev: false 789 | 790 | /dom-helpers/5.2.1: 791 | resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} 792 | dependencies: 793 | '@babel/runtime': 7.20.1 794 | csstype: 3.1.1 795 | dev: false 796 | 797 | /electron-to-chromium/1.4.284: 798 | resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} 799 | 800 | /error-ex/1.3.2: 801 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 802 | dependencies: 803 | is-arrayish: 0.2.1 804 | dev: false 805 | 806 | /esbuild-android-64/0.15.14: 807 | resolution: {integrity: sha512-HuilVIb4rk9abT4U6bcFdU35UHOzcWVGLSjEmC58OVr96q5UiRqzDtWjPlCMugjhgUGKEs8Zf4ueIvYbOStbIg==} 808 | engines: {node: '>=12'} 809 | cpu: [x64] 810 | os: [android] 811 | requiresBuild: true 812 | dev: true 813 | optional: true 814 | 815 | /esbuild-android-arm64/0.15.14: 816 | resolution: {integrity: sha512-/QnxRVxsR2Vtf3XottAHj7hENAMW2wCs6S+OZcAbc/8nlhbAL/bCQRCVD78VtI5mdwqWkVi3wMqM94kScQCgqg==} 817 | engines: {node: '>=12'} 818 | cpu: [arm64] 819 | os: [android] 820 | requiresBuild: true 821 | dev: true 822 | optional: true 823 | 824 | /esbuild-darwin-64/0.15.14: 825 | resolution: {integrity: sha512-ToNuf1uifu8hhwWvoZJGCdLIX/1zpo8cOGnT0XAhDQXiKOKYaotVNx7pOVB1f+wHoWwTLInrOmh3EmA7Fd+8Vg==} 826 | engines: {node: '>=12'} 827 | cpu: [x64] 828 | os: [darwin] 829 | requiresBuild: true 830 | dev: true 831 | optional: true 832 | 833 | /esbuild-darwin-arm64/0.15.14: 834 | resolution: {integrity: sha512-KgGP+y77GszfYJgceO0Wi/PiRtYo5y2Xo9rhBUpxTPaBgWDJ14gqYN0+NMbu+qC2fykxXaipHxN4Scaj9tUS1A==} 835 | engines: {node: '>=12'} 836 | cpu: [arm64] 837 | os: [darwin] 838 | requiresBuild: true 839 | dev: true 840 | optional: true 841 | 842 | /esbuild-freebsd-64/0.15.14: 843 | resolution: {integrity: sha512-xr0E2n5lyWw3uFSwwUXHc0EcaBDtsal/iIfLioflHdhAe10KSctV978Te7YsfnsMKzcoGeS366+tqbCXdqDHQA==} 844 | engines: {node: '>=12'} 845 | cpu: [x64] 846 | os: [freebsd] 847 | requiresBuild: true 848 | dev: true 849 | optional: true 850 | 851 | /esbuild-freebsd-arm64/0.15.14: 852 | resolution: {integrity: sha512-8XH96sOQ4b1LhMlO10eEWOjEngmZ2oyw3pW4o8kvBcpF6pULr56eeYVP5radtgw54g3T8nKHDHYEI5AItvskZg==} 853 | engines: {node: '>=12'} 854 | cpu: [arm64] 855 | os: [freebsd] 856 | requiresBuild: true 857 | dev: true 858 | optional: true 859 | 860 | /esbuild-linux-32/0.15.14: 861 | resolution: {integrity: sha512-6ssnvwaTAi8AzKN8By2V0nS+WF5jTP7SfuK6sStGnDP7MCJo/4zHgM9oE1eQTS2jPmo3D673rckuCzRlig+HMA==} 862 | engines: {node: '>=12'} 863 | cpu: [ia32] 864 | os: [linux] 865 | requiresBuild: true 866 | dev: true 867 | optional: true 868 | 869 | /esbuild-linux-64/0.15.14: 870 | resolution: {integrity: sha512-ONySx3U0wAJOJuxGUlXBWxVKFVpWv88JEv0NZ6NlHknmDd1yCbf4AEdClSgLrqKQDXYywmw4gYDvdLsS6z0hcw==} 871 | engines: {node: '>=12'} 872 | cpu: [x64] 873 | os: [linux] 874 | requiresBuild: true 875 | dev: true 876 | optional: true 877 | 878 | /esbuild-linux-arm/0.15.14: 879 | resolution: {integrity: sha512-D2LImAIV3QzL7lHURyCHBkycVFbKwkDb1XEUWan+2fb4qfW7qAeUtul7ZIcIwFKZgPcl+6gKZmvLgPSj26RQ2Q==} 880 | engines: {node: '>=12'} 881 | cpu: [arm] 882 | os: [linux] 883 | requiresBuild: true 884 | dev: true 885 | optional: true 886 | 887 | /esbuild-linux-arm64/0.15.14: 888 | resolution: {integrity: sha512-kle2Ov6a1e5AjlHlMQl1e+c4myGTeggrRzArQFmWp6O6JoqqB9hT+B28EW4tjFWgV/NxUq46pWYpgaWXsXRPAg==} 889 | engines: {node: '>=12'} 890 | cpu: [arm64] 891 | os: [linux] 892 | requiresBuild: true 893 | dev: true 894 | optional: true 895 | 896 | /esbuild-linux-mips64le/0.15.14: 897 | resolution: {integrity: sha512-FVdMYIzOLXUq+OE7XYKesuEAqZhmAIV6qOoYahvUp93oXy0MOVTP370ECbPfGXXUdlvc0TNgkJa3YhEwyZ6MRA==} 898 | engines: {node: '>=12'} 899 | cpu: [mips64el] 900 | os: [linux] 901 | requiresBuild: true 902 | dev: true 903 | optional: true 904 | 905 | /esbuild-linux-ppc64le/0.15.14: 906 | resolution: {integrity: sha512-2NzH+iuzMDA+jjtPjuIz/OhRDf8tzbQ1tRZJI//aT25o1HKc0reMMXxKIYq/8nSHXiJSnYV4ODzTiv45s+h73w==} 907 | engines: {node: '>=12'} 908 | cpu: [ppc64] 909 | os: [linux] 910 | requiresBuild: true 911 | dev: true 912 | optional: true 913 | 914 | /esbuild-linux-riscv64/0.15.14: 915 | resolution: {integrity: sha512-VqxvutZNlQxmUNS7Ac+aczttLEoHBJ9e3OYGqnULrfipRvG97qLrAv9EUY9iSrRKBqeEbSvS9bSfstZqwz0T4Q==} 916 | engines: {node: '>=12'} 917 | cpu: [riscv64] 918 | os: [linux] 919 | requiresBuild: true 920 | dev: true 921 | optional: true 922 | 923 | /esbuild-linux-s390x/0.15.14: 924 | resolution: {integrity: sha512-+KVHEUshX5n6VP6Vp/AKv9fZIl5kr2ph8EUFmQUJnDpHwcfTSn2AQgYYm0HTBR2Mr4d0Wlr0FxF/Cs5pbFgiOw==} 925 | engines: {node: '>=12'} 926 | cpu: [s390x] 927 | os: [linux] 928 | requiresBuild: true 929 | dev: true 930 | optional: true 931 | 932 | /esbuild-netbsd-64/0.15.14: 933 | resolution: {integrity: sha512-6D/dr17piEgevIm1xJfZP2SjB9Z+g8ERhNnBdlZPBWZl+KSPUKLGF13AbvC+nzGh8IxOH2TyTIdRMvKMP0nEzQ==} 934 | engines: {node: '>=12'} 935 | cpu: [x64] 936 | os: [netbsd] 937 | requiresBuild: true 938 | dev: true 939 | optional: true 940 | 941 | /esbuild-openbsd-64/0.15.14: 942 | resolution: {integrity: sha512-rREQBIlMibBetgr2E9Lywt2Qxv2ZdpmYahR4IUlAQ1Efv/A5gYdO0/VIN3iowDbCNTLxp0bb57Vf0LFcffD6kA==} 943 | engines: {node: '>=12'} 944 | cpu: [x64] 945 | os: [openbsd] 946 | requiresBuild: true 947 | dev: true 948 | optional: true 949 | 950 | /esbuild-sunos-64/0.15.14: 951 | resolution: {integrity: sha512-DNVjSp/BY4IfwtdUAvWGIDaIjJXY5KI4uD82+15v6k/w7px9dnaDaJJ2R6Mu+KCgr5oklmFc0KjBjh311Gxl9Q==} 952 | engines: {node: '>=12'} 953 | cpu: [x64] 954 | os: [sunos] 955 | requiresBuild: true 956 | dev: true 957 | optional: true 958 | 959 | /esbuild-windows-32/0.15.14: 960 | resolution: {integrity: sha512-pHBWrcA+/oLgvViuG9FO3kNPO635gkoVrRQwe6ZY1S0jdET07xe2toUvQoJQ8KT3/OkxqUasIty5hpuKFLD+eg==} 961 | engines: {node: '>=12'} 962 | cpu: [ia32] 963 | os: [win32] 964 | requiresBuild: true 965 | dev: true 966 | optional: true 967 | 968 | /esbuild-windows-64/0.15.14: 969 | resolution: {integrity: sha512-CszIGQVk/P8FOS5UgAH4hKc9zOaFo69fe+k1rqgBHx3CSK3Opyk5lwYriIamaWOVjBt7IwEP6NALz+tkVWdFog==} 970 | engines: {node: '>=12'} 971 | cpu: [x64] 972 | os: [win32] 973 | requiresBuild: true 974 | dev: true 975 | optional: true 976 | 977 | /esbuild-windows-arm64/0.15.14: 978 | resolution: {integrity: sha512-KW9W4psdZceaS9A7Jsgl4WialOznSURvqX/oHZk3gOP7KbjtHLSsnmSvNdzagGJfxbAe30UVGXRe8q8nDsOSQw==} 979 | engines: {node: '>=12'} 980 | cpu: [arm64] 981 | os: [win32] 982 | requiresBuild: true 983 | dev: true 984 | optional: true 985 | 986 | /esbuild/0.15.14: 987 | resolution: {integrity: sha512-pJN8j42fvWLFWwSMG4luuupl2Me7mxciUOsMegKvwCmhEbJ2covUdFnihxm0FMIBV+cbwbtMoHgMCCI+pj1btQ==} 988 | engines: {node: '>=12'} 989 | hasBin: true 990 | requiresBuild: true 991 | optionalDependencies: 992 | '@esbuild/android-arm': 0.15.14 993 | '@esbuild/linux-loong64': 0.15.14 994 | esbuild-android-64: 0.15.14 995 | esbuild-android-arm64: 0.15.14 996 | esbuild-darwin-64: 0.15.14 997 | esbuild-darwin-arm64: 0.15.14 998 | esbuild-freebsd-64: 0.15.14 999 | esbuild-freebsd-arm64: 0.15.14 1000 | esbuild-linux-32: 0.15.14 1001 | esbuild-linux-64: 0.15.14 1002 | esbuild-linux-arm: 0.15.14 1003 | esbuild-linux-arm64: 0.15.14 1004 | esbuild-linux-mips64le: 0.15.14 1005 | esbuild-linux-ppc64le: 0.15.14 1006 | esbuild-linux-riscv64: 0.15.14 1007 | esbuild-linux-s390x: 0.15.14 1008 | esbuild-netbsd-64: 0.15.14 1009 | esbuild-openbsd-64: 0.15.14 1010 | esbuild-sunos-64: 0.15.14 1011 | esbuild-windows-32: 0.15.14 1012 | esbuild-windows-64: 0.15.14 1013 | esbuild-windows-arm64: 0.15.14 1014 | dev: true 1015 | 1016 | /escalade/3.1.1: 1017 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1018 | engines: {node: '>=6'} 1019 | 1020 | /escape-string-regexp/1.0.5: 1021 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1022 | engines: {node: '>=0.8.0'} 1023 | 1024 | /escape-string-regexp/4.0.0: 1025 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1026 | engines: {node: '>=10'} 1027 | dev: false 1028 | 1029 | /find-root/1.1.0: 1030 | resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} 1031 | dev: false 1032 | 1033 | /follow-redirects/1.15.2: 1034 | resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} 1035 | engines: {node: '>=4.0'} 1036 | peerDependencies: 1037 | debug: '*' 1038 | peerDependenciesMeta: 1039 | debug: 1040 | optional: true 1041 | dev: false 1042 | 1043 | /form-data/4.0.0: 1044 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1045 | engines: {node: '>= 6'} 1046 | dependencies: 1047 | asynckit: 0.4.0 1048 | combined-stream: 1.0.8 1049 | mime-types: 2.1.35 1050 | dev: false 1051 | 1052 | /fsevents/2.3.2: 1053 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1054 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1055 | os: [darwin] 1056 | requiresBuild: true 1057 | dev: true 1058 | optional: true 1059 | 1060 | /function-bind/1.1.1: 1061 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1062 | 1063 | /gensync/1.0.0-beta.2: 1064 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1065 | engines: {node: '>=6.9.0'} 1066 | 1067 | /globals/11.12.0: 1068 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1069 | engines: {node: '>=4'} 1070 | 1071 | /has-flag/3.0.0: 1072 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1073 | engines: {node: '>=4'} 1074 | 1075 | /has/1.0.3: 1076 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1077 | engines: {node: '>= 0.4.0'} 1078 | dependencies: 1079 | function-bind: 1.1.1 1080 | 1081 | /hoist-non-react-statics/3.3.2: 1082 | resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} 1083 | dependencies: 1084 | react-is: 16.13.1 1085 | dev: false 1086 | 1087 | /import-fresh/3.3.0: 1088 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1089 | engines: {node: '>=6'} 1090 | dependencies: 1091 | parent-module: 1.0.1 1092 | resolve-from: 4.0.0 1093 | dev: false 1094 | 1095 | /is-arrayish/0.2.1: 1096 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1097 | dev: false 1098 | 1099 | /is-core-module/2.11.0: 1100 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 1101 | dependencies: 1102 | has: 1.0.3 1103 | 1104 | /js-tokens/4.0.0: 1105 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1106 | 1107 | /jsesc/2.5.2: 1108 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 1109 | engines: {node: '>=4'} 1110 | hasBin: true 1111 | 1112 | /json-parse-even-better-errors/2.3.1: 1113 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1114 | dev: false 1115 | 1116 | /json5/2.2.1: 1117 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} 1118 | engines: {node: '>=6'} 1119 | hasBin: true 1120 | 1121 | /lines-and-columns/1.2.4: 1122 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1123 | dev: false 1124 | 1125 | /loose-envify/1.4.0: 1126 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1127 | hasBin: true 1128 | dependencies: 1129 | js-tokens: 4.0.0 1130 | dev: false 1131 | 1132 | /magic-string/0.26.7: 1133 | resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} 1134 | engines: {node: '>=12'} 1135 | dependencies: 1136 | sourcemap-codec: 1.4.8 1137 | dev: true 1138 | 1139 | /mime-db/1.52.0: 1140 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1141 | engines: {node: '>= 0.6'} 1142 | dev: false 1143 | 1144 | /mime-types/2.1.35: 1145 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1146 | engines: {node: '>= 0.6'} 1147 | dependencies: 1148 | mime-db: 1.52.0 1149 | dev: false 1150 | 1151 | /ms/2.1.2: 1152 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1153 | 1154 | /nanoid/3.3.4: 1155 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 1156 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1157 | hasBin: true 1158 | dev: true 1159 | 1160 | /node-releases/2.0.6: 1161 | resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} 1162 | 1163 | /notistack/2.0.8_i2zh6h4kh2d4dfsph2ys5bh2ha: 1164 | resolution: {integrity: sha512-/IY14wkFp5qjPgKNvAdfL5Jp6q90+MjgKTPh4c81r/lW70KeuX6b9pE/4f8L4FG31cNudbN9siiFS5ql1aSLRw==} 1165 | peerDependencies: 1166 | '@emotion/react': ^11.4.1 1167 | '@emotion/styled': ^11.3.0 1168 | '@mui/material': ^5.0.0 1169 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1170 | react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 1171 | peerDependenciesMeta: 1172 | '@emotion/react': 1173 | optional: true 1174 | '@emotion/styled': 1175 | optional: true 1176 | dependencies: 1177 | '@emotion/react': 11.10.5_cuziicjcvwawlf5iuhzacuhqcy 1178 | '@emotion/styled': 11.10.5_hmjty4frusbltjhl3xd7udcm2y 1179 | '@mui/material': 5.10.14_thp4wrxo45nyllusrnt46mid4u 1180 | clsx: 1.2.1 1181 | hoist-non-react-statics: 3.3.2 1182 | react: 18.2.0 1183 | react-dom: 18.2.0_react@18.2.0 1184 | dev: false 1185 | 1186 | /object-assign/4.1.1: 1187 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1188 | engines: {node: '>=0.10.0'} 1189 | dev: false 1190 | 1191 | /parent-module/1.0.1: 1192 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1193 | engines: {node: '>=6'} 1194 | dependencies: 1195 | callsites: 3.1.0 1196 | dev: false 1197 | 1198 | /parse-json/5.2.0: 1199 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1200 | engines: {node: '>=8'} 1201 | dependencies: 1202 | '@babel/code-frame': 7.18.6 1203 | error-ex: 1.3.2 1204 | json-parse-even-better-errors: 2.3.1 1205 | lines-and-columns: 1.2.4 1206 | dev: false 1207 | 1208 | /path-parse/1.0.7: 1209 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1210 | 1211 | /path-type/4.0.0: 1212 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1213 | engines: {node: '>=8'} 1214 | dev: false 1215 | 1216 | /picocolors/1.0.0: 1217 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1218 | 1219 | /postcss/8.4.19: 1220 | resolution: {integrity: sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==} 1221 | engines: {node: ^10 || ^12 || >=14} 1222 | dependencies: 1223 | nanoid: 3.3.4 1224 | picocolors: 1.0.0 1225 | source-map-js: 1.0.2 1226 | dev: true 1227 | 1228 | /prop-types/15.8.1: 1229 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 1230 | dependencies: 1231 | loose-envify: 1.4.0 1232 | object-assign: 4.1.1 1233 | react-is: 16.13.1 1234 | dev: false 1235 | 1236 | /proxy-from-env/1.1.0: 1237 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} 1238 | dev: false 1239 | 1240 | /react-dom/18.2.0_react@18.2.0: 1241 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 1242 | peerDependencies: 1243 | react: ^18.2.0 1244 | dependencies: 1245 | loose-envify: 1.4.0 1246 | react: 18.2.0 1247 | scheduler: 0.23.0 1248 | dev: false 1249 | 1250 | /react-is/16.13.1: 1251 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 1252 | dev: false 1253 | 1254 | /react-is/18.2.0: 1255 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} 1256 | dev: false 1257 | 1258 | /react-refresh/0.14.0: 1259 | resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} 1260 | engines: {node: '>=0.10.0'} 1261 | dev: true 1262 | 1263 | /react-transition-group/4.4.5_biqbaboplfbrettd7655fr4n2y: 1264 | resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} 1265 | peerDependencies: 1266 | react: '>=16.6.0' 1267 | react-dom: '>=16.6.0' 1268 | dependencies: 1269 | '@babel/runtime': 7.20.1 1270 | dom-helpers: 5.2.1 1271 | loose-envify: 1.4.0 1272 | prop-types: 15.8.1 1273 | react: 18.2.0 1274 | react-dom: 18.2.0_react@18.2.0 1275 | dev: false 1276 | 1277 | /react/18.2.0: 1278 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 1279 | engines: {node: '>=0.10.0'} 1280 | dependencies: 1281 | loose-envify: 1.4.0 1282 | dev: false 1283 | 1284 | /regenerator-runtime/0.13.11: 1285 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 1286 | dev: false 1287 | 1288 | /resolve-from/4.0.0: 1289 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1290 | engines: {node: '>=4'} 1291 | dev: false 1292 | 1293 | /resolve/1.22.1: 1294 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 1295 | hasBin: true 1296 | dependencies: 1297 | is-core-module: 2.11.0 1298 | path-parse: 1.0.7 1299 | supports-preserve-symlinks-flag: 1.0.0 1300 | 1301 | /rollup/2.79.1: 1302 | resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} 1303 | engines: {node: '>=10.0.0'} 1304 | hasBin: true 1305 | optionalDependencies: 1306 | fsevents: 2.3.2 1307 | dev: true 1308 | 1309 | /rxjs/7.5.7: 1310 | resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==} 1311 | dependencies: 1312 | tslib: 2.4.1 1313 | dev: false 1314 | 1315 | /scheduler/0.23.0: 1316 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 1317 | dependencies: 1318 | loose-envify: 1.4.0 1319 | dev: false 1320 | 1321 | /semver/6.3.0: 1322 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1323 | hasBin: true 1324 | 1325 | /source-map-js/1.0.2: 1326 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1327 | engines: {node: '>=0.10.0'} 1328 | dev: true 1329 | 1330 | /source-map/0.5.7: 1331 | resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} 1332 | engines: {node: '>=0.10.0'} 1333 | dev: false 1334 | 1335 | /sourcemap-codec/1.4.8: 1336 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 1337 | dev: true 1338 | 1339 | /stylis/4.1.3: 1340 | resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} 1341 | dev: false 1342 | 1343 | /supports-color/5.5.0: 1344 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1345 | engines: {node: '>=4'} 1346 | dependencies: 1347 | has-flag: 3.0.0 1348 | 1349 | /supports-preserve-symlinks-flag/1.0.0: 1350 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1351 | engines: {node: '>= 0.4'} 1352 | 1353 | /to-fast-properties/2.0.0: 1354 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 1355 | engines: {node: '>=4'} 1356 | 1357 | /tslib/2.4.1: 1358 | resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} 1359 | dev: false 1360 | 1361 | /typescript/4.9.3: 1362 | resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} 1363 | engines: {node: '>=4.2.0'} 1364 | hasBin: true 1365 | dev: true 1366 | 1367 | /update-browserslist-db/1.0.10_browserslist@4.21.4: 1368 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} 1369 | hasBin: true 1370 | peerDependencies: 1371 | browserslist: '>= 4.21.0' 1372 | dependencies: 1373 | browserslist: 4.21.4 1374 | escalade: 3.1.1 1375 | picocolors: 1.0.0 1376 | 1377 | /vite/3.2.4: 1378 | resolution: {integrity: sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==} 1379 | engines: {node: ^14.18.0 || >=16.0.0} 1380 | hasBin: true 1381 | peerDependencies: 1382 | '@types/node': '>= 14' 1383 | less: '*' 1384 | sass: '*' 1385 | stylus: '*' 1386 | sugarss: '*' 1387 | terser: ^5.4.0 1388 | peerDependenciesMeta: 1389 | '@types/node': 1390 | optional: true 1391 | less: 1392 | optional: true 1393 | sass: 1394 | optional: true 1395 | stylus: 1396 | optional: true 1397 | sugarss: 1398 | optional: true 1399 | terser: 1400 | optional: true 1401 | dependencies: 1402 | esbuild: 0.15.14 1403 | postcss: 8.4.19 1404 | resolve: 1.22.1 1405 | rollup: 2.79.1 1406 | optionalDependencies: 1407 | fsevents: 2.3.2 1408 | dev: true 1409 | 1410 | /yaml/1.10.2: 1411 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1412 | engines: {node: '>= 6'} 1413 | dev: false 1414 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | #root { 2 | max-width: 1280px; 3 | margin: 0 auto; 4 | padding: 2rem; 5 | text-align: center; 6 | } 7 | 8 | .logo { 9 | height: 6em; 10 | padding: 1.5em; 11 | will-change: filter; 12 | } 13 | .logo:hover { 14 | filter: drop-shadow(0 0 2em #646cffaa); 15 | } 16 | .logo.react:hover { 17 | filter: drop-shadow(0 0 2em #61dafbaa); 18 | } 19 | 20 | @keyframes logo-spin { 21 | from { 22 | transform: rotate(0deg); 23 | } 24 | to { 25 | transform: rotate(360deg); 26 | } 27 | } 28 | 29 | @media (prefers-reduced-motion: no-preference) { 30 | a:nth-of-type(2) .logo { 31 | animation: logo-spin infinite 20s linear; 32 | } 33 | } 34 | 35 | .card { 36 | padding: 2em; 37 | } 38 | 39 | .read-the-docs { 40 | color: #888; 41 | } 42 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { SnackbarProvider } from 'notistack'; 2 | import { useEffect, useState } from 'react'; 3 | import './App.css'; 4 | import { testingService } from './services/testing.service'; 5 | import { SnackbarUtilitiesConfigurator } from './utilities/snackbar-manager'; 6 | 7 | function App() { 8 | const [morty, setMorty] = useState({} as any); 9 | const fetchMorty = async () => { 10 | const { data } = await testingService(); 11 | setMorty(data); 12 | }; 13 | 14 | useEffect(() => { 15 | fetchMorty(); 16 | }, []); 17 | return ( 18 | 19 | 20 |
{JSON.stringify(morty)}
21 |
22 | ); 23 | } 24 | 25 | export default App; 26 | -------------------------------------------------------------------------------- /src/assets/react.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-family: Inter, Avenir, Helvetica, Arial, sans-serif; 3 | font-size: 16px; 4 | line-height: 24px; 5 | font-weight: 400; 6 | 7 | color-scheme: light dark; 8 | color: rgba(255, 255, 255, 0.87); 9 | background-color: #242424; 10 | 11 | font-synthesis: none; 12 | text-rendering: optimizeLegibility; 13 | -webkit-font-smoothing: antialiased; 14 | -moz-osx-font-smoothing: grayscale; 15 | -webkit-text-size-adjust: 100%; 16 | } 17 | 18 | a { 19 | font-weight: 500; 20 | color: #646cff; 21 | text-decoration: inherit; 22 | } 23 | a:hover { 24 | color: #535bf2; 25 | } 26 | 27 | body { 28 | margin: 0; 29 | display: flex; 30 | place-items: center; 31 | min-width: 320px; 32 | min-height: 100vh; 33 | } 34 | 35 | h1 { 36 | font-size: 3.2em; 37 | line-height: 1.1; 38 | } 39 | 40 | button { 41 | border-radius: 8px; 42 | border: 1px solid transparent; 43 | padding: 0.6em 1.2em; 44 | font-size: 1em; 45 | font-weight: 500; 46 | font-family: inherit; 47 | background-color: #1a1a1a; 48 | cursor: pointer; 49 | transition: border-color 0.25s; 50 | } 51 | button:hover { 52 | border-color: #646cff; 53 | } 54 | button:focus, 55 | button:focus-visible { 56 | outline: 4px auto -webkit-focus-ring-color; 57 | } 58 | 59 | @media (prefers-color-scheme: light) { 60 | :root { 61 | color: #213547; 62 | background-color: #ffffff; 63 | } 64 | a:hover { 65 | color: #747bff; 66 | } 67 | button { 68 | background-color: #f9f9f9; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/interceptors/axios.interceptor.tsx: -------------------------------------------------------------------------------- 1 | import axios, { AxiosRequestConfig } from 'axios'; 2 | import { getInLocalStorage, getValidationError, LocalStorageKeys, saveInLocalStorage } from '../utilities'; 3 | import { SnackbarUtilities } from '../utilities/snackbar-manager'; 4 | 5 | export const AxiosInterceptor = () => { 6 | saveInLocalStorage(LocalStorageKeys.TOKEN, '123123123123'); 7 | 8 | const updateHeader = (request: AxiosRequestConfig) => { 9 | const token = getInLocalStorage(LocalStorageKeys.TOKEN); 10 | const newHeaders = { 11 | Authorization: token, 12 | 'Content-Type': 'application/json' 13 | }; 14 | request.headers = newHeaders; 15 | return request; 16 | }; 17 | 18 | axios.interceptors.request.use((request) => { 19 | if (request.url?.includes('assets')) return request; 20 | return updateHeader(request); 21 | }); 22 | 23 | axios.interceptors.response.use( 24 | (response) => { 25 | console.log('response', response); 26 | SnackbarUtilities.success('Success'); 27 | return response; 28 | }, 29 | (error) => { 30 | SnackbarUtilities.error(getValidationError(error.code)); 31 | return Promise.reject(error); 32 | } 33 | ); 34 | }; 35 | -------------------------------------------------------------------------------- /src/interceptors/index.ts: -------------------------------------------------------------------------------- 1 | export * from './axios.interceptor'; 2 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import ReactDOM from "react-dom/client"; 2 | import App from "./App"; 3 | import "./index.css"; 4 | import { AxiosInterceptor } from "./interceptors/axios.interceptor"; 5 | 6 | AxiosInterceptor(); 7 | 8 | ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( 9 | 10 | ); 11 | -------------------------------------------------------------------------------- /src/models/index.ts: -------------------------------------------------------------------------------- 1 | export * from './type-with-key'; 2 | -------------------------------------------------------------------------------- /src/models/type-with-key.ts: -------------------------------------------------------------------------------- 1 | export type TypeWithKey = { [key: string]: T }; 2 | -------------------------------------------------------------------------------- /src/services/testing.service.tsx: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | import { getInLocalStorage, LocalStorageKeys } from "../utilities"; 3 | 4 | export const testingService = () => { 5 | return axios.get("https://rickandmortyapi.com/api/character/2"); 6 | }; 7 | 8 | export const refreshToken = () => { 9 | return axios.post( 10 | "https://rickandmortyapi.com/api/refreshtoken", 11 | {}, 12 | { 13 | headers: { 14 | Authorization: getInLocalStorage(LocalStorageKeys.REFRESH_TOKEN), 15 | }, 16 | } 17 | ); 18 | }; 19 | -------------------------------------------------------------------------------- /src/utilities/get-validation-error.tsx: -------------------------------------------------------------------------------- 1 | import { TypeWithKey } from '../models'; 2 | 3 | export const getValidationError = (errorCode: any) => { 4 | const codeMatcher: TypeWithKey = { 5 | ERR_NETWORK: 'Se rompió la red', 6 | ERR_TIMEOUT: 'Se acabó el tiempo', 7 | ERR_CANCEL: 'Se canceló la petición', 8 | ERR_UNKNOWN: 'Error desconocido', 9 | ERR_400: 'Error 400', 10 | ERR_401: 'Error 401', 11 | ERR_403: 'Error 403' 12 | }; 13 | 14 | return codeMatcher[errorCode]; 15 | }; 16 | -------------------------------------------------------------------------------- /src/utilities/index.ts: -------------------------------------------------------------------------------- 1 | export * from './get-validation-error'; 2 | export * from './local-storage-manager'; 3 | export * from './snackbar-manager'; 4 | -------------------------------------------------------------------------------- /src/utilities/local-storage-manager.tsx: -------------------------------------------------------------------------------- 1 | export enum LocalStorageKeys { 2 | REFRESH_TOKEN = "refreshToken", 3 | TOKEN = "token", 4 | } 5 | 6 | export const saveInLocalStorage = (key: string, value: string) => { 7 | localStorage.setItem(key, value); 8 | }; 9 | 10 | export const getInLocalStorage = (key: string) => { 11 | const result = localStorage.getItem(key); 12 | return !!result && JSON.parse(result); 13 | }; 14 | 15 | export const clearLocalStorage = () => { 16 | localStorage.clear(); 17 | }; 18 | -------------------------------------------------------------------------------- /src/utilities/snackbar-manager.tsx: -------------------------------------------------------------------------------- 1 | import { useSnackbar, VariantType, WithSnackbarProps } from "notistack"; 2 | 3 | let useSnackbarRef: WithSnackbarProps; 4 | export const SnackbarUtilitiesConfigurator: React.FC = () => { 5 | useSnackbarRef = useSnackbar(); 6 | return null; 7 | }; 8 | 9 | export const SnackbarUtilities = { 10 | toast(msg: string, variant: VariantType = "default") { 11 | useSnackbarRef.enqueueSnackbar(msg, { variant }); 12 | }, 13 | success(msg: string) { 14 | this.toast(msg, "success"); 15 | }, 16 | error(msg: string) { 17 | this.toast(msg, "error"); 18 | }, 19 | info(msg: string) { 20 | this.toast(msg, "info"); 21 | }, 22 | warning(msg: string) { 23 | this.toast(msg, "warning"); 24 | }, 25 | }; 26 | -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["src"], 20 | "references": [{ "path": "./tsconfig.node.json" }] 21 | } 22 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()] 7 | }) 8 | --------------------------------------------------------------------------------