@whatwg-node/server 0.9.9-rc-20230807155504-cf6c2ea → 0.9.9
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/cjs/createServerAdapter.js +25 -37
- package/cjs/utils.js +8 -0
- package/cjs/uwebsockets.js +26 -21
- package/esm/createServerAdapter.js +25 -37
- package/esm/utils.js +8 -0
- package/esm/uwebsockets.js +26 -21
- package/package.json +1 -1
- package/typings/uwebsockets.d.cts +1 -5
- package/typings/uwebsockets.d.ts +1 -5
|
@@ -124,25 +124,19 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
|
124
124
|
};
|
|
125
125
|
addWaitUntil(defaultServerContext, waitUntilPromises);
|
|
126
126
|
const response$ = handleNodeRequest(nodeRequest, defaultServerContext, ...ctx);
|
|
127
|
-
function handleFetchResponse(response) {
|
|
128
|
-
try {
|
|
129
|
-
if (serverResponse.closed || serverResponse.destroyed) {
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
if (response) {
|
|
133
|
-
return (0, utils_js_1.sendNodeResponse)(response, serverResponse, nodeRequest);
|
|
134
|
-
}
|
|
135
|
-
serverResponse.statusCode = 404;
|
|
136
|
-
serverResponse.end();
|
|
137
|
-
}
|
|
138
|
-
catch (e) {
|
|
139
|
-
console.error(`Unexpected error: ${e.message || e}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
127
|
if ((0, utils_js_1.isPromise)(response$)) {
|
|
143
|
-
return response
|
|
128
|
+
return response$
|
|
129
|
+
.then(response => (0, utils_js_1.sendNodeResponse)(response, serverResponse, nodeRequest))
|
|
130
|
+
.catch(err => {
|
|
131
|
+
console.error(`Unexpected error while handling request: ${err.message || err}`);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
return (0, utils_js_1.sendNodeResponse)(response$, serverResponse, nodeRequest);
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
console.error(`Unexpected error while handling request: ${err.message || err}`);
|
|
144
139
|
}
|
|
145
|
-
return handleFetchResponse(response$);
|
|
146
140
|
}
|
|
147
141
|
function handleUWS(res, req, ...ctx) {
|
|
148
142
|
const waitUntilPromises = [];
|
|
@@ -162,29 +156,23 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
|
162
156
|
resAborted = true;
|
|
163
157
|
});
|
|
164
158
|
const response$ = handleRequest(request, serverContext);
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
if (!response) {
|
|
171
|
-
res.writeStatus('404 Not Found');
|
|
172
|
-
res.end();
|
|
173
|
-
return;
|
|
159
|
+
if ((0, utils_js_1.isPromise)(response$)) {
|
|
160
|
+
return response$
|
|
161
|
+
.then(response => {
|
|
162
|
+
if (!resAborted) {
|
|
163
|
+
return (0, uwebsockets_js_1.sendResponseToUwsOpts)(res, response);
|
|
174
164
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
catch (e) {
|
|
181
|
-
console.error(`Unexpected error: ${e.message || e}`);
|
|
182
|
-
}
|
|
165
|
+
})
|
|
166
|
+
.catch(err => {
|
|
167
|
+
console.error(`Unexpected error while handling request: ${err.message || err}`);
|
|
168
|
+
});
|
|
183
169
|
}
|
|
184
|
-
|
|
185
|
-
return
|
|
170
|
+
try {
|
|
171
|
+
return (0, uwebsockets_js_1.sendResponseToUwsOpts)(res, response$);
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
console.error(`Unexpected error while handling request: ${err.message || err}`);
|
|
186
175
|
}
|
|
187
|
-
return handleFetchResponse(response$);
|
|
188
176
|
}
|
|
189
177
|
function handleEvent(event, ...ctx) {
|
|
190
178
|
if (!event.respondWith || !event.request) {
|
package/cjs/utils.js
CHANGED
|
@@ -156,6 +156,14 @@ async function sendAsyncIterable(serverResponse, asyncIterable) {
|
|
|
156
156
|
endResponse(serverResponse);
|
|
157
157
|
}
|
|
158
158
|
function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
|
|
159
|
+
if (serverResponse.closed || serverResponse.destroyed) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (!fetchResponse) {
|
|
163
|
+
serverResponse.statusCode = 404;
|
|
164
|
+
serverResponse.end();
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
159
167
|
serverResponse.statusCode = fetchResponse.status;
|
|
160
168
|
serverResponse.statusMessage = fetchResponse.statusText;
|
|
161
169
|
fetchResponse.headers.forEach((value, key) => {
|
package/cjs/uwebsockets.js
CHANGED
|
@@ -70,55 +70,60 @@ function getRequestFromUWSRequest({ req, res, fetchAPI }) {
|
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
exports.getRequestFromUWSRequest = getRequestFromUWSRequest;
|
|
73
|
-
async function forwardResponseBodyToUWSResponse(
|
|
73
|
+
async function forwardResponseBodyToUWSResponse(uwsResponse, fetchResponse) {
|
|
74
74
|
let resAborted = false;
|
|
75
|
-
|
|
75
|
+
uwsResponse.onAborted(function () {
|
|
76
76
|
resAborted = true;
|
|
77
77
|
});
|
|
78
|
-
for await (const chunk of
|
|
78
|
+
for await (const chunk of fetchResponse.body) {
|
|
79
79
|
if (resAborted) {
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
uwsResponse.cork(() => {
|
|
83
|
+
uwsResponse.write(chunk);
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
uwsResponse.cork(() => {
|
|
87
|
+
uwsResponse.end();
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
|
-
function sendResponseToUwsOpts(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
90
|
+
function sendResponseToUwsOpts(uwsResponse, fetchResponse) {
|
|
91
|
+
if (!fetchResponse) {
|
|
92
|
+
uwsResponse.writeStatus('404 Not Found');
|
|
93
|
+
uwsResponse.end();
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const isStringOrBuffer = fetchResponse.bodyType === 'Buffer' ||
|
|
97
|
+
fetchResponse.bodyType === 'String' ||
|
|
98
|
+
fetchResponse.bodyType === 'Uint8Array';
|
|
99
|
+
uwsResponse.cork(() => {
|
|
100
|
+
uwsResponse.writeStatus(`${fetchResponse.status} ${fetchResponse.statusText}`);
|
|
101
|
+
for (const [key, value] of fetchResponse.headers) {
|
|
97
102
|
// content-length causes an error with Node.js's fetch
|
|
98
103
|
if (key !== 'content-length') {
|
|
99
104
|
if (key === 'set-cookie') {
|
|
100
|
-
const setCookies =
|
|
105
|
+
const setCookies = fetchResponse.headers.getSetCookie?.();
|
|
101
106
|
if (setCookies) {
|
|
102
107
|
for (const setCookie of setCookies) {
|
|
103
|
-
|
|
108
|
+
uwsResponse.writeHeader(key, setCookie);
|
|
104
109
|
}
|
|
105
110
|
continue;
|
|
106
111
|
}
|
|
107
112
|
}
|
|
108
|
-
|
|
113
|
+
uwsResponse.writeHeader(key, value);
|
|
109
114
|
}
|
|
110
115
|
}
|
|
111
116
|
if (isStringOrBuffer) {
|
|
112
|
-
|
|
117
|
+
uwsResponse.end(fetchResponse.bodyInit);
|
|
113
118
|
}
|
|
114
119
|
});
|
|
115
120
|
if (isStringOrBuffer) {
|
|
116
121
|
return;
|
|
117
122
|
}
|
|
118
|
-
if (!
|
|
119
|
-
|
|
123
|
+
if (!fetchResponse.body) {
|
|
124
|
+
uwsResponse.end();
|
|
120
125
|
return;
|
|
121
126
|
}
|
|
122
|
-
return forwardResponseBodyToUWSResponse(
|
|
127
|
+
return forwardResponseBodyToUWSResponse(uwsResponse, fetchResponse);
|
|
123
128
|
}
|
|
124
129
|
exports.sendResponseToUwsOpts = sendResponseToUwsOpts;
|
|
@@ -120,25 +120,19 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
|
120
120
|
};
|
|
121
121
|
addWaitUntil(defaultServerContext, waitUntilPromises);
|
|
122
122
|
const response$ = handleNodeRequest(nodeRequest, defaultServerContext, ...ctx);
|
|
123
|
-
function handleFetchResponse(response) {
|
|
124
|
-
try {
|
|
125
|
-
if (serverResponse.closed || serverResponse.destroyed) {
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
if (response) {
|
|
129
|
-
return sendNodeResponse(response, serverResponse, nodeRequest);
|
|
130
|
-
}
|
|
131
|
-
serverResponse.statusCode = 404;
|
|
132
|
-
serverResponse.end();
|
|
133
|
-
}
|
|
134
|
-
catch (e) {
|
|
135
|
-
console.error(`Unexpected error: ${e.message || e}`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
123
|
if (isPromise(response$)) {
|
|
139
|
-
return response
|
|
124
|
+
return response$
|
|
125
|
+
.then(response => sendNodeResponse(response, serverResponse, nodeRequest))
|
|
126
|
+
.catch(err => {
|
|
127
|
+
console.error(`Unexpected error while handling request: ${err.message || err}`);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
return sendNodeResponse(response$, serverResponse, nodeRequest);
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
console.error(`Unexpected error while handling request: ${err.message || err}`);
|
|
140
135
|
}
|
|
141
|
-
return handleFetchResponse(response$);
|
|
142
136
|
}
|
|
143
137
|
function handleUWS(res, req, ...ctx) {
|
|
144
138
|
const waitUntilPromises = [];
|
|
@@ -158,29 +152,23 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
|
158
152
|
resAborted = true;
|
|
159
153
|
});
|
|
160
154
|
const response$ = handleRequest(request, serverContext);
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
if (!response) {
|
|
167
|
-
res.writeStatus('404 Not Found');
|
|
168
|
-
res.end();
|
|
169
|
-
return;
|
|
155
|
+
if (isPromise(response$)) {
|
|
156
|
+
return response$
|
|
157
|
+
.then(response => {
|
|
158
|
+
if (!resAborted) {
|
|
159
|
+
return sendResponseToUwsOpts(res, response);
|
|
170
160
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
catch (e) {
|
|
177
|
-
console.error(`Unexpected error: ${e.message || e}`);
|
|
178
|
-
}
|
|
161
|
+
})
|
|
162
|
+
.catch(err => {
|
|
163
|
+
console.error(`Unexpected error while handling request: ${err.message || err}`);
|
|
164
|
+
});
|
|
179
165
|
}
|
|
180
|
-
|
|
181
|
-
return response
|
|
166
|
+
try {
|
|
167
|
+
return sendResponseToUwsOpts(res, response$);
|
|
168
|
+
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
console.error(`Unexpected error while handling request: ${err.message || err}`);
|
|
182
171
|
}
|
|
183
|
-
return handleFetchResponse(response$);
|
|
184
172
|
}
|
|
185
173
|
function handleEvent(event, ...ctx) {
|
|
186
174
|
if (!event.respondWith || !event.request) {
|
package/esm/utils.js
CHANGED
|
@@ -146,6 +146,14 @@ async function sendAsyncIterable(serverResponse, asyncIterable) {
|
|
|
146
146
|
endResponse(serverResponse);
|
|
147
147
|
}
|
|
148
148
|
export function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
|
|
149
|
+
if (serverResponse.closed || serverResponse.destroyed) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (!fetchResponse) {
|
|
153
|
+
serverResponse.statusCode = 404;
|
|
154
|
+
serverResponse.end();
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
149
157
|
serverResponse.statusCode = fetchResponse.status;
|
|
150
158
|
serverResponse.statusMessage = fetchResponse.statusText;
|
|
151
159
|
fetchResponse.headers.forEach((value, key) => {
|
package/esm/uwebsockets.js
CHANGED
|
@@ -65,54 +65,59 @@ export function getRequestFromUWSRequest({ req, res, fetchAPI }) {
|
|
|
65
65
|
signal: new UWSAbortSignal(res),
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
|
-
async function forwardResponseBodyToUWSResponse(
|
|
68
|
+
async function forwardResponseBodyToUWSResponse(uwsResponse, fetchResponse) {
|
|
69
69
|
let resAborted = false;
|
|
70
|
-
|
|
70
|
+
uwsResponse.onAborted(function () {
|
|
71
71
|
resAborted = true;
|
|
72
72
|
});
|
|
73
|
-
for await (const chunk of
|
|
73
|
+
for await (const chunk of fetchResponse.body) {
|
|
74
74
|
if (resAborted) {
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
uwsResponse.cork(() => {
|
|
78
|
+
uwsResponse.write(chunk);
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
uwsResponse.cork(() => {
|
|
82
|
+
uwsResponse.end();
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
|
-
export function sendResponseToUwsOpts(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
85
|
+
export function sendResponseToUwsOpts(uwsResponse, fetchResponse) {
|
|
86
|
+
if (!fetchResponse) {
|
|
87
|
+
uwsResponse.writeStatus('404 Not Found');
|
|
88
|
+
uwsResponse.end();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const isStringOrBuffer = fetchResponse.bodyType === 'Buffer' ||
|
|
92
|
+
fetchResponse.bodyType === 'String' ||
|
|
93
|
+
fetchResponse.bodyType === 'Uint8Array';
|
|
94
|
+
uwsResponse.cork(() => {
|
|
95
|
+
uwsResponse.writeStatus(`${fetchResponse.status} ${fetchResponse.statusText}`);
|
|
96
|
+
for (const [key, value] of fetchResponse.headers) {
|
|
92
97
|
// content-length causes an error with Node.js's fetch
|
|
93
98
|
if (key !== 'content-length') {
|
|
94
99
|
if (key === 'set-cookie') {
|
|
95
|
-
const setCookies =
|
|
100
|
+
const setCookies = fetchResponse.headers.getSetCookie?.();
|
|
96
101
|
if (setCookies) {
|
|
97
102
|
for (const setCookie of setCookies) {
|
|
98
|
-
|
|
103
|
+
uwsResponse.writeHeader(key, setCookie);
|
|
99
104
|
}
|
|
100
105
|
continue;
|
|
101
106
|
}
|
|
102
107
|
}
|
|
103
|
-
|
|
108
|
+
uwsResponse.writeHeader(key, value);
|
|
104
109
|
}
|
|
105
110
|
}
|
|
106
111
|
if (isStringOrBuffer) {
|
|
107
|
-
|
|
112
|
+
uwsResponse.end(fetchResponse.bodyInit);
|
|
108
113
|
}
|
|
109
114
|
});
|
|
110
115
|
if (isStringOrBuffer) {
|
|
111
116
|
return;
|
|
112
117
|
}
|
|
113
|
-
if (!
|
|
114
|
-
|
|
118
|
+
if (!fetchResponse.body) {
|
|
119
|
+
uwsResponse.end();
|
|
115
120
|
return;
|
|
116
121
|
}
|
|
117
|
-
return forwardResponseBodyToUWSResponse(
|
|
122
|
+
return forwardResponseBodyToUWSResponse(uwsResponse, fetchResponse);
|
|
118
123
|
}
|
package/package.json
CHANGED
|
@@ -24,9 +24,5 @@ interface GetRequestFromUWSOpts {
|
|
|
24
24
|
fetchAPI: FetchAPI;
|
|
25
25
|
}
|
|
26
26
|
export declare function getRequestFromUWSRequest({ req, res, fetchAPI }: GetRequestFromUWSOpts): Request;
|
|
27
|
-
|
|
28
|
-
res: UWSResponse;
|
|
29
|
-
response: Response;
|
|
30
|
-
}
|
|
31
|
-
export declare function sendResponseToUwsOpts({ res, response }: SendResponseToUWSOpts): Promise<void> | undefined;
|
|
27
|
+
export declare function sendResponseToUwsOpts(uwsResponse: UWSResponse, fetchResponse: Response): Promise<void> | undefined;
|
|
32
28
|
export {};
|
package/typings/uwebsockets.d.ts
CHANGED
|
@@ -24,9 +24,5 @@ interface GetRequestFromUWSOpts {
|
|
|
24
24
|
fetchAPI: FetchAPI;
|
|
25
25
|
}
|
|
26
26
|
export declare function getRequestFromUWSRequest({ req, res, fetchAPI }: GetRequestFromUWSOpts): Request;
|
|
27
|
-
|
|
28
|
-
res: UWSResponse;
|
|
29
|
-
response: Response;
|
|
30
|
-
}
|
|
31
|
-
export declare function sendResponseToUwsOpts({ res, response }: SendResponseToUWSOpts): Promise<void> | undefined;
|
|
27
|
+
export declare function sendResponseToUwsOpts(uwsResponse: UWSResponse, fetchResponse: Response): Promise<void> | undefined;
|
|
32
28
|
export {};
|