elysia 1.0.21 → 1.0.23

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.
@@ -293,6 +293,12 @@ var parseCookie = async (set, cookieString, {
293
293
  throw new InvalidCookieSignature(name);
294
294
  }
295
295
  }
296
+ if (value == null) {
297
+ jar[name] = {
298
+ value: v
299
+ };
300
+ continue;
301
+ }
296
302
  const start = value.charCodeAt(0);
297
303
  if (start === 123 || start === 91)
298
304
  try {
@@ -542,7 +548,7 @@ var validateFile = (options, value) => {
542
548
  }
543
549
  return true;
544
550
  };
545
- var File = TypeRegistry.Get("Files") ?? TypeSystem.Type("File", validateFile);
551
+ var File2 = TypeRegistry.Get("Files") ?? TypeSystem.Type("File", validateFile);
546
552
  var Files = TypeRegistry.Get("Files") ?? TypeSystem.Type(
547
553
  "Files",
548
554
  (options, value) => {
@@ -688,7 +694,7 @@ var ElysiaType = {
688
694
  return JSON.stringify(value);
689
695
  });
690
696
  },
691
- File,
697
+ File: File2,
692
698
  Files: (options = {}) => t.Transform(Files(options)).Decode((value) => {
693
699
  if (Array.isArray(value))
694
700
  return value;
@@ -895,12 +901,25 @@ var isNumericString = (message) => {
895
901
  }
896
902
  return false;
897
903
  };
898
- var redirect = (url, status = 301) => new Response(null, {
899
- status,
900
- headers: {
901
- Location: url
904
+ var redirect = (url, status = 301) => Response.redirect(url, status);
905
+ var ELYSIA_FORM_DATA = Symbol("ElysiaFormData");
906
+ var form = (items) => {
907
+ const formData = new FormData();
908
+ for (const [key, value] of Object.entries(items)) {
909
+ if (Array.isArray(value)) {
910
+ for (const v of value) {
911
+ if (value instanceof File)
912
+ formData.append(key, value, value.name);
913
+ formData.append(key, v);
914
+ }
915
+ continue;
916
+ }
917
+ if (value instanceof File)
918
+ formData.append(key, value, value.name);
919
+ formData.append(key, value);
902
920
  }
903
- });
921
+ return formData;
922
+ };
904
923
 
905
924
  // src/handler.ts
906
925
  var hasHeaderShorthand = "toJSON" in new Headers();
@@ -1008,9 +1027,21 @@ var mapResponse = (response, set, request) => {
1008
1027
  return new Response(response, set);
1009
1028
  case "Blob":
1010
1029
  return handleFile(response, set);
1011
- case "Object":
1012
1030
  case "Array":
1013
1031
  return Response.json(response, set);
1032
+ case "Object":
1033
+ for (const value in Object.values(response)) {
1034
+ switch (value?.constructor?.name) {
1035
+ case "Blob":
1036
+ case "File":
1037
+ case "ArrayBuffer":
1038
+ case "FileRef":
1039
+ return new Response(form(response));
1040
+ default:
1041
+ break;
1042
+ }
1043
+ }
1044
+ return Response.json(response, set);
1014
1045
  case "ReadableStream":
1015
1046
  if (!set.headers["content-type"]?.startsWith(
1016
1047
  "text/event-stream"
@@ -1084,6 +1115,8 @@ var mapResponse = (response, set, request) => {
1084
1115
  if (response instanceof Cookie)
1085
1116
  return new Response(response.value, set);
1086
1117
  return new Response(response?.toString(), set);
1118
+ case "FormData":
1119
+ return new Response(response, set);
1087
1120
  default:
1088
1121
  if (response instanceof Response) {
1089
1122
  let isCookieSet2 = false;
@@ -1124,6 +1157,8 @@ var mapResponse = (response, set, request) => {
1124
1157
  return response.then((x) => mapResponse(x, set));
1125
1158
  if (response instanceof Error)
1126
1159
  return errorToResponse(response, set);
1160
+ if ("toResponse" in response)
1161
+ return mapResponse(response.toResponse(), set);
1127
1162
  if ("charCodeAt" in response) {
1128
1163
  const code = response.charCodeAt(0);
1129
1164
  if (code === 123 || code === 91) {
@@ -1143,13 +1178,24 @@ var mapResponse = (response, set, request) => {
1143
1178
  return new Response(response);
1144
1179
  case "Blob":
1145
1180
  return handleFile(response, set);
1146
- case "Object":
1147
1181
  case "Array":
1148
- return new Response(JSON.stringify(response), {
1149
- headers: {
1150
- "content-type": "application/json"
1182
+ return Response.json(response);
1183
+ case "Object":
1184
+ for (const value in Object.values(response)) {
1185
+ switch (value?.constructor?.name) {
1186
+ case "Blob":
1187
+ case "File":
1188
+ case "ArrayBuffer":
1189
+ case "FileRef":
1190
+ return new Response(
1191
+ form(response),
1192
+ set
1193
+ );
1194
+ default:
1195
+ break;
1151
1196
  }
1152
- });
1197
+ }
1198
+ return Response.json(response, set);
1153
1199
  case "ReadableStream":
1154
1200
  request?.signal.addEventListener(
1155
1201
  "abort",
@@ -1196,6 +1242,8 @@ var mapResponse = (response, set, request) => {
1196
1242
  if (response instanceof Cookie)
1197
1243
  return new Response(response.value, set);
1198
1244
  return new Response(response?.toString(), set);
1245
+ case "FormData":
1246
+ return new Response(response, set);
1199
1247
  default:
1200
1248
  if (response instanceof Response)
1201
1249
  return new Response(response.body, {
@@ -1207,6 +1255,8 @@ var mapResponse = (response, set, request) => {
1207
1255
  return response.then((x) => mapResponse(x, set));
1208
1256
  if (response instanceof Error)
1209
1257
  return errorToResponse(response, set);
1258
+ if ("toResponse" in response)
1259
+ return mapResponse(response.toResponse(), set);
1210
1260
  if ("charCodeAt" in response) {
1211
1261
  const code = response.charCodeAt(0);
1212
1262
  if (code === 123 || code === 91) {
@@ -1250,9 +1300,24 @@ var mapEarlyResponse = (response, set, request) => {
1250
1300
  return new Response(response, set);
1251
1301
  case "Blob":
1252
1302
  return handleFile(response, set);
1253
- case "Object":
1254
1303
  case "Array":
1255
1304
  return Response.json(response, set);
1305
+ case "Object":
1306
+ for (const value in Object.values(response)) {
1307
+ switch (value?.constructor?.name) {
1308
+ case "Blob":
1309
+ case "File":
1310
+ case "ArrayBuffer":
1311
+ case "FileRef":
1312
+ return new Response(
1313
+ form(response),
1314
+ set
1315
+ );
1316
+ default:
1317
+ break;
1318
+ }
1319
+ }
1320
+ return Response.json(response, set);
1256
1321
  case "ReadableStream":
1257
1322
  if (!set.headers["content-type"]?.startsWith(
1258
1323
  "text/event-stream"
@@ -1324,6 +1389,8 @@ var mapEarlyResponse = (response, set, request) => {
1324
1389
  response.toString(),
1325
1390
  set
1326
1391
  );
1392
+ case "FormData":
1393
+ return new Response(response);
1327
1394
  case "Cookie":
1328
1395
  if (response instanceof Cookie)
1329
1396
  return new Response(response.value, set);
@@ -1364,6 +1431,8 @@ var mapEarlyResponse = (response, set, request) => {
1364
1431
  return response.then((x) => mapEarlyResponse(x, set));
1365
1432
  if (response instanceof Error)
1366
1433
  return errorToResponse(response, set);
1434
+ if ("toResponse" in response)
1435
+ return mapEarlyResponse(response.toResponse(), set);
1367
1436
  if ("charCodeAt" in response) {
1368
1437
  const code = response.charCodeAt(0);
1369
1438
  if (code === 123 || code === 91) {
@@ -1383,13 +1452,24 @@ var mapEarlyResponse = (response, set, request) => {
1383
1452
  return new Response(response);
1384
1453
  case "Blob":
1385
1454
  return handleFile(response, set);
1386
- case "Object":
1387
1455
  case "Array":
1388
- return new Response(JSON.stringify(response), {
1389
- headers: {
1390
- "content-type": "application/json"
1456
+ return Response.json(response);
1457
+ case "Object":
1458
+ for (const value in Object.values(response)) {
1459
+ switch (value?.constructor?.name) {
1460
+ case "Blob":
1461
+ case "File":
1462
+ case "ArrayBuffer":
1463
+ case "FileRef":
1464
+ return new Response(
1465
+ form(response),
1466
+ set
1467
+ );
1468
+ default:
1469
+ break;
1391
1470
  }
1392
- });
1471
+ }
1472
+ return Response.json(response, set);
1393
1473
  case "ReadableStream":
1394
1474
  request?.signal.addEventListener(
1395
1475
  "abort",
@@ -1435,6 +1515,8 @@ var mapEarlyResponse = (response, set, request) => {
1435
1515
  if (response instanceof Cookie)
1436
1516
  return new Response(response.value, set);
1437
1517
  return new Response(response?.toString(), set);
1518
+ case "FormData":
1519
+ return new Response(response);
1438
1520
  default:
1439
1521
  if (response instanceof Response)
1440
1522
  return new Response(response.body, {
@@ -1446,6 +1528,8 @@ var mapEarlyResponse = (response, set, request) => {
1446
1528
  return response.then((x) => mapEarlyResponse(x, set));
1447
1529
  if (response instanceof Error)
1448
1530
  return errorToResponse(response, set);
1531
+ if ("toResponse" in response)
1532
+ return mapEarlyResponse(response.toResponse(), set);
1449
1533
  if ("charCodeAt" in response) {
1450
1534
  const code = response.charCodeAt(0);
1451
1535
  if (code === 123 || code === 91) {
@@ -1474,13 +1558,23 @@ var mapCompactResponse = (response, request) => {
1474
1558
  return new Response(response);
1475
1559
  case "Blob":
1476
1560
  return handleFile(response);
1477
- case "Object":
1478
1561
  case "Array":
1479
- return new Response(JSON.stringify(response), {
1480
- headers: {
1481
- "content-type": "application/json"
1482
- }
1483
- });
1562
+ return Response.json(response);
1563
+ case "Object":
1564
+ form:
1565
+ for (const value of Object.values(response))
1566
+ switch (value?.constructor?.name) {
1567
+ case "Blob":
1568
+ case "File":
1569
+ case "ArrayBuffer":
1570
+ case "FileRef":
1571
+ return new Response(form(response));
1572
+ case "Object":
1573
+ break form;
1574
+ default:
1575
+ break;
1576
+ }
1577
+ return Response.json(response);
1484
1578
  case "ReadableStream":
1485
1579
  request?.signal.addEventListener(
1486
1580
  "abort",
@@ -1520,6 +1614,8 @@ var mapCompactResponse = (response, request) => {
1520
1614
  case "Number":
1521
1615
  case "Boolean":
1522
1616
  return new Response(response.toString());
1617
+ case "FormData":
1618
+ return new Response(response);
1523
1619
  default:
1524
1620
  if (response instanceof Response)
1525
1621
  return new Response(response.body, {
@@ -1531,6 +1627,8 @@ var mapCompactResponse = (response, request) => {
1531
1627
  return response.then(mapCompactResponse);
1532
1628
  if (response instanceof Error)
1533
1629
  return errorToResponse(response);
1630
+ if ("toResponse" in response)
1631
+ return mapCompactResponse(response.toResponse());
1534
1632
  if ("charCodeAt" in response) {
1535
1633
  const code = response.charCodeAt(0);
1536
1634
  if (code === 123 || code === 91) {
@@ -1611,11 +1709,11 @@ var createDynamicHandler = (app) => async (request) => {
1611
1709
  break;
1612
1710
  case "multipart/form-data":
1613
1711
  body = {};
1614
- const form = await request.formData();
1615
- for (const key of form.keys()) {
1712
+ const form2 = await request.formData();
1713
+ for (const key of form2.keys()) {
1616
1714
  if (body[key])
1617
1715
  continue;
1618
- const value = form.getAll(key);
1716
+ const value = form2.getAll(key);
1619
1717
  if (value.length === 1)
1620
1718
  body[key] = value[0];
1621
1719
  else
@@ -1657,11 +1755,11 @@ var createDynamicHandler = (app) => async (request) => {
1657
1755
  break;
1658
1756
  case "multipart/form-data":
1659
1757
  body = {};
1660
- const form = await request.formData();
1661
- for (const key of form.keys()) {
1758
+ const form2 = await request.formData();
1759
+ for (const key of form2.keys()) {
1662
1760
  if (body[key])
1663
1761
  continue;
1664
- const value = form.getAll(key);
1762
+ const value = form2.getAll(key);
1665
1763
  if (value.length === 1)
1666
1764
  body[key] = value[0];
1667
1765
  else
package/dist/error.mjs CHANGED
@@ -242,7 +242,7 @@ var validateFile = (options, value) => {
242
242
  }
243
243
  return true;
244
244
  };
245
- var File = TypeRegistry.Get("Files") ?? TypeSystem.Type("File", validateFile);
245
+ var File2 = TypeRegistry.Get("Files") ?? TypeSystem.Type("File", validateFile);
246
246
  var Files = TypeRegistry.Get("Files") ?? TypeSystem.Type(
247
247
  "Files",
248
248
  (options, value) => {
@@ -388,7 +388,7 @@ var ElysiaType = {
388
388
  return JSON.stringify(value);
389
389
  });
390
390
  },
391
- File,
391
+ File: File2,
392
392
  Files: (options = {}) => t.Transform(Files(options)).Decode((value) => {
393
393
  if (Array.isArray(value))
394
394
  return value;
@@ -550,6 +550,7 @@ var InvertedStatusMap = Object.fromEntries(
550
550
  Object.entries(StatusMap).map(([k, v]) => [v, k])
551
551
  );
552
552
  var encoder = new TextEncoder();
553
+ var ELYSIA_FORM_DATA = Symbol("ElysiaFormData");
553
554
 
554
555
  // src/error.ts
555
556
  var env = typeof Bun !== "undefined" ? Bun.env : typeof process !== "undefined" ? process?.env : void 0;
package/dist/handler.mjs CHANGED
@@ -442,7 +442,7 @@ var validateFile = (options, value) => {
442
442
  }
443
443
  return true;
444
444
  };
445
- var File = TypeRegistry.Get("Files") ?? TypeSystem.Type("File", validateFile);
445
+ var File2 = TypeRegistry.Get("Files") ?? TypeSystem.Type("File", validateFile);
446
446
  var Files = TypeRegistry.Get("Files") ?? TypeSystem.Type(
447
447
  "Files",
448
448
  (options, value) => {
@@ -588,7 +588,7 @@ var ElysiaType = {
588
588
  return JSON.stringify(value);
589
589
  });
590
590
  },
591
- File,
591
+ File: File2,
592
592
  Files: (options = {}) => t.Transform(Files(options)).Decode((value) => {
593
593
  if (Array.isArray(value))
594
594
  return value;
@@ -750,6 +750,24 @@ var InvertedStatusMap = Object.fromEntries(
750
750
  Object.entries(StatusMap).map(([k, v]) => [v, k])
751
751
  );
752
752
  var encoder = new TextEncoder();
753
+ var ELYSIA_FORM_DATA = Symbol("ElysiaFormData");
754
+ var form = (items) => {
755
+ const formData = new FormData();
756
+ for (const [key, value] of Object.entries(items)) {
757
+ if (Array.isArray(value)) {
758
+ for (const v of value) {
759
+ if (value instanceof File)
760
+ formData.append(key, value, value.name);
761
+ formData.append(key, v);
762
+ }
763
+ continue;
764
+ }
765
+ if (value instanceof File)
766
+ formData.append(key, value, value.name);
767
+ formData.append(key, value);
768
+ }
769
+ return formData;
770
+ };
753
771
 
754
772
  // src/handler.ts
755
773
  var hasHeaderShorthand = "toJSON" in new Headers();
@@ -857,9 +875,21 @@ var mapResponse = (response, set, request) => {
857
875
  return new Response(response, set);
858
876
  case "Blob":
859
877
  return handleFile(response, set);
860
- case "Object":
861
878
  case "Array":
862
879
  return Response.json(response, set);
880
+ case "Object":
881
+ for (const value in Object.values(response)) {
882
+ switch (value?.constructor?.name) {
883
+ case "Blob":
884
+ case "File":
885
+ case "ArrayBuffer":
886
+ case "FileRef":
887
+ return new Response(form(response));
888
+ default:
889
+ break;
890
+ }
891
+ }
892
+ return Response.json(response, set);
863
893
  case "ReadableStream":
864
894
  if (!set.headers["content-type"]?.startsWith(
865
895
  "text/event-stream"
@@ -933,6 +963,8 @@ var mapResponse = (response, set, request) => {
933
963
  if (response instanceof Cookie)
934
964
  return new Response(response.value, set);
935
965
  return new Response(response?.toString(), set);
966
+ case "FormData":
967
+ return new Response(response, set);
936
968
  default:
937
969
  if (response instanceof Response) {
938
970
  let isCookieSet2 = false;
@@ -973,6 +1005,8 @@ var mapResponse = (response, set, request) => {
973
1005
  return response.then((x) => mapResponse(x, set));
974
1006
  if (response instanceof Error)
975
1007
  return errorToResponse(response, set);
1008
+ if ("toResponse" in response)
1009
+ return mapResponse(response.toResponse(), set);
976
1010
  if ("charCodeAt" in response) {
977
1011
  const code = response.charCodeAt(0);
978
1012
  if (code === 123 || code === 91) {
@@ -992,13 +1026,24 @@ var mapResponse = (response, set, request) => {
992
1026
  return new Response(response);
993
1027
  case "Blob":
994
1028
  return handleFile(response, set);
995
- case "Object":
996
1029
  case "Array":
997
- return new Response(JSON.stringify(response), {
998
- headers: {
999
- "content-type": "application/json"
1030
+ return Response.json(response);
1031
+ case "Object":
1032
+ for (const value in Object.values(response)) {
1033
+ switch (value?.constructor?.name) {
1034
+ case "Blob":
1035
+ case "File":
1036
+ case "ArrayBuffer":
1037
+ case "FileRef":
1038
+ return new Response(
1039
+ form(response),
1040
+ set
1041
+ );
1042
+ default:
1043
+ break;
1000
1044
  }
1001
- });
1045
+ }
1046
+ return Response.json(response, set);
1002
1047
  case "ReadableStream":
1003
1048
  request?.signal.addEventListener(
1004
1049
  "abort",
@@ -1045,6 +1090,8 @@ var mapResponse = (response, set, request) => {
1045
1090
  if (response instanceof Cookie)
1046
1091
  return new Response(response.value, set);
1047
1092
  return new Response(response?.toString(), set);
1093
+ case "FormData":
1094
+ return new Response(response, set);
1048
1095
  default:
1049
1096
  if (response instanceof Response)
1050
1097
  return new Response(response.body, {
@@ -1056,6 +1103,8 @@ var mapResponse = (response, set, request) => {
1056
1103
  return response.then((x) => mapResponse(x, set));
1057
1104
  if (response instanceof Error)
1058
1105
  return errorToResponse(response, set);
1106
+ if ("toResponse" in response)
1107
+ return mapResponse(response.toResponse(), set);
1059
1108
  if ("charCodeAt" in response) {
1060
1109
  const code = response.charCodeAt(0);
1061
1110
  if (code === 123 || code === 91) {
@@ -1099,9 +1148,24 @@ var mapEarlyResponse = (response, set, request) => {
1099
1148
  return new Response(response, set);
1100
1149
  case "Blob":
1101
1150
  return handleFile(response, set);
1102
- case "Object":
1103
1151
  case "Array":
1104
1152
  return Response.json(response, set);
1153
+ case "Object":
1154
+ for (const value in Object.values(response)) {
1155
+ switch (value?.constructor?.name) {
1156
+ case "Blob":
1157
+ case "File":
1158
+ case "ArrayBuffer":
1159
+ case "FileRef":
1160
+ return new Response(
1161
+ form(response),
1162
+ set
1163
+ );
1164
+ default:
1165
+ break;
1166
+ }
1167
+ }
1168
+ return Response.json(response, set);
1105
1169
  case "ReadableStream":
1106
1170
  if (!set.headers["content-type"]?.startsWith(
1107
1171
  "text/event-stream"
@@ -1173,6 +1237,8 @@ var mapEarlyResponse = (response, set, request) => {
1173
1237
  response.toString(),
1174
1238
  set
1175
1239
  );
1240
+ case "FormData":
1241
+ return new Response(response);
1176
1242
  case "Cookie":
1177
1243
  if (response instanceof Cookie)
1178
1244
  return new Response(response.value, set);
@@ -1213,6 +1279,8 @@ var mapEarlyResponse = (response, set, request) => {
1213
1279
  return response.then((x) => mapEarlyResponse(x, set));
1214
1280
  if (response instanceof Error)
1215
1281
  return errorToResponse(response, set);
1282
+ if ("toResponse" in response)
1283
+ return mapEarlyResponse(response.toResponse(), set);
1216
1284
  if ("charCodeAt" in response) {
1217
1285
  const code = response.charCodeAt(0);
1218
1286
  if (code === 123 || code === 91) {
@@ -1232,13 +1300,24 @@ var mapEarlyResponse = (response, set, request) => {
1232
1300
  return new Response(response);
1233
1301
  case "Blob":
1234
1302
  return handleFile(response, set);
1235
- case "Object":
1236
1303
  case "Array":
1237
- return new Response(JSON.stringify(response), {
1238
- headers: {
1239
- "content-type": "application/json"
1304
+ return Response.json(response);
1305
+ case "Object":
1306
+ for (const value in Object.values(response)) {
1307
+ switch (value?.constructor?.name) {
1308
+ case "Blob":
1309
+ case "File":
1310
+ case "ArrayBuffer":
1311
+ case "FileRef":
1312
+ return new Response(
1313
+ form(response),
1314
+ set
1315
+ );
1316
+ default:
1317
+ break;
1240
1318
  }
1241
- });
1319
+ }
1320
+ return Response.json(response, set);
1242
1321
  case "ReadableStream":
1243
1322
  request?.signal.addEventListener(
1244
1323
  "abort",
@@ -1284,6 +1363,8 @@ var mapEarlyResponse = (response, set, request) => {
1284
1363
  if (response instanceof Cookie)
1285
1364
  return new Response(response.value, set);
1286
1365
  return new Response(response?.toString(), set);
1366
+ case "FormData":
1367
+ return new Response(response);
1287
1368
  default:
1288
1369
  if (response instanceof Response)
1289
1370
  return new Response(response.body, {
@@ -1295,6 +1376,8 @@ var mapEarlyResponse = (response, set, request) => {
1295
1376
  return response.then((x) => mapEarlyResponse(x, set));
1296
1377
  if (response instanceof Error)
1297
1378
  return errorToResponse(response, set);
1379
+ if ("toResponse" in response)
1380
+ return mapEarlyResponse(response.toResponse(), set);
1298
1381
  if ("charCodeAt" in response) {
1299
1382
  const code = response.charCodeAt(0);
1300
1383
  if (code === 123 || code === 91) {
@@ -1323,13 +1406,23 @@ var mapCompactResponse = (response, request) => {
1323
1406
  return new Response(response);
1324
1407
  case "Blob":
1325
1408
  return handleFile(response);
1326
- case "Object":
1327
1409
  case "Array":
1328
- return new Response(JSON.stringify(response), {
1329
- headers: {
1330
- "content-type": "application/json"
1331
- }
1332
- });
1410
+ return Response.json(response);
1411
+ case "Object":
1412
+ form:
1413
+ for (const value of Object.values(response))
1414
+ switch (value?.constructor?.name) {
1415
+ case "Blob":
1416
+ case "File":
1417
+ case "ArrayBuffer":
1418
+ case "FileRef":
1419
+ return new Response(form(response));
1420
+ case "Object":
1421
+ break form;
1422
+ default:
1423
+ break;
1424
+ }
1425
+ return Response.json(response);
1333
1426
  case "ReadableStream":
1334
1427
  request?.signal.addEventListener(
1335
1428
  "abort",
@@ -1369,6 +1462,8 @@ var mapCompactResponse = (response, request) => {
1369
1462
  case "Number":
1370
1463
  case "Boolean":
1371
1464
  return new Response(response.toString());
1465
+ case "FormData":
1466
+ return new Response(response);
1372
1467
  default:
1373
1468
  if (response instanceof Response)
1374
1469
  return new Response(response.body, {
@@ -1380,6 +1475,8 @@ var mapCompactResponse = (response, request) => {
1380
1475
  return response.then(mapCompactResponse);
1381
1476
  if (response instanceof Error)
1382
1477
  return errorToResponse(response);
1478
+ if ("toResponse" in response)
1479
+ return mapCompactResponse(response.toResponse());
1383
1480
  if ("charCodeAt" in response) {
1384
1481
  const code = response.charCodeAt(0);
1385
1482
  if (code === 123 || code === 91) {
package/dist/index.d.ts CHANGED
@@ -1418,7 +1418,7 @@ export { Elysia };
1418
1418
  export { mapResponse, mapCompactResponse, mapEarlyResponse } from './handler';
1419
1419
  export { t } from './type-system';
1420
1420
  export { Cookie, type CookieOptions } from './cookies';
1421
- export { getSchemaValidator, mergeHook, mergeObjectArray, getResponseSchemaValidator, redirect, StatusMap, InvertedStatusMap } from './utils';
1421
+ export { getSchemaValidator, mergeHook, mergeObjectArray, getResponseSchemaValidator, redirect, StatusMap, InvertedStatusMap, form, type ELYSIA_FORM_DATA } from './utils';
1422
1422
  export { error, ParseError, NotFoundError, ValidationError, InternalServerError, InvalidCookieSignature, ERROR_CODE, ELYSIA_RESPONSE } from './error';
1423
1423
  export type { Context, PreContext } from './context';
1424
1424
  export type { EphemeralType, CreateEden, ComposeElysiaResponse, ElysiaConfig, SingletonBase, DefinitionBase, RouteBase, Handler, ComposedHandler, InputSchema, LocalHook, MergeSchema, RouteSchema, UnwrapRoute, InternalRoute, HTTPMethod, SchemaValidator, VoidHandler, PreHandler, BodyHandler, OptionalHandler, ErrorHandler, AfterHandler, LifeCycleEvent, TraceEvent, LifeCycleStore, LifeCycleType, MaybePromise, ListenCallback, UnwrapSchema, TraceHandler, TraceProcess, TraceReporter, TraceStream, Checksum, DocumentDecoration, InferContext, InferHandler } from './types';