@long2ice/relayx-backend 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +13 -0
  2. package/dist/app.d.ts +8592 -0
  3. package/dist/bullmq/index.d.ts +1 -0
  4. package/dist/bullmq/jobs.d.ts +34 -0
  5. package/dist/bullmq/queue.d.ts +6 -0
  6. package/dist/bullmq/queuedash.d.ts +12 -0
  7. package/dist/bullmq/worker.d.ts +1 -0
  8. package/dist/config.d.ts +16 -0
  9. package/dist/db.d.ts +3 -0
  10. package/dist/generated/prisma/zod/index.d.ts +2289 -0
  11. package/dist/index.d.ts +1 -0
  12. package/dist/middlewares/auth.d.ts +3 -0
  13. package/dist/middlewares/ip.d.ts +2 -0
  14. package/dist/middlewares/license.d.ts +2 -0
  15. package/dist/middlewares/plan.d.ts +2 -0
  16. package/dist/routes/admin/license.d.ts +90 -0
  17. package/dist/routes/admin/node.d.ts +919 -0
  18. package/dist/routes/admin/node_group.d.ts +2115 -0
  19. package/dist/routes/admin/pay.d.ts +261 -0
  20. package/dist/routes/admin/plan.d.ts +198 -0
  21. package/dist/routes/admin/plan_coupon.d.ts +92 -0
  22. package/dist/routes/admin/stats.d.ts +77 -0
  23. package/dist/routes/admin/system_config.d.ts +68 -0
  24. package/dist/routes/admin/ticket.d.ts +113 -0
  25. package/dist/routes/admin/topup.d.ts +88 -0
  26. package/dist/routes/admin/topup_activity.d.ts +84 -0
  27. package/dist/routes/admin/tunnel.d.ts +566 -0
  28. package/dist/routes/admin/user.d.ts +299 -0
  29. package/dist/routes/admin/user_plan.d.ts +109 -0
  30. package/dist/routes/bot.d.ts +13 -0
  31. package/dist/routes/dns_provider.d.ts +240 -0
  32. package/dist/routes/health.d.ts +3 -0
  33. package/dist/routes/in_node_group_dns.d.ts +132 -0
  34. package/dist/routes/license.d.ts +50 -0
  35. package/dist/routes/node.d.ts +148 -0
  36. package/dist/routes/node_group.d.ts +1498 -0
  37. package/dist/routes/pay.d.ts +34 -0
  38. package/dist/routes/plan.d.ts +148 -0
  39. package/dist/routes/plan_coupon.d.ts +22 -0
  40. package/dist/routes/system_config.d.ts +87 -0
  41. package/dist/routes/ticket.d.ts +129 -0
  42. package/dist/routes/topup.d.ts +93 -0
  43. package/dist/routes/tunnel.d.ts +742 -0
  44. package/dist/routes/user.d.ts +293 -0
  45. package/dist/schemas/context.d.ts +9 -0
  46. package/dist/schemas/license.d.ts +7 -0
  47. package/dist/schemas/request.d.ts +1181 -0
  48. package/dist/schemas/response.d.ts +2439 -0
  49. package/dist/schemas/socket.io.d.ts +33 -0
  50. package/dist/schemas/tunnel.d.ts +10 -0
  51. package/dist/services/dns/cloudflare.d.ts +12 -0
  52. package/dist/services/dns/huawei.d.ts +12 -0
  53. package/dist/services/dns/index.d.ts +4 -0
  54. package/dist/services/dns/interface.d.ts +8 -0
  55. package/dist/services/dns_provider.d.ts +46 -0
  56. package/dist/services/email.d.ts +11 -0
  57. package/dist/services/fernet.d.ts +2 -0
  58. package/dist/services/in_node_group_dns.d.ts +65 -0
  59. package/dist/services/license.d.ts +87 -0
  60. package/dist/services/logger.d.ts +7 -0
  61. package/dist/services/node.d.ts +39 -0
  62. package/dist/services/node_group.d.ts +75 -0
  63. package/dist/services/notify.d.ts +44 -0
  64. package/dist/services/order.d.ts +3 -0
  65. package/dist/services/pay.d.ts +6 -0
  66. package/dist/services/plan.d.ts +119 -0
  67. package/dist/services/plan_coupon.d.ts +16 -0
  68. package/dist/services/redis.d.ts +59 -0
  69. package/dist/services/stackauth.d.ts +25 -0
  70. package/dist/services/sysinfo.d.ts +7 -0
  71. package/dist/services/system_config.d.ts +7 -0
  72. package/dist/services/telegram.d.ts +8 -0
  73. package/dist/services/ticket.d.ts +134 -0
  74. package/dist/services/topup.d.ts +37 -0
  75. package/dist/services/topup_activity.d.ts +21 -0
  76. package/dist/services/tunnel.d.ts +1235 -0
  77. package/dist/services/user.d.ts +25 -0
  78. package/dist/socket-io/events.d.ts +13 -0
  79. package/dist/socket-io/handlers/disconnect.d.ts +2 -0
  80. package/dist/socket-io/handlers/listen.d.ts +3 -0
  81. package/dist/socket-io/handlers/register.d.ts +2 -0
  82. package/dist/socket-io/handlers/sysinfo.d.ts +2 -0
  83. package/dist/socket-io/index.d.ts +3 -0
  84. package/dist/socket-io/utils.d.ts +8 -0
  85. package/dist/utils/date.d.ts +1 -0
  86. package/dist/utils/ip.d.ts +2 -0
  87. package/dist/utils/uuid.d.ts +1 -0
  88. package/package.json +82 -0
@@ -0,0 +1,566 @@
1
+ import { Variables } from "../../schemas/context";
2
+ declare const app: import("hono/hono-base").HonoBase<{
3
+ Variables: Variables;
4
+ }, {
5
+ "/": {
6
+ $get: {
7
+ input: {
8
+ query: {
9
+ name?: string | string[] | undefined;
10
+ email?: string | string[] | undefined;
11
+ status?: string | string[] | undefined;
12
+ tunnel_type?: string | string[] | undefined;
13
+ listen_port?: string | string[] | undefined;
14
+ ip_type?: string | string[] | undefined;
15
+ in_node_group_id?: string | string[] | undefined;
16
+ out_node_group_id?: string | string[] | undefined;
17
+ sort?: string | string[] | undefined;
18
+ page?: string | string[] | undefined;
19
+ perPage?: string | string[] | undefined;
20
+ in_tunnel_chain_id?: string | string[] | undefined;
21
+ out_tunnel_chain_id?: string | string[] | undefined;
22
+ };
23
+ };
24
+ output: {
25
+ data: {
26
+ forward_addresses: {
27
+ address: string;
28
+ weight: number;
29
+ host?: string | null | undefined;
30
+ }[];
31
+ tunnel_chains: {
32
+ node_group_id: number;
33
+ node_type: import("../../generated/prisma/client").$Enums.NodeType;
34
+ }[];
35
+ listen_protocol: {
36
+ type: string;
37
+ username: string;
38
+ password: string;
39
+ };
40
+ forward_addresses_protocol: {
41
+ type: string;
42
+ username: string;
43
+ password: string;
44
+ };
45
+ user: {
46
+ email: string;
47
+ };
48
+ in_node_group: {
49
+ name: string;
50
+ connect_ip: string | null;
51
+ admission: boolean;
52
+ traffic_rate: number;
53
+ nodes: {
54
+ connect_ip: string;
55
+ }[];
56
+ };
57
+ out_node_group: {
58
+ name: string;
59
+ traffic_rate: number;
60
+ } | null;
61
+ name: string;
62
+ id: number;
63
+ load_balance_type: import("../../generated/prisma/client").$Enums.LoadBalanceType;
64
+ order_by: number;
65
+ created_at: string;
66
+ updated_at: string;
67
+ user_id: number;
68
+ status: import("../../generated/prisma/client").$Enums.Status;
69
+ tunnel_type: import("../../generated/prisma/client").$Enums.TunnelType;
70
+ category: import("../../generated/prisma/client").$Enums.TunnelCategory;
71
+ listen_ip: string | null;
72
+ listen_port: number | null;
73
+ is_port_used: boolean;
74
+ white_list: string | number | boolean | {
75
+ [x: string]: string | number | boolean | /*elided*/ any | {
76
+ [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any | null;
77
+ length: number;
78
+ toString: null;
79
+ toLocaleString: null;
80
+ pop: null;
81
+ push: {};
82
+ concat: {};
83
+ join: {};
84
+ reverse: null;
85
+ shift: null;
86
+ slice: {};
87
+ sort: {};
88
+ splice: {};
89
+ unshift: {};
90
+ indexOf: {};
91
+ lastIndexOf: {};
92
+ every: {};
93
+ some: {};
94
+ forEach: {};
95
+ map: {};
96
+ filter: {};
97
+ reduce: {};
98
+ reduceRight: {};
99
+ find: {};
100
+ findIndex: {};
101
+ fill: {};
102
+ copyWithin: {};
103
+ entries: null;
104
+ keys: null;
105
+ values: null;
106
+ includes: {};
107
+ flatMap: {};
108
+ flat: {};
109
+ at: {};
110
+ [Symbol.iterator]: null;
111
+ readonly [Symbol.unscopables]: {
112
+ [x: number]: boolean | undefined;
113
+ length?: boolean | undefined;
114
+ toString?: boolean | undefined;
115
+ toLocaleString?: boolean | undefined;
116
+ pop?: boolean | undefined;
117
+ push?: boolean | undefined;
118
+ concat?: boolean | undefined;
119
+ join?: boolean | undefined;
120
+ reverse?: boolean | undefined;
121
+ shift?: boolean | undefined;
122
+ slice?: boolean | undefined;
123
+ sort?: boolean | undefined;
124
+ splice?: boolean | undefined;
125
+ unshift?: boolean | undefined;
126
+ indexOf?: boolean | undefined;
127
+ lastIndexOf?: boolean | undefined;
128
+ every?: boolean | undefined;
129
+ some?: boolean | undefined;
130
+ forEach?: boolean | undefined;
131
+ map?: boolean | undefined;
132
+ filter?: boolean | undefined;
133
+ reduce?: boolean | undefined;
134
+ reduceRight?: boolean | undefined;
135
+ find?: boolean | undefined;
136
+ findIndex?: boolean | undefined;
137
+ fill?: boolean | undefined;
138
+ copyWithin?: boolean | undefined;
139
+ entries?: boolean | undefined;
140
+ keys?: boolean | undefined;
141
+ values?: boolean | undefined;
142
+ includes?: boolean | undefined;
143
+ flatMap?: boolean | undefined;
144
+ flat?: boolean | undefined;
145
+ at?: boolean | undefined;
146
+ };
147
+ } | null | undefined;
148
+ } | {
149
+ [x: number]: string | number | boolean | {
150
+ [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined;
151
+ } | /*elided*/ any | null;
152
+ length: number;
153
+ toString: null;
154
+ toLocaleString: null;
155
+ pop: null;
156
+ push: {};
157
+ concat: {};
158
+ join: {};
159
+ reverse: null;
160
+ shift: null;
161
+ slice: {};
162
+ sort: {};
163
+ splice: {};
164
+ unshift: {};
165
+ indexOf: {};
166
+ lastIndexOf: {};
167
+ every: {};
168
+ some: {};
169
+ forEach: {};
170
+ map: {};
171
+ filter: {};
172
+ reduce: {};
173
+ reduceRight: {};
174
+ find: {};
175
+ findIndex: {};
176
+ fill: {};
177
+ copyWithin: {};
178
+ entries: null;
179
+ keys: null;
180
+ values: null;
181
+ includes: {};
182
+ flatMap: {};
183
+ flat: {};
184
+ at: {};
185
+ [Symbol.iterator]: null;
186
+ readonly [Symbol.unscopables]: {
187
+ [x: number]: boolean | undefined;
188
+ length?: boolean | undefined;
189
+ toString?: boolean | undefined;
190
+ toLocaleString?: boolean | undefined;
191
+ pop?: boolean | undefined;
192
+ push?: boolean | undefined;
193
+ concat?: boolean | undefined;
194
+ join?: boolean | undefined;
195
+ reverse?: boolean | undefined;
196
+ shift?: boolean | undefined;
197
+ slice?: boolean | undefined;
198
+ sort?: boolean | undefined;
199
+ splice?: boolean | undefined;
200
+ unshift?: boolean | undefined;
201
+ indexOf?: boolean | undefined;
202
+ lastIndexOf?: boolean | undefined;
203
+ every?: boolean | undefined;
204
+ some?: boolean | undefined;
205
+ forEach?: boolean | undefined;
206
+ map?: boolean | undefined;
207
+ filter?: boolean | undefined;
208
+ reduce?: boolean | undefined;
209
+ reduceRight?: boolean | undefined;
210
+ find?: boolean | undefined;
211
+ findIndex?: boolean | undefined;
212
+ fill?: boolean | undefined;
213
+ copyWithin?: boolean | undefined;
214
+ entries?: boolean | undefined;
215
+ keys?: boolean | undefined;
216
+ values?: boolean | undefined;
217
+ includes?: boolean | undefined;
218
+ flatMap?: boolean | undefined;
219
+ flat?: boolean | undefined;
220
+ at?: boolean | undefined;
221
+ };
222
+ } | null;
223
+ ip_type: import("../../generated/prisma/client").$Enums.IpType;
224
+ ip_limit: number | null;
225
+ bandwidth_limit: number | null;
226
+ traffic: number;
227
+ traffic_cost: number;
228
+ stats: string | number | boolean | {
229
+ [x: string]: string | number | boolean | /*elided*/ any | {
230
+ [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any | null;
231
+ length: number;
232
+ toString: null;
233
+ toLocaleString: null;
234
+ pop: null;
235
+ push: {};
236
+ concat: {};
237
+ join: {};
238
+ reverse: null;
239
+ shift: null;
240
+ slice: {};
241
+ sort: {};
242
+ splice: {};
243
+ unshift: {};
244
+ indexOf: {};
245
+ lastIndexOf: {};
246
+ every: {};
247
+ some: {};
248
+ forEach: {};
249
+ map: {};
250
+ filter: {};
251
+ reduce: {};
252
+ reduceRight: {};
253
+ find: {};
254
+ findIndex: {};
255
+ fill: {};
256
+ copyWithin: {};
257
+ entries: null;
258
+ keys: null;
259
+ values: null;
260
+ includes: {};
261
+ flatMap: {};
262
+ flat: {};
263
+ at: {};
264
+ [Symbol.iterator]: null;
265
+ readonly [Symbol.unscopables]: {
266
+ [x: number]: boolean | undefined;
267
+ length?: boolean | undefined;
268
+ toString?: boolean | undefined;
269
+ toLocaleString?: boolean | undefined;
270
+ pop?: boolean | undefined;
271
+ push?: boolean | undefined;
272
+ concat?: boolean | undefined;
273
+ join?: boolean | undefined;
274
+ reverse?: boolean | undefined;
275
+ shift?: boolean | undefined;
276
+ slice?: boolean | undefined;
277
+ sort?: boolean | undefined;
278
+ splice?: boolean | undefined;
279
+ unshift?: boolean | undefined;
280
+ indexOf?: boolean | undefined;
281
+ lastIndexOf?: boolean | undefined;
282
+ every?: boolean | undefined;
283
+ some?: boolean | undefined;
284
+ forEach?: boolean | undefined;
285
+ map?: boolean | undefined;
286
+ filter?: boolean | undefined;
287
+ reduce?: boolean | undefined;
288
+ reduceRight?: boolean | undefined;
289
+ find?: boolean | undefined;
290
+ findIndex?: boolean | undefined;
291
+ fill?: boolean | undefined;
292
+ copyWithin?: boolean | undefined;
293
+ entries?: boolean | undefined;
294
+ keys?: boolean | undefined;
295
+ values?: boolean | undefined;
296
+ includes?: boolean | undefined;
297
+ flatMap?: boolean | undefined;
298
+ flat?: boolean | undefined;
299
+ at?: boolean | undefined;
300
+ };
301
+ } | null | undefined;
302
+ } | {
303
+ [x: number]: string | number | boolean | {
304
+ [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined;
305
+ } | /*elided*/ any | null;
306
+ length: number;
307
+ toString: null;
308
+ toLocaleString: null;
309
+ pop: null;
310
+ push: {};
311
+ concat: {};
312
+ join: {};
313
+ reverse: null;
314
+ shift: null;
315
+ slice: {};
316
+ sort: {};
317
+ splice: {};
318
+ unshift: {};
319
+ indexOf: {};
320
+ lastIndexOf: {};
321
+ every: {};
322
+ some: {};
323
+ forEach: {};
324
+ map: {};
325
+ filter: {};
326
+ reduce: {};
327
+ reduceRight: {};
328
+ find: {};
329
+ findIndex: {};
330
+ fill: {};
331
+ copyWithin: {};
332
+ entries: null;
333
+ keys: null;
334
+ values: null;
335
+ includes: {};
336
+ flatMap: {};
337
+ flat: {};
338
+ at: {};
339
+ [Symbol.iterator]: null;
340
+ readonly [Symbol.unscopables]: {
341
+ [x: number]: boolean | undefined;
342
+ length?: boolean | undefined;
343
+ toString?: boolean | undefined;
344
+ toLocaleString?: boolean | undefined;
345
+ pop?: boolean | undefined;
346
+ push?: boolean | undefined;
347
+ concat?: boolean | undefined;
348
+ join?: boolean | undefined;
349
+ reverse?: boolean | undefined;
350
+ shift?: boolean | undefined;
351
+ slice?: boolean | undefined;
352
+ sort?: boolean | undefined;
353
+ splice?: boolean | undefined;
354
+ unshift?: boolean | undefined;
355
+ indexOf?: boolean | undefined;
356
+ lastIndexOf?: boolean | undefined;
357
+ every?: boolean | undefined;
358
+ some?: boolean | undefined;
359
+ forEach?: boolean | undefined;
360
+ map?: boolean | undefined;
361
+ filter?: boolean | undefined;
362
+ reduce?: boolean | undefined;
363
+ reduceRight?: boolean | undefined;
364
+ find?: boolean | undefined;
365
+ findIndex?: boolean | undefined;
366
+ fill?: boolean | undefined;
367
+ copyWithin?: boolean | undefined;
368
+ entries?: boolean | undefined;
369
+ keys?: boolean | undefined;
370
+ values?: boolean | undefined;
371
+ includes?: boolean | undefined;
372
+ flatMap?: boolean | undefined;
373
+ flat?: boolean | undefined;
374
+ at?: boolean | undefined;
375
+ };
376
+ } | null;
377
+ proxy_protocol: boolean;
378
+ in_node_group_id: number;
379
+ out_node_group_id: number | null;
380
+ }[];
381
+ total: number;
382
+ };
383
+ outputFormat: "json";
384
+ status: import("hono/utils/http-status").ContentfulStatusCode;
385
+ };
386
+ };
387
+ } & {
388
+ "/": {
389
+ $post: {
390
+ input: {
391
+ json: {
392
+ name: string;
393
+ load_balance_type: "round" | "rand" | "fifo" | "hash" | "ll" | "lc";
394
+ user_id: number;
395
+ status: "active" | "inactive";
396
+ tunnel_type: "tcp" | "mtcp" | "udp" | "relayx" | "mtls" | "mwss" | "wss" | "tls" | "quic";
397
+ category: "port_forward" | "remote_port_forward";
398
+ listen_ip: string | null;
399
+ listen_port: number | null;
400
+ listen_protocol: {
401
+ type?: string | null | undefined;
402
+ username?: string | null | undefined;
403
+ password?: string | null | undefined;
404
+ } | null;
405
+ white_list: string[] | null;
406
+ forward_addresses: {
407
+ weight: number;
408
+ address: string;
409
+ host?: string | null | undefined;
410
+ }[];
411
+ forward_addresses_protocol: {
412
+ type?: string | null | undefined;
413
+ username?: string | null | undefined;
414
+ password?: string | null | undefined;
415
+ } | null;
416
+ ip_type: "auto" | "ipv4" | "ipv6";
417
+ ip_limit: number | null;
418
+ bandwidth_limit: number | null;
419
+ proxy_protocol: boolean;
420
+ in_node_group_id: number;
421
+ out_node_group_id: number | null;
422
+ tunnel_chains?: {
423
+ node_type: "in" | "out";
424
+ node_group_id: number;
425
+ }[] | undefined;
426
+ };
427
+ };
428
+ output: null;
429
+ outputFormat: "body";
430
+ status: 204;
431
+ };
432
+ };
433
+ } & {
434
+ "/:id/status": {
435
+ $patch: {
436
+ input: {
437
+ param: {
438
+ id: string;
439
+ };
440
+ } & {
441
+ json: {
442
+ status: "active" | "inactive";
443
+ };
444
+ };
445
+ output: null;
446
+ outputFormat: "body";
447
+ status: 204;
448
+ };
449
+ };
450
+ } & {
451
+ "/:id": {
452
+ $patch: {
453
+ input: {
454
+ param: {
455
+ id: string;
456
+ };
457
+ } & {
458
+ json: {
459
+ name: string;
460
+ load_balance_type: "round" | "rand" | "fifo" | "hash" | "ll" | "lc";
461
+ status: "active" | "inactive";
462
+ tunnel_type: "tcp" | "mtcp" | "udp" | "relayx" | "mtls" | "mwss" | "wss" | "tls" | "quic";
463
+ category: "port_forward" | "remote_port_forward";
464
+ listen_ip: string | null;
465
+ listen_port: number | null;
466
+ listen_protocol: {
467
+ type?: string | null | undefined;
468
+ username?: string | null | undefined;
469
+ password?: string | null | undefined;
470
+ } | null;
471
+ white_list: string[] | null;
472
+ forward_addresses: {
473
+ weight: number;
474
+ address: string;
475
+ host?: string | null | undefined;
476
+ }[];
477
+ forward_addresses_protocol: {
478
+ type?: string | null | undefined;
479
+ username?: string | null | undefined;
480
+ password?: string | null | undefined;
481
+ } | null;
482
+ ip_type: "auto" | "ipv4" | "ipv6";
483
+ ip_limit: number | null;
484
+ bandwidth_limit: number | null;
485
+ proxy_protocol: boolean;
486
+ in_node_group_id: number;
487
+ out_node_group_id: number | null;
488
+ tunnel_chains?: {
489
+ node_type: "in" | "out";
490
+ node_group_id: number;
491
+ }[] | undefined;
492
+ };
493
+ };
494
+ output: null;
495
+ outputFormat: "body";
496
+ status: 204;
497
+ };
498
+ };
499
+ } & {
500
+ "/batch/update": {
501
+ $patch: {
502
+ input: {
503
+ json: {
504
+ ids: number[];
505
+ load_balance_type?: "round" | "rand" | "fifo" | "hash" | "ll" | "lc" | undefined;
506
+ status?: "active" | "inactive" | undefined;
507
+ tunnel_type?: "tcp" | "mtcp" | "udp" | "relayx" | "mtls" | "mwss" | "wss" | "tls" | "quic" | undefined;
508
+ ip_type?: "auto" | "ipv4" | "ipv6" | undefined;
509
+ ip_limit?: number | null | undefined;
510
+ bandwidth_limit?: number | null | undefined;
511
+ in_node_group_id?: number | undefined;
512
+ out_node_group_id?: number | null | undefined;
513
+ in_tunnel_chains?: number[] | null | undefined;
514
+ out_tunnel_chains?: number[] | null | undefined;
515
+ };
516
+ };
517
+ output: null;
518
+ outputFormat: "body";
519
+ status: 204;
520
+ };
521
+ };
522
+ } & {
523
+ "/": {
524
+ $delete: {
525
+ input: {
526
+ query: {
527
+ ids: string;
528
+ };
529
+ };
530
+ output: null;
531
+ outputFormat: "body";
532
+ status: 204;
533
+ };
534
+ };
535
+ } & {
536
+ "/:id/test": {
537
+ $get: {
538
+ input: {
539
+ param: {
540
+ id: string;
541
+ };
542
+ };
543
+ output: {
544
+ from: string;
545
+ to: string;
546
+ results: never[];
547
+ }[];
548
+ outputFormat: "json";
549
+ status: import("hono/utils/http-status").ContentfulStatusCode;
550
+ };
551
+ };
552
+ } & {
553
+ "/traffic": {
554
+ $delete: {
555
+ input: {
556
+ query: {
557
+ ids: string;
558
+ };
559
+ };
560
+ output: null;
561
+ outputFormat: "body";
562
+ status: 204;
563
+ };
564
+ };
565
+ }, "/">;
566
+ export default app;