ultimate-express 1.0.1 → 1.0.3
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/README.md +18 -1
- package/package.json +10 -6
- package/src/request.js +1 -1
- package/src/router.js +9 -3
- package/src/utils.js +5 -2
- package/.github/workflows/test.yml +0 -27
- package/tests/index.js +0 -64
- package/tests/parts/.test/index.html +0 -11
- package/tests/parts/big.jpg +0 -0
- package/tests/parts/index.art +0 -12
- package/tests/parts/index.dot +0 -12
- package/tests/parts/index.ejs +0 -12
- package/tests/parts/index.handlebars +0 -2
- package/tests/parts/index.html +0 -12
- package/tests/parts/index.mustache +0 -12
- package/tests/parts/index.pug +0 -6
- package/tests/parts/index.swig +0 -12
- package/tests/parts/layouts/main.handlebars +0 -12
- package/tests/preload.cjs +0 -5
- package/tests/singular.js +0 -41
- package/tests/tests/app/app-engine.js +0 -8
- package/tests/tests/app/app-on-mount.js +0 -24
- package/tests/tests/app/app-path.js +0 -21
- package/tests/tests/app/app-route.js +0 -30
- package/tests/tests/app/options.js +0 -16
- package/tests/tests/app/setting-inheritance.js +0 -16
- package/tests/tests/engines/art-template.js +0 -33
- package/tests/tests/engines/dot.js +0 -28
- package/tests/tests/engines/ejs.js +0 -25
- package/tests/tests/engines/handlebars.js +0 -28
- package/tests/tests/engines/mustache.js +0 -28
- package/tests/tests/engines/pug.js +0 -25
- package/tests/tests/engines/swig.js +0 -28
- package/tests/tests/errors/error-handling-middleware.js +0 -22
- package/tests/tests/errors/next-error-optimized.js +0 -26
- package/tests/tests/errors/next-error.js +0 -26
- package/tests/tests/errors/unexpected-error-handling.js +0 -18
- package/tests/tests/listen/listen-random.js +0 -11
- package/tests/tests/listen/listen-specific.js +0 -17
- package/tests/tests/middlewares/body-json.js +0 -31
- package/tests/tests/middlewares/body-raw-deflate.js +0 -43
- package/tests/tests/middlewares/body-raw-gzip.js +0 -43
- package/tests/tests/middlewares/body-raw.js +0 -41
- package/tests/tests/middlewares/body-text.js +0 -27
- package/tests/tests/middlewares/body-urlencoded.js +0 -30
- package/tests/tests/middlewares/cookie-parser-signed.js +0 -31
- package/tests/tests/middlewares/cookie-parser.js +0 -28
- package/tests/tests/middlewares/cookie-session.js +0 -40
- package/tests/tests/middlewares/cors.js +0 -29
- package/tests/tests/middlewares/errorhandler.js +0 -26
- package/tests/tests/middlewares/express-fileupload-temp.js +0 -46
- package/tests/tests/middlewares/express-fileupload.js +0 -28
- package/tests/tests/middlewares/express-rate-limit.js +0 -33
- package/tests/tests/middlewares/express-session.js +0 -37
- package/tests/tests/middlewares/express-static-options.js +0 -72
- package/tests/tests/middlewares/express-static.js +0 -40
- package/tests/tests/middlewares/method-override.js +0 -33
- package/tests/tests/middlewares/multer.js +0 -43
- package/tests/tests/middlewares/multiple-middlewares.js +0 -37
- package/tests/tests/middlewares/response-time.js +0 -29
- package/tests/tests/middlewares/serve-index.js +0 -38
- package/tests/tests/middlewares/serve-static.js +0 -38
- package/tests/tests/middlewares/vhost.js +0 -50
- package/tests/tests/params/array-param.js +0 -30
- package/tests/tests/params/nested-params.js +0 -24
- package/tests/tests/params/param-errors.js +0 -56
- package/tests/tests/params/param-function.js +0 -49
- package/tests/tests/params/param-next-route.js +0 -48
- package/tests/tests/params/param-optimized.js +0 -38
- package/tests/tests/params/param-use.js +0 -39
- package/tests/tests/params/param.js +0 -68
- package/tests/tests/params/params-regex.js +0 -26
- package/tests/tests/params/params-use.js +0 -20
- package/tests/tests/params/params.js +0 -35
- package/tests/tests/req/req-accepts-charsets.js +0 -40
- package/tests/tests/req/req-accepts-encodings.js +0 -36
- package/tests/tests/req/req-accepts-languages.js +0 -41
- package/tests/tests/req/req-accepts.js +0 -41
- package/tests/tests/req/req-app.js +0 -17
- package/tests/tests/req/req-baseurl.js +0 -38
- package/tests/tests/req/req-connection.js +0 -19
- package/tests/tests/req/req-fresh.js +0 -59
- package/tests/tests/req/req-get.js +0 -78
- package/tests/tests/req/req-headers-distinct.js +0 -72
- package/tests/tests/req/req-headers.js +0 -72
- package/tests/tests/req/req-host.js +0 -45
- package/tests/tests/req/req-hostname.js +0 -45
- package/tests/tests/req/req-ip.js +0 -19
- package/tests/tests/req/req-is.js +0 -44
- package/tests/tests/req/req-original-url.js +0 -29
- package/tests/tests/req/req-param.js +0 -29
- package/tests/tests/req/req-protocol.js +0 -20
- package/tests/tests/req/req-query.js +0 -23
- package/tests/tests/req/req-range.js +0 -48
- package/tests/tests/req/req-raw-headers.js +0 -72
- package/tests/tests/req/req-subdomains.js +0 -48
- package/tests/tests/req/req-url-nested.js +0 -27
- package/tests/tests/req/req-url-optimized-router.js +0 -26
- package/tests/tests/req/req-url-optimized.js +0 -23
- package/tests/tests/req/req-url.js +0 -36
- package/tests/tests/req/req-xhr.js +0 -23
- package/tests/tests/res/head-content-length.js +0 -18
- package/tests/tests/res/head.js +0 -47
- package/tests/tests/res/injecting.js +0 -25
- package/tests/tests/res/piping.js +0 -23
- package/tests/tests/res/res-app.js +0 -17
- package/tests/tests/res/res-append.js +0 -24
- package/tests/tests/res/res-attachment.js +0 -19
- package/tests/tests/res/res-clear-cookie.js +0 -18
- package/tests/tests/res/res-cookie.js +0 -22
- package/tests/tests/res/res-download.js +0 -36
- package/tests/tests/res/res-format.js +0 -57
- package/tests/tests/res/res-get.js +0 -18
- package/tests/tests/res/res-headers-sent.js +0 -18
- package/tests/tests/res/res-json.js +0 -17
- package/tests/tests/res/res-jsonp.js +0 -25
- package/tests/tests/res/res-links.js +0 -21
- package/tests/tests/res/res-location.js +0 -34
- package/tests/tests/res/res-redirect.js +0 -46
- package/tests/tests/res/res-remove-header.js +0 -19
- package/tests/tests/res/res-send-file.js +0 -17
- package/tests/tests/res/res-send-status.js +0 -17
- package/tests/tests/res/res-send.js +0 -69
- package/tests/tests/res/res-set.js +0 -28
- package/tests/tests/res/res-status.js +0 -18
- package/tests/tests/res/res-type.js +0 -19
- package/tests/tests/res/res-vary.js +0 -19
- package/tests/tests/res/res-write.js +0 -29
- package/tests/tests/routers/complex-routers.js +0 -34
- package/tests/tests/routers/empty-router.js +0 -25
- package/tests/tests/routers/lot-of-routes.js +0 -38
- package/tests/tests/routers/mergeparams.js +0 -42
- package/tests/tests/routers/nested-routers.js +0 -52
- package/tests/tests/routers/router-options.js +0 -68
- package/tests/tests/routers/routers.js +0 -45
- package/tests/tests/routers/simple-routers.js +0 -35
- package/tests/tests/routing/all.js +0 -47
- package/tests/tests/routing/array-arguments.js +0 -35
- package/tests/tests/routing/array-use.js +0 -33
- package/tests/tests/routing/async-use.js +0 -25
- package/tests/tests/routing/complex-routes.js +0 -50
- package/tests/tests/routing/lot-of-param-routes.js +0 -26
- package/tests/tests/routing/lot-of-routes.js +0 -59
- package/tests/tests/routing/next-existent-optimized-route.js +0 -29
- package/tests/tests/routing/next-existent-route.js +0 -29
- package/tests/tests/routing/next-nonexistent-optimized-route.js +0 -19
- package/tests/tests/routing/next-nonexistent-route.js +0 -19
- package/tests/tests/routing/next-special-cases.js +0 -54
- package/tests/tests/routing/next-unoptimized.js +0 -39
- package/tests/tests/routing/no-path-use.js +0 -29
- package/tests/tests/routing/non-string-routes.js +0 -27
- package/tests/tests/routing/req-multiple-mountpaths.js +0 -34
- package/tests/tests/routing/simple-routes.js +0 -29
- package/tests/tests/routing/simple-use.js +0 -52
- package/tests/tests/routing/some-middlewares.js +0 -27
- package/tests/tests/routing/special-characters.js +0 -28
- package/tests/tests/routing/star.js +0 -31
- package/tests/tests/routing/sub-apps.js +0 -32
- package/tests/tests/routing/trailing-slash.js +0 -37
- package/tests/tests/routing/weird-route-start.js +0 -18
- package/tests/tests/send-file/accept-ranges.js +0 -26
- package/tests/tests/send-file/callback.js +0 -23
- package/tests/tests/send-file/default-error-routing.js +0 -21
- package/tests/tests/send-file/dotfiles.js +0 -24
- package/tests/tests/send-file/etag.js +0 -19
- package/tests/tests/send-file/fs-threads.js +0 -39
- package/tests/tests/send-file/head.js +0 -49
- package/tests/tests/send-file/headers.js +0 -23
- package/tests/tests/send-file/if-match.js +0 -31
- package/tests/tests/send-file/if-range.js +0 -37
- package/tests/tests/send-file/if-unmodified-since.js +0 -32
- package/tests/tests/send-file/immutable.js +0 -22
- package/tests/tests/send-file/large-file.js +0 -19
- package/tests/tests/send-file/last-modified.js +0 -21
- package/tests/tests/send-file/max-age.js +0 -21
- package/tests/tests/send-file/path-traversal.js +0 -35
- package/tests/tests/send-file/range.js +0 -57
- package/tests/tests/send-file/simple.js +0 -18
- package/tests/tests/settings/case-sensitive-routing.js +0 -48
- package/tests/tests/settings/env-errors.js +0 -38
- package/tests/tests/settings/etag.js +0 -36
- package/tests/tests/settings/json-escape.js +0 -45
- package/tests/tests/settings/json-replacer.js +0 -50
- package/tests/tests/settings/json-spaces.js +0 -44
- package/tests/tests/settings/query-parser.js +0 -45
- package/tests/tests/settings/strict-routing.js +0 -64
- package/tests/tests/settings/subdomain-offset.js +0 -38
- package/tests/tests/settings/trust-proxy-host.js +0 -58
- package/tests/tests/settings/trust-proxy-ip.js +0 -58
- package/tests/tests/settings/trust-proxy-ips.js +0 -58
- package/tests/tests/settings/trust-proxy-protocol.js +0 -46
- package/tests/tests/settings/x-powered-by.js +0 -32
- package/tests/uws.js +0 -14
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
// must support req.headers
|
|
2
|
-
|
|
3
|
-
const net = require("net");
|
|
4
|
-
const express = require("express");
|
|
5
|
-
|
|
6
|
-
// this is needed to actually test multiple headers with the same name
|
|
7
|
-
// because fetch just combines them into one
|
|
8
|
-
async function sendRequest(method, url, arrayHeaders) {
|
|
9
|
-
// arrayHeaders is an array of [key, value] pairs
|
|
10
|
-
return new Promise((resolve, reject) => {
|
|
11
|
-
const client = new net.Socket();
|
|
12
|
-
const [host, port] = url.split('://')[1].split('/')[0].split(':');
|
|
13
|
-
const path = '/' + url.split('/').slice(3).join('/');
|
|
14
|
-
|
|
15
|
-
client.connect(parseInt(port), host, () => {
|
|
16
|
-
let request = `${method} ${path} HTTP/1.1\r\n`;
|
|
17
|
-
request += `Host: ${host}:${port}\r\n`;
|
|
18
|
-
|
|
19
|
-
for (const [key, value] of arrayHeaders) {
|
|
20
|
-
request += `${key}: ${value}\r\n`;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
request += '\r\n';
|
|
24
|
-
|
|
25
|
-
client.write(request);
|
|
26
|
-
|
|
27
|
-
setTimeout(() => {
|
|
28
|
-
client.destroy();
|
|
29
|
-
resolve();
|
|
30
|
-
}, 100);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const app = express();
|
|
36
|
-
app.get("/test", (req, res) => {
|
|
37
|
-
console.log(req.headers);
|
|
38
|
-
res.send("test");
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
app.listen(13333, async () => {
|
|
42
|
-
console.log('Server is running on port 13333');
|
|
43
|
-
|
|
44
|
-
let res;
|
|
45
|
-
res = await fetch('http://localhost:13333/test');
|
|
46
|
-
console.log(await res.text());
|
|
47
|
-
|
|
48
|
-
res = await fetch('http://localhost:13333/test', {
|
|
49
|
-
headers: {
|
|
50
|
-
'X-Test': 'test'
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
console.log(await res.text());
|
|
54
|
-
|
|
55
|
-
res = await fetch('http://localhost:13333/test', {
|
|
56
|
-
headers: {
|
|
57
|
-
'Set-Cookie': 'test=test; HttpOnly; Secure; SameSite=Strict'
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
console.log(await res.text());
|
|
61
|
-
|
|
62
|
-
const headers = [];
|
|
63
|
-
headers.push(['X-Test', 'test']);
|
|
64
|
-
headers.push(['X-Test', 'test2']);
|
|
65
|
-
headers.push(['Cookie', 'test=test']);
|
|
66
|
-
headers.push(['Cookie', 'test2=test2']);
|
|
67
|
-
headers.push(['content-type', 'text/plain']);
|
|
68
|
-
headers.push(['content-type', 'application/json']);
|
|
69
|
-
res = await sendRequest('GET', 'http://localhost:13333/test', headers);
|
|
70
|
-
|
|
71
|
-
process.exit(0);
|
|
72
|
-
})
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// must support req.host
|
|
2
|
-
|
|
3
|
-
const net = require("net");
|
|
4
|
-
const express = require("express");
|
|
5
|
-
|
|
6
|
-
async function sendRequest(method, url, customHost) {
|
|
7
|
-
// arrayHeaders is an array of [key, value] pairs
|
|
8
|
-
return new Promise((resolve, reject) => {
|
|
9
|
-
const client = new net.Socket();
|
|
10
|
-
const [host, port] = url.split('://')[1].split('/')[0].split(':');
|
|
11
|
-
const path = '/' + url.split('/').slice(3).join('/');
|
|
12
|
-
|
|
13
|
-
client.connect(parseInt(port), host, () => {
|
|
14
|
-
let request = `${method} ${path} HTTP/1.1\r\n`;
|
|
15
|
-
request += `Host: ${customHost}\r\n`;
|
|
16
|
-
|
|
17
|
-
request += '\r\n';
|
|
18
|
-
|
|
19
|
-
client.write(request);
|
|
20
|
-
|
|
21
|
-
setTimeout(() => {
|
|
22
|
-
client.destroy();
|
|
23
|
-
resolve();
|
|
24
|
-
}, 100);
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const app = express();
|
|
30
|
-
app.get("/test", (req, res) => {
|
|
31
|
-
console.log(req.host);
|
|
32
|
-
res.send("test");
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
app.listen(13333, async () => {
|
|
36
|
-
console.log('Server is running on port 13333');
|
|
37
|
-
|
|
38
|
-
let res;
|
|
39
|
-
res = await fetch('http://localhost:13333/test');
|
|
40
|
-
console.log(await res.text());
|
|
41
|
-
|
|
42
|
-
res = await sendRequest('GET', 'http://localhost:13333/test', 'test:13333');
|
|
43
|
-
|
|
44
|
-
process.exit(0);
|
|
45
|
-
})
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// must support req.hostname
|
|
2
|
-
|
|
3
|
-
const net = require("net");
|
|
4
|
-
const express = require("express");
|
|
5
|
-
|
|
6
|
-
async function sendRequest(method, url, customHost) {
|
|
7
|
-
// arrayHeaders is an array of [key, value] pairs
|
|
8
|
-
return new Promise((resolve, reject) => {
|
|
9
|
-
const client = new net.Socket();
|
|
10
|
-
const [host, port] = url.split('://')[1].split('/')[0].split(':');
|
|
11
|
-
const path = '/' + url.split('/').slice(3).join('/');
|
|
12
|
-
|
|
13
|
-
client.connect(parseInt(port), host, () => {
|
|
14
|
-
let request = `${method} ${path} HTTP/1.1\r\n`;
|
|
15
|
-
request += `Host: ${customHost}\r\n`;
|
|
16
|
-
|
|
17
|
-
request += '\r\n';
|
|
18
|
-
|
|
19
|
-
client.write(request);
|
|
20
|
-
|
|
21
|
-
setTimeout(() => {
|
|
22
|
-
client.destroy();
|
|
23
|
-
resolve();
|
|
24
|
-
}, 100);
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const app = express();
|
|
30
|
-
app.get("/test", (req, res) => {
|
|
31
|
-
console.log(req.hostname);
|
|
32
|
-
res.send("test");
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
app.listen(13333, async () => {
|
|
36
|
-
console.log('Server is running on port 13333');
|
|
37
|
-
|
|
38
|
-
let res;
|
|
39
|
-
res = await fetch('http://localhost:13333/test');
|
|
40
|
-
console.log(await res.text());
|
|
41
|
-
|
|
42
|
-
res = await sendRequest('GET', 'http://localhost:13333/test', 'test:13333');
|
|
43
|
-
|
|
44
|
-
process.exit(0);
|
|
45
|
-
})
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// must support req.ip
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
|
|
7
|
-
app.get("/test", (req, res) => {
|
|
8
|
-
res.send(req.ip.replace('0000:0000:0000:0000:0000:0000:0000:000', "::"));
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
app.listen(13333, async () => {
|
|
12
|
-
console.log('Server is running on port 13333');
|
|
13
|
-
|
|
14
|
-
let res;
|
|
15
|
-
res = await fetch('http://localhost:13333/test');
|
|
16
|
-
console.log(await res.text());
|
|
17
|
-
|
|
18
|
-
process.exit(0);
|
|
19
|
-
})
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// must support req.is()
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
|
|
7
|
-
app.all('/test', (req, res) => {
|
|
8
|
-
console.log(req.is('html'));
|
|
9
|
-
console.log(req.is('json'));
|
|
10
|
-
console.log(req.is('text'));
|
|
11
|
-
console.log(req.is('*/*'));
|
|
12
|
-
console.log(req.is('application/json'));
|
|
13
|
-
console.log(req.is('application/*'));
|
|
14
|
-
console.log(req.is('text/html'));
|
|
15
|
-
res.send('test');
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
app.listen(13333, async () => {
|
|
19
|
-
console.log('Server is running on port 13333');
|
|
20
|
-
|
|
21
|
-
await fetch('http://localhost:13333/test').then(res => res.text());
|
|
22
|
-
await fetch('http://localhost:13333/test', {
|
|
23
|
-
method: 'POST',
|
|
24
|
-
headers: {
|
|
25
|
-
'Content-Type': 'application/json'
|
|
26
|
-
},
|
|
27
|
-
body: JSON.stringify({ test: 'test' })
|
|
28
|
-
}).then(res => res.text());
|
|
29
|
-
await fetch('http://localhost:13333/test', {
|
|
30
|
-
method: 'POST',
|
|
31
|
-
headers: {
|
|
32
|
-
'Content-Type': 'text/html'
|
|
33
|
-
},
|
|
34
|
-
body: '<html><body><h1>Hello, World!</h1></body></html>'
|
|
35
|
-
}).then(res => res.text());
|
|
36
|
-
await fetch('http://localhost:13333/test', {
|
|
37
|
-
method: 'POST',
|
|
38
|
-
headers: {
|
|
39
|
-
'Content-Type': 'text/plain'
|
|
40
|
-
},
|
|
41
|
-
body: 'Hello, World!'
|
|
42
|
-
}).then(res => res.text());
|
|
43
|
-
process.exit(0);
|
|
44
|
-
});
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// must support req.originalUrl
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
const router = express.Router();
|
|
7
|
-
|
|
8
|
-
app.get("/test", (req, res) => {
|
|
9
|
-
res.send(req.originalUrl);
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
router.get("/test", (req, res) => {
|
|
13
|
-
res.send(req.originalUrl);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
app.use("/router", router);
|
|
17
|
-
|
|
18
|
-
app.listen(13333, async () => {
|
|
19
|
-
console.log('Server is running on port 13333');
|
|
20
|
-
|
|
21
|
-
let res;
|
|
22
|
-
res = await fetch('http://localhost:13333/test#asdf');
|
|
23
|
-
console.log(await res.text());
|
|
24
|
-
|
|
25
|
-
res = await fetch('http://localhost:13333/router/test?test');
|
|
26
|
-
console.log(await res.text());
|
|
27
|
-
|
|
28
|
-
process.exit(0);
|
|
29
|
-
})
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// must support req.param()
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
|
|
7
|
-
app.all('/test', (req, res) => {
|
|
8
|
-
console.log(req.param('test'));
|
|
9
|
-
console.log(req.param('test', 'default'));
|
|
10
|
-
res.send('test');
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
app.get('/test/:test', (req, res) => {
|
|
14
|
-
console.log(req.param('test'));
|
|
15
|
-
console.log(req.param('test', 'default'));
|
|
16
|
-
res.send('test');
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
app.listen(13333, async () => {
|
|
20
|
-
console.log('Server is running on port 13333');
|
|
21
|
-
|
|
22
|
-
await fetch('http://localhost:13333/test').then(res => res.text());
|
|
23
|
-
await fetch('http://localhost:13333/test?test=test').then(res => res.text());
|
|
24
|
-
await fetch('http://localhost:13333/test?test=test&test2=test2').then(res => res.text());
|
|
25
|
-
await fetch('http://localhost:13333/test?asdf').then(res => res.text());
|
|
26
|
-
await fetch('http://localhost:13333/test/test').then(res => res.text());
|
|
27
|
-
await fetch('http://localhost:13333/test/test/test').then(res => res.text());
|
|
28
|
-
process.exit(0);
|
|
29
|
-
});
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
// must support req.protocol and req.secure
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
|
|
7
|
-
app.get("/test", (req, res) => {
|
|
8
|
-
res.send(req.protocol + ' ' + req.secure);
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
app.listen(13333, async () => {
|
|
12
|
-
console.log('Server is running on port 13333');
|
|
13
|
-
|
|
14
|
-
let res;
|
|
15
|
-
res = await fetch('http://localhost:13333/test');
|
|
16
|
-
console.log(await res.text());
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
process.exit(0);
|
|
20
|
-
})
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// must support req.query
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
|
|
7
|
-
app.get('/test', (req, res) => {
|
|
8
|
-
console.log(req.query);
|
|
9
|
-
res.send('test');
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
app.listen(13333, async () => {
|
|
13
|
-
console.log('Server is running on port 13333');
|
|
14
|
-
|
|
15
|
-
await fetch('http://localhost:13333/test').then(res => res.text());
|
|
16
|
-
await fetch('http://localhost:13333/test?test=1').then(res => res.text());
|
|
17
|
-
await fetch('http://localhost:13333/test?test=1&test=2').then(res => res.text());
|
|
18
|
-
await fetch('http://localhost:13333/test?test1=1&test2=2').then(res => res.text());
|
|
19
|
-
await fetch('http://localhost:13333/test?test=1&&asdf').then(res => res.text());
|
|
20
|
-
await fetch('http://localhost:13333/test?test').then(res => res.text());
|
|
21
|
-
|
|
22
|
-
process.exit(0);
|
|
23
|
-
});
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// must support req.range()
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
|
|
7
|
-
app.get('/test', (req, res) => {
|
|
8
|
-
console.log(req.range(10));
|
|
9
|
-
console.log(req.range(1000));
|
|
10
|
-
console.log(req.range(10000));
|
|
11
|
-
console.log(req.range(100, {
|
|
12
|
-
combine: true
|
|
13
|
-
}));
|
|
14
|
-
res.send('test');
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
app.listen(13333, async () => {
|
|
18
|
-
console.log('Server is running on port 13333');
|
|
19
|
-
|
|
20
|
-
await fetch('http://localhost:13333/test').then(res => res.text());
|
|
21
|
-
await fetch('http://localhost:13333/test', {
|
|
22
|
-
headers: {
|
|
23
|
-
'Range': 'bytes=100-200'
|
|
24
|
-
}
|
|
25
|
-
}).then(res => res.text());
|
|
26
|
-
await fetch('http://localhost:13333/test', {
|
|
27
|
-
headers: {
|
|
28
|
-
'Range': 'bytes=100-200, 300-400'
|
|
29
|
-
}
|
|
30
|
-
}).then(res => res.text());
|
|
31
|
-
await fetch('http://localhost:13333/test', {
|
|
32
|
-
headers: {
|
|
33
|
-
'Range': 'bytes=100-200, 300-400, 500-600'
|
|
34
|
-
}
|
|
35
|
-
}).then(res => res.text());
|
|
36
|
-
await fetch('http://localhost:13333/test', {
|
|
37
|
-
headers: {
|
|
38
|
-
'Range': 'bytes=100-200, 300-400, 500-600, 100-800'
|
|
39
|
-
}
|
|
40
|
-
}).then(res => res.text());
|
|
41
|
-
await fetch('http://localhost:13333/test', {
|
|
42
|
-
headers: {
|
|
43
|
-
'Range': 'asdf'
|
|
44
|
-
}
|
|
45
|
-
}).then(res => res.text());
|
|
46
|
-
|
|
47
|
-
process.exit(0);
|
|
48
|
-
});
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
// must support req.rawHeaders
|
|
2
|
-
|
|
3
|
-
const net = require("net");
|
|
4
|
-
const express = require("express");
|
|
5
|
-
|
|
6
|
-
// this is needed to actually test multiple headers with the same name
|
|
7
|
-
// because fetch just combines them into one
|
|
8
|
-
async function sendRequest(method, url, arrayHeaders) {
|
|
9
|
-
// arrayHeaders is an array of [key, value] pairs
|
|
10
|
-
return new Promise((resolve, reject) => {
|
|
11
|
-
const client = new net.Socket();
|
|
12
|
-
const [host, port] = url.split('://')[1].split('/')[0].split(':');
|
|
13
|
-
const path = '/' + url.split('/').slice(3).join('/');
|
|
14
|
-
|
|
15
|
-
client.connect(parseInt(port), host, () => {
|
|
16
|
-
let request = `${method} ${path} HTTP/1.1\r\n`;
|
|
17
|
-
request += `Host: ${host}:${port}\r\n`;
|
|
18
|
-
|
|
19
|
-
for (const [key, value] of arrayHeaders) {
|
|
20
|
-
request += `${key}: ${value}\r\n`;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
request += '\r\n';
|
|
24
|
-
|
|
25
|
-
client.write(request);
|
|
26
|
-
|
|
27
|
-
setTimeout(() => {
|
|
28
|
-
client.destroy();
|
|
29
|
-
resolve();
|
|
30
|
-
}, 100);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const app = express();
|
|
36
|
-
app.get("/test", (req, res) => {
|
|
37
|
-
console.log(req.rawHeaders.map(h => h.toLowerCase()));
|
|
38
|
-
res.send("test");
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
app.listen(13333, async () => {
|
|
42
|
-
console.log('Server is running on port 13333');
|
|
43
|
-
|
|
44
|
-
let res;
|
|
45
|
-
res = await fetch('http://localhost:13333/test');
|
|
46
|
-
console.log(await res.text());
|
|
47
|
-
|
|
48
|
-
res = await fetch('http://localhost:13333/test', {
|
|
49
|
-
headers: {
|
|
50
|
-
'x-test': 'test'
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
console.log(await res.text());
|
|
54
|
-
|
|
55
|
-
res = await fetch('http://localhost:13333/test', {
|
|
56
|
-
headers: {
|
|
57
|
-
'set-cookie': 'test=test; HttpOnly; Secure; SameSite=Strict'
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
console.log(await res.text());
|
|
61
|
-
|
|
62
|
-
const headers = [];
|
|
63
|
-
headers.push(['x-test', 'test']);
|
|
64
|
-
headers.push(['x-test', 'test2']);
|
|
65
|
-
headers.push(['cookie', 'test=test']);
|
|
66
|
-
headers.push(['cookie', 'test2=test2']);
|
|
67
|
-
headers.push(['content-type', 'text/plain']);
|
|
68
|
-
headers.push(['content-type', 'application/json']);
|
|
69
|
-
res = await sendRequest('GET', 'http://localhost:13333/test', headers);
|
|
70
|
-
|
|
71
|
-
process.exit(0);
|
|
72
|
-
})
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// must support req.subdomains
|
|
2
|
-
|
|
3
|
-
const net = require("net");
|
|
4
|
-
const express = require("express");
|
|
5
|
-
|
|
6
|
-
async function sendRequest(method, url, customHost) {
|
|
7
|
-
// arrayHeaders is an array of [key, value] pairs
|
|
8
|
-
return new Promise((resolve, reject) => {
|
|
9
|
-
const client = new net.Socket();
|
|
10
|
-
const [host, port] = url.split('://')[1].split('/')[0].split(':');
|
|
11
|
-
const path = '/' + url.split('/').slice(3).join('/');
|
|
12
|
-
|
|
13
|
-
client.connect(parseInt(port), host, () => {
|
|
14
|
-
let request = `${method} ${path} HTTP/1.1\r\n`;
|
|
15
|
-
request += `Host: ${customHost}\r\n`;
|
|
16
|
-
|
|
17
|
-
request += '\r\n';
|
|
18
|
-
|
|
19
|
-
client.write(request);
|
|
20
|
-
|
|
21
|
-
setTimeout(() => {
|
|
22
|
-
client.destroy();
|
|
23
|
-
resolve();
|
|
24
|
-
}, 100);
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const app = express();
|
|
30
|
-
app.get("/test", (req, res) => {
|
|
31
|
-
console.log(req.subdomains);
|
|
32
|
-
res.send("test");
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
app.listen(13333, async () => {
|
|
36
|
-
console.log('Server is running on port 13333');
|
|
37
|
-
|
|
38
|
-
let res;
|
|
39
|
-
res = await fetch('http://localhost:13333/test');
|
|
40
|
-
console.log(await res.text());
|
|
41
|
-
|
|
42
|
-
res = await sendRequest('GET', 'http://localhost:13333/test', 'test.localhost.com');
|
|
43
|
-
res = await sendRequest('GET', 'http://localhost:13333/test', 'asdf.test.localhost.com');
|
|
44
|
-
res = await sendRequest('GET', 'http://localhost:13333/test', 'bob.asdf.test.localhost.com');
|
|
45
|
-
res = await sendRequest('GET', 'http://localhost:13333/test', 'localhost:3333');
|
|
46
|
-
|
|
47
|
-
process.exit(0);
|
|
48
|
-
})
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// must support nested req.url
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
const router = express.Router();
|
|
7
|
-
|
|
8
|
-
router.use("/:test", (req, res, next) => {
|
|
9
|
-
console.log(req.url);
|
|
10
|
-
next();
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
app.use("/test", router);
|
|
14
|
-
|
|
15
|
-
app.get('/test/:test', (req, res) => {
|
|
16
|
-
res.send(req.url);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
app.listen(13333, async () => {
|
|
20
|
-
|
|
21
|
-
console.log('Server is running on port 13333');
|
|
22
|
-
|
|
23
|
-
let res = await fetch('http://localhost:13333/test/asdf');
|
|
24
|
-
console.log(await res.text());
|
|
25
|
-
|
|
26
|
-
process.exit(0);
|
|
27
|
-
})
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// must support optimized req.url with router
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
const router = express.Router();
|
|
7
|
-
|
|
8
|
-
router.use((req, res, next) => {
|
|
9
|
-
console.log('router', req.url);
|
|
10
|
-
next();
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
app.use("/:test", router);
|
|
14
|
-
|
|
15
|
-
app.get("/test", (req, res) => {
|
|
16
|
-
res.send(req.url);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
app.listen(13333, async () => {
|
|
20
|
-
console.log('Server is running on port 13333');
|
|
21
|
-
|
|
22
|
-
let res;
|
|
23
|
-
res = await fetch('http://localhost:13333/test');
|
|
24
|
-
console.log(await res.text());
|
|
25
|
-
process.exit(0);
|
|
26
|
-
})
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// must support optimized req.url
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
|
|
7
|
-
app.use("/:test", (req, res, next) => {
|
|
8
|
-
console.log(req.url);
|
|
9
|
-
next();
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
app.get("/test", (req, res) => {
|
|
13
|
-
res.send(req.url);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
app.listen(13333, async () => {
|
|
17
|
-
console.log('Server is running on port 13333');
|
|
18
|
-
|
|
19
|
-
let res;
|
|
20
|
-
res = await fetch('http://localhost:13333/test');
|
|
21
|
-
console.log(await res.text());
|
|
22
|
-
process.exit(0);
|
|
23
|
-
})
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
// must support req.url
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
const router = express.Router();
|
|
7
|
-
|
|
8
|
-
app.get("/test", (req, res) => {
|
|
9
|
-
res.send(req.url);
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
router.get("/test", (req, res) => {
|
|
13
|
-
res.send(req.url);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
app.use("/router", router);
|
|
17
|
-
|
|
18
|
-
app.use("/router", (req, res) => {
|
|
19
|
-
res.send(req.url);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
app.listen(13333, async () => {
|
|
23
|
-
console.log('Server is running on port 13333');
|
|
24
|
-
|
|
25
|
-
let res;
|
|
26
|
-
res = await fetch('http://localhost:13333/test#asdf');
|
|
27
|
-
console.log(await res.text());
|
|
28
|
-
|
|
29
|
-
res = await fetch('http://localhost:13333/router/test?test');
|
|
30
|
-
console.log(await res.text());
|
|
31
|
-
|
|
32
|
-
res = await fetch('http://localhost:13333/router');
|
|
33
|
-
console.log(await res.text());
|
|
34
|
-
|
|
35
|
-
process.exit(0);
|
|
36
|
-
})
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// must support req.xhr
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
|
|
7
|
-
app.get('/test', (req, res) => {
|
|
8
|
-
console.log(req.xhr);
|
|
9
|
-
res.send('test');
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
app.listen(13333, async () => {
|
|
13
|
-
console.log('Server is running on port 13333');
|
|
14
|
-
|
|
15
|
-
await fetch('http://localhost:13333/test').then(res => res.text());
|
|
16
|
-
await fetch('http://localhost:13333/test', {
|
|
17
|
-
headers: {
|
|
18
|
-
'X-Requested-With': 'XMLHttpRequest'
|
|
19
|
-
}
|
|
20
|
-
}).then(res => res.text());
|
|
21
|
-
|
|
22
|
-
process.exit(0);
|
|
23
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
// must retain content-length header on empty responses
|
|
2
|
-
|
|
3
|
-
const express = require("express");
|
|
4
|
-
|
|
5
|
-
const app = express();
|
|
6
|
-
|
|
7
|
-
app.get('/test', (req, res) => {
|
|
8
|
-
res.set('Content-Length', '100');
|
|
9
|
-
res.end();
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
app.listen(13333, async () => {
|
|
13
|
-
console.log('Server is running on port 13333');
|
|
14
|
-
|
|
15
|
-
const response = await fetch('http://localhost:13333/test');
|
|
16
|
-
console.log(response.headers.get('Content-Length'));
|
|
17
|
-
process.exit(0);
|
|
18
|
-
});
|