├── .gitignore ├── .vscode └── extensions.json ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── public ├── tauri.svg └── vite.svg ├── src-tauri ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── binaries │ └── aria2c-aarch64-apple-darwin ├── build.rs ├── icons │ ├── 128x128.png │ ├── 128x128@2x.png │ ├── 32x32.png │ ├── Square107x107Logo.png │ ├── Square142x142Logo.png │ ├── Square150x150Logo.png │ ├── Square284x284Logo.png │ ├── Square30x30Logo.png │ ├── Square310x310Logo.png │ ├── Square44x44Logo.png │ ├── Square71x71Logo.png │ ├── Square89x89Logo.png │ ├── StoreLogo.png │ ├── creativity.png │ ├── icon-origin.png │ ├── icon.icns │ ├── icon.ico │ └── icon.png ├── resources │ └── aria2.conf ├── src │ ├── main.rs │ └── setup.rs └── tauri.conf.json ├── src ├── App.jsx ├── app.jsx ├── assets │ ├── app-icon.png │ ├── icons │ │ ├── arrow-down.svg │ │ ├── arrow-up.svg │ │ ├── audio.svg │ │ ├── delete.svg │ │ ├── dice.svg │ │ ├── engine-mode-max.svg │ │ ├── folder.svg │ │ ├── image.svg │ │ ├── inbox.svg │ │ ├── info-circle.svg │ │ ├── info-square.svg │ │ ├── link.svg │ │ ├── magnet.svg │ │ ├── menu-about.svg │ │ ├── menu-add.svg │ │ ├── menu-preference.svg │ │ ├── menu-task.svg │ │ ├── more.svg │ │ ├── node.svg │ │ ├── preference-advanced.svg │ │ ├── preference-basic.svg │ │ ├── purge.svg │ │ ├── refresh.svg │ │ ├── speedometer.svg │ │ ├── sync.svg │ │ ├── task-done.svg │ │ ├── task-history.svg │ │ ├── task-pause-line.svg │ │ ├── task-pause.svg │ │ ├── task-restart.svg │ │ ├── task-start-line.svg │ │ ├── task-start.svg │ │ ├── task-stop-line.svg │ │ ├── task-stop.svg │ │ ├── trash.svg │ │ ├── video.svg │ │ ├── win-close.svg │ │ ├── win-maximize.svg │ │ └── win-minimize.svg │ ├── logo-mini.svg │ ├── logo.svg │ ├── no-task.svg │ ├── theme-auto@2x.png │ ├── theme-dark@2x.png │ └── theme-light@2x.png ├── components │ ├── layout │ │ ├── index.jsx │ │ └── index.module.less │ └── logo │ │ └── index.jsx ├── main.jsx ├── pages │ ├── settings │ │ └── index.jsx │ └── tasks │ │ └── index.jsx └── style.less └── vite.config.js /.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 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"] 3 | } 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tauri + React 2 | 3 | This template should help get you started developing with Tauri and React in Vite. 4 | 5 | ## Recommended IDE Setup 6 | 7 | - [VS Code](https://code.visualstudio.com/) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer) 8 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Tauri + React 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "motrix_rs", 3 | "version": "0.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "motrix_rs", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "@tauri-apps/api": "^1", 12 | "classnames": "^2.5.1", 13 | "normalize.css": "^8.0.1", 14 | "react": "^18.2.0", 15 | "react-dom": "^18.2.0", 16 | "react-router-dom": "^6.22.3", 17 | "vite-plugin-svgr": "^4.2.0" 18 | }, 19 | "devDependencies": { 20 | "@tauri-apps/cli": "^1", 21 | "@vitejs/plugin-react": "^4.2.1", 22 | "less": "^4.2.0", 23 | "vite": "^5.0.0" 24 | } 25 | }, 26 | "node_modules/@ampproject/remapping": { 27 | "version": "2.3.0", 28 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 29 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 30 | "dependencies": { 31 | "@jridgewell/gen-mapping": "^0.3.5", 32 | "@jridgewell/trace-mapping": "^0.3.24" 33 | }, 34 | "engines": { 35 | "node": ">=6.0.0" 36 | } 37 | }, 38 | "node_modules/@babel/code-frame": { 39 | "version": "7.23.5", 40 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", 41 | "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", 42 | "dependencies": { 43 | "@babel/highlight": "^7.23.4", 44 | "chalk": "^2.4.2" 45 | }, 46 | "engines": { 47 | "node": ">=6.9.0" 48 | } 49 | }, 50 | "node_modules/@babel/compat-data": { 51 | "version": "7.23.5", 52 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", 53 | "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", 54 | "engines": { 55 | "node": ">=6.9.0" 56 | } 57 | }, 58 | "node_modules/@babel/core": { 59 | "version": "7.24.0", 60 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", 61 | "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", 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.24.0", 69 | "@babel/parser": "^7.24.0", 70 | "@babel/template": "^7.24.0", 71 | "@babel/traverse": "^7.24.0", 72 | "@babel/types": "^7.24.0", 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 | "dependencies": { 92 | "@babel/types": "^7.23.6", 93 | "@jridgewell/gen-mapping": "^0.3.2", 94 | "@jridgewell/trace-mapping": "^0.3.17", 95 | "jsesc": "^2.5.1" 96 | }, 97 | "engines": { 98 | "node": ">=6.9.0" 99 | } 100 | }, 101 | "node_modules/@babel/helper-compilation-targets": { 102 | "version": "7.23.6", 103 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", 104 | "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", 105 | "dependencies": { 106 | "@babel/compat-data": "^7.23.5", 107 | "@babel/helper-validator-option": "^7.23.5", 108 | "browserslist": "^4.22.2", 109 | "lru-cache": "^5.1.1", 110 | "semver": "^6.3.1" 111 | }, 112 | "engines": { 113 | "node": ">=6.9.0" 114 | } 115 | }, 116 | "node_modules/@babel/helper-environment-visitor": { 117 | "version": "7.22.20", 118 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", 119 | "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", 120 | "engines": { 121 | "node": ">=6.9.0" 122 | } 123 | }, 124 | "node_modules/@babel/helper-function-name": { 125 | "version": "7.23.0", 126 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", 127 | "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", 128 | "dependencies": { 129 | "@babel/template": "^7.22.15", 130 | "@babel/types": "^7.23.0" 131 | }, 132 | "engines": { 133 | "node": ">=6.9.0" 134 | } 135 | }, 136 | "node_modules/@babel/helper-hoist-variables": { 137 | "version": "7.22.5", 138 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", 139 | "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", 140 | "dependencies": { 141 | "@babel/types": "^7.22.5" 142 | }, 143 | "engines": { 144 | "node": ">=6.9.0" 145 | } 146 | }, 147 | "node_modules/@babel/helper-module-imports": { 148 | "version": "7.22.15", 149 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", 150 | "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", 151 | "dependencies": { 152 | "@babel/types": "^7.22.15" 153 | }, 154 | "engines": { 155 | "node": ">=6.9.0" 156 | } 157 | }, 158 | "node_modules/@babel/helper-module-transforms": { 159 | "version": "7.23.3", 160 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", 161 | "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", 162 | "dependencies": { 163 | "@babel/helper-environment-visitor": "^7.22.20", 164 | "@babel/helper-module-imports": "^7.22.15", 165 | "@babel/helper-simple-access": "^7.22.5", 166 | "@babel/helper-split-export-declaration": "^7.22.6", 167 | "@babel/helper-validator-identifier": "^7.22.20" 168 | }, 169 | "engines": { 170 | "node": ">=6.9.0" 171 | }, 172 | "peerDependencies": { 173 | "@babel/core": "^7.0.0" 174 | } 175 | }, 176 | "node_modules/@babel/helper-plugin-utils": { 177 | "version": "7.24.0", 178 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", 179 | "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", 180 | "dev": true, 181 | "engines": { 182 | "node": ">=6.9.0" 183 | } 184 | }, 185 | "node_modules/@babel/helper-simple-access": { 186 | "version": "7.22.5", 187 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", 188 | "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", 189 | "dependencies": { 190 | "@babel/types": "^7.22.5" 191 | }, 192 | "engines": { 193 | "node": ">=6.9.0" 194 | } 195 | }, 196 | "node_modules/@babel/helper-split-export-declaration": { 197 | "version": "7.22.6", 198 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", 199 | "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", 200 | "dependencies": { 201 | "@babel/types": "^7.22.5" 202 | }, 203 | "engines": { 204 | "node": ">=6.9.0" 205 | } 206 | }, 207 | "node_modules/@babel/helper-string-parser": { 208 | "version": "7.23.4", 209 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", 210 | "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", 211 | "engines": { 212 | "node": ">=6.9.0" 213 | } 214 | }, 215 | "node_modules/@babel/helper-validator-identifier": { 216 | "version": "7.22.20", 217 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", 218 | "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", 219 | "engines": { 220 | "node": ">=6.9.0" 221 | } 222 | }, 223 | "node_modules/@babel/helper-validator-option": { 224 | "version": "7.23.5", 225 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", 226 | "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", 227 | "engines": { 228 | "node": ">=6.9.0" 229 | } 230 | }, 231 | "node_modules/@babel/helpers": { 232 | "version": "7.24.0", 233 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", 234 | "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", 235 | "dependencies": { 236 | "@babel/template": "^7.24.0", 237 | "@babel/traverse": "^7.24.0", 238 | "@babel/types": "^7.24.0" 239 | }, 240 | "engines": { 241 | "node": ">=6.9.0" 242 | } 243 | }, 244 | "node_modules/@babel/highlight": { 245 | "version": "7.23.4", 246 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", 247 | "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", 248 | "dependencies": { 249 | "@babel/helper-validator-identifier": "^7.22.20", 250 | "chalk": "^2.4.2", 251 | "js-tokens": "^4.0.0" 252 | }, 253 | "engines": { 254 | "node": ">=6.9.0" 255 | } 256 | }, 257 | "node_modules/@babel/parser": { 258 | "version": "7.24.0", 259 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", 260 | "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", 261 | "bin": { 262 | "parser": "bin/babel-parser.js" 263 | }, 264 | "engines": { 265 | "node": ">=6.0.0" 266 | } 267 | }, 268 | "node_modules/@babel/plugin-transform-react-jsx-self": { 269 | "version": "7.23.3", 270 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", 271 | "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", 272 | "dev": true, 273 | "dependencies": { 274 | "@babel/helper-plugin-utils": "^7.22.5" 275 | }, 276 | "engines": { 277 | "node": ">=6.9.0" 278 | }, 279 | "peerDependencies": { 280 | "@babel/core": "^7.0.0-0" 281 | } 282 | }, 283 | "node_modules/@babel/plugin-transform-react-jsx-source": { 284 | "version": "7.23.3", 285 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", 286 | "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", 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.24.0", 300 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", 301 | "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", 302 | "dependencies": { 303 | "@babel/code-frame": "^7.23.5", 304 | "@babel/parser": "^7.24.0", 305 | "@babel/types": "^7.24.0" 306 | }, 307 | "engines": { 308 | "node": ">=6.9.0" 309 | } 310 | }, 311 | "node_modules/@babel/traverse": { 312 | "version": "7.24.0", 313 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", 314 | "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", 315 | "dependencies": { 316 | "@babel/code-frame": "^7.23.5", 317 | "@babel/generator": "^7.23.6", 318 | "@babel/helper-environment-visitor": "^7.22.20", 319 | "@babel/helper-function-name": "^7.23.0", 320 | "@babel/helper-hoist-variables": "^7.22.5", 321 | "@babel/helper-split-export-declaration": "^7.22.6", 322 | "@babel/parser": "^7.24.0", 323 | "@babel/types": "^7.24.0", 324 | "debug": "^4.3.1", 325 | "globals": "^11.1.0" 326 | }, 327 | "engines": { 328 | "node": ">=6.9.0" 329 | } 330 | }, 331 | "node_modules/@babel/types": { 332 | "version": "7.24.0", 333 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", 334 | "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", 335 | "dependencies": { 336 | "@babel/helper-string-parser": "^7.23.4", 337 | "@babel/helper-validator-identifier": "^7.22.20", 338 | "to-fast-properties": "^2.0.0" 339 | }, 340 | "engines": { 341 | "node": ">=6.9.0" 342 | } 343 | }, 344 | "node_modules/@esbuild/aix-ppc64": { 345 | "version": "0.19.12", 346 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", 347 | "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", 348 | "cpu": [ 349 | "ppc64" 350 | ], 351 | "optional": true, 352 | "os": [ 353 | "aix" 354 | ], 355 | "engines": { 356 | "node": ">=12" 357 | } 358 | }, 359 | "node_modules/@esbuild/android-arm": { 360 | "version": "0.19.12", 361 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", 362 | "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", 363 | "cpu": [ 364 | "arm" 365 | ], 366 | "optional": true, 367 | "os": [ 368 | "android" 369 | ], 370 | "engines": { 371 | "node": ">=12" 372 | } 373 | }, 374 | "node_modules/@esbuild/android-arm64": { 375 | "version": "0.19.12", 376 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", 377 | "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", 378 | "cpu": [ 379 | "arm64" 380 | ], 381 | "optional": true, 382 | "os": [ 383 | "android" 384 | ], 385 | "engines": { 386 | "node": ">=12" 387 | } 388 | }, 389 | "node_modules/@esbuild/android-x64": { 390 | "version": "0.19.12", 391 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", 392 | "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", 393 | "cpu": [ 394 | "x64" 395 | ], 396 | "optional": true, 397 | "os": [ 398 | "android" 399 | ], 400 | "engines": { 401 | "node": ">=12" 402 | } 403 | }, 404 | "node_modules/@esbuild/darwin-arm64": { 405 | "version": "0.19.12", 406 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", 407 | "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", 408 | "cpu": [ 409 | "arm64" 410 | ], 411 | "optional": true, 412 | "os": [ 413 | "darwin" 414 | ], 415 | "engines": { 416 | "node": ">=12" 417 | } 418 | }, 419 | "node_modules/@esbuild/darwin-x64": { 420 | "version": "0.19.12", 421 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", 422 | "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", 423 | "cpu": [ 424 | "x64" 425 | ], 426 | "optional": true, 427 | "os": [ 428 | "darwin" 429 | ], 430 | "engines": { 431 | "node": ">=12" 432 | } 433 | }, 434 | "node_modules/@esbuild/freebsd-arm64": { 435 | "version": "0.19.12", 436 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", 437 | "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", 438 | "cpu": [ 439 | "arm64" 440 | ], 441 | "optional": true, 442 | "os": [ 443 | "freebsd" 444 | ], 445 | "engines": { 446 | "node": ">=12" 447 | } 448 | }, 449 | "node_modules/@esbuild/freebsd-x64": { 450 | "version": "0.19.12", 451 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", 452 | "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", 453 | "cpu": [ 454 | "x64" 455 | ], 456 | "optional": true, 457 | "os": [ 458 | "freebsd" 459 | ], 460 | "engines": { 461 | "node": ">=12" 462 | } 463 | }, 464 | "node_modules/@esbuild/linux-arm": { 465 | "version": "0.19.12", 466 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", 467 | "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", 468 | "cpu": [ 469 | "arm" 470 | ], 471 | "optional": true, 472 | "os": [ 473 | "linux" 474 | ], 475 | "engines": { 476 | "node": ">=12" 477 | } 478 | }, 479 | "node_modules/@esbuild/linux-arm64": { 480 | "version": "0.19.12", 481 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", 482 | "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", 483 | "cpu": [ 484 | "arm64" 485 | ], 486 | "optional": true, 487 | "os": [ 488 | "linux" 489 | ], 490 | "engines": { 491 | "node": ">=12" 492 | } 493 | }, 494 | "node_modules/@esbuild/linux-ia32": { 495 | "version": "0.19.12", 496 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", 497 | "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", 498 | "cpu": [ 499 | "ia32" 500 | ], 501 | "optional": true, 502 | "os": [ 503 | "linux" 504 | ], 505 | "engines": { 506 | "node": ">=12" 507 | } 508 | }, 509 | "node_modules/@esbuild/linux-loong64": { 510 | "version": "0.19.12", 511 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", 512 | "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", 513 | "cpu": [ 514 | "loong64" 515 | ], 516 | "optional": true, 517 | "os": [ 518 | "linux" 519 | ], 520 | "engines": { 521 | "node": ">=12" 522 | } 523 | }, 524 | "node_modules/@esbuild/linux-mips64el": { 525 | "version": "0.19.12", 526 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", 527 | "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", 528 | "cpu": [ 529 | "mips64el" 530 | ], 531 | "optional": true, 532 | "os": [ 533 | "linux" 534 | ], 535 | "engines": { 536 | "node": ">=12" 537 | } 538 | }, 539 | "node_modules/@esbuild/linux-ppc64": { 540 | "version": "0.19.12", 541 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", 542 | "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", 543 | "cpu": [ 544 | "ppc64" 545 | ], 546 | "optional": true, 547 | "os": [ 548 | "linux" 549 | ], 550 | "engines": { 551 | "node": ">=12" 552 | } 553 | }, 554 | "node_modules/@esbuild/linux-riscv64": { 555 | "version": "0.19.12", 556 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", 557 | "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", 558 | "cpu": [ 559 | "riscv64" 560 | ], 561 | "optional": true, 562 | "os": [ 563 | "linux" 564 | ], 565 | "engines": { 566 | "node": ">=12" 567 | } 568 | }, 569 | "node_modules/@esbuild/linux-s390x": { 570 | "version": "0.19.12", 571 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", 572 | "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", 573 | "cpu": [ 574 | "s390x" 575 | ], 576 | "optional": true, 577 | "os": [ 578 | "linux" 579 | ], 580 | "engines": { 581 | "node": ">=12" 582 | } 583 | }, 584 | "node_modules/@esbuild/linux-x64": { 585 | "version": "0.19.12", 586 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", 587 | "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", 588 | "cpu": [ 589 | "x64" 590 | ], 591 | "optional": true, 592 | "os": [ 593 | "linux" 594 | ], 595 | "engines": { 596 | "node": ">=12" 597 | } 598 | }, 599 | "node_modules/@esbuild/netbsd-x64": { 600 | "version": "0.19.12", 601 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", 602 | "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", 603 | "cpu": [ 604 | "x64" 605 | ], 606 | "optional": true, 607 | "os": [ 608 | "netbsd" 609 | ], 610 | "engines": { 611 | "node": ">=12" 612 | } 613 | }, 614 | "node_modules/@esbuild/openbsd-x64": { 615 | "version": "0.19.12", 616 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", 617 | "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", 618 | "cpu": [ 619 | "x64" 620 | ], 621 | "optional": true, 622 | "os": [ 623 | "openbsd" 624 | ], 625 | "engines": { 626 | "node": ">=12" 627 | } 628 | }, 629 | "node_modules/@esbuild/sunos-x64": { 630 | "version": "0.19.12", 631 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", 632 | "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", 633 | "cpu": [ 634 | "x64" 635 | ], 636 | "optional": true, 637 | "os": [ 638 | "sunos" 639 | ], 640 | "engines": { 641 | "node": ">=12" 642 | } 643 | }, 644 | "node_modules/@esbuild/win32-arm64": { 645 | "version": "0.19.12", 646 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", 647 | "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", 648 | "cpu": [ 649 | "arm64" 650 | ], 651 | "optional": true, 652 | "os": [ 653 | "win32" 654 | ], 655 | "engines": { 656 | "node": ">=12" 657 | } 658 | }, 659 | "node_modules/@esbuild/win32-ia32": { 660 | "version": "0.19.12", 661 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", 662 | "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", 663 | "cpu": [ 664 | "ia32" 665 | ], 666 | "optional": true, 667 | "os": [ 668 | "win32" 669 | ], 670 | "engines": { 671 | "node": ">=12" 672 | } 673 | }, 674 | "node_modules/@esbuild/win32-x64": { 675 | "version": "0.19.12", 676 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", 677 | "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", 678 | "cpu": [ 679 | "x64" 680 | ], 681 | "optional": true, 682 | "os": [ 683 | "win32" 684 | ], 685 | "engines": { 686 | "node": ">=12" 687 | } 688 | }, 689 | "node_modules/@jridgewell/gen-mapping": { 690 | "version": "0.3.5", 691 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", 692 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", 693 | "dependencies": { 694 | "@jridgewell/set-array": "^1.2.1", 695 | "@jridgewell/sourcemap-codec": "^1.4.10", 696 | "@jridgewell/trace-mapping": "^0.3.24" 697 | }, 698 | "engines": { 699 | "node": ">=6.0.0" 700 | } 701 | }, 702 | "node_modules/@jridgewell/resolve-uri": { 703 | "version": "3.1.2", 704 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 705 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 706 | "engines": { 707 | "node": ">=6.0.0" 708 | } 709 | }, 710 | "node_modules/@jridgewell/set-array": { 711 | "version": "1.2.1", 712 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 713 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 714 | "engines": { 715 | "node": ">=6.0.0" 716 | } 717 | }, 718 | "node_modules/@jridgewell/sourcemap-codec": { 719 | "version": "1.4.15", 720 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 721 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" 722 | }, 723 | "node_modules/@jridgewell/trace-mapping": { 724 | "version": "0.3.25", 725 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 726 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 727 | "dependencies": { 728 | "@jridgewell/resolve-uri": "^3.1.0", 729 | "@jridgewell/sourcemap-codec": "^1.4.14" 730 | } 731 | }, 732 | "node_modules/@remix-run/router": { 733 | "version": "1.15.3", 734 | "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", 735 | "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==", 736 | "engines": { 737 | "node": ">=14.0.0" 738 | } 739 | }, 740 | "node_modules/@rollup/pluginutils": { 741 | "version": "5.1.0", 742 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", 743 | "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", 744 | "dependencies": { 745 | "@types/estree": "^1.0.0", 746 | "estree-walker": "^2.0.2", 747 | "picomatch": "^2.3.1" 748 | }, 749 | "engines": { 750 | "node": ">=14.0.0" 751 | }, 752 | "peerDependencies": { 753 | "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" 754 | }, 755 | "peerDependenciesMeta": { 756 | "rollup": { 757 | "optional": true 758 | } 759 | } 760 | }, 761 | "node_modules/@rollup/rollup-android-arm-eabi": { 762 | "version": "4.12.1", 763 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.1.tgz", 764 | "integrity": "sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==", 765 | "cpu": [ 766 | "arm" 767 | ], 768 | "optional": true, 769 | "os": [ 770 | "android" 771 | ] 772 | }, 773 | "node_modules/@rollup/rollup-android-arm64": { 774 | "version": "4.12.1", 775 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.1.tgz", 776 | "integrity": "sha512-wlzcWiH2Ir7rdMELxFE5vuM7D6TsOcJ2Yw0c3vaBR3VOsJFVTx9xvwnAvhgU5Ii8Gd6+I11qNHwndDscIm0HXg==", 777 | "cpu": [ 778 | "arm64" 779 | ], 780 | "optional": true, 781 | "os": [ 782 | "android" 783 | ] 784 | }, 785 | "node_modules/@rollup/rollup-darwin-arm64": { 786 | "version": "4.12.1", 787 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.1.tgz", 788 | "integrity": "sha512-YRXa1+aZIFN5BaImK+84B3uNK8C6+ynKLPgvn29X9s0LTVCByp54TB7tdSMHDR7GTV39bz1lOmlLDuedgTwwHg==", 789 | "cpu": [ 790 | "arm64" 791 | ], 792 | "optional": true, 793 | "os": [ 794 | "darwin" 795 | ] 796 | }, 797 | "node_modules/@rollup/rollup-darwin-x64": { 798 | "version": "4.12.1", 799 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.1.tgz", 800 | "integrity": "sha512-opjWJ4MevxeA8FhlngQWPBOvVWYNPFkq6/25rGgG+KOy0r8clYwL1CFd+PGwRqqMFVQ4/Qd3sQu5t7ucP7C/Uw==", 801 | "cpu": [ 802 | "x64" 803 | ], 804 | "optional": true, 805 | "os": [ 806 | "darwin" 807 | ] 808 | }, 809 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 810 | "version": "4.12.1", 811 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.1.tgz", 812 | "integrity": "sha512-uBkwaI+gBUlIe+EfbNnY5xNyXuhZbDSx2nzzW8tRMjUmpScd6lCQYKY2V9BATHtv5Ef2OBq6SChEP8h+/cxifQ==", 813 | "cpu": [ 814 | "arm" 815 | ], 816 | "optional": true, 817 | "os": [ 818 | "linux" 819 | ] 820 | }, 821 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 822 | "version": "4.12.1", 823 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.1.tgz", 824 | "integrity": "sha512-0bK9aG1kIg0Su7OcFTlexkVeNZ5IzEsnz1ept87a0TUgZ6HplSgkJAnFpEVRW7GRcikT4GlPV0pbtVedOaXHQQ==", 825 | "cpu": [ 826 | "arm64" 827 | ], 828 | "optional": true, 829 | "os": [ 830 | "linux" 831 | ] 832 | }, 833 | "node_modules/@rollup/rollup-linux-arm64-musl": { 834 | "version": "4.12.1", 835 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.1.tgz", 836 | "integrity": "sha512-qB6AFRXuP8bdkBI4D7UPUbE7OQf7u5OL+R94JE42Z2Qjmyj74FtDdLGeriRyBDhm4rQSvqAGCGC01b8Fu2LthQ==", 837 | "cpu": [ 838 | "arm64" 839 | ], 840 | "optional": true, 841 | "os": [ 842 | "linux" 843 | ] 844 | }, 845 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 846 | "version": "4.12.1", 847 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.1.tgz", 848 | "integrity": "sha512-sHig3LaGlpNgDj5o8uPEoGs98RII8HpNIqFtAI8/pYABO8i0nb1QzT0JDoXF/pxzqO+FkxvwkHZo9k0NJYDedg==", 849 | "cpu": [ 850 | "riscv64" 851 | ], 852 | "optional": true, 853 | "os": [ 854 | "linux" 855 | ] 856 | }, 857 | "node_modules/@rollup/rollup-linux-x64-gnu": { 858 | "version": "4.12.1", 859 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.1.tgz", 860 | "integrity": "sha512-nD3YcUv6jBJbBNFvSbp0IV66+ba/1teuBcu+fBBPZ33sidxitc6ErhON3JNavaH8HlswhWMC3s5rgZpM4MtPqQ==", 861 | "cpu": [ 862 | "x64" 863 | ], 864 | "optional": true, 865 | "os": [ 866 | "linux" 867 | ] 868 | }, 869 | "node_modules/@rollup/rollup-linux-x64-musl": { 870 | "version": "4.12.1", 871 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.1.tgz", 872 | "integrity": "sha512-7/XVZqgBby2qp/cO0TQ8uJK+9xnSdJ9ct6gSDdEr4MfABrjTyrW6Bau7HQ73a2a5tPB7hno49A0y1jhWGDN9OQ==", 873 | "cpu": [ 874 | "x64" 875 | ], 876 | "optional": true, 877 | "os": [ 878 | "linux" 879 | ] 880 | }, 881 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 882 | "version": "4.12.1", 883 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.1.tgz", 884 | "integrity": "sha512-CYc64bnICG42UPL7TrhIwsJW4QcKkIt9gGlj21gq3VV0LL6XNb1yAdHVp1pIi9gkts9gGcT3OfUYHjGP7ETAiw==", 885 | "cpu": [ 886 | "arm64" 887 | ], 888 | "optional": true, 889 | "os": [ 890 | "win32" 891 | ] 892 | }, 893 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 894 | "version": "4.12.1", 895 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.1.tgz", 896 | "integrity": "sha512-LN+vnlZ9g0qlHGlS920GR4zFCqAwbv2lULrR29yGaWP9u7wF5L7GqWu9Ah6/kFZPXPUkpdZwd//TNR+9XC9hvA==", 897 | "cpu": [ 898 | "ia32" 899 | ], 900 | "optional": true, 901 | "os": [ 902 | "win32" 903 | ] 904 | }, 905 | "node_modules/@rollup/rollup-win32-x64-msvc": { 906 | "version": "4.12.1", 907 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.1.tgz", 908 | "integrity": "sha512-n+vkrSyphvmU0qkQ6QBNXCGr2mKjhP08mPRM/Xp5Ck2FV4NrHU+y6axzDeixUrCBHVUS51TZhjqrKBBsHLKb2Q==", 909 | "cpu": [ 910 | "x64" 911 | ], 912 | "optional": true, 913 | "os": [ 914 | "win32" 915 | ] 916 | }, 917 | "node_modules/@svgr/babel-plugin-add-jsx-attribute": { 918 | "version": "8.0.0", 919 | "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", 920 | "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", 921 | "engines": { 922 | "node": ">=14" 923 | }, 924 | "funding": { 925 | "type": "github", 926 | "url": "https://github.com/sponsors/gregberge" 927 | }, 928 | "peerDependencies": { 929 | "@babel/core": "^7.0.0-0" 930 | } 931 | }, 932 | "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { 933 | "version": "8.0.0", 934 | "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", 935 | "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", 936 | "engines": { 937 | "node": ">=14" 938 | }, 939 | "funding": { 940 | "type": "github", 941 | "url": "https://github.com/sponsors/gregberge" 942 | }, 943 | "peerDependencies": { 944 | "@babel/core": "^7.0.0-0" 945 | } 946 | }, 947 | "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { 948 | "version": "8.0.0", 949 | "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", 950 | "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", 951 | "engines": { 952 | "node": ">=14" 953 | }, 954 | "funding": { 955 | "type": "github", 956 | "url": "https://github.com/sponsors/gregberge" 957 | }, 958 | "peerDependencies": { 959 | "@babel/core": "^7.0.0-0" 960 | } 961 | }, 962 | "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { 963 | "version": "8.0.0", 964 | "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", 965 | "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", 966 | "engines": { 967 | "node": ">=14" 968 | }, 969 | "funding": { 970 | "type": "github", 971 | "url": "https://github.com/sponsors/gregberge" 972 | }, 973 | "peerDependencies": { 974 | "@babel/core": "^7.0.0-0" 975 | } 976 | }, 977 | "node_modules/@svgr/babel-plugin-svg-dynamic-title": { 978 | "version": "8.0.0", 979 | "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", 980 | "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", 981 | "engines": { 982 | "node": ">=14" 983 | }, 984 | "funding": { 985 | "type": "github", 986 | "url": "https://github.com/sponsors/gregberge" 987 | }, 988 | "peerDependencies": { 989 | "@babel/core": "^7.0.0-0" 990 | } 991 | }, 992 | "node_modules/@svgr/babel-plugin-svg-em-dimensions": { 993 | "version": "8.0.0", 994 | "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", 995 | "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", 996 | "engines": { 997 | "node": ">=14" 998 | }, 999 | "funding": { 1000 | "type": "github", 1001 | "url": "https://github.com/sponsors/gregberge" 1002 | }, 1003 | "peerDependencies": { 1004 | "@babel/core": "^7.0.0-0" 1005 | } 1006 | }, 1007 | "node_modules/@svgr/babel-plugin-transform-react-native-svg": { 1008 | "version": "8.1.0", 1009 | "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", 1010 | "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", 1011 | "engines": { 1012 | "node": ">=14" 1013 | }, 1014 | "funding": { 1015 | "type": "github", 1016 | "url": "https://github.com/sponsors/gregberge" 1017 | }, 1018 | "peerDependencies": { 1019 | "@babel/core": "^7.0.0-0" 1020 | } 1021 | }, 1022 | "node_modules/@svgr/babel-plugin-transform-svg-component": { 1023 | "version": "8.0.0", 1024 | "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", 1025 | "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", 1026 | "engines": { 1027 | "node": ">=12" 1028 | }, 1029 | "funding": { 1030 | "type": "github", 1031 | "url": "https://github.com/sponsors/gregberge" 1032 | }, 1033 | "peerDependencies": { 1034 | "@babel/core": "^7.0.0-0" 1035 | } 1036 | }, 1037 | "node_modules/@svgr/babel-preset": { 1038 | "version": "8.1.0", 1039 | "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", 1040 | "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", 1041 | "dependencies": { 1042 | "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", 1043 | "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", 1044 | "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", 1045 | "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", 1046 | "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", 1047 | "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", 1048 | "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", 1049 | "@svgr/babel-plugin-transform-svg-component": "8.0.0" 1050 | }, 1051 | "engines": { 1052 | "node": ">=14" 1053 | }, 1054 | "funding": { 1055 | "type": "github", 1056 | "url": "https://github.com/sponsors/gregberge" 1057 | }, 1058 | "peerDependencies": { 1059 | "@babel/core": "^7.0.0-0" 1060 | } 1061 | }, 1062 | "node_modules/@svgr/core": { 1063 | "version": "8.1.0", 1064 | "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", 1065 | "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", 1066 | "dependencies": { 1067 | "@babel/core": "^7.21.3", 1068 | "@svgr/babel-preset": "8.1.0", 1069 | "camelcase": "^6.2.0", 1070 | "cosmiconfig": "^8.1.3", 1071 | "snake-case": "^3.0.4" 1072 | }, 1073 | "engines": { 1074 | "node": ">=14" 1075 | }, 1076 | "funding": { 1077 | "type": "github", 1078 | "url": "https://github.com/sponsors/gregberge" 1079 | } 1080 | }, 1081 | "node_modules/@svgr/hast-util-to-babel-ast": { 1082 | "version": "8.0.0", 1083 | "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", 1084 | "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", 1085 | "dependencies": { 1086 | "@babel/types": "^7.21.3", 1087 | "entities": "^4.4.0" 1088 | }, 1089 | "engines": { 1090 | "node": ">=14" 1091 | }, 1092 | "funding": { 1093 | "type": "github", 1094 | "url": "https://github.com/sponsors/gregberge" 1095 | } 1096 | }, 1097 | "node_modules/@svgr/plugin-jsx": { 1098 | "version": "8.1.0", 1099 | "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", 1100 | "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", 1101 | "dependencies": { 1102 | "@babel/core": "^7.21.3", 1103 | "@svgr/babel-preset": "8.1.0", 1104 | "@svgr/hast-util-to-babel-ast": "8.0.0", 1105 | "svg-parser": "^2.0.4" 1106 | }, 1107 | "engines": { 1108 | "node": ">=14" 1109 | }, 1110 | "funding": { 1111 | "type": "github", 1112 | "url": "https://github.com/sponsors/gregberge" 1113 | }, 1114 | "peerDependencies": { 1115 | "@svgr/core": "*" 1116 | } 1117 | }, 1118 | "node_modules/@tauri-apps/api": { 1119 | "version": "1.5.3", 1120 | "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.5.3.tgz", 1121 | "integrity": "sha512-zxnDjHHKjOsrIzZm6nO5Xapb/BxqUq1tc7cGkFXsFkGTsSWgCPH1D8mm0XS9weJY2OaR73I3k3S+b7eSzJDfqA==", 1122 | "engines": { 1123 | "node": ">= 14.6.0", 1124 | "npm": ">= 6.6.0", 1125 | "yarn": ">= 1.19.1" 1126 | }, 1127 | "funding": { 1128 | "type": "opencollective", 1129 | "url": "https://opencollective.com/tauri" 1130 | } 1131 | }, 1132 | "node_modules/@tauri-apps/cli": { 1133 | "version": "1.5.11", 1134 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.5.11.tgz", 1135 | "integrity": "sha512-B475D7phZrq5sZ3kDABH4g2mEoUIHtnIO+r4ZGAAfsjMbZCwXxR/jlMGTEL+VO3YzjpF7gQe38IzB4vLBbVppw==", 1136 | "dev": true, 1137 | "bin": { 1138 | "tauri": "tauri.js" 1139 | }, 1140 | "engines": { 1141 | "node": ">= 10" 1142 | }, 1143 | "funding": { 1144 | "type": "opencollective", 1145 | "url": "https://opencollective.com/tauri" 1146 | }, 1147 | "optionalDependencies": { 1148 | "@tauri-apps/cli-darwin-arm64": "1.5.11", 1149 | "@tauri-apps/cli-darwin-x64": "1.5.11", 1150 | "@tauri-apps/cli-linux-arm-gnueabihf": "1.5.11", 1151 | "@tauri-apps/cli-linux-arm64-gnu": "1.5.11", 1152 | "@tauri-apps/cli-linux-arm64-musl": "1.5.11", 1153 | "@tauri-apps/cli-linux-x64-gnu": "1.5.11", 1154 | "@tauri-apps/cli-linux-x64-musl": "1.5.11", 1155 | "@tauri-apps/cli-win32-arm64-msvc": "1.5.11", 1156 | "@tauri-apps/cli-win32-ia32-msvc": "1.5.11", 1157 | "@tauri-apps/cli-win32-x64-msvc": "1.5.11" 1158 | } 1159 | }, 1160 | "node_modules/@tauri-apps/cli-darwin-arm64": { 1161 | "version": "1.5.11", 1162 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.5.11.tgz", 1163 | "integrity": "sha512-2NLSglDb5VfvTbMtmOKWyD+oaL/e8Z/ZZGovHtUFyUSFRabdXc6cZOlcD1BhFvYkHqm+TqGaz5qtPR5UbqDs8A==", 1164 | "cpu": [ 1165 | "arm64" 1166 | ], 1167 | "dev": true, 1168 | "optional": true, 1169 | "os": [ 1170 | "darwin" 1171 | ], 1172 | "engines": { 1173 | "node": ">= 10" 1174 | } 1175 | }, 1176 | "node_modules/@tauri-apps/cli-darwin-x64": { 1177 | "version": "1.5.11", 1178 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.5.11.tgz", 1179 | "integrity": "sha512-/RQllHiJRH2fJOCudtZlaUIjofkHzP3zZgxi71ZUm7Fy80smU5TDfwpwOvB0wSVh0g/ciDjMArCSTo0MRvL+ag==", 1180 | "cpu": [ 1181 | "x64" 1182 | ], 1183 | "dev": true, 1184 | "optional": true, 1185 | "os": [ 1186 | "darwin" 1187 | ], 1188 | "engines": { 1189 | "node": ">= 10" 1190 | } 1191 | }, 1192 | "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { 1193 | "version": "1.5.11", 1194 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.5.11.tgz", 1195 | "integrity": "sha512-IlBuBPKmMm+a5LLUEK6a21UGr9ZYd6zKuKLq6IGM4tVweQa8Sf2kP2Nqs74dMGIUrLmMs0vuqdURpykQg+z4NQ==", 1196 | "cpu": [ 1197 | "arm" 1198 | ], 1199 | "dev": true, 1200 | "optional": true, 1201 | "os": [ 1202 | "linux" 1203 | ], 1204 | "engines": { 1205 | "node": ">= 10" 1206 | } 1207 | }, 1208 | "node_modules/@tauri-apps/cli-linux-arm64-gnu": { 1209 | "version": "1.5.11", 1210 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.5.11.tgz", 1211 | "integrity": "sha512-w+k1bNHCU/GbmXshtAhyTwqosThUDmCEFLU4Zkin1vl2fuAtQry2RN7thfcJFepblUGL/J7yh3Q/0+BCjtspKQ==", 1212 | "cpu": [ 1213 | "arm64" 1214 | ], 1215 | "dev": true, 1216 | "optional": true, 1217 | "os": [ 1218 | "linux" 1219 | ], 1220 | "engines": { 1221 | "node": ">= 10" 1222 | } 1223 | }, 1224 | "node_modules/@tauri-apps/cli-linux-arm64-musl": { 1225 | "version": "1.5.11", 1226 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.5.11.tgz", 1227 | "integrity": "sha512-PN6/dl+OfYQ/qrAy4HRAfksJ2AyWQYn2IA/2Wwpaa7SDRz2+hzwTQkvajuvy0sQ5L2WCG7ymFYRYMbpC6Hk9Pg==", 1228 | "cpu": [ 1229 | "arm64" 1230 | ], 1231 | "dev": true, 1232 | "optional": true, 1233 | "os": [ 1234 | "linux" 1235 | ], 1236 | "engines": { 1237 | "node": ">= 10" 1238 | } 1239 | }, 1240 | "node_modules/@tauri-apps/cli-linux-x64-gnu": { 1241 | "version": "1.5.11", 1242 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.5.11.tgz", 1243 | "integrity": "sha512-MTVXLi89Nj7Apcvjezw92m7ZqIDKT5SFKZtVPCg6RoLUBTzko/BQoXYIRWmdoz2pgkHDUHgO2OMJ8oKzzddXbw==", 1244 | "cpu": [ 1245 | "x64" 1246 | ], 1247 | "dev": true, 1248 | "optional": true, 1249 | "os": [ 1250 | "linux" 1251 | ], 1252 | "engines": { 1253 | "node": ">= 10" 1254 | } 1255 | }, 1256 | "node_modules/@tauri-apps/cli-linux-x64-musl": { 1257 | "version": "1.5.11", 1258 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.5.11.tgz", 1259 | "integrity": "sha512-kwzAjqFpz7rvTs7WGZLy/a5nS5t15QKr3E9FG95MNF0exTl3d29YoAUAe1Mn0mOSrTJ9Z+vYYAcI/QdcsGBP+w==", 1260 | "cpu": [ 1261 | "x64" 1262 | ], 1263 | "dev": true, 1264 | "optional": true, 1265 | "os": [ 1266 | "linux" 1267 | ], 1268 | "engines": { 1269 | "node": ">= 10" 1270 | } 1271 | }, 1272 | "node_modules/@tauri-apps/cli-win32-arm64-msvc": { 1273 | "version": "1.5.11", 1274 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-1.5.11.tgz", 1275 | "integrity": "sha512-L+5NZ/rHrSUrMxjj6YpFYCXp6wHnq8c8SfDTBOX8dO8x+5283/vftb4vvuGIsLS4UwUFXFnLt3XQr44n84E67Q==", 1276 | "cpu": [ 1277 | "arm64" 1278 | ], 1279 | "dev": true, 1280 | "optional": true, 1281 | "os": [ 1282 | "win32" 1283 | ], 1284 | "engines": { 1285 | "node": ">= 10" 1286 | } 1287 | }, 1288 | "node_modules/@tauri-apps/cli-win32-ia32-msvc": { 1289 | "version": "1.5.11", 1290 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.5.11.tgz", 1291 | "integrity": "sha512-oVlD9IVewrY0lZzTdb71kNXkjdgMqFq+ohb67YsJb4Rf7o8A9DTlFds1XLCe3joqLMm4M+gvBKD7YnGIdxQ9vA==", 1292 | "cpu": [ 1293 | "ia32" 1294 | ], 1295 | "dev": true, 1296 | "optional": true, 1297 | "os": [ 1298 | "win32" 1299 | ], 1300 | "engines": { 1301 | "node": ">= 10" 1302 | } 1303 | }, 1304 | "node_modules/@tauri-apps/cli-win32-x64-msvc": { 1305 | "version": "1.5.11", 1306 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.5.11.tgz", 1307 | "integrity": "sha512-1CexcqUFCis5ypUIMOKllxUBrna09McbftWENgvVXMfA+SP+yPDPAVb8fIvUcdTIwR/yHJwcIucmTB4anww4vg==", 1308 | "cpu": [ 1309 | "x64" 1310 | ], 1311 | "dev": true, 1312 | "optional": true, 1313 | "os": [ 1314 | "win32" 1315 | ], 1316 | "engines": { 1317 | "node": ">= 10" 1318 | } 1319 | }, 1320 | "node_modules/@types/babel__core": { 1321 | "version": "7.20.5", 1322 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", 1323 | "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", 1324 | "dev": true, 1325 | "dependencies": { 1326 | "@babel/parser": "^7.20.7", 1327 | "@babel/types": "^7.20.7", 1328 | "@types/babel__generator": "*", 1329 | "@types/babel__template": "*", 1330 | "@types/babel__traverse": "*" 1331 | } 1332 | }, 1333 | "node_modules/@types/babel__generator": { 1334 | "version": "7.6.8", 1335 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", 1336 | "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", 1337 | "dev": true, 1338 | "dependencies": { 1339 | "@babel/types": "^7.0.0" 1340 | } 1341 | }, 1342 | "node_modules/@types/babel__template": { 1343 | "version": "7.4.4", 1344 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", 1345 | "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", 1346 | "dev": true, 1347 | "dependencies": { 1348 | "@babel/parser": "^7.1.0", 1349 | "@babel/types": "^7.0.0" 1350 | } 1351 | }, 1352 | "node_modules/@types/babel__traverse": { 1353 | "version": "7.20.5", 1354 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", 1355 | "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", 1356 | "dev": true, 1357 | "dependencies": { 1358 | "@babel/types": "^7.20.7" 1359 | } 1360 | }, 1361 | "node_modules/@types/estree": { 1362 | "version": "1.0.5", 1363 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", 1364 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" 1365 | }, 1366 | "node_modules/@vitejs/plugin-react": { 1367 | "version": "4.2.1", 1368 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", 1369 | "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", 1370 | "dev": true, 1371 | "dependencies": { 1372 | "@babel/core": "^7.23.5", 1373 | "@babel/plugin-transform-react-jsx-self": "^7.23.3", 1374 | "@babel/plugin-transform-react-jsx-source": "^7.23.3", 1375 | "@types/babel__core": "^7.20.5", 1376 | "react-refresh": "^0.14.0" 1377 | }, 1378 | "engines": { 1379 | "node": "^14.18.0 || >=16.0.0" 1380 | }, 1381 | "peerDependencies": { 1382 | "vite": "^4.2.0 || ^5.0.0" 1383 | } 1384 | }, 1385 | "node_modules/ansi-styles": { 1386 | "version": "3.2.1", 1387 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1388 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1389 | "dependencies": { 1390 | "color-convert": "^1.9.0" 1391 | }, 1392 | "engines": { 1393 | "node": ">=4" 1394 | } 1395 | }, 1396 | "node_modules/argparse": { 1397 | "version": "2.0.1", 1398 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1399 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 1400 | }, 1401 | "node_modules/browserslist": { 1402 | "version": "4.23.0", 1403 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", 1404 | "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", 1405 | "funding": [ 1406 | { 1407 | "type": "opencollective", 1408 | "url": "https://opencollective.com/browserslist" 1409 | }, 1410 | { 1411 | "type": "tidelift", 1412 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1413 | }, 1414 | { 1415 | "type": "github", 1416 | "url": "https://github.com/sponsors/ai" 1417 | } 1418 | ], 1419 | "dependencies": { 1420 | "caniuse-lite": "^1.0.30001587", 1421 | "electron-to-chromium": "^1.4.668", 1422 | "node-releases": "^2.0.14", 1423 | "update-browserslist-db": "^1.0.13" 1424 | }, 1425 | "bin": { 1426 | "browserslist": "cli.js" 1427 | }, 1428 | "engines": { 1429 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 1430 | } 1431 | }, 1432 | "node_modules/callsites": { 1433 | "version": "3.1.0", 1434 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1435 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1436 | "engines": { 1437 | "node": ">=6" 1438 | } 1439 | }, 1440 | "node_modules/camelcase": { 1441 | "version": "6.3.0", 1442 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 1443 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 1444 | "engines": { 1445 | "node": ">=10" 1446 | }, 1447 | "funding": { 1448 | "url": "https://github.com/sponsors/sindresorhus" 1449 | } 1450 | }, 1451 | "node_modules/caniuse-lite": { 1452 | "version": "1.0.30001597", 1453 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz", 1454 | "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==", 1455 | "funding": [ 1456 | { 1457 | "type": "opencollective", 1458 | "url": "https://opencollective.com/browserslist" 1459 | }, 1460 | { 1461 | "type": "tidelift", 1462 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 1463 | }, 1464 | { 1465 | "type": "github", 1466 | "url": "https://github.com/sponsors/ai" 1467 | } 1468 | ] 1469 | }, 1470 | "node_modules/chalk": { 1471 | "version": "2.4.2", 1472 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1473 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1474 | "dependencies": { 1475 | "ansi-styles": "^3.2.1", 1476 | "escape-string-regexp": "^1.0.5", 1477 | "supports-color": "^5.3.0" 1478 | }, 1479 | "engines": { 1480 | "node": ">=4" 1481 | } 1482 | }, 1483 | "node_modules/classnames": { 1484 | "version": "2.5.1", 1485 | "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", 1486 | "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" 1487 | }, 1488 | "node_modules/color-convert": { 1489 | "version": "1.9.3", 1490 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1491 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1492 | "dependencies": { 1493 | "color-name": "1.1.3" 1494 | } 1495 | }, 1496 | "node_modules/color-name": { 1497 | "version": "1.1.3", 1498 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1499 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 1500 | }, 1501 | "node_modules/convert-source-map": { 1502 | "version": "2.0.0", 1503 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 1504 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" 1505 | }, 1506 | "node_modules/copy-anything": { 1507 | "version": "2.0.6", 1508 | "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", 1509 | "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", 1510 | "devOptional": true, 1511 | "dependencies": { 1512 | "is-what": "^3.14.1" 1513 | }, 1514 | "funding": { 1515 | "url": "https://github.com/sponsors/mesqueeb" 1516 | } 1517 | }, 1518 | "node_modules/cosmiconfig": { 1519 | "version": "8.3.6", 1520 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", 1521 | "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", 1522 | "dependencies": { 1523 | "import-fresh": "^3.3.0", 1524 | "js-yaml": "^4.1.0", 1525 | "parse-json": "^5.2.0", 1526 | "path-type": "^4.0.0" 1527 | }, 1528 | "engines": { 1529 | "node": ">=14" 1530 | }, 1531 | "funding": { 1532 | "url": "https://github.com/sponsors/d-fischer" 1533 | }, 1534 | "peerDependencies": { 1535 | "typescript": ">=4.9.5" 1536 | }, 1537 | "peerDependenciesMeta": { 1538 | "typescript": { 1539 | "optional": true 1540 | } 1541 | } 1542 | }, 1543 | "node_modules/debug": { 1544 | "version": "4.3.4", 1545 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1546 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1547 | "dependencies": { 1548 | "ms": "2.1.2" 1549 | }, 1550 | "engines": { 1551 | "node": ">=6.0" 1552 | }, 1553 | "peerDependenciesMeta": { 1554 | "supports-color": { 1555 | "optional": true 1556 | } 1557 | } 1558 | }, 1559 | "node_modules/dot-case": { 1560 | "version": "3.0.4", 1561 | "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", 1562 | "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", 1563 | "dependencies": { 1564 | "no-case": "^3.0.4", 1565 | "tslib": "^2.0.3" 1566 | } 1567 | }, 1568 | "node_modules/electron-to-chromium": { 1569 | "version": "1.4.699", 1570 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.699.tgz", 1571 | "integrity": "sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==" 1572 | }, 1573 | "node_modules/entities": { 1574 | "version": "4.5.0", 1575 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 1576 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 1577 | "engines": { 1578 | "node": ">=0.12" 1579 | }, 1580 | "funding": { 1581 | "url": "https://github.com/fb55/entities?sponsor=1" 1582 | } 1583 | }, 1584 | "node_modules/errno": { 1585 | "version": "0.1.8", 1586 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", 1587 | "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", 1588 | "optional": true, 1589 | "dependencies": { 1590 | "prr": "~1.0.1" 1591 | }, 1592 | "bin": { 1593 | "errno": "cli.js" 1594 | } 1595 | }, 1596 | "node_modules/error-ex": { 1597 | "version": "1.3.2", 1598 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1599 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1600 | "dependencies": { 1601 | "is-arrayish": "^0.2.1" 1602 | } 1603 | }, 1604 | "node_modules/esbuild": { 1605 | "version": "0.19.12", 1606 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", 1607 | "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", 1608 | "hasInstallScript": true, 1609 | "bin": { 1610 | "esbuild": "bin/esbuild" 1611 | }, 1612 | "engines": { 1613 | "node": ">=12" 1614 | }, 1615 | "optionalDependencies": { 1616 | "@esbuild/aix-ppc64": "0.19.12", 1617 | "@esbuild/android-arm": "0.19.12", 1618 | "@esbuild/android-arm64": "0.19.12", 1619 | "@esbuild/android-x64": "0.19.12", 1620 | "@esbuild/darwin-arm64": "0.19.12", 1621 | "@esbuild/darwin-x64": "0.19.12", 1622 | "@esbuild/freebsd-arm64": "0.19.12", 1623 | "@esbuild/freebsd-x64": "0.19.12", 1624 | "@esbuild/linux-arm": "0.19.12", 1625 | "@esbuild/linux-arm64": "0.19.12", 1626 | "@esbuild/linux-ia32": "0.19.12", 1627 | "@esbuild/linux-loong64": "0.19.12", 1628 | "@esbuild/linux-mips64el": "0.19.12", 1629 | "@esbuild/linux-ppc64": "0.19.12", 1630 | "@esbuild/linux-riscv64": "0.19.12", 1631 | "@esbuild/linux-s390x": "0.19.12", 1632 | "@esbuild/linux-x64": "0.19.12", 1633 | "@esbuild/netbsd-x64": "0.19.12", 1634 | "@esbuild/openbsd-x64": "0.19.12", 1635 | "@esbuild/sunos-x64": "0.19.12", 1636 | "@esbuild/win32-arm64": "0.19.12", 1637 | "@esbuild/win32-ia32": "0.19.12", 1638 | "@esbuild/win32-x64": "0.19.12" 1639 | } 1640 | }, 1641 | "node_modules/escalade": { 1642 | "version": "3.1.2", 1643 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", 1644 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 1645 | "engines": { 1646 | "node": ">=6" 1647 | } 1648 | }, 1649 | "node_modules/escape-string-regexp": { 1650 | "version": "1.0.5", 1651 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1652 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1653 | "engines": { 1654 | "node": ">=0.8.0" 1655 | } 1656 | }, 1657 | "node_modules/estree-walker": { 1658 | "version": "2.0.2", 1659 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1660 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 1661 | }, 1662 | "node_modules/fsevents": { 1663 | "version": "2.3.3", 1664 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1665 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1666 | "hasInstallScript": true, 1667 | "optional": true, 1668 | "os": [ 1669 | "darwin" 1670 | ], 1671 | "engines": { 1672 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1673 | } 1674 | }, 1675 | "node_modules/gensync": { 1676 | "version": "1.0.0-beta.2", 1677 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1678 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1679 | "engines": { 1680 | "node": ">=6.9.0" 1681 | } 1682 | }, 1683 | "node_modules/globals": { 1684 | "version": "11.12.0", 1685 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1686 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1687 | "engines": { 1688 | "node": ">=4" 1689 | } 1690 | }, 1691 | "node_modules/graceful-fs": { 1692 | "version": "4.2.11", 1693 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1694 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1695 | "optional": true 1696 | }, 1697 | "node_modules/has-flag": { 1698 | "version": "3.0.0", 1699 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1700 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1701 | "engines": { 1702 | "node": ">=4" 1703 | } 1704 | }, 1705 | "node_modules/iconv-lite": { 1706 | "version": "0.6.3", 1707 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 1708 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 1709 | "optional": true, 1710 | "dependencies": { 1711 | "safer-buffer": ">= 2.1.2 < 3.0.0" 1712 | }, 1713 | "engines": { 1714 | "node": ">=0.10.0" 1715 | } 1716 | }, 1717 | "node_modules/image-size": { 1718 | "version": "0.5.5", 1719 | "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", 1720 | "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", 1721 | "optional": true, 1722 | "bin": { 1723 | "image-size": "bin/image-size.js" 1724 | }, 1725 | "engines": { 1726 | "node": ">=0.10.0" 1727 | } 1728 | }, 1729 | "node_modules/import-fresh": { 1730 | "version": "3.3.0", 1731 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1732 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1733 | "dependencies": { 1734 | "parent-module": "^1.0.0", 1735 | "resolve-from": "^4.0.0" 1736 | }, 1737 | "engines": { 1738 | "node": ">=6" 1739 | }, 1740 | "funding": { 1741 | "url": "https://github.com/sponsors/sindresorhus" 1742 | } 1743 | }, 1744 | "node_modules/is-arrayish": { 1745 | "version": "0.2.1", 1746 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1747 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" 1748 | }, 1749 | "node_modules/is-what": { 1750 | "version": "3.14.1", 1751 | "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", 1752 | "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", 1753 | "devOptional": true 1754 | }, 1755 | "node_modules/js-tokens": { 1756 | "version": "4.0.0", 1757 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1758 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1759 | }, 1760 | "node_modules/js-yaml": { 1761 | "version": "4.1.0", 1762 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1763 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1764 | "dependencies": { 1765 | "argparse": "^2.0.1" 1766 | }, 1767 | "bin": { 1768 | "js-yaml": "bin/js-yaml.js" 1769 | } 1770 | }, 1771 | "node_modules/jsesc": { 1772 | "version": "2.5.2", 1773 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1774 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1775 | "bin": { 1776 | "jsesc": "bin/jsesc" 1777 | }, 1778 | "engines": { 1779 | "node": ">=4" 1780 | } 1781 | }, 1782 | "node_modules/json-parse-even-better-errors": { 1783 | "version": "2.3.1", 1784 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1785 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 1786 | }, 1787 | "node_modules/json5": { 1788 | "version": "2.2.3", 1789 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 1790 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 1791 | "bin": { 1792 | "json5": "lib/cli.js" 1793 | }, 1794 | "engines": { 1795 | "node": ">=6" 1796 | } 1797 | }, 1798 | "node_modules/less": { 1799 | "version": "4.2.0", 1800 | "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", 1801 | "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", 1802 | "devOptional": true, 1803 | "dependencies": { 1804 | "copy-anything": "^2.0.1", 1805 | "parse-node-version": "^1.0.1", 1806 | "tslib": "^2.3.0" 1807 | }, 1808 | "bin": { 1809 | "lessc": "bin/lessc" 1810 | }, 1811 | "engines": { 1812 | "node": ">=6" 1813 | }, 1814 | "optionalDependencies": { 1815 | "errno": "^0.1.1", 1816 | "graceful-fs": "^4.1.2", 1817 | "image-size": "~0.5.0", 1818 | "make-dir": "^2.1.0", 1819 | "mime": "^1.4.1", 1820 | "needle": "^3.1.0", 1821 | "source-map": "~0.6.0" 1822 | } 1823 | }, 1824 | "node_modules/lines-and-columns": { 1825 | "version": "1.2.4", 1826 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 1827 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" 1828 | }, 1829 | "node_modules/loose-envify": { 1830 | "version": "1.4.0", 1831 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1832 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1833 | "dependencies": { 1834 | "js-tokens": "^3.0.0 || ^4.0.0" 1835 | }, 1836 | "bin": { 1837 | "loose-envify": "cli.js" 1838 | } 1839 | }, 1840 | "node_modules/lower-case": { 1841 | "version": "2.0.2", 1842 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", 1843 | "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", 1844 | "dependencies": { 1845 | "tslib": "^2.0.3" 1846 | } 1847 | }, 1848 | "node_modules/lru-cache": { 1849 | "version": "5.1.1", 1850 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 1851 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 1852 | "dependencies": { 1853 | "yallist": "^3.0.2" 1854 | } 1855 | }, 1856 | "node_modules/make-dir": { 1857 | "version": "2.1.0", 1858 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 1859 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 1860 | "optional": true, 1861 | "dependencies": { 1862 | "pify": "^4.0.1", 1863 | "semver": "^5.6.0" 1864 | }, 1865 | "engines": { 1866 | "node": ">=6" 1867 | } 1868 | }, 1869 | "node_modules/make-dir/node_modules/semver": { 1870 | "version": "5.7.2", 1871 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", 1872 | "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 1873 | "optional": true, 1874 | "bin": { 1875 | "semver": "bin/semver" 1876 | } 1877 | }, 1878 | "node_modules/mime": { 1879 | "version": "1.6.0", 1880 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1881 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1882 | "optional": true, 1883 | "bin": { 1884 | "mime": "cli.js" 1885 | }, 1886 | "engines": { 1887 | "node": ">=4" 1888 | } 1889 | }, 1890 | "node_modules/ms": { 1891 | "version": "2.1.2", 1892 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1893 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1894 | }, 1895 | "node_modules/nanoid": { 1896 | "version": "3.3.7", 1897 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 1898 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 1899 | "funding": [ 1900 | { 1901 | "type": "github", 1902 | "url": "https://github.com/sponsors/ai" 1903 | } 1904 | ], 1905 | "bin": { 1906 | "nanoid": "bin/nanoid.cjs" 1907 | }, 1908 | "engines": { 1909 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1910 | } 1911 | }, 1912 | "node_modules/needle": { 1913 | "version": "3.3.1", 1914 | "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", 1915 | "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", 1916 | "optional": true, 1917 | "dependencies": { 1918 | "iconv-lite": "^0.6.3", 1919 | "sax": "^1.2.4" 1920 | }, 1921 | "bin": { 1922 | "needle": "bin/needle" 1923 | }, 1924 | "engines": { 1925 | "node": ">= 4.4.x" 1926 | } 1927 | }, 1928 | "node_modules/no-case": { 1929 | "version": "3.0.4", 1930 | "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", 1931 | "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", 1932 | "dependencies": { 1933 | "lower-case": "^2.0.2", 1934 | "tslib": "^2.0.3" 1935 | } 1936 | }, 1937 | "node_modules/node-releases": { 1938 | "version": "2.0.14", 1939 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", 1940 | "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" 1941 | }, 1942 | "node_modules/normalize.css": { 1943 | "version": "8.0.1", 1944 | "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", 1945 | "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" 1946 | }, 1947 | "node_modules/parent-module": { 1948 | "version": "1.0.1", 1949 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1950 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1951 | "dependencies": { 1952 | "callsites": "^3.0.0" 1953 | }, 1954 | "engines": { 1955 | "node": ">=6" 1956 | } 1957 | }, 1958 | "node_modules/parse-json": { 1959 | "version": "5.2.0", 1960 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 1961 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 1962 | "dependencies": { 1963 | "@babel/code-frame": "^7.0.0", 1964 | "error-ex": "^1.3.1", 1965 | "json-parse-even-better-errors": "^2.3.0", 1966 | "lines-and-columns": "^1.1.6" 1967 | }, 1968 | "engines": { 1969 | "node": ">=8" 1970 | }, 1971 | "funding": { 1972 | "url": "https://github.com/sponsors/sindresorhus" 1973 | } 1974 | }, 1975 | "node_modules/parse-node-version": { 1976 | "version": "1.0.1", 1977 | "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", 1978 | "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", 1979 | "devOptional": true, 1980 | "engines": { 1981 | "node": ">= 0.10" 1982 | } 1983 | }, 1984 | "node_modules/path-type": { 1985 | "version": "4.0.0", 1986 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1987 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1988 | "engines": { 1989 | "node": ">=8" 1990 | } 1991 | }, 1992 | "node_modules/picocolors": { 1993 | "version": "1.0.0", 1994 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1995 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1996 | }, 1997 | "node_modules/picomatch": { 1998 | "version": "2.3.1", 1999 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2000 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2001 | "engines": { 2002 | "node": ">=8.6" 2003 | }, 2004 | "funding": { 2005 | "url": "https://github.com/sponsors/jonschlinkert" 2006 | } 2007 | }, 2008 | "node_modules/pify": { 2009 | "version": "4.0.1", 2010 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 2011 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 2012 | "optional": true, 2013 | "engines": { 2014 | "node": ">=6" 2015 | } 2016 | }, 2017 | "node_modules/postcss": { 2018 | "version": "8.4.35", 2019 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", 2020 | "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", 2021 | "funding": [ 2022 | { 2023 | "type": "opencollective", 2024 | "url": "https://opencollective.com/postcss/" 2025 | }, 2026 | { 2027 | "type": "tidelift", 2028 | "url": "https://tidelift.com/funding/github/npm/postcss" 2029 | }, 2030 | { 2031 | "type": "github", 2032 | "url": "https://github.com/sponsors/ai" 2033 | } 2034 | ], 2035 | "dependencies": { 2036 | "nanoid": "^3.3.7", 2037 | "picocolors": "^1.0.0", 2038 | "source-map-js": "^1.0.2" 2039 | }, 2040 | "engines": { 2041 | "node": "^10 || ^12 || >=14" 2042 | } 2043 | }, 2044 | "node_modules/prr": { 2045 | "version": "1.0.1", 2046 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 2047 | "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", 2048 | "optional": true 2049 | }, 2050 | "node_modules/react": { 2051 | "version": "18.2.0", 2052 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 2053 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 2054 | "dependencies": { 2055 | "loose-envify": "^1.1.0" 2056 | }, 2057 | "engines": { 2058 | "node": ">=0.10.0" 2059 | } 2060 | }, 2061 | "node_modules/react-dom": { 2062 | "version": "18.2.0", 2063 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 2064 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 2065 | "dependencies": { 2066 | "loose-envify": "^1.1.0", 2067 | "scheduler": "^0.23.0" 2068 | }, 2069 | "peerDependencies": { 2070 | "react": "^18.2.0" 2071 | } 2072 | }, 2073 | "node_modules/react-refresh": { 2074 | "version": "0.14.0", 2075 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", 2076 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", 2077 | "dev": true, 2078 | "engines": { 2079 | "node": ">=0.10.0" 2080 | } 2081 | }, 2082 | "node_modules/react-router": { 2083 | "version": "6.22.3", 2084 | "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", 2085 | "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", 2086 | "dependencies": { 2087 | "@remix-run/router": "1.15.3" 2088 | }, 2089 | "engines": { 2090 | "node": ">=14.0.0" 2091 | }, 2092 | "peerDependencies": { 2093 | "react": ">=16.8" 2094 | } 2095 | }, 2096 | "node_modules/react-router-dom": { 2097 | "version": "6.22.3", 2098 | "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", 2099 | "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", 2100 | "dependencies": { 2101 | "@remix-run/router": "1.15.3", 2102 | "react-router": "6.22.3" 2103 | }, 2104 | "engines": { 2105 | "node": ">=14.0.0" 2106 | }, 2107 | "peerDependencies": { 2108 | "react": ">=16.8", 2109 | "react-dom": ">=16.8" 2110 | } 2111 | }, 2112 | "node_modules/resolve-from": { 2113 | "version": "4.0.0", 2114 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2115 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2116 | "engines": { 2117 | "node": ">=4" 2118 | } 2119 | }, 2120 | "node_modules/rollup": { 2121 | "version": "4.12.1", 2122 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.1.tgz", 2123 | "integrity": "sha512-ggqQKvx/PsB0FaWXhIvVkSWh7a/PCLQAsMjBc+nA2M8Rv2/HG0X6zvixAB7KyZBRtifBUhy5k8voQX/mRnABPg==", 2124 | "dependencies": { 2125 | "@types/estree": "1.0.5" 2126 | }, 2127 | "bin": { 2128 | "rollup": "dist/bin/rollup" 2129 | }, 2130 | "engines": { 2131 | "node": ">=18.0.0", 2132 | "npm": ">=8.0.0" 2133 | }, 2134 | "optionalDependencies": { 2135 | "@rollup/rollup-android-arm-eabi": "4.12.1", 2136 | "@rollup/rollup-android-arm64": "4.12.1", 2137 | "@rollup/rollup-darwin-arm64": "4.12.1", 2138 | "@rollup/rollup-darwin-x64": "4.12.1", 2139 | "@rollup/rollup-linux-arm-gnueabihf": "4.12.1", 2140 | "@rollup/rollup-linux-arm64-gnu": "4.12.1", 2141 | "@rollup/rollup-linux-arm64-musl": "4.12.1", 2142 | "@rollup/rollup-linux-riscv64-gnu": "4.12.1", 2143 | "@rollup/rollup-linux-x64-gnu": "4.12.1", 2144 | "@rollup/rollup-linux-x64-musl": "4.12.1", 2145 | "@rollup/rollup-win32-arm64-msvc": "4.12.1", 2146 | "@rollup/rollup-win32-ia32-msvc": "4.12.1", 2147 | "@rollup/rollup-win32-x64-msvc": "4.12.1", 2148 | "fsevents": "~2.3.2" 2149 | } 2150 | }, 2151 | "node_modules/safer-buffer": { 2152 | "version": "2.1.2", 2153 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2154 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2155 | "optional": true 2156 | }, 2157 | "node_modules/sax": { 2158 | "version": "1.3.0", 2159 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", 2160 | "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", 2161 | "optional": true 2162 | }, 2163 | "node_modules/scheduler": { 2164 | "version": "0.23.0", 2165 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 2166 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 2167 | "dependencies": { 2168 | "loose-envify": "^1.1.0" 2169 | } 2170 | }, 2171 | "node_modules/semver": { 2172 | "version": "6.3.1", 2173 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 2174 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 2175 | "bin": { 2176 | "semver": "bin/semver.js" 2177 | } 2178 | }, 2179 | "node_modules/snake-case": { 2180 | "version": "3.0.4", 2181 | "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", 2182 | "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", 2183 | "dependencies": { 2184 | "dot-case": "^3.0.4", 2185 | "tslib": "^2.0.3" 2186 | } 2187 | }, 2188 | "node_modules/source-map": { 2189 | "version": "0.6.1", 2190 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2191 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2192 | "optional": true, 2193 | "engines": { 2194 | "node": ">=0.10.0" 2195 | } 2196 | }, 2197 | "node_modules/source-map-js": { 2198 | "version": "1.0.2", 2199 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2200 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 2201 | "engines": { 2202 | "node": ">=0.10.0" 2203 | } 2204 | }, 2205 | "node_modules/supports-color": { 2206 | "version": "5.5.0", 2207 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2208 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2209 | "dependencies": { 2210 | "has-flag": "^3.0.0" 2211 | }, 2212 | "engines": { 2213 | "node": ">=4" 2214 | } 2215 | }, 2216 | "node_modules/svg-parser": { 2217 | "version": "2.0.4", 2218 | "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", 2219 | "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" 2220 | }, 2221 | "node_modules/to-fast-properties": { 2222 | "version": "2.0.0", 2223 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2224 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 2225 | "engines": { 2226 | "node": ">=4" 2227 | } 2228 | }, 2229 | "node_modules/tslib": { 2230 | "version": "2.6.2", 2231 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 2232 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" 2233 | }, 2234 | "node_modules/update-browserslist-db": { 2235 | "version": "1.0.13", 2236 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", 2237 | "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", 2238 | "funding": [ 2239 | { 2240 | "type": "opencollective", 2241 | "url": "https://opencollective.com/browserslist" 2242 | }, 2243 | { 2244 | "type": "tidelift", 2245 | "url": "https://tidelift.com/funding/github/npm/browserslist" 2246 | }, 2247 | { 2248 | "type": "github", 2249 | "url": "https://github.com/sponsors/ai" 2250 | } 2251 | ], 2252 | "dependencies": { 2253 | "escalade": "^3.1.1", 2254 | "picocolors": "^1.0.0" 2255 | }, 2256 | "bin": { 2257 | "update-browserslist-db": "cli.js" 2258 | }, 2259 | "peerDependencies": { 2260 | "browserslist": ">= 4.21.0" 2261 | } 2262 | }, 2263 | "node_modules/vite": { 2264 | "version": "5.1.5", 2265 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.5.tgz", 2266 | "integrity": "sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==", 2267 | "dependencies": { 2268 | "esbuild": "^0.19.3", 2269 | "postcss": "^8.4.35", 2270 | "rollup": "^4.2.0" 2271 | }, 2272 | "bin": { 2273 | "vite": "bin/vite.js" 2274 | }, 2275 | "engines": { 2276 | "node": "^18.0.0 || >=20.0.0" 2277 | }, 2278 | "funding": { 2279 | "url": "https://github.com/vitejs/vite?sponsor=1" 2280 | }, 2281 | "optionalDependencies": { 2282 | "fsevents": "~2.3.3" 2283 | }, 2284 | "peerDependencies": { 2285 | "@types/node": "^18.0.0 || >=20.0.0", 2286 | "less": "*", 2287 | "lightningcss": "^1.21.0", 2288 | "sass": "*", 2289 | "stylus": "*", 2290 | "sugarss": "*", 2291 | "terser": "^5.4.0" 2292 | }, 2293 | "peerDependenciesMeta": { 2294 | "@types/node": { 2295 | "optional": true 2296 | }, 2297 | "less": { 2298 | "optional": true 2299 | }, 2300 | "lightningcss": { 2301 | "optional": true 2302 | }, 2303 | "sass": { 2304 | "optional": true 2305 | }, 2306 | "stylus": { 2307 | "optional": true 2308 | }, 2309 | "sugarss": { 2310 | "optional": true 2311 | }, 2312 | "terser": { 2313 | "optional": true 2314 | } 2315 | } 2316 | }, 2317 | "node_modules/vite-plugin-svgr": { 2318 | "version": "4.2.0", 2319 | "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.2.0.tgz", 2320 | "integrity": "sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==", 2321 | "dependencies": { 2322 | "@rollup/pluginutils": "^5.0.5", 2323 | "@svgr/core": "^8.1.0", 2324 | "@svgr/plugin-jsx": "^8.1.0" 2325 | }, 2326 | "peerDependencies": { 2327 | "vite": "^2.6.0 || 3 || 4 || 5" 2328 | } 2329 | }, 2330 | "node_modules/yallist": { 2331 | "version": "3.1.1", 2332 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 2333 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" 2334 | } 2335 | } 2336 | } 2337 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "motrix_rs", 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 | "tauri": "tauri", 11 | "icon": "tauri icon ./src-tauri/icons/icon-origin.png" 12 | }, 13 | "dependencies": { 14 | "@tauri-apps/api": "^1", 15 | "classnames": "^2.5.1", 16 | "normalize.css": "^8.0.1", 17 | "react": "^18.2.0", 18 | "react-dom": "^18.2.0", 19 | "react-router-dom": "^6.22.3", 20 | "vite-plugin-svgr": "^4.2.0" 21 | }, 22 | "devDependencies": { 23 | "@tauri-apps/cli": "^1", 24 | "@vitejs/plugin-react": "^4.2.1", 25 | "less": "^4.2.0", 26 | "vite": "^5.0.0" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /public/tauri.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src-tauri/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | 5 | -------------------------------------------------------------------------------- /src-tauri/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "motrix_rs" 3 | version = "0.0.0" 4 | description = "A Tauri App" 5 | authors = ["you"] 6 | edition = "2021" 7 | 8 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 9 | 10 | [build-dependencies] 11 | tauri-build = { version = "1", features = [] } 12 | 13 | [dependencies] 14 | tauri = { version = "1", features = [ 15 | "system-tray", 16 | "icon-png", 17 | "path-all", 18 | "shell-sidecar", 19 | "macos-private-api", 20 | "process-command-api", 21 | "window-start-dragging", 22 | "shell-open", 23 | ] } 24 | serde = { version = "1", features = ["derive"] } 25 | serde_json = "1" 26 | window-vibrancy = "0.4" 27 | 28 | [features] 29 | # This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!! 30 | custom-protocol = ["tauri/custom-protocol"] 31 | -------------------------------------------------------------------------------- /src-tauri/binaries/aria2c-aarch64-apple-darwin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/binaries/aria2c-aarch64-apple-darwin -------------------------------------------------------------------------------- /src-tauri/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /src-tauri/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/128x128.png -------------------------------------------------------------------------------- /src-tauri/icons/128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/128x128@2x.png -------------------------------------------------------------------------------- /src-tauri/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/32x32.png -------------------------------------------------------------------------------- /src-tauri/icons/Square107x107Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/Square107x107Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square142x142Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/Square142x142Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/Square150x150Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square284x284Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/Square284x284Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square30x30Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/Square30x30Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square310x310Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/Square310x310Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square44x44Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/Square44x44Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square71x71Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/Square71x71Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square89x89Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/Square89x89Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/StoreLogo.png -------------------------------------------------------------------------------- /src-tauri/icons/creativity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/creativity.png -------------------------------------------------------------------------------- /src-tauri/icons/icon-origin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/icon-origin.png -------------------------------------------------------------------------------- /src-tauri/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/icon.icns -------------------------------------------------------------------------------- /src-tauri/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/icon.ico -------------------------------------------------------------------------------- /src-tauri/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src-tauri/icons/icon.png -------------------------------------------------------------------------------- /src-tauri/resources/aria2.conf: -------------------------------------------------------------------------------- 1 | ############################### 2 | # Motrix macOS Aria2 config file 3 | # 4 | # @see https://aria2.github.io/manual/en/html/aria2c.html 5 | # 6 | ############################### 7 | 8 | 9 | ################ RPC ################ 10 | # Enable JSON-RPC/XML-RPC server. 11 | enable-rpc=true 12 | # Add Access-Control-Allow-Origin header field with value * to the RPC response. 13 | rpc-allow-origin-all=true 14 | # Listen incoming JSON-RPC/XML-RPC requests on all network interfaces. 15 | rpc-listen-all=true 16 | 17 | 18 | ################ File system ################ 19 | # Save a control file(*.aria2) every SEC seconds. 20 | auto-save-interval=10 21 | # Enable disk cache. 22 | disk-cache=64M 23 | # Specify file allocation method. 24 | file-allocation=none 25 | # No file allocation is made for files whose size is smaller than SIZE 26 | no-file-allocation-limit=64M 27 | # Save error/unfinished downloads to a file specified by --save-session option every SEC seconds. 28 | save-session-interval=10 29 | 30 | 31 | ################ Task ################ 32 | # Exclude seed only downloads when counting concurrent active downloads 33 | bt-detach-seed-only=true 34 | # Verify the peer using certificates specified in --ca-certificate option. 35 | check-certificate=false 36 | # If aria2 receives "file not found" status from the remote HTTP/FTP servers NUM times 37 | # without getting a single byte, then force the download to fail. 38 | max-file-not-found=10 39 | # Set number of tries. 40 | max-tries=0 41 | # Set the seconds to wait between retries. When SEC > 0, aria2 will retry downloads when the HTTP server returns a 503 response. 42 | retry-wait=10 43 | # Set the connect timeout in seconds to establish connection to HTTP/FTP/proxy server. After the connection is established, this option makes no effect and --timeout option is used instead. 44 | connect-timeout=10 45 | # Set timeout in seconds. 46 | timeout=10 47 | # aria2 does not split less than 2*SIZE byte range. 48 | min-split-size=1M 49 | # Send Accept: deflate, gzip request header. 50 | http-accept-gzip=true 51 | # Retrieve timestamp of the remote file from the remote HTTP/FTP server and if it is available, apply it to the local file. 52 | remote-time=true 53 | # Set interval in seconds to output download progress summary. Setting 0 suppresses the output. 54 | summary-interval=0 55 | # Handle quoted string in Content-Disposition header as UTF-8 instead of ISO-8859-1, for example, the filename parameter, but not the extended version filename*. 56 | content-disposition-default-utf8=true 57 | 58 | 59 | ################ BT Task ################ 60 | # Enable Local Peer Discovery. 61 | bt-enable-lpd=true 62 | # Requires BitTorrent message payload encryption with arc4. 63 | # bt-force-encryption=true 64 | # If true is given, after hash check using --check-integrity option and file is complete, continue to seed file. 65 | bt-hash-check-seed=true 66 | # Specify the maximum number of peers per torrent. 67 | bt-max-peers=128 68 | # Try to download first and last pieces of each file first. This is useful for previewing files. 69 | bt-prioritize-piece=head 70 | # Removes the unselected files when download is completed in BitTorrent. 71 | bt-remove-unselected-file=true 72 | # Seed previously downloaded files without verifying piece hashes. 73 | bt-seed-unverified=false 74 | # Set the connect timeout in seconds to establish connection to tracker. After the connection is established, this option makes no effect and --bt-tracker-timeout option is used instead. 75 | bt-tracker-connect-timeout=10 76 | # Set timeout in seconds. 77 | bt-tracker-timeout=10 78 | # Set host and port as an entry point to IPv4 DHT network. 79 | dht-entry-point=dht.transmissionbt.com:6881 80 | # Set host and port as an entry point to IPv6 DHT network. 81 | dht-entry-point6=dht.transmissionbt.com:6881 82 | # Enable IPv4 DHT functionality. It also enables UDP tracker support. 83 | enable-dht=true 84 | # Enable IPv6 DHT functionality. 85 | enable-dht6=true 86 | # Enable Peer Exchange extension. 87 | enable-peer-exchange=true 88 | # Specify the string used during the bitorrent extended handshake for the peer's client version. 89 | peer-agent=Transmission/3.00 90 | # Specify the prefix of peer ID. 91 | peer-id-prefix=-TR3000- 92 | -------------------------------------------------------------------------------- /src-tauri/src/main.rs: -------------------------------------------------------------------------------- 1 | // Prevents additional console window on Windows in release, DO NOT REMOVE!! 2 | #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] 3 | 4 | use tauri::{ 5 | api::process::{Command, CommandEvent}, 6 | AppHandle, CustomMenuItem, Icon, Manager, SystemTray, SystemTrayMenu, SystemTrayMenuItem, 7 | }; 8 | 9 | // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command 10 | #[tauri::command] 11 | fn chagen_system_tray_icon(app_handle: AppHandle) { 12 | let tray_handle = app_handle.tray_handle(); 13 | // 设置新的系统托盘图标 14 | println!("dddd"); 15 | 16 | if let Err(e) = tray_handle.set_icon(tauri::Icon::Raw( 17 | include_bytes!("../icons/creativity.png").to_vec(), 18 | )) { 19 | eprintln!("Failed to set new system tray icon: {:?}", e); 20 | } 21 | } 22 | 23 | #[tauri::command] 24 | fn start_aria2c(app: AppHandle, window: tauri::Window, arg1: String) { 25 | let resource_path = app 26 | .path_resolver() 27 | .resolve_resource("resources/aria2.conf") 28 | .expect("failed to resolve resource"); 29 | let resource_path = resource_path.to_str().unwrap(); 30 | let (mut rx, mut child) = Command::new_sidecar("aria2c") 31 | .expect("failed to create `aria2c` binary command") 32 | .args([format!("--conf-path={resource_path}")]) 33 | .spawn() 34 | .expect("Failed to spawn sidecar"); 35 | 36 | println!("{}, {}", child.pid(), arg1); 37 | 38 | tauri::async_runtime::spawn(async move { 39 | // read events such as stdout 40 | while let Some(event) = rx.recv().await { 41 | match event { 42 | CommandEvent::Stderr(line) => { 43 | window 44 | .emit("message", Some(format!("'{}'", line))) 45 | .expect("failed to emit event"); 46 | // write to stdin 47 | child.write("message from Rust\n".as_bytes()).unwrap(); 48 | } 49 | CommandEvent::Stdout(line) => { 50 | window 51 | .emit("message", Some(format!("'{}'", line))) 52 | .expect("failed to emit event"); 53 | // write to stdin 54 | child.write("message from Rust\n".as_bytes()).unwrap(); 55 | } 56 | CommandEvent::Error(_) => todo!(), 57 | CommandEvent::Terminated(_) => todo!(), 58 | _ => todo!(), 59 | } 60 | } 61 | }); 62 | } 63 | 64 | mod setup; 65 | 66 | fn main() { 67 | let quit = CustomMenuItem::new("quit".to_string(), "退出"); 68 | let hide = CustomMenuItem::new("hide".to_string(), "隐藏"); 69 | let tray_menu = SystemTrayMenu::new() 70 | .add_item(quit) 71 | .add_native_item(SystemTrayMenuItem::Separator) 72 | .add_item(hide); 73 | tauri::Builder::default() 74 | .system_tray(SystemTray::new().with_menu(tray_menu)) 75 | .setup(setup::init) 76 | .invoke_handler(tauri::generate_handler![ 77 | start_aria2c, 78 | chagen_system_tray_icon 79 | ]) 80 | .run(tauri::generate_context!()) 81 | .expect("error while running tauri application"); 82 | } 83 | -------------------------------------------------------------------------------- /src-tauri/src/setup.rs: -------------------------------------------------------------------------------- 1 | use tauri::{ 2 | api::process::{Command, CommandEvent}, 3 | App, Manager, 4 | }; 5 | use window_vibrancy::NSVisualEffectMaterial; 6 | /// setup 7 | pub fn init(app: &mut App) -> std::result::Result<(), Box> { 8 | set_blur_material(app); 9 | // start_aria2c(app); 10 | Ok(()) 11 | } 12 | 13 | fn set_blur_material(app: &mut App) { 14 | let window = app.get_window("main").unwrap(); 15 | // 仅在 macOS 下执行 16 | #[cfg(target_os = "macos")] 17 | window_vibrancy::apply_vibrancy(window, NSVisualEffectMaterial::HudWindow, None, None) 18 | .expect("Unsupported platform! 'apply_vibrancy' is only supported on macOS"); 19 | 20 | // 仅在 windows 下执行 21 | #[cfg(target_os = "windows")] 22 | window_vibrancy::apply_blur(window, Some((18, 18, 18, 125))) 23 | .expect("Unsupported platform! 'apply_blur' is only supported on Windows"); 24 | } 25 | 26 | pub fn start_aria2c(app: &mut App) { 27 | let window = app.get_window("main").unwrap(); 28 | let resource_path = app 29 | .path_resolver() 30 | .resolve_resource("resources/aria2.conf") 31 | .expect("failed to resolve resource"); 32 | let resource_path = resource_path.to_str().unwrap(); 33 | let (mut rx, mut child) = Command::new_sidecar("aria2c") 34 | .expect("failed to create `aria2c` binary command") 35 | .args([format!("--conf-path={resource_path}")]) 36 | .spawn() 37 | .expect("Failed to spawn sidecar"); 38 | 39 | println!("{}", child.pid()); 40 | 41 | tauri::async_runtime::spawn(async move { 42 | // read events such as stdout 43 | while let Some(event) = rx.recv().await { 44 | match event { 45 | CommandEvent::Stderr(line) => { 46 | window 47 | .emit("message", Some(format!("'{}'", line))) 48 | .expect("failed to emit event"); 49 | // write to stdin 50 | child.write("message from Rust\n".as_bytes()).unwrap(); 51 | } 52 | CommandEvent::Stdout(line) => { 53 | window 54 | .emit("message", Some(format!("'{}'", line))) 55 | .expect("failed to emit event"); 56 | // write to stdin 57 | child.write("message from Rust\n".as_bytes()).unwrap(); 58 | } 59 | CommandEvent::Error(_) => todo!(), 60 | CommandEvent::Terminated(_) => todo!(), 61 | _ => todo!(), 62 | } 63 | } 64 | }); 65 | } 66 | -------------------------------------------------------------------------------- /src-tauri/tauri.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "beforeDevCommand": "npm run dev", 4 | "beforeBuildCommand": "npm run build", 5 | "devPath": "http://localhost:1420", 6 | "distDir": "../dist" 7 | }, 8 | "package": { 9 | "productName": "motrix_rs", 10 | "version": "0.0.0" 11 | }, 12 | "tauri": { 13 | "macOSPrivateApi": true, 14 | "systemTray": { 15 | "iconPath": "icons/icon.png", 16 | "iconAsTemplate": true 17 | }, 18 | "allowlist": { 19 | "all": false, 20 | "shell": { 21 | "all": false, 22 | "open": true, 23 | "sidecar": true, 24 | "scope": [ 25 | { 26 | "name": "binaries/aria2c", 27 | "sidecar": true, 28 | "args": [ 29 | { 30 | "validator": "\\S+" 31 | } 32 | ] 33 | } 34 | ] 35 | }, 36 | "path": { 37 | "all": true 38 | }, 39 | "fs": { 40 | "scope": ["$RESOURCE/*"] 41 | }, 42 | "window": { 43 | "startDragging": true 44 | } 45 | }, 46 | "windows": [ 47 | { 48 | "title": "motrix_rs", 49 | "width": 1024, 50 | "height": 760, 51 | "titleBarStyle": "Overlay", 52 | "hiddenTitle": true, 53 | "transparent": true 54 | } 55 | ], 56 | "security": { 57 | "csp": null 58 | }, 59 | "bundle": { 60 | "active": true, 61 | "targets": "all", 62 | "identifier": "site.heng-chuang.motrix-rs", 63 | "icon": [ 64 | "icons/32x32.png", 65 | "icons/128x128.png", 66 | "icons/128x128@2x.png", 67 | "icons/icon.icns", 68 | "icons/icon.ico" 69 | ], 70 | "externalBin": ["binaries/aria2c"], 71 | "resources": ["resources/aria2.conf"] 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/App.jsx: -------------------------------------------------------------------------------- 1 | import { Route, Routes, Navigate } from "react-router-dom"; 2 | import Layout from "./components/layout"; 3 | import Tasks from "./pages/tasks"; 4 | import Settings from "./pages/settings"; 5 | 6 | 7 | function App() { 8 | return ( 9 | 10 | }> 11 | }> 12 | }> 13 | }> 14 | 15 | 16 | ); 17 | } 18 | 19 | export default App; 20 | -------------------------------------------------------------------------------- /src/app.jsx: -------------------------------------------------------------------------------- 1 | import { Route, Routes, Navigate } from "react-router-dom"; 2 | import Layout from "./components/layout"; 3 | import Tasks from "./pages/tasks"; 4 | import Settings from "./pages/settings"; 5 | 6 | 7 | function App() { 8 | return ( 9 | 10 | }> 11 | }> 12 | }> 13 | }> 14 | 15 | 16 | ); 17 | } 18 | 19 | export default App; 20 | -------------------------------------------------------------------------------- /src/assets/app-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src/assets/app-icon.png -------------------------------------------------------------------------------- /src/assets/icons/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/audio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/delete.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/dice.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/engine-mode-max.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/folder.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/inbox.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/info-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/info-square.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/magnet.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/menu-about.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/menu-add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/menu-preference.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/menu-task.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/more.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/node.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/preference-advanced.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/preference-basic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/purge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/refresh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/speedometer.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/sync.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/task-done.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/task-history.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/task-pause-line.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/task-pause.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/task-restart.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/task-start-line.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/task-start.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/task-stop-line.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/task-stop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/trash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/video.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/assets/icons/win-close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/win-maximize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/win-minimize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/logo-mini.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/no-task.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /src/assets/theme-auto@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src/assets/theme-auto@2x.png -------------------------------------------------------------------------------- /src/assets/theme-dark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src/assets/theme-dark@2x.png -------------------------------------------------------------------------------- /src/assets/theme-light@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src/assets/theme-light@2x.png -------------------------------------------------------------------------------- /src/components/layout/index.jsx: -------------------------------------------------------------------------------- 1 | import { NavLink, Outlet } from "react-router-dom"; 2 | import cls from "classnames" 3 | import classnames from "classnames/bind"; 4 | 5 | import LogoMini from "@/assets/logo-mini.svg?react" 6 | import MenuTask from "@/assets/icons/menu-task.svg?react" 7 | import MenuAdd from "@/assets/icons/menu-add.svg?react" 8 | import MenuPreference from "@/assets/icons/menu-preference.svg?react" 9 | import MenuAbout from "@/assets/icons/menu-about.svg?react" 10 | 11 | import style from './index.module.less'; 12 | 13 | const cx = classnames.bind(style) 14 | 15 | function Layout() { 16 | return
17 |
18 |
19 |
20 |
21 | 22 | 23 | 24 |
25 | 26 |
27 | 28 |
29 |
30 |
31 | 32 |
33 |
34 | 35 |
36 | 37 |
38 |
39 | 40 |
41 | 42 |
43 |
44 |
45 | 46 |
47 |
48 |
49 | } 50 | export default Layout; -------------------------------------------------------------------------------- /src/components/layout/index.module.less: -------------------------------------------------------------------------------- 1 | .container-wrap { 2 | display: flex; 3 | flex-direction: column; 4 | height: 100vh; 5 | position: relative; 6 | } 7 | 8 | .drag-region { 9 | height: 30px; 10 | position: absolute; 11 | top: 0; 12 | left: 0; 13 | right: 0; 14 | } 15 | 16 | .container { 17 | display: flex; 18 | flex: 1; 19 | } 20 | 21 | .left { 22 | width: 78px; 23 | display: flex; 24 | align-items: center; 25 | background-color: rgba(0, 0, 0, 0.65); 26 | flex-direction: column; 27 | 28 | .logo { 29 | margin-top: 40px; 30 | height: 32px; 31 | a { 32 | color: #fff; 33 | } 34 | } 35 | .icon-wrap { 36 | width: 32px; 37 | height: 32px; 38 | display: flex; 39 | align-items: center; 40 | justify-content: center; 41 | transition: background-color .25s; 42 | border-radius: 16px; 43 | &:hover { 44 | background-color: hsla(0,0%,100%,.15); 45 | } 46 | > svg { 47 | width: 20px; 48 | height: 20px; 49 | } 50 | } 51 | .icon-wrap-last { 52 | margin-bottom: 24px; 53 | } 54 | .icon { 55 | color: #fff; 56 | } 57 | } 58 | 59 | .right { 60 | background-color: #fff; 61 | flex: 1; 62 | } -------------------------------------------------------------------------------- /src/components/logo/index.jsx: -------------------------------------------------------------------------------- 1 | function Logo() { 2 | return 13 | } 14 | 15 | export default Logo; -------------------------------------------------------------------------------- /src/main.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import { BrowserRouter } from "react-router-dom"; 4 | // sidecar 5 | import { Command } from "@tauri-apps/api/shell"; 6 | import { resolveResource } from "@tauri-apps/api/path"; 7 | import { once } from "@tauri-apps/api/event"; 8 | import App from "./app"; 9 | 10 | import "normalize.css/normalize.css"; 11 | import "./style.less"; 12 | 13 | // async function startAria2c() { 14 | // const resourcePath = await resolveResource("resources/aria2.conf"); 15 | // console.log(888, resourcePath); 16 | // const command = Command.sidecar("binaries/aria2c", [ 17 | // "--conf-path=" + resourcePath, 18 | // ]); 19 | // const child = await command.spawn(); 20 | // console.log(child); 21 | // command.execute(); 22 | // once("tauri://close-requested", () => { 23 | // child.kill(); 24 | // }); 25 | // } 26 | // startAria2c(); 27 | 28 | ReactDOM.createRoot(document.getElementById("root")).render( 29 | 30 | 31 | 32 | 33 | 34 | ); 35 | -------------------------------------------------------------------------------- /src/pages/settings/index.jsx: -------------------------------------------------------------------------------- 1 | function Settings() { 2 | return
设置页面
3 | } 4 | 5 | export default Settings; 6 | -------------------------------------------------------------------------------- /src/pages/tasks/index.jsx: -------------------------------------------------------------------------------- 1 | import { invoke } from "@tauri-apps/api/tauri"; 2 | 3 | function Tasks() { 4 | return ( 5 |
6 | 任务列表 7 | 14 |
15 | 22 |
23 | ); 24 | } 25 | 26 | export default Tasks; 27 | -------------------------------------------------------------------------------- /src/style.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zheng-chuang/motrix_rs/5d50bf19c7e7cc250d69b2b6f58fefd3e2dd1fdf/src/style.less -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import react from "@vitejs/plugin-react"; 3 | import svgr from 'vite-plugin-svgr' 4 | import { join } from "path"; 5 | 6 | 7 | // https://vitejs.dev/config/ 8 | export default defineConfig(async () => ({ 9 | resolve: { 10 | alias: { 11 | '@': join(__dirname, "src"), 12 | } 13 | }, 14 | plugins: [ 15 | react(), 16 | svgr() 17 | ], 18 | 19 | // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` 20 | // 21 | // 1. prevent vite from obscuring rust errors 22 | clearScreen: false, 23 | // 2. tauri expects a fixed port, fail if that port is not available 24 | server: { 25 | port: 1420, 26 | strictPort: true, 27 | watch: { 28 | // 3. tell vite to ignore watching `src-tauri` 29 | ignored: ["**/src-tauri/**"], 30 | }, 31 | }, 32 | })); 33 | --------------------------------------------------------------------------------