├── .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 | [](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 |
6 |
7 |
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 |
178 |
179 |
229 |
230 |
231 |
232 |
233 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 | Clear chat record
279 |
280 |
281 |
282 |
321 |
322 |
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 |
--------------------------------------------------------------------------------