routup 3.1.0 → 3.2.0
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/index.cjs +95 -96
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +95 -96
- package/dist/index.mjs.map +1 -1
- package/package.json +12 -12
package/dist/index.cjs
CHANGED
|
@@ -844,6 +844,78 @@ function setResponseHeaderContentType(res, input, ifNotExists) {
|
|
|
844
844
|
}
|
|
845
845
|
}
|
|
846
846
|
|
|
847
|
+
async function sendStream(res, stream, next) {
|
|
848
|
+
if (isWebStream(stream)) {
|
|
849
|
+
return stream.pipeTo(new WritableStream({
|
|
850
|
+
write (chunk) {
|
|
851
|
+
res.write(chunk);
|
|
852
|
+
}
|
|
853
|
+
})).then(()=>{
|
|
854
|
+
if (next) {
|
|
855
|
+
return next();
|
|
856
|
+
}
|
|
857
|
+
res.end();
|
|
858
|
+
return Promise.resolve();
|
|
859
|
+
}).catch((err)=>{
|
|
860
|
+
if (next) {
|
|
861
|
+
return next(err);
|
|
862
|
+
}
|
|
863
|
+
return Promise.reject(err);
|
|
864
|
+
});
|
|
865
|
+
}
|
|
866
|
+
return new Promise((resolve, reject)=>{
|
|
867
|
+
stream.on('open', ()=>{
|
|
868
|
+
stream.pipe(res);
|
|
869
|
+
});
|
|
870
|
+
/* istanbul ignore next */ stream.on('error', (err)=>{
|
|
871
|
+
if (next) {
|
|
872
|
+
Promise.resolve().then(()=>next(err)).then(()=>resolve()).catch((e)=>reject(e));
|
|
873
|
+
return;
|
|
874
|
+
}
|
|
875
|
+
res.end();
|
|
876
|
+
reject(err);
|
|
877
|
+
});
|
|
878
|
+
stream.on('close', ()=>{
|
|
879
|
+
if (next) {
|
|
880
|
+
Promise.resolve().then(()=>next()).then(()=>resolve()).catch((e)=>reject(e));
|
|
881
|
+
return;
|
|
882
|
+
}
|
|
883
|
+
res.end();
|
|
884
|
+
resolve();
|
|
885
|
+
});
|
|
886
|
+
});
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
async function sendWebBlob(res, blob) {
|
|
890
|
+
setResponseHeaderContentType(res, blob.type);
|
|
891
|
+
await sendStream(res, blob.stream());
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
async function sendWebResponse(res, webResponse) {
|
|
895
|
+
if (webResponse.redirected) {
|
|
896
|
+
res.setHeader(exports.HeaderName.LOCATION, webResponse.url);
|
|
897
|
+
}
|
|
898
|
+
if (webResponse.status) {
|
|
899
|
+
res.statusCode = webResponse.status;
|
|
900
|
+
}
|
|
901
|
+
if (webResponse.statusText) {
|
|
902
|
+
res.statusMessage = webResponse.statusText;
|
|
903
|
+
}
|
|
904
|
+
webResponse.headers.forEach((value, key)=>{
|
|
905
|
+
if (key === exports.HeaderName.SET_COOKIE) {
|
|
906
|
+
res.appendHeader(key, splitCookiesString(value));
|
|
907
|
+
} else {
|
|
908
|
+
res.setHeader(key, value);
|
|
909
|
+
}
|
|
910
|
+
});
|
|
911
|
+
if (webResponse.body) {
|
|
912
|
+
await sendStream(res, webResponse.body);
|
|
913
|
+
return Promise.resolve();
|
|
914
|
+
}
|
|
915
|
+
res.end();
|
|
916
|
+
return Promise.resolve();
|
|
917
|
+
}
|
|
918
|
+
|
|
847
919
|
async function send(res, chunk) {
|
|
848
920
|
switch(typeof chunk){
|
|
849
921
|
case 'string':
|
|
@@ -855,11 +927,28 @@ async function send(res, chunk) {
|
|
|
855
927
|
case 'number':
|
|
856
928
|
case 'object':
|
|
857
929
|
{
|
|
858
|
-
if (
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
930
|
+
if (chunk !== null) {
|
|
931
|
+
if (chunk instanceof Error) {
|
|
932
|
+
throw chunk;
|
|
933
|
+
}
|
|
934
|
+
if (isStream(chunk)) {
|
|
935
|
+
await sendStream(res, chunk);
|
|
936
|
+
return;
|
|
937
|
+
}
|
|
938
|
+
if (isWebBlob(chunk)) {
|
|
939
|
+
await sendWebBlob(res, chunk);
|
|
940
|
+
return;
|
|
941
|
+
}
|
|
942
|
+
if (isWebResponse(chunk)) {
|
|
943
|
+
await sendWebResponse(res, chunk);
|
|
944
|
+
return;
|
|
945
|
+
}
|
|
946
|
+
if (buffer.Buffer.isBuffer(chunk)) {
|
|
947
|
+
setResponseHeaderContentType(res, 'bin', true);
|
|
948
|
+
} else {
|
|
949
|
+
chunk = JSON.stringify(chunk);
|
|
950
|
+
setResponseHeaderContentType(res, 'application/json', true);
|
|
951
|
+
}
|
|
863
952
|
}
|
|
864
953
|
break;
|
|
865
954
|
}
|
|
@@ -942,48 +1031,6 @@ function sendCreated(res, chunk) {
|
|
|
942
1031
|
return send(res, chunk);
|
|
943
1032
|
}
|
|
944
1033
|
|
|
945
|
-
async function sendStream(res, stream, next) {
|
|
946
|
-
if (isWebStream(stream)) {
|
|
947
|
-
return stream.pipeTo(new WritableStream({
|
|
948
|
-
write (chunk) {
|
|
949
|
-
res.write(chunk);
|
|
950
|
-
}
|
|
951
|
-
})).then(()=>{
|
|
952
|
-
if (next) {
|
|
953
|
-
return next();
|
|
954
|
-
}
|
|
955
|
-
res.end();
|
|
956
|
-
return Promise.resolve();
|
|
957
|
-
}).catch((err)=>{
|
|
958
|
-
if (next) {
|
|
959
|
-
return next(err);
|
|
960
|
-
}
|
|
961
|
-
return Promise.reject(err);
|
|
962
|
-
});
|
|
963
|
-
}
|
|
964
|
-
return new Promise((resolve, reject)=>{
|
|
965
|
-
stream.on('open', ()=>{
|
|
966
|
-
stream.pipe(res);
|
|
967
|
-
});
|
|
968
|
-
/* istanbul ignore next */ stream.on('error', (err)=>{
|
|
969
|
-
if (next) {
|
|
970
|
-
Promise.resolve().then(()=>next(err)).then(()=>resolve()).catch((e)=>reject(e));
|
|
971
|
-
return;
|
|
972
|
-
}
|
|
973
|
-
res.end();
|
|
974
|
-
reject(err);
|
|
975
|
-
});
|
|
976
|
-
stream.on('close', ()=>{
|
|
977
|
-
if (next) {
|
|
978
|
-
Promise.resolve().then(()=>next()).then(()=>resolve()).catch((e)=>reject(e));
|
|
979
|
-
return;
|
|
980
|
-
}
|
|
981
|
-
res.end();
|
|
982
|
-
resolve();
|
|
983
|
-
});
|
|
984
|
-
});
|
|
985
|
-
}
|
|
986
|
-
|
|
987
1034
|
async function sendFile(res, options, next) {
|
|
988
1035
|
let stats;
|
|
989
1036
|
try {
|
|
@@ -1073,36 +1120,6 @@ function sendRedirect(res, location, statusCode = 302) {
|
|
|
1073
1120
|
return send(res, html);
|
|
1074
1121
|
}
|
|
1075
1122
|
|
|
1076
|
-
async function sendWebResponse(res, webResponse) {
|
|
1077
|
-
if (webResponse.redirected) {
|
|
1078
|
-
res.setHeader(exports.HeaderName.LOCATION, webResponse.url);
|
|
1079
|
-
}
|
|
1080
|
-
if (webResponse.status) {
|
|
1081
|
-
res.statusCode = webResponse.status;
|
|
1082
|
-
}
|
|
1083
|
-
if (webResponse.statusText) {
|
|
1084
|
-
res.statusMessage = webResponse.statusText;
|
|
1085
|
-
}
|
|
1086
|
-
webResponse.headers.forEach((value, key)=>{
|
|
1087
|
-
if (key === exports.HeaderName.SET_COOKIE) {
|
|
1088
|
-
res.appendHeader(key, splitCookiesString(value));
|
|
1089
|
-
} else {
|
|
1090
|
-
res.setHeader(key, value);
|
|
1091
|
-
}
|
|
1092
|
-
});
|
|
1093
|
-
if (webResponse.body) {
|
|
1094
|
-
await sendStream(res, webResponse.body);
|
|
1095
|
-
return Promise.resolve();
|
|
1096
|
-
}
|
|
1097
|
-
res.end();
|
|
1098
|
-
return Promise.resolve();
|
|
1099
|
-
}
|
|
1100
|
-
|
|
1101
|
-
async function sendWebBlob(res, blob) {
|
|
1102
|
-
setResponseHeaderContentType(res, blob.type);
|
|
1103
|
-
await sendStream(res, blob.stream());
|
|
1104
|
-
}
|
|
1105
|
-
|
|
1106
1123
|
function createResponse(request) {
|
|
1107
1124
|
let output;
|
|
1108
1125
|
let encoding;
|
|
@@ -1248,24 +1265,6 @@ function createResponse(request) {
|
|
|
1248
1265
|
return writable;
|
|
1249
1266
|
}
|
|
1250
1267
|
|
|
1251
|
-
async function sendData(event, chunk) {
|
|
1252
|
-
if (chunk instanceof Error) {
|
|
1253
|
-
return Promise.reject(createError(chunk));
|
|
1254
|
-
}
|
|
1255
|
-
if (isStream(chunk)) {
|
|
1256
|
-
await sendStream(event.response, chunk);
|
|
1257
|
-
return Promise.resolve();
|
|
1258
|
-
}
|
|
1259
|
-
if (isWebBlob(chunk)) {
|
|
1260
|
-
await sendWebBlob(event.response, chunk);
|
|
1261
|
-
return Promise.resolve();
|
|
1262
|
-
}
|
|
1263
|
-
if (isWebResponse(chunk)) {
|
|
1264
|
-
await sendWebResponse(event.response, chunk);
|
|
1265
|
-
return Promise.resolve();
|
|
1266
|
-
}
|
|
1267
|
-
return send(event.response, chunk);
|
|
1268
|
-
}
|
|
1269
1268
|
function dispatch(event, target) {
|
|
1270
1269
|
setRequestParams(event.request, event.params);
|
|
1271
1270
|
setRequestMountPath(event.request, event.mountPath);
|
|
@@ -1299,7 +1298,7 @@ function dispatch(event, target) {
|
|
|
1299
1298
|
handled = true;
|
|
1300
1299
|
unsubscribe();
|
|
1301
1300
|
if (!event.dispatched) {
|
|
1302
|
-
await
|
|
1301
|
+
await send(event.response, data);
|
|
1303
1302
|
}
|
|
1304
1303
|
return true;
|
|
1305
1304
|
};
|