elysia 1.0.21 → 1.0.22

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.
@@ -875,9 +875,21 @@ var mapResponse = (response, set, request) => {
875
875
  return new Response(response, set);
876
876
  case "Blob":
877
877
  return handleFile(response, set);
878
- case "Object":
879
878
  case "Array":
880
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);
881
893
  case "ReadableStream":
882
894
  if (!set.headers["content-type"]?.startsWith(
883
895
  "text/event-stream"
@@ -951,6 +963,8 @@ var mapResponse = (response, set, request) => {
951
963
  if (response instanceof Cookie)
952
964
  return new Response(response.value, set);
953
965
  return new Response(response?.toString(), set);
966
+ case "FormData":
967
+ return new Response(response, set);
954
968
  default:
955
969
  if (response instanceof Response) {
956
970
  let isCookieSet2 = false;
@@ -1010,13 +1024,24 @@ var mapResponse = (response, set, request) => {
1010
1024
  return new Response(response);
1011
1025
  case "Blob":
1012
1026
  return handleFile(response, set);
1013
- case "Object":
1014
1027
  case "Array":
1015
- return new Response(JSON.stringify(response), {
1016
- headers: {
1017
- "content-type": "application/json"
1028
+ return Response.json(response);
1029
+ case "Object":
1030
+ for (const value in Object.values(response)) {
1031
+ switch (value?.constructor?.name) {
1032
+ case "Blob":
1033
+ case "File":
1034
+ case "ArrayBuffer":
1035
+ case "FileRef":
1036
+ return new Response(
1037
+ form(response),
1038
+ set
1039
+ );
1040
+ default:
1041
+ break;
1018
1042
  }
1019
- });
1043
+ }
1044
+ return Response.json(response, set);
1020
1045
  case "ReadableStream":
1021
1046
  request?.signal.addEventListener(
1022
1047
  "abort",
@@ -1063,6 +1088,8 @@ var mapResponse = (response, set, request) => {
1063
1088
  if (response instanceof Cookie)
1064
1089
  return new Response(response.value, set);
1065
1090
  return new Response(response?.toString(), set);
1091
+ case "FormData":
1092
+ return new Response(response, set);
1066
1093
  default:
1067
1094
  if (response instanceof Response)
1068
1095
  return new Response(response.body, {
@@ -1117,9 +1144,24 @@ var mapEarlyResponse = (response, set, request) => {
1117
1144
  return new Response(response, set);
1118
1145
  case "Blob":
1119
1146
  return handleFile(response, set);
1120
- case "Object":
1121
1147
  case "Array":
1122
1148
  return Response.json(response, set);
1149
+ case "Object":
1150
+ for (const value in Object.values(response)) {
1151
+ switch (value?.constructor?.name) {
1152
+ case "Blob":
1153
+ case "File":
1154
+ case "ArrayBuffer":
1155
+ case "FileRef":
1156
+ return new Response(
1157
+ form(response),
1158
+ set
1159
+ );
1160
+ default:
1161
+ break;
1162
+ }
1163
+ }
1164
+ return Response.json(response, set);
1123
1165
  case "ReadableStream":
1124
1166
  if (!set.headers["content-type"]?.startsWith(
1125
1167
  "text/event-stream"
@@ -1191,6 +1233,8 @@ var mapEarlyResponse = (response, set, request) => {
1191
1233
  response.toString(),
1192
1234
  set
1193
1235
  );
1236
+ case "FormData":
1237
+ return new Response(response);
1194
1238
  case "Cookie":
1195
1239
  if (response instanceof Cookie)
1196
1240
  return new Response(response.value, set);
@@ -1250,13 +1294,24 @@ var mapEarlyResponse = (response, set, request) => {
1250
1294
  return new Response(response);
1251
1295
  case "Blob":
1252
1296
  return handleFile(response, set);
1253
- case "Object":
1254
1297
  case "Array":
1255
- return new Response(JSON.stringify(response), {
1256
- headers: {
1257
- "content-type": "application/json"
1298
+ return Response.json(response);
1299
+ case "Object":
1300
+ for (const value in Object.values(response)) {
1301
+ switch (value?.constructor?.name) {
1302
+ case "Blob":
1303
+ case "File":
1304
+ case "ArrayBuffer":
1305
+ case "FileRef":
1306
+ return new Response(
1307
+ form(response),
1308
+ set
1309
+ );
1310
+ default:
1311
+ break;
1258
1312
  }
1259
- });
1313
+ }
1314
+ return Response.json(response, set);
1260
1315
  case "ReadableStream":
1261
1316
  request?.signal.addEventListener(
1262
1317
  "abort",
@@ -1302,6 +1357,8 @@ var mapEarlyResponse = (response, set, request) => {
1302
1357
  if (response instanceof Cookie)
1303
1358
  return new Response(response.value, set);
1304
1359
  return new Response(response?.toString(), set);
1360
+ case "FormData":
1361
+ return new Response(response);
1305
1362
  default:
1306
1363
  if (response instanceof Response)
1307
1364
  return new Response(response.body, {
@@ -1341,13 +1398,23 @@ var mapCompactResponse = (response, request) => {
1341
1398
  return new Response(response);
1342
1399
  case "Blob":
1343
1400
  return handleFile(response);
1344
- case "Object":
1345
1401
  case "Array":
1346
- return new Response(JSON.stringify(response), {
1347
- headers: {
1348
- "content-type": "application/json"
1349
- }
1350
- });
1402
+ return Response.json(response);
1403
+ case "Object":
1404
+ form:
1405
+ for (const value of Object.values(response))
1406
+ switch (value?.constructor?.name) {
1407
+ case "Blob":
1408
+ case "File":
1409
+ case "ArrayBuffer":
1410
+ case "FileRef":
1411
+ return new Response(form(response));
1412
+ case "Object":
1413
+ break form;
1414
+ default:
1415
+ break;
1416
+ }
1417
+ return Response.json(response);
1351
1418
  case "ReadableStream":
1352
1419
  request?.signal.addEventListener(
1353
1420
  "abort",
@@ -1387,6 +1454,8 @@ var mapCompactResponse = (response, request) => {
1387
1454
  case "Number":
1388
1455
  case "Boolean":
1389
1456
  return new Response(response.toString());
1457
+ case "FormData":
1458
+ return new Response(response);
1390
1459
  default:
1391
1460
  if (response instanceof Response)
1392
1461
  return new Response(response.body, {
@@ -1626,7 +1695,7 @@ var validateFile = (options, value) => {
1626
1695
  }
1627
1696
  return true;
1628
1697
  };
1629
- var File = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile);
1698
+ var File2 = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile);
1630
1699
  var Files = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type(
1631
1700
  "Files",
1632
1701
  (options, value) => {
@@ -1772,7 +1841,7 @@ var ElysiaType = {
1772
1841
  return JSON.stringify(value);
1773
1842
  });
1774
1843
  },
1775
- File,
1844
+ File: File2,
1776
1845
  Files: (options = {}) => t.Transform(Files(options)).Decode((value) => {
1777
1846
  if (Array.isArray(value))
1778
1847
  return value;
@@ -2097,12 +2166,25 @@ var lifeCycleToFn = (a) => {
2097
2166
  stop: a.stop?.map((x) => x.fn)
2098
2167
  };
2099
2168
  };
2100
- var redirect = (url, status = 301) => new Response(null, {
2101
- status,
2102
- headers: {
2103
- Location: url
2169
+ var redirect = (url, status = 301) => Response.redirect(url, status);
2170
+ var ELYSIA_FORM_DATA = Symbol("ElysiaFormData");
2171
+ var form = (items) => {
2172
+ const formData = new FormData();
2173
+ for (const [key, value] of Object.entries(items)) {
2174
+ if (Array.isArray(value)) {
2175
+ for (const v of value) {
2176
+ if (value instanceof File)
2177
+ formData.append(key, value, value.name);
2178
+ formData.append(key, v);
2179
+ }
2180
+ continue;
2181
+ }
2182
+ if (value instanceof File)
2183
+ formData.append(key, value, value.name);
2184
+ formData.append(key, value);
2104
2185
  }
2105
- });
2186
+ return formData;
2187
+ };
2106
2188
 
2107
2189
  // src/compose.ts
2108
2190
  var headersHasToJSON = new Headers().toJSON;
@@ -362,7 +362,7 @@ var validateFile = (options, value) => {
362
362
  }
363
363
  return true;
364
364
  };
365
- var File = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile);
365
+ var File2 = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile);
366
366
  var Files = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type(
367
367
  "Files",
368
368
  (options, value) => {
@@ -508,7 +508,7 @@ var ElysiaType = {
508
508
  return JSON.stringify(value);
509
509
  });
510
510
  },
511
- File,
511
+ File: File2,
512
512
  Files: (options = {}) => t.Transform(Files(options)).Decode((value) => {
513
513
  if (Array.isArray(value))
514
514
  return value;
@@ -715,6 +715,7 @@ var isNumericString = (message) => {
715
715
  }
716
716
  return false;
717
717
  };
718
+ var ELYSIA_FORM_DATA = Symbol("ElysiaFormData");
718
719
 
719
720
  // src/cookies.ts
720
721
  var Cookie = class {
@@ -569,7 +569,7 @@ var validateFile = (options, value) => {
569
569
  }
570
570
  return true;
571
571
  };
572
- var File = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile);
572
+ var File2 = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile);
573
573
  var Files = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type(
574
574
  "Files",
575
575
  (options, value) => {
@@ -715,7 +715,7 @@ var ElysiaType = {
715
715
  return JSON.stringify(value);
716
716
  });
717
717
  },
718
- File,
718
+ File: File2,
719
719
  Files: (options = {}) => t.Transform(Files(options)).Decode((value) => {
720
720
  if (Array.isArray(value))
721
721
  return value;
@@ -922,12 +922,25 @@ var isNumericString = (message) => {
922
922
  }
923
923
  return false;
924
924
  };
925
- var redirect = (url, status = 301) => new Response(null, {
926
- status,
927
- headers: {
928
- Location: url
925
+ var redirect = (url, status = 301) => Response.redirect(url, status);
926
+ var ELYSIA_FORM_DATA = Symbol("ElysiaFormData");
927
+ var form = (items) => {
928
+ const formData = new FormData();
929
+ for (const [key, value] of Object.entries(items)) {
930
+ if (Array.isArray(value)) {
931
+ for (const v of value) {
932
+ if (value instanceof File)
933
+ formData.append(key, value, value.name);
934
+ formData.append(key, v);
935
+ }
936
+ continue;
937
+ }
938
+ if (value instanceof File)
939
+ formData.append(key, value, value.name);
940
+ formData.append(key, value);
929
941
  }
930
- });
942
+ return formData;
943
+ };
931
944
 
932
945
  // src/handler.ts
933
946
  var hasHeaderShorthand = "toJSON" in new Headers();
@@ -1035,9 +1048,21 @@ var mapResponse = (response, set, request) => {
1035
1048
  return new Response(response, set);
1036
1049
  case "Blob":
1037
1050
  return handleFile(response, set);
1038
- case "Object":
1039
1051
  case "Array":
1040
1052
  return Response.json(response, set);
1053
+ case "Object":
1054
+ for (const value in Object.values(response)) {
1055
+ switch (value?.constructor?.name) {
1056
+ case "Blob":
1057
+ case "File":
1058
+ case "ArrayBuffer":
1059
+ case "FileRef":
1060
+ return new Response(form(response));
1061
+ default:
1062
+ break;
1063
+ }
1064
+ }
1065
+ return Response.json(response, set);
1041
1066
  case "ReadableStream":
1042
1067
  if (!set.headers["content-type"]?.startsWith(
1043
1068
  "text/event-stream"
@@ -1111,6 +1136,8 @@ var mapResponse = (response, set, request) => {
1111
1136
  if (response instanceof Cookie)
1112
1137
  return new Response(response.value, set);
1113
1138
  return new Response(response?.toString(), set);
1139
+ case "FormData":
1140
+ return new Response(response, set);
1114
1141
  default:
1115
1142
  if (response instanceof Response) {
1116
1143
  let isCookieSet2 = false;
@@ -1170,13 +1197,24 @@ var mapResponse = (response, set, request) => {
1170
1197
  return new Response(response);
1171
1198
  case "Blob":
1172
1199
  return handleFile(response, set);
1173
- case "Object":
1174
1200
  case "Array":
1175
- return new Response(JSON.stringify(response), {
1176
- headers: {
1177
- "content-type": "application/json"
1201
+ return Response.json(response);
1202
+ case "Object":
1203
+ for (const value in Object.values(response)) {
1204
+ switch (value?.constructor?.name) {
1205
+ case "Blob":
1206
+ case "File":
1207
+ case "ArrayBuffer":
1208
+ case "FileRef":
1209
+ return new Response(
1210
+ form(response),
1211
+ set
1212
+ );
1213
+ default:
1214
+ break;
1178
1215
  }
1179
- });
1216
+ }
1217
+ return Response.json(response, set);
1180
1218
  case "ReadableStream":
1181
1219
  request?.signal.addEventListener(
1182
1220
  "abort",
@@ -1223,6 +1261,8 @@ var mapResponse = (response, set, request) => {
1223
1261
  if (response instanceof Cookie)
1224
1262
  return new Response(response.value, set);
1225
1263
  return new Response(response?.toString(), set);
1264
+ case "FormData":
1265
+ return new Response(response, set);
1226
1266
  default:
1227
1267
  if (response instanceof Response)
1228
1268
  return new Response(response.body, {
@@ -1277,9 +1317,24 @@ var mapEarlyResponse = (response, set, request) => {
1277
1317
  return new Response(response, set);
1278
1318
  case "Blob":
1279
1319
  return handleFile(response, set);
1280
- case "Object":
1281
1320
  case "Array":
1282
1321
  return Response.json(response, set);
1322
+ case "Object":
1323
+ for (const value in Object.values(response)) {
1324
+ switch (value?.constructor?.name) {
1325
+ case "Blob":
1326
+ case "File":
1327
+ case "ArrayBuffer":
1328
+ case "FileRef":
1329
+ return new Response(
1330
+ form(response),
1331
+ set
1332
+ );
1333
+ default:
1334
+ break;
1335
+ }
1336
+ }
1337
+ return Response.json(response, set);
1283
1338
  case "ReadableStream":
1284
1339
  if (!set.headers["content-type"]?.startsWith(
1285
1340
  "text/event-stream"
@@ -1351,6 +1406,8 @@ var mapEarlyResponse = (response, set, request) => {
1351
1406
  response.toString(),
1352
1407
  set
1353
1408
  );
1409
+ case "FormData":
1410
+ return new Response(response);
1354
1411
  case "Cookie":
1355
1412
  if (response instanceof Cookie)
1356
1413
  return new Response(response.value, set);
@@ -1410,13 +1467,24 @@ var mapEarlyResponse = (response, set, request) => {
1410
1467
  return new Response(response);
1411
1468
  case "Blob":
1412
1469
  return handleFile(response, set);
1413
- case "Object":
1414
1470
  case "Array":
1415
- return new Response(JSON.stringify(response), {
1416
- headers: {
1417
- "content-type": "application/json"
1471
+ return Response.json(response);
1472
+ case "Object":
1473
+ for (const value in Object.values(response)) {
1474
+ switch (value?.constructor?.name) {
1475
+ case "Blob":
1476
+ case "File":
1477
+ case "ArrayBuffer":
1478
+ case "FileRef":
1479
+ return new Response(
1480
+ form(response),
1481
+ set
1482
+ );
1483
+ default:
1484
+ break;
1418
1485
  }
1419
- });
1486
+ }
1487
+ return Response.json(response, set);
1420
1488
  case "ReadableStream":
1421
1489
  request?.signal.addEventListener(
1422
1490
  "abort",
@@ -1462,6 +1530,8 @@ var mapEarlyResponse = (response, set, request) => {
1462
1530
  if (response instanceof Cookie)
1463
1531
  return new Response(response.value, set);
1464
1532
  return new Response(response?.toString(), set);
1533
+ case "FormData":
1534
+ return new Response(response);
1465
1535
  default:
1466
1536
  if (response instanceof Response)
1467
1537
  return new Response(response.body, {
@@ -1501,13 +1571,23 @@ var mapCompactResponse = (response, request) => {
1501
1571
  return new Response(response);
1502
1572
  case "Blob":
1503
1573
  return handleFile(response);
1504
- case "Object":
1505
1574
  case "Array":
1506
- return new Response(JSON.stringify(response), {
1507
- headers: {
1508
- "content-type": "application/json"
1509
- }
1510
- });
1575
+ return Response.json(response);
1576
+ case "Object":
1577
+ form:
1578
+ for (const value of Object.values(response))
1579
+ switch (value?.constructor?.name) {
1580
+ case "Blob":
1581
+ case "File":
1582
+ case "ArrayBuffer":
1583
+ case "FileRef":
1584
+ return new Response(form(response));
1585
+ case "Object":
1586
+ break form;
1587
+ default:
1588
+ break;
1589
+ }
1590
+ return Response.json(response);
1511
1591
  case "ReadableStream":
1512
1592
  request?.signal.addEventListener(
1513
1593
  "abort",
@@ -1547,6 +1627,8 @@ var mapCompactResponse = (response, request) => {
1547
1627
  case "Number":
1548
1628
  case "Boolean":
1549
1629
  return new Response(response.toString());
1630
+ case "FormData":
1631
+ return new Response(response);
1550
1632
  default:
1551
1633
  if (response instanceof Response)
1552
1634
  return new Response(response.body, {
@@ -1638,11 +1720,11 @@ var createDynamicHandler = (app) => async (request) => {
1638
1720
  break;
1639
1721
  case "multipart/form-data":
1640
1722
  body = {};
1641
- const form = await request.formData();
1642
- for (const key of form.keys()) {
1723
+ const form2 = await request.formData();
1724
+ for (const key of form2.keys()) {
1643
1725
  if (body[key])
1644
1726
  continue;
1645
- const value = form.getAll(key);
1727
+ const value = form2.getAll(key);
1646
1728
  if (value.length === 1)
1647
1729
  body[key] = value[0];
1648
1730
  else
@@ -1684,11 +1766,11 @@ var createDynamicHandler = (app) => async (request) => {
1684
1766
  break;
1685
1767
  case "multipart/form-data":
1686
1768
  body = {};
1687
- const form = await request.formData();
1688
- for (const key of form.keys()) {
1769
+ const form2 = await request.formData();
1770
+ for (const key of form2.keys()) {
1689
1771
  if (body[key])
1690
1772
  continue;
1691
- const value = form.getAll(key);
1773
+ const value = form2.getAll(key);
1692
1774
  if (value.length === 1)
1693
1775
  body[key] = value[0];
1694
1776
  else
package/dist/cjs/error.js CHANGED
@@ -274,7 +274,7 @@ var validateFile = (options, value) => {
274
274
  }
275
275
  return true;
276
276
  };
277
- var File = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile);
277
+ var File2 = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile);
278
278
  var Files = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type(
279
279
  "Files",
280
280
  (options, value) => {
@@ -420,7 +420,7 @@ var ElysiaType = {
420
420
  return JSON.stringify(value);
421
421
  });
422
422
  },
423
- File,
423
+ File: File2,
424
424
  Files: (options = {}) => t.Transform(Files(options)).Decode((value) => {
425
425
  if (Array.isArray(value))
426
426
  return value;
@@ -582,6 +582,7 @@ var InvertedStatusMap = Object.fromEntries(
582
582
  Object.entries(StatusMap).map(([k, v]) => [v, k])
583
583
  );
584
584
  var encoder = new TextEncoder();
585
+ var ELYSIA_FORM_DATA = Symbol("ElysiaFormData");
585
586
 
586
587
  // src/error.ts
587
588
  var env = typeof Bun !== "undefined" ? Bun.env : typeof process !== "undefined" ? process?.env : void 0;