@dcl/http-server 1.0.1 → 2.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/benchmark.js.map +1 -1
- package/dist/cors.d.ts +1 -2
- package/dist/cors.js +3 -4
- package/dist/cors.js.map +1 -1
- package/dist/injectors.d.ts +1 -1
- package/dist/layer.d.ts +1 -1
- package/dist/logic.d.ts +1 -1
- package/dist/logic.js +44 -43
- package/dist/logic.js.map +1 -1
- package/dist/methods.d.ts +1 -1
- package/dist/metrics.d.ts +2 -1
- package/dist/metrics.js +25 -4
- package/dist/metrics.js.map +1 -1
- package/dist/middleware.d.ts +2 -1
- package/dist/middleware.js.map +1 -1
- package/dist/router.d.ts +1 -1
- package/dist/server-handler.js.map +1 -1
- package/dist/server.d.ts +2 -1
- package/dist/server.js.map +1 -1
- package/dist/status-checks.d.ts +2 -1
- package/dist/status-checks.js.map +1 -1
- package/dist/test-component.d.ts +1 -2
- package/dist/test-component.js +44 -47
- package/dist/test-component.js.map +1 -1
- package/dist/test-server.d.ts +2 -1
- package/dist/test-server.js +2 -2
- package/dist/test-server.js.map +1 -1
- package/dist/ws.d.ts +1 -1
- package/dist/ws.js.map +1 -1
- package/package.json +10 -7
package/dist/benchmark.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":";AAAA,+CAA+C;;AAE/C,
|
|
1
|
+
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"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"}
|
package/dist/cors.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { IHttpServerComponent } from '@well-known-components/interfaces';
|
|
1
|
+
import { IHttpServerComponent } from '@dcl/core-commons';
|
|
3
2
|
export declare const corsHeaders: {
|
|
4
3
|
'Access-Control-Allow-Origin': string;
|
|
5
4
|
'Access-Control-Allow-Methods': string;
|
package/dist/cors.js
CHANGED
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.corsHeaders = void 0;
|
|
5
5
|
exports.handleOptions = handleOptions;
|
|
6
6
|
exports.createCorsMiddleware = createCorsMiddleware;
|
|
7
|
-
const node_fetch_1 = require("node-fetch");
|
|
8
7
|
exports.corsHeaders = {
|
|
9
8
|
'Access-Control-Allow-Origin': '*',
|
|
10
9
|
'Access-Control-Allow-Methods': 'GET, HEAD, OPTIONS',
|
|
@@ -19,7 +18,7 @@ exports.corsHeaders = {
|
|
|
19
18
|
'X-Forwarded-For, X-Forwarded-Port, X-Forwarded-Proto, X-Frame-Options, X-Modified, X-OTHER, X-PING, X-Requested-With'
|
|
20
19
|
};
|
|
21
20
|
function handleOptions() {
|
|
22
|
-
return new
|
|
21
|
+
return new Response(undefined, {
|
|
23
22
|
headers: exports.corsHeaders
|
|
24
23
|
});
|
|
25
24
|
}
|
|
@@ -110,7 +109,7 @@ function createCorsMiddleware(options) {
|
|
|
110
109
|
return await next();
|
|
111
110
|
}
|
|
112
111
|
else {
|
|
113
|
-
const headers = new
|
|
112
|
+
const headers = new Headers();
|
|
114
113
|
// preflight
|
|
115
114
|
configureOrigin(options, request, headers);
|
|
116
115
|
configureCredentials(options, request, headers);
|
|
@@ -124,7 +123,7 @@ function createCorsMiddleware(options) {
|
|
|
124
123
|
}
|
|
125
124
|
else {
|
|
126
125
|
const r = await next();
|
|
127
|
-
const headers = new
|
|
126
|
+
const headers = new Headers(r.headers);
|
|
128
127
|
if (event.request.headers.has('origin')) {
|
|
129
128
|
// actual response
|
|
130
129
|
configureOrigin(options, request, headers);
|
package/dist/cors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.js","sourceRoot":"","sources":["../src/cors.ts"],"names":[],"mappings":";AAAA,6FAA6F;;;AAoB7F,sCAIC;AAgHD,oDAsCC;
|
|
1
|
+
{"version":3,"file":"cors.js","sourceRoot":"","sources":["../src/cors.ts"],"names":[],"mappings":"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"}
|
package/dist/injectors.d.ts
CHANGED
package/dist/layer.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IHttpServerComponent as http } from '@
|
|
1
|
+
import { IHttpServerComponent as http } from '@dcl/core-commons';
|
|
2
2
|
import { Key } from 'path-to-regexp';
|
|
3
3
|
import { Middleware } from './middleware';
|
|
4
4
|
import { RoutedContext } from './router';
|
package/dist/logic.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as http from 'http';
|
|
2
|
-
import type { IHttpServerComponent } from '@
|
|
2
|
+
import type { IHttpServerComponent } from '@dcl/core-commons';
|
|
3
3
|
import { Middleware } from './middleware';
|
|
4
4
|
export declare const getRequestFromNodeMessage: <T extends http.IncomingMessage & {
|
|
5
5
|
originalUrl?: string;
|
package/dist/logic.js
CHANGED
|
@@ -43,7 +43,6 @@ exports.getDefaultMiddlewares = getDefaultMiddlewares;
|
|
|
43
43
|
exports.defaultHandler = defaultHandler;
|
|
44
44
|
exports.normalizeResponseBody = normalizeResponseBody;
|
|
45
45
|
exports.contextFromRequest = contextFromRequest;
|
|
46
|
-
const fetch = __importStar(require("node-fetch"));
|
|
47
46
|
const stream_1 = require("stream");
|
|
48
47
|
const http = __importStar(require("http"));
|
|
49
48
|
const https = __importStar(require("https"));
|
|
@@ -90,33 +89,27 @@ function success(data, res) {
|
|
|
90
89
|
res.statusMessage = data.statusText;
|
|
91
90
|
if (data.status)
|
|
92
91
|
res.statusCode = data.status;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
headers
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
92
|
+
data.headers.forEach((value, key) => {
|
|
93
|
+
// Set-Cookie is handled separately below. Multiple cookies must be emitted as distinct
|
|
94
|
+
// `Set-Cookie` headers; setting them one-by-one here would overwrite (res.setHeader replaces
|
|
95
|
+
// by name) and leave only the last cookie.
|
|
96
|
+
if (key !== 'set-cookie') {
|
|
97
|
+
res.setHeader(key, value);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
// `res.setHeader` accepts an array, which Node serializes as one `Set-Cookie` header per element.
|
|
101
|
+
const setCookies = typeof data.headers.getSetCookie === 'function' ? data.headers.getSetCookie() : [];
|
|
102
|
+
if (setCookies.length > 0) {
|
|
103
|
+
res.setHeader('set-cookie', setCookies);
|
|
100
104
|
}
|
|
101
105
|
const body = data.body;
|
|
102
106
|
if (Buffer.isBuffer(body)) {
|
|
103
107
|
res.end(body);
|
|
104
108
|
}
|
|
105
|
-
else if (
|
|
106
|
-
// const blob = body as Blob
|
|
107
|
-
// const stream = blob.stream()
|
|
108
|
-
// if (stream.pipeTo) {
|
|
109
|
-
// stream.pipeTo(res as any)
|
|
110
|
-
// } else {
|
|
111
|
-
// ;(blob.stream() as any).pipe(res)
|
|
112
|
-
// }
|
|
113
|
-
throw new Error('Unknown response body (Blob)');
|
|
114
|
-
}
|
|
115
|
-
else if (body && body.pipe) {
|
|
109
|
+
else if (body && typeof body.pipe === 'function') {
|
|
116
110
|
body.on('error', (err) => res.destroy(err));
|
|
117
111
|
body.pipe(res);
|
|
118
112
|
// Note: for context about why this is necessary, check https://github.com/nodejs/node/issues/1180
|
|
119
|
-
// @ts-expect-error - body.pipe check ensures this is a Node.js Stream, not web ReadableStream
|
|
120
113
|
(0, on_finished_1.default)(res, () => (0, destroy_1.default)(body));
|
|
121
114
|
}
|
|
122
115
|
else if (body !== undefined && body !== null) {
|
|
@@ -131,7 +124,7 @@ function getDefaultMiddlewares() {
|
|
|
131
124
|
return [exports.coerceErrorsMiddleware];
|
|
132
125
|
}
|
|
133
126
|
const getRequestFromNodeMessage = (request, host) => {
|
|
134
|
-
const headers = new
|
|
127
|
+
const headers = new Headers();
|
|
135
128
|
for (let key in request.headers) {
|
|
136
129
|
if (request.headers.hasOwnProperty(key)) {
|
|
137
130
|
const h = request.headers[key];
|
|
@@ -143,12 +136,16 @@ const getRequestFromNodeMessage = (request, host) => {
|
|
|
143
136
|
}
|
|
144
137
|
}
|
|
145
138
|
}
|
|
139
|
+
const method = request.method.toUpperCase();
|
|
146
140
|
const requestInit = {
|
|
147
|
-
headers
|
|
148
|
-
method
|
|
141
|
+
headers,
|
|
142
|
+
method
|
|
149
143
|
};
|
|
150
|
-
if (
|
|
151
|
-
|
|
144
|
+
if (method != 'GET' && method != 'HEAD') {
|
|
145
|
+
// The native `Request` body must be a web `ReadableStream`. Adapt the incoming Node message
|
|
146
|
+
// stream; `duplex: 'half'` is required by the fetch spec when streaming a request body.
|
|
147
|
+
requestInit.body = stream_1.Readable.toWeb(request);
|
|
148
|
+
requestInit.duplex = 'half';
|
|
152
149
|
}
|
|
153
150
|
const protocol = headers.get('X-Forwarded-Proto') == 'https' ? 'https' : 'http';
|
|
154
151
|
const baseUrl = protocol + '://' + (headers.get('X-Forwarded-Host') || headers.get('host') || host || '0.0.0.0');
|
|
@@ -161,7 +158,7 @@ const getRequestFromNodeMessage = (request, host) => {
|
|
|
161
158
|
url = new URL(originalUrl, baseUrl);
|
|
162
159
|
}
|
|
163
160
|
catch { }
|
|
164
|
-
const ret = new
|
|
161
|
+
const ret = new Request(url.toString(), requestInit);
|
|
165
162
|
return ret;
|
|
166
163
|
};
|
|
167
164
|
exports.getRequestFromNodeMessage = getRequestFromNodeMessage;
|
|
@@ -184,11 +181,9 @@ const coerceErrorsMiddleware = async (_, next) => {
|
|
|
184
181
|
exports.coerceErrorsMiddleware = coerceErrorsMiddleware;
|
|
185
182
|
function respondBuffer(buffer, response, mutableHeaders) {
|
|
186
183
|
// TODO: test
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
headers: mutableHeaders
|
|
191
|
-
});
|
|
184
|
+
const body = Buffer.isBuffer(buffer) ? buffer : Buffer.from(buffer);
|
|
185
|
+
mutableHeaders.set('Content-Length', body.byteLength.toFixed());
|
|
186
|
+
return { status: response.status, statusText: response.statusText, headers: mutableHeaders, body };
|
|
192
187
|
}
|
|
193
188
|
function respondJson(json, response, mutableHeaders) {
|
|
194
189
|
// TODO: test
|
|
@@ -222,24 +217,25 @@ async function defaultHandler() {
|
|
|
222
217
|
function normalizeResponseBody(request, response) {
|
|
223
218
|
if (!response) {
|
|
224
219
|
// Not Implemented
|
|
225
|
-
return
|
|
220
|
+
return { status: 501, statusText: 'Server did not produce a valid response', headers: new Headers() };
|
|
226
221
|
}
|
|
227
222
|
if (response.status == 101) {
|
|
228
223
|
const cb = (0, ws_1.getWebSocketCallback)(response);
|
|
229
|
-
return (0, ws_1.withWebSocketCallback)(
|
|
224
|
+
return (0, ws_1.withWebSocketCallback)({ status: 101, headers: new Headers(response.headers) }, cb);
|
|
230
225
|
}
|
|
231
|
-
if (response instanceof
|
|
232
|
-
return
|
|
233
|
-
headers: response.headers,
|
|
226
|
+
if (response instanceof Response) {
|
|
227
|
+
return {
|
|
234
228
|
status: response.status,
|
|
235
|
-
statusText: response.statusText
|
|
236
|
-
|
|
229
|
+
statusText: response.statusText,
|
|
230
|
+
headers: new Headers(response.headers),
|
|
231
|
+
body: response.body && !response.bodyUsed ? stream_1.Readable.fromWeb(response.body) : undefined
|
|
232
|
+
};
|
|
237
233
|
}
|
|
238
234
|
const is1xx = response.status && response.status >= 100 && response.status < 200;
|
|
239
235
|
const is204 = response.status == 204;
|
|
240
236
|
const is304 = response.status == 304;
|
|
241
237
|
const isHEAD = request.method == 'HEAD';
|
|
242
|
-
const mutableHeaders = new
|
|
238
|
+
const mutableHeaders = new Headers(response.headers);
|
|
243
239
|
if (is204 || is304) {
|
|
244
240
|
// TODO: TEST this code path
|
|
245
241
|
mutableHeaders.delete('Content-Type');
|
|
@@ -250,7 +246,7 @@ function normalizeResponseBody(request, response) {
|
|
|
250
246
|
// the following responses must not contain any content nor content-length
|
|
251
247
|
if (is1xx || is204 || is304 || isHEAD) {
|
|
252
248
|
// TODO: TEST this code path
|
|
253
|
-
return
|
|
249
|
+
return { status: response.status, statusText: response.statusText, headers: mutableHeaders };
|
|
254
250
|
}
|
|
255
251
|
if (Buffer.isBuffer(response.body)) {
|
|
256
252
|
return respondBuffer(response.body, response, mutableHeaders);
|
|
@@ -262,7 +258,12 @@ function normalizeResponseBody(request, response) {
|
|
|
262
258
|
return respondString(response.body, response, mutableHeaders);
|
|
263
259
|
}
|
|
264
260
|
else if (response.body instanceof stream_1.Stream) {
|
|
265
|
-
return
|
|
261
|
+
return {
|
|
262
|
+
status: response.status,
|
|
263
|
+
statusText: response.statusText,
|
|
264
|
+
headers: mutableHeaders,
|
|
265
|
+
body: response.body
|
|
266
|
+
};
|
|
266
267
|
}
|
|
267
268
|
else if (response.body != undefined) {
|
|
268
269
|
// TODO: test
|
|
@@ -274,14 +275,14 @@ function normalizeResponseBody(request, response) {
|
|
|
274
275
|
if (!mutableHeaders.has('content-length')) {
|
|
275
276
|
mutableHeaders.set('content-length', '0');
|
|
276
277
|
}
|
|
277
|
-
return
|
|
278
|
+
return { status: response.status, statusText: response.statusText, headers: mutableHeaders };
|
|
278
279
|
}
|
|
279
280
|
/**
|
|
280
281
|
* @internal
|
|
281
282
|
*/
|
|
282
283
|
function contextFromRequest(baseCtx, request) {
|
|
283
284
|
const newContext = Object.create(baseCtx);
|
|
284
|
-
//
|
|
285
|
+
// hydrate context with the request
|
|
285
286
|
newContext.request = request;
|
|
286
287
|
newContext.url = new URL(request.url);
|
|
287
288
|
return newContext;
|
package/dist/logic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"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"}
|
package/dist/methods.d.ts
CHANGED
package/dist/metrics.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { IConfigComponent,
|
|
1
|
+
import { IConfigComponent, IMetricsComponent } from '@well-known-components/interfaces';
|
|
2
|
+
import { IHttpServerComponent } from '@dcl/core-commons';
|
|
2
3
|
declare const metrics: {
|
|
3
4
|
http_request_duration_seconds: {
|
|
4
5
|
type: "histogram";
|
package/dist/metrics.js
CHANGED
|
@@ -2,8 +2,24 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getDefaultHttpMetrics = getDefaultHttpMetrics;
|
|
4
4
|
exports.instrumentHttpServerWithPromClientRegistry = instrumentHttpServerWithPromClientRegistry;
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
5
6
|
const interfaces_1 = require("@well-known-components/interfaces");
|
|
6
7
|
const router_1 = require("./router");
|
|
8
|
+
/**
|
|
9
|
+
* Builds a constant-time comparator for the configured bearer token. The expected
|
|
10
|
+
* token is hashed once up front; each candidate is hashed and compared with
|
|
11
|
+
* `timingSafeEqual`. Hashing to fixed-length digests means the comparison never
|
|
12
|
+
* throws on a length mismatch and does not leak the token length through timing.
|
|
13
|
+
*/
|
|
14
|
+
function createBearerTokenComparator(expected) {
|
|
15
|
+
const expectedHash = (0, crypto_1.createHash)('sha256').update(expected).digest();
|
|
16
|
+
return (candidate) => {
|
|
17
|
+
if (typeof candidate !== 'string')
|
|
18
|
+
return false;
|
|
19
|
+
const candidateHash = (0, crypto_1.createHash)('sha256').update(candidate).digest();
|
|
20
|
+
return (0, crypto_1.timingSafeEqual)(candidateHash, expectedHash);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
7
23
|
const httpLabels = ['method', 'handler', 'code'];
|
|
8
24
|
const metrics = {
|
|
9
25
|
http_request_duration_seconds: {
|
|
@@ -47,6 +63,7 @@ async function instrumentHttpServerWithPromClientRegistry(options) {
|
|
|
47
63
|
const { config, registry } = options;
|
|
48
64
|
const metricsPath = (await config.getString(_configKey('PUBLIC_PATH'))) || '/metrics';
|
|
49
65
|
const bearerToken = await config.getString(_configKey('BEARER_TOKEN'));
|
|
66
|
+
const compareBearerToken = bearerToken ? createBearerTokenComparator(bearerToken) : undefined;
|
|
50
67
|
const resetEveryNight = (await config.getString(_configKey('RESET_AT_NIGHT'))) == 'true';
|
|
51
68
|
const router = new router_1.Router();
|
|
52
69
|
function calculateNextReset() {
|
|
@@ -55,12 +72,12 @@ async function instrumentHttpServerWithPromClientRegistry(options) {
|
|
|
55
72
|
let nextReset = calculateNextReset();
|
|
56
73
|
// TODO: optional basic auth for /metrics
|
|
57
74
|
router.get(metricsPath, async (ctx) => {
|
|
58
|
-
if (
|
|
75
|
+
if (compareBearerToken) {
|
|
59
76
|
const header = ctx.request.headers.get('authorization');
|
|
60
77
|
if (!header)
|
|
61
78
|
return { status: 401 };
|
|
62
|
-
const [
|
|
63
|
-
if (
|
|
79
|
+
const [scheme, value] = header.split(' ');
|
|
80
|
+
if (scheme !== 'Bearer' || !compareBearerToken(value)) {
|
|
64
81
|
return { status: 401 };
|
|
65
82
|
}
|
|
66
83
|
}
|
|
@@ -97,7 +114,11 @@ async function instrumentHttpServerWithPromClientRegistry(options) {
|
|
|
97
114
|
if (ctx.routerPath) {
|
|
98
115
|
labels.handler = ctx.routerPath;
|
|
99
116
|
}
|
|
100
|
-
|
|
117
|
+
// Derive the request size from the Content-Length header. The previous `ctx.request.size`
|
|
118
|
+
// relied on a non-standard `node-fetch` Request property that does not exist on the native
|
|
119
|
+
// `Request`, which made prom-client throw on every request ("Value is not a valid number").
|
|
120
|
+
const requestSize = Number(ctx.request.headers.get('content-length')) || 0;
|
|
121
|
+
options.metrics.observe('http_request_size_bytes', labels, requestSize);
|
|
101
122
|
options.metrics.increment('http_requests_total', labels);
|
|
102
123
|
end(labels);
|
|
103
124
|
}
|
package/dist/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
|
package/dist/middleware.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { IMiddlewareAdapterHandler } from '@well-known-components/interfaces';
|
|
2
|
+
import type { IHttpServerComponent as http } from '@dcl/core-commons';
|
|
2
3
|
/**
|
|
3
4
|
* @public
|
|
4
5
|
*/
|
package/dist/middleware.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;AAWA,0BA6BC;AAhCD;;GAEG;AACH,SAAgB,OAAO,CAAM,GAAG,WAA8B;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAA;IAE1F,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAC7B,IAAI,OAAO,EAAE,KAAK,UAAU;YAAE,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAA;IAChG,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,OAAO,UAAU,OAAY,EAAE,IAAsB;QACnD,2BAA2B;QAC3B,IAAI,KAAK,GAAG,CAAC,CAAC,CAAA;QACd,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAA;QAClB,KAAK,UAAU,QAAQ,CAAC,CAAS;YAC/B,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;YACjD,CAAC;YACD,KAAK,GAAG,CAAC,CAAA;YACT,IAAI,EAAE,GAAgC,WAAW,CAAC,CAAC,CAAC,CAAA;YAEpD,IAAI,CAAC,KAAK,WAAW,CAAC,MAAM;gBAAE,EAAE,GAAG,IAAI,CAAA;YAEvC,IAAI,CAAC,EAAE;gBAAE,OAAO,EAAoB,CAAA;YAEpC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAChD,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
package/dist/router.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Layer, LayerOptions } from './layer';
|
|
2
|
-
import type { IHttpServerComponent } from '@
|
|
2
|
+
import type { IHttpServerComponent } from '@dcl/core-commons';
|
|
3
3
|
/** @public */
|
|
4
4
|
export type RouterOptions = Partial<{
|
|
5
5
|
methods: IHttpServerComponent.HTTPMethod[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-handler.js","sourceRoot":"","sources":["../src/server-handler.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"server-handler.js","sourceRoot":"","sources":["../src/server-handler.ts"],"names":[],"mappings":";;AAKA,kDAgCC;AArCD,mCAA8H;AAC9H,6CAAkD;AAGlD,YAAY;AACZ,SAAgB,mBAAmB;IACjC,IAAI,WAA4C,CAAA;IAChD,IAAI,eAA8C,CAAA;IAElD,SAAS,uBAAuB;QAC9B,eAAe,GAAG,IAAA,oBAAO,EAAC,GAAG,WAAW,CAAC,CAAA;IAC3C,CAAC;IAED,SAAS,gBAAgB;QACvB,WAAW,GAAG,IAAA,6BAAqB,GAAE,CAAA;QACrC,uBAAuB,EAAE,CAAA;IAC3B,CAAC;IAED,gCAAgC;IAChC,gBAAgB,EAAE,CAAA;IAElB,MAAM,GAAG,GAAyB,KAAK,EAAE,OAAO,EAAE,EAAE;QAClD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACzB,uBAAuB,EAAE,CAAA;IAC3B,CAAC,CAAA;IAED,KAAK,UAAU,cAAc,CAAC,cAAuB,EAAE,GAAkB;QACvE,MAAM,GAAG,GAAG,IAAA,0BAAkB,EAAC,cAAc,EAAE,GAAG,CAAC,CAAA;QACnD,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,sBAAc,CAAC,CAAA;QACtD,OAAO,IAAA,6BAAqB,EAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACxC,CAAC;IAED,OAAO;QACL,gBAAgB;QAChB,GAAG;QACH,cAAc;KACf,CAAA;AACH,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type IBaseComponent, type
|
|
1
|
+
import { type IBaseComponent, type IStatusCheckCapableComponent } from '@well-known-components/interfaces';
|
|
2
|
+
import type { IHttpServerComponent } from '@dcl/core-commons';
|
|
2
3
|
import type { ServerComponents, IHttpServerOptions } from './types';
|
|
3
4
|
/**
|
|
4
5
|
* @public
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,sDAmJC;AAtLD,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/status-checks.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { IBaseComponent, IConfigComponent
|
|
1
|
+
import { IBaseComponent, IConfigComponent } from '@well-known-components/interfaces';
|
|
2
|
+
import { IHttpServerComponent } from '@dcl/core-commons';
|
|
2
3
|
/**
|
|
3
4
|
* @beta
|
|
4
5
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-checks.js","sourceRoot":"","sources":["../src/status-checks.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"status-checks.js","sourceRoot":"","sources":["../src/status-checks.ts"],"names":[],"mappings":"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"}
|
package/dist/test-component.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { IHttpServerComponent } from '@
|
|
2
|
-
import { IFetchComponent } from '@well-known-components/interfaces';
|
|
1
|
+
import type { IFetchComponent, IHttpServerComponent } from '@dcl/core-commons';
|
|
3
2
|
import type { WebSocket as WS } from 'ws';
|
|
4
3
|
/** @alpha */
|
|
5
4
|
export type IWebSocketComponent<W = WS> = {
|
package/dist/test-component.js
CHANGED
|
@@ -1,42 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.createTestServerComponent = createTestServerComponent;
|
|
37
|
-
const fetch = __importStar(require("node-fetch"));
|
|
38
4
|
const server_handler_1 = require("./server-handler");
|
|
39
5
|
const stream_1 = require("stream");
|
|
6
|
+
/**
|
|
7
|
+
* Converts the server's internal {@link NormalizedResponse} into a native `Response` for test callers.
|
|
8
|
+
*
|
|
9
|
+
* Informational statuses (e.g. `101` from a WebSocket upgrade) cannot be represented by the native
|
|
10
|
+
* `Response` constructor (it only accepts 200–599), so we build a placeholder and shadow `status` to
|
|
11
|
+
* preserve the value tests assert on.
|
|
12
|
+
*/
|
|
13
|
+
function toFetchResponse(res) {
|
|
14
|
+
const status = res.status ?? 200;
|
|
15
|
+
const isNullBodyStatus = status === 204 || status === 205 || status === 304;
|
|
16
|
+
let body = null;
|
|
17
|
+
if (status >= 200 && !isNullBodyStatus && res.body != null) {
|
|
18
|
+
if (Buffer.isBuffer(res.body)) {
|
|
19
|
+
body = res.body;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
// Node Readable -> web stream. Decouple via PassThrough (parity with a socket-backed body) and
|
|
23
|
+
// route through `pipeline` so a source error destroys the PassThrough and surfaces to the body
|
|
24
|
+
// reader instead of becoming an unhandled error.
|
|
25
|
+
const passthrough = new stream_1.PassThrough();
|
|
26
|
+
(0, stream_1.pipeline)(res.body, passthrough, () => undefined);
|
|
27
|
+
body = stream_1.Readable.toWeb(passthrough);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (status < 200) {
|
|
31
|
+
const response = new Response(null, { statusText: res.statusText, headers: res.headers });
|
|
32
|
+
Object.defineProperty(response, 'status', { value: status, configurable: true });
|
|
33
|
+
return response;
|
|
34
|
+
}
|
|
35
|
+
return new Response(body, { status, statusText: res.statusText, headers: res.headers });
|
|
36
|
+
}
|
|
40
37
|
/**
|
|
41
38
|
* Creates a http-server component for tests
|
|
42
39
|
* @public
|
|
@@ -47,11 +44,11 @@ function createTestServerComponent() {
|
|
|
47
44
|
const ret = {
|
|
48
45
|
async fetch(url, initRequest) {
|
|
49
46
|
let req;
|
|
50
|
-
if (url instanceof
|
|
47
|
+
if (url instanceof Request) {
|
|
51
48
|
req = url;
|
|
52
49
|
}
|
|
53
50
|
else {
|
|
54
|
-
const tempHeaders = new
|
|
51
|
+
const tempHeaders = new Headers(initRequest?.headers);
|
|
55
52
|
const hostname = tempHeaders.get('X-Forwarded-Host') || tempHeaders.get('host') || '0.0.0.0';
|
|
56
53
|
const protocol = tempHeaders.get('X-Forwarded-Proto') == 'https' ? 'https' : 'http';
|
|
57
54
|
let newUrl = new URL(protocol + '://' + hostname + url);
|
|
@@ -59,23 +56,23 @@ function createTestServerComponent() {
|
|
|
59
56
|
newUrl = new URL(url, protocol + '://' + hostname);
|
|
60
57
|
}
|
|
61
58
|
catch { }
|
|
62
|
-
|
|
59
|
+
let init = initRequest;
|
|
60
|
+
// The native `Request` constructor doesn't understand the `form-data` package (it would set a
|
|
61
|
+
// `text/plain` body). Serialize it to a buffer and merge its multipart headers, the way
|
|
62
|
+
// node-fetch used to, so multipart requests keep working against the in-memory test server.
|
|
63
|
+
const maybeForm = initRequest?.body;
|
|
64
|
+
if (maybeForm && typeof maybeForm.getHeaders === 'function' && typeof maybeForm.getBuffer === 'function') {
|
|
65
|
+
init = { ...initRequest, body: maybeForm.getBuffer(), headers: { ...maybeForm.getHeaders(), ...initRequest.headers } };
|
|
66
|
+
}
|
|
67
|
+
req = new Request(newUrl.toString(), init);
|
|
63
68
|
}
|
|
64
69
|
try {
|
|
65
70
|
const res = await serverHandler.processRequest(currentContext, req);
|
|
66
|
-
|
|
67
|
-
// since we have no server and actual socket pipes, what we receive here
|
|
68
|
-
// is a readable stream that needs to be decoupled from it's original
|
|
69
|
-
// stream to ensure a consistent behavior with real servers
|
|
70
|
-
return new Promise((resolve, reject) => {
|
|
71
|
-
resolve(new fetch.Response((0, stream_1.pipeline)(res.body, new stream_1.PassThrough(), reject), res));
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
return res;
|
|
71
|
+
return toFetchResponse(res);
|
|
75
72
|
}
|
|
76
73
|
catch (error) {
|
|
77
74
|
console.error(error);
|
|
78
|
-
return new
|
|
75
|
+
return new Response('DEV-SERVER-ERROR: ' + (error.stack || error.toString()), { status: 500 });
|
|
79
76
|
}
|
|
80
77
|
},
|
|
81
78
|
use: serverHandler.use,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-component.js","sourceRoot":"","sources":["../src/test-component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-component.js","sourceRoot":"","sources":["../src/test-component.ts"],"names":[],"mappings":"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"}
|
package/dist/test-server.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { IConfigComponent,
|
|
1
|
+
import { IConfigComponent, ILoggerComponent } from '@well-known-components/interfaces';
|
|
2
|
+
import { IHttpServerComponent } from '@dcl/core-commons';
|
|
2
3
|
import { Router } from '.';
|
|
3
4
|
export type TestServerAppContext<OtherComponents> = {
|
|
4
5
|
components: TestServerComponents<OtherComponents>;
|
package/dist/test-server.js
CHANGED
|
@@ -5,7 +5,7 @@ exports.initTestServerComponents = initTestServerComponents;
|
|
|
5
5
|
const env_config_provider_1 = require("@well-known-components/env-config-provider");
|
|
6
6
|
const logger_1 = require("@well-known-components/logger");
|
|
7
7
|
const test_helpers_1 = require("@well-known-components/test-helpers");
|
|
8
|
-
|
|
8
|
+
// `Headers` is the native (undici) global provided by Node.
|
|
9
9
|
const stream_1 = require("stream");
|
|
10
10
|
const _1 = require(".");
|
|
11
11
|
/**
|
|
@@ -26,7 +26,7 @@ async function wireTestServerComponents(context) {
|
|
|
26
26
|
const response = await next();
|
|
27
27
|
process.stderr.write('res ❬ ' + greenFG + 'HTTP ' + whiteFG + (response.status || 200) + '\n');
|
|
28
28
|
if (response.headers) {
|
|
29
|
-
for (let [header, value] of new
|
|
29
|
+
for (let [header, value] of new Headers(response.headers)) {
|
|
30
30
|
process.stderr.write(' ' + whiteFG + header + ': ' + greyFG + value + '\n');
|
|
31
31
|
}
|
|
32
32
|
}
|
package/dist/test-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-server.js","sourceRoot":"","sources":["../src/test-server.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"test-server.js","sourceRoot":"","sources":["../src/test-server.ts"],"names":[],"mappings":"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"}
|
package/dist/ws.d.ts
CHANGED
package/dist/ws.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":";;AAWA,4DAOC;AAMD,sDAGC;AAMD,oDAEC;AAhCD,MAAM,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAI5C;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,EAAqB;IAC5D,OAAO,qBAAqB,CAC1B;QACE,MAAM,EAAE,GAAG;KACZ,EACD,EAAE,CACH,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAmB,GAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":";;AAWA,4DAOC;AAMD,sDAGC;AAMD,oDAEC;AAhCD,MAAM,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAI5C;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,EAAqB;IAC5D,OAAO,qBAAqB,CAC1B;QACE,MAAM,EAAE,GAAG;KACZ,EACD,EAAE,CACH,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAmB,GAAM,EAAE,EAA4B;IAC1F,CAAC;IAAC,GAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;IAC5B,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAmB,GAAM;IAC3D,OAAQ,GAAW,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAA;AACvC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,38 +1,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dcl/http-server",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "http server component",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/decentraland/core-components",
|
|
8
|
+
"directory": "components/http-server"
|
|
9
|
+
},
|
|
5
10
|
"main": "dist/index.js",
|
|
6
11
|
"types": "dist/index.d.ts",
|
|
7
12
|
"files": [
|
|
8
13
|
"dist"
|
|
9
14
|
],
|
|
10
15
|
"dependencies": {
|
|
11
|
-
"@
|
|
16
|
+
"@well-known-components/interfaces": "^1.5.1",
|
|
12
17
|
"destroy": "^1.2.0",
|
|
13
18
|
"fp-future": "^1.0.1",
|
|
14
19
|
"http-errors": "^2.0.0",
|
|
15
20
|
"mitt": "^3.0.0",
|
|
16
|
-
"node-fetch": "^2.6.9",
|
|
17
21
|
"on-finished": "^2.4.1",
|
|
18
22
|
"path-to-regexp": "^6.3.0",
|
|
19
|
-
"reflect-metadata": "^0.2.2"
|
|
23
|
+
"reflect-metadata": "^0.2.2",
|
|
24
|
+
"@dcl/core-commons": "0.10.1"
|
|
20
25
|
},
|
|
21
26
|
"devDependencies": {
|
|
22
27
|
"@types/busboy": "^1.5.4",
|
|
23
28
|
"@types/destroy": "^1.0.0",
|
|
29
|
+
"@types/http-errors": "^2.0.4",
|
|
24
30
|
"@types/jest": "^30.0.0",
|
|
25
31
|
"@types/node": "^20.3.2",
|
|
26
|
-
"@types/node-fetch": "^2.6.12",
|
|
27
32
|
"@types/on-finished": "^2.3.4",
|
|
28
33
|
"@types/ws": "^8.5.4",
|
|
29
34
|
"@well-known-components/env-config-provider": "^1.1.1",
|
|
30
|
-
"@well-known-components/interfaces": "^1.5.1",
|
|
31
35
|
"@well-known-components/logger": "^3.1.2",
|
|
32
36
|
"@well-known-components/test-helpers": "^1.3.0",
|
|
33
37
|
"@jest/test-sequencer": "^30.0.2",
|
|
34
38
|
"busboy": "^1.6.0",
|
|
35
|
-
"form-data": "^4.0.0",
|
|
36
39
|
"jest": "^30.0.2",
|
|
37
40
|
"ts-jest": "^29.4.0",
|
|
38
41
|
"typescript": "^5.8.2",
|