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.
- package/dist/bun/index.d.ts +1 -1
- package/dist/bun/index.js +111 -110
- package/dist/bun/index.js.map +23 -32
- package/dist/cjs/compose.js +171 -39
- package/dist/cjs/cookies.js +9 -2
- package/dist/cjs/dynamic-handle.js +129 -31
- package/dist/cjs/error.js +3 -2
- package/dist/cjs/handler.js +117 -20
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +185 -48
- package/dist/cjs/sucrose.js +5 -1
- package/dist/cjs/type-system.js +3 -2
- package/dist/cjs/types.d.ts +11 -4
- package/dist/cjs/utils.d.ts +16 -4
- package/dist/cjs/utils.js +28 -11
- package/dist/cjs/ws/index.js +3 -2
- package/dist/compose.mjs +171 -39
- package/dist/cookies.mjs +9 -2
- package/dist/dynamic-handle.mjs +129 -31
- package/dist/error.mjs +3 -2
- package/dist/handler.mjs +117 -20
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +184 -48
- package/dist/sucrose.mjs +5 -1
- package/dist/type-system.mjs +3 -2
- package/dist/types.d.ts +11 -4
- package/dist/utils.d.ts +16 -4
- package/dist/utils.mjs +26 -11
- package/dist/ws/index.mjs +3 -2
- package/package.json +2 -1
- package/tsconfig.test.tsbuildinfo +1 -1
package/dist/cjs/utils.js
CHANGED
|
@@ -30,6 +30,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/utils.ts
|
|
31
31
|
var utils_exports = {};
|
|
32
32
|
__export(utils_exports, {
|
|
33
|
+
ELYSIA_FORM_DATA: () => ELYSIA_FORM_DATA,
|
|
33
34
|
InvertedStatusMap: () => InvertedStatusMap,
|
|
34
35
|
PromiseGroup: () => PromiseGroup,
|
|
35
36
|
StatusMap: () => StatusMap,
|
|
@@ -39,6 +40,7 @@ __export(utils_exports, {
|
|
|
39
40
|
createMacroManager: () => createMacroManager,
|
|
40
41
|
filterGlobalHook: () => filterGlobalHook,
|
|
41
42
|
fnToContainer: () => fnToContainer,
|
|
43
|
+
form: () => form,
|
|
42
44
|
getCookieValidator: () => getCookieValidator,
|
|
43
45
|
getResponseSchemaValidator: () => getResponseSchemaValidator,
|
|
44
46
|
getSchemaValidator: () => getSchemaValidator,
|
|
@@ -387,7 +389,7 @@ var validateFile = (options, value) => {
|
|
|
387
389
|
}
|
|
388
390
|
return true;
|
|
389
391
|
};
|
|
390
|
-
var
|
|
392
|
+
var File2 = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile);
|
|
391
393
|
var Files = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type(
|
|
392
394
|
"Files",
|
|
393
395
|
(options, value) => {
|
|
@@ -533,7 +535,7 @@ var ElysiaType = {
|
|
|
533
535
|
return JSON.stringify(value);
|
|
534
536
|
});
|
|
535
537
|
},
|
|
536
|
-
File,
|
|
538
|
+
File: File2,
|
|
537
539
|
Files: (options = {}) => t.Transform(Files(options)).Decode((value) => {
|
|
538
540
|
if (Array.isArray(value))
|
|
539
541
|
return value;
|
|
@@ -732,7 +734,7 @@ var getSchemaValidator = (s, {
|
|
|
732
734
|
models = {},
|
|
733
735
|
dynamic = false,
|
|
734
736
|
normalize = false,
|
|
735
|
-
additionalProperties =
|
|
737
|
+
additionalProperties = false
|
|
736
738
|
} = {}) => {
|
|
737
739
|
if (!s)
|
|
738
740
|
return void 0;
|
|
@@ -753,7 +755,7 @@ var getSchemaValidator = (s, {
|
|
|
753
755
|
Errors: (value) => import_value4.Value.Errors(schema, value),
|
|
754
756
|
Code: () => ""
|
|
755
757
|
};
|
|
756
|
-
if (normalize && schema.additionalProperties ===
|
|
758
|
+
if (normalize && schema.additionalProperties === false)
|
|
757
759
|
validator.Clean = cleaner;
|
|
758
760
|
if (schema.config) {
|
|
759
761
|
validator.config = schema.config;
|
|
@@ -775,7 +777,7 @@ var getResponseSchemaValidator = (s, {
|
|
|
775
777
|
models = {},
|
|
776
778
|
dynamic = false,
|
|
777
779
|
normalize = false,
|
|
778
|
-
additionalProperties =
|
|
780
|
+
additionalProperties = false
|
|
779
781
|
}) => {
|
|
780
782
|
if (!s)
|
|
781
783
|
return;
|
|
@@ -796,7 +798,7 @@ var getResponseSchemaValidator = (s, {
|
|
|
796
798
|
Code: () => ""
|
|
797
799
|
};
|
|
798
800
|
const compiledValidator = import_compiler2.TypeCompiler.Compile(schema, references);
|
|
799
|
-
if (normalize && schema.additionalProperties ===
|
|
801
|
+
if (normalize && schema.additionalProperties === false)
|
|
800
802
|
compiledValidator.Clean = cleaner;
|
|
801
803
|
return compiledValidator;
|
|
802
804
|
};
|
|
@@ -1283,14 +1285,28 @@ var cloneInference = (inference) => ({
|
|
|
1283
1285
|
set: inference.trace.set
|
|
1284
1286
|
}
|
|
1285
1287
|
});
|
|
1286
|
-
var redirect = (url, status = 301) =>
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1288
|
+
var redirect = (url, status = 301) => Response.redirect(url, status);
|
|
1289
|
+
var ELYSIA_FORM_DATA = Symbol("ElysiaFormData");
|
|
1290
|
+
var form = (items) => {
|
|
1291
|
+
const formData = new FormData();
|
|
1292
|
+
for (const [key, value] of Object.entries(items)) {
|
|
1293
|
+
if (Array.isArray(value)) {
|
|
1294
|
+
for (const v of value) {
|
|
1295
|
+
if (value instanceof File)
|
|
1296
|
+
formData.append(key, value, value.name);
|
|
1297
|
+
formData.append(key, v);
|
|
1298
|
+
}
|
|
1299
|
+
continue;
|
|
1300
|
+
}
|
|
1301
|
+
if (value instanceof File)
|
|
1302
|
+
formData.append(key, value, value.name);
|
|
1303
|
+
formData.append(key, value);
|
|
1290
1304
|
}
|
|
1291
|
-
|
|
1305
|
+
return formData;
|
|
1306
|
+
};
|
|
1292
1307
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1293
1308
|
0 && (module.exports = {
|
|
1309
|
+
ELYSIA_FORM_DATA,
|
|
1294
1310
|
InvertedStatusMap,
|
|
1295
1311
|
PromiseGroup,
|
|
1296
1312
|
StatusMap,
|
|
@@ -1300,6 +1316,7 @@ var redirect = (url, status = 301) => new Response(null, {
|
|
|
1300
1316
|
createMacroManager,
|
|
1301
1317
|
filterGlobalHook,
|
|
1302
1318
|
fnToContainer,
|
|
1319
|
+
form,
|
|
1303
1320
|
getCookieValidator,
|
|
1304
1321
|
getResponseSchemaValidator,
|
|
1305
1322
|
getSchemaValidator,
|
package/dist/cjs/ws/index.js
CHANGED
|
@@ -269,7 +269,7 @@ var validateFile = (options, value) => {
|
|
|
269
269
|
}
|
|
270
270
|
return true;
|
|
271
271
|
};
|
|
272
|
-
var
|
|
272
|
+
var File2 = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type("File", validateFile);
|
|
273
273
|
var Files = import_typebox.TypeRegistry.Get("Files") ?? import_system.TypeSystem.Type(
|
|
274
274
|
"Files",
|
|
275
275
|
(options, value) => {
|
|
@@ -415,7 +415,7 @@ var ElysiaType = {
|
|
|
415
415
|
return JSON.stringify(value);
|
|
416
416
|
});
|
|
417
417
|
},
|
|
418
|
-
File,
|
|
418
|
+
File: File2,
|
|
419
419
|
Files: (options = {}) => t.Transform(Files(options)).Decode((value) => {
|
|
420
420
|
if (Array.isArray(value))
|
|
421
421
|
return value;
|
|
@@ -577,6 +577,7 @@ var InvertedStatusMap = Object.fromEntries(
|
|
|
577
577
|
Object.entries(StatusMap).map(([k, v]) => [v, k])
|
|
578
578
|
);
|
|
579
579
|
var encoder = new TextEncoder();
|
|
580
|
+
var ELYSIA_FORM_DATA = Symbol("ElysiaFormData");
|
|
580
581
|
|
|
581
582
|
// src/error.ts
|
|
582
583
|
var env = typeof Bun !== "undefined" ? Bun.env : typeof process !== "undefined" ? process?.env : void 0;
|
package/dist/compose.mjs
CHANGED
|
@@ -45,8 +45,10 @@ var separateFunction = (code) => {
|
|
|
45
45
|
}
|
|
46
46
|
const start = code.indexOf("(");
|
|
47
47
|
if (start !== -1) {
|
|
48
|
-
const
|
|
48
|
+
const sep = code.indexOf("\n", 2);
|
|
49
|
+
const parameter = code.slice(0, sep);
|
|
49
50
|
const end = parameter.lastIndexOf(")") + 1;
|
|
51
|
+
const body = code.slice(sep + 1);
|
|
50
52
|
return [
|
|
51
53
|
parameter.slice(start, end),
|
|
52
54
|
"{" + body,
|
|
@@ -302,6 +304,8 @@ var validateInferencedQueries = (queries) => {
|
|
|
302
304
|
return false;
|
|
303
305
|
if (query.indexOf(" ") !== -1)
|
|
304
306
|
return false;
|
|
307
|
+
if (query.indexOf("(") !== -1)
|
|
308
|
+
return false;
|
|
305
309
|
}
|
|
306
310
|
return true;
|
|
307
311
|
};
|
|
@@ -693,6 +697,12 @@ var parseCookie = async (set, cookieString, {
|
|
|
693
697
|
throw new InvalidCookieSignature(name);
|
|
694
698
|
}
|
|
695
699
|
}
|
|
700
|
+
if (value == null) {
|
|
701
|
+
jar[name] = {
|
|
702
|
+
value: v
|
|
703
|
+
};
|
|
704
|
+
continue;
|
|
705
|
+
}
|
|
696
706
|
const start = value.charCodeAt(0);
|
|
697
707
|
if (start === 123 || start === 91)
|
|
698
708
|
try {
|
|
@@ -833,9 +843,21 @@ var mapResponse = (response, set, request) => {
|
|
|
833
843
|
return new Response(response, set);
|
|
834
844
|
case "Blob":
|
|
835
845
|
return handleFile(response, set);
|
|
836
|
-
case "Object":
|
|
837
846
|
case "Array":
|
|
838
847
|
return Response.json(response, set);
|
|
848
|
+
case "Object":
|
|
849
|
+
for (const value in Object.values(response)) {
|
|
850
|
+
switch (value?.constructor?.name) {
|
|
851
|
+
case "Blob":
|
|
852
|
+
case "File":
|
|
853
|
+
case "ArrayBuffer":
|
|
854
|
+
case "FileRef":
|
|
855
|
+
return new Response(form(response));
|
|
856
|
+
default:
|
|
857
|
+
break;
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
return Response.json(response, set);
|
|
839
861
|
case "ReadableStream":
|
|
840
862
|
if (!set.headers["content-type"]?.startsWith(
|
|
841
863
|
"text/event-stream"
|
|
@@ -909,6 +931,8 @@ var mapResponse = (response, set, request) => {
|
|
|
909
931
|
if (response instanceof Cookie)
|
|
910
932
|
return new Response(response.value, set);
|
|
911
933
|
return new Response(response?.toString(), set);
|
|
934
|
+
case "FormData":
|
|
935
|
+
return new Response(response, set);
|
|
912
936
|
default:
|
|
913
937
|
if (response instanceof Response) {
|
|
914
938
|
let isCookieSet2 = false;
|
|
@@ -949,6 +973,8 @@ var mapResponse = (response, set, request) => {
|
|
|
949
973
|
return response.then((x) => mapResponse(x, set));
|
|
950
974
|
if (response instanceof Error)
|
|
951
975
|
return errorToResponse(response, set);
|
|
976
|
+
if ("toResponse" in response)
|
|
977
|
+
return mapResponse(response.toResponse(), set);
|
|
952
978
|
if ("charCodeAt" in response) {
|
|
953
979
|
const code = response.charCodeAt(0);
|
|
954
980
|
if (code === 123 || code === 91) {
|
|
@@ -968,13 +994,24 @@ var mapResponse = (response, set, request) => {
|
|
|
968
994
|
return new Response(response);
|
|
969
995
|
case "Blob":
|
|
970
996
|
return handleFile(response, set);
|
|
971
|
-
case "Object":
|
|
972
997
|
case "Array":
|
|
973
|
-
return
|
|
974
|
-
|
|
975
|
-
|
|
998
|
+
return Response.json(response);
|
|
999
|
+
case "Object":
|
|
1000
|
+
for (const value in Object.values(response)) {
|
|
1001
|
+
switch (value?.constructor?.name) {
|
|
1002
|
+
case "Blob":
|
|
1003
|
+
case "File":
|
|
1004
|
+
case "ArrayBuffer":
|
|
1005
|
+
case "FileRef":
|
|
1006
|
+
return new Response(
|
|
1007
|
+
form(response),
|
|
1008
|
+
set
|
|
1009
|
+
);
|
|
1010
|
+
default:
|
|
1011
|
+
break;
|
|
976
1012
|
}
|
|
977
|
-
}
|
|
1013
|
+
}
|
|
1014
|
+
return Response.json(response, set);
|
|
978
1015
|
case "ReadableStream":
|
|
979
1016
|
request?.signal.addEventListener(
|
|
980
1017
|
"abort",
|
|
@@ -1021,6 +1058,8 @@ var mapResponse = (response, set, request) => {
|
|
|
1021
1058
|
if (response instanceof Cookie)
|
|
1022
1059
|
return new Response(response.value, set);
|
|
1023
1060
|
return new Response(response?.toString(), set);
|
|
1061
|
+
case "FormData":
|
|
1062
|
+
return new Response(response, set);
|
|
1024
1063
|
default:
|
|
1025
1064
|
if (response instanceof Response)
|
|
1026
1065
|
return new Response(response.body, {
|
|
@@ -1032,6 +1071,8 @@ var mapResponse = (response, set, request) => {
|
|
|
1032
1071
|
return response.then((x) => mapResponse(x, set));
|
|
1033
1072
|
if (response instanceof Error)
|
|
1034
1073
|
return errorToResponse(response, set);
|
|
1074
|
+
if ("toResponse" in response)
|
|
1075
|
+
return mapResponse(response.toResponse(), set);
|
|
1035
1076
|
if ("charCodeAt" in response) {
|
|
1036
1077
|
const code = response.charCodeAt(0);
|
|
1037
1078
|
if (code === 123 || code === 91) {
|
|
@@ -1075,9 +1116,24 @@ var mapEarlyResponse = (response, set, request) => {
|
|
|
1075
1116
|
return new Response(response, set);
|
|
1076
1117
|
case "Blob":
|
|
1077
1118
|
return handleFile(response, set);
|
|
1078
|
-
case "Object":
|
|
1079
1119
|
case "Array":
|
|
1080
1120
|
return Response.json(response, set);
|
|
1121
|
+
case "Object":
|
|
1122
|
+
for (const value in Object.values(response)) {
|
|
1123
|
+
switch (value?.constructor?.name) {
|
|
1124
|
+
case "Blob":
|
|
1125
|
+
case "File":
|
|
1126
|
+
case "ArrayBuffer":
|
|
1127
|
+
case "FileRef":
|
|
1128
|
+
return new Response(
|
|
1129
|
+
form(response),
|
|
1130
|
+
set
|
|
1131
|
+
);
|
|
1132
|
+
default:
|
|
1133
|
+
break;
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
return Response.json(response, set);
|
|
1081
1137
|
case "ReadableStream":
|
|
1082
1138
|
if (!set.headers["content-type"]?.startsWith(
|
|
1083
1139
|
"text/event-stream"
|
|
@@ -1149,6 +1205,8 @@ var mapEarlyResponse = (response, set, request) => {
|
|
|
1149
1205
|
response.toString(),
|
|
1150
1206
|
set
|
|
1151
1207
|
);
|
|
1208
|
+
case "FormData":
|
|
1209
|
+
return new Response(response);
|
|
1152
1210
|
case "Cookie":
|
|
1153
1211
|
if (response instanceof Cookie)
|
|
1154
1212
|
return new Response(response.value, set);
|
|
@@ -1189,6 +1247,8 @@ var mapEarlyResponse = (response, set, request) => {
|
|
|
1189
1247
|
return response.then((x) => mapEarlyResponse(x, set));
|
|
1190
1248
|
if (response instanceof Error)
|
|
1191
1249
|
return errorToResponse(response, set);
|
|
1250
|
+
if ("toResponse" in response)
|
|
1251
|
+
return mapEarlyResponse(response.toResponse(), set);
|
|
1192
1252
|
if ("charCodeAt" in response) {
|
|
1193
1253
|
const code = response.charCodeAt(0);
|
|
1194
1254
|
if (code === 123 || code === 91) {
|
|
@@ -1208,13 +1268,24 @@ var mapEarlyResponse = (response, set, request) => {
|
|
|
1208
1268
|
return new Response(response);
|
|
1209
1269
|
case "Blob":
|
|
1210
1270
|
return handleFile(response, set);
|
|
1211
|
-
case "Object":
|
|
1212
1271
|
case "Array":
|
|
1213
|
-
return
|
|
1214
|
-
|
|
1215
|
-
|
|
1272
|
+
return Response.json(response);
|
|
1273
|
+
case "Object":
|
|
1274
|
+
for (const value in Object.values(response)) {
|
|
1275
|
+
switch (value?.constructor?.name) {
|
|
1276
|
+
case "Blob":
|
|
1277
|
+
case "File":
|
|
1278
|
+
case "ArrayBuffer":
|
|
1279
|
+
case "FileRef":
|
|
1280
|
+
return new Response(
|
|
1281
|
+
form(response),
|
|
1282
|
+
set
|
|
1283
|
+
);
|
|
1284
|
+
default:
|
|
1285
|
+
break;
|
|
1216
1286
|
}
|
|
1217
|
-
}
|
|
1287
|
+
}
|
|
1288
|
+
return Response.json(response, set);
|
|
1218
1289
|
case "ReadableStream":
|
|
1219
1290
|
request?.signal.addEventListener(
|
|
1220
1291
|
"abort",
|
|
@@ -1260,6 +1331,8 @@ var mapEarlyResponse = (response, set, request) => {
|
|
|
1260
1331
|
if (response instanceof Cookie)
|
|
1261
1332
|
return new Response(response.value, set);
|
|
1262
1333
|
return new Response(response?.toString(), set);
|
|
1334
|
+
case "FormData":
|
|
1335
|
+
return new Response(response);
|
|
1263
1336
|
default:
|
|
1264
1337
|
if (response instanceof Response)
|
|
1265
1338
|
return new Response(response.body, {
|
|
@@ -1271,6 +1344,8 @@ var mapEarlyResponse = (response, set, request) => {
|
|
|
1271
1344
|
return response.then((x) => mapEarlyResponse(x, set));
|
|
1272
1345
|
if (response instanceof Error)
|
|
1273
1346
|
return errorToResponse(response, set);
|
|
1347
|
+
if ("toResponse" in response)
|
|
1348
|
+
return mapEarlyResponse(response.toResponse(), set);
|
|
1274
1349
|
if ("charCodeAt" in response) {
|
|
1275
1350
|
const code = response.charCodeAt(0);
|
|
1276
1351
|
if (code === 123 || code === 91) {
|
|
@@ -1299,13 +1374,23 @@ var mapCompactResponse = (response, request) => {
|
|
|
1299
1374
|
return new Response(response);
|
|
1300
1375
|
case "Blob":
|
|
1301
1376
|
return handleFile(response);
|
|
1302
|
-
case "Object":
|
|
1303
1377
|
case "Array":
|
|
1304
|
-
return
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1378
|
+
return Response.json(response);
|
|
1379
|
+
case "Object":
|
|
1380
|
+
form:
|
|
1381
|
+
for (const value of Object.values(response))
|
|
1382
|
+
switch (value?.constructor?.name) {
|
|
1383
|
+
case "Blob":
|
|
1384
|
+
case "File":
|
|
1385
|
+
case "ArrayBuffer":
|
|
1386
|
+
case "FileRef":
|
|
1387
|
+
return new Response(form(response));
|
|
1388
|
+
case "Object":
|
|
1389
|
+
break form;
|
|
1390
|
+
default:
|
|
1391
|
+
break;
|
|
1392
|
+
}
|
|
1393
|
+
return Response.json(response);
|
|
1309
1394
|
case "ReadableStream":
|
|
1310
1395
|
request?.signal.addEventListener(
|
|
1311
1396
|
"abort",
|
|
@@ -1345,6 +1430,8 @@ var mapCompactResponse = (response, request) => {
|
|
|
1345
1430
|
case "Number":
|
|
1346
1431
|
case "Boolean":
|
|
1347
1432
|
return new Response(response.toString());
|
|
1433
|
+
case "FormData":
|
|
1434
|
+
return new Response(response);
|
|
1348
1435
|
default:
|
|
1349
1436
|
if (response instanceof Response)
|
|
1350
1437
|
return new Response(response.body, {
|
|
@@ -1356,6 +1443,8 @@ var mapCompactResponse = (response, request) => {
|
|
|
1356
1443
|
return response.then(mapCompactResponse);
|
|
1357
1444
|
if (response instanceof Error)
|
|
1358
1445
|
return errorToResponse(response);
|
|
1446
|
+
if ("toResponse" in response)
|
|
1447
|
+
return mapCompactResponse(response.toResponse());
|
|
1359
1448
|
if ("charCodeAt" in response) {
|
|
1360
1449
|
const code = response.charCodeAt(0);
|
|
1361
1450
|
if (code === 123 || code === 91) {
|
|
@@ -1594,7 +1683,7 @@ var validateFile = (options, value) => {
|
|
|
1594
1683
|
}
|
|
1595
1684
|
return true;
|
|
1596
1685
|
};
|
|
1597
|
-
var
|
|
1686
|
+
var File2 = TypeRegistry.Get("Files") ?? TypeSystem.Type("File", validateFile);
|
|
1598
1687
|
var Files = TypeRegistry.Get("Files") ?? TypeSystem.Type(
|
|
1599
1688
|
"Files",
|
|
1600
1689
|
(options, value) => {
|
|
@@ -1740,7 +1829,7 @@ var ElysiaType = {
|
|
|
1740
1829
|
return JSON.stringify(value);
|
|
1741
1830
|
});
|
|
1742
1831
|
},
|
|
1743
|
-
File,
|
|
1832
|
+
File: File2,
|
|
1744
1833
|
Files: (options = {}) => t.Transform(Files(options)).Decode((value) => {
|
|
1745
1834
|
if (Array.isArray(value))
|
|
1746
1835
|
return value;
|
|
@@ -1867,7 +1956,7 @@ var getSchemaValidator = (s, {
|
|
|
1867
1956
|
models = {},
|
|
1868
1957
|
dynamic = false,
|
|
1869
1958
|
normalize = false,
|
|
1870
|
-
additionalProperties =
|
|
1959
|
+
additionalProperties = false
|
|
1871
1960
|
} = {}) => {
|
|
1872
1961
|
if (!s)
|
|
1873
1962
|
return void 0;
|
|
@@ -1888,7 +1977,7 @@ var getSchemaValidator = (s, {
|
|
|
1888
1977
|
Errors: (value) => Value3.Errors(schema, value),
|
|
1889
1978
|
Code: () => ""
|
|
1890
1979
|
};
|
|
1891
|
-
if (normalize && schema.additionalProperties ===
|
|
1980
|
+
if (normalize && schema.additionalProperties === false)
|
|
1892
1981
|
validator.Clean = cleaner;
|
|
1893
1982
|
if (schema.config) {
|
|
1894
1983
|
validator.config = schema.config;
|
|
@@ -2065,12 +2154,25 @@ var lifeCycleToFn = (a) => {
|
|
|
2065
2154
|
stop: a.stop?.map((x) => x.fn)
|
|
2066
2155
|
};
|
|
2067
2156
|
};
|
|
2068
|
-
var redirect = (url, status = 301) =>
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2157
|
+
var redirect = (url, status = 301) => Response.redirect(url, status);
|
|
2158
|
+
var ELYSIA_FORM_DATA = Symbol("ElysiaFormData");
|
|
2159
|
+
var form = (items) => {
|
|
2160
|
+
const formData = new FormData();
|
|
2161
|
+
for (const [key, value] of Object.entries(items)) {
|
|
2162
|
+
if (Array.isArray(value)) {
|
|
2163
|
+
for (const v of value) {
|
|
2164
|
+
if (value instanceof File)
|
|
2165
|
+
formData.append(key, value, value.name);
|
|
2166
|
+
formData.append(key, v);
|
|
2167
|
+
}
|
|
2168
|
+
continue;
|
|
2169
|
+
}
|
|
2170
|
+
if (value instanceof File)
|
|
2171
|
+
formData.append(key, value, value.name);
|
|
2172
|
+
formData.append(key, value);
|
|
2072
2173
|
}
|
|
2073
|
-
|
|
2174
|
+
return formData;
|
|
2175
|
+
};
|
|
2074
2176
|
|
|
2075
2177
|
// src/compose.ts
|
|
2076
2178
|
var headersHasToJSON = new Headers().toJSON;
|
|
@@ -2660,7 +2762,7 @@ const traceDone = Promise.all([`;
|
|
|
2660
2762
|
if (validator) {
|
|
2661
2763
|
fnLiteral += "\n";
|
|
2662
2764
|
if (validator.headers) {
|
|
2663
|
-
if (hasProperty("default", validator.headers.
|
|
2765
|
+
if (hasProperty("default", validator.headers.schema))
|
|
2664
2766
|
for (const [key, value] of Object.entries(
|
|
2665
2767
|
Value4.Default(
|
|
2666
2768
|
// @ts-ignore
|
|
@@ -2668,7 +2770,7 @@ const traceDone = Promise.all([`;
|
|
|
2668
2770
|
{}
|
|
2669
2771
|
)
|
|
2670
2772
|
)) {
|
|
2671
|
-
const parsed = typeof value === "object" ? JSON.stringify(value) : `'${value}'
|
|
2773
|
+
const parsed = typeof value === "object" ? JSON.stringify(value) : typeof value === "string" ? `'${value}'` : value;
|
|
2672
2774
|
if (parsed)
|
|
2673
2775
|
fnLiteral += `c.headers['${key}'] ??= ${parsed}
|
|
2674
2776
|
`;
|
|
@@ -2690,7 +2792,7 @@ c.headers = headers.Decode(c.headers)
|
|
|
2690
2792
|
{}
|
|
2691
2793
|
)
|
|
2692
2794
|
)) {
|
|
2693
|
-
const parsed = typeof value === "object" ? JSON.stringify(value) : `'${value}'
|
|
2795
|
+
const parsed = typeof value === "object" ? JSON.stringify(value) : typeof value === "string" ? `'${value}'` : value;
|
|
2694
2796
|
if (parsed)
|
|
2695
2797
|
fnLiteral += `c.params['${key}'] ??= ${parsed}
|
|
2696
2798
|
`;
|
|
@@ -2714,11 +2816,26 @@ c.params = params.Decode(c.params)
|
|
|
2714
2816
|
{}
|
|
2715
2817
|
)
|
|
2716
2818
|
)) {
|
|
2717
|
-
const parsed = typeof value === "object" ? JSON.stringify(value) : `'${value}'
|
|
2819
|
+
const parsed = typeof value === "object" ? JSON.stringify(value) : typeof value === "string" ? `'${value}'` : value;
|
|
2718
2820
|
if (parsed)
|
|
2719
2821
|
fnLiteral += `c.query['${key}'] ??= ${parsed}
|
|
2720
2822
|
`;
|
|
2721
2823
|
}
|
|
2824
|
+
for (const [key, value] of Object.entries(
|
|
2825
|
+
// @ts-ignore
|
|
2826
|
+
validator.query.schema?.properties
|
|
2827
|
+
)) {
|
|
2828
|
+
const { type, anyOf } = value;
|
|
2829
|
+
if (type === "object" || type === "array") {
|
|
2830
|
+
fnLiteral += `c.query['${key}'] = JSON.parse(c.query['${key}'])
|
|
2831
|
+
`;
|
|
2832
|
+
continue;
|
|
2833
|
+
}
|
|
2834
|
+
if (anyOf) {
|
|
2835
|
+
fnLiteral += `if(typeof c.query['${key}'] === "object") c.query['${key}'] = JSON.parse(c.query['${key}'])
|
|
2836
|
+
`;
|
|
2837
|
+
}
|
|
2838
|
+
}
|
|
2722
2839
|
fnLiteral += `if(query.Check(c.query) === false) {
|
|
2723
2840
|
${composeValidation("query")}
|
|
2724
2841
|
}`;
|
|
@@ -2730,21 +2847,32 @@ c.query = query.Decode(Object.assign({}, c.query))
|
|
|
2730
2847
|
if (validator.body) {
|
|
2731
2848
|
if (normalize)
|
|
2732
2849
|
fnLiteral += "c.body = body.Clean(c.body);\n";
|
|
2733
|
-
if (hasProperty("default", validator.body.schema))
|
|
2850
|
+
if (hasProperty("default", validator.body.schema)) {
|
|
2734
2851
|
fnLiteral += `if(body.Check(c.body) === false) {
|
|
2735
|
-
|
|
2852
|
+
if (typeof c.body === 'object') {
|
|
2853
|
+
c.body = Object.assign(${JSON.stringify(
|
|
2736
2854
|
Value4.Default(
|
|
2737
2855
|
// @ts-ignore
|
|
2738
2856
|
validator.body.schema,
|
|
2739
|
-
|
|
2857
|
+
{}
|
|
2740
2858
|
) ?? {}
|
|
2741
2859
|
)}, c.body)
|
|
2742
|
-
|
|
2743
|
-
|
|
2860
|
+
} else {`;
|
|
2861
|
+
const defaultValue = Value4.Default(
|
|
2862
|
+
// @ts-ignore
|
|
2863
|
+
validator.body.schema,
|
|
2864
|
+
void 0
|
|
2865
|
+
);
|
|
2866
|
+
if (typeof defaultValue === "string")
|
|
2867
|
+
fnLiteral += `c.body = '${defaultValue}'`;
|
|
2868
|
+
else
|
|
2869
|
+
fnLiteral += `c.body = ${defaultValue}`;
|
|
2870
|
+
fnLiteral += `}
|
|
2871
|
+
if(body.Check(c.body) === false) {
|
|
2744
2872
|
${composeValidation("body")}
|
|
2745
2873
|
}
|
|
2746
2874
|
}`;
|
|
2747
|
-
else
|
|
2875
|
+
} else
|
|
2748
2876
|
fnLiteral += `if(body.Check(c.body) === false) {
|
|
2749
2877
|
${composeValidation("body")}
|
|
2750
2878
|
}`;
|
|
@@ -2753,7 +2881,11 @@ c.query = query.Decode(Object.assign({}, c.query))
|
|
|
2753
2881
|
c.body = body.Decode(c.body)
|
|
2754
2882
|
`;
|
|
2755
2883
|
}
|
|
2756
|
-
if (isNotEmpty(
|
|
2884
|
+
if (isNotEmpty(
|
|
2885
|
+
// @ts-ignore
|
|
2886
|
+
cookieValidator?.schema?.properties ?? // @ts-ignore
|
|
2887
|
+
cookieValidator?.schema?.schema ?? {}
|
|
2888
|
+
)) {
|
|
2757
2889
|
fnLiteral += `const cookieValue = {}
|
|
2758
2890
|
for(const [key, value] of Object.entries(c.cookie))
|
|
2759
2891
|
cookieValue[key] = value.value
|
package/dist/cookies.mjs
CHANGED
|
@@ -336,7 +336,7 @@ var validateFile = (options, value) => {
|
|
|
336
336
|
}
|
|
337
337
|
return true;
|
|
338
338
|
};
|
|
339
|
-
var
|
|
339
|
+
var File2 = TypeRegistry.Get("Files") ?? TypeSystem.Type("File", validateFile);
|
|
340
340
|
var Files = TypeRegistry.Get("Files") ?? TypeSystem.Type(
|
|
341
341
|
"Files",
|
|
342
342
|
(options, value) => {
|
|
@@ -482,7 +482,7 @@ var ElysiaType = {
|
|
|
482
482
|
return JSON.stringify(value);
|
|
483
483
|
});
|
|
484
484
|
},
|
|
485
|
-
File,
|
|
485
|
+
File: File2,
|
|
486
486
|
Files: (options = {}) => t.Transform(Files(options)).Decode((value) => {
|
|
487
487
|
if (Array.isArray(value))
|
|
488
488
|
return value;
|
|
@@ -689,6 +689,7 @@ var isNumericString = (message) => {
|
|
|
689
689
|
}
|
|
690
690
|
return false;
|
|
691
691
|
};
|
|
692
|
+
var ELYSIA_FORM_DATA = Symbol("ElysiaFormData");
|
|
692
693
|
|
|
693
694
|
// src/cookies.ts
|
|
694
695
|
var Cookie = class {
|
|
@@ -861,6 +862,12 @@ var parseCookie = async (set, cookieString, {
|
|
|
861
862
|
throw new InvalidCookieSignature(name);
|
|
862
863
|
}
|
|
863
864
|
}
|
|
865
|
+
if (value == null) {
|
|
866
|
+
jar[name] = {
|
|
867
|
+
value: v
|
|
868
|
+
};
|
|
869
|
+
continue;
|
|
870
|
+
}
|
|
864
871
|
const start = value.charCodeAt(0);
|
|
865
872
|
if (start === 123 || start === 91)
|
|
866
873
|
try {
|