├── .gitignore ├── .vscode └── extensions.json ├── LICENSE ├── README.md ├── index.html ├── package.json ├── pnpm-lock.yaml ├── public └── vite.svg ├── src ├── App.vue ├── assets │ ├── copy.svg │ ├── delete.svg │ ├── favor.svg │ ├── moon.svg │ ├── openai.svg │ ├── repeat.svg │ ├── settings.svg │ └── user.svg ├── components │ └── ChatGptOnline.vue ├── main.js ├── style.css └── utils │ ├── micromark.js │ ├── request.js │ └── storage.js └── 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": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] 3 | } 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 weekend-project-space 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # chatgpt-online 2 | 3 | > Based on gpt-3.5-turbo, data is stored locally 4 | 5 | ## Demo 6 | 7 | [chatgpt-online](https://weekendproject.space/chat-gpt-online.html) 8 | 9 | ## Use 10 | ``` 11 | pnpm install 12 | 13 | pnpm run dev 14 | ``` 15 | 16 | ## Deploy 17 | 18 | Deploy With Vercel 19 | 20 | [![deploy](https://camo.githubusercontent.com/5e471e99e8e022cf454693e38ec843036ec6301e27ee1e1fa10325b1cb720584/68747470733a2f2f76657263656c2e636f6d2f627574746f6e)](https://vercel.com/new/clone?repository-url=https://github.com/weekend-project-space/chatgpt-online) 21 | 22 | ## LICENSE 23 | LICENSE: MIT 24 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ChatGPT 在线体验 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chatgpt-online", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "less": "^4.1.3", 13 | "lodash-es": "^4.17.21", 14 | "marked": "^4.2.12", 15 | "micromark": "^3.1.0", 16 | "micromark-extension-gfm": "^2.0.1", 17 | "micromark-extension-math": "^2.0.2", 18 | "vue": "^3.2.45" 19 | }, 20 | "devDependencies": { 21 | "@vitejs/plugin-vue": "^4.0.0", 22 | "vite": "^4.1.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@vitejs/plugin-vue': ^4.0.0 5 | less: ^4.1.3 6 | lodash-es: ^4.17.21 7 | marked: ^4.2.12 8 | micromark: ^3.1.0 9 | micromark-extension-gfm: ^2.0.1 10 | micromark-extension-math: ^2.0.2 11 | vite: ^4.1.0 12 | vue: ^3.2.45 13 | 14 | dependencies: 15 | less: 4.1.3 16 | lodash-es: 4.17.21 17 | marked: 4.3.0 18 | micromark: 3.1.0 19 | micromark-extension-gfm: 2.0.1 20 | micromark-extension-math: 2.0.2 21 | vue: 3.2.47 22 | 23 | devDependencies: 24 | '@vitejs/plugin-vue': 4.1.0_vite@4.2.1+vue@3.2.47 25 | vite: 4.2.1_less@4.1.3 26 | 27 | packages: 28 | 29 | /@babel/helper-string-parser/7.19.4: 30 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} 31 | engines: {node: '>=6.9.0'} 32 | 33 | /@babel/helper-validator-identifier/7.19.1: 34 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 35 | engines: {node: '>=6.9.0'} 36 | 37 | /@babel/parser/7.21.3: 38 | resolution: {integrity: sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==} 39 | engines: {node: '>=6.0.0'} 40 | hasBin: true 41 | dependencies: 42 | '@babel/types': 7.21.3 43 | 44 | /@babel/types/7.21.3: 45 | resolution: {integrity: sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==} 46 | engines: {node: '>=6.9.0'} 47 | dependencies: 48 | '@babel/helper-string-parser': 7.19.4 49 | '@babel/helper-validator-identifier': 7.19.1 50 | to-fast-properties: 2.0.0 51 | 52 | /@esbuild/android-arm/0.17.12: 53 | resolution: {integrity: sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==} 54 | engines: {node: '>=12'} 55 | cpu: [arm] 56 | os: [android] 57 | requiresBuild: true 58 | dev: true 59 | optional: true 60 | 61 | /@esbuild/android-arm64/0.17.12: 62 | resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} 63 | engines: {node: '>=12'} 64 | cpu: [arm64] 65 | os: [android] 66 | requiresBuild: true 67 | dev: true 68 | optional: true 69 | 70 | /@esbuild/android-x64/0.17.12: 71 | resolution: {integrity: sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==} 72 | engines: {node: '>=12'} 73 | cpu: [x64] 74 | os: [android] 75 | requiresBuild: true 76 | dev: true 77 | optional: true 78 | 79 | /@esbuild/darwin-arm64/0.17.12: 80 | resolution: {integrity: sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==} 81 | engines: {node: '>=12'} 82 | cpu: [arm64] 83 | os: [darwin] 84 | requiresBuild: true 85 | dev: true 86 | optional: true 87 | 88 | /@esbuild/darwin-x64/0.17.12: 89 | resolution: {integrity: sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==} 90 | engines: {node: '>=12'} 91 | cpu: [x64] 92 | os: [darwin] 93 | requiresBuild: true 94 | dev: true 95 | optional: true 96 | 97 | /@esbuild/freebsd-arm64/0.17.12: 98 | resolution: {integrity: sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==} 99 | engines: {node: '>=12'} 100 | cpu: [arm64] 101 | os: [freebsd] 102 | requiresBuild: true 103 | dev: true 104 | optional: true 105 | 106 | /@esbuild/freebsd-x64/0.17.12: 107 | resolution: {integrity: sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==} 108 | engines: {node: '>=12'} 109 | cpu: [x64] 110 | os: [freebsd] 111 | requiresBuild: true 112 | dev: true 113 | optional: true 114 | 115 | /@esbuild/linux-arm/0.17.12: 116 | resolution: {integrity: sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==} 117 | engines: {node: '>=12'} 118 | cpu: [arm] 119 | os: [linux] 120 | requiresBuild: true 121 | dev: true 122 | optional: true 123 | 124 | /@esbuild/linux-arm64/0.17.12: 125 | resolution: {integrity: sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==} 126 | engines: {node: '>=12'} 127 | cpu: [arm64] 128 | os: [linux] 129 | requiresBuild: true 130 | dev: true 131 | optional: true 132 | 133 | /@esbuild/linux-ia32/0.17.12: 134 | resolution: {integrity: sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==} 135 | engines: {node: '>=12'} 136 | cpu: [ia32] 137 | os: [linux] 138 | requiresBuild: true 139 | dev: true 140 | optional: true 141 | 142 | /@esbuild/linux-loong64/0.17.12: 143 | resolution: {integrity: sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==} 144 | engines: {node: '>=12'} 145 | cpu: [loong64] 146 | os: [linux] 147 | requiresBuild: true 148 | dev: true 149 | optional: true 150 | 151 | /@esbuild/linux-mips64el/0.17.12: 152 | resolution: {integrity: sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==} 153 | engines: {node: '>=12'} 154 | cpu: [mips64el] 155 | os: [linux] 156 | requiresBuild: true 157 | dev: true 158 | optional: true 159 | 160 | /@esbuild/linux-ppc64/0.17.12: 161 | resolution: {integrity: sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==} 162 | engines: {node: '>=12'} 163 | cpu: [ppc64] 164 | os: [linux] 165 | requiresBuild: true 166 | dev: true 167 | optional: true 168 | 169 | /@esbuild/linux-riscv64/0.17.12: 170 | resolution: {integrity: sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==} 171 | engines: {node: '>=12'} 172 | cpu: [riscv64] 173 | os: [linux] 174 | requiresBuild: true 175 | dev: true 176 | optional: true 177 | 178 | /@esbuild/linux-s390x/0.17.12: 179 | resolution: {integrity: sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==} 180 | engines: {node: '>=12'} 181 | cpu: [s390x] 182 | os: [linux] 183 | requiresBuild: true 184 | dev: true 185 | optional: true 186 | 187 | /@esbuild/linux-x64/0.17.12: 188 | resolution: {integrity: sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==} 189 | engines: {node: '>=12'} 190 | cpu: [x64] 191 | os: [linux] 192 | requiresBuild: true 193 | dev: true 194 | optional: true 195 | 196 | /@esbuild/netbsd-x64/0.17.12: 197 | resolution: {integrity: sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==} 198 | engines: {node: '>=12'} 199 | cpu: [x64] 200 | os: [netbsd] 201 | requiresBuild: true 202 | dev: true 203 | optional: true 204 | 205 | /@esbuild/openbsd-x64/0.17.12: 206 | resolution: {integrity: sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==} 207 | engines: {node: '>=12'} 208 | cpu: [x64] 209 | os: [openbsd] 210 | requiresBuild: true 211 | dev: true 212 | optional: true 213 | 214 | /@esbuild/sunos-x64/0.17.12: 215 | resolution: {integrity: sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==} 216 | engines: {node: '>=12'} 217 | cpu: [x64] 218 | os: [sunos] 219 | requiresBuild: true 220 | dev: true 221 | optional: true 222 | 223 | /@esbuild/win32-arm64/0.17.12: 224 | resolution: {integrity: sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==} 225 | engines: {node: '>=12'} 226 | cpu: [arm64] 227 | os: [win32] 228 | requiresBuild: true 229 | dev: true 230 | optional: true 231 | 232 | /@esbuild/win32-ia32/0.17.12: 233 | resolution: {integrity: sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==} 234 | engines: {node: '>=12'} 235 | cpu: [ia32] 236 | os: [win32] 237 | requiresBuild: true 238 | dev: true 239 | optional: true 240 | 241 | /@esbuild/win32-x64/0.17.12: 242 | resolution: {integrity: sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==} 243 | engines: {node: '>=12'} 244 | cpu: [x64] 245 | os: [win32] 246 | requiresBuild: true 247 | dev: true 248 | optional: true 249 | 250 | /@types/debug/4.1.7: 251 | resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} 252 | dependencies: 253 | '@types/ms': 0.7.31 254 | dev: false 255 | 256 | /@types/katex/0.11.1: 257 | resolution: {integrity: sha512-DUlIj2nk0YnJdlWgsFuVKcX27MLW0KbKmGVoUHmFr+74FYYNUDAaj9ZqTADvsbE8rfxuVmSFc7KczYn5Y09ozg==} 258 | dev: false 259 | 260 | /@types/ms/0.7.31: 261 | resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} 262 | dev: false 263 | 264 | /@vitejs/plugin-vue/4.1.0_vite@4.2.1+vue@3.2.47: 265 | resolution: {integrity: sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ==} 266 | engines: {node: ^14.18.0 || >=16.0.0} 267 | peerDependencies: 268 | vite: ^4.0.0 269 | vue: ^3.2.25 270 | dependencies: 271 | vite: 4.2.1_less@4.1.3 272 | vue: 3.2.47 273 | dev: true 274 | 275 | /@vue/compiler-core/3.2.47: 276 | resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} 277 | dependencies: 278 | '@babel/parser': 7.21.3 279 | '@vue/shared': 3.2.47 280 | estree-walker: 2.0.2 281 | source-map: 0.6.1 282 | 283 | /@vue/compiler-dom/3.2.47: 284 | resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} 285 | dependencies: 286 | '@vue/compiler-core': 3.2.47 287 | '@vue/shared': 3.2.47 288 | 289 | /@vue/compiler-sfc/3.2.47: 290 | resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} 291 | dependencies: 292 | '@babel/parser': 7.21.3 293 | '@vue/compiler-core': 3.2.47 294 | '@vue/compiler-dom': 3.2.47 295 | '@vue/compiler-ssr': 3.2.47 296 | '@vue/reactivity-transform': 3.2.47 297 | '@vue/shared': 3.2.47 298 | estree-walker: 2.0.2 299 | magic-string: 0.25.9 300 | postcss: 8.4.21 301 | source-map: 0.6.1 302 | 303 | /@vue/compiler-ssr/3.2.47: 304 | resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} 305 | dependencies: 306 | '@vue/compiler-dom': 3.2.47 307 | '@vue/shared': 3.2.47 308 | 309 | /@vue/reactivity-transform/3.2.47: 310 | resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} 311 | dependencies: 312 | '@babel/parser': 7.21.3 313 | '@vue/compiler-core': 3.2.47 314 | '@vue/shared': 3.2.47 315 | estree-walker: 2.0.2 316 | magic-string: 0.25.9 317 | 318 | /@vue/reactivity/3.2.47: 319 | resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} 320 | dependencies: 321 | '@vue/shared': 3.2.47 322 | 323 | /@vue/runtime-core/3.2.47: 324 | resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==} 325 | dependencies: 326 | '@vue/reactivity': 3.2.47 327 | '@vue/shared': 3.2.47 328 | 329 | /@vue/runtime-dom/3.2.47: 330 | resolution: {integrity: sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==} 331 | dependencies: 332 | '@vue/runtime-core': 3.2.47 333 | '@vue/shared': 3.2.47 334 | csstype: 2.6.21 335 | 336 | /@vue/server-renderer/3.2.47_vue@3.2.47: 337 | resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==} 338 | peerDependencies: 339 | vue: 3.2.47 340 | dependencies: 341 | '@vue/compiler-ssr': 3.2.47 342 | '@vue/shared': 3.2.47 343 | vue: 3.2.47 344 | 345 | /@vue/shared/3.2.47: 346 | resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} 347 | 348 | /character-entities/2.0.2: 349 | resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} 350 | dev: false 351 | 352 | /commander/8.3.0: 353 | resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} 354 | engines: {node: '>= 12'} 355 | dev: false 356 | 357 | /copy-anything/2.0.6: 358 | resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} 359 | dependencies: 360 | is-what: 3.14.1 361 | 362 | /csstype/2.6.21: 363 | resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} 364 | 365 | /debug/3.2.7: 366 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 367 | peerDependencies: 368 | supports-color: '*' 369 | peerDependenciesMeta: 370 | supports-color: 371 | optional: true 372 | dependencies: 373 | ms: 2.1.3 374 | optional: true 375 | 376 | /debug/4.3.4: 377 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 378 | engines: {node: '>=6.0'} 379 | peerDependencies: 380 | supports-color: '*' 381 | peerDependenciesMeta: 382 | supports-color: 383 | optional: true 384 | dependencies: 385 | ms: 2.1.2 386 | dev: false 387 | 388 | /decode-named-character-reference/1.0.2: 389 | resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} 390 | dependencies: 391 | character-entities: 2.0.2 392 | dev: false 393 | 394 | /dequal/2.0.3: 395 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 396 | engines: {node: '>=6'} 397 | dev: false 398 | 399 | /diff/5.1.0: 400 | resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} 401 | engines: {node: '>=0.3.1'} 402 | dev: false 403 | 404 | /errno/0.1.8: 405 | resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} 406 | hasBin: true 407 | requiresBuild: true 408 | dependencies: 409 | prr: 1.0.1 410 | optional: true 411 | 412 | /esbuild/0.17.12: 413 | resolution: {integrity: sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==} 414 | engines: {node: '>=12'} 415 | hasBin: true 416 | requiresBuild: true 417 | optionalDependencies: 418 | '@esbuild/android-arm': 0.17.12 419 | '@esbuild/android-arm64': 0.17.12 420 | '@esbuild/android-x64': 0.17.12 421 | '@esbuild/darwin-arm64': 0.17.12 422 | '@esbuild/darwin-x64': 0.17.12 423 | '@esbuild/freebsd-arm64': 0.17.12 424 | '@esbuild/freebsd-x64': 0.17.12 425 | '@esbuild/linux-arm': 0.17.12 426 | '@esbuild/linux-arm64': 0.17.12 427 | '@esbuild/linux-ia32': 0.17.12 428 | '@esbuild/linux-loong64': 0.17.12 429 | '@esbuild/linux-mips64el': 0.17.12 430 | '@esbuild/linux-ppc64': 0.17.12 431 | '@esbuild/linux-riscv64': 0.17.12 432 | '@esbuild/linux-s390x': 0.17.12 433 | '@esbuild/linux-x64': 0.17.12 434 | '@esbuild/netbsd-x64': 0.17.12 435 | '@esbuild/openbsd-x64': 0.17.12 436 | '@esbuild/sunos-x64': 0.17.12 437 | '@esbuild/win32-arm64': 0.17.12 438 | '@esbuild/win32-ia32': 0.17.12 439 | '@esbuild/win32-x64': 0.17.12 440 | dev: true 441 | 442 | /estree-walker/2.0.2: 443 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 444 | 445 | /fsevents/2.3.2: 446 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 447 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 448 | os: [darwin] 449 | requiresBuild: true 450 | dev: true 451 | optional: true 452 | 453 | /function-bind/1.1.1: 454 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 455 | dev: true 456 | 457 | /graceful-fs/4.2.11: 458 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 459 | requiresBuild: true 460 | optional: true 461 | 462 | /has/1.0.3: 463 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 464 | engines: {node: '>= 0.4.0'} 465 | dependencies: 466 | function-bind: 1.1.1 467 | dev: true 468 | 469 | /iconv-lite/0.6.3: 470 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 471 | engines: {node: '>=0.10.0'} 472 | dependencies: 473 | safer-buffer: 2.1.2 474 | optional: true 475 | 476 | /image-size/0.5.5: 477 | resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} 478 | engines: {node: '>=0.10.0'} 479 | hasBin: true 480 | requiresBuild: true 481 | optional: true 482 | 483 | /is-core-module/2.11.0: 484 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 485 | dependencies: 486 | has: 1.0.3 487 | dev: true 488 | 489 | /is-what/3.14.1: 490 | resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} 491 | 492 | /katex/0.13.24: 493 | resolution: {integrity: sha512-jZxYuKCma3VS5UuxOx/rFV1QyGSl3Uy/i0kTJF3HgQ5xMinCQVF8Zd4bMY/9aI9b9A2pjIBOsjSSm68ykTAr8w==} 494 | hasBin: true 495 | dependencies: 496 | commander: 8.3.0 497 | dev: false 498 | 499 | /kleur/4.1.5: 500 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 501 | engines: {node: '>=6'} 502 | dev: false 503 | 504 | /less/4.1.3: 505 | resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==} 506 | engines: {node: '>=6'} 507 | hasBin: true 508 | dependencies: 509 | copy-anything: 2.0.6 510 | parse-node-version: 1.0.1 511 | tslib: 2.5.0 512 | optionalDependencies: 513 | errno: 0.1.8 514 | graceful-fs: 4.2.11 515 | image-size: 0.5.5 516 | make-dir: 2.1.0 517 | mime: 1.6.0 518 | needle: 3.2.0 519 | source-map: 0.6.1 520 | transitivePeerDependencies: 521 | - supports-color 522 | 523 | /lodash-es/4.17.21: 524 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} 525 | dev: false 526 | 527 | /magic-string/0.25.9: 528 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 529 | dependencies: 530 | sourcemap-codec: 1.4.8 531 | 532 | /make-dir/2.1.0: 533 | resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} 534 | engines: {node: '>=6'} 535 | requiresBuild: true 536 | dependencies: 537 | pify: 4.0.1 538 | semver: 5.7.1 539 | optional: true 540 | 541 | /marked/4.3.0: 542 | resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} 543 | engines: {node: '>= 12'} 544 | hasBin: true 545 | dev: false 546 | 547 | /micromark-core-commonmark/1.0.6: 548 | resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} 549 | dependencies: 550 | decode-named-character-reference: 1.0.2 551 | micromark-factory-destination: 1.0.0 552 | micromark-factory-label: 1.0.2 553 | micromark-factory-space: 1.0.0 554 | micromark-factory-title: 1.0.2 555 | micromark-factory-whitespace: 1.0.0 556 | micromark-util-character: 1.1.0 557 | micromark-util-chunked: 1.0.0 558 | micromark-util-classify-character: 1.0.0 559 | micromark-util-html-tag-name: 1.1.0 560 | micromark-util-normalize-identifier: 1.0.0 561 | micromark-util-resolve-all: 1.0.0 562 | micromark-util-subtokenize: 1.0.2 563 | micromark-util-symbol: 1.0.1 564 | micromark-util-types: 1.0.2 565 | uvu: 0.5.6 566 | dev: false 567 | 568 | /micromark-extension-gfm-autolink-literal/1.0.3: 569 | resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} 570 | dependencies: 571 | micromark-util-character: 1.1.0 572 | micromark-util-sanitize-uri: 1.1.0 573 | micromark-util-symbol: 1.0.1 574 | micromark-util-types: 1.0.2 575 | uvu: 0.5.6 576 | dev: false 577 | 578 | /micromark-extension-gfm-footnote/1.0.4: 579 | resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} 580 | dependencies: 581 | micromark-core-commonmark: 1.0.6 582 | micromark-factory-space: 1.0.0 583 | micromark-util-character: 1.1.0 584 | micromark-util-normalize-identifier: 1.0.0 585 | micromark-util-sanitize-uri: 1.1.0 586 | micromark-util-symbol: 1.0.1 587 | micromark-util-types: 1.0.2 588 | uvu: 0.5.6 589 | dev: false 590 | 591 | /micromark-extension-gfm-strikethrough/1.0.4: 592 | resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} 593 | dependencies: 594 | micromark-util-chunked: 1.0.0 595 | micromark-util-classify-character: 1.0.0 596 | micromark-util-resolve-all: 1.0.0 597 | micromark-util-symbol: 1.0.1 598 | micromark-util-types: 1.0.2 599 | uvu: 0.5.6 600 | dev: false 601 | 602 | /micromark-extension-gfm-table/1.0.5: 603 | resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} 604 | dependencies: 605 | micromark-factory-space: 1.0.0 606 | micromark-util-character: 1.1.0 607 | micromark-util-symbol: 1.0.1 608 | micromark-util-types: 1.0.2 609 | uvu: 0.5.6 610 | dev: false 611 | 612 | /micromark-extension-gfm-tagfilter/1.0.1: 613 | resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} 614 | dependencies: 615 | micromark-util-types: 1.0.2 616 | dev: false 617 | 618 | /micromark-extension-gfm-task-list-item/1.0.3: 619 | resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} 620 | dependencies: 621 | micromark-factory-space: 1.0.0 622 | micromark-util-character: 1.1.0 623 | micromark-util-symbol: 1.0.1 624 | micromark-util-types: 1.0.2 625 | uvu: 0.5.6 626 | dev: false 627 | 628 | /micromark-extension-gfm/2.0.1: 629 | resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} 630 | dependencies: 631 | micromark-extension-gfm-autolink-literal: 1.0.3 632 | micromark-extension-gfm-footnote: 1.0.4 633 | micromark-extension-gfm-strikethrough: 1.0.4 634 | micromark-extension-gfm-table: 1.0.5 635 | micromark-extension-gfm-tagfilter: 1.0.1 636 | micromark-extension-gfm-task-list-item: 1.0.3 637 | micromark-util-combine-extensions: 1.0.0 638 | micromark-util-types: 1.0.2 639 | dev: false 640 | 641 | /micromark-extension-math/2.0.2: 642 | resolution: {integrity: sha512-cFv2B/E4pFPBBFuGgLHkkNiFAIQv08iDgPH2HCuR2z3AUgMLecES5Cq7AVtwOtZeRrbA80QgMUk8VVW0Z+D2FA==} 643 | dependencies: 644 | '@types/katex': 0.11.1 645 | katex: 0.13.24 646 | micromark-factory-space: 1.0.0 647 | micromark-util-character: 1.1.0 648 | micromark-util-symbol: 1.0.1 649 | micromark-util-types: 1.0.2 650 | uvu: 0.5.6 651 | dev: false 652 | 653 | /micromark-factory-destination/1.0.0: 654 | resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} 655 | dependencies: 656 | micromark-util-character: 1.1.0 657 | micromark-util-symbol: 1.0.1 658 | micromark-util-types: 1.0.2 659 | dev: false 660 | 661 | /micromark-factory-label/1.0.2: 662 | resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} 663 | dependencies: 664 | micromark-util-character: 1.1.0 665 | micromark-util-symbol: 1.0.1 666 | micromark-util-types: 1.0.2 667 | uvu: 0.5.6 668 | dev: false 669 | 670 | /micromark-factory-space/1.0.0: 671 | resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} 672 | dependencies: 673 | micromark-util-character: 1.1.0 674 | micromark-util-types: 1.0.2 675 | dev: false 676 | 677 | /micromark-factory-title/1.0.2: 678 | resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} 679 | dependencies: 680 | micromark-factory-space: 1.0.0 681 | micromark-util-character: 1.1.0 682 | micromark-util-symbol: 1.0.1 683 | micromark-util-types: 1.0.2 684 | uvu: 0.5.6 685 | dev: false 686 | 687 | /micromark-factory-whitespace/1.0.0: 688 | resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} 689 | dependencies: 690 | micromark-factory-space: 1.0.0 691 | micromark-util-character: 1.1.0 692 | micromark-util-symbol: 1.0.1 693 | micromark-util-types: 1.0.2 694 | dev: false 695 | 696 | /micromark-util-character/1.1.0: 697 | resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} 698 | dependencies: 699 | micromark-util-symbol: 1.0.1 700 | micromark-util-types: 1.0.2 701 | dev: false 702 | 703 | /micromark-util-chunked/1.0.0: 704 | resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} 705 | dependencies: 706 | micromark-util-symbol: 1.0.1 707 | dev: false 708 | 709 | /micromark-util-classify-character/1.0.0: 710 | resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} 711 | dependencies: 712 | micromark-util-character: 1.1.0 713 | micromark-util-symbol: 1.0.1 714 | micromark-util-types: 1.0.2 715 | dev: false 716 | 717 | /micromark-util-combine-extensions/1.0.0: 718 | resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} 719 | dependencies: 720 | micromark-util-chunked: 1.0.0 721 | micromark-util-types: 1.0.2 722 | dev: false 723 | 724 | /micromark-util-decode-numeric-character-reference/1.0.0: 725 | resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} 726 | dependencies: 727 | micromark-util-symbol: 1.0.1 728 | dev: false 729 | 730 | /micromark-util-encode/1.0.1: 731 | resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} 732 | dev: false 733 | 734 | /micromark-util-html-tag-name/1.1.0: 735 | resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} 736 | dev: false 737 | 738 | /micromark-util-normalize-identifier/1.0.0: 739 | resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} 740 | dependencies: 741 | micromark-util-symbol: 1.0.1 742 | dev: false 743 | 744 | /micromark-util-resolve-all/1.0.0: 745 | resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} 746 | dependencies: 747 | micromark-util-types: 1.0.2 748 | dev: false 749 | 750 | /micromark-util-sanitize-uri/1.1.0: 751 | resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} 752 | dependencies: 753 | micromark-util-character: 1.1.0 754 | micromark-util-encode: 1.0.1 755 | micromark-util-symbol: 1.0.1 756 | dev: false 757 | 758 | /micromark-util-subtokenize/1.0.2: 759 | resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} 760 | dependencies: 761 | micromark-util-chunked: 1.0.0 762 | micromark-util-symbol: 1.0.1 763 | micromark-util-types: 1.0.2 764 | uvu: 0.5.6 765 | dev: false 766 | 767 | /micromark-util-symbol/1.0.1: 768 | resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} 769 | dev: false 770 | 771 | /micromark-util-types/1.0.2: 772 | resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} 773 | dev: false 774 | 775 | /micromark/3.1.0: 776 | resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} 777 | dependencies: 778 | '@types/debug': 4.1.7 779 | debug: 4.3.4 780 | decode-named-character-reference: 1.0.2 781 | micromark-core-commonmark: 1.0.6 782 | micromark-factory-space: 1.0.0 783 | micromark-util-character: 1.1.0 784 | micromark-util-chunked: 1.0.0 785 | micromark-util-combine-extensions: 1.0.0 786 | micromark-util-decode-numeric-character-reference: 1.0.0 787 | micromark-util-encode: 1.0.1 788 | micromark-util-normalize-identifier: 1.0.0 789 | micromark-util-resolve-all: 1.0.0 790 | micromark-util-sanitize-uri: 1.1.0 791 | micromark-util-subtokenize: 1.0.2 792 | micromark-util-symbol: 1.0.1 793 | micromark-util-types: 1.0.2 794 | uvu: 0.5.6 795 | transitivePeerDependencies: 796 | - supports-color 797 | dev: false 798 | 799 | /mime/1.6.0: 800 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 801 | engines: {node: '>=4'} 802 | hasBin: true 803 | requiresBuild: true 804 | optional: true 805 | 806 | /mri/1.2.0: 807 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 808 | engines: {node: '>=4'} 809 | dev: false 810 | 811 | /ms/2.1.2: 812 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 813 | dev: false 814 | 815 | /ms/2.1.3: 816 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 817 | optional: true 818 | 819 | /nanoid/3.3.4: 820 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 821 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 822 | hasBin: true 823 | 824 | /needle/3.2.0: 825 | resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==} 826 | engines: {node: '>= 4.4.x'} 827 | hasBin: true 828 | requiresBuild: true 829 | dependencies: 830 | debug: 3.2.7 831 | iconv-lite: 0.6.3 832 | sax: 1.2.4 833 | transitivePeerDependencies: 834 | - supports-color 835 | optional: true 836 | 837 | /parse-node-version/1.0.1: 838 | resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} 839 | engines: {node: '>= 0.10'} 840 | 841 | /path-parse/1.0.7: 842 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 843 | dev: true 844 | 845 | /picocolors/1.0.0: 846 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 847 | 848 | /pify/4.0.1: 849 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 850 | engines: {node: '>=6'} 851 | optional: true 852 | 853 | /postcss/8.4.21: 854 | resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} 855 | engines: {node: ^10 || ^12 || >=14} 856 | dependencies: 857 | nanoid: 3.3.4 858 | picocolors: 1.0.0 859 | source-map-js: 1.0.2 860 | 861 | /prr/1.0.1: 862 | resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} 863 | optional: true 864 | 865 | /resolve/1.22.1: 866 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 867 | hasBin: true 868 | dependencies: 869 | is-core-module: 2.11.0 870 | path-parse: 1.0.7 871 | supports-preserve-symlinks-flag: 1.0.0 872 | dev: true 873 | 874 | /rollup/3.20.0: 875 | resolution: {integrity: sha512-YsIfrk80NqUDrxrjWPXUa7PWvAfegZEXHuPsEZg58fGCdjL1I9C1i/NaG+L+27kxxwkrG/QEDEQc8s/ynXWWGQ==} 876 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 877 | hasBin: true 878 | optionalDependencies: 879 | fsevents: 2.3.2 880 | dev: true 881 | 882 | /sade/1.8.1: 883 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 884 | engines: {node: '>=6'} 885 | dependencies: 886 | mri: 1.2.0 887 | dev: false 888 | 889 | /safer-buffer/2.1.2: 890 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 891 | optional: true 892 | 893 | /sax/1.2.4: 894 | resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} 895 | optional: true 896 | 897 | /semver/5.7.1: 898 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 899 | hasBin: true 900 | optional: true 901 | 902 | /source-map-js/1.0.2: 903 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 904 | engines: {node: '>=0.10.0'} 905 | 906 | /source-map/0.6.1: 907 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 908 | engines: {node: '>=0.10.0'} 909 | 910 | /sourcemap-codec/1.4.8: 911 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 912 | deprecated: Please use @jridgewell/sourcemap-codec instead 913 | 914 | /supports-preserve-symlinks-flag/1.0.0: 915 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 916 | engines: {node: '>= 0.4'} 917 | dev: true 918 | 919 | /to-fast-properties/2.0.0: 920 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 921 | engines: {node: '>=4'} 922 | 923 | /tslib/2.5.0: 924 | resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} 925 | 926 | /uvu/0.5.6: 927 | resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} 928 | engines: {node: '>=8'} 929 | hasBin: true 930 | dependencies: 931 | dequal: 2.0.3 932 | diff: 5.1.0 933 | kleur: 4.1.5 934 | sade: 1.8.1 935 | dev: false 936 | 937 | /vite/4.2.1_less@4.1.3: 938 | resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} 939 | engines: {node: ^14.18.0 || >=16.0.0} 940 | hasBin: true 941 | peerDependencies: 942 | '@types/node': '>= 14' 943 | less: '*' 944 | sass: '*' 945 | stylus: '*' 946 | sugarss: '*' 947 | terser: ^5.4.0 948 | peerDependenciesMeta: 949 | '@types/node': 950 | optional: true 951 | less: 952 | optional: true 953 | sass: 954 | optional: true 955 | stylus: 956 | optional: true 957 | sugarss: 958 | optional: true 959 | terser: 960 | optional: true 961 | dependencies: 962 | esbuild: 0.17.12 963 | less: 4.1.3 964 | postcss: 8.4.21 965 | resolve: 1.22.1 966 | rollup: 3.20.0 967 | optionalDependencies: 968 | fsevents: 2.3.2 969 | dev: true 970 | 971 | /vue/3.2.47: 972 | resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==} 973 | dependencies: 974 | '@vue/compiler-dom': 3.2.47 975 | '@vue/compiler-sfc': 3.2.47 976 | '@vue/runtime-dom': 3.2.47 977 | '@vue/server-renderer': 3.2.47_vue@3.2.47 978 | '@vue/shared': 3.2.47 979 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /src/assets/copy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/delete.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/favor.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/moon.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weekend-project-space/chatgpt-online/7259bb98b380e410a38e4a049f27124804999604/src/assets/moon.svg -------------------------------------------------------------------------------- /src/assets/openai.svg: -------------------------------------------------------------------------------- 1 | 9 | 13 | -------------------------------------------------------------------------------- /src/assets/repeat.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/settings.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/ChatGptOnline.vue: -------------------------------------------------------------------------------- 1 | 176 | 177 | 323 | 324 | 596 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import './style.css' 3 | import App from './App.vue' 4 | 5 | createApp(App).mount('#app') 6 | -------------------------------------------------------------------------------- /src/style.css: -------------------------------------------------------------------------------- 1 | :root { 2 | color-scheme: light; 3 | line-height: 1.5; 4 | --padding: 15px; 5 | --gap-padding: 10px; 6 | --bg-color: #fff; 7 | --send-color: #fff; 8 | --text-color: #444; 9 | --title-color: #000; 10 | --code-text-color: #fff; 11 | --code-bg-color: rgba(0, 0, 0, 0.8); 12 | --msg-bg-color: #ddd; 13 | } 14 | /* 设置滚动条的样式 */ 15 | ::-webkit-scrollbar { 16 | width: 5px; 17 | } 18 | 19 | /* 滚动槽 */ 20 | ::-webkit-scrollbar-track { 21 | border-radius: 2px; 22 | } 23 | 24 | /* 滚动条滑块 */ 25 | ::-webkit-scrollbar-thumb { 26 | border-radius: 2px; 27 | background: rgba(88, 88, 88, 0.6); 28 | } 29 | 30 | ::-webkit-scrollbar-thumb:window-inactive { 31 | background: rgba(88, 88, 88, 0.8); 32 | } 33 | body { 34 | margin: 0; 35 | min-height: 100vh; 36 | background: var(--bg-color); 37 | } 38 | pre { 39 | background-color: var(--code-bg-color); 40 | color: var(--code-text-color); 41 | padding: 10px; 42 | border-radius: 10px; 43 | overflow-x: auto; 44 | max-width: 900px; 45 | } 46 | p { 47 | display: block; 48 | margin-block-start: 0.5em; 49 | margin-block-end: 0.5em; 50 | } 51 | button { 52 | border-radius: 8px; 53 | border: 1px solid transparent; 54 | font-size: 1em; 55 | cursor: pointer; 56 | transition: border-color 0.25s; 57 | } 58 | #app { 59 | max-width: 650px; 60 | margin: 0 auto; 61 | } 62 | a{ 63 | color: var(--text-color); 64 | } 65 | .dark { 66 | --bg-color: #333; 67 | --text-color: #ccc; 68 | --title-color: #fff; 69 | --send-color: #333; 70 | --code-text-color: #ccc; 71 | --code-bg-color: rgba(0, 0, 0, 0.6); 72 | --msg-bg-color: rgba(0, 0, 0, 0.3); 73 | } 74 | 75 | @media (prefers-color-scheme: dark) { 76 | :root { 77 | --bg-color: #333; 78 | --text-color: #ccc; 79 | --title-color: #fff; 80 | --send-color: #333; 81 | --code-text-color: #ccc; 82 | --code-bg-color: rgba(0, 0, 0, 0.6); 83 | --msg-bg-color: rgba(0, 0, 0, 0.3); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /src/utils/micromark.js: -------------------------------------------------------------------------------- 1 | import { micromark } from 'micromark' 2 | import { gfm, gfmHtml } from 'micromark-extension-gfm' 3 | import { math, mathHtml } from 'micromark-extension-math' 4 | const markOption = { 5 | extensions: [gfm(), math()], 6 | htmlExtensions: [gfmHtml(), mathHtml({ 7 | strict: false 8 | })] 9 | } 10 | export default (v) => micromark(v, markOption) -------------------------------------------------------------------------------- /src/utils/request.js: -------------------------------------------------------------------------------- 1 | export function get(url, config) { 2 | return request(url, 'GET', config) 3 | } 4 | 5 | export function post(url, data, config) { 6 | return request(url, 'POST', JSON.stringify(data), config) 7 | } 8 | 9 | 10 | function request(url, method, data, config) { 11 | return new Promise((resolve, reject) => { 12 | const xhr = new XMLHttpRequest(); 13 | xhr.open(method, url, true) 14 | initConfig(xhr, config) 15 | xhr.onreadystatechange = () => { 16 | if (xhr.readyState == 4) { 17 | if (xhr.status == 200) { 18 | resolve(JSON.parse(xhr.responseText)) 19 | } else { 20 | reject(xhr) 21 | } 22 | } 23 | 24 | } 25 | xhr.send(data) 26 | }) 27 | } 28 | 29 | 30 | function initConfig(xhr, config) { 31 | if (config) { 32 | if (config.headers) { 33 | for (let k in config.headers) { 34 | xhr.setRequestHeader(k, config.headers[k]) 35 | } 36 | } 37 | } 38 | 39 | } -------------------------------------------------------------------------------- /src/utils/storage.js: -------------------------------------------------------------------------------- 1 | export function setItem(obj, isSync) { 2 | if (isSync && chrome.storage && chrome.storage.sync) { 3 | chrome.storage.sync.set(obj); 4 | } if (chrome.storage && chrome.storage.local) { 5 | chrome.storage.local.set(obj); 6 | } else { 7 | for (let k in obj) { 8 | localStorage.setItem(k, obj[k]) 9 | } 10 | } 11 | } 12 | export async function getItem(key, isSync) { 13 | if (isSync && chrome.storage && chrome.storage.sync) { 14 | let d = await chrome.storage.sync.get([key]) 15 | return d[key] 16 | } else if (chrome.storage && chrome.storage.local && chrome.storage.local.get) { 17 | let d = await chrome.storage.local.get([key]) 18 | return d[key] 19 | } else { 20 | return localStorage.getItem(key) 21 | } 22 | } 23 | 24 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | build: { assetsDir: 'gptonline' }, 7 | plugins: [vue()], 8 | }) 9 | --------------------------------------------------------------------------------