@whatwg-node/server 0.8.12 → 0.9.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/cjs/utils.js +8 -36
- package/cjs/uwebsockets.js +8 -7
- package/esm/utils.js +7 -34
- package/esm/uwebsockets.js +8 -7
- package/package.json +2 -2
- package/typings/utils.d.cts +0 -1
- package/typings/utils.d.ts +0 -1
package/cjs/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.completeAssign = exports.isRequestInit = exports.sendNodeResponse = exports.
|
|
3
|
+
exports.completeAssign = exports.isRequestInit = exports.sendNodeResponse = exports.isFetchEvent = exports.isReadableStream = exports.isServerResponse = exports.isNodeRequest = exports.isReadable = exports.normalizeNodeRequest = exports.isAsyncIterable = void 0;
|
|
4
4
|
const fetch_1 = require("@whatwg-node/fetch");
|
|
5
5
|
function isAsyncIterable(body) {
|
|
6
6
|
return (body != null && typeof body === 'object' && typeof body[Symbol.asyncIterator] === 'function');
|
|
@@ -145,45 +145,17 @@ function endResponse(serverResponse) {
|
|
|
145
145
|
// @ts-expect-error Avoid arguments adaptor trampoline https://v8.dev/blog/adaptor-frame
|
|
146
146
|
serverResponse.end(null, null, null);
|
|
147
147
|
}
|
|
148
|
-
function splitSetCookieHeader(setCookieHeader) {
|
|
149
|
-
const setCookieHeaders = [];
|
|
150
|
-
let currentStr = '';
|
|
151
|
-
let ignoreComma = false;
|
|
152
|
-
for (const ch of setCookieHeader) {
|
|
153
|
-
if (currentStr.endsWith('Expires=')) {
|
|
154
|
-
ignoreComma = true;
|
|
155
|
-
}
|
|
156
|
-
if (ignoreComma) {
|
|
157
|
-
if (ch === ';') {
|
|
158
|
-
ignoreComma = false;
|
|
159
|
-
}
|
|
160
|
-
if (ch === ',' && currentStr.split('Expires=')[1].length > 3) {
|
|
161
|
-
ignoreComma = false;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
if (ch === ',' && !ignoreComma) {
|
|
165
|
-
setCookieHeaders.push(currentStr.trim());
|
|
166
|
-
currentStr = '';
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
currentStr += ch;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
if (currentStr) {
|
|
173
|
-
setCookieHeaders.push(currentStr.trim());
|
|
174
|
-
}
|
|
175
|
-
return setCookieHeaders;
|
|
176
|
-
}
|
|
177
|
-
exports.splitSetCookieHeader = splitSetCookieHeader;
|
|
178
148
|
function getHeadersArray(headers) {
|
|
179
149
|
const headersArray = [];
|
|
180
150
|
headers.forEach((value, key) => {
|
|
181
151
|
if (key === 'set-cookie') {
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
152
|
+
const setCookies = headers.getSetCookie?.();
|
|
153
|
+
if (setCookies) {
|
|
154
|
+
setCookies.forEach(setCookie => {
|
|
155
|
+
headersArray.push('set-cookie', setCookie);
|
|
156
|
+
});
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
187
159
|
}
|
|
188
160
|
headersArray.push(key, value);
|
|
189
161
|
});
|
package/cjs/uwebsockets.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.sendResponseToUwsOpts = exports.getRequestFromUWSRequest = exports.isUWSResponse = void 0;
|
|
4
|
-
const utils_js_1 = require("./utils.js");
|
|
5
4
|
function isUWSResponse(res) {
|
|
6
5
|
return !!res.onData;
|
|
7
6
|
}
|
|
@@ -46,13 +45,15 @@ async function sendResponseToUwsOpts({ res, response }) {
|
|
|
46
45
|
// content-length causes an error with Node.js's fetch
|
|
47
46
|
if (key !== 'content-length') {
|
|
48
47
|
if (key === 'set-cookie') {
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
res.
|
|
48
|
+
const setCookies = response.headers.getSetCookie?.();
|
|
49
|
+
if (setCookies) {
|
|
50
|
+
setCookies.forEach(setCookie => {
|
|
51
|
+
res.cork(() => {
|
|
52
|
+
res.writeHeader(key, setCookie);
|
|
53
|
+
});
|
|
53
54
|
});
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
56
57
|
}
|
|
57
58
|
res.cork(() => {
|
|
58
59
|
res.writeHeader(key, value);
|
package/esm/utils.js
CHANGED
|
@@ -135,44 +135,17 @@ function endResponse(serverResponse) {
|
|
|
135
135
|
// @ts-expect-error Avoid arguments adaptor trampoline https://v8.dev/blog/adaptor-frame
|
|
136
136
|
serverResponse.end(null, null, null);
|
|
137
137
|
}
|
|
138
|
-
export function splitSetCookieHeader(setCookieHeader) {
|
|
139
|
-
const setCookieHeaders = [];
|
|
140
|
-
let currentStr = '';
|
|
141
|
-
let ignoreComma = false;
|
|
142
|
-
for (const ch of setCookieHeader) {
|
|
143
|
-
if (currentStr.endsWith('Expires=')) {
|
|
144
|
-
ignoreComma = true;
|
|
145
|
-
}
|
|
146
|
-
if (ignoreComma) {
|
|
147
|
-
if (ch === ';') {
|
|
148
|
-
ignoreComma = false;
|
|
149
|
-
}
|
|
150
|
-
if (ch === ',' && currentStr.split('Expires=')[1].length > 3) {
|
|
151
|
-
ignoreComma = false;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
if (ch === ',' && !ignoreComma) {
|
|
155
|
-
setCookieHeaders.push(currentStr.trim());
|
|
156
|
-
currentStr = '';
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
currentStr += ch;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
if (currentStr) {
|
|
163
|
-
setCookieHeaders.push(currentStr.trim());
|
|
164
|
-
}
|
|
165
|
-
return setCookieHeaders;
|
|
166
|
-
}
|
|
167
138
|
function getHeadersArray(headers) {
|
|
168
139
|
const headersArray = [];
|
|
169
140
|
headers.forEach((value, key) => {
|
|
170
141
|
if (key === 'set-cookie') {
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
142
|
+
const setCookies = headers.getSetCookie?.();
|
|
143
|
+
if (setCookies) {
|
|
144
|
+
setCookies.forEach(setCookie => {
|
|
145
|
+
headersArray.push('set-cookie', setCookie);
|
|
146
|
+
});
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
176
149
|
}
|
|
177
150
|
headersArray.push(key, value);
|
|
178
151
|
});
|
package/esm/uwebsockets.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { splitSetCookieHeader } from './utils.js';
|
|
2
1
|
export function isUWSResponse(res) {
|
|
3
2
|
return !!res.onData;
|
|
4
3
|
}
|
|
@@ -41,13 +40,15 @@ export async function sendResponseToUwsOpts({ res, response }) {
|
|
|
41
40
|
// content-length causes an error with Node.js's fetch
|
|
42
41
|
if (key !== 'content-length') {
|
|
43
42
|
if (key === 'set-cookie') {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
res.
|
|
43
|
+
const setCookies = response.headers.getSetCookie?.();
|
|
44
|
+
if (setCookies) {
|
|
45
|
+
setCookies.forEach(setCookie => {
|
|
46
|
+
res.cork(() => {
|
|
47
|
+
res.writeHeader(key, setCookie);
|
|
48
|
+
});
|
|
48
49
|
});
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
51
52
|
}
|
|
52
53
|
res.cork(() => {
|
|
53
54
|
res.writeHeader(key, value);
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@whatwg-node/server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Fetch API compliant HTTP Server adapter",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@whatwg-node/fetch": "^0.9.
|
|
7
|
+
"@whatwg-node/fetch": "^0.9.7",
|
|
8
8
|
"tslib": "^2.3.1"
|
|
9
9
|
},
|
|
10
10
|
"repository": {
|
package/typings/utils.d.cts
CHANGED
|
@@ -28,7 +28,6 @@ export declare function isNodeRequest(request: any): request is NodeRequest;
|
|
|
28
28
|
export declare function isServerResponse(stream: any): stream is NodeResponse;
|
|
29
29
|
export declare function isReadableStream(stream: any): stream is ReadableStream;
|
|
30
30
|
export declare function isFetchEvent(event: any): event is FetchEvent;
|
|
31
|
-
export declare function splitSetCookieHeader(setCookieHeader: string): string[];
|
|
32
31
|
export declare function sendNodeResponse(fetchResponse: Response, serverResponse: NodeResponse, nodeRequest: NodeRequest): Promise<void> | undefined;
|
|
33
32
|
export declare function isRequestInit(val: unknown): val is RequestInit;
|
|
34
33
|
export declare function completeAssign(...args: any[]): any;
|
package/typings/utils.d.ts
CHANGED
|
@@ -28,7 +28,6 @@ export declare function isNodeRequest(request: any): request is NodeRequest;
|
|
|
28
28
|
export declare function isServerResponse(stream: any): stream is NodeResponse;
|
|
29
29
|
export declare function isReadableStream(stream: any): stream is ReadableStream;
|
|
30
30
|
export declare function isFetchEvent(event: any): event is FetchEvent;
|
|
31
|
-
export declare function splitSetCookieHeader(setCookieHeader: string): string[];
|
|
32
31
|
export declare function sendNodeResponse(fetchResponse: Response, serverResponse: NodeResponse, nodeRequest: NodeRequest): Promise<void> | undefined;
|
|
33
32
|
export declare function isRequestInit(val: unknown): val is RequestInit;
|
|
34
33
|
export declare function completeAssign(...args: any[]): any;
|