elysia 1.4.25 → 1.4.27

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.
@@ -30,7 +30,7 @@ const mapResponse = (response, set, request) => {
30
30
  return new Response(response, set);
31
31
  case "Array":
32
32
  case "Object":
33
- return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
33
+ return Response.json(response, set);
34
34
  case "ElysiaFile":
35
35
  return (0, import_utils.handleFile)(response.value, set);
36
36
  case "File":
@@ -44,7 +44,7 @@ const mapResponse = (response, set, request) => {
44
44
  request
45
45
  );
46
46
  case void 0:
47
- return response ? new Response(JSON.stringify(response), set) : new Response("", set);
47
+ return response ? Response.json(response, set) : new Response("", set);
48
48
  case "Response":
49
49
  return handleResponse(response, set, request);
50
50
  case "Error":
@@ -88,20 +88,13 @@ const mapResponse = (response, set, request) => {
88
88
  (x) => mapResponse(x, set)
89
89
  );
90
90
  if (Array.isArray(response))
91
- return new Response(JSON.stringify(response), {
92
- headers: {
93
- "Content-Type": "application/json"
94
- }
95
- });
91
+ return Response.json(response);
96
92
  if (typeof response?.toResponse == "function")
97
93
  return mapResponse(response.toResponse(), set);
98
94
  if ("charCodeAt" in response) {
99
95
  const code = response.charCodeAt(0);
100
96
  if (code === 123 || code === 91)
101
- return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
102
- JSON.stringify(response),
103
- set
104
- );
97
+ return Response.json(response, set);
105
98
  }
106
99
  return new Response(response, set);
107
100
  }
@@ -117,7 +110,7 @@ const mapResponse = (response, set, request) => {
117
110
  return new Response(response, set);
118
111
  case "Array":
119
112
  case "Object":
120
- return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
113
+ return Response.json(response, set);
121
114
  case "ElysiaFile":
122
115
  return (0, import_utils.handleFile)(response.value, set);
123
116
  case "File":
@@ -131,7 +124,7 @@ const mapResponse = (response, set, request) => {
131
124
  request
132
125
  );
133
126
  case void 0:
134
- return response ? new Response(JSON.stringify(response), set) : void 0;
127
+ return response ? Response.json(response, set) : void 0;
135
128
  case "Response":
136
129
  return handleResponse(response, set, request);
137
130
  case "Promise":
@@ -177,18 +170,11 @@ const mapResponse = (response, set, request) => {
177
170
  if (typeof response?.toResponse == "function")
178
171
  return mapEarlyResponse(response.toResponse(), set);
179
172
  if (Array.isArray(response))
180
- return new Response(JSON.stringify(response), {
181
- headers: {
182
- "Content-Type": "application/json"
183
- }
184
- });
173
+ return Response.json(response);
185
174
  if ("charCodeAt" in response) {
186
175
  const code = response.charCodeAt(0);
187
176
  if (code === 123 || code === 91)
188
- return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
189
- JSON.stringify(response),
190
- set
191
- );
177
+ return Response.json(response, set);
192
178
  }
193
179
  return new Response(response, set);
194
180
  }
@@ -198,7 +184,7 @@ const mapResponse = (response, set, request) => {
198
184
  return new Response(response);
199
185
  case "Array":
200
186
  case "Object":
201
- return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
187
+ return Response.json(response, set);
202
188
  case "ElysiaFile":
203
189
  return (0, import_utils.handleFile)(response.value, set);
204
190
  case "File":
@@ -212,11 +198,7 @@ const mapResponse = (response, set, request) => {
212
198
  request
213
199
  );
214
200
  case void 0:
215
- return response ? new Response(JSON.stringify(response), {
216
- headers: {
217
- "content-type": "application/json"
218
- }
219
- }) : new Response("");
201
+ return response ? Response.json(response) : new Response("");
220
202
  case "Response":
221
203
  return response;
222
204
  case "Promise":
@@ -259,18 +241,11 @@ const mapResponse = (response, set, request) => {
259
241
  if (typeof response?.toResponse == "function")
260
242
  return mapEarlyResponse(response.toResponse(), set);
261
243
  if (Array.isArray(response))
262
- return new Response(JSON.stringify(response), {
263
- headers: {
264
- "Content-Type": "application/json"
265
- }
266
- });
244
+ return Response.json(response);
267
245
  if ("charCodeAt" in response) {
268
246
  const code = response.charCodeAt(0);
269
247
  if (code === 123 || code === 91)
270
- return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
271
- JSON.stringify(response),
272
- set
273
- );
248
+ return Response.json(response, set);
274
249
  }
275
250
  return new Response(response);
276
251
  }
@@ -280,11 +255,7 @@ const mapResponse = (response, set, request) => {
280
255
  return new Response(response);
281
256
  case "Object":
282
257
  case "Array":
283
- return new Response(JSON.stringify(response), {
284
- headers: {
285
- "Content-Type": "application/json"
286
- }
287
- });
258
+ return Response.json(response);
288
259
  case "ElysiaFile":
289
260
  return (0, import_utils.handleFile)(response.value);
290
261
  case "File":
@@ -300,11 +271,7 @@ const mapResponse = (response, set, request) => {
300
271
  }
301
272
  );
302
273
  case void 0:
303
- return response ? new Response(JSON.stringify(response), {
304
- headers: {
305
- "content-type": "application/json"
306
- }
307
- }) : new Response("");
274
+ return response ? Response.json(response) : new Response("");
308
275
  case "Response":
309
276
  return response;
310
277
  case "Error":
@@ -348,20 +315,11 @@ const mapResponse = (response, set, request) => {
348
315
  );
349
316
  if (typeof response?.toResponse == "function")
350
317
  return mapCompactResponse(response.toResponse());
351
- if (Array.isArray(response))
352
- return new Response(JSON.stringify(response), {
353
- headers: {
354
- "Content-Type": "application/json"
355
- }
356
- });
318
+ if (Array.isArray(response)) return Response.json(response);
357
319
  if ("charCodeAt" in response) {
358
320
  const code = response.charCodeAt(0);
359
321
  if (code === 123 || code === 91)
360
- return new Response(JSON.stringify(response), {
361
- headers: {
362
- "Content-Type": "application/json"
363
- }
364
- });
322
+ return Response.json(response);
365
323
  }
366
324
  return new Response(response);
367
325
  }
@@ -370,12 +328,12 @@ const mapResponse = (response, set, request) => {
370
328
  const raw = error.toResponse(), targetSet = set ?? { headers: {}, status: 200, redirect: "" }, apply = (resolved) => (resolved instanceof Response && (targetSet.status = resolved.status), mapResponse(resolved, targetSet));
371
329
  return typeof raw?.then == "function" ? raw.then(apply) : apply(raw);
372
330
  }
373
- return new Response(
374
- JSON.stringify({
331
+ return Response.json(
332
+ {
375
333
  name: error?.name,
376
334
  message: error?.message,
377
335
  cause: error?.cause
378
- }),
336
+ },
379
337
  {
380
338
  status: set?.status !== 200 ? set?.status ?? 500 : 500,
381
339
  headers: set?.headers
@@ -14,7 +14,7 @@ const mapResponse = (response, set, request) => {
14
14
  return new Response(response, set);
15
15
  case "Array":
16
16
  case "Object":
17
- return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
17
+ return Response.json(response, set);
18
18
  case "ElysiaFile":
19
19
  return handleFile(response.value, set);
20
20
  case "File":
@@ -28,7 +28,7 @@ const mapResponse = (response, set, request) => {
28
28
  request
29
29
  );
30
30
  case void 0:
31
- return response ? new Response(JSON.stringify(response), set) : new Response("", set);
31
+ return response ? Response.json(response, set) : new Response("", set);
32
32
  case "Response":
33
33
  return handleResponse(response, set, request);
34
34
  case "Error":
@@ -72,20 +72,13 @@ const mapResponse = (response, set, request) => {
72
72
  (x) => mapResponse(x, set)
73
73
  );
74
74
  if (Array.isArray(response))
75
- return new Response(JSON.stringify(response), {
76
- headers: {
77
- "Content-Type": "application/json"
78
- }
79
- });
75
+ return Response.json(response);
80
76
  if (typeof response?.toResponse == "function")
81
77
  return mapResponse(response.toResponse(), set);
82
78
  if ("charCodeAt" in response) {
83
79
  const code = response.charCodeAt(0);
84
80
  if (code === 123 || code === 91)
85
- return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
86
- JSON.stringify(response),
87
- set
88
- );
81
+ return Response.json(response, set);
89
82
  }
90
83
  return new Response(response, set);
91
84
  }
@@ -101,7 +94,7 @@ const mapResponse = (response, set, request) => {
101
94
  return new Response(response, set);
102
95
  case "Array":
103
96
  case "Object":
104
- return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
97
+ return Response.json(response, set);
105
98
  case "ElysiaFile":
106
99
  return handleFile(response.value, set);
107
100
  case "File":
@@ -115,7 +108,7 @@ const mapResponse = (response, set, request) => {
115
108
  request
116
109
  );
117
110
  case void 0:
118
- return response ? new Response(JSON.stringify(response), set) : void 0;
111
+ return response ? Response.json(response, set) : void 0;
119
112
  case "Response":
120
113
  return handleResponse(response, set, request);
121
114
  case "Promise":
@@ -161,18 +154,11 @@ const mapResponse = (response, set, request) => {
161
154
  if (typeof response?.toResponse == "function")
162
155
  return mapEarlyResponse(response.toResponse(), set);
163
156
  if (Array.isArray(response))
164
- return new Response(JSON.stringify(response), {
165
- headers: {
166
- "Content-Type": "application/json"
167
- }
168
- });
157
+ return Response.json(response);
169
158
  if ("charCodeAt" in response) {
170
159
  const code = response.charCodeAt(0);
171
160
  if (code === 123 || code === 91)
172
- return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
173
- JSON.stringify(response),
174
- set
175
- );
161
+ return Response.json(response, set);
176
162
  }
177
163
  return new Response(response, set);
178
164
  }
@@ -182,7 +168,7 @@ const mapResponse = (response, set, request) => {
182
168
  return new Response(response);
183
169
  case "Array":
184
170
  case "Object":
185
- return set.headers["content-type"] = "application/json", new Response(JSON.stringify(response), set);
171
+ return Response.json(response, set);
186
172
  case "ElysiaFile":
187
173
  return handleFile(response.value, set);
188
174
  case "File":
@@ -196,11 +182,7 @@ const mapResponse = (response, set, request) => {
196
182
  request
197
183
  );
198
184
  case void 0:
199
- return response ? new Response(JSON.stringify(response), {
200
- headers: {
201
- "content-type": "application/json"
202
- }
203
- }) : new Response("");
185
+ return response ? Response.json(response) : new Response("");
204
186
  case "Response":
205
187
  return response;
206
188
  case "Promise":
@@ -243,18 +225,11 @@ const mapResponse = (response, set, request) => {
243
225
  if (typeof response?.toResponse == "function")
244
226
  return mapEarlyResponse(response.toResponse(), set);
245
227
  if (Array.isArray(response))
246
- return new Response(JSON.stringify(response), {
247
- headers: {
248
- "Content-Type": "application/json"
249
- }
250
- });
228
+ return Response.json(response);
251
229
  if ("charCodeAt" in response) {
252
230
  const code = response.charCodeAt(0);
253
231
  if (code === 123 || code === 91)
254
- return set.headers["Content-Type"] || (set.headers["Content-Type"] = "application/json"), new Response(
255
- JSON.stringify(response),
256
- set
257
- );
232
+ return Response.json(response, set);
258
233
  }
259
234
  return new Response(response);
260
235
  }
@@ -264,11 +239,7 @@ const mapResponse = (response, set, request) => {
264
239
  return new Response(response);
265
240
  case "Object":
266
241
  case "Array":
267
- return new Response(JSON.stringify(response), {
268
- headers: {
269
- "Content-Type": "application/json"
270
- }
271
- });
242
+ return Response.json(response);
272
243
  case "ElysiaFile":
273
244
  return handleFile(response.value);
274
245
  case "File":
@@ -284,11 +255,7 @@ const mapResponse = (response, set, request) => {
284
255
  }
285
256
  );
286
257
  case void 0:
287
- return response ? new Response(JSON.stringify(response), {
288
- headers: {
289
- "content-type": "application/json"
290
- }
291
- }) : new Response("");
258
+ return response ? Response.json(response) : new Response("");
292
259
  case "Response":
293
260
  return response;
294
261
  case "Error":
@@ -332,20 +299,11 @@ const mapResponse = (response, set, request) => {
332
299
  );
333
300
  if (typeof response?.toResponse == "function")
334
301
  return mapCompactResponse(response.toResponse());
335
- if (Array.isArray(response))
336
- return new Response(JSON.stringify(response), {
337
- headers: {
338
- "Content-Type": "application/json"
339
- }
340
- });
302
+ if (Array.isArray(response)) return Response.json(response);
341
303
  if ("charCodeAt" in response) {
342
304
  const code = response.charCodeAt(0);
343
305
  if (code === 123 || code === 91)
344
- return new Response(JSON.stringify(response), {
345
- headers: {
346
- "Content-Type": "application/json"
347
- }
348
- });
306
+ return Response.json(response);
349
307
  }
350
308
  return new Response(response);
351
309
  }
@@ -354,12 +312,12 @@ const mapResponse = (response, set, request) => {
354
312
  const raw = error.toResponse(), targetSet = set ?? { headers: {}, status: 200, redirect: "" }, apply = (resolved) => (resolved instanceof Response && (targetSet.status = resolved.status), mapResponse(resolved, targetSet));
355
313
  return typeof raw?.then == "function" ? raw.then(apply) : apply(raw);
356
314
  }
357
- return new Response(
358
- JSON.stringify({
315
+ return Response.json(
316
+ {
359
317
  name: error?.name,
360
318
  message: error?.message,
361
319
  cause: error?.cause
362
- }),
320
+ },
363
321
  {
364
322
  status: set?.status !== 200 ? set?.status ?? 500 : 500,
365
323
  headers: set?.headers
@@ -1,3 +1,6 @@
1
1
  import type { ElysiaAdapter } from '../types';
2
2
  export declare const isHTMLBundle: (handle: any) => boolean;
3
+ type Routes = Record<string, Function | Response | Record<string, unknown>>;
4
+ export declare const removeTrailingPath: (routes: Routes) => Routes;
3
5
  export declare const BunAdapter: ElysiaAdapter;
6
+ export {};
@@ -16,7 +16,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0
16
16
  var bun_exports = {};
17
17
  __export(bun_exports, {
18
18
  BunAdapter: () => BunAdapter,
19
- isHTMLBundle: () => isHTMLBundle
19
+ isHTMLBundle: () => isHTMLBundle,
20
+ removeTrailingPath: () => removeTrailingPath
20
21
  });
21
22
  module.exports = __toCommonJS(bun_exports);
22
23
  var import_web_standard = require('../web-standard/index.js'), import_utils = require('../utils.js'), import_compose = require('./compose.js'), import_handler_native = require('./handler-native.js'), import_cookies = require('../../cookies.js'), import_error = require('../../error.js'), import_schema = require('../../schema.js'), import_utils2 = require('../../utils.js'), import_handler = require('./handler.js'), import_ws = require('../../ws/index.js');
@@ -88,6 +89,10 @@ const optionalParam = /:.+?\?(?=\/|$)/, getPossibleParams = (path) => {
88
89
  }
89
90
  }
90
91
  return r1;
92
+ }, removeTrailingPath = (routes) => {
93
+ for (const key of Object.keys(routes))
94
+ key.charCodeAt(key.length - 1) === 47 && (routes[key.slice(0, -1)] = routes[key], delete routes[key]);
95
+ return routes;
91
96
  }, BunAdapter = {
92
97
  ...import_web_standard.WebStandardAdapter,
93
98
  name: "bun",
@@ -147,21 +152,22 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
147
152
  staticRoutes[path] = route;
148
153
  }
149
154
  return withAsync ? Promise.all(ops).then(() => staticRoutes) : staticRoutes;
150
- }, serve = typeof options == "object" ? {
151
- development: !import_error.isProduction,
152
- reusePort: !0,
153
- idleTimeout: 30,
154
- ...app.config.serve || {},
155
- ...options || {},
156
- // @ts-ignore
157
- routes: mergeRoutes(
155
+ }, routes = removeTrailingPath(
156
+ mergeRoutes(
158
157
  mergeRoutes(
159
158
  createStaticRoute(app.router.response),
160
159
  mapRoutes(app)
161
160
  ),
162
161
  // @ts-ignore
163
162
  app.config.serve?.routes
164
- ),
163
+ )
164
+ ), serve = typeof options == "object" ? {
165
+ development: !import_error.isProduction,
166
+ reusePort: !0,
167
+ idleTimeout: 30,
168
+ ...app.config.serve || {},
169
+ ...options || {},
170
+ routes,
165
171
  websocket: {
166
172
  ...app.config.websocket || {},
167
173
  ...import_ws.websocket || {},
@@ -173,15 +179,7 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
173
179
  reusePort: !0,
174
180
  idleTimeout: 30,
175
181
  ...app.config.serve || {},
176
- // @ts-ignore
177
- routes: mergeRoutes(
178
- mergeRoutes(
179
- createStaticRoute(app.router.response),
180
- mapRoutes(app)
181
- ),
182
- // @ts-ignore
183
- app.config.serve?.routes
184
- ),
182
+ routes,
185
183
  websocket: {
186
184
  ...app.config.websocket || {},
187
185
  ...import_ws.websocket || {}
@@ -197,11 +195,9 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
197
195
  for (let i = 0; i < app.event.stop.length; i++)
198
196
  app.event.stop[i].fn(app);
199
197
  }), app.promisedModules.then(async () => {
200
- app.config.aot, app.compile(), app.server?.reload({
201
- ...serve,
202
- fetch: app.fetch,
203
- // @ts-ignore
204
- routes: mergeRoutes(
198
+ app.config.aot, app.compile();
199
+ const routes2 = removeTrailingPath(
200
+ mergeRoutes(
205
201
  mergeRoutes(
206
202
  await createStaticRoute(app.router.response, {
207
203
  withAsync: !0
@@ -211,6 +207,12 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
211
207
  // @ts-ignore
212
208
  app.config.serve?.routes
213
209
  )
210
+ );
211
+ app.server?.reload({
212
+ ...serve,
213
+ fetch: app.fetch,
214
+ // @ts-ignore
215
+ routes: routes2
214
216
  }), Bun?.gc(!1);
215
217
  });
216
218
  };
@@ -375,5 +377,6 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
375
377
  // Annotate the CommonJS export names for ESM import in node:
376
378
  0 && (module.exports = {
377
379
  BunAdapter,
378
- isHTMLBundle
380
+ isHTMLBundle,
381
+ removeTrailingPath
379
382
  });
@@ -92,6 +92,10 @@ const optionalParam = /:.+?\?(?=\/|$)/, getPossibleParams = (path) => {
92
92
  }
93
93
  }
94
94
  return r1;
95
+ }, removeTrailingPath = (routes) => {
96
+ for (const key of Object.keys(routes))
97
+ key.charCodeAt(key.length - 1) === 47 && (routes[key.slice(0, -1)] = routes[key], delete routes[key]);
98
+ return routes;
95
99
  }, BunAdapter = {
96
100
  ...WebStandardAdapter,
97
101
  name: "bun",
@@ -151,21 +155,22 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
151
155
  staticRoutes[path] = route;
152
156
  }
153
157
  return withAsync ? Promise.all(ops).then(() => staticRoutes) : staticRoutes;
154
- }, serve = typeof options == "object" ? {
155
- development: !isProduction,
156
- reusePort: !0,
157
- idleTimeout: 30,
158
- ...app.config.serve || {},
159
- ...options || {},
160
- // @ts-ignore
161
- routes: mergeRoutes(
158
+ }, routes = removeTrailingPath(
159
+ mergeRoutes(
162
160
  mergeRoutes(
163
161
  createStaticRoute(app.router.response),
164
162
  mapRoutes(app)
165
163
  ),
166
164
  // @ts-ignore
167
165
  app.config.serve?.routes
168
- ),
166
+ )
167
+ ), serve = typeof options == "object" ? {
168
+ development: !isProduction,
169
+ reusePort: !0,
170
+ idleTimeout: 30,
171
+ ...app.config.serve || {},
172
+ ...options || {},
173
+ routes,
169
174
  websocket: {
170
175
  ...app.config.websocket || {},
171
176
  ...websocket || {},
@@ -177,15 +182,7 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
177
182
  reusePort: !0,
178
183
  idleTimeout: 30,
179
184
  ...app.config.serve || {},
180
- // @ts-ignore
181
- routes: mergeRoutes(
182
- mergeRoutes(
183
- createStaticRoute(app.router.response),
184
- mapRoutes(app)
185
- ),
186
- // @ts-ignore
187
- app.config.serve?.routes
188
- ),
185
+ routes,
189
186
  websocket: {
190
187
  ...app.config.websocket || {},
191
188
  ...websocket || {}
@@ -201,11 +198,9 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
201
198
  for (let i = 0; i < app.event.stop.length; i++)
202
199
  app.event.stop[i].fn(app);
203
200
  }), app.promisedModules.then(async () => {
204
- app.config.aot, app.compile(), app.server?.reload({
205
- ...serve,
206
- fetch: app.fetch,
207
- // @ts-ignore
208
- routes: mergeRoutes(
201
+ app.config.aot, app.compile();
202
+ const routes2 = removeTrailingPath(
203
+ mergeRoutes(
209
204
  mergeRoutes(
210
205
  await createStaticRoute(app.router.response, {
211
206
  withAsync: !0
@@ -215,6 +210,12 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
215
210
  // @ts-ignore
216
211
  app.config.serve?.routes
217
212
  )
213
+ );
214
+ app.server?.reload({
215
+ ...serve,
216
+ fetch: app.fetch,
217
+ // @ts-ignore
218
+ routes: routes2
218
219
  }), Bun?.gc(!1);
219
220
  });
220
221
  };
@@ -378,5 +379,6 @@ for(const [k,v] of c.request.headers.entries())c.headers[k]=v
378
379
  };
379
380
  export {
380
381
  BunAdapter,
381
- isHTMLBundle
382
+ isHTMLBundle,
383
+ removeTrailingPath
382
384
  };