├── .gitignore ├── .pnpm-debug.log ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── src ├── App.tsx ├── assets │ └── favicon.ico ├── components │ ├── Nav.tsx │ └── RepoCard.tsx ├── index.tsx └── pages │ ├── Home.tsx │ └── SavedRepos.tsx ├── tsconfig.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | .history 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /.pnpm-debug.log: -------------------------------------------------------------------------------- 1 | { 2 | "0 debug pnpm:scope": { 3 | "selected": 1 4 | }, 5 | "1 error pnpm": { 6 | "code": "ELIFECYCLE", 7 | "errno": "ENOENT", 8 | "syscall": "spawn", 9 | "file": "sh", 10 | "pkgid": "vite-template-solid@0.0.0", 11 | "stage": "start", 12 | "script": "vite", 13 | "pkgname": "vite-template-solid", 14 | "err": { 15 | "name": "pnpm", 16 | "message": "vite-template-solid@0.0.0 start: `vite`\nspawn ENOENT", 17 | "code": "ELIFECYCLE", 18 | "stack": "pnpm: vite-template-solid@0.0.0 start: `vite`\nspawn ENOENT\n at ChildProcess. (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:93455:22)\n at ChildProcess.emit (node:events:526:28)\n at maybeClose (node:internal/child_process:1092:16)\n at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)" 19 | } 20 | }, 21 | "2 warn pnpm:global": " Local package.json exists, but node_modules missing, did you mean to install?" 22 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## GitHub Repos App with SolidJS and TypeScript 2 | 3 | [Link to the tutorial](https://youtu.be/WDodWU-B-aY) 4 | 5 | [Link to the hosted app](https://solid-gh-repos.netlify.app) 6 | 7 | [Follow me on LinkedIn](https://linkedin.com/in/ebenezerdon) 8 | 9 | 10 | ## Usage 11 | 12 | Those templates dependencies are maintained via [pnpm](https://pnpm.io) via `pnpm up -Lri`. 13 | 14 | This is the reason you see a `pnpm-lock.yaml`. That being said, any package manager will work. This file can be safely be removed once you clone a template. 15 | 16 | ```bash 17 | $ npm install # or pnpm install or yarn install 18 | ``` 19 | 20 | ### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs) 21 | 22 | ## Available Scripts 23 | 24 | In the project directory, you can run: 25 | 26 | ### `npm dev` or `npm start` 27 | 28 | Runs the app in the development mode.
29 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser. 30 | 31 | The page will reload if you make edits.
32 | 33 | ### `npm run build` 34 | 35 | Builds the app for production to the `dist` folder.
36 | It correctly bundles Solid in production mode and optimizes the build for the best performance. 37 | 38 | The build is minified and the filenames include the hashes.
39 | Your app is ready to be deployed! 40 | 41 | ## Deployment 42 | 43 | You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.) 44 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Solid App 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vite-template-solid", 3 | "version": "0.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "vite-template-solid", 9 | "version": "0.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "@solidjs/router": "^0.11.5", 13 | "bootstrap": "^5.1.3", 14 | "solid-js": "^1.8.11" 15 | }, 16 | "devDependencies": { 17 | "typescript": "^4.6.4", 18 | "vite": "^5.0.11", 19 | "vite-plugin-solid": "^2.8.2" 20 | } 21 | }, 22 | "node_modules/@ampproject/remapping": { 23 | "version": "2.2.1", 24 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", 25 | "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", 26 | "dev": true, 27 | "dependencies": { 28 | "@jridgewell/gen-mapping": "^0.3.0", 29 | "@jridgewell/trace-mapping": "^0.3.9" 30 | }, 31 | "engines": { 32 | "node": ">=6.0.0" 33 | } 34 | }, 35 | "node_modules/@babel/code-frame": { 36 | "version": "7.23.5", 37 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", 38 | "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", 39 | "dev": true, 40 | "dependencies": { 41 | "@babel/highlight": "^7.23.4", 42 | "chalk": "^2.4.2" 43 | }, 44 | "engines": { 45 | "node": ">=6.9.0" 46 | } 47 | }, 48 | "node_modules/@babel/compat-data": { 49 | "version": "7.23.5", 50 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", 51 | "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", 52 | "dev": true, 53 | "engines": { 54 | "node": ">=6.9.0" 55 | } 56 | }, 57 | "node_modules/@babel/core": { 58 | "version": "7.23.9", 59 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", 60 | "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", 61 | "dev": true, 62 | "dependencies": { 63 | "@ampproject/remapping": "^2.2.0", 64 | "@babel/code-frame": "^7.23.5", 65 | "@babel/generator": "^7.23.6", 66 | "@babel/helper-compilation-targets": "^7.23.6", 67 | "@babel/helper-module-transforms": "^7.23.3", 68 | "@babel/helpers": "^7.23.9", 69 | "@babel/parser": "^7.23.9", 70 | "@babel/template": "^7.23.9", 71 | "@babel/traverse": "^7.23.9", 72 | "@babel/types": "^7.23.9", 73 | "convert-source-map": "^2.0.0", 74 | "debug": "^4.1.0", 75 | "gensync": "^1.0.0-beta.2", 76 | "json5": "^2.2.3", 77 | "semver": "^6.3.1" 78 | }, 79 | "engines": { 80 | "node": ">=6.9.0" 81 | }, 82 | "funding": { 83 | "type": "opencollective", 84 | "url": "https://opencollective.com/babel" 85 | } 86 | }, 87 | "node_modules/@babel/generator": { 88 | "version": "7.23.6", 89 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", 90 | "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", 91 | "dev": true, 92 | "dependencies": { 93 | "@babel/types": "^7.23.6", 94 | "@jridgewell/gen-mapping": "^0.3.2", 95 | "@jridgewell/trace-mapping": "^0.3.17", 96 | "jsesc": "^2.5.1" 97 | }, 98 | "engines": { 99 | "node": ">=6.9.0" 100 | } 101 | }, 102 | "node_modules/@babel/helper-compilation-targets": { 103 | "version": "7.23.6", 104 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", 105 | "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", 106 | "dev": true, 107 | "dependencies": { 108 | "@babel/compat-data": "^7.23.5", 109 | "@babel/helper-validator-option": "^7.23.5", 110 | "browserslist": "^4.22.2", 111 | "lru-cache": "^5.1.1", 112 | "semver": "^6.3.1" 113 | }, 114 | "engines": { 115 | "node": ">=6.9.0" 116 | } 117 | }, 118 | "node_modules/@babel/helper-environment-visitor": { 119 | "version": "7.22.20", 120 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", 121 | "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", 122 | "dev": true, 123 | "engines": { 124 | "node": ">=6.9.0" 125 | } 126 | }, 127 | "node_modules/@babel/helper-function-name": { 128 | "version": "7.23.0", 129 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", 130 | "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", 131 | "dev": true, 132 | "dependencies": { 133 | "@babel/template": "^7.22.15", 134 | "@babel/types": "^7.23.0" 135 | }, 136 | "engines": { 137 | "node": ">=6.9.0" 138 | } 139 | }, 140 | "node_modules/@babel/helper-hoist-variables": { 141 | "version": "7.22.5", 142 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", 143 | "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", 144 | "dev": true, 145 | "dependencies": { 146 | "@babel/types": "^7.22.5" 147 | }, 148 | "engines": { 149 | "node": ">=6.9.0" 150 | } 151 | }, 152 | "node_modules/@babel/helper-module-imports": { 153 | "version": "7.22.15", 154 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", 155 | "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", 156 | "dev": true, 157 | "dependencies": { 158 | "@babel/types": "^7.22.15" 159 | }, 160 | "engines": { 161 | "node": ">=6.9.0" 162 | } 163 | }, 164 | "node_modules/@babel/helper-module-transforms": { 165 | "version": "7.23.3", 166 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", 167 | "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", 168 | "dev": true, 169 | "dependencies": { 170 | "@babel/helper-environment-visitor": "^7.22.20", 171 | "@babel/helper-module-imports": "^7.22.15", 172 | "@babel/helper-simple-access": "^7.22.5", 173 | "@babel/helper-split-export-declaration": "^7.22.6", 174 | "@babel/helper-validator-identifier": "^7.22.20" 175 | }, 176 | "engines": { 177 | "node": ">=6.9.0" 178 | }, 179 | "peerDependencies": { 180 | "@babel/core": "^7.0.0" 181 | } 182 | }, 183 | "node_modules/@babel/helper-plugin-utils": { 184 | "version": "7.22.5", 185 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", 186 | "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", 187 | "dev": true, 188 | "engines": { 189 | "node": ">=6.9.0" 190 | } 191 | }, 192 | "node_modules/@babel/helper-simple-access": { 193 | "version": "7.22.5", 194 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", 195 | "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", 196 | "dev": true, 197 | "dependencies": { 198 | "@babel/types": "^7.22.5" 199 | }, 200 | "engines": { 201 | "node": ">=6.9.0" 202 | } 203 | }, 204 | "node_modules/@babel/helper-split-export-declaration": { 205 | "version": "7.22.6", 206 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", 207 | "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", 208 | "dev": true, 209 | "dependencies": { 210 | "@babel/types": "^7.22.5" 211 | }, 212 | "engines": { 213 | "node": ">=6.9.0" 214 | } 215 | }, 216 | "node_modules/@babel/helper-string-parser": { 217 | "version": "7.23.4", 218 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", 219 | "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", 220 | "dev": true, 221 | "engines": { 222 | "node": ">=6.9.0" 223 | } 224 | }, 225 | "node_modules/@babel/helper-validator-identifier": { 226 | "version": "7.22.20", 227 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", 228 | "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", 229 | "dev": true, 230 | "engines": { 231 | "node": ">=6.9.0" 232 | } 233 | }, 234 | "node_modules/@babel/helper-validator-option": { 235 | "version": "7.23.5", 236 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", 237 | "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", 238 | "dev": true, 239 | "engines": { 240 | "node": ">=6.9.0" 241 | } 242 | }, 243 | "node_modules/@babel/helpers": { 244 | "version": "7.23.9", 245 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", 246 | "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", 247 | "dev": true, 248 | "dependencies": { 249 | "@babel/template": "^7.23.9", 250 | "@babel/traverse": "^7.23.9", 251 | "@babel/types": "^7.23.9" 252 | }, 253 | "engines": { 254 | "node": ">=6.9.0" 255 | } 256 | }, 257 | "node_modules/@babel/highlight": { 258 | "version": "7.23.4", 259 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", 260 | "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", 261 | "dev": true, 262 | "dependencies": { 263 | "@babel/helper-validator-identifier": "^7.22.20", 264 | "chalk": "^2.4.2", 265 | "js-tokens": "^4.0.0" 266 | }, 267 | "engines": { 268 | "node": ">=6.9.0" 269 | } 270 | }, 271 | "node_modules/@babel/parser": { 272 | "version": "7.23.9", 273 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", 274 | "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", 275 | "dev": true, 276 | "bin": { 277 | "parser": "bin/babel-parser.js" 278 | }, 279 | "engines": { 280 | "node": ">=6.0.0" 281 | } 282 | }, 283 | "node_modules/@babel/plugin-syntax-jsx": { 284 | "version": "7.23.3", 285 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", 286 | "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", 287 | "dev": true, 288 | "dependencies": { 289 | "@babel/helper-plugin-utils": "^7.22.5" 290 | }, 291 | "engines": { 292 | "node": ">=6.9.0" 293 | }, 294 | "peerDependencies": { 295 | "@babel/core": "^7.0.0-0" 296 | } 297 | }, 298 | "node_modules/@babel/template": { 299 | "version": "7.23.9", 300 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", 301 | "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", 302 | "dev": true, 303 | "dependencies": { 304 | "@babel/code-frame": "^7.23.5", 305 | "@babel/parser": "^7.23.9", 306 | "@babel/types": "^7.23.9" 307 | }, 308 | "engines": { 309 | "node": ">=6.9.0" 310 | } 311 | }, 312 | "node_modules/@babel/traverse": { 313 | "version": "7.23.9", 314 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", 315 | "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", 316 | "dev": true, 317 | "dependencies": { 318 | "@babel/code-frame": "^7.23.5", 319 | "@babel/generator": "^7.23.6", 320 | "@babel/helper-environment-visitor": "^7.22.20", 321 | "@babel/helper-function-name": "^7.23.0", 322 | "@babel/helper-hoist-variables": "^7.22.5", 323 | "@babel/helper-split-export-declaration": "^7.22.6", 324 | "@babel/parser": "^7.23.9", 325 | "@babel/types": "^7.23.9", 326 | "debug": "^4.3.1", 327 | "globals": "^11.1.0" 328 | }, 329 | "engines": { 330 | "node": ">=6.9.0" 331 | } 332 | }, 333 | "node_modules/@babel/types": { 334 | "version": "7.23.9", 335 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", 336 | "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", 337 | "dev": true, 338 | "dependencies": { 339 | "@babel/helper-string-parser": "^7.23.4", 340 | "@babel/helper-validator-identifier": "^7.22.20", 341 | "to-fast-properties": "^2.0.0" 342 | }, 343 | "engines": { 344 | "node": ">=6.9.0" 345 | } 346 | }, 347 | "node_modules/@esbuild/aix-ppc64": { 348 | "version": "0.19.12", 349 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", 350 | "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", 351 | "cpu": [ 352 | "ppc64" 353 | ], 354 | "dev": true, 355 | "optional": true, 356 | "os": [ 357 | "aix" 358 | ], 359 | "engines": { 360 | "node": ">=12" 361 | } 362 | }, 363 | "node_modules/@esbuild/android-arm": { 364 | "version": "0.19.12", 365 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", 366 | "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", 367 | "cpu": [ 368 | "arm" 369 | ], 370 | "dev": true, 371 | "optional": true, 372 | "os": [ 373 | "android" 374 | ], 375 | "engines": { 376 | "node": ">=12" 377 | } 378 | }, 379 | "node_modules/@esbuild/android-arm64": { 380 | "version": "0.19.12", 381 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", 382 | "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", 383 | "cpu": [ 384 | "arm64" 385 | ], 386 | "dev": true, 387 | "optional": true, 388 | "os": [ 389 | "android" 390 | ], 391 | "engines": { 392 | "node": ">=12" 393 | } 394 | }, 395 | "node_modules/@esbuild/android-x64": { 396 | "version": "0.19.12", 397 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", 398 | "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", 399 | "cpu": [ 400 | "x64" 401 | ], 402 | "dev": true, 403 | "optional": true, 404 | "os": [ 405 | "android" 406 | ], 407 | "engines": { 408 | "node": ">=12" 409 | } 410 | }, 411 | "node_modules/@esbuild/darwin-arm64": { 412 | "version": "0.19.12", 413 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", 414 | "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", 415 | "cpu": [ 416 | "arm64" 417 | ], 418 | "dev": true, 419 | "optional": true, 420 | "os": [ 421 | "darwin" 422 | ], 423 | "engines": { 424 | "node": ">=12" 425 | } 426 | }, 427 | "node_modules/@esbuild/darwin-x64": { 428 | "version": "0.19.12", 429 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", 430 | "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", 431 | "cpu": [ 432 | "x64" 433 | ], 434 | "dev": true, 435 | "optional": true, 436 | "os": [ 437 | "darwin" 438 | ], 439 | "engines": { 440 | "node": ">=12" 441 | } 442 | }, 443 | "node_modules/@esbuild/freebsd-arm64": { 444 | "version": "0.19.12", 445 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", 446 | "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", 447 | "cpu": [ 448 | "arm64" 449 | ], 450 | "dev": true, 451 | "optional": true, 452 | "os": [ 453 | "freebsd" 454 | ], 455 | "engines": { 456 | "node": ">=12" 457 | } 458 | }, 459 | "node_modules/@esbuild/freebsd-x64": { 460 | "version": "0.19.12", 461 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", 462 | "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", 463 | "cpu": [ 464 | "x64" 465 | ], 466 | "dev": true, 467 | "optional": true, 468 | "os": [ 469 | "freebsd" 470 | ], 471 | "engines": { 472 | "node": ">=12" 473 | } 474 | }, 475 | "node_modules/@esbuild/linux-arm": { 476 | "version": "0.19.12", 477 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", 478 | "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", 479 | "cpu": [ 480 | "arm" 481 | ], 482 | "dev": true, 483 | "optional": true, 484 | "os": [ 485 | "linux" 486 | ], 487 | "engines": { 488 | "node": ">=12" 489 | } 490 | }, 491 | "node_modules/@esbuild/linux-arm64": { 492 | "version": "0.19.12", 493 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", 494 | "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", 495 | "cpu": [ 496 | "arm64" 497 | ], 498 | "dev": true, 499 | "optional": true, 500 | "os": [ 501 | "linux" 502 | ], 503 | "engines": { 504 | "node": ">=12" 505 | } 506 | }, 507 | "node_modules/@esbuild/linux-ia32": { 508 | "version": "0.19.12", 509 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", 510 | "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", 511 | "cpu": [ 512 | "ia32" 513 | ], 514 | "dev": true, 515 | "optional": true, 516 | "os": [ 517 | "linux" 518 | ], 519 | "engines": { 520 | "node": ">=12" 521 | } 522 | }, 523 | "node_modules/@esbuild/linux-loong64": { 524 | "version": "0.19.12", 525 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", 526 | "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", 527 | "cpu": [ 528 | "loong64" 529 | ], 530 | "dev": true, 531 | "optional": true, 532 | "os": [ 533 | "linux" 534 | ], 535 | "engines": { 536 | "node": ">=12" 537 | } 538 | }, 539 | "node_modules/@esbuild/linux-mips64el": { 540 | "version": "0.19.12", 541 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", 542 | "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", 543 | "cpu": [ 544 | "mips64el" 545 | ], 546 | "dev": true, 547 | "optional": true, 548 | "os": [ 549 | "linux" 550 | ], 551 | "engines": { 552 | "node": ">=12" 553 | } 554 | }, 555 | "node_modules/@esbuild/linux-ppc64": { 556 | "version": "0.19.12", 557 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", 558 | "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", 559 | "cpu": [ 560 | "ppc64" 561 | ], 562 | "dev": true, 563 | "optional": true, 564 | "os": [ 565 | "linux" 566 | ], 567 | "engines": { 568 | "node": ">=12" 569 | } 570 | }, 571 | "node_modules/@esbuild/linux-riscv64": { 572 | "version": "0.19.12", 573 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", 574 | "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", 575 | "cpu": [ 576 | "riscv64" 577 | ], 578 | "dev": true, 579 | "optional": true, 580 | "os": [ 581 | "linux" 582 | ], 583 | "engines": { 584 | "node": ">=12" 585 | } 586 | }, 587 | "node_modules/@esbuild/linux-s390x": { 588 | "version": "0.19.12", 589 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", 590 | "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", 591 | "cpu": [ 592 | "s390x" 593 | ], 594 | "dev": true, 595 | "optional": true, 596 | "os": [ 597 | "linux" 598 | ], 599 | "engines": { 600 | "node": ">=12" 601 | } 602 | }, 603 | "node_modules/@esbuild/linux-x64": { 604 | "version": "0.19.12", 605 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", 606 | "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", 607 | "cpu": [ 608 | "x64" 609 | ], 610 | "dev": true, 611 | "optional": true, 612 | "os": [ 613 | "linux" 614 | ], 615 | "engines": { 616 | "node": ">=12" 617 | } 618 | }, 619 | "node_modules/@esbuild/netbsd-x64": { 620 | "version": "0.19.12", 621 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", 622 | "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", 623 | "cpu": [ 624 | "x64" 625 | ], 626 | "dev": true, 627 | "optional": true, 628 | "os": [ 629 | "netbsd" 630 | ], 631 | "engines": { 632 | "node": ">=12" 633 | } 634 | }, 635 | "node_modules/@esbuild/openbsd-x64": { 636 | "version": "0.19.12", 637 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", 638 | "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", 639 | "cpu": [ 640 | "x64" 641 | ], 642 | "dev": true, 643 | "optional": true, 644 | "os": [ 645 | "openbsd" 646 | ], 647 | "engines": { 648 | "node": ">=12" 649 | } 650 | }, 651 | "node_modules/@esbuild/sunos-x64": { 652 | "version": "0.19.12", 653 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", 654 | "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", 655 | "cpu": [ 656 | "x64" 657 | ], 658 | "dev": true, 659 | "optional": true, 660 | "os": [ 661 | "sunos" 662 | ], 663 | "engines": { 664 | "node": ">=12" 665 | } 666 | }, 667 | "node_modules/@esbuild/win32-arm64": { 668 | "version": "0.19.12", 669 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", 670 | "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", 671 | "cpu": [ 672 | "arm64" 673 | ], 674 | "dev": true, 675 | "optional": true, 676 | "os": [ 677 | "win32" 678 | ], 679 | "engines": { 680 | "node": ">=12" 681 | } 682 | }, 683 | "node_modules/@esbuild/win32-ia32": { 684 | "version": "0.19.12", 685 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", 686 | "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", 687 | "cpu": [ 688 | "ia32" 689 | ], 690 | "dev": true, 691 | "optional": true, 692 | "os": [ 693 | "win32" 694 | ], 695 | "engines": { 696 | "node": ">=12" 697 | } 698 | }, 699 | "node_modules/@esbuild/win32-x64": { 700 | "version": "0.19.12", 701 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", 702 | "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", 703 | "cpu": [ 704 | "x64" 705 | ], 706 | "dev": true, 707 | "optional": true, 708 | "os": [ 709 | "win32" 710 | ], 711 | "engines": { 712 | "node": ">=12" 713 | } 714 | }, 715 | "node_modules/@jridgewell/gen-mapping": { 716 | "version": "0.3.3", 717 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", 718 | "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", 719 | "dev": true, 720 | "dependencies": { 721 | "@jridgewell/set-array": "^1.0.1", 722 | "@jridgewell/sourcemap-codec": "^1.4.10", 723 | "@jridgewell/trace-mapping": "^0.3.9" 724 | }, 725 | "engines": { 726 | "node": ">=6.0.0" 727 | } 728 | }, 729 | "node_modules/@jridgewell/resolve-uri": { 730 | "version": "3.1.1", 731 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", 732 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", 733 | "dev": true, 734 | "engines": { 735 | "node": ">=6.0.0" 736 | } 737 | }, 738 | "node_modules/@jridgewell/set-array": { 739 | "version": "1.1.2", 740 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 741 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 742 | "dev": true, 743 | "engines": { 744 | "node": ">=6.0.0" 745 | } 746 | }, 747 | "node_modules/@jridgewell/sourcemap-codec": { 748 | "version": "1.4.15", 749 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 750 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 751 | "dev": true 752 | }, 753 | "node_modules/@jridgewell/trace-mapping": { 754 | "version": "0.3.22", 755 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", 756 | "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", 757 | "dev": true, 758 | "dependencies": { 759 | "@jridgewell/resolve-uri": "^3.1.0", 760 | "@jridgewell/sourcemap-codec": "^1.4.14" 761 | } 762 | }, 763 | "node_modules/@popperjs/core": { 764 | "version": "2.11.8", 765 | "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", 766 | "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", 767 | "peer": true, 768 | "funding": { 769 | "type": "opencollective", 770 | "url": "https://opencollective.com/popperjs" 771 | } 772 | }, 773 | "node_modules/@rollup/rollup-android-arm-eabi": { 774 | "version": "4.9.6", 775 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", 776 | "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", 777 | "cpu": [ 778 | "arm" 779 | ], 780 | "dev": true, 781 | "optional": true, 782 | "os": [ 783 | "android" 784 | ] 785 | }, 786 | "node_modules/@rollup/rollup-android-arm64": { 787 | "version": "4.9.6", 788 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", 789 | "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", 790 | "cpu": [ 791 | "arm64" 792 | ], 793 | "dev": true, 794 | "optional": true, 795 | "os": [ 796 | "android" 797 | ] 798 | }, 799 | "node_modules/@rollup/rollup-darwin-arm64": { 800 | "version": "4.9.6", 801 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", 802 | "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", 803 | "cpu": [ 804 | "arm64" 805 | ], 806 | "dev": true, 807 | "optional": true, 808 | "os": [ 809 | "darwin" 810 | ] 811 | }, 812 | "node_modules/@rollup/rollup-darwin-x64": { 813 | "version": "4.9.6", 814 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", 815 | "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", 816 | "cpu": [ 817 | "x64" 818 | ], 819 | "dev": true, 820 | "optional": true, 821 | "os": [ 822 | "darwin" 823 | ] 824 | }, 825 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 826 | "version": "4.9.6", 827 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", 828 | "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", 829 | "cpu": [ 830 | "arm" 831 | ], 832 | "dev": true, 833 | "optional": true, 834 | "os": [ 835 | "linux" 836 | ] 837 | }, 838 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 839 | "version": "4.9.6", 840 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", 841 | "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", 842 | "cpu": [ 843 | "arm64" 844 | ], 845 | "dev": true, 846 | "optional": true, 847 | "os": [ 848 | "linux" 849 | ] 850 | }, 851 | "node_modules/@rollup/rollup-linux-arm64-musl": { 852 | "version": "4.9.6", 853 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", 854 | "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", 855 | "cpu": [ 856 | "arm64" 857 | ], 858 | "dev": true, 859 | "optional": true, 860 | "os": [ 861 | "linux" 862 | ] 863 | }, 864 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 865 | "version": "4.9.6", 866 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", 867 | "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", 868 | "cpu": [ 869 | "riscv64" 870 | ], 871 | "dev": true, 872 | "optional": true, 873 | "os": [ 874 | "linux" 875 | ] 876 | }, 877 | "node_modules/@rollup/rollup-linux-x64-gnu": { 878 | "version": "4.9.6", 879 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", 880 | "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", 881 | "cpu": [ 882 | "x64" 883 | ], 884 | "dev": true, 885 | "optional": true, 886 | "os": [ 887 | "linux" 888 | ] 889 | }, 890 | "node_modules/@rollup/rollup-linux-x64-musl": { 891 | "version": "4.9.6", 892 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", 893 | "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", 894 | "cpu": [ 895 | "x64" 896 | ], 897 | "dev": true, 898 | "optional": true, 899 | "os": [ 900 | "linux" 901 | ] 902 | }, 903 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 904 | "version": "4.9.6", 905 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", 906 | "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", 907 | "cpu": [ 908 | "arm64" 909 | ], 910 | "dev": true, 911 | "optional": true, 912 | "os": [ 913 | "win32" 914 | ] 915 | }, 916 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 917 | "version": "4.9.6", 918 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", 919 | "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", 920 | "cpu": [ 921 | "ia32" 922 | ], 923 | "dev": true, 924 | "optional": true, 925 | "os": [ 926 | "win32" 927 | ] 928 | }, 929 | "node_modules/@rollup/rollup-win32-x64-msvc": { 930 | "version": "4.9.6", 931 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", 932 | "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", 933 | "cpu": [ 934 | "x64" 935 | ], 936 | "dev": true, 937 | "optional": true, 938 | "os": [ 939 | "win32" 940 | ] 941 | }, 942 | "node_modules/@solidjs/router": { 943 | "version": "0.11.5", 944 | "resolved": "https://registry.npmjs.org/@solidjs/router/-/router-0.11.5.tgz", 945 | "integrity": "sha512-nclebUUufZT37rB5l0LbJn92vZwJOhYVltfjfLFI3yAcMlwiil5JOy6X2FEgekWsoX29No/GCBTkYfrSZCRfaw==", 946 | "peerDependencies": { 947 | "solid-js": "^1.8.6" 948 | } 949 | }, 950 | "node_modules/@types/babel__core": { 951 | "version": "7.20.5", 952 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", 953 | "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", 954 | "dev": true, 955 | "dependencies": { 956 | "@babel/parser": "^7.20.7", 957 | "@babel/types": "^7.20.7", 958 | "@types/babel__generator": "*", 959 | "@types/babel__template": "*", 960 | "@types/babel__traverse": "*" 961 | } 962 | }, 963 | "node_modules/@types/babel__generator": { 964 | "version": "7.6.8", 965 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", 966 | "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", 967 | "dev": true, 968 | "dependencies": { 969 | "@babel/types": "^7.0.0" 970 | } 971 | }, 972 | "node_modules/@types/babel__template": { 973 | "version": "7.4.4", 974 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", 975 | "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", 976 | "dev": true, 977 | "dependencies": { 978 | "@babel/parser": "^7.1.0", 979 | "@babel/types": "^7.0.0" 980 | } 981 | }, 982 | "node_modules/@types/babel__traverse": { 983 | "version": "7.20.5", 984 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", 985 | "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", 986 | "dev": true, 987 | "dependencies": { 988 | "@babel/types": "^7.20.7" 989 | } 990 | }, 991 | "node_modules/@types/estree": { 992 | "version": "1.0.5", 993 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", 994 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", 995 | "dev": true 996 | }, 997 | "node_modules/ansi-styles": { 998 | "version": "3.2.1", 999 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1000 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1001 | "dev": true, 1002 | "dependencies": { 1003 | "color-convert": "^1.9.0" 1004 | }, 1005 | "engines": { 1006 | "node": ">=4" 1007 | } 1008 | }, 1009 | "node_modules/babel-plugin-jsx-dom-expressions": { 1010 | "version": "0.37.16", 1011 | "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.37.16.tgz", 1012 | "integrity": "sha512-ItMD16axbk+FqVb9vIbc7AOpNowy46VaSUHaMYPn+erPGpMCxsahQ1Iv+qhPMthjxtn5ROVMZ5AJtQvzjxjiNA==", 1013 | "dev": true, 1014 | "dependencies": { 1015 | "@babel/helper-module-imports": "7.18.6", 1016 | "@babel/plugin-syntax-jsx": "^7.18.6", 1017 | "@babel/types": "^7.20.7", 1018 | "html-entities": "2.3.3", 1019 | "validate-html-nesting": "^1.2.1" 1020 | }, 1021 | "peerDependencies": { 1022 | "@babel/core": "^7.20.12" 1023 | } 1024 | }, 1025 | "node_modules/babel-plugin-jsx-dom-expressions/node_modules/@babel/helper-module-imports": { 1026 | "version": "7.18.6", 1027 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 1028 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 1029 | "dev": true, 1030 | "dependencies": { 1031 | "@babel/types": "^7.18.6" 1032 | }, 1033 | "engines": { 1034 | "node": ">=6.9.0" 1035 | } 1036 | }, 1037 | "node_modules/babel-preset-solid": { 1038 | "version": "1.8.12", 1039 | "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.8.12.tgz", 1040 | "integrity": "sha512-Fx1dYokeRwouWqjLkdobA6qvTAPxFSEU2c5PlkfJjlNyONlSMJQPaX0Bae5pc+5/LNteb9BseOp4UHwQu6VC9Q==", 1041 | "dev": true, 1042 | "dependencies": { 1043 | "babel-plugin-jsx-dom-expressions": "^0.37.16" 1044 | }, 1045 | "peerDependencies": { 1046 | "@babel/core": "^7.0.0" 1047 | } 1048 | }, 1049 | "node_modules/bootstrap": { 1050 | "version": "5.3.2", 1051 | "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", 1052 | "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", 1053 | "funding": [ 1054 | { 1055 | "type": "github", 1056 | "url": "https://github.com/sponsors/twbs" 1057 | }, 1058 | { 1059 | "type": "opencollective", 1060 | "url": "https://opencollective.com/bootstrap" 1061 | } 1062 | ], 1063 | "peerDependencies": { 1064 | "@popperjs/core": "^2.11.8" 1065 | } 1066 | }, 1067 | "node_modules/browserslist": { 1068 | "version": "4.22.3", 1069 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", 1070 | "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", 1071 | "dev": true, 1072 | "funding": [ 1073 | { 1074 | "type": "opencollective", 1075 | "url": "https://opencollective.com/browserslist" 1076 | }, 1077 | { 1078 | "type": "tidelift", 1079 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1080 | }, 1081 | { 1082 | "type": "github", 1083 | "url": "https://github.com/sponsors/ai" 1084 | } 1085 | ], 1086 | "dependencies": { 1087 | "caniuse-lite": "^1.0.30001580", 1088 | "electron-to-chromium": "^1.4.648", 1089 | "node-releases": "^2.0.14", 1090 | "update-browserslist-db": "^1.0.13" 1091 | }, 1092 | "bin": { 1093 | "browserslist": "cli.js" 1094 | }, 1095 | "engines": { 1096 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 1097 | } 1098 | }, 1099 | "node_modules/caniuse-lite": { 1100 | "version": "1.0.30001585", 1101 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz", 1102 | "integrity": "sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==", 1103 | "dev": true, 1104 | "funding": [ 1105 | { 1106 | "type": "opencollective", 1107 | "url": "https://opencollective.com/browserslist" 1108 | }, 1109 | { 1110 | "type": "tidelift", 1111 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 1112 | }, 1113 | { 1114 | "type": "github", 1115 | "url": "https://github.com/sponsors/ai" 1116 | } 1117 | ] 1118 | }, 1119 | "node_modules/chalk": { 1120 | "version": "2.4.2", 1121 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1122 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1123 | "dev": true, 1124 | "dependencies": { 1125 | "ansi-styles": "^3.2.1", 1126 | "escape-string-regexp": "^1.0.5", 1127 | "supports-color": "^5.3.0" 1128 | }, 1129 | "engines": { 1130 | "node": ">=4" 1131 | } 1132 | }, 1133 | "node_modules/color-convert": { 1134 | "version": "1.9.3", 1135 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1136 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1137 | "dev": true, 1138 | "dependencies": { 1139 | "color-name": "1.1.3" 1140 | } 1141 | }, 1142 | "node_modules/color-name": { 1143 | "version": "1.1.3", 1144 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1145 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 1146 | "dev": true 1147 | }, 1148 | "node_modules/convert-source-map": { 1149 | "version": "2.0.0", 1150 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 1151 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 1152 | "dev": true 1153 | }, 1154 | "node_modules/csstype": { 1155 | "version": "3.1.3", 1156 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 1157 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" 1158 | }, 1159 | "node_modules/debug": { 1160 | "version": "4.3.4", 1161 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1162 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1163 | "dev": true, 1164 | "dependencies": { 1165 | "ms": "2.1.2" 1166 | }, 1167 | "engines": { 1168 | "node": ">=6.0" 1169 | }, 1170 | "peerDependenciesMeta": { 1171 | "supports-color": { 1172 | "optional": true 1173 | } 1174 | } 1175 | }, 1176 | "node_modules/electron-to-chromium": { 1177 | "version": "1.4.664", 1178 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.664.tgz", 1179 | "integrity": "sha512-k9VKKSkOSNPvSckZgDDl/IQx45E1quMjX8QfLzUsAs/zve8AyFDK+ByRynSP/OfEfryiKHpQeMf00z0leLCc3A==", 1180 | "dev": true 1181 | }, 1182 | "node_modules/esbuild": { 1183 | "version": "0.19.12", 1184 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", 1185 | "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", 1186 | "dev": true, 1187 | "hasInstallScript": true, 1188 | "bin": { 1189 | "esbuild": "bin/esbuild" 1190 | }, 1191 | "engines": { 1192 | "node": ">=12" 1193 | }, 1194 | "optionalDependencies": { 1195 | "@esbuild/aix-ppc64": "0.19.12", 1196 | "@esbuild/android-arm": "0.19.12", 1197 | "@esbuild/android-arm64": "0.19.12", 1198 | "@esbuild/android-x64": "0.19.12", 1199 | "@esbuild/darwin-arm64": "0.19.12", 1200 | "@esbuild/darwin-x64": "0.19.12", 1201 | "@esbuild/freebsd-arm64": "0.19.12", 1202 | "@esbuild/freebsd-x64": "0.19.12", 1203 | "@esbuild/linux-arm": "0.19.12", 1204 | "@esbuild/linux-arm64": "0.19.12", 1205 | "@esbuild/linux-ia32": "0.19.12", 1206 | "@esbuild/linux-loong64": "0.19.12", 1207 | "@esbuild/linux-mips64el": "0.19.12", 1208 | "@esbuild/linux-ppc64": "0.19.12", 1209 | "@esbuild/linux-riscv64": "0.19.12", 1210 | "@esbuild/linux-s390x": "0.19.12", 1211 | "@esbuild/linux-x64": "0.19.12", 1212 | "@esbuild/netbsd-x64": "0.19.12", 1213 | "@esbuild/openbsd-x64": "0.19.12", 1214 | "@esbuild/sunos-x64": "0.19.12", 1215 | "@esbuild/win32-arm64": "0.19.12", 1216 | "@esbuild/win32-ia32": "0.19.12", 1217 | "@esbuild/win32-x64": "0.19.12" 1218 | } 1219 | }, 1220 | "node_modules/escalade": { 1221 | "version": "3.1.2", 1222 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", 1223 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 1224 | "dev": true, 1225 | "engines": { 1226 | "node": ">=6" 1227 | } 1228 | }, 1229 | "node_modules/escape-string-regexp": { 1230 | "version": "1.0.5", 1231 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1232 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1233 | "dev": true, 1234 | "engines": { 1235 | "node": ">=0.8.0" 1236 | } 1237 | }, 1238 | "node_modules/fsevents": { 1239 | "version": "2.3.3", 1240 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1241 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1242 | "dev": true, 1243 | "hasInstallScript": true, 1244 | "optional": true, 1245 | "os": [ 1246 | "darwin" 1247 | ], 1248 | "engines": { 1249 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1250 | } 1251 | }, 1252 | "node_modules/gensync": { 1253 | "version": "1.0.0-beta.2", 1254 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1255 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1256 | "dev": true, 1257 | "engines": { 1258 | "node": ">=6.9.0" 1259 | } 1260 | }, 1261 | "node_modules/globals": { 1262 | "version": "11.12.0", 1263 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1264 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1265 | "dev": true, 1266 | "engines": { 1267 | "node": ">=4" 1268 | } 1269 | }, 1270 | "node_modules/has-flag": { 1271 | "version": "3.0.0", 1272 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1273 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1274 | "dev": true, 1275 | "engines": { 1276 | "node": ">=4" 1277 | } 1278 | }, 1279 | "node_modules/html-entities": { 1280 | "version": "2.3.3", 1281 | "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", 1282 | "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", 1283 | "dev": true 1284 | }, 1285 | "node_modules/is-what": { 1286 | "version": "4.1.16", 1287 | "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", 1288 | "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", 1289 | "dev": true, 1290 | "engines": { 1291 | "node": ">=12.13" 1292 | }, 1293 | "funding": { 1294 | "url": "https://github.com/sponsors/mesqueeb" 1295 | } 1296 | }, 1297 | "node_modules/js-tokens": { 1298 | "version": "4.0.0", 1299 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1300 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1301 | "dev": true 1302 | }, 1303 | "node_modules/jsesc": { 1304 | "version": "2.5.2", 1305 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1306 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1307 | "dev": true, 1308 | "bin": { 1309 | "jsesc": "bin/jsesc" 1310 | }, 1311 | "engines": { 1312 | "node": ">=4" 1313 | } 1314 | }, 1315 | "node_modules/json5": { 1316 | "version": "2.2.3", 1317 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 1318 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 1319 | "dev": true, 1320 | "bin": { 1321 | "json5": "lib/cli.js" 1322 | }, 1323 | "engines": { 1324 | "node": ">=6" 1325 | } 1326 | }, 1327 | "node_modules/lru-cache": { 1328 | "version": "5.1.1", 1329 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 1330 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 1331 | "dev": true, 1332 | "dependencies": { 1333 | "yallist": "^3.0.2" 1334 | } 1335 | }, 1336 | "node_modules/merge-anything": { 1337 | "version": "5.1.7", 1338 | "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-5.1.7.tgz", 1339 | "integrity": "sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==", 1340 | "dev": true, 1341 | "dependencies": { 1342 | "is-what": "^4.1.8" 1343 | }, 1344 | "engines": { 1345 | "node": ">=12.13" 1346 | }, 1347 | "funding": { 1348 | "url": "https://github.com/sponsors/mesqueeb" 1349 | } 1350 | }, 1351 | "node_modules/ms": { 1352 | "version": "2.1.2", 1353 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1354 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1355 | "dev": true 1356 | }, 1357 | "node_modules/nanoid": { 1358 | "version": "3.3.7", 1359 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 1360 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 1361 | "dev": true, 1362 | "funding": [ 1363 | { 1364 | "type": "github", 1365 | "url": "https://github.com/sponsors/ai" 1366 | } 1367 | ], 1368 | "bin": { 1369 | "nanoid": "bin/nanoid.cjs" 1370 | }, 1371 | "engines": { 1372 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1373 | } 1374 | }, 1375 | "node_modules/node-releases": { 1376 | "version": "2.0.14", 1377 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", 1378 | "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", 1379 | "dev": true 1380 | }, 1381 | "node_modules/picocolors": { 1382 | "version": "1.0.0", 1383 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1384 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1385 | "dev": true 1386 | }, 1387 | "node_modules/postcss": { 1388 | "version": "8.4.35", 1389 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", 1390 | "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", 1391 | "dev": true, 1392 | "funding": [ 1393 | { 1394 | "type": "opencollective", 1395 | "url": "https://opencollective.com/postcss/" 1396 | }, 1397 | { 1398 | "type": "tidelift", 1399 | "url": "https://tidelift.com/funding/github/npm/postcss" 1400 | }, 1401 | { 1402 | "type": "github", 1403 | "url": "https://github.com/sponsors/ai" 1404 | } 1405 | ], 1406 | "dependencies": { 1407 | "nanoid": "^3.3.7", 1408 | "picocolors": "^1.0.0", 1409 | "source-map-js": "^1.0.2" 1410 | }, 1411 | "engines": { 1412 | "node": "^10 || ^12 || >=14" 1413 | } 1414 | }, 1415 | "node_modules/rollup": { 1416 | "version": "4.9.6", 1417 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", 1418 | "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", 1419 | "dev": true, 1420 | "dependencies": { 1421 | "@types/estree": "1.0.5" 1422 | }, 1423 | "bin": { 1424 | "rollup": "dist/bin/rollup" 1425 | }, 1426 | "engines": { 1427 | "node": ">=18.0.0", 1428 | "npm": ">=8.0.0" 1429 | }, 1430 | "optionalDependencies": { 1431 | "@rollup/rollup-android-arm-eabi": "4.9.6", 1432 | "@rollup/rollup-android-arm64": "4.9.6", 1433 | "@rollup/rollup-darwin-arm64": "4.9.6", 1434 | "@rollup/rollup-darwin-x64": "4.9.6", 1435 | "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", 1436 | "@rollup/rollup-linux-arm64-gnu": "4.9.6", 1437 | "@rollup/rollup-linux-arm64-musl": "4.9.6", 1438 | "@rollup/rollup-linux-riscv64-gnu": "4.9.6", 1439 | "@rollup/rollup-linux-x64-gnu": "4.9.6", 1440 | "@rollup/rollup-linux-x64-musl": "4.9.6", 1441 | "@rollup/rollup-win32-arm64-msvc": "4.9.6", 1442 | "@rollup/rollup-win32-ia32-msvc": "4.9.6", 1443 | "@rollup/rollup-win32-x64-msvc": "4.9.6", 1444 | "fsevents": "~2.3.2" 1445 | } 1446 | }, 1447 | "node_modules/semver": { 1448 | "version": "6.3.1", 1449 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 1450 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 1451 | "dev": true, 1452 | "bin": { 1453 | "semver": "bin/semver.js" 1454 | } 1455 | }, 1456 | "node_modules/seroval": { 1457 | "version": "1.0.4", 1458 | "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.0.4.tgz", 1459 | "integrity": "sha512-qQs/N+KfJu83rmszFQaTxcoJoPn6KNUruX4KmnmyD0oZkUoiNvJ1rpdYKDf4YHM05k+HOgCxa3yvf15QbVijGg==", 1460 | "engines": { 1461 | "node": ">=10" 1462 | } 1463 | }, 1464 | "node_modules/seroval-plugins": { 1465 | "version": "1.0.4", 1466 | "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.0.4.tgz", 1467 | "integrity": "sha512-DQ2IK6oQVvy8k+c2V5x5YCtUa/GGGsUwUBNN9UqohrZ0rWdUapBFpNMYP1bCyRHoxOJjdKGl+dieacFIpU/i1A==", 1468 | "engines": { 1469 | "node": ">=10" 1470 | }, 1471 | "peerDependencies": { 1472 | "seroval": "^1.0" 1473 | } 1474 | }, 1475 | "node_modules/solid-js": { 1476 | "version": "1.8.14", 1477 | "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.14.tgz", 1478 | "integrity": "sha512-kDfgHBm+ROVLDVuqaXh/jYz0ZVJ29TYfVsKsgDPtNcjoyaPtOvDX2l0tVnthjLdEXr7vDTYeqEYFfMkZakDsOQ==", 1479 | "dependencies": { 1480 | "csstype": "^3.1.0", 1481 | "seroval": "^1.0.3", 1482 | "seroval-plugins": "^1.0.3" 1483 | } 1484 | }, 1485 | "node_modules/solid-refresh": { 1486 | "version": "0.6.3", 1487 | "resolved": "https://registry.npmjs.org/solid-refresh/-/solid-refresh-0.6.3.tgz", 1488 | "integrity": "sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==", 1489 | "dev": true, 1490 | "dependencies": { 1491 | "@babel/generator": "^7.23.6", 1492 | "@babel/helper-module-imports": "^7.22.15", 1493 | "@babel/types": "^7.23.6" 1494 | }, 1495 | "peerDependencies": { 1496 | "solid-js": "^1.3" 1497 | } 1498 | }, 1499 | "node_modules/source-map-js": { 1500 | "version": "1.0.2", 1501 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1502 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1503 | "dev": true, 1504 | "engines": { 1505 | "node": ">=0.10.0" 1506 | } 1507 | }, 1508 | "node_modules/supports-color": { 1509 | "version": "5.5.0", 1510 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1511 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1512 | "dev": true, 1513 | "dependencies": { 1514 | "has-flag": "^3.0.0" 1515 | }, 1516 | "engines": { 1517 | "node": ">=4" 1518 | } 1519 | }, 1520 | "node_modules/to-fast-properties": { 1521 | "version": "2.0.0", 1522 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1523 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 1524 | "dev": true, 1525 | "engines": { 1526 | "node": ">=4" 1527 | } 1528 | }, 1529 | "node_modules/typescript": { 1530 | "version": "4.9.5", 1531 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 1532 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 1533 | "dev": true, 1534 | "bin": { 1535 | "tsc": "bin/tsc", 1536 | "tsserver": "bin/tsserver" 1537 | }, 1538 | "engines": { 1539 | "node": ">=4.2.0" 1540 | } 1541 | }, 1542 | "node_modules/update-browserslist-db": { 1543 | "version": "1.0.13", 1544 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", 1545 | "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", 1546 | "dev": true, 1547 | "funding": [ 1548 | { 1549 | "type": "opencollective", 1550 | "url": "https://opencollective.com/browserslist" 1551 | }, 1552 | { 1553 | "type": "tidelift", 1554 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1555 | }, 1556 | { 1557 | "type": "github", 1558 | "url": "https://github.com/sponsors/ai" 1559 | } 1560 | ], 1561 | "dependencies": { 1562 | "escalade": "^3.1.1", 1563 | "picocolors": "^1.0.0" 1564 | }, 1565 | "bin": { 1566 | "update-browserslist-db": "cli.js" 1567 | }, 1568 | "peerDependencies": { 1569 | "browserslist": ">= 4.21.0" 1570 | } 1571 | }, 1572 | "node_modules/validate-html-nesting": { 1573 | "version": "1.2.2", 1574 | "resolved": "https://registry.npmjs.org/validate-html-nesting/-/validate-html-nesting-1.2.2.tgz", 1575 | "integrity": "sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==", 1576 | "dev": true 1577 | }, 1578 | "node_modules/vite": { 1579 | "version": "5.1.1", 1580 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.1.tgz", 1581 | "integrity": "sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==", 1582 | "dev": true, 1583 | "dependencies": { 1584 | "esbuild": "^0.19.3", 1585 | "postcss": "^8.4.35", 1586 | "rollup": "^4.2.0" 1587 | }, 1588 | "bin": { 1589 | "vite": "bin/vite.js" 1590 | }, 1591 | "engines": { 1592 | "node": "^18.0.0 || >=20.0.0" 1593 | }, 1594 | "funding": { 1595 | "url": "https://github.com/vitejs/vite?sponsor=1" 1596 | }, 1597 | "optionalDependencies": { 1598 | "fsevents": "~2.3.3" 1599 | }, 1600 | "peerDependencies": { 1601 | "@types/node": "^18.0.0 || >=20.0.0", 1602 | "less": "*", 1603 | "lightningcss": "^1.21.0", 1604 | "sass": "*", 1605 | "stylus": "*", 1606 | "sugarss": "*", 1607 | "terser": "^5.4.0" 1608 | }, 1609 | "peerDependenciesMeta": { 1610 | "@types/node": { 1611 | "optional": true 1612 | }, 1613 | "less": { 1614 | "optional": true 1615 | }, 1616 | "lightningcss": { 1617 | "optional": true 1618 | }, 1619 | "sass": { 1620 | "optional": true 1621 | }, 1622 | "stylus": { 1623 | "optional": true 1624 | }, 1625 | "sugarss": { 1626 | "optional": true 1627 | }, 1628 | "terser": { 1629 | "optional": true 1630 | } 1631 | } 1632 | }, 1633 | "node_modules/vite-plugin-solid": { 1634 | "version": "2.9.1", 1635 | "resolved": "https://registry.npmjs.org/vite-plugin-solid/-/vite-plugin-solid-2.9.1.tgz", 1636 | "integrity": "sha512-RC4hj+lbvljw57BbMGDApvEOPEh14lwrr/GeXRLNQLcR1qnOdzOwwTSFy13Gj/6FNIZpBEl0bWPU+VYFawrqUw==", 1637 | "dev": true, 1638 | "dependencies": { 1639 | "@babel/core": "^7.23.3", 1640 | "@types/babel__core": "^7.20.4", 1641 | "babel-preset-solid": "^1.8.4", 1642 | "merge-anything": "^5.1.7", 1643 | "solid-refresh": "^0.6.3", 1644 | "vitefu": "^0.2.5" 1645 | }, 1646 | "peerDependencies": { 1647 | "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", 1648 | "solid-js": "^1.7.2", 1649 | "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" 1650 | }, 1651 | "peerDependenciesMeta": { 1652 | "@testing-library/jest-dom": { 1653 | "optional": true 1654 | } 1655 | } 1656 | }, 1657 | "node_modules/vitefu": { 1658 | "version": "0.2.5", 1659 | "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", 1660 | "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", 1661 | "dev": true, 1662 | "peerDependencies": { 1663 | "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" 1664 | }, 1665 | "peerDependenciesMeta": { 1666 | "vite": { 1667 | "optional": true 1668 | } 1669 | } 1670 | }, 1671 | "node_modules/yallist": { 1672 | "version": "3.1.1", 1673 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 1674 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 1675 | "dev": true 1676 | } 1677 | } 1678 | } 1679 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vite-template-solid", 3 | "version": "0.0.0", 4 | "description": "", 5 | "scripts": { 6 | "start": "vite", 7 | "dev": "vite", 8 | "build": "vite build", 9 | "serve": "vite preview" 10 | }, 11 | "license": "MIT", 12 | "devDependencies": { 13 | "typescript": "^4.6.4", 14 | "vite": "^5.0.11", 15 | "vite-plugin-solid": "^2.8.2" 16 | }, 17 | "dependencies": { 18 | "@solidjs/router": "^0.11.5", 19 | "bootstrap": "^5.1.3", 20 | "solid-js": "^1.8.11" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { Component, ComponentProps } from 'solid-js' 2 | import Nav from './components/Nav' 3 | 4 | const App: Component = (props: ComponentProps<'div'>) => { 5 | return ( 6 |
7 |
10 | ) 11 | } 12 | 13 | export default App 14 | -------------------------------------------------------------------------------- /src/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ebenezerdon/solid-gh-repos/4474e4f8332f0df17eb857464849978cf2abce7c/src/assets/favicon.ico -------------------------------------------------------------------------------- /src/components/Nav.tsx: -------------------------------------------------------------------------------- 1 | import { A } from '@solidjs/router' 2 | import { Component } from 'solid-js' 3 | import { savedRepos } from '../pages/SavedRepos' 4 | 5 | const Nav: Component = () => { 6 | return ( 7 | 15 | ) 16 | } 17 | 18 | export default Nav 19 | -------------------------------------------------------------------------------- /src/components/RepoCard.tsx: -------------------------------------------------------------------------------- 1 | import { Component } from 'solid-js' 2 | import { savedRepos, setSavedRepos } from '../pages/SavedRepos' 3 | 4 | export type Repo = { 5 | id: string 6 | html_url: string 7 | name: string 8 | description: string 9 | stargazers_count: number 10 | owner: { 11 | login: string 12 | } 13 | } 14 | 15 | interface Props { 16 | repo: Repo 17 | } 18 | 19 | const saveRepo = (repo: Repo) => { 20 | setSavedRepos([repo, ...savedRepos()]) 21 | localStorage.setItem('savedRepos', JSON.stringify(savedRepos())) 22 | } 23 | 24 | const unsaveRepo = (repoId: string) => { 25 | setSavedRepos(savedRepos()?.filter((item) => item.id !== repoId)) 26 | localStorage.setItem('savedRepos', JSON.stringify(savedRepos())) 27 | } 28 | 29 | const repoIsSaved = (repoId: string) => { 30 | const repo = savedRepos()?.filter((item) => item.id === repoId) 31 | return repo?.length > 0 32 | } 33 | 34 | const RepoCard: Component = ({ repo }) => { 35 | return ( 36 |
37 |
⭐ stars: {repo.stargazers_count}
38 |
39 | 40 | {repo.owner?.login}/{repo.name} 41 | 42 |

{repo.description}

43 | 44 | {repoIsSaved(repo.id) ? ( 45 | 48 | ) : ( 49 | 52 | )} 53 |
54 |
55 | ) 56 | } 57 | 58 | export default RepoCard 59 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | /* @refresh reload */ 2 | import { render } from 'solid-js/web' 3 | import App from './App' 4 | import 'bootstrap/dist/css/bootstrap.min.css' 5 | import { Route, Router } from '@solidjs/router' 6 | import Home from './pages/Home' 7 | import SavedRepos from './pages/SavedRepos' 8 | 9 | const root = document.getElementById('root') as HTMLElement 10 | 11 | render( 12 | () => ( 13 | 14 | 15 | 16 | 17 | ), 18 | root, 19 | ) 20 | -------------------------------------------------------------------------------- /src/pages/Home.tsx: -------------------------------------------------------------------------------- 1 | import { Component, For, Show, createResource, createSignal } from 'solid-js' 2 | import RepoCard, { Repo } from '../components/RepoCard' 3 | 4 | const date = new Date() 5 | date.setDate(date.getDate() - 7) 6 | const formattedDate = date.toISOString().split('T')[0] 7 | 8 | const Home: Component = () => { 9 | const [username, setUserName] = createSignal('') 10 | const baseUrl = 'https://api.github.com' 11 | 12 | const fetchRepos = async (username: string) => { 13 | const trendingReposUrl = `${baseUrl}/search/repositories?q=created:>${formattedDate}&sort=stars&order=desc&per_page=30` 14 | const userReposUrl = `${baseUrl}/users/${username}/repos?sort=created` 15 | const url = username ? userReposUrl : trendingReposUrl 16 | 17 | const res = await fetch(url) 18 | 19 | if (!res.ok || res.status === 404) return [] 20 | else { 21 | const data = await res.json() 22 | return data.items || data 23 | } 24 | } 25 | 26 | const [repos] = createResource(username, fetchRepos) 27 | 28 | const handleSubmit = (event: Event) => { 29 | event.preventDefault() 30 | const form = event.currentTarget as HTMLFormElement 31 | const formData = new FormData(form) 32 | const usernameInput = formData.get('username') as string 33 | setUserName(usernameInput) 34 | } 35 | 36 | return ( 37 |
38 | 39 |

Loading...

40 |
41 |
42 | 43 | 44 | 47 |
48 | 49 | Most starred repos since {formattedDate}}> 50 |

GitHub repos for {username()}

51 |
52 | 53 |

No repos found. Try another username.

54 |
55 | {(repo: Repo) => } 56 |
57 | ) 58 | } 59 | 60 | export default Home 61 | -------------------------------------------------------------------------------- /src/pages/SavedRepos.tsx: -------------------------------------------------------------------------------- 1 | import { Component, createSignal, For } from 'solid-js' 2 | import RepoCard, { Repo } from '../components/RepoCard' 3 | 4 | const reposFromLocalStorage = JSON.parse(localStorage.getItem('savedRepos') || '[]') 5 | const [savedRepos, setSavedRepos] = createSignal(reposFromLocalStorage as Repo[]) 6 | 7 | const SavedRepos: Component = () => { 8 | return ( 9 |
10 |

Your saved repos

11 | {(repo: Repo) => } 12 |
13 | ) 14 | } 15 | 16 | export { savedRepos, setSavedRepos } 17 | export default SavedRepos 18 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "target": "ESNext", 5 | "module": "ESNext", 6 | "moduleResolution": "node", 7 | "allowSyntheticDefaultImports": true, 8 | "esModuleInterop": true, 9 | "jsx": "preserve", 10 | "jsxImportSource": "solid-js", 11 | "types": ["vite/client"], 12 | "noEmit": true, 13 | "isolatedModules": true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import solidPlugin from 'vite-plugin-solid'; 3 | 4 | export default defineConfig({ 5 | plugins: [solidPlugin()], 6 | build: { 7 | target: 'esnext', 8 | polyfillDynamicImport: false, 9 | }, 10 | }); 11 | --------------------------------------------------------------------------------