├── .gitignore ├── client ├── .gitignore ├── dist │ ├── assets │ │ └── index.fa74ed46.js │ ├── index.html │ └── vite.svg ├── index.html ├── package-lock.json ├── package.json ├── public │ └── vite.svg ├── src │ ├── App.css │ ├── App.jsx │ ├── assets │ │ └── react.svg │ ├── index.css │ └── main.jsx └── vite.config.js ├── go.mod ├── go.sum ├── main.go ├── models └── user_model.go └── requests └── users.http /.gitignore: -------------------------------------------------------------------------------- 1 | tmp -------------------------------------------------------------------------------- /client/.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 | -------------------------------------------------------------------------------- /client/dist/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /client/dist/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /client/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "client", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "react": "^18.2.0", 12 | "react-dom": "^18.2.0" 13 | }, 14 | "devDependencies": { 15 | "@types/react": "^18.0.15", 16 | "@types/react-dom": "^18.0.6", 17 | "@vitejs/plugin-react": "^2.0.0", 18 | "vite": "^3.0.0" 19 | } 20 | }, 21 | "node_modules/@ampproject/remapping": { 22 | "version": "2.2.0", 23 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 24 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 25 | "dev": true, 26 | "dependencies": { 27 | "@jridgewell/gen-mapping": "^0.1.0", 28 | "@jridgewell/trace-mapping": "^0.3.9" 29 | }, 30 | "engines": { 31 | "node": ">=6.0.0" 32 | } 33 | }, 34 | "node_modules/@babel/code-frame": { 35 | "version": "7.18.6", 36 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 37 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 38 | "dev": true, 39 | "dependencies": { 40 | "@babel/highlight": "^7.18.6" 41 | }, 42 | "engines": { 43 | "node": ">=6.9.0" 44 | } 45 | }, 46 | "node_modules/@babel/compat-data": { 47 | "version": "7.18.8", 48 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", 49 | "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", 50 | "dev": true, 51 | "engines": { 52 | "node": ">=6.9.0" 53 | } 54 | }, 55 | "node_modules/@babel/core": { 56 | "version": "7.18.10", 57 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", 58 | "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", 59 | "dev": true, 60 | "dependencies": { 61 | "@ampproject/remapping": "^2.1.0", 62 | "@babel/code-frame": "^7.18.6", 63 | "@babel/generator": "^7.18.10", 64 | "@babel/helper-compilation-targets": "^7.18.9", 65 | "@babel/helper-module-transforms": "^7.18.9", 66 | "@babel/helpers": "^7.18.9", 67 | "@babel/parser": "^7.18.10", 68 | "@babel/template": "^7.18.10", 69 | "@babel/traverse": "^7.18.10", 70 | "@babel/types": "^7.18.10", 71 | "convert-source-map": "^1.7.0", 72 | "debug": "^4.1.0", 73 | "gensync": "^1.0.0-beta.2", 74 | "json5": "^2.2.1", 75 | "semver": "^6.3.0" 76 | }, 77 | "engines": { 78 | "node": ">=6.9.0" 79 | }, 80 | "funding": { 81 | "type": "opencollective", 82 | "url": "https://opencollective.com/babel" 83 | } 84 | }, 85 | "node_modules/@babel/generator": { 86 | "version": "7.18.12", 87 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", 88 | "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", 89 | "dev": true, 90 | "dependencies": { 91 | "@babel/types": "^7.18.10", 92 | "@jridgewell/gen-mapping": "^0.3.2", 93 | "jsesc": "^2.5.1" 94 | }, 95 | "engines": { 96 | "node": ">=6.9.0" 97 | } 98 | }, 99 | "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { 100 | "version": "0.3.2", 101 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 102 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 103 | "dev": true, 104 | "dependencies": { 105 | "@jridgewell/set-array": "^1.0.1", 106 | "@jridgewell/sourcemap-codec": "^1.4.10", 107 | "@jridgewell/trace-mapping": "^0.3.9" 108 | }, 109 | "engines": { 110 | "node": ">=6.0.0" 111 | } 112 | }, 113 | "node_modules/@babel/helper-annotate-as-pure": { 114 | "version": "7.18.6", 115 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", 116 | "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", 117 | "dev": true, 118 | "dependencies": { 119 | "@babel/types": "^7.18.6" 120 | }, 121 | "engines": { 122 | "node": ">=6.9.0" 123 | } 124 | }, 125 | "node_modules/@babel/helper-compilation-targets": { 126 | "version": "7.18.9", 127 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", 128 | "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", 129 | "dev": true, 130 | "dependencies": { 131 | "@babel/compat-data": "^7.18.8", 132 | "@babel/helper-validator-option": "^7.18.6", 133 | "browserslist": "^4.20.2", 134 | "semver": "^6.3.0" 135 | }, 136 | "engines": { 137 | "node": ">=6.9.0" 138 | }, 139 | "peerDependencies": { 140 | "@babel/core": "^7.0.0" 141 | } 142 | }, 143 | "node_modules/@babel/helper-environment-visitor": { 144 | "version": "7.18.9", 145 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", 146 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", 147 | "dev": true, 148 | "engines": { 149 | "node": ">=6.9.0" 150 | } 151 | }, 152 | "node_modules/@babel/helper-function-name": { 153 | "version": "7.18.9", 154 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", 155 | "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", 156 | "dev": true, 157 | "dependencies": { 158 | "@babel/template": "^7.18.6", 159 | "@babel/types": "^7.18.9" 160 | }, 161 | "engines": { 162 | "node": ">=6.9.0" 163 | } 164 | }, 165 | "node_modules/@babel/helper-hoist-variables": { 166 | "version": "7.18.6", 167 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 168 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 169 | "dev": true, 170 | "dependencies": { 171 | "@babel/types": "^7.18.6" 172 | }, 173 | "engines": { 174 | "node": ">=6.9.0" 175 | } 176 | }, 177 | "node_modules/@babel/helper-module-imports": { 178 | "version": "7.18.6", 179 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 180 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 181 | "dev": true, 182 | "dependencies": { 183 | "@babel/types": "^7.18.6" 184 | }, 185 | "engines": { 186 | "node": ">=6.9.0" 187 | } 188 | }, 189 | "node_modules/@babel/helper-module-transforms": { 190 | "version": "7.18.9", 191 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", 192 | "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", 193 | "dev": true, 194 | "dependencies": { 195 | "@babel/helper-environment-visitor": "^7.18.9", 196 | "@babel/helper-module-imports": "^7.18.6", 197 | "@babel/helper-simple-access": "^7.18.6", 198 | "@babel/helper-split-export-declaration": "^7.18.6", 199 | "@babel/helper-validator-identifier": "^7.18.6", 200 | "@babel/template": "^7.18.6", 201 | "@babel/traverse": "^7.18.9", 202 | "@babel/types": "^7.18.9" 203 | }, 204 | "engines": { 205 | "node": ">=6.9.0" 206 | } 207 | }, 208 | "node_modules/@babel/helper-plugin-utils": { 209 | "version": "7.18.9", 210 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", 211 | "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", 212 | "dev": true, 213 | "engines": { 214 | "node": ">=6.9.0" 215 | } 216 | }, 217 | "node_modules/@babel/helper-simple-access": { 218 | "version": "7.18.6", 219 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", 220 | "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", 221 | "dev": true, 222 | "dependencies": { 223 | "@babel/types": "^7.18.6" 224 | }, 225 | "engines": { 226 | "node": ">=6.9.0" 227 | } 228 | }, 229 | "node_modules/@babel/helper-split-export-declaration": { 230 | "version": "7.18.6", 231 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 232 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 233 | "dev": true, 234 | "dependencies": { 235 | "@babel/types": "^7.18.6" 236 | }, 237 | "engines": { 238 | "node": ">=6.9.0" 239 | } 240 | }, 241 | "node_modules/@babel/helper-string-parser": { 242 | "version": "7.18.10", 243 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", 244 | "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", 245 | "dev": true, 246 | "engines": { 247 | "node": ">=6.9.0" 248 | } 249 | }, 250 | "node_modules/@babel/helper-validator-identifier": { 251 | "version": "7.18.6", 252 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", 253 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", 254 | "dev": true, 255 | "engines": { 256 | "node": ">=6.9.0" 257 | } 258 | }, 259 | "node_modules/@babel/helper-validator-option": { 260 | "version": "7.18.6", 261 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 262 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", 263 | "dev": true, 264 | "engines": { 265 | "node": ">=6.9.0" 266 | } 267 | }, 268 | "node_modules/@babel/helpers": { 269 | "version": "7.18.9", 270 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", 271 | "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", 272 | "dev": true, 273 | "dependencies": { 274 | "@babel/template": "^7.18.6", 275 | "@babel/traverse": "^7.18.9", 276 | "@babel/types": "^7.18.9" 277 | }, 278 | "engines": { 279 | "node": ">=6.9.0" 280 | } 281 | }, 282 | "node_modules/@babel/highlight": { 283 | "version": "7.18.6", 284 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 285 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 286 | "dev": true, 287 | "dependencies": { 288 | "@babel/helper-validator-identifier": "^7.18.6", 289 | "chalk": "^2.0.0", 290 | "js-tokens": "^4.0.0" 291 | }, 292 | "engines": { 293 | "node": ">=6.9.0" 294 | } 295 | }, 296 | "node_modules/@babel/parser": { 297 | "version": "7.18.11", 298 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", 299 | "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", 300 | "dev": true, 301 | "bin": { 302 | "parser": "bin/babel-parser.js" 303 | }, 304 | "engines": { 305 | "node": ">=6.0.0" 306 | } 307 | }, 308 | "node_modules/@babel/plugin-syntax-jsx": { 309 | "version": "7.18.6", 310 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", 311 | "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", 312 | "dev": true, 313 | "dependencies": { 314 | "@babel/helper-plugin-utils": "^7.18.6" 315 | }, 316 | "engines": { 317 | "node": ">=6.9.0" 318 | }, 319 | "peerDependencies": { 320 | "@babel/core": "^7.0.0-0" 321 | } 322 | }, 323 | "node_modules/@babel/plugin-transform-react-jsx": { 324 | "version": "7.18.10", 325 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", 326 | "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", 327 | "dev": true, 328 | "dependencies": { 329 | "@babel/helper-annotate-as-pure": "^7.18.6", 330 | "@babel/helper-module-imports": "^7.18.6", 331 | "@babel/helper-plugin-utils": "^7.18.9", 332 | "@babel/plugin-syntax-jsx": "^7.18.6", 333 | "@babel/types": "^7.18.10" 334 | }, 335 | "engines": { 336 | "node": ">=6.9.0" 337 | }, 338 | "peerDependencies": { 339 | "@babel/core": "^7.0.0-0" 340 | } 341 | }, 342 | "node_modules/@babel/plugin-transform-react-jsx-development": { 343 | "version": "7.18.6", 344 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", 345 | "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", 346 | "dev": true, 347 | "dependencies": { 348 | "@babel/plugin-transform-react-jsx": "^7.18.6" 349 | }, 350 | "engines": { 351 | "node": ">=6.9.0" 352 | }, 353 | "peerDependencies": { 354 | "@babel/core": "^7.0.0-0" 355 | } 356 | }, 357 | "node_modules/@babel/plugin-transform-react-jsx-self": { 358 | "version": "7.18.6", 359 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", 360 | "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", 361 | "dev": true, 362 | "dependencies": { 363 | "@babel/helper-plugin-utils": "^7.18.6" 364 | }, 365 | "engines": { 366 | "node": ">=6.9.0" 367 | }, 368 | "peerDependencies": { 369 | "@babel/core": "^7.0.0-0" 370 | } 371 | }, 372 | "node_modules/@babel/plugin-transform-react-jsx-source": { 373 | "version": "7.18.6", 374 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz", 375 | "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==", 376 | "dev": true, 377 | "dependencies": { 378 | "@babel/helper-plugin-utils": "^7.18.6" 379 | }, 380 | "engines": { 381 | "node": ">=6.9.0" 382 | }, 383 | "peerDependencies": { 384 | "@babel/core": "^7.0.0-0" 385 | } 386 | }, 387 | "node_modules/@babel/template": { 388 | "version": "7.18.10", 389 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", 390 | "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", 391 | "dev": true, 392 | "dependencies": { 393 | "@babel/code-frame": "^7.18.6", 394 | "@babel/parser": "^7.18.10", 395 | "@babel/types": "^7.18.10" 396 | }, 397 | "engines": { 398 | "node": ">=6.9.0" 399 | } 400 | }, 401 | "node_modules/@babel/traverse": { 402 | "version": "7.18.11", 403 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", 404 | "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", 405 | "dev": true, 406 | "dependencies": { 407 | "@babel/code-frame": "^7.18.6", 408 | "@babel/generator": "^7.18.10", 409 | "@babel/helper-environment-visitor": "^7.18.9", 410 | "@babel/helper-function-name": "^7.18.9", 411 | "@babel/helper-hoist-variables": "^7.18.6", 412 | "@babel/helper-split-export-declaration": "^7.18.6", 413 | "@babel/parser": "^7.18.11", 414 | "@babel/types": "^7.18.10", 415 | "debug": "^4.1.0", 416 | "globals": "^11.1.0" 417 | }, 418 | "engines": { 419 | "node": ">=6.9.0" 420 | } 421 | }, 422 | "node_modules/@babel/types": { 423 | "version": "7.18.10", 424 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", 425 | "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", 426 | "dev": true, 427 | "dependencies": { 428 | "@babel/helper-string-parser": "^7.18.10", 429 | "@babel/helper-validator-identifier": "^7.18.6", 430 | "to-fast-properties": "^2.0.0" 431 | }, 432 | "engines": { 433 | "node": ">=6.9.0" 434 | } 435 | }, 436 | "node_modules/@esbuild/linux-loong64": { 437 | "version": "0.14.53", 438 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.53.tgz", 439 | "integrity": "sha512-W2dAL6Bnyn4xa/QRSU3ilIK4EzD5wgYXKXJiS1HDF5vU3675qc2bvFyLwbUcdmssDveyndy7FbitrCoiV/eMLg==", 440 | "cpu": [ 441 | "loong64" 442 | ], 443 | "dev": true, 444 | "optional": true, 445 | "os": [ 446 | "linux" 447 | ], 448 | "engines": { 449 | "node": ">=12" 450 | } 451 | }, 452 | "node_modules/@jridgewell/gen-mapping": { 453 | "version": "0.1.1", 454 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 455 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 456 | "dev": true, 457 | "dependencies": { 458 | "@jridgewell/set-array": "^1.0.0", 459 | "@jridgewell/sourcemap-codec": "^1.4.10" 460 | }, 461 | "engines": { 462 | "node": ">=6.0.0" 463 | } 464 | }, 465 | "node_modules/@jridgewell/resolve-uri": { 466 | "version": "3.1.0", 467 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 468 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 469 | "dev": true, 470 | "engines": { 471 | "node": ">=6.0.0" 472 | } 473 | }, 474 | "node_modules/@jridgewell/set-array": { 475 | "version": "1.1.2", 476 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 477 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 478 | "dev": true, 479 | "engines": { 480 | "node": ">=6.0.0" 481 | } 482 | }, 483 | "node_modules/@jridgewell/sourcemap-codec": { 484 | "version": "1.4.14", 485 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 486 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 487 | "dev": true 488 | }, 489 | "node_modules/@jridgewell/trace-mapping": { 490 | "version": "0.3.14", 491 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", 492 | "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", 493 | "dev": true, 494 | "dependencies": { 495 | "@jridgewell/resolve-uri": "^3.0.3", 496 | "@jridgewell/sourcemap-codec": "^1.4.10" 497 | } 498 | }, 499 | "node_modules/@types/prop-types": { 500 | "version": "15.7.5", 501 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 502 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 503 | "dev": true 504 | }, 505 | "node_modules/@types/react": { 506 | "version": "18.0.15", 507 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.15.tgz", 508 | "integrity": "sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==", 509 | "dev": true, 510 | "dependencies": { 511 | "@types/prop-types": "*", 512 | "@types/scheduler": "*", 513 | "csstype": "^3.0.2" 514 | } 515 | }, 516 | "node_modules/@types/react-dom": { 517 | "version": "18.0.6", 518 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", 519 | "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", 520 | "dev": true, 521 | "dependencies": { 522 | "@types/react": "*" 523 | } 524 | }, 525 | "node_modules/@types/scheduler": { 526 | "version": "0.16.2", 527 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 528 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 529 | "dev": true 530 | }, 531 | "node_modules/@vitejs/plugin-react": { 532 | "version": "2.0.0", 533 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.0.0.tgz", 534 | "integrity": "sha512-zHkRR+X4zqEPNBbKV2FvWSxK7Q6crjMBVIAYroSU8Nbb4M3E5x4qOiLoqJBHtXgr27kfednXjkwr3lr8jS6Wrw==", 535 | "dev": true, 536 | "dependencies": { 537 | "@babel/core": "^7.18.6", 538 | "@babel/plugin-transform-react-jsx": "^7.18.6", 539 | "@babel/plugin-transform-react-jsx-development": "^7.18.6", 540 | "@babel/plugin-transform-react-jsx-self": "^7.18.6", 541 | "@babel/plugin-transform-react-jsx-source": "^7.18.6", 542 | "magic-string": "^0.26.2", 543 | "react-refresh": "^0.14.0" 544 | }, 545 | "engines": { 546 | "node": ">=14.18.0" 547 | }, 548 | "peerDependencies": { 549 | "vite": "^3.0.0" 550 | } 551 | }, 552 | "node_modules/ansi-styles": { 553 | "version": "3.2.1", 554 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 555 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 556 | "dev": true, 557 | "dependencies": { 558 | "color-convert": "^1.9.0" 559 | }, 560 | "engines": { 561 | "node": ">=4" 562 | } 563 | }, 564 | "node_modules/browserslist": { 565 | "version": "4.21.3", 566 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", 567 | "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", 568 | "dev": true, 569 | "funding": [ 570 | { 571 | "type": "opencollective", 572 | "url": "https://opencollective.com/browserslist" 573 | }, 574 | { 575 | "type": "tidelift", 576 | "url": "https://tidelift.com/funding/github/npm/browserslist" 577 | } 578 | ], 579 | "dependencies": { 580 | "caniuse-lite": "^1.0.30001370", 581 | "electron-to-chromium": "^1.4.202", 582 | "node-releases": "^2.0.6", 583 | "update-browserslist-db": "^1.0.5" 584 | }, 585 | "bin": { 586 | "browserslist": "cli.js" 587 | }, 588 | "engines": { 589 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 590 | } 591 | }, 592 | "node_modules/caniuse-lite": { 593 | "version": "1.0.30001374", 594 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", 595 | "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", 596 | "dev": true, 597 | "funding": [ 598 | { 599 | "type": "opencollective", 600 | "url": "https://opencollective.com/browserslist" 601 | }, 602 | { 603 | "type": "tidelift", 604 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 605 | } 606 | ] 607 | }, 608 | "node_modules/chalk": { 609 | "version": "2.4.2", 610 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 611 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 612 | "dev": true, 613 | "dependencies": { 614 | "ansi-styles": "^3.2.1", 615 | "escape-string-regexp": "^1.0.5", 616 | "supports-color": "^5.3.0" 617 | }, 618 | "engines": { 619 | "node": ">=4" 620 | } 621 | }, 622 | "node_modules/color-convert": { 623 | "version": "1.9.3", 624 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 625 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 626 | "dev": true, 627 | "dependencies": { 628 | "color-name": "1.1.3" 629 | } 630 | }, 631 | "node_modules/color-name": { 632 | "version": "1.1.3", 633 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 634 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 635 | "dev": true 636 | }, 637 | "node_modules/convert-source-map": { 638 | "version": "1.8.0", 639 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 640 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 641 | "dev": true, 642 | "dependencies": { 643 | "safe-buffer": "~5.1.1" 644 | } 645 | }, 646 | "node_modules/csstype": { 647 | "version": "3.1.0", 648 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", 649 | "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==", 650 | "dev": true 651 | }, 652 | "node_modules/debug": { 653 | "version": "4.3.4", 654 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 655 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 656 | "dev": true, 657 | "dependencies": { 658 | "ms": "2.1.2" 659 | }, 660 | "engines": { 661 | "node": ">=6.0" 662 | }, 663 | "peerDependenciesMeta": { 664 | "supports-color": { 665 | "optional": true 666 | } 667 | } 668 | }, 669 | "node_modules/electron-to-chromium": { 670 | "version": "1.4.211", 671 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", 672 | "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", 673 | "dev": true 674 | }, 675 | "node_modules/esbuild": { 676 | "version": "0.14.53", 677 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.53.tgz", 678 | "integrity": "sha512-ohO33pUBQ64q6mmheX1mZ8mIXj8ivQY/L4oVuAshr+aJI+zLl+amrp3EodrUNDNYVrKJXGPfIHFGhO8slGRjuw==", 679 | "dev": true, 680 | "hasInstallScript": true, 681 | "bin": { 682 | "esbuild": "bin/esbuild" 683 | }, 684 | "engines": { 685 | "node": ">=12" 686 | }, 687 | "optionalDependencies": { 688 | "@esbuild/linux-loong64": "0.14.53", 689 | "esbuild-android-64": "0.14.53", 690 | "esbuild-android-arm64": "0.14.53", 691 | "esbuild-darwin-64": "0.14.53", 692 | "esbuild-darwin-arm64": "0.14.53", 693 | "esbuild-freebsd-64": "0.14.53", 694 | "esbuild-freebsd-arm64": "0.14.53", 695 | "esbuild-linux-32": "0.14.53", 696 | "esbuild-linux-64": "0.14.53", 697 | "esbuild-linux-arm": "0.14.53", 698 | "esbuild-linux-arm64": "0.14.53", 699 | "esbuild-linux-mips64le": "0.14.53", 700 | "esbuild-linux-ppc64le": "0.14.53", 701 | "esbuild-linux-riscv64": "0.14.53", 702 | "esbuild-linux-s390x": "0.14.53", 703 | "esbuild-netbsd-64": "0.14.53", 704 | "esbuild-openbsd-64": "0.14.53", 705 | "esbuild-sunos-64": "0.14.53", 706 | "esbuild-windows-32": "0.14.53", 707 | "esbuild-windows-64": "0.14.53", 708 | "esbuild-windows-arm64": "0.14.53" 709 | } 710 | }, 711 | "node_modules/esbuild-android-64": { 712 | "version": "0.14.53", 713 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.53.tgz", 714 | "integrity": "sha512-fIL93sOTnEU+NrTAVMIKiAw0YH22HWCAgg4N4Z6zov2t0kY9RAJ50zY9ZMCQ+RT6bnOfDt8gCTnt/RaSNA2yRA==", 715 | "cpu": [ 716 | "x64" 717 | ], 718 | "dev": true, 719 | "optional": true, 720 | "os": [ 721 | "android" 722 | ], 723 | "engines": { 724 | "node": ">=12" 725 | } 726 | }, 727 | "node_modules/esbuild-android-arm64": { 728 | "version": "0.14.53", 729 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.53.tgz", 730 | "integrity": "sha512-PC7KaF1v0h/nWpvlU1UMN7dzB54cBH8qSsm7S9mkwFA1BXpaEOufCg8hdoEI1jep0KeO/rjZVWrsH8+q28T77A==", 731 | "cpu": [ 732 | "arm64" 733 | ], 734 | "dev": true, 735 | "optional": true, 736 | "os": [ 737 | "android" 738 | ], 739 | "engines": { 740 | "node": ">=12" 741 | } 742 | }, 743 | "node_modules/esbuild-darwin-64": { 744 | "version": "0.14.53", 745 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.53.tgz", 746 | "integrity": "sha512-gE7P5wlnkX4d4PKvLBUgmhZXvL7lzGRLri17/+CmmCzfncIgq8lOBvxGMiQ4xazplhxq+72TEohyFMZLFxuWvg==", 747 | "cpu": [ 748 | "x64" 749 | ], 750 | "dev": true, 751 | "optional": true, 752 | "os": [ 753 | "darwin" 754 | ], 755 | "engines": { 756 | "node": ">=12" 757 | } 758 | }, 759 | "node_modules/esbuild-darwin-arm64": { 760 | "version": "0.14.53", 761 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.53.tgz", 762 | "integrity": "sha512-otJwDU3hnI15Q98PX4MJbknSZ/WSR1I45il7gcxcECXzfN4Mrpft5hBDHXNRnCh+5858uPXBXA1Vaz2jVWLaIA==", 763 | "cpu": [ 764 | "arm64" 765 | ], 766 | "dev": true, 767 | "optional": true, 768 | "os": [ 769 | "darwin" 770 | ], 771 | "engines": { 772 | "node": ">=12" 773 | } 774 | }, 775 | "node_modules/esbuild-freebsd-64": { 776 | "version": "0.14.53", 777 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.53.tgz", 778 | "integrity": "sha512-WkdJa8iyrGHyKiPF4lk0MiOF87Q2SkE+i+8D4Cazq3/iqmGPJ6u49je300MFi5I2eUsQCkaOWhpCVQMTKGww2w==", 779 | "cpu": [ 780 | "x64" 781 | ], 782 | "dev": true, 783 | "optional": true, 784 | "os": [ 785 | "freebsd" 786 | ], 787 | "engines": { 788 | "node": ">=12" 789 | } 790 | }, 791 | "node_modules/esbuild-freebsd-arm64": { 792 | "version": "0.14.53", 793 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.53.tgz", 794 | "integrity": "sha512-9T7WwCuV30NAx0SyQpw8edbKvbKELnnm1FHg7gbSYaatH+c8WJW10g/OdM7JYnv7qkimw2ZTtSA+NokOLd2ydQ==", 795 | "cpu": [ 796 | "arm64" 797 | ], 798 | "dev": true, 799 | "optional": true, 800 | "os": [ 801 | "freebsd" 802 | ], 803 | "engines": { 804 | "node": ">=12" 805 | } 806 | }, 807 | "node_modules/esbuild-linux-32": { 808 | "version": "0.14.53", 809 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.53.tgz", 810 | "integrity": "sha512-VGanLBg5en2LfGDgLEUxQko2lqsOS7MTEWUi8x91YmsHNyzJVT/WApbFFx3MQGhkf+XdimVhpyo5/G0PBY91zg==", 811 | "cpu": [ 812 | "ia32" 813 | ], 814 | "dev": true, 815 | "optional": true, 816 | "os": [ 817 | "linux" 818 | ], 819 | "engines": { 820 | "node": ">=12" 821 | } 822 | }, 823 | "node_modules/esbuild-linux-64": { 824 | "version": "0.14.53", 825 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.53.tgz", 826 | "integrity": "sha512-pP/FA55j/fzAV7N9DF31meAyjOH6Bjuo3aSKPh26+RW85ZEtbJv9nhoxmGTd9FOqjx59Tc1ZbrJabuiXlMwuZQ==", 827 | "cpu": [ 828 | "x64" 829 | ], 830 | "dev": true, 831 | "optional": true, 832 | "os": [ 833 | "linux" 834 | ], 835 | "engines": { 836 | "node": ">=12" 837 | } 838 | }, 839 | "node_modules/esbuild-linux-arm": { 840 | "version": "0.14.53", 841 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.53.tgz", 842 | "integrity": "sha512-/u81NGAVZMopbmzd21Nu/wvnKQK3pT4CrvQ8BTje1STXcQAGnfyKgQlj3m0j2BzYbvQxSy+TMck4TNV2onvoPA==", 843 | "cpu": [ 844 | "arm" 845 | ], 846 | "dev": true, 847 | "optional": true, 848 | "os": [ 849 | "linux" 850 | ], 851 | "engines": { 852 | "node": ">=12" 853 | } 854 | }, 855 | "node_modules/esbuild-linux-arm64": { 856 | "version": "0.14.53", 857 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.53.tgz", 858 | "integrity": "sha512-GDmWITT+PMsjCA6/lByYk7NyFssW4Q6in32iPkpjZ/ytSyH+xeEx8q7HG3AhWH6heemEYEWpTll/eui3jwlSnw==", 859 | "cpu": [ 860 | "arm64" 861 | ], 862 | "dev": true, 863 | "optional": true, 864 | "os": [ 865 | "linux" 866 | ], 867 | "engines": { 868 | "node": ">=12" 869 | } 870 | }, 871 | "node_modules/esbuild-linux-mips64le": { 872 | "version": "0.14.53", 873 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.53.tgz", 874 | "integrity": "sha512-d6/XHIQW714gSSp6tOOX2UscedVobELvQlPMkInhx1NPz4ThZI9uNLQ4qQJHGBGKGfu+rtJsxM4NVHLhnNRdWQ==", 875 | "cpu": [ 876 | "mips64el" 877 | ], 878 | "dev": true, 879 | "optional": true, 880 | "os": [ 881 | "linux" 882 | ], 883 | "engines": { 884 | "node": ">=12" 885 | } 886 | }, 887 | "node_modules/esbuild-linux-ppc64le": { 888 | "version": "0.14.53", 889 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.53.tgz", 890 | "integrity": "sha512-ndnJmniKPCB52m+r6BtHHLAOXw+xBCWIxNnedbIpuREOcbSU/AlyM/2dA3BmUQhsHdb4w3amD5U2s91TJ3MzzA==", 891 | "cpu": [ 892 | "ppc64" 893 | ], 894 | "dev": true, 895 | "optional": true, 896 | "os": [ 897 | "linux" 898 | ], 899 | "engines": { 900 | "node": ">=12" 901 | } 902 | }, 903 | "node_modules/esbuild-linux-riscv64": { 904 | "version": "0.14.53", 905 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.53.tgz", 906 | "integrity": "sha512-yG2sVH+QSix6ct4lIzJj329iJF3MhloLE6/vKMQAAd26UVPVkhMFqFopY+9kCgYsdeWvXdPgmyOuKa48Y7+/EQ==", 907 | "cpu": [ 908 | "riscv64" 909 | ], 910 | "dev": true, 911 | "optional": true, 912 | "os": [ 913 | "linux" 914 | ], 915 | "engines": { 916 | "node": ">=12" 917 | } 918 | }, 919 | "node_modules/esbuild-linux-s390x": { 920 | "version": "0.14.53", 921 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.53.tgz", 922 | "integrity": "sha512-OCJlgdkB+XPYndHmw6uZT7jcYgzmx9K+28PVdOa/eLjdoYkeAFvH5hTwX4AXGLZLH09tpl4bVsEtvuyUldaNCg==", 923 | "cpu": [ 924 | "s390x" 925 | ], 926 | "dev": true, 927 | "optional": true, 928 | "os": [ 929 | "linux" 930 | ], 931 | "engines": { 932 | "node": ">=12" 933 | } 934 | }, 935 | "node_modules/esbuild-netbsd-64": { 936 | "version": "0.14.53", 937 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.53.tgz", 938 | "integrity": "sha512-gp2SB+Efc7MhMdWV2+pmIs/Ja/Mi5rjw+wlDmmbIn68VGXBleNgiEZG+eV2SRS0kJEUyHNedDtwRIMzaohWedQ==", 939 | "cpu": [ 940 | "x64" 941 | ], 942 | "dev": true, 943 | "optional": true, 944 | "os": [ 945 | "netbsd" 946 | ], 947 | "engines": { 948 | "node": ">=12" 949 | } 950 | }, 951 | "node_modules/esbuild-openbsd-64": { 952 | "version": "0.14.53", 953 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.53.tgz", 954 | "integrity": "sha512-eKQ30ZWe+WTZmteDYg8S+YjHV5s4iTxeSGhJKJajFfQx9TLZJvsJX0/paqwP51GicOUruFpSUAs2NCc0a4ivQQ==", 955 | "cpu": [ 956 | "x64" 957 | ], 958 | "dev": true, 959 | "optional": true, 960 | "os": [ 961 | "openbsd" 962 | ], 963 | "engines": { 964 | "node": ">=12" 965 | } 966 | }, 967 | "node_modules/esbuild-sunos-64": { 968 | "version": "0.14.53", 969 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.53.tgz", 970 | "integrity": "sha512-OWLpS7a2FrIRukQqcgQqR1XKn0jSJoOdT+RlhAxUoEQM/IpytS3FXzCJM6xjUYtpO5GMY0EdZJp+ur2pYdm39g==", 971 | "cpu": [ 972 | "x64" 973 | ], 974 | "dev": true, 975 | "optional": true, 976 | "os": [ 977 | "sunos" 978 | ], 979 | "engines": { 980 | "node": ">=12" 981 | } 982 | }, 983 | "node_modules/esbuild-windows-32": { 984 | "version": "0.14.53", 985 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.53.tgz", 986 | "integrity": "sha512-m14XyWQP5rwGW0tbEfp95U6A0wY0DYPInWBB7D69FAXUpBpBObRoGTKRv36lf2RWOdE4YO3TNvj37zhXjVL5xg==", 987 | "cpu": [ 988 | "ia32" 989 | ], 990 | "dev": true, 991 | "optional": true, 992 | "os": [ 993 | "win32" 994 | ], 995 | "engines": { 996 | "node": ">=12" 997 | } 998 | }, 999 | "node_modules/esbuild-windows-64": { 1000 | "version": "0.14.53", 1001 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.53.tgz", 1002 | "integrity": "sha512-s9skQFF0I7zqnQ2K8S1xdLSfZFsPLuOGmSx57h2btSEswv0N0YodYvqLcJMrNMXh6EynOmWD7rz+0rWWbFpIHQ==", 1003 | "cpu": [ 1004 | "x64" 1005 | ], 1006 | "dev": true, 1007 | "optional": true, 1008 | "os": [ 1009 | "win32" 1010 | ], 1011 | "engines": { 1012 | "node": ">=12" 1013 | } 1014 | }, 1015 | "node_modules/esbuild-windows-arm64": { 1016 | "version": "0.14.53", 1017 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.53.tgz", 1018 | "integrity": "sha512-E+5Gvb+ZWts+00T9II6wp2L3KG2r3iGxByqd/a1RmLmYWVsSVUjkvIxZuJ3hYTIbhLkH5PRwpldGTKYqVz0nzQ==", 1019 | "cpu": [ 1020 | "arm64" 1021 | ], 1022 | "dev": true, 1023 | "optional": true, 1024 | "os": [ 1025 | "win32" 1026 | ], 1027 | "engines": { 1028 | "node": ">=12" 1029 | } 1030 | }, 1031 | "node_modules/escalade": { 1032 | "version": "3.1.1", 1033 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1034 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1035 | "dev": true, 1036 | "engines": { 1037 | "node": ">=6" 1038 | } 1039 | }, 1040 | "node_modules/escape-string-regexp": { 1041 | "version": "1.0.5", 1042 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1043 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1044 | "dev": true, 1045 | "engines": { 1046 | "node": ">=0.8.0" 1047 | } 1048 | }, 1049 | "node_modules/fsevents": { 1050 | "version": "2.3.2", 1051 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1052 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1053 | "dev": true, 1054 | "hasInstallScript": true, 1055 | "optional": true, 1056 | "os": [ 1057 | "darwin" 1058 | ], 1059 | "engines": { 1060 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1061 | } 1062 | }, 1063 | "node_modules/function-bind": { 1064 | "version": "1.1.1", 1065 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1066 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1067 | "dev": true 1068 | }, 1069 | "node_modules/gensync": { 1070 | "version": "1.0.0-beta.2", 1071 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1072 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1073 | "dev": true, 1074 | "engines": { 1075 | "node": ">=6.9.0" 1076 | } 1077 | }, 1078 | "node_modules/globals": { 1079 | "version": "11.12.0", 1080 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1081 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1082 | "dev": true, 1083 | "engines": { 1084 | "node": ">=4" 1085 | } 1086 | }, 1087 | "node_modules/has": { 1088 | "version": "1.0.3", 1089 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1090 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1091 | "dev": true, 1092 | "dependencies": { 1093 | "function-bind": "^1.1.1" 1094 | }, 1095 | "engines": { 1096 | "node": ">= 0.4.0" 1097 | } 1098 | }, 1099 | "node_modules/has-flag": { 1100 | "version": "3.0.0", 1101 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1102 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1103 | "dev": true, 1104 | "engines": { 1105 | "node": ">=4" 1106 | } 1107 | }, 1108 | "node_modules/is-core-module": { 1109 | "version": "2.10.0", 1110 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", 1111 | "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", 1112 | "dev": true, 1113 | "dependencies": { 1114 | "has": "^1.0.3" 1115 | }, 1116 | "funding": { 1117 | "url": "https://github.com/sponsors/ljharb" 1118 | } 1119 | }, 1120 | "node_modules/js-tokens": { 1121 | "version": "4.0.0", 1122 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1123 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1124 | }, 1125 | "node_modules/jsesc": { 1126 | "version": "2.5.2", 1127 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1128 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1129 | "dev": true, 1130 | "bin": { 1131 | "jsesc": "bin/jsesc" 1132 | }, 1133 | "engines": { 1134 | "node": ">=4" 1135 | } 1136 | }, 1137 | "node_modules/json5": { 1138 | "version": "2.2.1", 1139 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", 1140 | "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", 1141 | "dev": true, 1142 | "bin": { 1143 | "json5": "lib/cli.js" 1144 | }, 1145 | "engines": { 1146 | "node": ">=6" 1147 | } 1148 | }, 1149 | "node_modules/loose-envify": { 1150 | "version": "1.4.0", 1151 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1152 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1153 | "dependencies": { 1154 | "js-tokens": "^3.0.0 || ^4.0.0" 1155 | }, 1156 | "bin": { 1157 | "loose-envify": "cli.js" 1158 | } 1159 | }, 1160 | "node_modules/magic-string": { 1161 | "version": "0.26.2", 1162 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", 1163 | "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", 1164 | "dev": true, 1165 | "dependencies": { 1166 | "sourcemap-codec": "^1.4.8" 1167 | }, 1168 | "engines": { 1169 | "node": ">=12" 1170 | } 1171 | }, 1172 | "node_modules/ms": { 1173 | "version": "2.1.2", 1174 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1175 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1176 | "dev": true 1177 | }, 1178 | "node_modules/nanoid": { 1179 | "version": "3.3.4", 1180 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 1181 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 1182 | "dev": true, 1183 | "bin": { 1184 | "nanoid": "bin/nanoid.cjs" 1185 | }, 1186 | "engines": { 1187 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1188 | } 1189 | }, 1190 | "node_modules/node-releases": { 1191 | "version": "2.0.6", 1192 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", 1193 | "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", 1194 | "dev": true 1195 | }, 1196 | "node_modules/path-parse": { 1197 | "version": "1.0.7", 1198 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1199 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1200 | "dev": true 1201 | }, 1202 | "node_modules/picocolors": { 1203 | "version": "1.0.0", 1204 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1205 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1206 | "dev": true 1207 | }, 1208 | "node_modules/postcss": { 1209 | "version": "8.4.14", 1210 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 1211 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 1212 | "dev": true, 1213 | "funding": [ 1214 | { 1215 | "type": "opencollective", 1216 | "url": "https://opencollective.com/postcss/" 1217 | }, 1218 | { 1219 | "type": "tidelift", 1220 | "url": "https://tidelift.com/funding/github/npm/postcss" 1221 | } 1222 | ], 1223 | "dependencies": { 1224 | "nanoid": "^3.3.4", 1225 | "picocolors": "^1.0.0", 1226 | "source-map-js": "^1.0.2" 1227 | }, 1228 | "engines": { 1229 | "node": "^10 || ^12 || >=14" 1230 | } 1231 | }, 1232 | "node_modules/react": { 1233 | "version": "18.2.0", 1234 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 1235 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 1236 | "dependencies": { 1237 | "loose-envify": "^1.1.0" 1238 | }, 1239 | "engines": { 1240 | "node": ">=0.10.0" 1241 | } 1242 | }, 1243 | "node_modules/react-dom": { 1244 | "version": "18.2.0", 1245 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 1246 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 1247 | "dependencies": { 1248 | "loose-envify": "^1.1.0", 1249 | "scheduler": "^0.23.0" 1250 | }, 1251 | "peerDependencies": { 1252 | "react": "^18.2.0" 1253 | } 1254 | }, 1255 | "node_modules/react-refresh": { 1256 | "version": "0.14.0", 1257 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", 1258 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", 1259 | "dev": true, 1260 | "engines": { 1261 | "node": ">=0.10.0" 1262 | } 1263 | }, 1264 | "node_modules/resolve": { 1265 | "version": "1.22.1", 1266 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1267 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1268 | "dev": true, 1269 | "dependencies": { 1270 | "is-core-module": "^2.9.0", 1271 | "path-parse": "^1.0.7", 1272 | "supports-preserve-symlinks-flag": "^1.0.0" 1273 | }, 1274 | "bin": { 1275 | "resolve": "bin/resolve" 1276 | }, 1277 | "funding": { 1278 | "url": "https://github.com/sponsors/ljharb" 1279 | } 1280 | }, 1281 | "node_modules/rollup": { 1282 | "version": "2.77.2", 1283 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.2.tgz", 1284 | "integrity": "sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==", 1285 | "dev": true, 1286 | "bin": { 1287 | "rollup": "dist/bin/rollup" 1288 | }, 1289 | "engines": { 1290 | "node": ">=10.0.0" 1291 | }, 1292 | "optionalDependencies": { 1293 | "fsevents": "~2.3.2" 1294 | } 1295 | }, 1296 | "node_modules/safe-buffer": { 1297 | "version": "5.1.2", 1298 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1299 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1300 | "dev": true 1301 | }, 1302 | "node_modules/scheduler": { 1303 | "version": "0.23.0", 1304 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 1305 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 1306 | "dependencies": { 1307 | "loose-envify": "^1.1.0" 1308 | } 1309 | }, 1310 | "node_modules/semver": { 1311 | "version": "6.3.0", 1312 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1313 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1314 | "dev": true, 1315 | "bin": { 1316 | "semver": "bin/semver.js" 1317 | } 1318 | }, 1319 | "node_modules/source-map-js": { 1320 | "version": "1.0.2", 1321 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1322 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1323 | "dev": true, 1324 | "engines": { 1325 | "node": ">=0.10.0" 1326 | } 1327 | }, 1328 | "node_modules/sourcemap-codec": { 1329 | "version": "1.4.8", 1330 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 1331 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 1332 | "dev": true 1333 | }, 1334 | "node_modules/supports-color": { 1335 | "version": "5.5.0", 1336 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1337 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1338 | "dev": true, 1339 | "dependencies": { 1340 | "has-flag": "^3.0.0" 1341 | }, 1342 | "engines": { 1343 | "node": ">=4" 1344 | } 1345 | }, 1346 | "node_modules/supports-preserve-symlinks-flag": { 1347 | "version": "1.0.0", 1348 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1349 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1350 | "dev": true, 1351 | "engines": { 1352 | "node": ">= 0.4" 1353 | }, 1354 | "funding": { 1355 | "url": "https://github.com/sponsors/ljharb" 1356 | } 1357 | }, 1358 | "node_modules/to-fast-properties": { 1359 | "version": "2.0.0", 1360 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1361 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 1362 | "dev": true, 1363 | "engines": { 1364 | "node": ">=4" 1365 | } 1366 | }, 1367 | "node_modules/update-browserslist-db": { 1368 | "version": "1.0.5", 1369 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", 1370 | "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", 1371 | "dev": true, 1372 | "funding": [ 1373 | { 1374 | "type": "opencollective", 1375 | "url": "https://opencollective.com/browserslist" 1376 | }, 1377 | { 1378 | "type": "tidelift", 1379 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1380 | } 1381 | ], 1382 | "dependencies": { 1383 | "escalade": "^3.1.1", 1384 | "picocolors": "^1.0.0" 1385 | }, 1386 | "bin": { 1387 | "browserslist-lint": "cli.js" 1388 | }, 1389 | "peerDependencies": { 1390 | "browserslist": ">= 4.21.0" 1391 | } 1392 | }, 1393 | "node_modules/vite": { 1394 | "version": "3.0.4", 1395 | "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz", 1396 | "integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==", 1397 | "dev": true, 1398 | "dependencies": { 1399 | "esbuild": "^0.14.47", 1400 | "postcss": "^8.4.14", 1401 | "resolve": "^1.22.1", 1402 | "rollup": "^2.75.6" 1403 | }, 1404 | "bin": { 1405 | "vite": "bin/vite.js" 1406 | }, 1407 | "engines": { 1408 | "node": "^14.18.0 || >=16.0.0" 1409 | }, 1410 | "optionalDependencies": { 1411 | "fsevents": "~2.3.2" 1412 | }, 1413 | "peerDependencies": { 1414 | "less": "*", 1415 | "sass": "*", 1416 | "stylus": "*", 1417 | "terser": "^5.4.0" 1418 | }, 1419 | "peerDependenciesMeta": { 1420 | "less": { 1421 | "optional": true 1422 | }, 1423 | "sass": { 1424 | "optional": true 1425 | }, 1426 | "stylus": { 1427 | "optional": true 1428 | }, 1429 | "terser": { 1430 | "optional": true 1431 | } 1432 | } 1433 | } 1434 | }, 1435 | "dependencies": { 1436 | "@ampproject/remapping": { 1437 | "version": "2.2.0", 1438 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 1439 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 1440 | "dev": true, 1441 | "requires": { 1442 | "@jridgewell/gen-mapping": "^0.1.0", 1443 | "@jridgewell/trace-mapping": "^0.3.9" 1444 | } 1445 | }, 1446 | "@babel/code-frame": { 1447 | "version": "7.18.6", 1448 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 1449 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 1450 | "dev": true, 1451 | "requires": { 1452 | "@babel/highlight": "^7.18.6" 1453 | } 1454 | }, 1455 | "@babel/compat-data": { 1456 | "version": "7.18.8", 1457 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", 1458 | "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", 1459 | "dev": true 1460 | }, 1461 | "@babel/core": { 1462 | "version": "7.18.10", 1463 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", 1464 | "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", 1465 | "dev": true, 1466 | "requires": { 1467 | "@ampproject/remapping": "^2.1.0", 1468 | "@babel/code-frame": "^7.18.6", 1469 | "@babel/generator": "^7.18.10", 1470 | "@babel/helper-compilation-targets": "^7.18.9", 1471 | "@babel/helper-module-transforms": "^7.18.9", 1472 | "@babel/helpers": "^7.18.9", 1473 | "@babel/parser": "^7.18.10", 1474 | "@babel/template": "^7.18.10", 1475 | "@babel/traverse": "^7.18.10", 1476 | "@babel/types": "^7.18.10", 1477 | "convert-source-map": "^1.7.0", 1478 | "debug": "^4.1.0", 1479 | "gensync": "^1.0.0-beta.2", 1480 | "json5": "^2.2.1", 1481 | "semver": "^6.3.0" 1482 | } 1483 | }, 1484 | "@babel/generator": { 1485 | "version": "7.18.12", 1486 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", 1487 | "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", 1488 | "dev": true, 1489 | "requires": { 1490 | "@babel/types": "^7.18.10", 1491 | "@jridgewell/gen-mapping": "^0.3.2", 1492 | "jsesc": "^2.5.1" 1493 | }, 1494 | "dependencies": { 1495 | "@jridgewell/gen-mapping": { 1496 | "version": "0.3.2", 1497 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 1498 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 1499 | "dev": true, 1500 | "requires": { 1501 | "@jridgewell/set-array": "^1.0.1", 1502 | "@jridgewell/sourcemap-codec": "^1.4.10", 1503 | "@jridgewell/trace-mapping": "^0.3.9" 1504 | } 1505 | } 1506 | } 1507 | }, 1508 | "@babel/helper-annotate-as-pure": { 1509 | "version": "7.18.6", 1510 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", 1511 | "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", 1512 | "dev": true, 1513 | "requires": { 1514 | "@babel/types": "^7.18.6" 1515 | } 1516 | }, 1517 | "@babel/helper-compilation-targets": { 1518 | "version": "7.18.9", 1519 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", 1520 | "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", 1521 | "dev": true, 1522 | "requires": { 1523 | "@babel/compat-data": "^7.18.8", 1524 | "@babel/helper-validator-option": "^7.18.6", 1525 | "browserslist": "^4.20.2", 1526 | "semver": "^6.3.0" 1527 | } 1528 | }, 1529 | "@babel/helper-environment-visitor": { 1530 | "version": "7.18.9", 1531 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", 1532 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", 1533 | "dev": true 1534 | }, 1535 | "@babel/helper-function-name": { 1536 | "version": "7.18.9", 1537 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", 1538 | "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", 1539 | "dev": true, 1540 | "requires": { 1541 | "@babel/template": "^7.18.6", 1542 | "@babel/types": "^7.18.9" 1543 | } 1544 | }, 1545 | "@babel/helper-hoist-variables": { 1546 | "version": "7.18.6", 1547 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 1548 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 1549 | "dev": true, 1550 | "requires": { 1551 | "@babel/types": "^7.18.6" 1552 | } 1553 | }, 1554 | "@babel/helper-module-imports": { 1555 | "version": "7.18.6", 1556 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 1557 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 1558 | "dev": true, 1559 | "requires": { 1560 | "@babel/types": "^7.18.6" 1561 | } 1562 | }, 1563 | "@babel/helper-module-transforms": { 1564 | "version": "7.18.9", 1565 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", 1566 | "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", 1567 | "dev": true, 1568 | "requires": { 1569 | "@babel/helper-environment-visitor": "^7.18.9", 1570 | "@babel/helper-module-imports": "^7.18.6", 1571 | "@babel/helper-simple-access": "^7.18.6", 1572 | "@babel/helper-split-export-declaration": "^7.18.6", 1573 | "@babel/helper-validator-identifier": "^7.18.6", 1574 | "@babel/template": "^7.18.6", 1575 | "@babel/traverse": "^7.18.9", 1576 | "@babel/types": "^7.18.9" 1577 | } 1578 | }, 1579 | "@babel/helper-plugin-utils": { 1580 | "version": "7.18.9", 1581 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", 1582 | "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", 1583 | "dev": true 1584 | }, 1585 | "@babel/helper-simple-access": { 1586 | "version": "7.18.6", 1587 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", 1588 | "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", 1589 | "dev": true, 1590 | "requires": { 1591 | "@babel/types": "^7.18.6" 1592 | } 1593 | }, 1594 | "@babel/helper-split-export-declaration": { 1595 | "version": "7.18.6", 1596 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 1597 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 1598 | "dev": true, 1599 | "requires": { 1600 | "@babel/types": "^7.18.6" 1601 | } 1602 | }, 1603 | "@babel/helper-string-parser": { 1604 | "version": "7.18.10", 1605 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", 1606 | "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", 1607 | "dev": true 1608 | }, 1609 | "@babel/helper-validator-identifier": { 1610 | "version": "7.18.6", 1611 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", 1612 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", 1613 | "dev": true 1614 | }, 1615 | "@babel/helper-validator-option": { 1616 | "version": "7.18.6", 1617 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 1618 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", 1619 | "dev": true 1620 | }, 1621 | "@babel/helpers": { 1622 | "version": "7.18.9", 1623 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", 1624 | "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", 1625 | "dev": true, 1626 | "requires": { 1627 | "@babel/template": "^7.18.6", 1628 | "@babel/traverse": "^7.18.9", 1629 | "@babel/types": "^7.18.9" 1630 | } 1631 | }, 1632 | "@babel/highlight": { 1633 | "version": "7.18.6", 1634 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 1635 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 1636 | "dev": true, 1637 | "requires": { 1638 | "@babel/helper-validator-identifier": "^7.18.6", 1639 | "chalk": "^2.0.0", 1640 | "js-tokens": "^4.0.0" 1641 | } 1642 | }, 1643 | "@babel/parser": { 1644 | "version": "7.18.11", 1645 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", 1646 | "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", 1647 | "dev": true 1648 | }, 1649 | "@babel/plugin-syntax-jsx": { 1650 | "version": "7.18.6", 1651 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", 1652 | "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", 1653 | "dev": true, 1654 | "requires": { 1655 | "@babel/helper-plugin-utils": "^7.18.6" 1656 | } 1657 | }, 1658 | "@babel/plugin-transform-react-jsx": { 1659 | "version": "7.18.10", 1660 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", 1661 | "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", 1662 | "dev": true, 1663 | "requires": { 1664 | "@babel/helper-annotate-as-pure": "^7.18.6", 1665 | "@babel/helper-module-imports": "^7.18.6", 1666 | "@babel/helper-plugin-utils": "^7.18.9", 1667 | "@babel/plugin-syntax-jsx": "^7.18.6", 1668 | "@babel/types": "^7.18.10" 1669 | } 1670 | }, 1671 | "@babel/plugin-transform-react-jsx-development": { 1672 | "version": "7.18.6", 1673 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", 1674 | "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", 1675 | "dev": true, 1676 | "requires": { 1677 | "@babel/plugin-transform-react-jsx": "^7.18.6" 1678 | } 1679 | }, 1680 | "@babel/plugin-transform-react-jsx-self": { 1681 | "version": "7.18.6", 1682 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", 1683 | "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", 1684 | "dev": true, 1685 | "requires": { 1686 | "@babel/helper-plugin-utils": "^7.18.6" 1687 | } 1688 | }, 1689 | "@babel/plugin-transform-react-jsx-source": { 1690 | "version": "7.18.6", 1691 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz", 1692 | "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==", 1693 | "dev": true, 1694 | "requires": { 1695 | "@babel/helper-plugin-utils": "^7.18.6" 1696 | } 1697 | }, 1698 | "@babel/template": { 1699 | "version": "7.18.10", 1700 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", 1701 | "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", 1702 | "dev": true, 1703 | "requires": { 1704 | "@babel/code-frame": "^7.18.6", 1705 | "@babel/parser": "^7.18.10", 1706 | "@babel/types": "^7.18.10" 1707 | } 1708 | }, 1709 | "@babel/traverse": { 1710 | "version": "7.18.11", 1711 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", 1712 | "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", 1713 | "dev": true, 1714 | "requires": { 1715 | "@babel/code-frame": "^7.18.6", 1716 | "@babel/generator": "^7.18.10", 1717 | "@babel/helper-environment-visitor": "^7.18.9", 1718 | "@babel/helper-function-name": "^7.18.9", 1719 | "@babel/helper-hoist-variables": "^7.18.6", 1720 | "@babel/helper-split-export-declaration": "^7.18.6", 1721 | "@babel/parser": "^7.18.11", 1722 | "@babel/types": "^7.18.10", 1723 | "debug": "^4.1.0", 1724 | "globals": "^11.1.0" 1725 | } 1726 | }, 1727 | "@babel/types": { 1728 | "version": "7.18.10", 1729 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", 1730 | "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", 1731 | "dev": true, 1732 | "requires": { 1733 | "@babel/helper-string-parser": "^7.18.10", 1734 | "@babel/helper-validator-identifier": "^7.18.6", 1735 | "to-fast-properties": "^2.0.0" 1736 | } 1737 | }, 1738 | "@esbuild/linux-loong64": { 1739 | "version": "0.14.53", 1740 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.53.tgz", 1741 | "integrity": "sha512-W2dAL6Bnyn4xa/QRSU3ilIK4EzD5wgYXKXJiS1HDF5vU3675qc2bvFyLwbUcdmssDveyndy7FbitrCoiV/eMLg==", 1742 | "dev": true, 1743 | "optional": true 1744 | }, 1745 | "@jridgewell/gen-mapping": { 1746 | "version": "0.1.1", 1747 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 1748 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 1749 | "dev": true, 1750 | "requires": { 1751 | "@jridgewell/set-array": "^1.0.0", 1752 | "@jridgewell/sourcemap-codec": "^1.4.10" 1753 | } 1754 | }, 1755 | "@jridgewell/resolve-uri": { 1756 | "version": "3.1.0", 1757 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 1758 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 1759 | "dev": true 1760 | }, 1761 | "@jridgewell/set-array": { 1762 | "version": "1.1.2", 1763 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 1764 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 1765 | "dev": true 1766 | }, 1767 | "@jridgewell/sourcemap-codec": { 1768 | "version": "1.4.14", 1769 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 1770 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 1771 | "dev": true 1772 | }, 1773 | "@jridgewell/trace-mapping": { 1774 | "version": "0.3.14", 1775 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", 1776 | "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", 1777 | "dev": true, 1778 | "requires": { 1779 | "@jridgewell/resolve-uri": "^3.0.3", 1780 | "@jridgewell/sourcemap-codec": "^1.4.10" 1781 | } 1782 | }, 1783 | "@types/prop-types": { 1784 | "version": "15.7.5", 1785 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 1786 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 1787 | "dev": true 1788 | }, 1789 | "@types/react": { 1790 | "version": "18.0.15", 1791 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.15.tgz", 1792 | "integrity": "sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==", 1793 | "dev": true, 1794 | "requires": { 1795 | "@types/prop-types": "*", 1796 | "@types/scheduler": "*", 1797 | "csstype": "^3.0.2" 1798 | } 1799 | }, 1800 | "@types/react-dom": { 1801 | "version": "18.0.6", 1802 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", 1803 | "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", 1804 | "dev": true, 1805 | "requires": { 1806 | "@types/react": "*" 1807 | } 1808 | }, 1809 | "@types/scheduler": { 1810 | "version": "0.16.2", 1811 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 1812 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 1813 | "dev": true 1814 | }, 1815 | "@vitejs/plugin-react": { 1816 | "version": "2.0.0", 1817 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.0.0.tgz", 1818 | "integrity": "sha512-zHkRR+X4zqEPNBbKV2FvWSxK7Q6crjMBVIAYroSU8Nbb4M3E5x4qOiLoqJBHtXgr27kfednXjkwr3lr8jS6Wrw==", 1819 | "dev": true, 1820 | "requires": { 1821 | "@babel/core": "^7.18.6", 1822 | "@babel/plugin-transform-react-jsx": "^7.18.6", 1823 | "@babel/plugin-transform-react-jsx-development": "^7.18.6", 1824 | "@babel/plugin-transform-react-jsx-self": "^7.18.6", 1825 | "@babel/plugin-transform-react-jsx-source": "^7.18.6", 1826 | "magic-string": "^0.26.2", 1827 | "react-refresh": "^0.14.0" 1828 | } 1829 | }, 1830 | "ansi-styles": { 1831 | "version": "3.2.1", 1832 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1833 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1834 | "dev": true, 1835 | "requires": { 1836 | "color-convert": "^1.9.0" 1837 | } 1838 | }, 1839 | "browserslist": { 1840 | "version": "4.21.3", 1841 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", 1842 | "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", 1843 | "dev": true, 1844 | "requires": { 1845 | "caniuse-lite": "^1.0.30001370", 1846 | "electron-to-chromium": "^1.4.202", 1847 | "node-releases": "^2.0.6", 1848 | "update-browserslist-db": "^1.0.5" 1849 | } 1850 | }, 1851 | "caniuse-lite": { 1852 | "version": "1.0.30001374", 1853 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", 1854 | "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", 1855 | "dev": true 1856 | }, 1857 | "chalk": { 1858 | "version": "2.4.2", 1859 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1860 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1861 | "dev": true, 1862 | "requires": { 1863 | "ansi-styles": "^3.2.1", 1864 | "escape-string-regexp": "^1.0.5", 1865 | "supports-color": "^5.3.0" 1866 | } 1867 | }, 1868 | "color-convert": { 1869 | "version": "1.9.3", 1870 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1871 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1872 | "dev": true, 1873 | "requires": { 1874 | "color-name": "1.1.3" 1875 | } 1876 | }, 1877 | "color-name": { 1878 | "version": "1.1.3", 1879 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1880 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 1881 | "dev": true 1882 | }, 1883 | "convert-source-map": { 1884 | "version": "1.8.0", 1885 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 1886 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 1887 | "dev": true, 1888 | "requires": { 1889 | "safe-buffer": "~5.1.1" 1890 | } 1891 | }, 1892 | "csstype": { 1893 | "version": "3.1.0", 1894 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", 1895 | "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==", 1896 | "dev": true 1897 | }, 1898 | "debug": { 1899 | "version": "4.3.4", 1900 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1901 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1902 | "dev": true, 1903 | "requires": { 1904 | "ms": "2.1.2" 1905 | } 1906 | }, 1907 | "electron-to-chromium": { 1908 | "version": "1.4.211", 1909 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", 1910 | "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", 1911 | "dev": true 1912 | }, 1913 | "esbuild": { 1914 | "version": "0.14.53", 1915 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.53.tgz", 1916 | "integrity": "sha512-ohO33pUBQ64q6mmheX1mZ8mIXj8ivQY/L4oVuAshr+aJI+zLl+amrp3EodrUNDNYVrKJXGPfIHFGhO8slGRjuw==", 1917 | "dev": true, 1918 | "requires": { 1919 | "@esbuild/linux-loong64": "0.14.53", 1920 | "esbuild-android-64": "0.14.53", 1921 | "esbuild-android-arm64": "0.14.53", 1922 | "esbuild-darwin-64": "0.14.53", 1923 | "esbuild-darwin-arm64": "0.14.53", 1924 | "esbuild-freebsd-64": "0.14.53", 1925 | "esbuild-freebsd-arm64": "0.14.53", 1926 | "esbuild-linux-32": "0.14.53", 1927 | "esbuild-linux-64": "0.14.53", 1928 | "esbuild-linux-arm": "0.14.53", 1929 | "esbuild-linux-arm64": "0.14.53", 1930 | "esbuild-linux-mips64le": "0.14.53", 1931 | "esbuild-linux-ppc64le": "0.14.53", 1932 | "esbuild-linux-riscv64": "0.14.53", 1933 | "esbuild-linux-s390x": "0.14.53", 1934 | "esbuild-netbsd-64": "0.14.53", 1935 | "esbuild-openbsd-64": "0.14.53", 1936 | "esbuild-sunos-64": "0.14.53", 1937 | "esbuild-windows-32": "0.14.53", 1938 | "esbuild-windows-64": "0.14.53", 1939 | "esbuild-windows-arm64": "0.14.53" 1940 | } 1941 | }, 1942 | "esbuild-android-64": { 1943 | "version": "0.14.53", 1944 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.53.tgz", 1945 | "integrity": "sha512-fIL93sOTnEU+NrTAVMIKiAw0YH22HWCAgg4N4Z6zov2t0kY9RAJ50zY9ZMCQ+RT6bnOfDt8gCTnt/RaSNA2yRA==", 1946 | "dev": true, 1947 | "optional": true 1948 | }, 1949 | "esbuild-android-arm64": { 1950 | "version": "0.14.53", 1951 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.53.tgz", 1952 | "integrity": "sha512-PC7KaF1v0h/nWpvlU1UMN7dzB54cBH8qSsm7S9mkwFA1BXpaEOufCg8hdoEI1jep0KeO/rjZVWrsH8+q28T77A==", 1953 | "dev": true, 1954 | "optional": true 1955 | }, 1956 | "esbuild-darwin-64": { 1957 | "version": "0.14.53", 1958 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.53.tgz", 1959 | "integrity": "sha512-gE7P5wlnkX4d4PKvLBUgmhZXvL7lzGRLri17/+CmmCzfncIgq8lOBvxGMiQ4xazplhxq+72TEohyFMZLFxuWvg==", 1960 | "dev": true, 1961 | "optional": true 1962 | }, 1963 | "esbuild-darwin-arm64": { 1964 | "version": "0.14.53", 1965 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.53.tgz", 1966 | "integrity": "sha512-otJwDU3hnI15Q98PX4MJbknSZ/WSR1I45il7gcxcECXzfN4Mrpft5hBDHXNRnCh+5858uPXBXA1Vaz2jVWLaIA==", 1967 | "dev": true, 1968 | "optional": true 1969 | }, 1970 | "esbuild-freebsd-64": { 1971 | "version": "0.14.53", 1972 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.53.tgz", 1973 | "integrity": "sha512-WkdJa8iyrGHyKiPF4lk0MiOF87Q2SkE+i+8D4Cazq3/iqmGPJ6u49je300MFi5I2eUsQCkaOWhpCVQMTKGww2w==", 1974 | "dev": true, 1975 | "optional": true 1976 | }, 1977 | "esbuild-freebsd-arm64": { 1978 | "version": "0.14.53", 1979 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.53.tgz", 1980 | "integrity": "sha512-9T7WwCuV30NAx0SyQpw8edbKvbKELnnm1FHg7gbSYaatH+c8WJW10g/OdM7JYnv7qkimw2ZTtSA+NokOLd2ydQ==", 1981 | "dev": true, 1982 | "optional": true 1983 | }, 1984 | "esbuild-linux-32": { 1985 | "version": "0.14.53", 1986 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.53.tgz", 1987 | "integrity": "sha512-VGanLBg5en2LfGDgLEUxQko2lqsOS7MTEWUi8x91YmsHNyzJVT/WApbFFx3MQGhkf+XdimVhpyo5/G0PBY91zg==", 1988 | "dev": true, 1989 | "optional": true 1990 | }, 1991 | "esbuild-linux-64": { 1992 | "version": "0.14.53", 1993 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.53.tgz", 1994 | "integrity": "sha512-pP/FA55j/fzAV7N9DF31meAyjOH6Bjuo3aSKPh26+RW85ZEtbJv9nhoxmGTd9FOqjx59Tc1ZbrJabuiXlMwuZQ==", 1995 | "dev": true, 1996 | "optional": true 1997 | }, 1998 | "esbuild-linux-arm": { 1999 | "version": "0.14.53", 2000 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.53.tgz", 2001 | "integrity": "sha512-/u81NGAVZMopbmzd21Nu/wvnKQK3pT4CrvQ8BTje1STXcQAGnfyKgQlj3m0j2BzYbvQxSy+TMck4TNV2onvoPA==", 2002 | "dev": true, 2003 | "optional": true 2004 | }, 2005 | "esbuild-linux-arm64": { 2006 | "version": "0.14.53", 2007 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.53.tgz", 2008 | "integrity": "sha512-GDmWITT+PMsjCA6/lByYk7NyFssW4Q6in32iPkpjZ/ytSyH+xeEx8q7HG3AhWH6heemEYEWpTll/eui3jwlSnw==", 2009 | "dev": true, 2010 | "optional": true 2011 | }, 2012 | "esbuild-linux-mips64le": { 2013 | "version": "0.14.53", 2014 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.53.tgz", 2015 | "integrity": "sha512-d6/XHIQW714gSSp6tOOX2UscedVobELvQlPMkInhx1NPz4ThZI9uNLQ4qQJHGBGKGfu+rtJsxM4NVHLhnNRdWQ==", 2016 | "dev": true, 2017 | "optional": true 2018 | }, 2019 | "esbuild-linux-ppc64le": { 2020 | "version": "0.14.53", 2021 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.53.tgz", 2022 | "integrity": "sha512-ndnJmniKPCB52m+r6BtHHLAOXw+xBCWIxNnedbIpuREOcbSU/AlyM/2dA3BmUQhsHdb4w3amD5U2s91TJ3MzzA==", 2023 | "dev": true, 2024 | "optional": true 2025 | }, 2026 | "esbuild-linux-riscv64": { 2027 | "version": "0.14.53", 2028 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.53.tgz", 2029 | "integrity": "sha512-yG2sVH+QSix6ct4lIzJj329iJF3MhloLE6/vKMQAAd26UVPVkhMFqFopY+9kCgYsdeWvXdPgmyOuKa48Y7+/EQ==", 2030 | "dev": true, 2031 | "optional": true 2032 | }, 2033 | "esbuild-linux-s390x": { 2034 | "version": "0.14.53", 2035 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.53.tgz", 2036 | "integrity": "sha512-OCJlgdkB+XPYndHmw6uZT7jcYgzmx9K+28PVdOa/eLjdoYkeAFvH5hTwX4AXGLZLH09tpl4bVsEtvuyUldaNCg==", 2037 | "dev": true, 2038 | "optional": true 2039 | }, 2040 | "esbuild-netbsd-64": { 2041 | "version": "0.14.53", 2042 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.53.tgz", 2043 | "integrity": "sha512-gp2SB+Efc7MhMdWV2+pmIs/Ja/Mi5rjw+wlDmmbIn68VGXBleNgiEZG+eV2SRS0kJEUyHNedDtwRIMzaohWedQ==", 2044 | "dev": true, 2045 | "optional": true 2046 | }, 2047 | "esbuild-openbsd-64": { 2048 | "version": "0.14.53", 2049 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.53.tgz", 2050 | "integrity": "sha512-eKQ30ZWe+WTZmteDYg8S+YjHV5s4iTxeSGhJKJajFfQx9TLZJvsJX0/paqwP51GicOUruFpSUAs2NCc0a4ivQQ==", 2051 | "dev": true, 2052 | "optional": true 2053 | }, 2054 | "esbuild-sunos-64": { 2055 | "version": "0.14.53", 2056 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.53.tgz", 2057 | "integrity": "sha512-OWLpS7a2FrIRukQqcgQqR1XKn0jSJoOdT+RlhAxUoEQM/IpytS3FXzCJM6xjUYtpO5GMY0EdZJp+ur2pYdm39g==", 2058 | "dev": true, 2059 | "optional": true 2060 | }, 2061 | "esbuild-windows-32": { 2062 | "version": "0.14.53", 2063 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.53.tgz", 2064 | "integrity": "sha512-m14XyWQP5rwGW0tbEfp95U6A0wY0DYPInWBB7D69FAXUpBpBObRoGTKRv36lf2RWOdE4YO3TNvj37zhXjVL5xg==", 2065 | "dev": true, 2066 | "optional": true 2067 | }, 2068 | "esbuild-windows-64": { 2069 | "version": "0.14.53", 2070 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.53.tgz", 2071 | "integrity": "sha512-s9skQFF0I7zqnQ2K8S1xdLSfZFsPLuOGmSx57h2btSEswv0N0YodYvqLcJMrNMXh6EynOmWD7rz+0rWWbFpIHQ==", 2072 | "dev": true, 2073 | "optional": true 2074 | }, 2075 | "esbuild-windows-arm64": { 2076 | "version": "0.14.53", 2077 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.53.tgz", 2078 | "integrity": "sha512-E+5Gvb+ZWts+00T9II6wp2L3KG2r3iGxByqd/a1RmLmYWVsSVUjkvIxZuJ3hYTIbhLkH5PRwpldGTKYqVz0nzQ==", 2079 | "dev": true, 2080 | "optional": true 2081 | }, 2082 | "escalade": { 2083 | "version": "3.1.1", 2084 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2085 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2086 | "dev": true 2087 | }, 2088 | "escape-string-regexp": { 2089 | "version": "1.0.5", 2090 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2091 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 2092 | "dev": true 2093 | }, 2094 | "fsevents": { 2095 | "version": "2.3.2", 2096 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 2097 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 2098 | "dev": true, 2099 | "optional": true 2100 | }, 2101 | "function-bind": { 2102 | "version": "1.1.1", 2103 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2104 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 2105 | "dev": true 2106 | }, 2107 | "gensync": { 2108 | "version": "1.0.0-beta.2", 2109 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 2110 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 2111 | "dev": true 2112 | }, 2113 | "globals": { 2114 | "version": "11.12.0", 2115 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 2116 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 2117 | "dev": true 2118 | }, 2119 | "has": { 2120 | "version": "1.0.3", 2121 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2122 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2123 | "dev": true, 2124 | "requires": { 2125 | "function-bind": "^1.1.1" 2126 | } 2127 | }, 2128 | "has-flag": { 2129 | "version": "3.0.0", 2130 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2131 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2132 | "dev": true 2133 | }, 2134 | "is-core-module": { 2135 | "version": "2.10.0", 2136 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", 2137 | "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", 2138 | "dev": true, 2139 | "requires": { 2140 | "has": "^1.0.3" 2141 | } 2142 | }, 2143 | "js-tokens": { 2144 | "version": "4.0.0", 2145 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2146 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 2147 | }, 2148 | "jsesc": { 2149 | "version": "2.5.2", 2150 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 2151 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 2152 | "dev": true 2153 | }, 2154 | "json5": { 2155 | "version": "2.2.1", 2156 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", 2157 | "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", 2158 | "dev": true 2159 | }, 2160 | "loose-envify": { 2161 | "version": "1.4.0", 2162 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2163 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2164 | "requires": { 2165 | "js-tokens": "^3.0.0 || ^4.0.0" 2166 | } 2167 | }, 2168 | "magic-string": { 2169 | "version": "0.26.2", 2170 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", 2171 | "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", 2172 | "dev": true, 2173 | "requires": { 2174 | "sourcemap-codec": "^1.4.8" 2175 | } 2176 | }, 2177 | "ms": { 2178 | "version": "2.1.2", 2179 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2180 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2181 | "dev": true 2182 | }, 2183 | "nanoid": { 2184 | "version": "3.3.4", 2185 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 2186 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 2187 | "dev": true 2188 | }, 2189 | "node-releases": { 2190 | "version": "2.0.6", 2191 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", 2192 | "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", 2193 | "dev": true 2194 | }, 2195 | "path-parse": { 2196 | "version": "1.0.7", 2197 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2198 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2199 | "dev": true 2200 | }, 2201 | "picocolors": { 2202 | "version": "1.0.0", 2203 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 2204 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 2205 | "dev": true 2206 | }, 2207 | "postcss": { 2208 | "version": "8.4.14", 2209 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 2210 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 2211 | "dev": true, 2212 | "requires": { 2213 | "nanoid": "^3.3.4", 2214 | "picocolors": "^1.0.0", 2215 | "source-map-js": "^1.0.2" 2216 | } 2217 | }, 2218 | "react": { 2219 | "version": "18.2.0", 2220 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 2221 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 2222 | "requires": { 2223 | "loose-envify": "^1.1.0" 2224 | } 2225 | }, 2226 | "react-dom": { 2227 | "version": "18.2.0", 2228 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 2229 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 2230 | "requires": { 2231 | "loose-envify": "^1.1.0", 2232 | "scheduler": "^0.23.0" 2233 | } 2234 | }, 2235 | "react-refresh": { 2236 | "version": "0.14.0", 2237 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", 2238 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", 2239 | "dev": true 2240 | }, 2241 | "resolve": { 2242 | "version": "1.22.1", 2243 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 2244 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 2245 | "dev": true, 2246 | "requires": { 2247 | "is-core-module": "^2.9.0", 2248 | "path-parse": "^1.0.7", 2249 | "supports-preserve-symlinks-flag": "^1.0.0" 2250 | } 2251 | }, 2252 | "rollup": { 2253 | "version": "2.77.2", 2254 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.2.tgz", 2255 | "integrity": "sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==", 2256 | "dev": true, 2257 | "requires": { 2258 | "fsevents": "~2.3.2" 2259 | } 2260 | }, 2261 | "safe-buffer": { 2262 | "version": "5.1.2", 2263 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2264 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2265 | "dev": true 2266 | }, 2267 | "scheduler": { 2268 | "version": "0.23.0", 2269 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 2270 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 2271 | "requires": { 2272 | "loose-envify": "^1.1.0" 2273 | } 2274 | }, 2275 | "semver": { 2276 | "version": "6.3.0", 2277 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2278 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2279 | "dev": true 2280 | }, 2281 | "source-map-js": { 2282 | "version": "1.0.2", 2283 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2284 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 2285 | "dev": true 2286 | }, 2287 | "sourcemap-codec": { 2288 | "version": "1.4.8", 2289 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 2290 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 2291 | "dev": true 2292 | }, 2293 | "supports-color": { 2294 | "version": "5.5.0", 2295 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2296 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2297 | "dev": true, 2298 | "requires": { 2299 | "has-flag": "^3.0.0" 2300 | } 2301 | }, 2302 | "supports-preserve-symlinks-flag": { 2303 | "version": "1.0.0", 2304 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2305 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2306 | "dev": true 2307 | }, 2308 | "to-fast-properties": { 2309 | "version": "2.0.0", 2310 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2311 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 2312 | "dev": true 2313 | }, 2314 | "update-browserslist-db": { 2315 | "version": "1.0.5", 2316 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", 2317 | "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", 2318 | "dev": true, 2319 | "requires": { 2320 | "escalade": "^3.1.1", 2321 | "picocolors": "^1.0.0" 2322 | } 2323 | }, 2324 | "vite": { 2325 | "version": "3.0.4", 2326 | "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz", 2327 | "integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==", 2328 | "dev": true, 2329 | "requires": { 2330 | "esbuild": "^0.14.47", 2331 | "fsevents": "~2.3.2", 2332 | "postcss": "^8.4.14", 2333 | "resolve": "^1.22.1", 2334 | "rollup": "^2.75.6" 2335 | } 2336 | } 2337 | } 2338 | } 2339 | -------------------------------------------------------------------------------- /client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "react": "^18.2.0", 13 | "react-dom": "^18.2.0" 14 | }, 15 | "devDependencies": { 16 | "@types/react": "^18.0.15", 17 | "@types/react-dom": "^18.0.6", 18 | "@vitejs/plugin-react": "^2.0.0", 19 | "vite": "^3.0.0" 20 | } 21 | } -------------------------------------------------------------------------------- /client/public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/src/App.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FaztWeb/go-react-project/9e0f660cc950727cc8237be166345b22c02e2305/client/src/App.css -------------------------------------------------------------------------------- /client/src/App.jsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import { useState } from "react"; 3 | 4 | function App() { 5 | const [name, setName] = useState(""); 6 | const [users, setUsers] = useState([]) 7 | 8 | async function loadUsers() { 9 | const response = await fetch(import.meta.env.VITE_API + "/users"); 10 | const data = await response.json(); 11 | console.log(data) 12 | setUsers(data.users) 13 | } 14 | 15 | useEffect(() => { 16 | loadUsers() 17 | }, []); 18 | 19 | const handleSubmit = async (e) => { 20 | e.preventDefault(); 21 | const response = await fetch(import.meta.env.VITE_API + "/users", { 22 | method: "POST", 23 | body: JSON.stringify({ name }), 24 | headers: { 25 | "Content-Type": "application/json", 26 | }, 27 | }); 28 | const data = await response.json(); 29 | loadUsers() 30 | }; 31 | 32 | return ( 33 |
34 |
35 | setName(e.target.value)} 39 | /> 40 | 41 | 42 |
43 | 44 | 49 |
50 | ); 51 | } 52 | 53 | export default App; 54 | -------------------------------------------------------------------------------- /client/src/assets/react.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/src/index.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FaztWeb/go-react-project/9e0f660cc950727cc8237be166345b22c02e2305/client/src/index.css -------------------------------------------------------------------------------- /client/src/main.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App' 4 | import './index.css' 5 | 6 | ReactDOM.createRoot(document.getElementById('root')).render( 7 | 8 | 9 | 10 | ) 11 | -------------------------------------------------------------------------------- /client/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 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/faztweb/go-react-crud 2 | 3 | go 1.18 4 | 5 | require ( 6 | github.com/andybalholm/brotli v1.0.4 // indirect 7 | github.com/gofiber/fiber/v2 v2.36.0 // indirect 8 | github.com/golang/snappy v0.0.1 // indirect 9 | github.com/klauspost/compress v1.15.0 // indirect 10 | github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect 11 | github.com/pkg/errors v0.9.1 // indirect 12 | github.com/valyala/bytebufferpool v1.0.0 // indirect 13 | github.com/valyala/fasthttp v1.38.0 // indirect 14 | github.com/valyala/tcplisten v1.0.0 // indirect 15 | github.com/xdg-go/pbkdf2 v1.0.0 // indirect 16 | github.com/xdg-go/scram v1.1.1 // indirect 17 | github.com/xdg-go/stringprep v1.0.3 // indirect 18 | github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect 19 | go.mongodb.org/mongo-driver v1.10.1 // indirect 20 | golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect 21 | golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect 22 | golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 // indirect 23 | golang.org/x/text v0.3.7 // indirect 24 | ) 25 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= 2 | github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= 3 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 4 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 5 | github.com/gofiber/fiber/v2 v2.36.0 h1:1qLMe5rhXFLPa2SjK10Wz7WFgLwYi4TYg7XrjztJHqA= 6 | github.com/gofiber/fiber/v2 v2.36.0/go.mod h1:tgCr+lierLwLoVHHO/jn3Niannv34WRkQETU8wiL9fQ= 7 | github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= 8 | github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 9 | github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 10 | github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= 11 | github.com/klauspost/compress v1.15.0 h1:xqfchp4whNFxn5A4XFyyYtitiWI8Hy5EW59jEwcyL6U= 12 | github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= 13 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 14 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= 15 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= 16 | github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0= 17 | github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= 18 | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= 19 | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 20 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 21 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 22 | github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 23 | github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= 24 | github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= 25 | github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= 26 | github.com/valyala/fasthttp v1.38.0 h1:yTjSSNjuDi2PPvXY2836bIwLmiTS2T4T9p1coQshpco= 27 | github.com/valyala/fasthttp v1.38.0/go.mod h1:t/G+3rLek+CyY9bnIE+YlMRddxVAAGjhxndDB4i4C0I= 28 | github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= 29 | github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= 30 | github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= 31 | github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= 32 | github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= 33 | github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= 34 | github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs= 35 | github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= 36 | github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= 37 | github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= 38 | go.mongodb.org/mongo-driver v1.10.1 h1:NujsPveKwHaWuKUer/ceo9DzEe7HIj1SlJ6uvXZG0S4= 39 | go.mongodb.org/mongo-driver v1.10.1/go.mod h1:z4XpeoU6w+9Vht+jAFyLgVrD+jGSQQe0+CBWFHNiHt8= 40 | golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= 41 | golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= 42 | golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= 43 | golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 44 | golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= 45 | golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= 46 | golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 47 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 48 | golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 49 | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 50 | golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 51 | golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 h1:nhht2DYV/Sn3qOayu8lM+cU1ii9sTLUeBQwQQfUHtrs= 52 | golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 53 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 54 | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= 55 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 56 | golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= 57 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 58 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 59 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 60 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 61 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 62 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 63 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 64 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "context" 5 | "fmt" 6 | 7 | "os" 8 | 9 | "github.com/gofiber/fiber/v2" 10 | "github.com/gofiber/fiber/v2/middleware/cors" 11 | "go.mongodb.org/mongo-driver/bson" 12 | "go.mongodb.org/mongo-driver/mongo" 13 | "go.mongodb.org/mongo-driver/mongo/options" 14 | 15 | "github.com/faztweb/go-react-crud/models" 16 | ) 17 | 18 | func main() { 19 | 20 | port := os.Getenv("PORT") 21 | mongodb := os.Getenv("MONGODB_URI") 22 | 23 | if port == "" { 24 | port = "3000" 25 | } 26 | 27 | if mongodb == "" { 28 | mongodb = "mongodb://localhost:27017/gomongodb" 29 | } 30 | 31 | app := fiber.New() 32 | client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("mongodb+srv://fazt:faztpassword@cluster0.ynu6g.mongodb.net/?retryWrites=true&w=majority")) 33 | 34 | if err != nil { 35 | panic(err) 36 | } 37 | 38 | app.Use(cors.New()) 39 | 40 | app.Static("/", "./client/dist") 41 | 42 | app.Post("/users", func(c *fiber.Ctx) error { 43 | var user models.User 44 | 45 | c.BodyParser(&user) 46 | 47 | coll := client.Database("gomongodb").Collection("users") 48 | result, err := coll.InsertOne(context.TODO(), bson.D{{ 49 | Key: "name", 50 | Value: user.Name, 51 | }}) 52 | 53 | if err != nil { 54 | panic(err) 55 | } 56 | 57 | return c.JSON(&fiber.Map{ 58 | "data": result, 59 | }) 60 | }) 61 | 62 | app.Get("/users", func(c *fiber.Ctx) error { 63 | var users []models.User 64 | 65 | coll := client.Database("gomongodb").Collection("users") 66 | results, error := coll.Find(context.TODO(), bson.M{}) 67 | 68 | if error != nil { 69 | panic(error) 70 | } 71 | 72 | for results.Next(context.TODO()) { 73 | var user models.User 74 | results.Decode(&user) 75 | users = append(users, user) 76 | } 77 | 78 | return c.JSON(&fiber.Map{ 79 | "users": users, 80 | }) 81 | 82 | }) 83 | 84 | app.Listen(":" + port) 85 | fmt.Println("Server on port 3000") 86 | } 87 | -------------------------------------------------------------------------------- /models/user_model.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import "go.mongodb.org/mongo-driver/bson/primitive" 4 | 5 | type User struct { 6 | Id primitive.ObjectID `json:"_id" bson:"_id"` 7 | Name string `json:"name"` 8 | } 9 | -------------------------------------------------------------------------------- /requests/users.http: -------------------------------------------------------------------------------- 1 | POST http://localhost:3000/users 2 | Content-Type: application/json 3 | 4 | { 5 | "name": "jesus" 6 | } --------------------------------------------------------------------------------