fastify 4.22.1 → 4.23.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/README.md +30 -33
- package/build/build-error-serializer.js +2 -2
- package/build/build-validation.js +2 -2
- package/build/sync-version.js +2 -2
- package/docs/Guides/Database.md +1 -1
- package/docs/Guides/Delay-Accepting-Requests.md +2 -2
- package/docs/Guides/Ecosystem.md +3 -1
- package/docs/Guides/Getting-Started.md +5 -4
- package/docs/Guides/Migration-Guide-V4.md +18 -15
- package/docs/Reference/ContentTypeParser.md +0 -1
- package/docs/Reference/HTTP2.md +4 -4
- package/docs/Reference/Hooks.md +30 -1
- package/docs/Reference/Middleware.md +1 -1
- package/docs/Reference/Principles.md +1 -1
- package/docs/Reference/Reply.md +7 -7
- package/docs/Reference/Request.md +11 -7
- package/docs/Reference/Server.md +2 -2
- package/examples/asyncawait.js +3 -1
- package/examples/benchmark/parser.js +1 -1
- package/examples/hooks.js +3 -0
- package/examples/http2.js +5 -3
- package/examples/https.js +5 -3
- package/examples/parser.js +4 -2
- package/examples/shared-schema.js +3 -1
- package/examples/simple-stream.js +4 -2
- package/examples/simple.js +3 -1
- package/examples/typescript-server.ts +1 -0
- package/examples/use-plugin.js +3 -1
- package/fastify.d.ts +2 -2
- package/fastify.js +5 -7
- package/lib/contentTypeParser.js +4 -4
- package/lib/error-handler.js +1 -1
- package/lib/hooks.js +55 -0
- package/lib/pluginUtils.js +1 -1
- package/lib/reply.js +1 -1
- package/lib/request.js +15 -0
- package/lib/server.js +26 -10
- package/lib/warnings.js +8 -0
- package/package.json +15 -5
- package/test/404s.test.js +1 -1
- package/test/als.test.js +1 -1
- package/test/async-await.test.js +1 -1
- package/test/bodyLimit.test.js +1 -1
- package/test/build/error-serializer.test.js +2 -2
- package/test/build/version.test.js +2 -2
- package/test/bundler/webpack/webpack.config.js +1 -1
- package/test/client-timeout.test.js +1 -1
- package/test/close.test.js +2 -2
- package/test/connectionTimeout.test.js +1 -1
- package/test/custom-http-server.test.js +2 -2
- package/test/custom-parser.0.test.js +1 -1
- package/test/custom-querystring-parser.test.js +1 -1
- package/test/diagnostics-channel.test.js +3 -3
- package/test/fastify-instance.test.js +1 -1
- package/test/genReqId.test.js +1 -1
- package/test/helper.js +2 -2
- package/test/hooks-async.test.js +2 -2
- package/test/hooks.on-listen.test.js +1090 -0
- package/test/hooks.on-ready.test.js +1 -1
- package/test/hooks.test.js +4 -4
- package/test/http2/closing.test.js +3 -3
- package/test/http2/missing-http2-module.test.js +1 -1
- package/test/https/custom-https-server.test.js +2 -2
- package/test/inject.test.js +3 -3
- package/test/internals/contentTypeParser.test.js +1 -1
- package/test/internals/errors.test.js +2 -2
- package/test/internals/initialConfig.test.js +1 -1
- package/test/internals/logger.test.js +1 -1
- package/test/internals/reply.test.js +7 -7
- package/test/internals/reqIdGenFactory.test.js +6 -2
- package/test/internals/server.test.js +4 -4
- package/test/keepAliveTimeout.test.js +1 -1
- package/test/listen.deprecated.test.js +1 -1
- package/test/listen.test.js +19 -5
- package/test/maxRequestsPerSocket.test.js +1 -1
- package/test/plugin.name.display.js +1 -1
- package/test/reply-error.test.js +4 -4
- package/test/reply-trailers.test.js +3 -3
- package/test/request-error.test.js +1 -1
- package/test/request.deprecated.test.js +38 -0
- package/test/requestTimeout.test.js +1 -1
- package/test/route-hooks.test.js +1 -1
- package/test/route.test.js +1 -1
- package/test/router-options.test.js +5 -6
- package/test/serial/logger.0.test.js +2 -2
- package/test/serial/logger.1.test.js +5 -5
- package/test/skip-reply-send.test.js +1 -1
- package/test/stream.test.js +20 -20
- package/test/trust-proxy.test.js +1 -1
- package/test/types/hooks.test-d.ts +11 -0
- package/test/unsupported-httpversion.test.js +1 -1
- package/test/upgrade.test.js +3 -3
- package/test/versioned-routes.test.js +1 -1
- package/types/hooks.d.ts +45 -12
- package/types/instance.d.ts +11 -1
- package/out +0 -25874
package/test/hooks.test.js
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
const t = require('tap')
|
|
4
4
|
const test = t.test
|
|
5
5
|
const sget = require('simple-get').concat
|
|
6
|
-
const stream = require('stream')
|
|
6
|
+
const stream = require('node:stream')
|
|
7
7
|
const Fastify = require('..')
|
|
8
8
|
const fp = require('fastify-plugin')
|
|
9
|
-
const fs = require('fs')
|
|
9
|
+
const fs = require('node:fs')
|
|
10
10
|
const split = require('split2')
|
|
11
11
|
const symbols = require('../lib/symbols.js')
|
|
12
12
|
const payload = { hello: 'world' }
|
|
13
13
|
const proxyquire = require('proxyquire')
|
|
14
|
-
const { promisify } = require('util')
|
|
15
|
-
const { connect } = require('net')
|
|
14
|
+
const { promisify } = require('node:util')
|
|
15
|
+
const { connect } = require('node:net')
|
|
16
16
|
|
|
17
17
|
const sleep = promisify(setTimeout)
|
|
18
18
|
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
const t = require('tap')
|
|
4
4
|
const Fastify = require('../..')
|
|
5
|
-
const http2 = require('http2')
|
|
6
|
-
const { promisify } = require('util')
|
|
5
|
+
const http2 = require('node:http2')
|
|
6
|
+
const { promisify } = require('node:util')
|
|
7
7
|
const connect = promisify(http2.connect)
|
|
8
|
-
const { once } = require('events')
|
|
8
|
+
const { once } = require('node:events')
|
|
9
9
|
|
|
10
10
|
const { buildCertificate } = require('../build-certificate')
|
|
11
11
|
t.before(buildCertificate)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
const t = require('tap')
|
|
4
4
|
const test = t.test
|
|
5
5
|
const proxyquire = require('proxyquire')
|
|
6
|
-
const server = proxyquire('../../lib/server', { http2: null })
|
|
6
|
+
const server = proxyquire('../../lib/server', { 'node:http2': null })
|
|
7
7
|
const Fastify = proxyquire('../..', { './lib/server.js': server })
|
|
8
8
|
|
|
9
9
|
test('should throw when http2 module cannot be found', t => {
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
const t = require('tap')
|
|
4
4
|
const test = t.test
|
|
5
5
|
const Fastify = require('../..')
|
|
6
|
-
const https = require('https')
|
|
6
|
+
const https = require('node:https')
|
|
7
7
|
const sget = require('simple-get').concat
|
|
8
|
-
const dns = require('dns').promises
|
|
8
|
+
const dns = require('node:dns').promises
|
|
9
9
|
|
|
10
10
|
const { buildCertificate } = require('../build-certificate')
|
|
11
11
|
t.before(buildCertificate)
|
package/test/inject.test.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
const t = require('tap')
|
|
4
4
|
const test = t.test
|
|
5
|
-
const Stream = require('stream')
|
|
6
|
-
const util = require('util')
|
|
5
|
+
const Stream = require('node:stream')
|
|
6
|
+
const util = require('node:util')
|
|
7
7
|
const Fastify = require('..')
|
|
8
8
|
const FormData = require('form-data')
|
|
9
|
-
const { Readable } = require('stream')
|
|
9
|
+
const { Readable } = require('node:stream')
|
|
10
10
|
|
|
11
11
|
test('inject should exist', t => {
|
|
12
12
|
t.plan(2)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
const t = require('tap')
|
|
4
4
|
const proxyquire = require('proxyquire')
|
|
5
5
|
const test = t.test
|
|
6
|
-
const { Readable } = require('stream')
|
|
6
|
+
const { Readable } = require('node:stream')
|
|
7
7
|
const { kTestInternals, kRouteContext } = require('../../lib/symbols')
|
|
8
8
|
const Request = require('../../lib/request')
|
|
9
9
|
const Reply = require('../../lib/reply')
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
const { test } = require('tap')
|
|
4
4
|
const errors = require('../../lib/errors')
|
|
5
|
-
const { readFileSync } = require('fs')
|
|
6
|
-
const { resolve } = require('path')
|
|
5
|
+
const { readFileSync } = require('node:fs')
|
|
6
|
+
const { resolve } = require('node:path')
|
|
7
7
|
|
|
8
8
|
test('should expose 78 errors', t => {
|
|
9
9
|
t.plan(1)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
const { test, before } = require('tap')
|
|
4
4
|
const Fastify = require('../..')
|
|
5
5
|
const helper = require('../helper')
|
|
6
|
-
const http = require('http')
|
|
6
|
+
const http = require('node:http')
|
|
7
7
|
const pino = require('pino')
|
|
8
8
|
const split = require('split2')
|
|
9
9
|
const deepClone = require('rfdc')({ circles: true, proto: false })
|
|
@@ -97,7 +97,7 @@ Queue.prototype.run = function run () {
|
|
|
97
97
|
test('The logger should error if both stream and file destination are given', t => {
|
|
98
98
|
t.plan(2)
|
|
99
99
|
|
|
100
|
-
const stream = require('stream').Writable
|
|
100
|
+
const stream = require('node:stream').Writable
|
|
101
101
|
|
|
102
102
|
try {
|
|
103
103
|
Fastify({
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
const t = require('tap')
|
|
4
4
|
const test = t.test
|
|
5
5
|
const sget = require('simple-get').concat
|
|
6
|
-
const http = require('http')
|
|
6
|
+
const http = require('node:http')
|
|
7
7
|
const NotFound = require('http-errors').NotFound
|
|
8
8
|
const Reply = require('../../lib/reply')
|
|
9
9
|
const Fastify = require('../..')
|
|
10
|
-
const { Readable, Writable } = require('stream')
|
|
10
|
+
const { Readable, Writable } = require('node:stream')
|
|
11
11
|
const {
|
|
12
12
|
kReplyErrorHandlerCalled,
|
|
13
13
|
kReplyHeaders,
|
|
@@ -16,8 +16,8 @@ const {
|
|
|
16
16
|
kReplySerializerDefault,
|
|
17
17
|
kRouteContext
|
|
18
18
|
} = require('../../lib/symbols')
|
|
19
|
-
const fs = require('fs')
|
|
20
|
-
const path = require('path')
|
|
19
|
+
const fs = require('node:fs')
|
|
20
|
+
const path = require('node:path')
|
|
21
21
|
const warning = require('../../lib/warnings')
|
|
22
22
|
|
|
23
23
|
const agent = new http.Agent({ keepAlive: false })
|
|
@@ -262,7 +262,7 @@ test('within an instance', t => {
|
|
|
262
262
|
reply.code(200)
|
|
263
263
|
reply.type('text/plain')
|
|
264
264
|
reply.serializer(function (body) {
|
|
265
|
-
return require('querystring').stringify(body)
|
|
265
|
+
return require('node:querystring').stringify(body)
|
|
266
266
|
})
|
|
267
267
|
reply.send({ hello: 'world!' })
|
|
268
268
|
})
|
|
@@ -612,8 +612,8 @@ test('stream using reply.raw.writeHead should return customize headers', t => {
|
|
|
612
612
|
t.plan(6)
|
|
613
613
|
|
|
614
614
|
const fastify = Fastify()
|
|
615
|
-
const fs = require('fs')
|
|
616
|
-
const path = require('path')
|
|
615
|
+
const fs = require('node:fs')
|
|
616
|
+
const path = require('node:path')
|
|
617
617
|
|
|
618
618
|
const streamPath = path.join(__dirname, '..', '..', 'package.json')
|
|
619
619
|
const stream = fs.createReadStream(streamPath)
|
|
@@ -4,12 +4,16 @@ const { test } = require('tap')
|
|
|
4
4
|
const { reqIdGenFactory } = require('../../lib/reqIdGenFactory')
|
|
5
5
|
|
|
6
6
|
test('should create incremental ids deterministically', t => {
|
|
7
|
-
t.plan(
|
|
7
|
+
t.plan(1)
|
|
8
8
|
const reqIdGen = reqIdGenFactory()
|
|
9
9
|
|
|
10
10
|
for (let i = 1; i < 1e4; ++i) {
|
|
11
|
-
|
|
11
|
+
if (reqIdGen() !== 'req-' + i.toString(36)) {
|
|
12
|
+
t.fail()
|
|
13
|
+
break
|
|
14
|
+
}
|
|
12
15
|
}
|
|
16
|
+
t.pass()
|
|
13
17
|
})
|
|
14
18
|
|
|
15
19
|
test('should have prefix "req-"', t => {
|
|
@@ -20,7 +20,7 @@ test('start listening', async t => {
|
|
|
20
20
|
|
|
21
21
|
test('DNS errors does not stop the main server on localhost - promise interface', async t => {
|
|
22
22
|
const { createServer } = proxyquire('../../lib/server', {
|
|
23
|
-
dns: {
|
|
23
|
+
'node:dns': {
|
|
24
24
|
lookup: (hostname, options, cb) => {
|
|
25
25
|
cb(new Error('DNS error'))
|
|
26
26
|
}
|
|
@@ -35,7 +35,7 @@ test('DNS errors does not stop the main server on localhost - promise interface'
|
|
|
35
35
|
test('DNS errors does not stop the main server on localhost - callback interface', t => {
|
|
36
36
|
t.plan(2)
|
|
37
37
|
const { createServer } = proxyquire('../../lib/server', {
|
|
38
|
-
dns: {
|
|
38
|
+
'node:dns': {
|
|
39
39
|
lookup: (hostname, options, cb) => {
|
|
40
40
|
cb(new Error('DNS error'))
|
|
41
41
|
}
|
|
@@ -52,7 +52,7 @@ test('DNS errors does not stop the main server on localhost - callback interface
|
|
|
52
52
|
test('DNS returns empty binding', t => {
|
|
53
53
|
t.plan(2)
|
|
54
54
|
const { createServer } = proxyquire('../../lib/server', {
|
|
55
|
-
dns: {
|
|
55
|
+
'node:dns': {
|
|
56
56
|
lookup: (hostname, options, cb) => {
|
|
57
57
|
cb(null, [])
|
|
58
58
|
}
|
|
@@ -69,7 +69,7 @@ test('DNS returns empty binding', t => {
|
|
|
69
69
|
test('DNS returns more than two binding', t => {
|
|
70
70
|
t.plan(2)
|
|
71
71
|
const { createServer } = proxyquire('../../lib/server', {
|
|
72
|
-
dns: {
|
|
72
|
+
'node:dns': {
|
|
73
73
|
lookup: (hostname, options, cb) => {
|
|
74
74
|
cb(null, [
|
|
75
75
|
{ address: '::1', family: 6 },
|
package/test/listen.test.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const os = require('os')
|
|
4
|
-
const path = require('path')
|
|
5
|
-
const fs = require('fs')
|
|
3
|
+
const os = require('node:os')
|
|
4
|
+
const path = require('node:path')
|
|
5
|
+
const fs = require('node:fs')
|
|
6
6
|
const { test, before } = require('tap')
|
|
7
|
-
const dns = require('dns').promises
|
|
8
|
-
const dnsCb = require('dns')
|
|
7
|
+
const dns = require('node:dns').promises
|
|
8
|
+
const dnsCb = require('node:dns')
|
|
9
9
|
const sget = require('simple-get').concat
|
|
10
10
|
const Fastify = require('..')
|
|
11
11
|
|
|
@@ -156,6 +156,20 @@ test('double listen errors callback with (err, address)', t => {
|
|
|
156
156
|
})
|
|
157
157
|
})
|
|
158
158
|
|
|
159
|
+
test('nonlocalhost double listen errors callback with (err, address)', t => {
|
|
160
|
+
t.plan(4)
|
|
161
|
+
const fastify = Fastify()
|
|
162
|
+
t.teardown(fastify.close.bind(fastify))
|
|
163
|
+
fastify.listen({ host: '::1', port: 0 }, (err, address) => {
|
|
164
|
+
t.equal(address, `http://${'[::1]'}:${fastify.server.address().port}`)
|
|
165
|
+
t.error(err)
|
|
166
|
+
fastify.listen({ host: '::1', port: fastify.server.address().port }, (err2, address2) => {
|
|
167
|
+
t.equal(address2, null)
|
|
168
|
+
t.ok(err2)
|
|
169
|
+
})
|
|
170
|
+
})
|
|
171
|
+
})
|
|
172
|
+
|
|
159
173
|
test('listen twice on the same port', t => {
|
|
160
174
|
t.plan(4)
|
|
161
175
|
const fastify = Fastify()
|
package/test/reply-error.test.js
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
const t = require('tap')
|
|
4
4
|
const test = t.test
|
|
5
|
-
const net = require('net')
|
|
5
|
+
const net = require('node:net')
|
|
6
6
|
const Fastify = require('..')
|
|
7
|
-
const statusCodes = require('http').STATUS_CODES
|
|
7
|
+
const statusCodes = require('node:http').STATUS_CODES
|
|
8
8
|
const split = require('split2')
|
|
9
|
-
const fs = require('fs')
|
|
10
|
-
const path = require('path')
|
|
9
|
+
const fs = require('node:fs')
|
|
10
|
+
const path = require('node:path')
|
|
11
11
|
|
|
12
12
|
const codes = Object.keys(statusCodes)
|
|
13
13
|
codes.forEach(code => {
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
const t = require('tap')
|
|
4
4
|
const test = t.test
|
|
5
5
|
const Fastify = require('..')
|
|
6
|
-
const { Readable } = require('stream')
|
|
7
|
-
const { createHash } = require('crypto')
|
|
8
|
-
const { promisify } = require('util')
|
|
6
|
+
const { Readable } = require('node:stream')
|
|
7
|
+
const { createHash } = require('node:crypto')
|
|
8
|
+
const { promisify } = require('node:util')
|
|
9
9
|
const sleep = promisify(setTimeout)
|
|
10
10
|
|
|
11
11
|
test('send trailers when payload is empty string', t => {
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
// Tests for some deprecated `request.*` keys. This file should be
|
|
4
|
+
// removed when the deprecation is complete.
|
|
5
|
+
|
|
6
|
+
process.removeAllListeners('warning')
|
|
7
|
+
|
|
8
|
+
const test = require('tap').test
|
|
9
|
+
const Fastify = require('../')
|
|
10
|
+
|
|
11
|
+
test('Should expose router options via getters on request and reply', t => {
|
|
12
|
+
t.plan(7)
|
|
13
|
+
const fastify = Fastify()
|
|
14
|
+
const expectedSchema = {
|
|
15
|
+
params: {
|
|
16
|
+
id: { type: 'integer' }
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
fastify.get('/test/:id', {
|
|
21
|
+
schema: expectedSchema
|
|
22
|
+
}, (req, reply) => {
|
|
23
|
+
t.equal(req.routeConfig.url, '/test/:id')
|
|
24
|
+
t.equal(req.routeConfig.method, 'GET')
|
|
25
|
+
t.same(req.routeSchema, expectedSchema)
|
|
26
|
+
t.equal(req.routerPath, '/test/:id')
|
|
27
|
+
t.equal(req.routerMethod, 'GET')
|
|
28
|
+
reply.send()
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
fastify.inject({
|
|
32
|
+
method: 'GET',
|
|
33
|
+
url: '/test/123456789'
|
|
34
|
+
}, (error, res) => {
|
|
35
|
+
t.error(error)
|
|
36
|
+
t.equal(res.statusCode, 200)
|
|
37
|
+
})
|
|
38
|
+
})
|
package/test/route-hooks.test.js
CHANGED
package/test/route.test.js
CHANGED
|
@@ -92,7 +92,7 @@ test('Should honor maxParamLength option', t => {
|
|
|
92
92
|
})
|
|
93
93
|
|
|
94
94
|
test('Should expose router options via getters on request and reply', t => {
|
|
95
|
-
t.plan(
|
|
95
|
+
t.plan(9)
|
|
96
96
|
const fastify = Fastify()
|
|
97
97
|
const expectedSchema = {
|
|
98
98
|
params: {
|
|
@@ -105,11 +105,10 @@ test('Should expose router options via getters on request and reply', t => {
|
|
|
105
105
|
}, (req, reply) => {
|
|
106
106
|
t.equal(reply.context.config.url, '/test/:id')
|
|
107
107
|
t.equal(reply.context.config.method, 'GET')
|
|
108
|
-
t.
|
|
109
|
-
t.equal(req.
|
|
110
|
-
t.
|
|
111
|
-
t.equal(req.
|
|
112
|
-
t.equal(req.routerMethod, 'GET')
|
|
108
|
+
t.same(req.routeOptions.schema, expectedSchema)
|
|
109
|
+
t.equal(typeof req.routeOptions.handler, 'function')
|
|
110
|
+
t.equal(req.routeOptions.config.url, '/test/:id')
|
|
111
|
+
t.equal(req.routeOptions.config.method, 'GET')
|
|
113
112
|
t.equal(req.is404, false)
|
|
114
113
|
reply.send({ hello: 'world' })
|
|
115
114
|
})
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const http = require('http')
|
|
4
|
-
const stream = require('stream')
|
|
5
|
-
const os = require('os')
|
|
6
|
-
const fs = require('fs')
|
|
3
|
+
const http = require('node:http')
|
|
4
|
+
const stream = require('node:stream')
|
|
5
|
+
const os = require('node:os')
|
|
6
|
+
const fs = require('node:fs')
|
|
7
7
|
|
|
8
8
|
const t = require('tap')
|
|
9
9
|
const split = require('split2')
|
|
10
10
|
const pino = require('pino')
|
|
11
|
-
const path = require('path')
|
|
11
|
+
const path = require('node:path')
|
|
12
12
|
const { streamSym } = require('pino/lib/symbols')
|
|
13
13
|
|
|
14
14
|
const Fastify = require('../../fastify')
|
package/test/stream.test.js
CHANGED
|
@@ -4,15 +4,15 @@ const t = require('tap')
|
|
|
4
4
|
const test = t.test
|
|
5
5
|
const proxyquire = require('proxyquire')
|
|
6
6
|
const sget = require('simple-get').concat
|
|
7
|
-
const fs = require('fs')
|
|
8
|
-
const resolve = require('path').resolve
|
|
9
|
-
const zlib = require('zlib')
|
|
10
|
-
const pipeline = require('stream').pipeline
|
|
7
|
+
const fs = require('node:fs')
|
|
8
|
+
const resolve = require('node:path').resolve
|
|
9
|
+
const zlib = require('node:zlib')
|
|
10
|
+
const pipeline = require('node:stream').pipeline
|
|
11
11
|
const Fastify = require('..')
|
|
12
12
|
const errors = require('http-errors')
|
|
13
13
|
const JSONStream = require('JSONStream')
|
|
14
14
|
const send = require('send')
|
|
15
|
-
const Readable = require('stream').Readable
|
|
15
|
+
const Readable = require('node:stream').Readable
|
|
16
16
|
const split = require('split2')
|
|
17
17
|
const semver = require('semver')
|
|
18
18
|
const { kDisableRequestLogging } = require('../lib/symbols.js')
|
|
@@ -164,7 +164,7 @@ test('onSend hook stream should work even if payload is not a proper stream', t
|
|
|
164
164
|
t.plan(1)
|
|
165
165
|
|
|
166
166
|
const reply = proxyquire('../lib/reply', {
|
|
167
|
-
stream: {
|
|
167
|
+
'node:stream': {
|
|
168
168
|
finished: (...args) => {
|
|
169
169
|
if (args.length === 2) { args[1](new Error('test-error')) }
|
|
170
170
|
}
|
|
@@ -205,7 +205,7 @@ test('onSend hook stream should work on payload with "close" ending function', t
|
|
|
205
205
|
t.plan(1)
|
|
206
206
|
|
|
207
207
|
const reply = proxyquire('../lib/reply', {
|
|
208
|
-
stream: {
|
|
208
|
+
'node:stream': {
|
|
209
209
|
finished: (...args) => {
|
|
210
210
|
if (args.length === 2) { args[1](new Error('test-error')) }
|
|
211
211
|
}
|
|
@@ -251,8 +251,8 @@ test('Destroying streams prematurely', t => {
|
|
|
251
251
|
} catch (e) {
|
|
252
252
|
t.fail()
|
|
253
253
|
}
|
|
254
|
-
const stream = require('stream')
|
|
255
|
-
const http = require('http')
|
|
254
|
+
const stream = require('node:stream')
|
|
255
|
+
const http = require('node:http')
|
|
256
256
|
|
|
257
257
|
// Test that "premature close" errors are logged with level warn
|
|
258
258
|
logStream.on('data', line => {
|
|
@@ -313,8 +313,8 @@ test('Destroying streams prematurely should call close method', t => {
|
|
|
313
313
|
} catch (e) {
|
|
314
314
|
t.fail()
|
|
315
315
|
}
|
|
316
|
-
const stream = require('stream')
|
|
317
|
-
const http = require('http')
|
|
316
|
+
const stream = require('node:stream')
|
|
317
|
+
const http = require('node:http')
|
|
318
318
|
|
|
319
319
|
// Test that "premature close" errors are logged with level warn
|
|
320
320
|
logStream.on('data', line => {
|
|
@@ -375,8 +375,8 @@ test('Destroying streams prematurely should call close method when destroy is no
|
|
|
375
375
|
} catch (e) {
|
|
376
376
|
t.fail()
|
|
377
377
|
}
|
|
378
|
-
const stream = require('stream')
|
|
379
|
-
const http = require('http')
|
|
378
|
+
const stream = require('node:stream')
|
|
379
|
+
const http = require('node:http')
|
|
380
380
|
|
|
381
381
|
// Test that "premature close" errors are logged with level warn
|
|
382
382
|
logStream.on('data', line => {
|
|
@@ -437,8 +437,8 @@ test('Destroying streams prematurely should call abort method', t => {
|
|
|
437
437
|
} catch (e) {
|
|
438
438
|
t.fail()
|
|
439
439
|
}
|
|
440
|
-
const stream = require('stream')
|
|
441
|
-
const http = require('http')
|
|
440
|
+
const stream = require('node:stream')
|
|
441
|
+
const http = require('node:http')
|
|
442
442
|
|
|
443
443
|
// Test that "premature close" errors are logged with level warn
|
|
444
444
|
logStream.on('data', line => {
|
|
@@ -496,8 +496,8 @@ test('Destroying streams prematurely, log is disabled', t => {
|
|
|
496
496
|
} catch (e) {
|
|
497
497
|
t.fail()
|
|
498
498
|
}
|
|
499
|
-
const stream = require('stream')
|
|
500
|
-
const http = require('http')
|
|
499
|
+
const stream = require('node:stream')
|
|
500
|
+
const http = require('node:http')
|
|
501
501
|
|
|
502
502
|
fastify.get('/', function (request, reply) {
|
|
503
503
|
reply.log[kDisableRequestLogging] = true
|
|
@@ -632,7 +632,7 @@ test('should support send module 200 and 404', { skip: semver.gte(process.versio
|
|
|
632
632
|
|
|
633
633
|
test('should destroy stream when response is ended', t => {
|
|
634
634
|
t.plan(4)
|
|
635
|
-
const stream = require('stream')
|
|
635
|
+
const stream = require('node:stream')
|
|
636
636
|
const fastify = Fastify()
|
|
637
637
|
|
|
638
638
|
fastify.get('/error', function (req, reply) {
|
|
@@ -729,7 +729,7 @@ test('reply.send handles aborted requests', t => {
|
|
|
729
729
|
t.teardown(() => { fastify.close() })
|
|
730
730
|
|
|
731
731
|
const port = fastify.server.address().port
|
|
732
|
-
const http = require('http')
|
|
732
|
+
const http = require('node:http')
|
|
733
733
|
const req = http.get(`http://localhost:${port}`)
|
|
734
734
|
.on('error', (err) => {
|
|
735
735
|
t.equal(err.code, 'ECONNRESET')
|
|
@@ -782,7 +782,7 @@ test('request terminated should not crash fastify', t => {
|
|
|
782
782
|
t.teardown(() => { fastify.close() })
|
|
783
783
|
|
|
784
784
|
const port = fastify.server.address().port
|
|
785
|
-
const http = require('http')
|
|
785
|
+
const http = require('node:http')
|
|
786
786
|
const req = http.get(`http://localhost:${port}`, function (res) {
|
|
787
787
|
const { statusCode, headers } = res
|
|
788
788
|
t.equal(statusCode, 200)
|
package/test/trust-proxy.test.js
CHANGED
|
@@ -4,7 +4,7 @@ const t = require('tap')
|
|
|
4
4
|
const { test, before } = t
|
|
5
5
|
const sget = require('simple-get').concat
|
|
6
6
|
const fastify = require('..')
|
|
7
|
-
const dns = require('dns').promises
|
|
7
|
+
const dns = require('node:dns').promises
|
|
8
8
|
|
|
9
9
|
const sgetForwardedRequest = (app, forHeader, path, protoHeader) => {
|
|
10
10
|
const headers = {
|
|
@@ -142,6 +142,12 @@ server.addHook('onReady', function (done) {
|
|
|
142
142
|
expectType<void>(done(new Error()))
|
|
143
143
|
})
|
|
144
144
|
|
|
145
|
+
server.addHook('onListen', function (done) {
|
|
146
|
+
expectType<FastifyInstance>(this)
|
|
147
|
+
expectAssignable<(err?: FastifyError) => void>(done)
|
|
148
|
+
expectAssignable<(err?: NodeJS.ErrnoException) => void>(done)
|
|
149
|
+
})
|
|
150
|
+
|
|
145
151
|
server.addHook('onClose', (instance, done) => {
|
|
146
152
|
expectType<FastifyInstance>(instance)
|
|
147
153
|
expectAssignable<(err?: FastifyError) => void>(done)
|
|
@@ -223,6 +229,10 @@ server.addHook('onReady', async function () {
|
|
|
223
229
|
expectType<FastifyInstance>(this)
|
|
224
230
|
})
|
|
225
231
|
|
|
232
|
+
server.addHook('onListen', async function () {
|
|
233
|
+
expectType<FastifyInstance>(this)
|
|
234
|
+
})
|
|
235
|
+
|
|
226
236
|
server.addHook('onClose', async (instance) => {
|
|
227
237
|
expectType<FastifyInstance>(instance)
|
|
228
238
|
})
|
|
@@ -396,6 +406,7 @@ server.addHook('preClose', async function () {
|
|
|
396
406
|
expectError(server.addHook('onClose', async function (instance, done) {}))
|
|
397
407
|
expectError(server.addHook('onError', async function (request, reply, error, done) {}))
|
|
398
408
|
expectError(server.addHook('onReady', async function (done) {}))
|
|
409
|
+
expectError(server.addHook('onListen', async function (done) {}))
|
|
399
410
|
expectError(server.addHook('onRequest', async function (request, reply, done) {}))
|
|
400
411
|
expectError(server.addHook('onRequestAbort', async function (request, done) {}))
|
|
401
412
|
expectError(server.addHook('onResponse', async function (request, reply, done) {}))
|