├── .gitignore
├── README.md
├── client
├── assets
│ ├── bot.svg
│ ├── favicon.ico
│ ├── send.svg
│ └── user.svg
├── index.html
├── package-lock.json
├── package.json
├── public
│ └── favicon.ico
├── script.js
└── style.css
└── server
├── package-lock.json
├── package.json
└── server.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 |
26 | # env
27 | .env
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Build and Deploy Your Own ChatGPT AI Application That Will Help You Code
2 | 
3 |
4 | ### [🌟 Become a top 1% Next.js 13 developer in only one course](https://jsmastery.pro/next13)
5 | ### [🚀 Land your dream programming job in 6 months](https://jsmastery.pro/masterclass)
6 |
7 | ### Launch your development career with project-based coaching - https://www.jsmastery.pro
8 |
--------------------------------------------------------------------------------
/client/assets/bot.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/client/assets/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/project_openai_codex/6685f45a2dedb60b3775e4e991d13ca7c1508167/client/assets/favicon.ico
--------------------------------------------------------------------------------
/client/assets/send.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/client/assets/user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/client/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Codex - Your AI
8 |
9 |
10 |
11 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/client/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "codex-client",
3 | "version": "0.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "codex-client",
9 | "version": "0.0.0",
10 | "devDependencies": {
11 | "vite": "^4.0.0"
12 | }
13 | },
14 | "node_modules/@esbuild/android-arm": {
15 | "version": "0.16.8",
16 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.8.tgz",
17 | "integrity": "sha512-r/qxYWkC3gY+Uq24wZacAUevGGb6d7d8VpyO8R0HGg31LXVi+eUr8XxHLCcmVzAjRjlZsZfzPelGpAKP/DafKg==",
18 | "cpu": [
19 | "arm"
20 | ],
21 | "dev": true,
22 | "optional": true,
23 | "os": [
24 | "android"
25 | ],
26 | "engines": {
27 | "node": ">=12"
28 | }
29 | },
30 | "node_modules/@esbuild/android-arm64": {
31 | "version": "0.16.8",
32 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.8.tgz",
33 | "integrity": "sha512-TGQM/tdy5EV1KoFHu0+cMrKvPR8UBLGEfwS84PTCJ07KVp21Fr488aFEL2TCamz9CxoF1np36kY6XOSdLncg2Q==",
34 | "cpu": [
35 | "arm64"
36 | ],
37 | "dev": true,
38 | "optional": true,
39 | "os": [
40 | "android"
41 | ],
42 | "engines": {
43 | "node": ">=12"
44 | }
45 | },
46 | "node_modules/@esbuild/android-x64": {
47 | "version": "0.16.8",
48 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.8.tgz",
49 | "integrity": "sha512-HtA4BNfrf5Nyoz3G2IS3qW4A0yckPJ1NjCMA3SiOw3zS1IfpMkbepDGp/Gdokc/tASFd38IP2uIL3W6bHJzAQw==",
50 | "cpu": [
51 | "x64"
52 | ],
53 | "dev": true,
54 | "optional": true,
55 | "os": [
56 | "android"
57 | ],
58 | "engines": {
59 | "node": ">=12"
60 | }
61 | },
62 | "node_modules/@esbuild/darwin-arm64": {
63 | "version": "0.16.8",
64 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.8.tgz",
65 | "integrity": "sha512-Ks8K1HGFf6LEjLnnVqB/zyaJcv7zMjbJ9txRZAwQwj+bzg8/AP0TmLBMJf9Ahwn6ATnHrhORtpydP8A/mNthXg==",
66 | "cpu": [
67 | "arm64"
68 | ],
69 | "dev": true,
70 | "optional": true,
71 | "os": [
72 | "darwin"
73 | ],
74 | "engines": {
75 | "node": ">=12"
76 | }
77 | },
78 | "node_modules/@esbuild/darwin-x64": {
79 | "version": "0.16.8",
80 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.8.tgz",
81 | "integrity": "sha512-XXh2070hatspZdG/uPqyHLFlHlGbytvT4JlqZuTU3AizcyOvmatPBSnuARvwCtJMw30wjjehcYY8DWPZ5UF2og==",
82 | "cpu": [
83 | "x64"
84 | ],
85 | "dev": true,
86 | "optional": true,
87 | "os": [
88 | "darwin"
89 | ],
90 | "engines": {
91 | "node": ">=12"
92 | }
93 | },
94 | "node_modules/@esbuild/freebsd-arm64": {
95 | "version": "0.16.8",
96 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.8.tgz",
97 | "integrity": "sha512-6DJuU3+tG9LcHCG/4K3e0AnqmmKWhUc9WDNIhLHOOdleafXwZeFvsqwfyaowNg9yUw5KipRLvV3JJMQ8kT1aPg==",
98 | "cpu": [
99 | "arm64"
100 | ],
101 | "dev": true,
102 | "optional": true,
103 | "os": [
104 | "freebsd"
105 | ],
106 | "engines": {
107 | "node": ">=12"
108 | }
109 | },
110 | "node_modules/@esbuild/freebsd-x64": {
111 | "version": "0.16.8",
112 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.8.tgz",
113 | "integrity": "sha512-UcsCaR25C0tZWnoImprPzr7vMEMjLImlTQAIfWXU2wvjF4gBWKO9GEH2JlsKYqBjfWfGgH+HHoGSF/evZbKyxA==",
114 | "cpu": [
115 | "x64"
116 | ],
117 | "dev": true,
118 | "optional": true,
119 | "os": [
120 | "freebsd"
121 | ],
122 | "engines": {
123 | "node": ">=12"
124 | }
125 | },
126 | "node_modules/@esbuild/linux-arm": {
127 | "version": "0.16.8",
128 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.8.tgz",
129 | "integrity": "sha512-Hn36NbKd6Prh0Ehv1A2ObjfXtN2g81jTpmq1+uRLHrW7CJW+W8GdVgOCVwyeupADUIOOa8bars6IZGcjkwq21w==",
130 | "cpu": [
131 | "arm"
132 | ],
133 | "dev": true,
134 | "optional": true,
135 | "os": [
136 | "linux"
137 | ],
138 | "engines": {
139 | "node": ">=12"
140 | }
141 | },
142 | "node_modules/@esbuild/linux-arm64": {
143 | "version": "0.16.8",
144 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.8.tgz",
145 | "integrity": "sha512-WTL1v/OhSxgE7rEELRFNWskym0e+hKDMl4JZs7jpQp7218yJPOjdOEWsbzVEYv4G1cbbtWFvp9DtaAONtdCW5w==",
146 | "cpu": [
147 | "arm64"
148 | ],
149 | "dev": true,
150 | "optional": true,
151 | "os": [
152 | "linux"
153 | ],
154 | "engines": {
155 | "node": ">=12"
156 | }
157 | },
158 | "node_modules/@esbuild/linux-ia32": {
159 | "version": "0.16.8",
160 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.8.tgz",
161 | "integrity": "sha512-Jt+8YBFR2Pk68oS7E9z9PtmgJrDonGdEW3Camb2plZcztKpu/OxfnxFu8f41+TYpKhzUDm5uNMwqxRH3yDYrsQ==",
162 | "cpu": [
163 | "ia32"
164 | ],
165 | "dev": true,
166 | "optional": true,
167 | "os": [
168 | "linux"
169 | ],
170 | "engines": {
171 | "node": ">=12"
172 | }
173 | },
174 | "node_modules/@esbuild/linux-loong64": {
175 | "version": "0.16.8",
176 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.8.tgz",
177 | "integrity": "sha512-P+5J/U/WwPEwcKOFTlTQBK6Gqw4OytpfBvR2V+kBRb5jujwMOQ1aG8iKX14DAwCLks1YHXrXPwXXDPNWEWC59A==",
178 | "cpu": [
179 | "loong64"
180 | ],
181 | "dev": true,
182 | "optional": true,
183 | "os": [
184 | "linux"
185 | ],
186 | "engines": {
187 | "node": ">=12"
188 | }
189 | },
190 | "node_modules/@esbuild/linux-mips64el": {
191 | "version": "0.16.8",
192 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.8.tgz",
193 | "integrity": "sha512-RDSnljcka9UkVxcLtWv2lG5zcqkZUxIPY47ZSKytv4aoo8b05dH1gnKVWrxBZ+owp3dX48s2lXm6zp3hZHl8qw==",
194 | "cpu": [
195 | "mips64el"
196 | ],
197 | "dev": true,
198 | "optional": true,
199 | "os": [
200 | "linux"
201 | ],
202 | "engines": {
203 | "node": ">=12"
204 | }
205 | },
206 | "node_modules/@esbuild/linux-ppc64": {
207 | "version": "0.16.8",
208 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.8.tgz",
209 | "integrity": "sha512-fNGvIKXyigXYhSflraBsqR/EBhXhuH0/0r7IpU+3reh+8yX3VjowjC/dwmqHDOSQXbcj+HJb1o9kWYi+fJQ/3g==",
210 | "cpu": [
211 | "ppc64"
212 | ],
213 | "dev": true,
214 | "optional": true,
215 | "os": [
216 | "linux"
217 | ],
218 | "engines": {
219 | "node": ">=12"
220 | }
221 | },
222 | "node_modules/@esbuild/linux-riscv64": {
223 | "version": "0.16.8",
224 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.8.tgz",
225 | "integrity": "sha512-CsE1IKyVq/Y55PDnBUvm/e7XfvBgfb5kZxHbIEdmB9xt6cTcBkaVvv8EwLDZuYPkYI60WGl0UwyYYx9B2LLgkg==",
226 | "cpu": [
227 | "riscv64"
228 | ],
229 | "dev": true,
230 | "optional": true,
231 | "os": [
232 | "linux"
233 | ],
234 | "engines": {
235 | "node": ">=12"
236 | }
237 | },
238 | "node_modules/@esbuild/linux-s390x": {
239 | "version": "0.16.8",
240 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.8.tgz",
241 | "integrity": "sha512-k8RIN4M+GWQAfJ/oGqwxZlpzOyGF8mxp5mH1A1WUJrpSUo4pe0zkq2EoP1KMQbYkjeJi45YsjwK3IOnSoueXbA==",
242 | "cpu": [
243 | "s390x"
244 | ],
245 | "dev": true,
246 | "optional": true,
247 | "os": [
248 | "linux"
249 | ],
250 | "engines": {
251 | "node": ">=12"
252 | }
253 | },
254 | "node_modules/@esbuild/linux-x64": {
255 | "version": "0.16.8",
256 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.8.tgz",
257 | "integrity": "sha512-u0hOo4E9PKyVDmPgJNeip1Tg63wxq+3KBJZKQFblqCl+d5N7n1h7pFwdN5ZzeLaaE645ep8aXzf76ndGnyOypg==",
258 | "cpu": [
259 | "x64"
260 | ],
261 | "dev": true,
262 | "optional": true,
263 | "os": [
264 | "linux"
265 | ],
266 | "engines": {
267 | "node": ">=12"
268 | }
269 | },
270 | "node_modules/@esbuild/netbsd-x64": {
271 | "version": "0.16.8",
272 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.8.tgz",
273 | "integrity": "sha512-wtENU7TOrnEbUes9aQuNe5PeBM4cTK5dn1W7v6XCr1LatJxAOn6Jn8yDGRsa2uKeEbAS5HeYx7uBAbTBd98OXQ==",
274 | "cpu": [
275 | "x64"
276 | ],
277 | "dev": true,
278 | "optional": true,
279 | "os": [
280 | "netbsd"
281 | ],
282 | "engines": {
283 | "node": ">=12"
284 | }
285 | },
286 | "node_modules/@esbuild/openbsd-x64": {
287 | "version": "0.16.8",
288 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.8.tgz",
289 | "integrity": "sha512-Y0DRVd/PIiutCpAYvRZHkpDNN3tdSQ1oyKy6xoh5TFTElAmzdlO7CO8ABs8689gq47lJ466cQEq9adJrKXrgXg==",
290 | "cpu": [
291 | "x64"
292 | ],
293 | "dev": true,
294 | "optional": true,
295 | "os": [
296 | "openbsd"
297 | ],
298 | "engines": {
299 | "node": ">=12"
300 | }
301 | },
302 | "node_modules/@esbuild/sunos-x64": {
303 | "version": "0.16.8",
304 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.8.tgz",
305 | "integrity": "sha512-eKg0I3C5z4NTF396Yo9QByXA8DdRS7QiYPFf6JHcED0BanyLW/jX8csUy96wyGivTNrmU0mCOShbeLgzb0eX7w==",
306 | "cpu": [
307 | "x64"
308 | ],
309 | "dev": true,
310 | "optional": true,
311 | "os": [
312 | "sunos"
313 | ],
314 | "engines": {
315 | "node": ">=12"
316 | }
317 | },
318 | "node_modules/@esbuild/win32-arm64": {
319 | "version": "0.16.8",
320 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.8.tgz",
321 | "integrity": "sha512-M2BZhsa7z8kMGre96HTMXpm266cfJkbdtcZgVfAL8hY4ptkh5MwNDasl85CDo++ffW2issVT+W/xIGJOr0v2pg==",
322 | "cpu": [
323 | "arm64"
324 | ],
325 | "dev": true,
326 | "optional": true,
327 | "os": [
328 | "win32"
329 | ],
330 | "engines": {
331 | "node": ">=12"
332 | }
333 | },
334 | "node_modules/@esbuild/win32-ia32": {
335 | "version": "0.16.8",
336 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.8.tgz",
337 | "integrity": "sha512-mzzHVpnuHQT+IrptiW+uUswEMpVIueYuAkjwt1m4tQuVq9dGWqCA1y9EE+W3S19nMg6JvHMbaRjv3mlCcmi0rA==",
338 | "cpu": [
339 | "ia32"
340 | ],
341 | "dev": true,
342 | "optional": true,
343 | "os": [
344 | "win32"
345 | ],
346 | "engines": {
347 | "node": ">=12"
348 | }
349 | },
350 | "node_modules/@esbuild/win32-x64": {
351 | "version": "0.16.8",
352 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.8.tgz",
353 | "integrity": "sha512-Zgzyn7njXpSSe1YGQk03eW4uei4QoZKloe/TBQZXgQHo6ul/ux0BtYdLz3MZ8WDlvqTG3QnLV4+gtV5ordM0+g==",
354 | "cpu": [
355 | "x64"
356 | ],
357 | "dev": true,
358 | "optional": true,
359 | "os": [
360 | "win32"
361 | ],
362 | "engines": {
363 | "node": ">=12"
364 | }
365 | },
366 | "node_modules/esbuild": {
367 | "version": "0.16.8",
368 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.8.tgz",
369 | "integrity": "sha512-RKxRaLYAI5b/IVJ5k8jK3bO2G7cch2ZIZFbfKHbBzpwsWt9+VChcBEndNISBBZ5c3WwekFfkfl11/2QfIGHgDw==",
370 | "dev": true,
371 | "hasInstallScript": true,
372 | "bin": {
373 | "esbuild": "bin/esbuild"
374 | },
375 | "engines": {
376 | "node": ">=12"
377 | },
378 | "optionalDependencies": {
379 | "@esbuild/android-arm": "0.16.8",
380 | "@esbuild/android-arm64": "0.16.8",
381 | "@esbuild/android-x64": "0.16.8",
382 | "@esbuild/darwin-arm64": "0.16.8",
383 | "@esbuild/darwin-x64": "0.16.8",
384 | "@esbuild/freebsd-arm64": "0.16.8",
385 | "@esbuild/freebsd-x64": "0.16.8",
386 | "@esbuild/linux-arm": "0.16.8",
387 | "@esbuild/linux-arm64": "0.16.8",
388 | "@esbuild/linux-ia32": "0.16.8",
389 | "@esbuild/linux-loong64": "0.16.8",
390 | "@esbuild/linux-mips64el": "0.16.8",
391 | "@esbuild/linux-ppc64": "0.16.8",
392 | "@esbuild/linux-riscv64": "0.16.8",
393 | "@esbuild/linux-s390x": "0.16.8",
394 | "@esbuild/linux-x64": "0.16.8",
395 | "@esbuild/netbsd-x64": "0.16.8",
396 | "@esbuild/openbsd-x64": "0.16.8",
397 | "@esbuild/sunos-x64": "0.16.8",
398 | "@esbuild/win32-arm64": "0.16.8",
399 | "@esbuild/win32-ia32": "0.16.8",
400 | "@esbuild/win32-x64": "0.16.8"
401 | }
402 | },
403 | "node_modules/fsevents": {
404 | "version": "2.3.2",
405 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
406 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
407 | "dev": true,
408 | "hasInstallScript": true,
409 | "optional": true,
410 | "os": [
411 | "darwin"
412 | ],
413 | "engines": {
414 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
415 | }
416 | },
417 | "node_modules/function-bind": {
418 | "version": "1.1.1",
419 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
420 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
421 | "dev": true
422 | },
423 | "node_modules/has": {
424 | "version": "1.0.3",
425 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
426 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
427 | "dev": true,
428 | "dependencies": {
429 | "function-bind": "^1.1.1"
430 | },
431 | "engines": {
432 | "node": ">= 0.4.0"
433 | }
434 | },
435 | "node_modules/is-core-module": {
436 | "version": "2.11.0",
437 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
438 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
439 | "dev": true,
440 | "dependencies": {
441 | "has": "^1.0.3"
442 | },
443 | "funding": {
444 | "url": "https://github.com/sponsors/ljharb"
445 | }
446 | },
447 | "node_modules/nanoid": {
448 | "version": "3.3.4",
449 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
450 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
451 | "dev": true,
452 | "bin": {
453 | "nanoid": "bin/nanoid.cjs"
454 | },
455 | "engines": {
456 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
457 | }
458 | },
459 | "node_modules/path-parse": {
460 | "version": "1.0.7",
461 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
462 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
463 | "dev": true
464 | },
465 | "node_modules/picocolors": {
466 | "version": "1.0.0",
467 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
468 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
469 | "dev": true
470 | },
471 | "node_modules/postcss": {
472 | "version": "8.4.20",
473 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz",
474 | "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==",
475 | "dev": true,
476 | "funding": [
477 | {
478 | "type": "opencollective",
479 | "url": "https://opencollective.com/postcss/"
480 | },
481 | {
482 | "type": "tidelift",
483 | "url": "https://tidelift.com/funding/github/npm/postcss"
484 | }
485 | ],
486 | "dependencies": {
487 | "nanoid": "^3.3.4",
488 | "picocolors": "^1.0.0",
489 | "source-map-js": "^1.0.2"
490 | },
491 | "engines": {
492 | "node": "^10 || ^12 || >=14"
493 | }
494 | },
495 | "node_modules/resolve": {
496 | "version": "1.22.1",
497 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
498 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
499 | "dev": true,
500 | "dependencies": {
501 | "is-core-module": "^2.9.0",
502 | "path-parse": "^1.0.7",
503 | "supports-preserve-symlinks-flag": "^1.0.0"
504 | },
505 | "bin": {
506 | "resolve": "bin/resolve"
507 | },
508 | "funding": {
509 | "url": "https://github.com/sponsors/ljharb"
510 | }
511 | },
512 | "node_modules/rollup": {
513 | "version": "3.7.5",
514 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.7.5.tgz",
515 | "integrity": "sha512-z0ZbqHBtS/et2EEUKMrAl2CoSdwN7ZPzL17UMiKN9RjjqHShTlv7F9J6ZJZJNREYjBh3TvBrdfjkFDIXFNeuiQ==",
516 | "dev": true,
517 | "bin": {
518 | "rollup": "dist/bin/rollup"
519 | },
520 | "engines": {
521 | "node": ">=14.18.0",
522 | "npm": ">=8.0.0"
523 | },
524 | "optionalDependencies": {
525 | "fsevents": "~2.3.2"
526 | }
527 | },
528 | "node_modules/source-map-js": {
529 | "version": "1.0.2",
530 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
531 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
532 | "dev": true,
533 | "engines": {
534 | "node": ">=0.10.0"
535 | }
536 | },
537 | "node_modules/supports-preserve-symlinks-flag": {
538 | "version": "1.0.0",
539 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
540 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
541 | "dev": true,
542 | "engines": {
543 | "node": ">= 0.4"
544 | },
545 | "funding": {
546 | "url": "https://github.com/sponsors/ljharb"
547 | }
548 | },
549 | "node_modules/vite": {
550 | "version": "4.0.1",
551 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.1.tgz",
552 | "integrity": "sha512-kZQPzbDau35iWOhy3CpkrRC7It+HIHtulAzBhMqzGHKRf/4+vmh8rPDDdv98SWQrFWo6//3ozwsRmwQIPZsK9g==",
553 | "dev": true,
554 | "dependencies": {
555 | "esbuild": "^0.16.3",
556 | "postcss": "^8.4.20",
557 | "resolve": "^1.22.1",
558 | "rollup": "^3.7.0"
559 | },
560 | "bin": {
561 | "vite": "bin/vite.js"
562 | },
563 | "engines": {
564 | "node": "^14.18.0 || >=16.0.0"
565 | },
566 | "optionalDependencies": {
567 | "fsevents": "~2.3.2"
568 | },
569 | "peerDependencies": {
570 | "@types/node": ">= 14",
571 | "less": "*",
572 | "sass": "*",
573 | "stylus": "*",
574 | "sugarss": "*",
575 | "terser": "^5.4.0"
576 | },
577 | "peerDependenciesMeta": {
578 | "@types/node": {
579 | "optional": true
580 | },
581 | "less": {
582 | "optional": true
583 | },
584 | "sass": {
585 | "optional": true
586 | },
587 | "stylus": {
588 | "optional": true
589 | },
590 | "sugarss": {
591 | "optional": true
592 | },
593 | "terser": {
594 | "optional": true
595 | }
596 | }
597 | }
598 | },
599 | "dependencies": {
600 | "@esbuild/android-arm": {
601 | "version": "0.16.8",
602 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.8.tgz",
603 | "integrity": "sha512-r/qxYWkC3gY+Uq24wZacAUevGGb6d7d8VpyO8R0HGg31LXVi+eUr8XxHLCcmVzAjRjlZsZfzPelGpAKP/DafKg==",
604 | "dev": true,
605 | "optional": true
606 | },
607 | "@esbuild/android-arm64": {
608 | "version": "0.16.8",
609 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.8.tgz",
610 | "integrity": "sha512-TGQM/tdy5EV1KoFHu0+cMrKvPR8UBLGEfwS84PTCJ07KVp21Fr488aFEL2TCamz9CxoF1np36kY6XOSdLncg2Q==",
611 | "dev": true,
612 | "optional": true
613 | },
614 | "@esbuild/android-x64": {
615 | "version": "0.16.8",
616 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.8.tgz",
617 | "integrity": "sha512-HtA4BNfrf5Nyoz3G2IS3qW4A0yckPJ1NjCMA3SiOw3zS1IfpMkbepDGp/Gdokc/tASFd38IP2uIL3W6bHJzAQw==",
618 | "dev": true,
619 | "optional": true
620 | },
621 | "@esbuild/darwin-arm64": {
622 | "version": "0.16.8",
623 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.8.tgz",
624 | "integrity": "sha512-Ks8K1HGFf6LEjLnnVqB/zyaJcv7zMjbJ9txRZAwQwj+bzg8/AP0TmLBMJf9Ahwn6ATnHrhORtpydP8A/mNthXg==",
625 | "dev": true,
626 | "optional": true
627 | },
628 | "@esbuild/darwin-x64": {
629 | "version": "0.16.8",
630 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.8.tgz",
631 | "integrity": "sha512-XXh2070hatspZdG/uPqyHLFlHlGbytvT4JlqZuTU3AizcyOvmatPBSnuARvwCtJMw30wjjehcYY8DWPZ5UF2og==",
632 | "dev": true,
633 | "optional": true
634 | },
635 | "@esbuild/freebsd-arm64": {
636 | "version": "0.16.8",
637 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.8.tgz",
638 | "integrity": "sha512-6DJuU3+tG9LcHCG/4K3e0AnqmmKWhUc9WDNIhLHOOdleafXwZeFvsqwfyaowNg9yUw5KipRLvV3JJMQ8kT1aPg==",
639 | "dev": true,
640 | "optional": true
641 | },
642 | "@esbuild/freebsd-x64": {
643 | "version": "0.16.8",
644 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.8.tgz",
645 | "integrity": "sha512-UcsCaR25C0tZWnoImprPzr7vMEMjLImlTQAIfWXU2wvjF4gBWKO9GEH2JlsKYqBjfWfGgH+HHoGSF/evZbKyxA==",
646 | "dev": true,
647 | "optional": true
648 | },
649 | "@esbuild/linux-arm": {
650 | "version": "0.16.8",
651 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.8.tgz",
652 | "integrity": "sha512-Hn36NbKd6Prh0Ehv1A2ObjfXtN2g81jTpmq1+uRLHrW7CJW+W8GdVgOCVwyeupADUIOOa8bars6IZGcjkwq21w==",
653 | "dev": true,
654 | "optional": true
655 | },
656 | "@esbuild/linux-arm64": {
657 | "version": "0.16.8",
658 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.8.tgz",
659 | "integrity": "sha512-WTL1v/OhSxgE7rEELRFNWskym0e+hKDMl4JZs7jpQp7218yJPOjdOEWsbzVEYv4G1cbbtWFvp9DtaAONtdCW5w==",
660 | "dev": true,
661 | "optional": true
662 | },
663 | "@esbuild/linux-ia32": {
664 | "version": "0.16.8",
665 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.8.tgz",
666 | "integrity": "sha512-Jt+8YBFR2Pk68oS7E9z9PtmgJrDonGdEW3Camb2plZcztKpu/OxfnxFu8f41+TYpKhzUDm5uNMwqxRH3yDYrsQ==",
667 | "dev": true,
668 | "optional": true
669 | },
670 | "@esbuild/linux-loong64": {
671 | "version": "0.16.8",
672 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.8.tgz",
673 | "integrity": "sha512-P+5J/U/WwPEwcKOFTlTQBK6Gqw4OytpfBvR2V+kBRb5jujwMOQ1aG8iKX14DAwCLks1YHXrXPwXXDPNWEWC59A==",
674 | "dev": true,
675 | "optional": true
676 | },
677 | "@esbuild/linux-mips64el": {
678 | "version": "0.16.8",
679 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.8.tgz",
680 | "integrity": "sha512-RDSnljcka9UkVxcLtWv2lG5zcqkZUxIPY47ZSKytv4aoo8b05dH1gnKVWrxBZ+owp3dX48s2lXm6zp3hZHl8qw==",
681 | "dev": true,
682 | "optional": true
683 | },
684 | "@esbuild/linux-ppc64": {
685 | "version": "0.16.8",
686 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.8.tgz",
687 | "integrity": "sha512-fNGvIKXyigXYhSflraBsqR/EBhXhuH0/0r7IpU+3reh+8yX3VjowjC/dwmqHDOSQXbcj+HJb1o9kWYi+fJQ/3g==",
688 | "dev": true,
689 | "optional": true
690 | },
691 | "@esbuild/linux-riscv64": {
692 | "version": "0.16.8",
693 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.8.tgz",
694 | "integrity": "sha512-CsE1IKyVq/Y55PDnBUvm/e7XfvBgfb5kZxHbIEdmB9xt6cTcBkaVvv8EwLDZuYPkYI60WGl0UwyYYx9B2LLgkg==",
695 | "dev": true,
696 | "optional": true
697 | },
698 | "@esbuild/linux-s390x": {
699 | "version": "0.16.8",
700 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.8.tgz",
701 | "integrity": "sha512-k8RIN4M+GWQAfJ/oGqwxZlpzOyGF8mxp5mH1A1WUJrpSUo4pe0zkq2EoP1KMQbYkjeJi45YsjwK3IOnSoueXbA==",
702 | "dev": true,
703 | "optional": true
704 | },
705 | "@esbuild/linux-x64": {
706 | "version": "0.16.8",
707 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.8.tgz",
708 | "integrity": "sha512-u0hOo4E9PKyVDmPgJNeip1Tg63wxq+3KBJZKQFblqCl+d5N7n1h7pFwdN5ZzeLaaE645ep8aXzf76ndGnyOypg==",
709 | "dev": true,
710 | "optional": true
711 | },
712 | "@esbuild/netbsd-x64": {
713 | "version": "0.16.8",
714 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.8.tgz",
715 | "integrity": "sha512-wtENU7TOrnEbUes9aQuNe5PeBM4cTK5dn1W7v6XCr1LatJxAOn6Jn8yDGRsa2uKeEbAS5HeYx7uBAbTBd98OXQ==",
716 | "dev": true,
717 | "optional": true
718 | },
719 | "@esbuild/openbsd-x64": {
720 | "version": "0.16.8",
721 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.8.tgz",
722 | "integrity": "sha512-Y0DRVd/PIiutCpAYvRZHkpDNN3tdSQ1oyKy6xoh5TFTElAmzdlO7CO8ABs8689gq47lJ466cQEq9adJrKXrgXg==",
723 | "dev": true,
724 | "optional": true
725 | },
726 | "@esbuild/sunos-x64": {
727 | "version": "0.16.8",
728 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.8.tgz",
729 | "integrity": "sha512-eKg0I3C5z4NTF396Yo9QByXA8DdRS7QiYPFf6JHcED0BanyLW/jX8csUy96wyGivTNrmU0mCOShbeLgzb0eX7w==",
730 | "dev": true,
731 | "optional": true
732 | },
733 | "@esbuild/win32-arm64": {
734 | "version": "0.16.8",
735 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.8.tgz",
736 | "integrity": "sha512-M2BZhsa7z8kMGre96HTMXpm266cfJkbdtcZgVfAL8hY4ptkh5MwNDasl85CDo++ffW2issVT+W/xIGJOr0v2pg==",
737 | "dev": true,
738 | "optional": true
739 | },
740 | "@esbuild/win32-ia32": {
741 | "version": "0.16.8",
742 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.8.tgz",
743 | "integrity": "sha512-mzzHVpnuHQT+IrptiW+uUswEMpVIueYuAkjwt1m4tQuVq9dGWqCA1y9EE+W3S19nMg6JvHMbaRjv3mlCcmi0rA==",
744 | "dev": true,
745 | "optional": true
746 | },
747 | "@esbuild/win32-x64": {
748 | "version": "0.16.8",
749 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.8.tgz",
750 | "integrity": "sha512-Zgzyn7njXpSSe1YGQk03eW4uei4QoZKloe/TBQZXgQHo6ul/ux0BtYdLz3MZ8WDlvqTG3QnLV4+gtV5ordM0+g==",
751 | "dev": true,
752 | "optional": true
753 | },
754 | "esbuild": {
755 | "version": "0.16.8",
756 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.8.tgz",
757 | "integrity": "sha512-RKxRaLYAI5b/IVJ5k8jK3bO2G7cch2ZIZFbfKHbBzpwsWt9+VChcBEndNISBBZ5c3WwekFfkfl11/2QfIGHgDw==",
758 | "dev": true,
759 | "requires": {
760 | "@esbuild/android-arm": "0.16.8",
761 | "@esbuild/android-arm64": "0.16.8",
762 | "@esbuild/android-x64": "0.16.8",
763 | "@esbuild/darwin-arm64": "0.16.8",
764 | "@esbuild/darwin-x64": "0.16.8",
765 | "@esbuild/freebsd-arm64": "0.16.8",
766 | "@esbuild/freebsd-x64": "0.16.8",
767 | "@esbuild/linux-arm": "0.16.8",
768 | "@esbuild/linux-arm64": "0.16.8",
769 | "@esbuild/linux-ia32": "0.16.8",
770 | "@esbuild/linux-loong64": "0.16.8",
771 | "@esbuild/linux-mips64el": "0.16.8",
772 | "@esbuild/linux-ppc64": "0.16.8",
773 | "@esbuild/linux-riscv64": "0.16.8",
774 | "@esbuild/linux-s390x": "0.16.8",
775 | "@esbuild/linux-x64": "0.16.8",
776 | "@esbuild/netbsd-x64": "0.16.8",
777 | "@esbuild/openbsd-x64": "0.16.8",
778 | "@esbuild/sunos-x64": "0.16.8",
779 | "@esbuild/win32-arm64": "0.16.8",
780 | "@esbuild/win32-ia32": "0.16.8",
781 | "@esbuild/win32-x64": "0.16.8"
782 | }
783 | },
784 | "fsevents": {
785 | "version": "2.3.2",
786 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
787 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
788 | "dev": true,
789 | "optional": true
790 | },
791 | "function-bind": {
792 | "version": "1.1.1",
793 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
794 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
795 | "dev": true
796 | },
797 | "has": {
798 | "version": "1.0.3",
799 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
800 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
801 | "dev": true,
802 | "requires": {
803 | "function-bind": "^1.1.1"
804 | }
805 | },
806 | "is-core-module": {
807 | "version": "2.11.0",
808 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
809 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
810 | "dev": true,
811 | "requires": {
812 | "has": "^1.0.3"
813 | }
814 | },
815 | "nanoid": {
816 | "version": "3.3.4",
817 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
818 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
819 | "dev": true
820 | },
821 | "path-parse": {
822 | "version": "1.0.7",
823 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
824 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
825 | "dev": true
826 | },
827 | "picocolors": {
828 | "version": "1.0.0",
829 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
830 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
831 | "dev": true
832 | },
833 | "postcss": {
834 | "version": "8.4.20",
835 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz",
836 | "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==",
837 | "dev": true,
838 | "requires": {
839 | "nanoid": "^3.3.4",
840 | "picocolors": "^1.0.0",
841 | "source-map-js": "^1.0.2"
842 | }
843 | },
844 | "resolve": {
845 | "version": "1.22.1",
846 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
847 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
848 | "dev": true,
849 | "requires": {
850 | "is-core-module": "^2.9.0",
851 | "path-parse": "^1.0.7",
852 | "supports-preserve-symlinks-flag": "^1.0.0"
853 | }
854 | },
855 | "rollup": {
856 | "version": "3.7.5",
857 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.7.5.tgz",
858 | "integrity": "sha512-z0ZbqHBtS/et2EEUKMrAl2CoSdwN7ZPzL17UMiKN9RjjqHShTlv7F9J6ZJZJNREYjBh3TvBrdfjkFDIXFNeuiQ==",
859 | "dev": true,
860 | "requires": {
861 | "fsevents": "~2.3.2"
862 | }
863 | },
864 | "source-map-js": {
865 | "version": "1.0.2",
866 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
867 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
868 | "dev": true
869 | },
870 | "supports-preserve-symlinks-flag": {
871 | "version": "1.0.0",
872 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
873 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
874 | "dev": true
875 | },
876 | "vite": {
877 | "version": "4.0.1",
878 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.1.tgz",
879 | "integrity": "sha512-kZQPzbDau35iWOhy3CpkrRC7It+HIHtulAzBhMqzGHKRf/4+vmh8rPDDdv98SWQrFWo6//3ozwsRmwQIPZsK9g==",
880 | "dev": true,
881 | "requires": {
882 | "esbuild": "^0.16.3",
883 | "fsevents": "~2.3.2",
884 | "postcss": "^8.4.20",
885 | "resolve": "^1.22.1",
886 | "rollup": "^3.7.0"
887 | }
888 | }
889 | }
890 | }
891 |
--------------------------------------------------------------------------------
/client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "codex-client",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "preview": "vite preview"
10 | },
11 | "devDependencies": {
12 | "vite": "^4.0.0"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/client/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adrianhajdin/project_openai_codex/6685f45a2dedb60b3775e4e991d13ca7c1508167/client/public/favicon.ico
--------------------------------------------------------------------------------
/client/script.js:
--------------------------------------------------------------------------------
1 | import bot from './assets/bot.svg'
2 | import user from './assets/user.svg'
3 |
4 | const form = document.querySelector('form')
5 | const chatContainer = document.querySelector('#chat_container')
6 |
7 | let loadInterval
8 |
9 | function loader(element) {
10 | element.textContent = ''
11 |
12 | loadInterval = setInterval(() => {
13 | // Update the text content of the loading indicator
14 | element.textContent += '.';
15 |
16 | // If the loading indicator has reached three dots, reset it
17 | if (element.textContent === '....') {
18 | element.textContent = '';
19 | }
20 | }, 300);
21 | }
22 |
23 | function typeText(element, text) {
24 | let index = 0
25 |
26 | let interval = setInterval(() => {
27 | if (index < text.length) {
28 | element.innerHTML += text.charAt(index)
29 | index++
30 | } else {
31 | clearInterval(interval)
32 | }
33 | }, 20)
34 | }
35 |
36 | // generate unique ID for each message div of bot
37 | // necessary for typing text effect for that specific reply
38 | // without unique ID, typing text will work on every element
39 | function generateUniqueId() {
40 | const timestamp = Date.now();
41 | const randomNumber = Math.random();
42 | const hexadecimalString = randomNumber.toString(16);
43 |
44 | return `id-${timestamp}-${hexadecimalString}`;
45 | }
46 |
47 | function chatStripe(isAi, value, uniqueId) {
48 | return (
49 | `
50 |
51 |
52 |
53 |

57 |
58 |
${value}
59 |
60 |
61 | `
62 | )
63 | }
64 |
65 | const handleSubmit = async (e) => {
66 | e.preventDefault()
67 |
68 | const data = new FormData(form)
69 |
70 | // user's chatstripe
71 | chatContainer.innerHTML += chatStripe(false, data.get('prompt'))
72 |
73 | // to clear the textarea input
74 | form.reset()
75 |
76 | // bot's chatstripe
77 | const uniqueId = generateUniqueId()
78 | chatContainer.innerHTML += chatStripe(true, " ", uniqueId)
79 |
80 | // to focus scroll to the bottom
81 | chatContainer.scrollTop = chatContainer.scrollHeight;
82 |
83 | // specific message div
84 | const messageDiv = document.getElementById(uniqueId)
85 |
86 | // messageDiv.innerHTML = "..."
87 | loader(messageDiv)
88 |
89 | const response = await fetch('https://codex-im0y.onrender.com/', {
90 | method: 'POST',
91 | headers: {
92 | 'Content-Type': 'application/json',
93 | },
94 | body: JSON.stringify({
95 | prompt: data.get('prompt')
96 | })
97 | })
98 |
99 | clearInterval(loadInterval)
100 | messageDiv.innerHTML = " "
101 |
102 | if (response.ok) {
103 | const data = await response.json();
104 | const parsedData = data.bot.trim() // trims any trailing spaces/'\n'
105 |
106 | typeText(messageDiv, parsedData)
107 | } else {
108 | const err = await response.text()
109 |
110 | messageDiv.innerHTML = "Something went wrong"
111 | alert(err)
112 | }
113 | }
114 |
115 | form.addEventListener('submit', handleSubmit)
116 | form.addEventListener('keyup', (e) => {
117 | if (e.keyCode === 13) {
118 | handleSubmit(e)
119 | }
120 | })
--------------------------------------------------------------------------------
/client/style.css:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css2?family=Alegreya+Sans:wght@100;300;400;500;700;800;900&display=swap");
2 |
3 | * {
4 | margin: 0;
5 | padding: 0;
6 | box-sizing: border-box;
7 | font-family: "Alegreya Sans", sans-serif;
8 | }
9 |
10 | body {
11 | background: #343541;
12 | }
13 |
14 | #app {
15 | width: 100vw;
16 | height: 100vh;
17 | background: #343541;
18 |
19 | display: flex;
20 | flex-direction: column;
21 | align-items: center;
22 | justify-content: space-between;
23 | }
24 |
25 | #chat_container {
26 | flex: 1;
27 | width: 100%;
28 | height: 100%;
29 | overflow-y: scroll;
30 |
31 | display: flex;
32 | flex-direction: column;
33 | gap: 10px;
34 |
35 | -ms-overflow-style: none;
36 | scrollbar-width: none;
37 |
38 | padding-bottom: 20px;
39 | scroll-behavior: smooth;
40 | }
41 |
42 | /* hides scrollbar */
43 | #chat_container::-webkit-scrollbar {
44 | display: none;
45 | }
46 |
47 | .wrapper {
48 | width: 100%;
49 | padding: 15px;
50 | }
51 |
52 | .ai {
53 | background: #40414F;
54 | }
55 |
56 | .chat {
57 | width: 100%;
58 | max-width: 1280px;
59 | margin: 0 auto;
60 |
61 | display: flex;
62 | flex-direction: row;
63 | align-items: flex-start;
64 | gap: 10px;
65 | }
66 |
67 | .profile {
68 | width: 36px;
69 | height: 36px;
70 | border-radius: 5px;
71 |
72 | background: #5436DA;
73 |
74 | display: flex;
75 | justify-content: center;
76 | align-items: center;
77 | }
78 |
79 | .ai .profile {
80 | background: #10a37f;
81 | }
82 |
83 | .profile img {
84 | width: 60%;
85 | height: 60%;
86 | object-fit: contain;
87 | }
88 |
89 | .message {
90 | flex: 1;
91 |
92 | color: #dcdcdc;
93 | font-size: 20px;
94 |
95 | max-width: 100%;
96 | overflow-x: scroll;
97 |
98 | /*
99 | * white space refers to any spaces, tabs, or newline characters that are used to format the CSS code
100 | * specifies how white space within an element should be handled. It is similar to the "pre" value, which tells the browser to treat all white space as significant and to preserve it exactly as it appears in the source code.
101 | * The pre-wrap value allows the browser to wrap long lines of text onto multiple lines if necessary.
102 | * The default value for the white-space property in CSS is "normal". This tells the browser to collapse multiple white space characters into a single space, and to wrap text onto multiple lines as needed to fit within its container.
103 | */
104 | white-space: pre-wrap;
105 |
106 | -ms-overflow-style: none;
107 | scrollbar-width: none;
108 | }
109 |
110 | /* hides scrollbar */
111 | .message::-webkit-scrollbar {
112 | display: none;
113 | }
114 |
115 | form {
116 | width: 100%;
117 | max-width: 1280px;
118 | margin: 0 auto;
119 | padding: 10px;
120 | background: #40414F;
121 |
122 | display: flex;
123 | flex-direction: row;
124 | gap: 10px;
125 | }
126 |
127 | textarea {
128 | width: 100%;
129 |
130 | color: #fff;
131 | font-size: 18px;
132 |
133 | padding: 10px;
134 | background: transparent;
135 | border-radius: 5px;
136 | border: none;
137 | outline: none;
138 | }
139 |
140 | button {
141 | outline: 0;
142 | border: 0;
143 | cursor: pointer;
144 | background: transparent;
145 | }
146 |
147 | form img {
148 | width: 30px;
149 | height: 30px;
150 | }
--------------------------------------------------------------------------------
/server/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "codex-server",
3 | "version": "0.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "codex-server",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "cors": "^2.8.5",
12 | "dotenv": "^16.0.3",
13 | "express": "^4.18.2",
14 | "nodemon": "^2.0.20",
15 | "openai": "^3.1.0"
16 | }
17 | },
18 | "node_modules/abbrev": {
19 | "version": "1.1.1",
20 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
21 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
22 | },
23 | "node_modules/accepts": {
24 | "version": "1.3.8",
25 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
26 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
27 | "dependencies": {
28 | "mime-types": "~2.1.34",
29 | "negotiator": "0.6.3"
30 | },
31 | "engines": {
32 | "node": ">= 0.6"
33 | }
34 | },
35 | "node_modules/anymatch": {
36 | "version": "3.1.3",
37 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
38 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
39 | "dependencies": {
40 | "normalize-path": "^3.0.0",
41 | "picomatch": "^2.0.4"
42 | },
43 | "engines": {
44 | "node": ">= 8"
45 | }
46 | },
47 | "node_modules/array-flatten": {
48 | "version": "1.1.1",
49 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
50 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
51 | },
52 | "node_modules/asynckit": {
53 | "version": "0.4.0",
54 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
55 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
56 | },
57 | "node_modules/axios": {
58 | "version": "0.26.1",
59 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz",
60 | "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
61 | "dependencies": {
62 | "follow-redirects": "^1.14.8"
63 | }
64 | },
65 | "node_modules/balanced-match": {
66 | "version": "1.0.2",
67 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
68 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
69 | },
70 | "node_modules/binary-extensions": {
71 | "version": "2.2.0",
72 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
73 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
74 | "engines": {
75 | "node": ">=8"
76 | }
77 | },
78 | "node_modules/body-parser": {
79 | "version": "1.20.1",
80 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
81 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
82 | "dependencies": {
83 | "bytes": "3.1.2",
84 | "content-type": "~1.0.4",
85 | "debug": "2.6.9",
86 | "depd": "2.0.0",
87 | "destroy": "1.2.0",
88 | "http-errors": "2.0.0",
89 | "iconv-lite": "0.4.24",
90 | "on-finished": "2.4.1",
91 | "qs": "6.11.0",
92 | "raw-body": "2.5.1",
93 | "type-is": "~1.6.18",
94 | "unpipe": "1.0.0"
95 | },
96 | "engines": {
97 | "node": ">= 0.8",
98 | "npm": "1.2.8000 || >= 1.4.16"
99 | }
100 | },
101 | "node_modules/brace-expansion": {
102 | "version": "1.1.11",
103 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
104 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
105 | "dependencies": {
106 | "balanced-match": "^1.0.0",
107 | "concat-map": "0.0.1"
108 | }
109 | },
110 | "node_modules/braces": {
111 | "version": "3.0.2",
112 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
113 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
114 | "dependencies": {
115 | "fill-range": "^7.0.1"
116 | },
117 | "engines": {
118 | "node": ">=8"
119 | }
120 | },
121 | "node_modules/bytes": {
122 | "version": "3.1.2",
123 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
124 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
125 | "engines": {
126 | "node": ">= 0.8"
127 | }
128 | },
129 | "node_modules/call-bind": {
130 | "version": "1.0.2",
131 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
132 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
133 | "dependencies": {
134 | "function-bind": "^1.1.1",
135 | "get-intrinsic": "^1.0.2"
136 | },
137 | "funding": {
138 | "url": "https://github.com/sponsors/ljharb"
139 | }
140 | },
141 | "node_modules/chokidar": {
142 | "version": "3.5.3",
143 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
144 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
145 | "funding": [
146 | {
147 | "type": "individual",
148 | "url": "https://paulmillr.com/funding/"
149 | }
150 | ],
151 | "dependencies": {
152 | "anymatch": "~3.1.2",
153 | "braces": "~3.0.2",
154 | "glob-parent": "~5.1.2",
155 | "is-binary-path": "~2.1.0",
156 | "is-glob": "~4.0.1",
157 | "normalize-path": "~3.0.0",
158 | "readdirp": "~3.6.0"
159 | },
160 | "engines": {
161 | "node": ">= 8.10.0"
162 | },
163 | "optionalDependencies": {
164 | "fsevents": "~2.3.2"
165 | }
166 | },
167 | "node_modules/combined-stream": {
168 | "version": "1.0.8",
169 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
170 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
171 | "dependencies": {
172 | "delayed-stream": "~1.0.0"
173 | },
174 | "engines": {
175 | "node": ">= 0.8"
176 | }
177 | },
178 | "node_modules/concat-map": {
179 | "version": "0.0.1",
180 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
181 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
182 | },
183 | "node_modules/content-disposition": {
184 | "version": "0.5.4",
185 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
186 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
187 | "dependencies": {
188 | "safe-buffer": "5.2.1"
189 | },
190 | "engines": {
191 | "node": ">= 0.6"
192 | }
193 | },
194 | "node_modules/content-type": {
195 | "version": "1.0.4",
196 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
197 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
198 | "engines": {
199 | "node": ">= 0.6"
200 | }
201 | },
202 | "node_modules/cookie": {
203 | "version": "0.5.0",
204 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
205 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
206 | "engines": {
207 | "node": ">= 0.6"
208 | }
209 | },
210 | "node_modules/cookie-signature": {
211 | "version": "1.0.6",
212 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
213 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
214 | },
215 | "node_modules/cors": {
216 | "version": "2.8.5",
217 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
218 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
219 | "dependencies": {
220 | "object-assign": "^4",
221 | "vary": "^1"
222 | },
223 | "engines": {
224 | "node": ">= 0.10"
225 | }
226 | },
227 | "node_modules/debug": {
228 | "version": "2.6.9",
229 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
230 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
231 | "dependencies": {
232 | "ms": "2.0.0"
233 | }
234 | },
235 | "node_modules/delayed-stream": {
236 | "version": "1.0.0",
237 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
238 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
239 | "engines": {
240 | "node": ">=0.4.0"
241 | }
242 | },
243 | "node_modules/depd": {
244 | "version": "2.0.0",
245 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
246 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
247 | "engines": {
248 | "node": ">= 0.8"
249 | }
250 | },
251 | "node_modules/destroy": {
252 | "version": "1.2.0",
253 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
254 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
255 | "engines": {
256 | "node": ">= 0.8",
257 | "npm": "1.2.8000 || >= 1.4.16"
258 | }
259 | },
260 | "node_modules/dotenv": {
261 | "version": "16.0.3",
262 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
263 | "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
264 | "engines": {
265 | "node": ">=12"
266 | }
267 | },
268 | "node_modules/ee-first": {
269 | "version": "1.1.1",
270 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
271 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
272 | },
273 | "node_modules/encodeurl": {
274 | "version": "1.0.2",
275 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
276 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
277 | "engines": {
278 | "node": ">= 0.8"
279 | }
280 | },
281 | "node_modules/escape-html": {
282 | "version": "1.0.3",
283 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
284 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
285 | },
286 | "node_modules/etag": {
287 | "version": "1.8.1",
288 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
289 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
290 | "engines": {
291 | "node": ">= 0.6"
292 | }
293 | },
294 | "node_modules/express": {
295 | "version": "4.18.2",
296 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
297 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
298 | "dependencies": {
299 | "accepts": "~1.3.8",
300 | "array-flatten": "1.1.1",
301 | "body-parser": "1.20.1",
302 | "content-disposition": "0.5.4",
303 | "content-type": "~1.0.4",
304 | "cookie": "0.5.0",
305 | "cookie-signature": "1.0.6",
306 | "debug": "2.6.9",
307 | "depd": "2.0.0",
308 | "encodeurl": "~1.0.2",
309 | "escape-html": "~1.0.3",
310 | "etag": "~1.8.1",
311 | "finalhandler": "1.2.0",
312 | "fresh": "0.5.2",
313 | "http-errors": "2.0.0",
314 | "merge-descriptors": "1.0.1",
315 | "methods": "~1.1.2",
316 | "on-finished": "2.4.1",
317 | "parseurl": "~1.3.3",
318 | "path-to-regexp": "0.1.7",
319 | "proxy-addr": "~2.0.7",
320 | "qs": "6.11.0",
321 | "range-parser": "~1.2.1",
322 | "safe-buffer": "5.2.1",
323 | "send": "0.18.0",
324 | "serve-static": "1.15.0",
325 | "setprototypeof": "1.2.0",
326 | "statuses": "2.0.1",
327 | "type-is": "~1.6.18",
328 | "utils-merge": "1.0.1",
329 | "vary": "~1.1.2"
330 | },
331 | "engines": {
332 | "node": ">= 0.10.0"
333 | }
334 | },
335 | "node_modules/fill-range": {
336 | "version": "7.0.1",
337 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
338 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
339 | "dependencies": {
340 | "to-regex-range": "^5.0.1"
341 | },
342 | "engines": {
343 | "node": ">=8"
344 | }
345 | },
346 | "node_modules/finalhandler": {
347 | "version": "1.2.0",
348 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
349 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
350 | "dependencies": {
351 | "debug": "2.6.9",
352 | "encodeurl": "~1.0.2",
353 | "escape-html": "~1.0.3",
354 | "on-finished": "2.4.1",
355 | "parseurl": "~1.3.3",
356 | "statuses": "2.0.1",
357 | "unpipe": "~1.0.0"
358 | },
359 | "engines": {
360 | "node": ">= 0.8"
361 | }
362 | },
363 | "node_modules/follow-redirects": {
364 | "version": "1.15.2",
365 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
366 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
367 | "funding": [
368 | {
369 | "type": "individual",
370 | "url": "https://github.com/sponsors/RubenVerborgh"
371 | }
372 | ],
373 | "engines": {
374 | "node": ">=4.0"
375 | },
376 | "peerDependenciesMeta": {
377 | "debug": {
378 | "optional": true
379 | }
380 | }
381 | },
382 | "node_modules/form-data": {
383 | "version": "4.0.0",
384 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
385 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
386 | "dependencies": {
387 | "asynckit": "^0.4.0",
388 | "combined-stream": "^1.0.8",
389 | "mime-types": "^2.1.12"
390 | },
391 | "engines": {
392 | "node": ">= 6"
393 | }
394 | },
395 | "node_modules/forwarded": {
396 | "version": "0.2.0",
397 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
398 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
399 | "engines": {
400 | "node": ">= 0.6"
401 | }
402 | },
403 | "node_modules/fresh": {
404 | "version": "0.5.2",
405 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
406 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
407 | "engines": {
408 | "node": ">= 0.6"
409 | }
410 | },
411 | "node_modules/fsevents": {
412 | "version": "2.3.2",
413 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
414 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
415 | "hasInstallScript": true,
416 | "optional": true,
417 | "os": [
418 | "darwin"
419 | ],
420 | "engines": {
421 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
422 | }
423 | },
424 | "node_modules/function-bind": {
425 | "version": "1.1.1",
426 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
427 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
428 | },
429 | "node_modules/get-intrinsic": {
430 | "version": "1.1.3",
431 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
432 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
433 | "dependencies": {
434 | "function-bind": "^1.1.1",
435 | "has": "^1.0.3",
436 | "has-symbols": "^1.0.3"
437 | },
438 | "funding": {
439 | "url": "https://github.com/sponsors/ljharb"
440 | }
441 | },
442 | "node_modules/glob-parent": {
443 | "version": "5.1.2",
444 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
445 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
446 | "dependencies": {
447 | "is-glob": "^4.0.1"
448 | },
449 | "engines": {
450 | "node": ">= 6"
451 | }
452 | },
453 | "node_modules/has": {
454 | "version": "1.0.3",
455 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
456 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
457 | "dependencies": {
458 | "function-bind": "^1.1.1"
459 | },
460 | "engines": {
461 | "node": ">= 0.4.0"
462 | }
463 | },
464 | "node_modules/has-flag": {
465 | "version": "3.0.0",
466 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
467 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
468 | "engines": {
469 | "node": ">=4"
470 | }
471 | },
472 | "node_modules/has-symbols": {
473 | "version": "1.0.3",
474 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
475 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
476 | "engines": {
477 | "node": ">= 0.4"
478 | },
479 | "funding": {
480 | "url": "https://github.com/sponsors/ljharb"
481 | }
482 | },
483 | "node_modules/http-errors": {
484 | "version": "2.0.0",
485 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
486 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
487 | "dependencies": {
488 | "depd": "2.0.0",
489 | "inherits": "2.0.4",
490 | "setprototypeof": "1.2.0",
491 | "statuses": "2.0.1",
492 | "toidentifier": "1.0.1"
493 | },
494 | "engines": {
495 | "node": ">= 0.8"
496 | }
497 | },
498 | "node_modules/iconv-lite": {
499 | "version": "0.4.24",
500 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
501 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
502 | "dependencies": {
503 | "safer-buffer": ">= 2.1.2 < 3"
504 | },
505 | "engines": {
506 | "node": ">=0.10.0"
507 | }
508 | },
509 | "node_modules/ignore-by-default": {
510 | "version": "1.0.1",
511 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
512 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="
513 | },
514 | "node_modules/inherits": {
515 | "version": "2.0.4",
516 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
517 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
518 | },
519 | "node_modules/ipaddr.js": {
520 | "version": "1.9.1",
521 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
522 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
523 | "engines": {
524 | "node": ">= 0.10"
525 | }
526 | },
527 | "node_modules/is-binary-path": {
528 | "version": "2.1.0",
529 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
530 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
531 | "dependencies": {
532 | "binary-extensions": "^2.0.0"
533 | },
534 | "engines": {
535 | "node": ">=8"
536 | }
537 | },
538 | "node_modules/is-extglob": {
539 | "version": "2.1.1",
540 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
541 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
542 | "engines": {
543 | "node": ">=0.10.0"
544 | }
545 | },
546 | "node_modules/is-glob": {
547 | "version": "4.0.3",
548 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
549 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
550 | "dependencies": {
551 | "is-extglob": "^2.1.1"
552 | },
553 | "engines": {
554 | "node": ">=0.10.0"
555 | }
556 | },
557 | "node_modules/is-number": {
558 | "version": "7.0.0",
559 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
560 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
561 | "engines": {
562 | "node": ">=0.12.0"
563 | }
564 | },
565 | "node_modules/media-typer": {
566 | "version": "0.3.0",
567 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
568 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
569 | "engines": {
570 | "node": ">= 0.6"
571 | }
572 | },
573 | "node_modules/merge-descriptors": {
574 | "version": "1.0.1",
575 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
576 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
577 | },
578 | "node_modules/methods": {
579 | "version": "1.1.2",
580 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
581 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
582 | "engines": {
583 | "node": ">= 0.6"
584 | }
585 | },
586 | "node_modules/mime": {
587 | "version": "1.6.0",
588 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
589 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
590 | "bin": {
591 | "mime": "cli.js"
592 | },
593 | "engines": {
594 | "node": ">=4"
595 | }
596 | },
597 | "node_modules/mime-db": {
598 | "version": "1.52.0",
599 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
600 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
601 | "engines": {
602 | "node": ">= 0.6"
603 | }
604 | },
605 | "node_modules/mime-types": {
606 | "version": "2.1.35",
607 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
608 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
609 | "dependencies": {
610 | "mime-db": "1.52.0"
611 | },
612 | "engines": {
613 | "node": ">= 0.6"
614 | }
615 | },
616 | "node_modules/minimatch": {
617 | "version": "3.1.2",
618 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
619 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
620 | "dependencies": {
621 | "brace-expansion": "^1.1.7"
622 | },
623 | "engines": {
624 | "node": "*"
625 | }
626 | },
627 | "node_modules/ms": {
628 | "version": "2.0.0",
629 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
630 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
631 | },
632 | "node_modules/negotiator": {
633 | "version": "0.6.3",
634 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
635 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
636 | "engines": {
637 | "node": ">= 0.6"
638 | }
639 | },
640 | "node_modules/nodemon": {
641 | "version": "2.0.20",
642 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz",
643 | "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==",
644 | "dependencies": {
645 | "chokidar": "^3.5.2",
646 | "debug": "^3.2.7",
647 | "ignore-by-default": "^1.0.1",
648 | "minimatch": "^3.1.2",
649 | "pstree.remy": "^1.1.8",
650 | "semver": "^5.7.1",
651 | "simple-update-notifier": "^1.0.7",
652 | "supports-color": "^5.5.0",
653 | "touch": "^3.1.0",
654 | "undefsafe": "^2.0.5"
655 | },
656 | "bin": {
657 | "nodemon": "bin/nodemon.js"
658 | },
659 | "engines": {
660 | "node": ">=8.10.0"
661 | },
662 | "funding": {
663 | "type": "opencollective",
664 | "url": "https://opencollective.com/nodemon"
665 | }
666 | },
667 | "node_modules/nodemon/node_modules/debug": {
668 | "version": "3.2.7",
669 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
670 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
671 | "dependencies": {
672 | "ms": "^2.1.1"
673 | }
674 | },
675 | "node_modules/nodemon/node_modules/ms": {
676 | "version": "2.1.3",
677 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
678 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
679 | },
680 | "node_modules/nopt": {
681 | "version": "1.0.10",
682 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
683 | "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
684 | "dependencies": {
685 | "abbrev": "1"
686 | },
687 | "bin": {
688 | "nopt": "bin/nopt.js"
689 | },
690 | "engines": {
691 | "node": "*"
692 | }
693 | },
694 | "node_modules/normalize-path": {
695 | "version": "3.0.0",
696 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
697 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
698 | "engines": {
699 | "node": ">=0.10.0"
700 | }
701 | },
702 | "node_modules/object-assign": {
703 | "version": "4.1.1",
704 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
705 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
706 | "engines": {
707 | "node": ">=0.10.0"
708 | }
709 | },
710 | "node_modules/object-inspect": {
711 | "version": "1.12.2",
712 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
713 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
714 | "funding": {
715 | "url": "https://github.com/sponsors/ljharb"
716 | }
717 | },
718 | "node_modules/on-finished": {
719 | "version": "2.4.1",
720 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
721 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
722 | "dependencies": {
723 | "ee-first": "1.1.1"
724 | },
725 | "engines": {
726 | "node": ">= 0.8"
727 | }
728 | },
729 | "node_modules/openai": {
730 | "version": "3.1.0",
731 | "resolved": "https://registry.npmjs.org/openai/-/openai-3.1.0.tgz",
732 | "integrity": "sha512-v5kKFH5o+8ld+t0arudj833Mgm3GcgBnbyN9946bj6u7bvel4Yg6YFz2A4HLIYDzmMjIo0s6vSG9x73kOwvdCg==",
733 | "dependencies": {
734 | "axios": "^0.26.0",
735 | "form-data": "^4.0.0"
736 | }
737 | },
738 | "node_modules/parseurl": {
739 | "version": "1.3.3",
740 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
741 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
742 | "engines": {
743 | "node": ">= 0.8"
744 | }
745 | },
746 | "node_modules/path-to-regexp": {
747 | "version": "0.1.7",
748 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
749 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
750 | },
751 | "node_modules/picomatch": {
752 | "version": "2.3.1",
753 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
754 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
755 | "engines": {
756 | "node": ">=8.6"
757 | },
758 | "funding": {
759 | "url": "https://github.com/sponsors/jonschlinkert"
760 | }
761 | },
762 | "node_modules/proxy-addr": {
763 | "version": "2.0.7",
764 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
765 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
766 | "dependencies": {
767 | "forwarded": "0.2.0",
768 | "ipaddr.js": "1.9.1"
769 | },
770 | "engines": {
771 | "node": ">= 0.10"
772 | }
773 | },
774 | "node_modules/pstree.remy": {
775 | "version": "1.1.8",
776 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
777 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
778 | },
779 | "node_modules/qs": {
780 | "version": "6.11.0",
781 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
782 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
783 | "dependencies": {
784 | "side-channel": "^1.0.4"
785 | },
786 | "engines": {
787 | "node": ">=0.6"
788 | },
789 | "funding": {
790 | "url": "https://github.com/sponsors/ljharb"
791 | }
792 | },
793 | "node_modules/range-parser": {
794 | "version": "1.2.1",
795 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
796 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
797 | "engines": {
798 | "node": ">= 0.6"
799 | }
800 | },
801 | "node_modules/raw-body": {
802 | "version": "2.5.1",
803 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
804 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
805 | "dependencies": {
806 | "bytes": "3.1.2",
807 | "http-errors": "2.0.0",
808 | "iconv-lite": "0.4.24",
809 | "unpipe": "1.0.0"
810 | },
811 | "engines": {
812 | "node": ">= 0.8"
813 | }
814 | },
815 | "node_modules/readdirp": {
816 | "version": "3.6.0",
817 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
818 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
819 | "dependencies": {
820 | "picomatch": "^2.2.1"
821 | },
822 | "engines": {
823 | "node": ">=8.10.0"
824 | }
825 | },
826 | "node_modules/safe-buffer": {
827 | "version": "5.2.1",
828 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
829 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
830 | "funding": [
831 | {
832 | "type": "github",
833 | "url": "https://github.com/sponsors/feross"
834 | },
835 | {
836 | "type": "patreon",
837 | "url": "https://www.patreon.com/feross"
838 | },
839 | {
840 | "type": "consulting",
841 | "url": "https://feross.org/support"
842 | }
843 | ]
844 | },
845 | "node_modules/safer-buffer": {
846 | "version": "2.1.2",
847 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
848 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
849 | },
850 | "node_modules/semver": {
851 | "version": "5.7.1",
852 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
853 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
854 | "bin": {
855 | "semver": "bin/semver"
856 | }
857 | },
858 | "node_modules/send": {
859 | "version": "0.18.0",
860 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
861 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
862 | "dependencies": {
863 | "debug": "2.6.9",
864 | "depd": "2.0.0",
865 | "destroy": "1.2.0",
866 | "encodeurl": "~1.0.2",
867 | "escape-html": "~1.0.3",
868 | "etag": "~1.8.1",
869 | "fresh": "0.5.2",
870 | "http-errors": "2.0.0",
871 | "mime": "1.6.0",
872 | "ms": "2.1.3",
873 | "on-finished": "2.4.1",
874 | "range-parser": "~1.2.1",
875 | "statuses": "2.0.1"
876 | },
877 | "engines": {
878 | "node": ">= 0.8.0"
879 | }
880 | },
881 | "node_modules/send/node_modules/ms": {
882 | "version": "2.1.3",
883 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
884 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
885 | },
886 | "node_modules/serve-static": {
887 | "version": "1.15.0",
888 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
889 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
890 | "dependencies": {
891 | "encodeurl": "~1.0.2",
892 | "escape-html": "~1.0.3",
893 | "parseurl": "~1.3.3",
894 | "send": "0.18.0"
895 | },
896 | "engines": {
897 | "node": ">= 0.8.0"
898 | }
899 | },
900 | "node_modules/setprototypeof": {
901 | "version": "1.2.0",
902 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
903 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
904 | },
905 | "node_modules/side-channel": {
906 | "version": "1.0.4",
907 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
908 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
909 | "dependencies": {
910 | "call-bind": "^1.0.0",
911 | "get-intrinsic": "^1.0.2",
912 | "object-inspect": "^1.9.0"
913 | },
914 | "funding": {
915 | "url": "https://github.com/sponsors/ljharb"
916 | }
917 | },
918 | "node_modules/simple-update-notifier": {
919 | "version": "1.1.0",
920 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz",
921 | "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==",
922 | "dependencies": {
923 | "semver": "~7.0.0"
924 | },
925 | "engines": {
926 | "node": ">=8.10.0"
927 | }
928 | },
929 | "node_modules/simple-update-notifier/node_modules/semver": {
930 | "version": "7.0.0",
931 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
932 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
933 | "bin": {
934 | "semver": "bin/semver.js"
935 | }
936 | },
937 | "node_modules/statuses": {
938 | "version": "2.0.1",
939 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
940 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
941 | "engines": {
942 | "node": ">= 0.8"
943 | }
944 | },
945 | "node_modules/supports-color": {
946 | "version": "5.5.0",
947 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
948 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
949 | "dependencies": {
950 | "has-flag": "^3.0.0"
951 | },
952 | "engines": {
953 | "node": ">=4"
954 | }
955 | },
956 | "node_modules/to-regex-range": {
957 | "version": "5.0.1",
958 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
959 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
960 | "dependencies": {
961 | "is-number": "^7.0.0"
962 | },
963 | "engines": {
964 | "node": ">=8.0"
965 | }
966 | },
967 | "node_modules/toidentifier": {
968 | "version": "1.0.1",
969 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
970 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
971 | "engines": {
972 | "node": ">=0.6"
973 | }
974 | },
975 | "node_modules/touch": {
976 | "version": "3.1.0",
977 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
978 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
979 | "dependencies": {
980 | "nopt": "~1.0.10"
981 | },
982 | "bin": {
983 | "nodetouch": "bin/nodetouch.js"
984 | }
985 | },
986 | "node_modules/type-is": {
987 | "version": "1.6.18",
988 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
989 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
990 | "dependencies": {
991 | "media-typer": "0.3.0",
992 | "mime-types": "~2.1.24"
993 | },
994 | "engines": {
995 | "node": ">= 0.6"
996 | }
997 | },
998 | "node_modules/undefsafe": {
999 | "version": "2.0.5",
1000 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
1001 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="
1002 | },
1003 | "node_modules/unpipe": {
1004 | "version": "1.0.0",
1005 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1006 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1007 | "engines": {
1008 | "node": ">= 0.8"
1009 | }
1010 | },
1011 | "node_modules/utils-merge": {
1012 | "version": "1.0.1",
1013 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1014 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
1015 | "engines": {
1016 | "node": ">= 0.4.0"
1017 | }
1018 | },
1019 | "node_modules/vary": {
1020 | "version": "1.1.2",
1021 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1022 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1023 | "engines": {
1024 | "node": ">= 0.8"
1025 | }
1026 | }
1027 | },
1028 | "dependencies": {
1029 | "abbrev": {
1030 | "version": "1.1.1",
1031 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
1032 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
1033 | },
1034 | "accepts": {
1035 | "version": "1.3.8",
1036 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
1037 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
1038 | "requires": {
1039 | "mime-types": "~2.1.34",
1040 | "negotiator": "0.6.3"
1041 | }
1042 | },
1043 | "anymatch": {
1044 | "version": "3.1.3",
1045 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
1046 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
1047 | "requires": {
1048 | "normalize-path": "^3.0.0",
1049 | "picomatch": "^2.0.4"
1050 | }
1051 | },
1052 | "array-flatten": {
1053 | "version": "1.1.1",
1054 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
1055 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
1056 | },
1057 | "asynckit": {
1058 | "version": "0.4.0",
1059 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
1060 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
1061 | },
1062 | "axios": {
1063 | "version": "0.26.1",
1064 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz",
1065 | "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
1066 | "requires": {
1067 | "follow-redirects": "^1.14.8"
1068 | }
1069 | },
1070 | "balanced-match": {
1071 | "version": "1.0.2",
1072 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1073 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
1074 | },
1075 | "binary-extensions": {
1076 | "version": "2.2.0",
1077 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
1078 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
1079 | },
1080 | "body-parser": {
1081 | "version": "1.20.1",
1082 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
1083 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
1084 | "requires": {
1085 | "bytes": "3.1.2",
1086 | "content-type": "~1.0.4",
1087 | "debug": "2.6.9",
1088 | "depd": "2.0.0",
1089 | "destroy": "1.2.0",
1090 | "http-errors": "2.0.0",
1091 | "iconv-lite": "0.4.24",
1092 | "on-finished": "2.4.1",
1093 | "qs": "6.11.0",
1094 | "raw-body": "2.5.1",
1095 | "type-is": "~1.6.18",
1096 | "unpipe": "1.0.0"
1097 | }
1098 | },
1099 | "brace-expansion": {
1100 | "version": "1.1.11",
1101 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1102 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1103 | "requires": {
1104 | "balanced-match": "^1.0.0",
1105 | "concat-map": "0.0.1"
1106 | }
1107 | },
1108 | "braces": {
1109 | "version": "3.0.2",
1110 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
1111 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
1112 | "requires": {
1113 | "fill-range": "^7.0.1"
1114 | }
1115 | },
1116 | "bytes": {
1117 | "version": "3.1.2",
1118 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
1119 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
1120 | },
1121 | "call-bind": {
1122 | "version": "1.0.2",
1123 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
1124 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
1125 | "requires": {
1126 | "function-bind": "^1.1.1",
1127 | "get-intrinsic": "^1.0.2"
1128 | }
1129 | },
1130 | "chokidar": {
1131 | "version": "3.5.3",
1132 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
1133 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
1134 | "requires": {
1135 | "anymatch": "~3.1.2",
1136 | "braces": "~3.0.2",
1137 | "fsevents": "~2.3.2",
1138 | "glob-parent": "~5.1.2",
1139 | "is-binary-path": "~2.1.0",
1140 | "is-glob": "~4.0.1",
1141 | "normalize-path": "~3.0.0",
1142 | "readdirp": "~3.6.0"
1143 | }
1144 | },
1145 | "combined-stream": {
1146 | "version": "1.0.8",
1147 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
1148 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
1149 | "requires": {
1150 | "delayed-stream": "~1.0.0"
1151 | }
1152 | },
1153 | "concat-map": {
1154 | "version": "0.0.1",
1155 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1156 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
1157 | },
1158 | "content-disposition": {
1159 | "version": "0.5.4",
1160 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
1161 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
1162 | "requires": {
1163 | "safe-buffer": "5.2.1"
1164 | }
1165 | },
1166 | "content-type": {
1167 | "version": "1.0.4",
1168 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
1169 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
1170 | },
1171 | "cookie": {
1172 | "version": "0.5.0",
1173 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
1174 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
1175 | },
1176 | "cookie-signature": {
1177 | "version": "1.0.6",
1178 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
1179 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
1180 | },
1181 | "cors": {
1182 | "version": "2.8.5",
1183 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
1184 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
1185 | "requires": {
1186 | "object-assign": "^4",
1187 | "vary": "^1"
1188 | }
1189 | },
1190 | "debug": {
1191 | "version": "2.6.9",
1192 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1193 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1194 | "requires": {
1195 | "ms": "2.0.0"
1196 | }
1197 | },
1198 | "delayed-stream": {
1199 | "version": "1.0.0",
1200 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
1201 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
1202 | },
1203 | "depd": {
1204 | "version": "2.0.0",
1205 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
1206 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
1207 | },
1208 | "destroy": {
1209 | "version": "1.2.0",
1210 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
1211 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
1212 | },
1213 | "dotenv": {
1214 | "version": "16.0.3",
1215 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
1216 | "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ=="
1217 | },
1218 | "ee-first": {
1219 | "version": "1.1.1",
1220 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
1221 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
1222 | },
1223 | "encodeurl": {
1224 | "version": "1.0.2",
1225 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
1226 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
1227 | },
1228 | "escape-html": {
1229 | "version": "1.0.3",
1230 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
1231 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
1232 | },
1233 | "etag": {
1234 | "version": "1.8.1",
1235 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
1236 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
1237 | },
1238 | "express": {
1239 | "version": "4.18.2",
1240 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
1241 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
1242 | "requires": {
1243 | "accepts": "~1.3.8",
1244 | "array-flatten": "1.1.1",
1245 | "body-parser": "1.20.1",
1246 | "content-disposition": "0.5.4",
1247 | "content-type": "~1.0.4",
1248 | "cookie": "0.5.0",
1249 | "cookie-signature": "1.0.6",
1250 | "debug": "2.6.9",
1251 | "depd": "2.0.0",
1252 | "encodeurl": "~1.0.2",
1253 | "escape-html": "~1.0.3",
1254 | "etag": "~1.8.1",
1255 | "finalhandler": "1.2.0",
1256 | "fresh": "0.5.2",
1257 | "http-errors": "2.0.0",
1258 | "merge-descriptors": "1.0.1",
1259 | "methods": "~1.1.2",
1260 | "on-finished": "2.4.1",
1261 | "parseurl": "~1.3.3",
1262 | "path-to-regexp": "0.1.7",
1263 | "proxy-addr": "~2.0.7",
1264 | "qs": "6.11.0",
1265 | "range-parser": "~1.2.1",
1266 | "safe-buffer": "5.2.1",
1267 | "send": "0.18.0",
1268 | "serve-static": "1.15.0",
1269 | "setprototypeof": "1.2.0",
1270 | "statuses": "2.0.1",
1271 | "type-is": "~1.6.18",
1272 | "utils-merge": "1.0.1",
1273 | "vary": "~1.1.2"
1274 | }
1275 | },
1276 | "fill-range": {
1277 | "version": "7.0.1",
1278 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1279 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1280 | "requires": {
1281 | "to-regex-range": "^5.0.1"
1282 | }
1283 | },
1284 | "finalhandler": {
1285 | "version": "1.2.0",
1286 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
1287 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
1288 | "requires": {
1289 | "debug": "2.6.9",
1290 | "encodeurl": "~1.0.2",
1291 | "escape-html": "~1.0.3",
1292 | "on-finished": "2.4.1",
1293 | "parseurl": "~1.3.3",
1294 | "statuses": "2.0.1",
1295 | "unpipe": "~1.0.0"
1296 | }
1297 | },
1298 | "follow-redirects": {
1299 | "version": "1.15.2",
1300 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
1301 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
1302 | },
1303 | "form-data": {
1304 | "version": "4.0.0",
1305 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
1306 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
1307 | "requires": {
1308 | "asynckit": "^0.4.0",
1309 | "combined-stream": "^1.0.8",
1310 | "mime-types": "^2.1.12"
1311 | }
1312 | },
1313 | "forwarded": {
1314 | "version": "0.2.0",
1315 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
1316 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
1317 | },
1318 | "fresh": {
1319 | "version": "0.5.2",
1320 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
1321 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
1322 | },
1323 | "fsevents": {
1324 | "version": "2.3.2",
1325 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1326 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1327 | "optional": true
1328 | },
1329 | "function-bind": {
1330 | "version": "1.1.1",
1331 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1332 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
1333 | },
1334 | "get-intrinsic": {
1335 | "version": "1.1.3",
1336 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
1337 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
1338 | "requires": {
1339 | "function-bind": "^1.1.1",
1340 | "has": "^1.0.3",
1341 | "has-symbols": "^1.0.3"
1342 | }
1343 | },
1344 | "glob-parent": {
1345 | "version": "5.1.2",
1346 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1347 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1348 | "requires": {
1349 | "is-glob": "^4.0.1"
1350 | }
1351 | },
1352 | "has": {
1353 | "version": "1.0.3",
1354 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1355 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1356 | "requires": {
1357 | "function-bind": "^1.1.1"
1358 | }
1359 | },
1360 | "has-flag": {
1361 | "version": "3.0.0",
1362 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1363 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
1364 | },
1365 | "has-symbols": {
1366 | "version": "1.0.3",
1367 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
1368 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
1369 | },
1370 | "http-errors": {
1371 | "version": "2.0.0",
1372 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
1373 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
1374 | "requires": {
1375 | "depd": "2.0.0",
1376 | "inherits": "2.0.4",
1377 | "setprototypeof": "1.2.0",
1378 | "statuses": "2.0.1",
1379 | "toidentifier": "1.0.1"
1380 | }
1381 | },
1382 | "iconv-lite": {
1383 | "version": "0.4.24",
1384 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1385 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1386 | "requires": {
1387 | "safer-buffer": ">= 2.1.2 < 3"
1388 | }
1389 | },
1390 | "ignore-by-default": {
1391 | "version": "1.0.1",
1392 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
1393 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="
1394 | },
1395 | "inherits": {
1396 | "version": "2.0.4",
1397 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1398 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1399 | },
1400 | "ipaddr.js": {
1401 | "version": "1.9.1",
1402 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1403 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
1404 | },
1405 | "is-binary-path": {
1406 | "version": "2.1.0",
1407 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1408 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1409 | "requires": {
1410 | "binary-extensions": "^2.0.0"
1411 | }
1412 | },
1413 | "is-extglob": {
1414 | "version": "2.1.1",
1415 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1416 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
1417 | },
1418 | "is-glob": {
1419 | "version": "4.0.3",
1420 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1421 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1422 | "requires": {
1423 | "is-extglob": "^2.1.1"
1424 | }
1425 | },
1426 | "is-number": {
1427 | "version": "7.0.0",
1428 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1429 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
1430 | },
1431 | "media-typer": {
1432 | "version": "0.3.0",
1433 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1434 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
1435 | },
1436 | "merge-descriptors": {
1437 | "version": "1.0.1",
1438 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
1439 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
1440 | },
1441 | "methods": {
1442 | "version": "1.1.2",
1443 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1444 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
1445 | },
1446 | "mime": {
1447 | "version": "1.6.0",
1448 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1449 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
1450 | },
1451 | "mime-db": {
1452 | "version": "1.52.0",
1453 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1454 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
1455 | },
1456 | "mime-types": {
1457 | "version": "2.1.35",
1458 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1459 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1460 | "requires": {
1461 | "mime-db": "1.52.0"
1462 | }
1463 | },
1464 | "minimatch": {
1465 | "version": "3.1.2",
1466 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1467 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1468 | "requires": {
1469 | "brace-expansion": "^1.1.7"
1470 | }
1471 | },
1472 | "ms": {
1473 | "version": "2.0.0",
1474 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1475 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
1476 | },
1477 | "negotiator": {
1478 | "version": "0.6.3",
1479 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1480 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
1481 | },
1482 | "nodemon": {
1483 | "version": "2.0.20",
1484 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz",
1485 | "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==",
1486 | "requires": {
1487 | "chokidar": "^3.5.2",
1488 | "debug": "^3.2.7",
1489 | "ignore-by-default": "^1.0.1",
1490 | "minimatch": "^3.1.2",
1491 | "pstree.remy": "^1.1.8",
1492 | "semver": "^5.7.1",
1493 | "simple-update-notifier": "^1.0.7",
1494 | "supports-color": "^5.5.0",
1495 | "touch": "^3.1.0",
1496 | "undefsafe": "^2.0.5"
1497 | },
1498 | "dependencies": {
1499 | "debug": {
1500 | "version": "3.2.7",
1501 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
1502 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
1503 | "requires": {
1504 | "ms": "^2.1.1"
1505 | }
1506 | },
1507 | "ms": {
1508 | "version": "2.1.3",
1509 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1510 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1511 | }
1512 | }
1513 | },
1514 | "nopt": {
1515 | "version": "1.0.10",
1516 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
1517 | "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
1518 | "requires": {
1519 | "abbrev": "1"
1520 | }
1521 | },
1522 | "normalize-path": {
1523 | "version": "3.0.0",
1524 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1525 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
1526 | },
1527 | "object-assign": {
1528 | "version": "4.1.1",
1529 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1530 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
1531 | },
1532 | "object-inspect": {
1533 | "version": "1.12.2",
1534 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
1535 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
1536 | },
1537 | "on-finished": {
1538 | "version": "2.4.1",
1539 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
1540 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
1541 | "requires": {
1542 | "ee-first": "1.1.1"
1543 | }
1544 | },
1545 | "openai": {
1546 | "version": "3.1.0",
1547 | "resolved": "https://registry.npmjs.org/openai/-/openai-3.1.0.tgz",
1548 | "integrity": "sha512-v5kKFH5o+8ld+t0arudj833Mgm3GcgBnbyN9946bj6u7bvel4Yg6YFz2A4HLIYDzmMjIo0s6vSG9x73kOwvdCg==",
1549 | "requires": {
1550 | "axios": "^0.26.0",
1551 | "form-data": "^4.0.0"
1552 | }
1553 | },
1554 | "parseurl": {
1555 | "version": "1.3.3",
1556 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1557 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
1558 | },
1559 | "path-to-regexp": {
1560 | "version": "0.1.7",
1561 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1562 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
1563 | },
1564 | "picomatch": {
1565 | "version": "2.3.1",
1566 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1567 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
1568 | },
1569 | "proxy-addr": {
1570 | "version": "2.0.7",
1571 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1572 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1573 | "requires": {
1574 | "forwarded": "0.2.0",
1575 | "ipaddr.js": "1.9.1"
1576 | }
1577 | },
1578 | "pstree.remy": {
1579 | "version": "1.1.8",
1580 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
1581 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
1582 | },
1583 | "qs": {
1584 | "version": "6.11.0",
1585 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
1586 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
1587 | "requires": {
1588 | "side-channel": "^1.0.4"
1589 | }
1590 | },
1591 | "range-parser": {
1592 | "version": "1.2.1",
1593 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1594 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
1595 | },
1596 | "raw-body": {
1597 | "version": "2.5.1",
1598 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
1599 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
1600 | "requires": {
1601 | "bytes": "3.1.2",
1602 | "http-errors": "2.0.0",
1603 | "iconv-lite": "0.4.24",
1604 | "unpipe": "1.0.0"
1605 | }
1606 | },
1607 | "readdirp": {
1608 | "version": "3.6.0",
1609 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1610 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1611 | "requires": {
1612 | "picomatch": "^2.2.1"
1613 | }
1614 | },
1615 | "safe-buffer": {
1616 | "version": "5.2.1",
1617 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1618 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1619 | },
1620 | "safer-buffer": {
1621 | "version": "2.1.2",
1622 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1623 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1624 | },
1625 | "semver": {
1626 | "version": "5.7.1",
1627 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1628 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
1629 | },
1630 | "send": {
1631 | "version": "0.18.0",
1632 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
1633 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
1634 | "requires": {
1635 | "debug": "2.6.9",
1636 | "depd": "2.0.0",
1637 | "destroy": "1.2.0",
1638 | "encodeurl": "~1.0.2",
1639 | "escape-html": "~1.0.3",
1640 | "etag": "~1.8.1",
1641 | "fresh": "0.5.2",
1642 | "http-errors": "2.0.0",
1643 | "mime": "1.6.0",
1644 | "ms": "2.1.3",
1645 | "on-finished": "2.4.1",
1646 | "range-parser": "~1.2.1",
1647 | "statuses": "2.0.1"
1648 | },
1649 | "dependencies": {
1650 | "ms": {
1651 | "version": "2.1.3",
1652 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1653 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1654 | }
1655 | }
1656 | },
1657 | "serve-static": {
1658 | "version": "1.15.0",
1659 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
1660 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
1661 | "requires": {
1662 | "encodeurl": "~1.0.2",
1663 | "escape-html": "~1.0.3",
1664 | "parseurl": "~1.3.3",
1665 | "send": "0.18.0"
1666 | }
1667 | },
1668 | "setprototypeof": {
1669 | "version": "1.2.0",
1670 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1671 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1672 | },
1673 | "side-channel": {
1674 | "version": "1.0.4",
1675 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1676 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1677 | "requires": {
1678 | "call-bind": "^1.0.0",
1679 | "get-intrinsic": "^1.0.2",
1680 | "object-inspect": "^1.9.0"
1681 | }
1682 | },
1683 | "simple-update-notifier": {
1684 | "version": "1.1.0",
1685 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz",
1686 | "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==",
1687 | "requires": {
1688 | "semver": "~7.0.0"
1689 | },
1690 | "dependencies": {
1691 | "semver": {
1692 | "version": "7.0.0",
1693 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
1694 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A=="
1695 | }
1696 | }
1697 | },
1698 | "statuses": {
1699 | "version": "2.0.1",
1700 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1701 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
1702 | },
1703 | "supports-color": {
1704 | "version": "5.5.0",
1705 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1706 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1707 | "requires": {
1708 | "has-flag": "^3.0.0"
1709 | }
1710 | },
1711 | "to-regex-range": {
1712 | "version": "5.0.1",
1713 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1714 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1715 | "requires": {
1716 | "is-number": "^7.0.0"
1717 | }
1718 | },
1719 | "toidentifier": {
1720 | "version": "1.0.1",
1721 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1722 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
1723 | },
1724 | "touch": {
1725 | "version": "3.1.0",
1726 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
1727 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
1728 | "requires": {
1729 | "nopt": "~1.0.10"
1730 | }
1731 | },
1732 | "type-is": {
1733 | "version": "1.6.18",
1734 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1735 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1736 | "requires": {
1737 | "media-typer": "0.3.0",
1738 | "mime-types": "~2.1.24"
1739 | }
1740 | },
1741 | "undefsafe": {
1742 | "version": "2.0.5",
1743 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
1744 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="
1745 | },
1746 | "unpipe": {
1747 | "version": "1.0.0",
1748 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1749 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
1750 | },
1751 | "utils-merge": {
1752 | "version": "1.0.1",
1753 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1754 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
1755 | },
1756 | "vary": {
1757 | "version": "1.1.2",
1758 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1759 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
1760 | }
1761 | }
1762 | }
1763 |
--------------------------------------------------------------------------------
/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "codex-server",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "server": "nodemon server"
8 | },
9 | "dependencies": {
10 | "cors": "^2.8.5",
11 | "dotenv": "^16.0.3",
12 | "express": "^4.18.2",
13 | "nodemon": "^2.0.20",
14 | "openai": "^3.1.0"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/server/server.js:
--------------------------------------------------------------------------------
1 | import express from 'express'
2 | import * as dotenv from 'dotenv'
3 | import cors from 'cors'
4 | import { Configuration, OpenAIApi } from 'openai'
5 |
6 | dotenv.config()
7 |
8 | const configuration = new Configuration({
9 | apiKey: process.env.OPENAI_API_KEY,
10 | });
11 |
12 | const openai = new OpenAIApi(configuration);
13 |
14 | const app = express()
15 | app.use(cors())
16 | app.use(express.json())
17 |
18 | app.get('/', async (req, res) => {
19 | res.status(200).send({
20 | message: 'Hello from CodeX!'
21 | })
22 | })
23 |
24 | app.post('/', async (req, res) => {
25 | try {
26 | const prompt = req.body.prompt;
27 |
28 | const response = await openai.createCompletion({
29 | model: "text-davinci-003",
30 | prompt: `${prompt}`,
31 | temperature: 0, // Higher values means the model will take more risks.
32 | max_tokens: 3000, // The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 4096).
33 | top_p: 1, // alternative to sampling with temperature, called nucleus sampling
34 | frequency_penalty: 0.5, // Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
35 | presence_penalty: 0, // Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.
36 | });
37 |
38 | res.status(200).send({
39 | bot: response.data.choices[0].text
40 | });
41 |
42 | } catch (error) {
43 | console.error(error)
44 | res.status(500).send(error || 'Something went wrong');
45 | }
46 | })
47 |
48 | app.listen(5000, () => console.log('AI server started on http://localhost:5000'))
--------------------------------------------------------------------------------