Amrpyt commited on
Commit
2ba1dc3
1 Parent(s): b0f37a7

Upload 10 files

Browse files
Files changed (10) hide show
  1. .dockerignore +6 -0
  2. .env.example +10 -0
  3. Dockerfile +17 -0
  4. LICENSE +661 -0
  5. README.md +160 -10
  6. package-lock.json +1073 -0
  7. package.json +30 -0
  8. start.bat +10 -0
  9. start.sh +10 -0
  10. tsconfig.json +28 -0
.dockerignore ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ docker-compose/
2
+ .github/
3
+ .gitignore
4
+ start.bat
5
+ Dockerfile
6
+ .dockerignore
.env.example ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ SERVER_PORT=3040
2
+ CLOUDFLARED=true
3
+
4
+ PROXY=false
5
+ PROXY_HOST=proxy.example.com
6
+ PROXY_PORT=8080
7
+ PROXY_AUTH=false
8
+ PROXY_USERNAME=
9
+ PROXY_PASSWORD=
10
+ PROXY_PROTOCOL=http
Dockerfile ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Use a Node.js base image
2
+ FROM node:19-alpine
3
+
4
+ # Set the working directory
5
+ WORKDIR /app
6
+
7
+ # Copy source code
8
+ COPY . .
9
+
10
+ # Install dependencies
11
+ RUN npm install
12
+
13
+ # Expose the port the app runs on
14
+ EXPOSE 3040
15
+
16
+ # Command to run the start script
17
+ CMD ["sh", "start.sh"]
LICENSE ADDED
@@ -0,0 +1,661 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GNU AFFERO GENERAL PUBLIC LICENSE
2
+ Version 3, 19 November 2007
3
+
4
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
5
+ Everyone is permitted to copy and distribute verbatim copies
6
+ of this license document, but changing it is not allowed.
7
+
8
+ Preamble
9
+
10
+ The GNU Affero General Public License is a free, copyleft license for
11
+ software and other kinds of works, specifically designed to ensure
12
+ cooperation with the community in the case of network server software.
13
+
14
+ The licenses for most software and other practical works are designed
15
+ to take away your freedom to share and change the works. By contrast,
16
+ our General Public Licenses are intended to guarantee your freedom to
17
+ share and change all versions of a program--to make sure it remains free
18
+ software for all its users.
19
+
20
+ When we speak of free software, we are referring to freedom, not
21
+ price. Our General Public Licenses are designed to make sure that you
22
+ have the freedom to distribute copies of free software (and charge for
23
+ them if you wish), that you receive source code or can get it if you
24
+ want it, that you can change the software or use pieces of it in new
25
+ free programs, and that you know you can do these things.
26
+
27
+ Developers that use our General Public Licenses protect your rights
28
+ with two steps: (1) assert copyright on the software, and (2) offer
29
+ you this License which gives you legal permission to copy, distribute
30
+ and/or modify the software.
31
+
32
+ A secondary benefit of defending all users' freedom is that
33
+ improvements made in alternate versions of the program, if they
34
+ receive widespread use, become available for other developers to
35
+ incorporate. Many developers of free software are heartened and
36
+ encouraged by the resulting cooperation. However, in the case of
37
+ software used on network servers, this result may fail to come about.
38
+ The GNU General Public License permits making a modified version and
39
+ letting the public access it on a server without ever releasing its
40
+ source code to the public.
41
+
42
+ The GNU Affero General Public License is designed specifically to
43
+ ensure that, in such cases, the modified source code becomes available
44
+ to the community. It requires the operator of a network server to
45
+ provide the source code of the modified version running there to the
46
+ users of that server. Therefore, public use of a modified version, on
47
+ a publicly accessible server, gives the public access to the source
48
+ code of the modified version.
49
+
50
+ An older license, called the Affero General Public License and
51
+ published by Affero, was designed to accomplish similar goals. This is
52
+ a different license, not a version of the Affero GPL, but Affero has
53
+ released a new version of the Affero GPL which permits relicensing under
54
+ this license.
55
+
56
+ The precise terms and conditions for copying, distribution and
57
+ modification follow.
58
+
59
+ TERMS AND CONDITIONS
60
+
61
+ 0. Definitions.
62
+
63
+ "This License" refers to version 3 of the GNU Affero General Public License.
64
+
65
+ "Copyright" also means copyright-like laws that apply to other kinds of
66
+ works, such as semiconductor masks.
67
+
68
+ "The Program" refers to any copyrightable work licensed under this
69
+ License. Each licensee is addressed as "you". "Licensees" and
70
+ "recipients" may be individuals or organizations.
71
+
72
+ To "modify" a work means to copy from or adapt all or part of the work
73
+ in a fashion requiring copyright permission, other than the making of an
74
+ exact copy. The resulting work is called a "modified version" of the
75
+ earlier work or a work "based on" the earlier work.
76
+
77
+ A "covered work" means either the unmodified Program or a work based
78
+ on the Program.
79
+
80
+ To "propagate" a work means to do anything with it that, without
81
+ permission, would make you directly or secondarily liable for
82
+ infringement under applicable copyright law, except executing it on a
83
+ computer or modifying a private copy. Propagation includes copying,
84
+ distribution (with or without modification), making available to the
85
+ public, and in some countries other activities as well.
86
+
87
+ To "convey" a work means any kind of propagation that enables other
88
+ parties to make or receive copies. Mere interaction with a user through
89
+ a computer network, with no transfer of a copy, is not conveying.
90
+
91
+ An interactive user interface displays "Appropriate Legal Notices"
92
+ to the extent that it includes a convenient and prominently visible
93
+ feature that (1) displays an appropriate copyright notice, and (2)
94
+ tells the user that there is no warranty for the work (except to the
95
+ extent that warranties are provided), that licensees may convey the
96
+ work under this License, and how to view a copy of this License. If
97
+ the interface presents a list of user commands or options, such as a
98
+ menu, a prominent item in the list meets this criterion.
99
+
100
+ 1. Source Code.
101
+
102
+ The "source code" for a work means the preferred form of the work
103
+ for making modifications to it. "Object code" means any non-source
104
+ form of a work.
105
+
106
+ A "Standard Interface" means an interface that either is an official
107
+ standard defined by a recognized standards body, or, in the case of
108
+ interfaces specified for a particular programming language, one that
109
+ is widely used among developers working in that language.
110
+
111
+ The "System Libraries" of an executable work include anything, other
112
+ than the work as a whole, that (a) is included in the normal form of
113
+ packaging a Major Component, but which is not part of that Major
114
+ Component, and (b) serves only to enable use of the work with that
115
+ Major Component, or to implement a Standard Interface for which an
116
+ implementation is available to the public in source code form. A
117
+ "Major Component", in this context, means a major essential component
118
+ (kernel, window system, and so on) of the specific operating system
119
+ (if any) on which the executable work runs, or a compiler used to
120
+ produce the work, or an object code interpreter used to run it.
121
+
122
+ The "Corresponding Source" for a work in object code form means all
123
+ the source code needed to generate, install, and (for an executable
124
+ work) run the object code and to modify the work, including scripts to
125
+ control those activities. However, it does not include the work's
126
+ System Libraries, or general-purpose tools or generally available free
127
+ programs which are used unmodified in performing those activities but
128
+ which are not part of the work. For example, Corresponding Source
129
+ includes interface definition files associated with source files for
130
+ the work, and the source code for shared libraries and dynamically
131
+ linked subprograms that the work is specifically designed to require,
132
+ such as by intimate data communication or control flow between those
133
+ subprograms and other parts of the work.
134
+
135
+ The Corresponding Source need not include anything that users
136
+ can regenerate automatically from other parts of the Corresponding
137
+ Source.
138
+
139
+ The Corresponding Source for a work in source code form is that
140
+ same work.
141
+
142
+ 2. Basic Permissions.
143
+
144
+ All rights granted under this License are granted for the term of
145
+ copyright on the Program, and are irrevocable provided the stated
146
+ conditions are met. This License explicitly affirms your unlimited
147
+ permission to run the unmodified Program. The output from running a
148
+ covered work is covered by this License only if the output, given its
149
+ content, constitutes a covered work. This License acknowledges your
150
+ rights of fair use or other equivalent, as provided by copyright law.
151
+
152
+ You may make, run and propagate covered works that you do not
153
+ convey, without conditions so long as your license otherwise remains
154
+ in force. You may convey covered works to others for the sole purpose
155
+ of having them make modifications exclusively for you, or provide you
156
+ with facilities for running those works, provided that you comply with
157
+ the terms of this License in conveying all material for which you do
158
+ not control copyright. Those thus making or running the covered works
159
+ for you must do so exclusively on your behalf, under your direction
160
+ and control, on terms that prohibit them from making any copies of
161
+ your copyrighted material outside their relationship with you.
162
+
163
+ Conveying under any other circumstances is permitted solely under
164
+ the conditions stated below. Sublicensing is not allowed; section 10
165
+ makes it unnecessary.
166
+
167
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
168
+
169
+ No covered work shall be deemed part of an effective technological
170
+ measure under any applicable law fulfilling obligations under article
171
+ 11 of the WIPO copyright treaty adopted on 20 December 1996, or
172
+ similar laws prohibiting or restricting circumvention of such
173
+ measures.
174
+
175
+ When you convey a covered work, you waive any legal power to forbid
176
+ circumvention of technological measures to the extent such circumvention
177
+ is effected by exercising rights under this License with respect to
178
+ the covered work, and you disclaim any intention to limit operation or
179
+ modification of the work as a means of enforcing, against the work's
180
+ users, your or third parties' legal rights to forbid circumvention of
181
+ technological measures.
182
+
183
+ 4. Conveying Verbatim Copies.
184
+
185
+ You may convey verbatim copies of the Program's source code as you
186
+ receive it, in any medium, provided that you conspicuously and
187
+ appropriately publish on each copy an appropriate copyright notice;
188
+ keep intact all notices stating that this License and any
189
+ non-permissive terms added in accord with section 7 apply to the code;
190
+ keep intact all notices of the absence of any warranty; and give all
191
+ recipients a copy of this License along with the Program.
192
+
193
+ You may charge any price or no price for each copy that you convey,
194
+ and you may offer support or warranty protection for a fee.
195
+
196
+ 5. Conveying Modified Source Versions.
197
+
198
+ You may convey a work based on the Program, or the modifications to
199
+ produce it from the Program, in the form of source code under the
200
+ terms of section 4, provided that you also meet all of these conditions:
201
+
202
+ a) The work must carry prominent notices stating that you modified
203
+ it, and giving a relevant date.
204
+
205
+ b) The work must carry prominent notices stating that it is
206
+ released under this License and any conditions added under section
207
+ 7. This requirement modifies the requirement in section 4 to
208
+ "keep intact all notices".
209
+
210
+ c) You must license the entire work, as a whole, under this
211
+ License to anyone who comes into possession of a copy. This
212
+ License will therefore apply, along with any applicable section 7
213
+ additional terms, to the whole of the work, and all its parts,
214
+ regardless of how they are packaged. This License gives no
215
+ permission to license the work in any other way, but it does not
216
+ invalidate such permission if you have separately received it.
217
+
218
+ d) If the work has interactive user interfaces, each must display
219
+ Appropriate Legal Notices; however, if the Program has interactive
220
+ interfaces that do not display Appropriate Legal Notices, your
221
+ work need not make them do so.
222
+
223
+ A compilation of a covered work with other separate and independent
224
+ works, which are not by their nature extensions of the covered work,
225
+ and which are not combined with it such as to form a larger program,
226
+ in or on a volume of a storage or distribution medium, is called an
227
+ "aggregate" if the compilation and its resulting copyright are not
228
+ used to limit the access or legal rights of the compilation's users
229
+ beyond what the individual works permit. Inclusion of a covered work
230
+ in an aggregate does not cause this License to apply to the other
231
+ parts of the aggregate.
232
+
233
+ 6. Conveying Non-Source Forms.
234
+
235
+ You may convey a covered work in object code form under the terms
236
+ of sections 4 and 5, provided that you also convey the
237
+ machine-readable Corresponding Source under the terms of this License,
238
+ in one of these ways:
239
+
240
+ a) Convey the object code in, or embodied in, a physical product
241
+ (including a physical distribution medium), accompanied by the
242
+ Corresponding Source fixed on a durable physical medium
243
+ customarily used for software interchange.
244
+
245
+ b) Convey the object code in, or embodied in, a physical product
246
+ (including a physical distribution medium), accompanied by a
247
+ written offer, valid for at least three years and valid for as
248
+ long as you offer spare parts or customer support for that product
249
+ model, to give anyone who possesses the object code either (1) a
250
+ copy of the Corresponding Source for all the software in the
251
+ product that is covered by this License, on a durable physical
252
+ medium customarily used for software interchange, for a price no
253
+ more than your reasonable cost of physically performing this
254
+ conveying of source, or (2) access to copy the
255
+ Corresponding Source from a network server at no charge.
256
+
257
+ c) Convey individual copies of the object code with a copy of the
258
+ written offer to provide the Corresponding Source. This
259
+ alternative is allowed only occasionally and noncommercially, and
260
+ only if you received the object code with such an offer, in accord
261
+ with subsection 6b.
262
+
263
+ d) Convey the object code by offering access from a designated
264
+ place (gratis or for a charge), and offer equivalent access to the
265
+ Corresponding Source in the same way through the same place at no
266
+ further charge. You need not require recipients to copy the
267
+ Corresponding Source along with the object code. If the place to
268
+ copy the object code is a network server, the Corresponding Source
269
+ may be on a different server (operated by you or a third party)
270
+ that supports equivalent copying facilities, provided you maintain
271
+ clear directions next to the object code saying where to find the
272
+ Corresponding Source. Regardless of what server hosts the
273
+ Corresponding Source, you remain obligated to ensure that it is
274
+ available for as long as needed to satisfy these requirements.
275
+
276
+ e) Convey the object code using peer-to-peer transmission, provided
277
+ you inform other peers where the object code and Corresponding
278
+ Source of the work are being offered to the general public at no
279
+ charge under subsection 6d.
280
+
281
+ A separable portion of the object code, whose source code is excluded
282
+ from the Corresponding Source as a System Library, need not be
283
+ included in conveying the object code work.
284
+
285
+ A "User Product" is either (1) a "consumer product", which means any
286
+ tangible personal property which is normally used for personal, family,
287
+ or household purposes, or (2) anything designed or sold for incorporation
288
+ into a dwelling. In determining whether a product is a consumer product,
289
+ doubtful cases shall be resolved in favor of coverage. For a particular
290
+ product received by a particular user, "normally used" refers to a
291
+ typical or common use of that class of product, regardless of the status
292
+ of the particular user or of the way in which the particular user
293
+ actually uses, or expects or is expected to use, the product. A product
294
+ is a consumer product regardless of whether the product has substantial
295
+ commercial, industrial or non-consumer uses, unless such uses represent
296
+ the only significant mode of use of the product.
297
+
298
+ "Installation Information" for a User Product means any methods,
299
+ procedures, authorization keys, or other information required to install
300
+ and execute modified versions of a covered work in that User Product from
301
+ a modified version of its Corresponding Source. The information must
302
+ suffice to ensure that the continued functioning of the modified object
303
+ code is in no case prevented or interfered with solely because
304
+ modification has been made.
305
+
306
+ If you convey an object code work under this section in, or with, or
307
+ specifically for use in, a User Product, and the conveying occurs as
308
+ part of a transaction in which the right of possession and use of the
309
+ User Product is transferred to the recipient in perpetuity or for a
310
+ fixed term (regardless of how the transaction is characterized), the
311
+ Corresponding Source conveyed under this section must be accompanied
312
+ by the Installation Information. But this requirement does not apply
313
+ if neither you nor any third party retains the ability to install
314
+ modified object code on the User Product (for example, the work has
315
+ been installed in ROM).
316
+
317
+ The requirement to provide Installation Information does not include a
318
+ requirement to continue to provide support service, warranty, or updates
319
+ for a work that has been modified or installed by the recipient, or for
320
+ the User Product in which it has been modified or installed. Access to a
321
+ network may be denied when the modification itself materially and
322
+ adversely affects the operation of the network or violates the rules and
323
+ protocols for communication across the network.
324
+
325
+ Corresponding Source conveyed, and Installation Information provided,
326
+ in accord with this section must be in a format that is publicly
327
+ documented (and with an implementation available to the public in
328
+ source code form), and must require no special password or key for
329
+ unpacking, reading or copying.
330
+
331
+ 7. Additional Terms.
332
+
333
+ "Additional permissions" are terms that supplement the terms of this
334
+ License by making exceptions from one or more of its conditions.
335
+ Additional permissions that are applicable to the entire Program shall
336
+ be treated as though they were included in this License, to the extent
337
+ that they are valid under applicable law. If additional permissions
338
+ apply only to part of the Program, that part may be used separately
339
+ under those permissions, but the entire Program remains governed by
340
+ this License without regard to the additional permissions.
341
+
342
+ When you convey a copy of a covered work, you may at your option
343
+ remove any additional permissions from that copy, or from any part of
344
+ it. (Additional permissions may be written to require their own
345
+ removal in certain cases when you modify the work.) You may place
346
+ additional permissions on material, added by you to a covered work,
347
+ for which you have or can give appropriate copyright permission.
348
+
349
+ Notwithstanding any other provision of this License, for material you
350
+ add to a covered work, you may (if authorized by the copyright holders of
351
+ that material) supplement the terms of this License with terms:
352
+
353
+ a) Disclaiming warranty or limiting liability differently from the
354
+ terms of sections 15 and 16 of this License; or
355
+
356
+ b) Requiring preservation of specified reasonable legal notices or
357
+ author attributions in that material or in the Appropriate Legal
358
+ Notices displayed by works containing it; or
359
+
360
+ c) Prohibiting misrepresentation of the origin of that material, or
361
+ requiring that modified versions of such material be marked in
362
+ reasonable ways as different from the original version; or
363
+
364
+ d) Limiting the use for publicity purposes of names of licensors or
365
+ authors of the material; or
366
+
367
+ e) Declining to grant rights under trademark law for use of some
368
+ trade names, trademarks, or service marks; or
369
+
370
+ f) Requiring indemnification of licensors and authors of that
371
+ material by anyone who conveys the material (or modified versions of
372
+ it) with contractual assumptions of liability to the recipient, for
373
+ any liability that these contractual assumptions directly impose on
374
+ those licensors and authors.
375
+
376
+ All other non-permissive additional terms are considered "further
377
+ restrictions" within the meaning of section 10. If the Program as you
378
+ received it, or any part of it, contains a notice stating that it is
379
+ governed by this License along with a term that is a further
380
+ restriction, you may remove that term. If a license document contains
381
+ a further restriction but permits relicensing or conveying under this
382
+ License, you may add to a covered work material governed by the terms
383
+ of that license document, provided that the further restriction does
384
+ not survive such relicensing or conveying.
385
+
386
+ If you add terms to a covered work in accord with this section, you
387
+ must place, in the relevant source files, a statement of the
388
+ additional terms that apply to those files, or a notice indicating
389
+ where to find the applicable terms.
390
+
391
+ Additional terms, permissive or non-permissive, may be stated in the
392
+ form of a separately written license, or stated as exceptions;
393
+ the above requirements apply either way.
394
+
395
+ 8. Termination.
396
+
397
+ You may not propagate or modify a covered work except as expressly
398
+ provided under this License. Any attempt otherwise to propagate or
399
+ modify it is void, and will automatically terminate your rights under
400
+ this License (including any patent licenses granted under the third
401
+ paragraph of section 11).
402
+
403
+ However, if you cease all violation of this License, then your
404
+ license from a particular copyright holder is reinstated (a)
405
+ provisionally, unless and until the copyright holder explicitly and
406
+ finally terminates your license, and (b) permanently, if the copyright
407
+ holder fails to notify you of the violation by some reasonable means
408
+ prior to 60 days after the cessation.
409
+
410
+ Moreover, your license from a particular copyright holder is
411
+ reinstated permanently if the copyright holder notifies you of the
412
+ violation by some reasonable means, this is the first time you have
413
+ received notice of violation of this License (for any work) from that
414
+ copyright holder, and you cure the violation prior to 30 days after
415
+ your receipt of the notice.
416
+
417
+ Termination of your rights under this section does not terminate the
418
+ licenses of parties who have received copies or rights from you under
419
+ this License. If your rights have been terminated and not permanently
420
+ reinstated, you do not qualify to receive new licenses for the same
421
+ material under section 10.
422
+
423
+ 9. Acceptance Not Required for Having Copies.
424
+
425
+ You are not required to accept this License in order to receive or
426
+ run a copy of the Program. Ancillary propagation of a covered work
427
+ occurring solely as a consequence of using peer-to-peer transmission
428
+ to receive a copy likewise does not require acceptance. However,
429
+ nothing other than this License grants you permission to propagate or
430
+ modify any covered work. These actions infringe copyright if you do
431
+ not accept this License. Therefore, by modifying or propagating a
432
+ covered work, you indicate your acceptance of this License to do so.
433
+
434
+ 10. Automatic Licensing of Downstream Recipients.
435
+
436
+ Each time you convey a covered work, the recipient automatically
437
+ receives a license from the original licensors, to run, modify and
438
+ propagate that work, subject to this License. You are not responsible
439
+ for enforcing compliance by third parties with this License.
440
+
441
+ An "entity transaction" is a transaction transferring control of an
442
+ organization, or substantially all assets of one, or subdividing an
443
+ organization, or merging organizations. If propagation of a covered
444
+ work results from an entity transaction, each party to that
445
+ transaction who receives a copy of the work also receives whatever
446
+ licenses to the work the party's predecessor in interest had or could
447
+ give under the previous paragraph, plus a right to possession of the
448
+ Corresponding Source of the work from the predecessor in interest, if
449
+ the predecessor has it or can get it with reasonable efforts.
450
+
451
+ You may not impose any further restrictions on the exercise of the
452
+ rights granted or affirmed under this License. For example, you may
453
+ not impose a license fee, royalty, or other charge for exercise of
454
+ rights granted under this License, and you may not initiate litigation
455
+ (including a cross-claim or counterclaim in a lawsuit) alleging that
456
+ any patent claim is infringed by making, using, selling, offering for
457
+ sale, or importing the Program or any portion of it.
458
+
459
+ 11. Patents.
460
+
461
+ A "contributor" is a copyright holder who authorizes use under this
462
+ License of the Program or a work on which the Program is based. The
463
+ work thus licensed is called the contributor's "contributor version".
464
+
465
+ A contributor's "essential patent claims" are all patent claims
466
+ owned or controlled by the contributor, whether already acquired or
467
+ hereafter acquired, that would be infringed by some manner, permitted
468
+ by this License, of making, using, or selling its contributor version,
469
+ but do not include claims that would be infringed only as a
470
+ consequence of further modification of the contributor version. For
471
+ purposes of this definition, "control" includes the right to grant
472
+ patent sublicenses in a manner consistent with the requirements of
473
+ this License.
474
+
475
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
476
+ patent license under the contributor's essential patent claims, to
477
+ make, use, sell, offer for sale, import and otherwise run, modify and
478
+ propagate the contents of its contributor version.
479
+
480
+ In the following three paragraphs, a "patent license" is any express
481
+ agreement or commitment, however denominated, not to enforce a patent
482
+ (such as an express permission to practice a patent or covenant not to
483
+ sue for patent infringement). To "grant" such a patent license to a
484
+ party means to make such an agreement or commitment not to enforce a
485
+ patent against the party.
486
+
487
+ If you convey a covered work, knowingly relying on a patent license,
488
+ and the Corresponding Source of the work is not available for anyone
489
+ to copy, free of charge and under the terms of this License, through a
490
+ publicly available network server or other readily accessible means,
491
+ then you must either (1) cause the Corresponding Source to be so
492
+ available, or (2) arrange to deprive yourself of the benefit of the
493
+ patent license for this particular work, or (3) arrange, in a manner
494
+ consistent with the requirements of this License, to extend the patent
495
+ license to downstream recipients. "Knowingly relying" means you have
496
+ actual knowledge that, but for the patent license, your conveying the
497
+ covered work in a country, or your recipient's use of the covered work
498
+ in a country, would infringe one or more identifiable patents in that
499
+ country that you have reason to believe are valid.
500
+
501
+ If, pursuant to or in connection with a single transaction or
502
+ arrangement, you convey, or propagate by procuring conveyance of, a
503
+ covered work, and grant a patent license to some of the parties
504
+ receiving the covered work authorizing them to use, propagate, modify
505
+ or convey a specific copy of the covered work, then the patent license
506
+ you grant is automatically extended to all recipients of the covered
507
+ work and works based on it.
508
+
509
+ A patent license is "discriminatory" if it does not include within
510
+ the scope of its coverage, prohibits the exercise of, or is
511
+ conditioned on the non-exercise of one or more of the rights that are
512
+ specifically granted under this License. You may not convey a covered
513
+ work if you are a party to an arrangement with a third party that is
514
+ in the business of distributing software, under which you make payment
515
+ to the third party based on the extent of your activity of conveying
516
+ the work, and under which the third party grants, to any of the
517
+ parties who would receive the covered work from you, a discriminatory
518
+ patent license (a) in connection with copies of the covered work
519
+ conveyed by you (or copies made from those copies), or (b) primarily
520
+ for and in connection with specific products or compilations that
521
+ contain the covered work, unless you entered into that arrangement,
522
+ or that patent license was granted, prior to 28 March 2007.
523
+
524
+ Nothing in this License shall be construed as excluding or limiting
525
+ any implied license or other defenses to infringement that may
526
+ otherwise be available to you under applicable patent law.
527
+
528
+ 12. No Surrender of Others' Freedom.
529
+
530
+ If conditions are imposed on you (whether by court order, agreement or
531
+ otherwise) that contradict the conditions of this License, they do not
532
+ excuse you from the conditions of this License. If you cannot convey a
533
+ covered work so as to satisfy simultaneously your obligations under this
534
+ License and any other pertinent obligations, then as a consequence you may
535
+ not convey it at all. For example, if you agree to terms that obligate you
536
+ to collect a royalty for further conveying from those to whom you convey
537
+ the Program, the only way you could satisfy both those terms and this
538
+ License would be to refrain entirely from conveying the Program.
539
+
540
+ 13. Remote Network Interaction; Use with the GNU General Public License.
541
+
542
+ Notwithstanding any other provision of this License, if you modify the
543
+ Program, your modified version must prominently offer all users
544
+ interacting with it remotely through a computer network (if your version
545
+ supports such interaction) an opportunity to receive the Corresponding
546
+ Source of your version by providing access to the Corresponding Source
547
+ from a network server at no charge, through some standard or customary
548
+ means of facilitating copying of software. This Corresponding Source
549
+ shall include the Corresponding Source for any work covered by version 3
550
+ of the GNU General Public License that is incorporated pursuant to the
551
+ following paragraph.
552
+
553
+ Notwithstanding any other provision of this License, you have
554
+ permission to link or combine any covered work with a work licensed
555
+ under version 3 of the GNU General Public License into a single
556
+ combined work, and to convey the resulting work. The terms of this
557
+ License will continue to apply to the part which is the covered work,
558
+ but the work with which it is combined will remain governed by version
559
+ 3 of the GNU General Public License.
560
+
561
+ 14. Revised Versions of this License.
562
+
563
+ The Free Software Foundation may publish revised and/or new versions of
564
+ the GNU Affero General Public License from time to time. Such new versions
565
+ will be similar in spirit to the present version, but may differ in detail to
566
+ address new problems or concerns.
567
+
568
+ Each version is given a distinguishing version number. If the
569
+ Program specifies that a certain numbered version of the GNU Affero General
570
+ Public License "or any later version" applies to it, you have the
571
+ option of following the terms and conditions either of that numbered
572
+ version or of any later version published by the Free Software
573
+ Foundation. If the Program does not specify a version number of the
574
+ GNU Affero General Public License, you may choose any version ever published
575
+ by the Free Software Foundation.
576
+
577
+ If the Program specifies that a proxy can decide which future
578
+ versions of the GNU Affero General Public License can be used, that proxy's
579
+ public statement of acceptance of a version permanently authorizes you
580
+ to choose that version for the Program.
581
+
582
+ Later license versions may give you additional or different
583
+ permissions. However, no additional obligations are imposed on any
584
+ author or copyright holder as a result of your choosing to follow a
585
+ later version.
586
+
587
+ 15. Disclaimer of Warranty.
588
+
589
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
590
+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
591
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
592
+ OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
593
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
594
+ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
595
+ IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
596
+ ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
597
+
598
+ 16. Limitation of Liability.
599
+
600
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
601
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
602
+ THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
603
+ GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
604
+ USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
605
+ DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
606
+ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
607
+ EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
608
+ SUCH DAMAGES.
609
+
610
+ 17. Interpretation of Sections 15 and 16.
611
+
612
+ If the disclaimer of warranty and limitation of liability provided
613
+ above cannot be given local legal effect according to their terms,
614
+ reviewing courts shall apply local law that most closely approximates
615
+ an absolute waiver of all civil liability in connection with the
616
+ Program, unless a warranty or assumption of liability accompanies a
617
+ copy of the Program in return for a fee.
618
+
619
+ END OF TERMS AND CONDITIONS
620
+
621
+ How to Apply These Terms to Your New Programs
622
+
623
+ If you develop a new program, and you want it to be of the greatest
624
+ possible use to the public, the best way to achieve this is to make it
625
+ free software which everyone can redistribute and change under these terms.
626
+
627
+ To do so, attach the following notices to the program. It is safest
628
+ to attach them to the start of each source file to most effectively
629
+ state the exclusion of warranty; and each file should have at least
630
+ the "copyright" line and a pointer to where the full notice is found.
631
+
632
+ <one line to give the program's name and a brief idea of what it does.>
633
+ Copyright (C) <year> <name of author>
634
+
635
+ This program is free software: you can redistribute it and/or modify
636
+ it under the terms of the GNU Affero General Public License as published
637
+ by the Free Software Foundation, either version 3 of the License, or
638
+ (at your option) any later version.
639
+
640
+ This program is distributed in the hope that it will be useful,
641
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
642
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
643
+ GNU Affero General Public License for more details.
644
+
645
+ You should have received a copy of the GNU Affero General Public License
646
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
647
+
648
+ Also add information on how to contact you by electronic and paper mail.
649
+
650
+ If your software can interact with users remotely through a computer
651
+ network, you should also make sure that it provides a way for users to
652
+ get its source. For example, if your program is a web application, its
653
+ interface could display a "Source" link that leads users to an archive
654
+ of the code. There are many ways you could offer source, and different
655
+ solutions will be better for different programs; see section 13 for the
656
+ specific requirements.
657
+
658
+ You should also get your employer (if you work as a programmer) or school,
659
+ if any, to sign a "copyright disclaimer" for the program, if necessary.
660
+ For more information on this, and how to apply and follow the GNU AGPL, see
661
+ <https://www.gnu.org/licenses/>.
README.md CHANGED
@@ -1,10 +1,160 @@
1
- ---
2
- title: ChatGPT API
3
- emoji: 🔥
4
- colorFrom: red
5
- colorTo: blue
6
- sdk: docker
7
- pinned: false
8
- ---
9
-
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## ChatGPT `gpt-3.5-turbo` API for Free (as a Reverse Proxy)
2
+
3
+ Welcome to the ChatGPT API Free Reverse Proxy, offering free self-hosted API access to ChatGPT (`gpt-3.5-turbo`) with OpenAI's familiar structure, so no code changes are needed.
4
+
5
+ ## Quick Links
6
+
7
+ - [Join our Discord Community](https://discord.pawan.krd) for support and questions.
8
+ - ⚡Note: Your Discord account must be at least 7 days old to be able join our Discord community.
9
+
10
+ ## Table of Contents
11
+
12
+ - [Features](#features)
13
+ - Option 1: [Installing/Self-Hosting Guide](#installingself-hosting-guide) (Without using any API key)
14
+ - Method 1: [Using Docker](#using-docker) or [Run it with a Chat Web UI using docker-compose](./docker-compose)
15
+ - Method 2: [Your PC/Server](#your-pcserver) (manually)
16
+ - Method 3: [Termux on Android Phones](#termux-on-android-phones)
17
+ - Option 2: [Accessing Our Hosted API](#accessing-our-hosted-api) (Free)
18
+ - [Usage Examples](#usage-examples)
19
+ - [License](#license)
20
+
21
+ ## Features
22
+
23
+ - **Streaming Response**: The API supports streaming response, so you can get the response as soon as it's available.
24
+ - **API Endpoint Compatibility**: Full alignment with official OpenAI API endpoints, ensuring hassle-free integration with existing OpenAI libraries.
25
+ - **Complimentary Access**: No charges for API usage, making advanced AI accessible to everyone even **without an API key**.
26
+
27
+ ## Installing/Self-Hosting Guide
28
+
29
+ ### Using Docker
30
+ 1. Ensure Docker is installed by referring to the [Docker Installation Docs](https://docs.docker.com/engine/install/).
31
+ 2. Run the following command:
32
+ ```bash
33
+ docker run -dp 3040:3040 pawanosman/chatgpt:latest
34
+ ```
35
+ 3. Done! You can now connect to your local server's API at:
36
+ ```
37
+ http://localhost:3040/v1/chat/completions
38
+ ```
39
+ Note that the base URL is `http://localhost:3040/v1`.
40
+
41
+ ### Install with chat web interfaces
42
+ ✅ You can run third-party chat web interfaces, such as BetterChatGPT and LobeChat, with this API using Docker Compose. [Click here for the installation guide](./docker-compose).
43
+
44
+ ### Your PC/Server
45
+
46
+ To install and run the ChatGPT API Reverse Proxy on your PC/Server by following these steps:
47
+
48
+ Note: This option is not available to all countries yet. if you are from a country that is not supported, you can use a **U.S. VPN** or use **our hosted API**.
49
+
50
+ 1. Ensure NodeJs (v19+) is installed: [Download NodeJs](https://nodejs.org/en/download)
51
+ 2. Clone this repository:
52
+ ```bash
53
+ git clone https://github.com/PawanOsman/ChatGPT.git
54
+ ```
55
+ 3. Open `start.bat` (Windows) or `start.sh` (Linux with `bash start.sh` command) to install dependencies and launch the server.
56
+ 4. Done, you can connect to your local server's API at:
57
+ ```
58
+ http://localhost:3040/v1/chat/completions
59
+ ```
60
+ Note that the base url will be `http://localhost:3040/v1`
61
+
62
+ To include installation instructions for Termux on Android devices, you can add the following section right after the instructions for Linux in the **Installing/Self-Hosting Guide**:
63
+
64
+ ### Termux on Android Phones
65
+
66
+ To install and run the ChatGPT API Reverse Proxy on Android using Termux, follow these steps:
67
+
68
+ 1. Install [Termux](https://play.google.com/store/apps/details?id=com.termux) from the Play Store.
69
+ 2. Update Termux packages:
70
+ ```bash
71
+ apt update
72
+ ```
73
+ 3. Upgrade Termux packages:
74
+ ```bash
75
+ apt upgrade
76
+ ```
77
+ 4. Install git, Node.js, and npm:
78
+ ```bash
79
+ apt install -y git nodejs
80
+ ```
81
+ 5. Clone the repository:
82
+ ```bash
83
+ git clone https://github.com/PawanOsman/ChatGPT.git
84
+ ```
85
+ 6. Navigate to the cloned directory:
86
+ ```bash
87
+ cd ChatGPT
88
+ ```
89
+ 7. Start the server with:
90
+
91
+ ```bash
92
+ bash start.sh
93
+ ```
94
+
95
+ 8. Your local server will now be running and accessible at:
96
+
97
+ ```
98
+ http://localhost:3040/v1/chat/completions
99
+ ```
100
+
101
+ Note that the base url will be `http://localhost:3040/v1`
102
+
103
+ You can now use this address to connect to your self-hosted ChatGPT API Reverse Proxy from Android applications/websites that support reverse proxy configurations, on the same device.
104
+
105
+ ## Accessing Our Hosted API
106
+
107
+ Utilize our pre-hosted ChatGPT-like API for free by:
108
+
109
+ 1. Joining our [Discord server](https://discord.pawan.krd).
110
+ 2. Obtaining an API key from the `#Bot` channel with the `/key` command.
111
+ 3. Incorporating the API key into your requests to:
112
+ ```
113
+ https://api.pawan.krd/v1/chat/completions
114
+ ```
115
+
116
+ ## Usage Examples
117
+
118
+ Leverage the same integration code as OpenAI's official libraries by simply adjusting the API key and base URL in your requests. For self-hosted setups, ensure to switch the base URL to your local server's address as mentioned above.
119
+
120
+ ### Example Usage with OpenAI Libraries
121
+
122
+ #### Python Example
123
+
124
+ ```python
125
+ import openai
126
+
127
+ openai.api_key = 'anything'
128
+ openai.base_url = "http://localhost:3040/v1/"
129
+
130
+ completion = openai.chat.completions.create(
131
+ model="gpt-3.5-turbo",
132
+ messages=[
133
+ {"role": "user", "content": "How do I list all files in a directory using Python?"},
134
+ ],
135
+ )
136
+
137
+ print(completion.choices[0].message.content)
138
+ ```
139
+
140
+ #### Node.js Example
141
+
142
+ ```js
143
+ import OpenAI from 'openai';
144
+
145
+ const openai = new OpenAI({
146
+ apiKey: "anything",
147
+ baseURL: "http://localhost:3040/v1",
148
+ });
149
+
150
+ const chatCompletion = await openai.chat.completions.create({
151
+ messages: [{ role: 'user', content: 'Say this is a test' }],
152
+ model: 'gpt-3.5-turbo',
153
+ });
154
+
155
+ console.log(chatCompletion.choices[0].message.content);
156
+ ```
157
+
158
+ ## License
159
+
160
+ This project is under the AGPL-3.0 License. Refer to the [LICENSE](LICENSE) file for detailed information.
package-lock.json ADDED
@@ -0,0 +1,1073 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "chatgpt",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "chatgpt",
9
+ "version": "1.0.0",
10
+ "license": "AGPL-3.0",
11
+ "dependencies": {
12
+ "axios": "^1.6.7",
13
+ "body-parser": "^1.20.2",
14
+ "dotenv": "^16.4.5",
15
+ "express": "^4.18.3",
16
+ "gpt-3-encoder": "^1.1.4"
17
+ },
18
+ "devDependencies": {
19
+ "@types/express": "^4.17.21",
20
+ "ts-node": "^10.9.2",
21
+ "typescript": "^5.3.3"
22
+ }
23
+ },
24
+ "node_modules/@cspotcode/source-map-support": {
25
+ "version": "0.8.1",
26
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
27
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
28
+ "dev": true,
29
+ "dependencies": {
30
+ "@jridgewell/trace-mapping": "0.3.9"
31
+ },
32
+ "engines": {
33
+ "node": ">=12"
34
+ }
35
+ },
36
+ "node_modules/@jridgewell/resolve-uri": {
37
+ "version": "3.1.2",
38
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
39
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
40
+ "dev": true,
41
+ "engines": {
42
+ "node": ">=6.0.0"
43
+ }
44
+ },
45
+ "node_modules/@jridgewell/sourcemap-codec": {
46
+ "version": "1.4.15",
47
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
48
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
49
+ "dev": true
50
+ },
51
+ "node_modules/@jridgewell/trace-mapping": {
52
+ "version": "0.3.9",
53
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
54
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
55
+ "dev": true,
56
+ "dependencies": {
57
+ "@jridgewell/resolve-uri": "^3.0.3",
58
+ "@jridgewell/sourcemap-codec": "^1.4.10"
59
+ }
60
+ },
61
+ "node_modules/@tsconfig/node10": {
62
+ "version": "1.0.11",
63
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
64
+ "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
65
+ "dev": true
66
+ },
67
+ "node_modules/@tsconfig/node12": {
68
+ "version": "1.0.11",
69
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
70
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
71
+ "dev": true
72
+ },
73
+ "node_modules/@tsconfig/node14": {
74
+ "version": "1.0.3",
75
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
76
+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
77
+ "dev": true
78
+ },
79
+ "node_modules/@tsconfig/node16": {
80
+ "version": "1.0.4",
81
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
82
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
83
+ "dev": true
84
+ },
85
+ "node_modules/@types/body-parser": {
86
+ "version": "1.19.5",
87
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
88
+ "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
89
+ "dev": true,
90
+ "dependencies": {
91
+ "@types/connect": "*",
92
+ "@types/node": "*"
93
+ }
94
+ },
95
+ "node_modules/@types/connect": {
96
+ "version": "3.4.38",
97
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
98
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
99
+ "dev": true,
100
+ "dependencies": {
101
+ "@types/node": "*"
102
+ }
103
+ },
104
+ "node_modules/@types/express": {
105
+ "version": "4.17.21",
106
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
107
+ "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
108
+ "dev": true,
109
+ "dependencies": {
110
+ "@types/body-parser": "*",
111
+ "@types/express-serve-static-core": "^4.17.33",
112
+ "@types/qs": "*",
113
+ "@types/serve-static": "*"
114
+ }
115
+ },
116
+ "node_modules/@types/express-serve-static-core": {
117
+ "version": "4.17.43",
118
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz",
119
+ "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==",
120
+ "dev": true,
121
+ "dependencies": {
122
+ "@types/node": "*",
123
+ "@types/qs": "*",
124
+ "@types/range-parser": "*",
125
+ "@types/send": "*"
126
+ }
127
+ },
128
+ "node_modules/@types/http-errors": {
129
+ "version": "2.0.4",
130
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
131
+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
132
+ "dev": true
133
+ },
134
+ "node_modules/@types/mime": {
135
+ "version": "1.3.5",
136
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
137
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
138
+ "dev": true
139
+ },
140
+ "node_modules/@types/node": {
141
+ "version": "20.12.2",
142
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.2.tgz",
143
+ "integrity": "sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==",
144
+ "dev": true,
145
+ "dependencies": {
146
+ "undici-types": "~5.26.4"
147
+ }
148
+ },
149
+ "node_modules/@types/qs": {
150
+ "version": "6.9.14",
151
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz",
152
+ "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==",
153
+ "dev": true
154
+ },
155
+ "node_modules/@types/range-parser": {
156
+ "version": "1.2.7",
157
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
158
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
159
+ "dev": true
160
+ },
161
+ "node_modules/@types/send": {
162
+ "version": "0.17.4",
163
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
164
+ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
165
+ "dev": true,
166
+ "dependencies": {
167
+ "@types/mime": "^1",
168
+ "@types/node": "*"
169
+ }
170
+ },
171
+ "node_modules/@types/serve-static": {
172
+ "version": "1.15.5",
173
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz",
174
+ "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==",
175
+ "dev": true,
176
+ "dependencies": {
177
+ "@types/http-errors": "*",
178
+ "@types/mime": "*",
179
+ "@types/node": "*"
180
+ }
181
+ },
182
+ "node_modules/accepts": {
183
+ "version": "1.3.8",
184
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
185
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
186
+ "dependencies": {
187
+ "mime-types": "~2.1.34",
188
+ "negotiator": "0.6.3"
189
+ },
190
+ "engines": {
191
+ "node": ">= 0.6"
192
+ }
193
+ },
194
+ "node_modules/acorn": {
195
+ "version": "8.11.3",
196
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
197
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
198
+ "dev": true,
199
+ "bin": {
200
+ "acorn": "bin/acorn"
201
+ },
202
+ "engines": {
203
+ "node": ">=0.4.0"
204
+ }
205
+ },
206
+ "node_modules/acorn-walk": {
207
+ "version": "8.3.2",
208
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
209
+ "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
210
+ "dev": true,
211
+ "engines": {
212
+ "node": ">=0.4.0"
213
+ }
214
+ },
215
+ "node_modules/arg": {
216
+ "version": "4.1.3",
217
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
218
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
219
+ "dev": true
220
+ },
221
+ "node_modules/array-flatten": {
222
+ "version": "1.1.1",
223
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
224
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
225
+ },
226
+ "node_modules/asynckit": {
227
+ "version": "0.4.0",
228
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
229
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
230
+ },
231
+ "node_modules/axios": {
232
+ "version": "1.6.8",
233
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz",
234
+ "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",
235
+ "dependencies": {
236
+ "follow-redirects": "^1.15.6",
237
+ "form-data": "^4.0.0",
238
+ "proxy-from-env": "^1.1.0"
239
+ }
240
+ },
241
+ "node_modules/body-parser": {
242
+ "version": "1.20.2",
243
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
244
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
245
+ "dependencies": {
246
+ "bytes": "3.1.2",
247
+ "content-type": "~1.0.5",
248
+ "debug": "2.6.9",
249
+ "depd": "2.0.0",
250
+ "destroy": "1.2.0",
251
+ "http-errors": "2.0.0",
252
+ "iconv-lite": "0.4.24",
253
+ "on-finished": "2.4.1",
254
+ "qs": "6.11.0",
255
+ "raw-body": "2.5.2",
256
+ "type-is": "~1.6.18",
257
+ "unpipe": "1.0.0"
258
+ },
259
+ "engines": {
260
+ "node": ">= 0.8",
261
+ "npm": "1.2.8000 || >= 1.4.16"
262
+ }
263
+ },
264
+ "node_modules/bytes": {
265
+ "version": "3.1.2",
266
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
267
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
268
+ "engines": {
269
+ "node": ">= 0.8"
270
+ }
271
+ },
272
+ "node_modules/call-bind": {
273
+ "version": "1.0.7",
274
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
275
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
276
+ "dependencies": {
277
+ "es-define-property": "^1.0.0",
278
+ "es-errors": "^1.3.0",
279
+ "function-bind": "^1.1.2",
280
+ "get-intrinsic": "^1.2.4",
281
+ "set-function-length": "^1.2.1"
282
+ },
283
+ "engines": {
284
+ "node": ">= 0.4"
285
+ },
286
+ "funding": {
287
+ "url": "https://github.com/sponsors/ljharb"
288
+ }
289
+ },
290
+ "node_modules/combined-stream": {
291
+ "version": "1.0.8",
292
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
293
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
294
+ "dependencies": {
295
+ "delayed-stream": "~1.0.0"
296
+ },
297
+ "engines": {
298
+ "node": ">= 0.8"
299
+ }
300
+ },
301
+ "node_modules/content-disposition": {
302
+ "version": "0.5.4",
303
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
304
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
305
+ "dependencies": {
306
+ "safe-buffer": "5.2.1"
307
+ },
308
+ "engines": {
309
+ "node": ">= 0.6"
310
+ }
311
+ },
312
+ "node_modules/content-type": {
313
+ "version": "1.0.5",
314
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
315
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
316
+ "engines": {
317
+ "node": ">= 0.6"
318
+ }
319
+ },
320
+ "node_modules/cookie": {
321
+ "version": "0.6.0",
322
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
323
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
324
+ "engines": {
325
+ "node": ">= 0.6"
326
+ }
327
+ },
328
+ "node_modules/cookie-signature": {
329
+ "version": "1.0.6",
330
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
331
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
332
+ },
333
+ "node_modules/create-require": {
334
+ "version": "1.1.1",
335
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
336
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
337
+ "dev": true
338
+ },
339
+ "node_modules/debug": {
340
+ "version": "2.6.9",
341
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
342
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
343
+ "dependencies": {
344
+ "ms": "2.0.0"
345
+ }
346
+ },
347
+ "node_modules/define-data-property": {
348
+ "version": "1.1.4",
349
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
350
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
351
+ "dependencies": {
352
+ "es-define-property": "^1.0.0",
353
+ "es-errors": "^1.3.0",
354
+ "gopd": "^1.0.1"
355
+ },
356
+ "engines": {
357
+ "node": ">= 0.4"
358
+ },
359
+ "funding": {
360
+ "url": "https://github.com/sponsors/ljharb"
361
+ }
362
+ },
363
+ "node_modules/delayed-stream": {
364
+ "version": "1.0.0",
365
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
366
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
367
+ "engines": {
368
+ "node": ">=0.4.0"
369
+ }
370
+ },
371
+ "node_modules/depd": {
372
+ "version": "2.0.0",
373
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
374
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
375
+ "engines": {
376
+ "node": ">= 0.8"
377
+ }
378
+ },
379
+ "node_modules/destroy": {
380
+ "version": "1.2.0",
381
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
382
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
383
+ "engines": {
384
+ "node": ">= 0.8",
385
+ "npm": "1.2.8000 || >= 1.4.16"
386
+ }
387
+ },
388
+ "node_modules/diff": {
389
+ "version": "4.0.2",
390
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
391
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
392
+ "dev": true,
393
+ "engines": {
394
+ "node": ">=0.3.1"
395
+ }
396
+ },
397
+ "node_modules/dotenv": {
398
+ "version": "16.4.5",
399
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
400
+ "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
401
+ "engines": {
402
+ "node": ">=12"
403
+ },
404
+ "funding": {
405
+ "url": "https://dotenvx.com"
406
+ }
407
+ },
408
+ "node_modules/ee-first": {
409
+ "version": "1.1.1",
410
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
411
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
412
+ },
413
+ "node_modules/encodeurl": {
414
+ "version": "1.0.2",
415
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
416
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
417
+ "engines": {
418
+ "node": ">= 0.8"
419
+ }
420
+ },
421
+ "node_modules/es-define-property": {
422
+ "version": "1.0.0",
423
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
424
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
425
+ "dependencies": {
426
+ "get-intrinsic": "^1.2.4"
427
+ },
428
+ "engines": {
429
+ "node": ">= 0.4"
430
+ }
431
+ },
432
+ "node_modules/es-errors": {
433
+ "version": "1.3.0",
434
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
435
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
436
+ "engines": {
437
+ "node": ">= 0.4"
438
+ }
439
+ },
440
+ "node_modules/escape-html": {
441
+ "version": "1.0.3",
442
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
443
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
444
+ },
445
+ "node_modules/etag": {
446
+ "version": "1.8.1",
447
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
448
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
449
+ "engines": {
450
+ "node": ">= 0.6"
451
+ }
452
+ },
453
+ "node_modules/express": {
454
+ "version": "4.19.2",
455
+ "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
456
+ "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
457
+ "dependencies": {
458
+ "accepts": "~1.3.8",
459
+ "array-flatten": "1.1.1",
460
+ "body-parser": "1.20.2",
461
+ "content-disposition": "0.5.4",
462
+ "content-type": "~1.0.4",
463
+ "cookie": "0.6.0",
464
+ "cookie-signature": "1.0.6",
465
+ "debug": "2.6.9",
466
+ "depd": "2.0.0",
467
+ "encodeurl": "~1.0.2",
468
+ "escape-html": "~1.0.3",
469
+ "etag": "~1.8.1",
470
+ "finalhandler": "1.2.0",
471
+ "fresh": "0.5.2",
472
+ "http-errors": "2.0.0",
473
+ "merge-descriptors": "1.0.1",
474
+ "methods": "~1.1.2",
475
+ "on-finished": "2.4.1",
476
+ "parseurl": "~1.3.3",
477
+ "path-to-regexp": "0.1.7",
478
+ "proxy-addr": "~2.0.7",
479
+ "qs": "6.11.0",
480
+ "range-parser": "~1.2.1",
481
+ "safe-buffer": "5.2.1",
482
+ "send": "0.18.0",
483
+ "serve-static": "1.15.0",
484
+ "setprototypeof": "1.2.0",
485
+ "statuses": "2.0.1",
486
+ "type-is": "~1.6.18",
487
+ "utils-merge": "1.0.1",
488
+ "vary": "~1.1.2"
489
+ },
490
+ "engines": {
491
+ "node": ">= 0.10.0"
492
+ }
493
+ },
494
+ "node_modules/finalhandler": {
495
+ "version": "1.2.0",
496
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
497
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
498
+ "dependencies": {
499
+ "debug": "2.6.9",
500
+ "encodeurl": "~1.0.2",
501
+ "escape-html": "~1.0.3",
502
+ "on-finished": "2.4.1",
503
+ "parseurl": "~1.3.3",
504
+ "statuses": "2.0.1",
505
+ "unpipe": "~1.0.0"
506
+ },
507
+ "engines": {
508
+ "node": ">= 0.8"
509
+ }
510
+ },
511
+ "node_modules/follow-redirects": {
512
+ "version": "1.15.6",
513
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
514
+ "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
515
+ "funding": [
516
+ {
517
+ "type": "individual",
518
+ "url": "https://github.com/sponsors/RubenVerborgh"
519
+ }
520
+ ],
521
+ "engines": {
522
+ "node": ">=4.0"
523
+ },
524
+ "peerDependenciesMeta": {
525
+ "debug": {
526
+ "optional": true
527
+ }
528
+ }
529
+ },
530
+ "node_modules/form-data": {
531
+ "version": "4.0.0",
532
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
533
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
534
+ "dependencies": {
535
+ "asynckit": "^0.4.0",
536
+ "combined-stream": "^1.0.8",
537
+ "mime-types": "^2.1.12"
538
+ },
539
+ "engines": {
540
+ "node": ">= 6"
541
+ }
542
+ },
543
+ "node_modules/forwarded": {
544
+ "version": "0.2.0",
545
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
546
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
547
+ "engines": {
548
+ "node": ">= 0.6"
549
+ }
550
+ },
551
+ "node_modules/fresh": {
552
+ "version": "0.5.2",
553
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
554
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
555
+ "engines": {
556
+ "node": ">= 0.6"
557
+ }
558
+ },
559
+ "node_modules/function-bind": {
560
+ "version": "1.1.2",
561
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
562
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
563
+ "funding": {
564
+ "url": "https://github.com/sponsors/ljharb"
565
+ }
566
+ },
567
+ "node_modules/get-intrinsic": {
568
+ "version": "1.2.4",
569
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
570
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
571
+ "dependencies": {
572
+ "es-errors": "^1.3.0",
573
+ "function-bind": "^1.1.2",
574
+ "has-proto": "^1.0.1",
575
+ "has-symbols": "^1.0.3",
576
+ "hasown": "^2.0.0"
577
+ },
578
+ "engines": {
579
+ "node": ">= 0.4"
580
+ },
581
+ "funding": {
582
+ "url": "https://github.com/sponsors/ljharb"
583
+ }
584
+ },
585
+ "node_modules/gopd": {
586
+ "version": "1.0.1",
587
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
588
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
589
+ "dependencies": {
590
+ "get-intrinsic": "^1.1.3"
591
+ },
592
+ "funding": {
593
+ "url": "https://github.com/sponsors/ljharb"
594
+ }
595
+ },
596
+ "node_modules/gpt-3-encoder": {
597
+ "version": "1.1.4",
598
+ "resolved": "https://registry.npmjs.org/gpt-3-encoder/-/gpt-3-encoder-1.1.4.tgz",
599
+ "integrity": "sha512-fSQRePV+HUAhCn7+7HL7lNIXNm6eaFWFbNLOOGtmSJ0qJycyQvj60OvRlH7mee8xAMjBDNRdMXlMwjAbMTDjkg=="
600
+ },
601
+ "node_modules/has-property-descriptors": {
602
+ "version": "1.0.2",
603
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
604
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
605
+ "dependencies": {
606
+ "es-define-property": "^1.0.0"
607
+ },
608
+ "funding": {
609
+ "url": "https://github.com/sponsors/ljharb"
610
+ }
611
+ },
612
+ "node_modules/has-proto": {
613
+ "version": "1.0.3",
614
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
615
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
616
+ "engines": {
617
+ "node": ">= 0.4"
618
+ },
619
+ "funding": {
620
+ "url": "https://github.com/sponsors/ljharb"
621
+ }
622
+ },
623
+ "node_modules/has-symbols": {
624
+ "version": "1.0.3",
625
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
626
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
627
+ "engines": {
628
+ "node": ">= 0.4"
629
+ },
630
+ "funding": {
631
+ "url": "https://github.com/sponsors/ljharb"
632
+ }
633
+ },
634
+ "node_modules/hasown": {
635
+ "version": "2.0.2",
636
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
637
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
638
+ "dependencies": {
639
+ "function-bind": "^1.1.2"
640
+ },
641
+ "engines": {
642
+ "node": ">= 0.4"
643
+ }
644
+ },
645
+ "node_modules/http-errors": {
646
+ "version": "2.0.0",
647
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
648
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
649
+ "dependencies": {
650
+ "depd": "2.0.0",
651
+ "inherits": "2.0.4",
652
+ "setprototypeof": "1.2.0",
653
+ "statuses": "2.0.1",
654
+ "toidentifier": "1.0.1"
655
+ },
656
+ "engines": {
657
+ "node": ">= 0.8"
658
+ }
659
+ },
660
+ "node_modules/iconv-lite": {
661
+ "version": "0.4.24",
662
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
663
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
664
+ "dependencies": {
665
+ "safer-buffer": ">= 2.1.2 < 3"
666
+ },
667
+ "engines": {
668
+ "node": ">=0.10.0"
669
+ }
670
+ },
671
+ "node_modules/inherits": {
672
+ "version": "2.0.4",
673
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
674
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
675
+ },
676
+ "node_modules/ipaddr.js": {
677
+ "version": "1.9.1",
678
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
679
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
680
+ "engines": {
681
+ "node": ">= 0.10"
682
+ }
683
+ },
684
+ "node_modules/make-error": {
685
+ "version": "1.3.6",
686
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
687
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
688
+ "dev": true
689
+ },
690
+ "node_modules/media-typer": {
691
+ "version": "0.3.0",
692
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
693
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
694
+ "engines": {
695
+ "node": ">= 0.6"
696
+ }
697
+ },
698
+ "node_modules/merge-descriptors": {
699
+ "version": "1.0.1",
700
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
701
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
702
+ },
703
+ "node_modules/methods": {
704
+ "version": "1.1.2",
705
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
706
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
707
+ "engines": {
708
+ "node": ">= 0.6"
709
+ }
710
+ },
711
+ "node_modules/mime": {
712
+ "version": "1.6.0",
713
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
714
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
715
+ "bin": {
716
+ "mime": "cli.js"
717
+ },
718
+ "engines": {
719
+ "node": ">=4"
720
+ }
721
+ },
722
+ "node_modules/mime-db": {
723
+ "version": "1.52.0",
724
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
725
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
726
+ "engines": {
727
+ "node": ">= 0.6"
728
+ }
729
+ },
730
+ "node_modules/mime-types": {
731
+ "version": "2.1.35",
732
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
733
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
734
+ "dependencies": {
735
+ "mime-db": "1.52.0"
736
+ },
737
+ "engines": {
738
+ "node": ">= 0.6"
739
+ }
740
+ },
741
+ "node_modules/ms": {
742
+ "version": "2.0.0",
743
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
744
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
745
+ },
746
+ "node_modules/negotiator": {
747
+ "version": "0.6.3",
748
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
749
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
750
+ "engines": {
751
+ "node": ">= 0.6"
752
+ }
753
+ },
754
+ "node_modules/object-inspect": {
755
+ "version": "1.13.1",
756
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
757
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
758
+ "funding": {
759
+ "url": "https://github.com/sponsors/ljharb"
760
+ }
761
+ },
762
+ "node_modules/on-finished": {
763
+ "version": "2.4.1",
764
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
765
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
766
+ "dependencies": {
767
+ "ee-first": "1.1.1"
768
+ },
769
+ "engines": {
770
+ "node": ">= 0.8"
771
+ }
772
+ },
773
+ "node_modules/parseurl": {
774
+ "version": "1.3.3",
775
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
776
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
777
+ "engines": {
778
+ "node": ">= 0.8"
779
+ }
780
+ },
781
+ "node_modules/path-to-regexp": {
782
+ "version": "0.1.7",
783
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
784
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
785
+ },
786
+ "node_modules/proxy-addr": {
787
+ "version": "2.0.7",
788
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
789
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
790
+ "dependencies": {
791
+ "forwarded": "0.2.0",
792
+ "ipaddr.js": "1.9.1"
793
+ },
794
+ "engines": {
795
+ "node": ">= 0.10"
796
+ }
797
+ },
798
+ "node_modules/proxy-from-env": {
799
+ "version": "1.1.0",
800
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
801
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
802
+ },
803
+ "node_modules/qs": {
804
+ "version": "6.11.0",
805
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
806
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
807
+ "dependencies": {
808
+ "side-channel": "^1.0.4"
809
+ },
810
+ "engines": {
811
+ "node": ">=0.6"
812
+ },
813
+ "funding": {
814
+ "url": "https://github.com/sponsors/ljharb"
815
+ }
816
+ },
817
+ "node_modules/range-parser": {
818
+ "version": "1.2.1",
819
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
820
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
821
+ "engines": {
822
+ "node": ">= 0.6"
823
+ }
824
+ },
825
+ "node_modules/raw-body": {
826
+ "version": "2.5.2",
827
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
828
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
829
+ "dependencies": {
830
+ "bytes": "3.1.2",
831
+ "http-errors": "2.0.0",
832
+ "iconv-lite": "0.4.24",
833
+ "unpipe": "1.0.0"
834
+ },
835
+ "engines": {
836
+ "node": ">= 0.8"
837
+ }
838
+ },
839
+ "node_modules/safe-buffer": {
840
+ "version": "5.2.1",
841
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
842
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
843
+ "funding": [
844
+ {
845
+ "type": "github",
846
+ "url": "https://github.com/sponsors/feross"
847
+ },
848
+ {
849
+ "type": "patreon",
850
+ "url": "https://www.patreon.com/feross"
851
+ },
852
+ {
853
+ "type": "consulting",
854
+ "url": "https://feross.org/support"
855
+ }
856
+ ]
857
+ },
858
+ "node_modules/safer-buffer": {
859
+ "version": "2.1.2",
860
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
861
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
862
+ },
863
+ "node_modules/send": {
864
+ "version": "0.18.0",
865
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
866
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
867
+ "dependencies": {
868
+ "debug": "2.6.9",
869
+ "depd": "2.0.0",
870
+ "destroy": "1.2.0",
871
+ "encodeurl": "~1.0.2",
872
+ "escape-html": "~1.0.3",
873
+ "etag": "~1.8.1",
874
+ "fresh": "0.5.2",
875
+ "http-errors": "2.0.0",
876
+ "mime": "1.6.0",
877
+ "ms": "2.1.3",
878
+ "on-finished": "2.4.1",
879
+ "range-parser": "~1.2.1",
880
+ "statuses": "2.0.1"
881
+ },
882
+ "engines": {
883
+ "node": ">= 0.8.0"
884
+ }
885
+ },
886
+ "node_modules/send/node_modules/ms": {
887
+ "version": "2.1.3",
888
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
889
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
890
+ },
891
+ "node_modules/serve-static": {
892
+ "version": "1.15.0",
893
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
894
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
895
+ "dependencies": {
896
+ "encodeurl": "~1.0.2",
897
+ "escape-html": "~1.0.3",
898
+ "parseurl": "~1.3.3",
899
+ "send": "0.18.0"
900
+ },
901
+ "engines": {
902
+ "node": ">= 0.8.0"
903
+ }
904
+ },
905
+ "node_modules/set-function-length": {
906
+ "version": "1.2.2",
907
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
908
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
909
+ "dependencies": {
910
+ "define-data-property": "^1.1.4",
911
+ "es-errors": "^1.3.0",
912
+ "function-bind": "^1.1.2",
913
+ "get-intrinsic": "^1.2.4",
914
+ "gopd": "^1.0.1",
915
+ "has-property-descriptors": "^1.0.2"
916
+ },
917
+ "engines": {
918
+ "node": ">= 0.4"
919
+ }
920
+ },
921
+ "node_modules/setprototypeof": {
922
+ "version": "1.2.0",
923
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
924
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
925
+ },
926
+ "node_modules/side-channel": {
927
+ "version": "1.0.6",
928
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
929
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
930
+ "dependencies": {
931
+ "call-bind": "^1.0.7",
932
+ "es-errors": "^1.3.0",
933
+ "get-intrinsic": "^1.2.4",
934
+ "object-inspect": "^1.13.1"
935
+ },
936
+ "engines": {
937
+ "node": ">= 0.4"
938
+ },
939
+ "funding": {
940
+ "url": "https://github.com/sponsors/ljharb"
941
+ }
942
+ },
943
+ "node_modules/statuses": {
944
+ "version": "2.0.1",
945
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
946
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
947
+ "engines": {
948
+ "node": ">= 0.8"
949
+ }
950
+ },
951
+ "node_modules/toidentifier": {
952
+ "version": "1.0.1",
953
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
954
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
955
+ "engines": {
956
+ "node": ">=0.6"
957
+ }
958
+ },
959
+ "node_modules/ts-node": {
960
+ "version": "10.9.2",
961
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
962
+ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
963
+ "dev": true,
964
+ "dependencies": {
965
+ "@cspotcode/source-map-support": "^0.8.0",
966
+ "@tsconfig/node10": "^1.0.7",
967
+ "@tsconfig/node12": "^1.0.7",
968
+ "@tsconfig/node14": "^1.0.0",
969
+ "@tsconfig/node16": "^1.0.2",
970
+ "acorn": "^8.4.1",
971
+ "acorn-walk": "^8.1.1",
972
+ "arg": "^4.1.0",
973
+ "create-require": "^1.1.0",
974
+ "diff": "^4.0.1",
975
+ "make-error": "^1.1.1",
976
+ "v8-compile-cache-lib": "^3.0.1",
977
+ "yn": "3.1.1"
978
+ },
979
+ "bin": {
980
+ "ts-node": "dist/bin.js",
981
+ "ts-node-cwd": "dist/bin-cwd.js",
982
+ "ts-node-esm": "dist/bin-esm.js",
983
+ "ts-node-script": "dist/bin-script.js",
984
+ "ts-node-transpile-only": "dist/bin-transpile.js",
985
+ "ts-script": "dist/bin-script-deprecated.js"
986
+ },
987
+ "peerDependencies": {
988
+ "@swc/core": ">=1.2.50",
989
+ "@swc/wasm": ">=1.2.50",
990
+ "@types/node": "*",
991
+ "typescript": ">=2.7"
992
+ },
993
+ "peerDependenciesMeta": {
994
+ "@swc/core": {
995
+ "optional": true
996
+ },
997
+ "@swc/wasm": {
998
+ "optional": true
999
+ }
1000
+ }
1001
+ },
1002
+ "node_modules/type-is": {
1003
+ "version": "1.6.18",
1004
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1005
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1006
+ "dependencies": {
1007
+ "media-typer": "0.3.0",
1008
+ "mime-types": "~2.1.24"
1009
+ },
1010
+ "engines": {
1011
+ "node": ">= 0.6"
1012
+ }
1013
+ },
1014
+ "node_modules/typescript": {
1015
+ "version": "5.4.3",
1016
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz",
1017
+ "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==",
1018
+ "dev": true,
1019
+ "bin": {
1020
+ "tsc": "bin/tsc",
1021
+ "tsserver": "bin/tsserver"
1022
+ },
1023
+ "engines": {
1024
+ "node": ">=14.17"
1025
+ }
1026
+ },
1027
+ "node_modules/undici-types": {
1028
+ "version": "5.26.5",
1029
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
1030
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
1031
+ "dev": true
1032
+ },
1033
+ "node_modules/unpipe": {
1034
+ "version": "1.0.0",
1035
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1036
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1037
+ "engines": {
1038
+ "node": ">= 0.8"
1039
+ }
1040
+ },
1041
+ "node_modules/utils-merge": {
1042
+ "version": "1.0.1",
1043
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1044
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
1045
+ "engines": {
1046
+ "node": ">= 0.4.0"
1047
+ }
1048
+ },
1049
+ "node_modules/v8-compile-cache-lib": {
1050
+ "version": "3.0.1",
1051
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
1052
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
1053
+ "dev": true
1054
+ },
1055
+ "node_modules/vary": {
1056
+ "version": "1.1.2",
1057
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1058
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1059
+ "engines": {
1060
+ "node": ">= 0.8"
1061
+ }
1062
+ },
1063
+ "node_modules/yn": {
1064
+ "version": "3.1.1",
1065
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
1066
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
1067
+ "dev": true,
1068
+ "engines": {
1069
+ "node": ">=6"
1070
+ }
1071
+ }
1072
+ }
1073
+ }
package.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "chatgpt",
3
+ "version": "1.0.0",
4
+ "description": "OpenAI API Free Reverse Proxy",
5
+ "type": "module",
6
+ "main": "app.js",
7
+ "scripts": {
8
+ "start": "tsc && node dist/app.js",
9
+ "watch": "tsc-watch --onSuccess \"node dist/app.js\"",
10
+ "build": "tsc"
11
+ },
12
+ "author": "Pawan Osman",
13
+ "license": "AGPL-3.0",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/PawanOsman/ChatGPT.git"
17
+ },
18
+ "dependencies": {
19
+ "axios": "^1.6.7",
20
+ "body-parser": "^1.20.2",
21
+ "dotenv": "^16.4.5",
22
+ "express": "^4.18.3",
23
+ "gpt-3-encoder": "^1.1.4"
24
+ },
25
+ "devDependencies": {
26
+ "@types/express": "^4.17.21",
27
+ "ts-node": "^10.9.2",
28
+ "typescript": "^5.3.3"
29
+ }
30
+ }
start.bat ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+
3
+ IF NOT EXIST node_modules (
4
+ echo Installing npm packages...
5
+ call npm install
6
+ )
7
+
8
+ cls
9
+ echo Starting the application...
10
+ call npm start
start.sh ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/sh
2
+
3
+ if [ ! -d "node_modules" ]; then
4
+ echo "Installing npm packages..."
5
+ npm install
6
+ fi
7
+
8
+ clear
9
+ echo "Starting the application..."
10
+ npm start
tsconfig.json ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2022",
4
+ "module": "ESNext",
5
+ "strict": true,
6
+ "declaration": true,
7
+ "removeComments": true,
8
+ "emitDecoratorMetadata": true,
9
+ "experimentalDecorators": true,
10
+ "allowSyntheticDefaultImports": true,
11
+ "sourceMap": true,
12
+ "outDir": "./dist",
13
+ "baseUrl": "./",
14
+ "paths": {
15
+ "@/*": ["src/*"]
16
+ },
17
+ "incremental": true,
18
+ "moduleResolution": "node",
19
+ "skipLibCheck": true,
20
+ "strictNullChecks": false,
21
+ "noImplicitAny": false,
22
+ "strictBindCallApply": false,
23
+ "forceConsistentCasingInFileNames": false,
24
+ "noFallthroughCasesInSwitch": false
25
+ },
26
+ "include": ["src"],
27
+ "exclude": ["node_modules", "dist"]
28
+ }