@vercel/node 3.0.1 → 3.0.2
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/dev-server.mjs
CHANGED
@@ -8,6 +8,7 @@ import { createEdgeEventHandler } from './edge-functions/edge-handler.mjs';
|
|
8
8
|
import { createServer } from 'http';
|
9
9
|
import { createServerlessEventHandler } from './serverless-functions/serverless-handler.mjs';
|
10
10
|
import { isEdgeRuntime, logError, validateConfiguredRuntime } from './utils.js';
|
11
|
+
import { toToReadable } from '@edge-runtime/node-utils';
|
11
12
|
import { getConfig } from '@vercel/static-config';
|
12
13
|
import { Project } from 'ts-morph';
|
13
14
|
import { listen } from 'async-listen';
|
@@ -71,17 +72,17 @@ async function onDevRequest(req, res) {
|
|
71
72
|
const { headers, body, status } = await handleEvent(req);
|
72
73
|
res.statusCode = status;
|
73
74
|
for (const [key, value] of headers) {
|
74
|
-
|
75
|
-
|
76
|
-
if (value !== undefined) {
|
77
|
-
res.setHeader(key, key === 'set-cookie' ? headers.raw()[key] : value);
|
78
|
-
}
|
75
|
+
if (value !== undefined)
|
76
|
+
res.setHeader(key, key === 'set-cookie' ? headers.getSetCookie() : value);
|
79
77
|
}
|
80
|
-
if (body
|
78
|
+
if (body === null) {
|
79
|
+
res.end();
|
80
|
+
}
|
81
|
+
else if (body instanceof Buffer) {
|
81
82
|
res.end(body);
|
82
83
|
}
|
83
84
|
else {
|
84
|
-
body.pipe(res);
|
85
|
+
toToReadable(body).pipe(res);
|
85
86
|
}
|
86
87
|
}
|
87
88
|
catch (error) {
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { createEdgeWasmPlugin } from './edge-wasm-plugin.mjs';
|
2
2
|
import { createNodeCompatPlugin, } from './edge-node-compat-plugin.mjs';
|
3
3
|
import { EdgeRuntime, runServer } from 'edge-runtime';
|
4
|
-
import fetch,
|
4
|
+
import { fetch, Headers } from 'undici';
|
5
5
|
import { isError } from '@vercel/error-utils';
|
6
6
|
import { readFileSync } from 'fs';
|
7
7
|
import { serializeBody, entrypointToOutputPath, logError } from '../utils.js';
|
@@ -142,7 +142,6 @@ export async function createEdgeEventHandler(entrypointFullPath, entrypointRelat
|
|
142
142
|
if (body !== undefined)
|
143
143
|
headers.set('content-length', String(body.length));
|
144
144
|
const url = new URL(request.url ?? '/', server.url);
|
145
|
-
// @ts-expect-error
|
146
145
|
const response = await fetch(url, {
|
147
146
|
body,
|
148
147
|
headers,
|
package/dist/index.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/// <reference types="node" />
|
2
2
|
/// <reference types="node" />
|
3
3
|
import { ServerResponse, IncomingMessage } from 'http';
|
4
|
-
import type { Headers } from '
|
4
|
+
import type { Headers } from 'undici';
|
5
5
|
export type VercelRequestCookies = {
|
6
6
|
[key: string]: string;
|
7
7
|
};
|
@@ -36,6 +36,6 @@ export type NowApiHandler = VercelApiHandler;
|
|
36
36
|
export interface VercelProxyResponse {
|
37
37
|
status: number;
|
38
38
|
headers: Headers;
|
39
|
-
body: Buffer |
|
39
|
+
body: ReadableStream<Uint8Array> | Buffer | null;
|
40
40
|
encoding: BufferEncoding;
|
41
41
|
}
|
@@ -18,6 +18,7 @@ class FetchEvent {
|
|
18
18
|
const webHandlerToNodeHandler = (0, node_utils_1.buildToNodeHandler)({
|
19
19
|
Headers,
|
20
20
|
ReadableStream,
|
21
|
+
// @ts-expect-error Property 'duplex' is missing in type 'Request'
|
21
22
|
Request: class extends Request {
|
22
23
|
constructor(input, init) {
|
23
24
|
super(input, addDuplexToInit(init));
|
@@ -1,9 +1,8 @@
|
|
1
1
|
import { addHelpers } from './helpers.js';
|
2
2
|
import { createServer } from 'http';
|
3
3
|
import { serializeBody } from '../utils.js';
|
4
|
-
import { streamToBuffer } from '@vercel/build-utils';
|
5
4
|
import exitHook from 'exit-hook';
|
6
|
-
import fetch from '
|
5
|
+
import { Headers, fetch } from 'undici';
|
7
6
|
import { listen } from 'async-listen';
|
8
7
|
import { isAbsolute } from 'path';
|
9
8
|
import { pathToFileURL } from 'url';
|
@@ -75,10 +74,10 @@ export async function createServerlessEventHandler(entrypointPath, options) {
|
|
75
74
|
const isStreaming = options.mode === 'streaming';
|
76
75
|
return async function (request) {
|
77
76
|
const url = new URL(request.url ?? '/', server.url);
|
78
|
-
// @ts-expect-error
|
79
77
|
const response = await fetch(url, {
|
80
78
|
body: await serializeBody(request),
|
81
79
|
compress: !isStreaming,
|
80
|
+
// @ts-expect-error
|
82
81
|
headers: {
|
83
82
|
...request.headers,
|
84
83
|
host: request.headers['x-forwarded-host'],
|
@@ -86,26 +85,31 @@ export async function createServerlessEventHandler(entrypointPath, options) {
|
|
86
85
|
method: request.method,
|
87
86
|
redirect: 'manual',
|
88
87
|
});
|
89
|
-
let body;
|
88
|
+
let body = null;
|
89
|
+
let headers = response.headers;
|
90
90
|
if (isStreaming) {
|
91
91
|
body = response.body;
|
92
92
|
}
|
93
93
|
else {
|
94
|
-
body = await
|
94
|
+
body = Buffer.from(await response.arrayBuffer());
|
95
95
|
const contentEncoding = response.headers.get('content-encoding');
|
96
96
|
if (contentEncoding) {
|
97
97
|
body = compress(body, contentEncoding);
|
98
|
-
|
98
|
+
const clonedHeaders = [];
|
99
|
+
console.log(response.headers.entries());
|
100
|
+
for (const [key, value] of response.headers.entries()) {
|
101
|
+
if (key !== 'transfer-encoding') {
|
102
|
+
// transfer-encoding is only for streaming response
|
103
|
+
clonedHeaders.push([key, value]);
|
104
|
+
}
|
105
|
+
}
|
106
|
+
clonedHeaders.push(['content-length', String(Buffer.byteLength(body))]);
|
107
|
+
headers = new Headers(clonedHeaders);
|
99
108
|
}
|
100
|
-
/**
|
101
|
-
* `transfer-encoding` is related to streaming chunks.
|
102
|
-
* Since we are buffering the response.body, it should be stripped.
|
103
|
-
*/
|
104
|
-
response.headers.delete('transfer-encoding');
|
105
109
|
}
|
106
110
|
return {
|
107
111
|
status: response.status,
|
108
|
-
headers
|
112
|
+
headers,
|
109
113
|
body,
|
110
114
|
encoding: 'utf8',
|
111
115
|
};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vercel/node",
|
3
|
-
"version": "3.0.
|
3
|
+
"version": "3.0.2",
|
4
4
|
"license": "Apache-2.0",
|
5
5
|
"main": "./dist/index",
|
6
6
|
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/node-js",
|
@@ -13,24 +13,24 @@
|
|
13
13
|
"dist"
|
14
14
|
],
|
15
15
|
"dependencies": {
|
16
|
-
"@edge-runtime/node-utils": "2.0
|
17
|
-
"@edge-runtime/primitives": "
|
18
|
-
"@edge-runtime/vm": "3.0
|
16
|
+
"@edge-runtime/node-utils": "2.2.0",
|
17
|
+
"@edge-runtime/primitives": "3.1.0",
|
18
|
+
"@edge-runtime/vm": "3.1.0",
|
19
19
|
"@types/node": "14.18.33",
|
20
|
-
"@types/node-fetch": "2.6.3",
|
21
20
|
"@vercel/build-utils": "7.0.0",
|
22
21
|
"@vercel/error-utils": "2.0.1",
|
23
22
|
"@vercel/static-config": "3.0.0",
|
24
23
|
"async-listen": "3.0.0",
|
25
24
|
"content-type": "1.0.5",
|
26
|
-
"edge-runtime": "2.
|
25
|
+
"edge-runtime": "2.5.0",
|
27
26
|
"esbuild": "0.14.47",
|
28
27
|
"exit-hook": "2.2.1",
|
29
28
|
"node-fetch": "2.6.9",
|
30
29
|
"path-to-regexp": "6.2.1",
|
31
30
|
"ts-morph": "12.0.0",
|
32
31
|
"ts-node": "10.9.1",
|
33
|
-
"typescript": "4.9.5"
|
32
|
+
"typescript": "4.9.5",
|
33
|
+
"undici": "5.23.0"
|
34
34
|
},
|
35
35
|
"devDependencies": {
|
36
36
|
"@babel/core": "7.5.0",
|