node-fastify 5.8.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/.borp.yaml +3 -0
- package/.markdownlint-cli2.yaml +22 -0
- package/.prettierignore +1 -0
- package/GOVERNANCE.md +4 -0
- package/LICENSE +21 -0
- package/PROJECT_CHARTER.md +126 -0
- package/README.md +423 -0
- package/SECURITY.md +220 -0
- package/SPONSORS.md +24 -0
- package/build/build-error-serializer.js +35 -0
- package/build/build-validation.js +169 -0
- package/build/sync-version.js +11 -0
- package/docs/Guides/Benchmarking.md +60 -0
- package/docs/Guides/Database.md +321 -0
- package/docs/Guides/Delay-Accepting-Requests.md +608 -0
- package/docs/Guides/Detecting-When-Clients-Abort.md +172 -0
- package/docs/Guides/Ecosystem.md +726 -0
- package/docs/Guides/Fluent-Schema.md +127 -0
- package/docs/Guides/Getting-Started.md +620 -0
- package/docs/Guides/Index.md +43 -0
- package/docs/Guides/Migration-Guide-V3.md +287 -0
- package/docs/Guides/Migration-Guide-V4.md +267 -0
- package/docs/Guides/Migration-Guide-V5.md +727 -0
- package/docs/Guides/Plugins-Guide.md +520 -0
- package/docs/Guides/Prototype-Poisoning.md +383 -0
- package/docs/Guides/Recommendations.md +378 -0
- package/docs/Guides/Serverless.md +604 -0
- package/docs/Guides/Style-Guide.md +246 -0
- package/docs/Guides/Testing.md +481 -0
- package/docs/Guides/Write-Plugin.md +103 -0
- package/docs/Guides/Write-Type-Provider.md +34 -0
- package/docs/Reference/ContentTypeParser.md +271 -0
- package/docs/Reference/Decorators.md +436 -0
- package/docs/Reference/Encapsulation.md +194 -0
- package/docs/Reference/Errors.md +377 -0
- package/docs/Reference/HTTP2.md +94 -0
- package/docs/Reference/Hooks.md +958 -0
- package/docs/Reference/Index.md +73 -0
- package/docs/Reference/LTS.md +86 -0
- package/docs/Reference/Lifecycle.md +99 -0
- package/docs/Reference/Logging.md +268 -0
- package/docs/Reference/Middleware.md +79 -0
- package/docs/Reference/Plugins.md +245 -0
- package/docs/Reference/Principles.md +73 -0
- package/docs/Reference/Reply.md +1001 -0
- package/docs/Reference/Request.md +295 -0
- package/docs/Reference/Routes.md +802 -0
- package/docs/Reference/Server.md +2389 -0
- package/docs/Reference/Type-Providers.md +256 -0
- package/docs/Reference/TypeScript.md +1729 -0
- package/docs/Reference/Validation-and-Serialization.md +1130 -0
- package/docs/Reference/Warnings.md +58 -0
- package/docs/index.md +24 -0
- package/docs/resources/encapsulation_context.drawio +1 -0
- package/docs/resources/encapsulation_context.svg +3 -0
- package/eslint.config.js +35 -0
- package/examples/asyncawait.js +38 -0
- package/examples/benchmark/body.json +3 -0
- package/examples/benchmark/hooks-benchmark-async-await.js +44 -0
- package/examples/benchmark/hooks-benchmark.js +52 -0
- package/examples/benchmark/parser.js +47 -0
- package/examples/benchmark/simple.js +30 -0
- package/examples/benchmark/webstream.js +27 -0
- package/examples/hooks.js +91 -0
- package/examples/http2.js +39 -0
- package/examples/https.js +38 -0
- package/examples/parser.js +53 -0
- package/examples/plugin.js +12 -0
- package/examples/route-prefix.js +38 -0
- package/examples/shared-schema.js +38 -0
- package/examples/simple-stream.js +20 -0
- package/examples/simple.js +32 -0
- package/examples/simple.mjs +27 -0
- package/examples/typescript-server.ts +79 -0
- package/examples/use-plugin.js +29 -0
- package/fastify.d.ts +253 -0
- package/fastify.js +985 -0
- package/integration/server.js +29 -0
- package/integration/test.sh +23 -0
- package/lib/config-validator.js +1266 -0
- package/lib/content-type-parser.js +413 -0
- package/lib/content-type.js +160 -0
- package/lib/context.js +98 -0
- package/lib/decorate.js +152 -0
- package/lib/error-handler.js +173 -0
- package/lib/error-serializer.js +134 -0
- package/lib/error-status.js +14 -0
- package/lib/errors.js +516 -0
- package/lib/four-oh-four.js +190 -0
- package/lib/handle-request.js +195 -0
- package/lib/head-route.js +45 -0
- package/lib/hooks.js +429 -0
- package/lib/initial-config-validation.js +37 -0
- package/lib/logger-factory.js +136 -0
- package/lib/logger-pino.js +68 -0
- package/lib/noop-set.js +10 -0
- package/lib/plugin-override.js +90 -0
- package/lib/plugin-utils.js +169 -0
- package/lib/promise.js +23 -0
- package/lib/reply.js +1030 -0
- package/lib/req-id-gen-factory.js +52 -0
- package/lib/request.js +391 -0
- package/lib/route.js +686 -0
- package/lib/schema-controller.js +164 -0
- package/lib/schemas.js +207 -0
- package/lib/server.js +441 -0
- package/lib/symbols.js +71 -0
- package/lib/validation.js +280 -0
- package/lib/warnings.js +57 -0
- package/lib/wrap-thenable.js +84 -0
- package/package.json +225 -0
- package/scripts/validate-ecosystem-links.js +179 -0
- package/test/404s.test.js +2035 -0
- package/test/500s.test.js +422 -0
- package/test/allow-unsafe-regex.test.js +92 -0
- package/test/als.test.js +65 -0
- package/test/async-await.test.js +705 -0
- package/test/async-dispose.test.js +20 -0
- package/test/async_hooks.test.js +52 -0
- package/test/body-limit.test.js +224 -0
- package/test/buffer.test.js +74 -0
- package/test/build/error-serializer.test.js +36 -0
- package/test/build/version.test.js +14 -0
- package/test/build-certificate.js +109 -0
- package/test/bundler/README.md +29 -0
- package/test/bundler/esbuild/bundler-test.js +32 -0
- package/test/bundler/esbuild/package.json +10 -0
- package/test/bundler/esbuild/src/fail-plugin-version.js +14 -0
- package/test/bundler/esbuild/src/index.js +9 -0
- package/test/bundler/webpack/bundler-test.js +32 -0
- package/test/bundler/webpack/package.json +11 -0
- package/test/bundler/webpack/src/fail-plugin-version.js +14 -0
- package/test/bundler/webpack/src/index.js +9 -0
- package/test/bundler/webpack/webpack.config.js +15 -0
- package/test/case-insensitive.test.js +102 -0
- package/test/chainable.test.js +40 -0
- package/test/child-logger-factory.test.js +128 -0
- package/test/client-timeout.test.js +38 -0
- package/test/close-pipelining.test.js +78 -0
- package/test/close.test.js +706 -0
- package/test/conditional-pino.test.js +47 -0
- package/test/connection-timeout.test.js +42 -0
- package/test/constrained-routes.test.js +1138 -0
- package/test/content-length.test.js +174 -0
- package/test/content-parser.test.js +739 -0
- package/test/content-type.test.js +181 -0
- package/test/context-config.test.js +164 -0
- package/test/custom-http-server.test.js +118 -0
- package/test/custom-parser-async.test.js +59 -0
- package/test/custom-parser.0.test.js +701 -0
- package/test/custom-parser.1.test.js +266 -0
- package/test/custom-parser.2.test.js +91 -0
- package/test/custom-parser.3.test.js +208 -0
- package/test/custom-parser.4.test.js +218 -0
- package/test/custom-parser.5.test.js +130 -0
- package/test/custom-querystring-parser.test.js +129 -0
- package/test/decorator.test.js +1330 -0
- package/test/delete.test.js +344 -0
- package/test/diagnostics-channel/404.test.js +49 -0
- package/test/diagnostics-channel/async-delay-request.test.js +65 -0
- package/test/diagnostics-channel/async-request.test.js +64 -0
- package/test/diagnostics-channel/error-before-handler.test.js +35 -0
- package/test/diagnostics-channel/error-request.test.js +53 -0
- package/test/diagnostics-channel/error-status.test.js +123 -0
- package/test/diagnostics-channel/init.test.js +50 -0
- package/test/diagnostics-channel/sync-delay-request.test.js +49 -0
- package/test/diagnostics-channel/sync-request-reply.test.js +51 -0
- package/test/diagnostics-channel/sync-request.test.js +54 -0
- package/test/encapsulated-child-logger-factory.test.js +69 -0
- package/test/encapsulated-error-handler.test.js +237 -0
- package/test/esm/errorCodes.test.mjs +10 -0
- package/test/esm/esm.test.mjs +13 -0
- package/test/esm/index.test.js +8 -0
- package/test/esm/named-exports.mjs +14 -0
- package/test/esm/other.mjs +8 -0
- package/test/esm/plugin.mjs +8 -0
- package/test/fastify-instance.test.js +300 -0
- package/test/find-route.test.js +152 -0
- package/test/fluent-schema.test.js +209 -0
- package/test/genReqId.test.js +426 -0
- package/test/handler-context.test.js +45 -0
- package/test/handler-timeout.test.js +367 -0
- package/test/has-route.test.js +88 -0
- package/test/header-overflow.test.js +55 -0
- package/test/helper.js +496 -0
- package/test/hooks-async.test.js +1099 -0
- package/test/hooks.on-listen.test.js +1162 -0
- package/test/hooks.on-ready.test.js +421 -0
- package/test/hooks.test.js +3578 -0
- package/test/http-methods/copy.test.js +35 -0
- package/test/http-methods/custom-http-methods.test.js +114 -0
- package/test/http-methods/get.test.js +412 -0
- package/test/http-methods/head.test.js +263 -0
- package/test/http-methods/lock.test.js +108 -0
- package/test/http-methods/mkcalendar.test.js +143 -0
- package/test/http-methods/mkcol.test.js +35 -0
- package/test/http-methods/move.test.js +42 -0
- package/test/http-methods/propfind.test.js +136 -0
- package/test/http-methods/proppatch.test.js +105 -0
- package/test/http-methods/report.test.js +142 -0
- package/test/http-methods/search.test.js +233 -0
- package/test/http-methods/trace.test.js +21 -0
- package/test/http-methods/unlock.test.js +38 -0
- package/test/http2/closing.test.js +270 -0
- package/test/http2/constraint.test.js +109 -0
- package/test/http2/head.test.js +34 -0
- package/test/http2/plain.test.js +68 -0
- package/test/http2/secure-with-fallback.test.js +113 -0
- package/test/http2/secure.test.js +67 -0
- package/test/http2/unknown-http-method.test.js +34 -0
- package/test/https/custom-https-server.test.js +58 -0
- package/test/https/https.test.js +136 -0
- package/test/imports.test.js +17 -0
- package/test/inject.test.js +502 -0
- package/test/input-validation.js +335 -0
- package/test/internals/all.test.js +38 -0
- package/test/internals/content-type-parser.test.js +111 -0
- package/test/internals/context.test.js +31 -0
- package/test/internals/decorator.test.js +156 -0
- package/test/internals/errors.test.js +982 -0
- package/test/internals/handle-request.test.js +270 -0
- package/test/internals/hook-runner.test.js +449 -0
- package/test/internals/hooks.test.js +96 -0
- package/test/internals/initial-config.test.js +383 -0
- package/test/internals/logger.test.js +163 -0
- package/test/internals/plugin.test.js +170 -0
- package/test/internals/promise.test.js +63 -0
- package/test/internals/reply-serialize.test.js +714 -0
- package/test/internals/reply.test.js +1920 -0
- package/test/internals/req-id-gen-factory.test.js +133 -0
- package/test/internals/request-validate.test.js +1402 -0
- package/test/internals/request.test.js +506 -0
- package/test/internals/schema-controller-perf.test.js +40 -0
- package/test/internals/server.test.js +91 -0
- package/test/internals/validation.test.js +352 -0
- package/test/issue-4959.test.js +118 -0
- package/test/keep-alive-timeout.test.js +42 -0
- package/test/listen.1.test.js +154 -0
- package/test/listen.2.test.js +113 -0
- package/test/listen.3.test.js +83 -0
- package/test/listen.4.test.js +168 -0
- package/test/listen.5.test.js +122 -0
- package/test/logger/instantiation.test.js +341 -0
- package/test/logger/logger-test-utils.js +47 -0
- package/test/logger/logging.test.js +460 -0
- package/test/logger/options.test.js +579 -0
- package/test/logger/request.test.js +292 -0
- package/test/logger/response.test.js +183 -0
- package/test/logger/tap-parallel-not-ok +0 -0
- package/test/max-requests-per-socket.test.js +113 -0
- package/test/middleware.test.js +37 -0
- package/test/noop-set.test.js +19 -0
- package/test/nullable-validation.test.js +187 -0
- package/test/options.error-handler.test.js +5 -0
- package/test/options.test.js +5 -0
- package/test/output-validation.test.js +140 -0
- package/test/patch.error-handler.test.js +5 -0
- package/test/patch.test.js +5 -0
- package/test/plugin.1.test.js +230 -0
- package/test/plugin.2.test.js +314 -0
- package/test/plugin.3.test.js +287 -0
- package/test/plugin.4.test.js +504 -0
- package/test/plugin.helper.js +8 -0
- package/test/plugin.name.display.js +10 -0
- package/test/post-empty-body.test.js +38 -0
- package/test/pretty-print.test.js +366 -0
- package/test/promises.test.js +125 -0
- package/test/proto-poisoning.test.js +145 -0
- package/test/put.error-handler.test.js +5 -0
- package/test/put.test.js +5 -0
- package/test/register.test.js +184 -0
- package/test/reply-code.test.js +148 -0
- package/test/reply-early-hints.test.js +100 -0
- package/test/reply-error.test.js +815 -0
- package/test/reply-trailers.test.js +445 -0
- package/test/reply-web-stream-locked.test.js +37 -0
- package/test/request-error.test.js +624 -0
- package/test/request-header-host.test.js +339 -0
- package/test/request-id.test.js +118 -0
- package/test/request-timeout.test.js +53 -0
- package/test/route-hooks.test.js +635 -0
- package/test/route-prefix.test.js +904 -0
- package/test/route-shorthand.test.js +48 -0
- package/test/route.1.test.js +259 -0
- package/test/route.2.test.js +100 -0
- package/test/route.3.test.js +213 -0
- package/test/route.4.test.js +127 -0
- package/test/route.5.test.js +211 -0
- package/test/route.6.test.js +306 -0
- package/test/route.7.test.js +406 -0
- package/test/route.8.test.js +225 -0
- package/test/router-options.test.js +1108 -0
- package/test/same-shape.test.js +124 -0
- package/test/schema-examples.test.js +661 -0
- package/test/schema-feature.test.js +2198 -0
- package/test/schema-serialization.test.js +1171 -0
- package/test/schema-special-usage.test.js +1348 -0
- package/test/schema-validation.test.js +1572 -0
- package/test/scripts/validate-ecosystem-links.test.js +339 -0
- package/test/serialize-response.test.js +186 -0
- package/test/server.test.js +347 -0
- package/test/set-error-handler.test.js +69 -0
- package/test/skip-reply-send.test.js +317 -0
- package/test/stream-serializers.test.js +40 -0
- package/test/stream.1.test.js +94 -0
- package/test/stream.2.test.js +129 -0
- package/test/stream.3.test.js +198 -0
- package/test/stream.4.test.js +176 -0
- package/test/stream.5.test.js +188 -0
- package/test/sync-routes.test.js +32 -0
- package/test/throw.test.js +359 -0
- package/test/toolkit.js +63 -0
- package/test/trust-proxy.test.js +162 -0
- package/test/type-provider.test.js +22 -0
- package/test/types/content-type-parser.test-d.ts +72 -0
- package/test/types/decorate-request-reply.test-d.ts +18 -0
- package/test/types/dummy-plugin.ts +9 -0
- package/test/types/errors.test-d.ts +90 -0
- package/test/types/fastify.test-d.ts +352 -0
- package/test/types/hooks.test-d.ts +550 -0
- package/test/types/import.ts +2 -0
- package/test/types/instance.test-d.ts +588 -0
- package/test/types/logger.test-d.ts +277 -0
- package/test/types/plugin.test-d.ts +97 -0
- package/test/types/register.test-d.ts +237 -0
- package/test/types/reply.test-d.ts +254 -0
- package/test/types/request.test-d.ts +188 -0
- package/test/types/route.test-d.ts +553 -0
- package/test/types/schema.test-d.ts +135 -0
- package/test/types/serverFactory.test-d.ts +37 -0
- package/test/types/type-provider.test-d.ts +1213 -0
- package/test/types/using.test-d.ts +17 -0
- package/test/upgrade.test.js +52 -0
- package/test/url-rewriting.test.js +122 -0
- package/test/use-semicolon-delimiter.test.js +168 -0
- package/test/validation-error-handling.test.js +900 -0
- package/test/versioned-routes.test.js +603 -0
- package/test/web-api.test.js +616 -0
- package/test/wrap-thenable.test.js +30 -0
- package/types/content-type-parser.d.ts +75 -0
- package/types/context.d.ts +22 -0
- package/types/errors.d.ts +92 -0
- package/types/hooks.d.ts +875 -0
- package/types/instance.d.ts +609 -0
- package/types/logger.d.ts +107 -0
- package/types/plugin.d.ts +44 -0
- package/types/register.d.ts +42 -0
- package/types/reply.d.ts +81 -0
- package/types/request.d.ts +95 -0
- package/types/route.d.ts +199 -0
- package/types/schema.d.ts +61 -0
- package/types/server-factory.d.ts +19 -0
- package/types/type-provider.d.ts +130 -0
- package/types/utils.d.ts +98 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const fastify = require('../fastify')({ logger: true })
|
|
4
|
+
|
|
5
|
+
const opts = {
|
|
6
|
+
schema: {
|
|
7
|
+
response: {
|
|
8
|
+
'2xx': {
|
|
9
|
+
type: 'object',
|
|
10
|
+
properties: {
|
|
11
|
+
greet: { type: 'string' }
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
fastify.register(function (instance, options, done) {
|
|
19
|
+
// the route will be '/english/hello'
|
|
20
|
+
instance.get('/hello', opts, (req, reply) => {
|
|
21
|
+
reply.send({ greet: 'hello' })
|
|
22
|
+
})
|
|
23
|
+
done()
|
|
24
|
+
}, { prefix: '/english' })
|
|
25
|
+
|
|
26
|
+
fastify.register(function (instance, options, done) {
|
|
27
|
+
// the route will be '/italian/hello'
|
|
28
|
+
instance.get('/hello', opts, (req, reply) => {
|
|
29
|
+
reply.send({ greet: 'ciao' })
|
|
30
|
+
})
|
|
31
|
+
done()
|
|
32
|
+
}, { prefix: '/italian' })
|
|
33
|
+
|
|
34
|
+
fastify.listen({ port: 8000 }, function (err) {
|
|
35
|
+
if (err) {
|
|
36
|
+
throw err
|
|
37
|
+
}
|
|
38
|
+
})
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const fastify = require('../fastify')({ logger: true })
|
|
4
|
+
|
|
5
|
+
fastify.addSchema({
|
|
6
|
+
$id: 'https://foo/common.json',
|
|
7
|
+
definitions: {
|
|
8
|
+
response: {
|
|
9
|
+
$id: '#reply',
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
hello: {
|
|
13
|
+
$id: '#bar',
|
|
14
|
+
type: 'string'
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
const opts = {
|
|
22
|
+
schema: {
|
|
23
|
+
response: {
|
|
24
|
+
200: { $ref: 'https://foo/common.json#reply' }
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
fastify
|
|
30
|
+
.get('/', opts, function (req, reply) {
|
|
31
|
+
reply.send({ hello: 'world' })
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
fastify.listen({ port: 3000 }, err => {
|
|
35
|
+
if (err) {
|
|
36
|
+
throw err
|
|
37
|
+
}
|
|
38
|
+
})
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const fastify = require('../fastify')({
|
|
4
|
+
logger: false
|
|
5
|
+
})
|
|
6
|
+
|
|
7
|
+
const Readable = require('node:stream').Readable
|
|
8
|
+
|
|
9
|
+
fastify
|
|
10
|
+
.get('/', function (req, reply) {
|
|
11
|
+
const stream = Readable.from(['hello world'])
|
|
12
|
+
reply.send(stream)
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
fastify.listen({ port: 3000 }, (err, address) => {
|
|
16
|
+
if (err) {
|
|
17
|
+
throw err
|
|
18
|
+
}
|
|
19
|
+
fastify.log.info(`server listening on ${address}`)
|
|
20
|
+
})
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const fastify = require('../fastify')({
|
|
4
|
+
logger: false
|
|
5
|
+
})
|
|
6
|
+
|
|
7
|
+
const schema = {
|
|
8
|
+
schema: {
|
|
9
|
+
response: {
|
|
10
|
+
200: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
hello: {
|
|
14
|
+
type: 'string'
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
fastify
|
|
23
|
+
.get('/', schema, function (req, reply) {
|
|
24
|
+
reply
|
|
25
|
+
.send({ hello: 'world' })
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
fastify.listen({ port: 3000 }, (err, address) => {
|
|
29
|
+
if (err) {
|
|
30
|
+
throw err
|
|
31
|
+
}
|
|
32
|
+
})
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// works on Node v14.13.0+
|
|
2
|
+
import { fastify } from '../fastify.js'
|
|
3
|
+
|
|
4
|
+
const app = fastify({
|
|
5
|
+
logger: true
|
|
6
|
+
})
|
|
7
|
+
|
|
8
|
+
const schema = {
|
|
9
|
+
schema: {
|
|
10
|
+
response: {
|
|
11
|
+
200: {
|
|
12
|
+
type: 'object',
|
|
13
|
+
properties: {
|
|
14
|
+
hello: {
|
|
15
|
+
type: 'string'
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
app.get('/', schema, async function (req, reply) {
|
|
24
|
+
return { hello: 'world' }
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
app.listen({ port: 3000 }).catch(console.error)
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Most type annotations in this file are not strictly necessary but are
|
|
3
|
+
* included for this example.
|
|
4
|
+
*
|
|
5
|
+
* To run this example execute the following commands to install typescript,
|
|
6
|
+
* transpile the code, and start the server:
|
|
7
|
+
*
|
|
8
|
+
* npm i -g typescript
|
|
9
|
+
* tsc examples/typescript-server.ts --target es6 --module commonjs
|
|
10
|
+
* node examples/typescript-server.js
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import fastify, { FastifyInstance, RouteShorthandOptions } from '../fastify'
|
|
14
|
+
import { Server, IncomingMessage, ServerResponse } from 'node:http'
|
|
15
|
+
|
|
16
|
+
// Create an http server. We pass the relevant typings for our http version used.
|
|
17
|
+
// By passing types we get correctly typed access to the underlying http objects in routes.
|
|
18
|
+
// If using http2 we'd pass <http2.Http2Server, http2.Http2ServerRequest, http2.Http2ServerResponse>
|
|
19
|
+
const server: FastifyInstance<
|
|
20
|
+
Server,
|
|
21
|
+
IncomingMessage,
|
|
22
|
+
ServerResponse
|
|
23
|
+
> = fastify({ logger: true })
|
|
24
|
+
|
|
25
|
+
// Define interfaces for our request. We can create these automatically
|
|
26
|
+
// off our JSON Schema files (See TypeScript.md) but for the purpose of this
|
|
27
|
+
// example we manually define them.
|
|
28
|
+
interface PingQuerystring {
|
|
29
|
+
foo?: number;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
interface PingParams {
|
|
33
|
+
bar?: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
interface PingHeaders {
|
|
37
|
+
a?: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
interface PingBody {
|
|
41
|
+
baz?: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Define our route options with schema validation
|
|
45
|
+
const opts: RouteShorthandOptions = {
|
|
46
|
+
schema: {
|
|
47
|
+
body: {
|
|
48
|
+
type: 'object',
|
|
49
|
+
properties: {
|
|
50
|
+
pong: {
|
|
51
|
+
type: 'string'
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Add our route handler with correct types
|
|
59
|
+
server.post<{
|
|
60
|
+
Querystring: PingQuerystring;
|
|
61
|
+
Params: PingParams;
|
|
62
|
+
Headers: PingHeaders;
|
|
63
|
+
Body: PingBody;
|
|
64
|
+
}>('/ping/:bar', opts, (request, reply) => {
|
|
65
|
+
console.log(request.query) // this is of type `PingQuerystring`
|
|
66
|
+
console.log(request.params) // this is of type `PingParams`
|
|
67
|
+
console.log(request.headers) // this is of type `PingHeaders`
|
|
68
|
+
console.log(request.body) // this is of type `PingBody`
|
|
69
|
+
reply.code(200).send({ pong: 'it worked!' })
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
// Start your server
|
|
73
|
+
server.listen({ port: 8080 }, (err, address) => {
|
|
74
|
+
if (err) {
|
|
75
|
+
console.error(err)
|
|
76
|
+
process.exit(1)
|
|
77
|
+
}
|
|
78
|
+
console.log(`server listening on ${address}`)
|
|
79
|
+
})
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const fastify = require('../fastify')({ logger: true })
|
|
4
|
+
|
|
5
|
+
const opts = {
|
|
6
|
+
schema: {
|
|
7
|
+
response: {
|
|
8
|
+
'2xx': {
|
|
9
|
+
type: 'object',
|
|
10
|
+
properties: {
|
|
11
|
+
hello: {
|
|
12
|
+
type: 'string'
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
fastify.register(require('./plugin'), opts, function (err) {
|
|
20
|
+
if (err) {
|
|
21
|
+
throw err
|
|
22
|
+
}
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
fastify.listen({ port: 3000 }, function (err) {
|
|
26
|
+
if (err) {
|
|
27
|
+
throw err
|
|
28
|
+
}
|
|
29
|
+
})
|
package/fastify.d.ts
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import * as http from 'node:http'
|
|
2
|
+
import * as http2 from 'node:http2'
|
|
3
|
+
import * as https from 'node:https'
|
|
4
|
+
import { Socket } from 'node:net'
|
|
5
|
+
|
|
6
|
+
import { BuildCompilerFromPool, ValidatorFactory } from '@fastify/ajv-compiler'
|
|
7
|
+
import { FastifyError } from '@fastify/error'
|
|
8
|
+
import { Options as FJSOptions, SerializerFactory } from '@fastify/fast-json-stringify-compiler'
|
|
9
|
+
import { Config as FindMyWayConfig, ConstraintStrategy, HTTPVersion } from 'find-my-way'
|
|
10
|
+
import { InjectOptions, CallbackFunc as LightMyRequestCallback, Chain as LightMyRequestChain, Response as LightMyRequestResponse } from 'light-my-request'
|
|
11
|
+
|
|
12
|
+
import { AddContentTypeParser, ConstructorAction, FastifyBodyParser, FastifyContentTypeParser, getDefaultJsonParser, hasContentTypeParser, ProtoAction } from './types/content-type-parser'
|
|
13
|
+
import { FastifyContextConfig, FastifyReplyContext, FastifyRequestContext } from './types/context'
|
|
14
|
+
import { FastifyErrorCodes } from './types/errors'
|
|
15
|
+
import { DoneFuncWithErrOrRes, HookHandlerDoneFunction, onCloseAsyncHookHandler, onCloseHookHandler, onErrorAsyncHookHandler, onErrorHookHandler, onListenAsyncHookHandler, onListenHookHandler, onReadyAsyncHookHandler, onReadyHookHandler, onRegisterHookHandler, onRequestAbortAsyncHookHandler, onRequestAbortHookHandler, onRequestAsyncHookHandler, onRequestHookHandler, onResponseAsyncHookHandler, onResponseHookHandler, onRouteHookHandler, onSendAsyncHookHandler, onSendHookHandler, onTimeoutAsyncHookHandler, onTimeoutHookHandler, preCloseAsyncHookHandler, preCloseHookHandler, preHandlerAsyncHookHandler, preHandlerHookHandler, preParsingAsyncHookHandler, preParsingHookHandler, preSerializationAsyncHookHandler, preSerializationHookHandler, preValidationAsyncHookHandler, preValidationHookHandler, RequestPayload } from './types/hooks'
|
|
16
|
+
import { FastifyInstance, FastifyListenOptions, PrintRoutesOptions } from './types/instance'
|
|
17
|
+
import {
|
|
18
|
+
FastifyBaseLogger,
|
|
19
|
+
FastifyChildLoggerFactory,
|
|
20
|
+
FastifyLogFn,
|
|
21
|
+
FastifyLoggerInstance,
|
|
22
|
+
FastifyLoggerOptions,
|
|
23
|
+
LogLevel,
|
|
24
|
+
PinoLoggerOptions
|
|
25
|
+
} from './types/logger'
|
|
26
|
+
import { FastifyPlugin, FastifyPluginAsync, FastifyPluginCallback, FastifyPluginOptions } from './types/plugin'
|
|
27
|
+
import { FastifyRegister, FastifyRegisterOptions, RegisterOptions } from './types/register'
|
|
28
|
+
import { FastifyReply } from './types/reply'
|
|
29
|
+
import { FastifyRequest, RequestGenericInterface } from './types/request'
|
|
30
|
+
import { RouteGenericInterface, RouteHandler, RouteHandlerMethod, RouteOptions, RouteShorthandMethod, RouteShorthandOptions, RouteShorthandOptionsWithHandler } from './types/route'
|
|
31
|
+
import { FastifySchema, FastifySchemaValidationError, FastifySchemaCompiler, FastifySerializerCompiler, SchemaErrorDataVar, SchemaErrorFormatter } from './types/schema'
|
|
32
|
+
import { FastifyServerFactory, FastifyServerFactoryHandler } from './types/server-factory'
|
|
33
|
+
import { FastifyTypeProvider, FastifyTypeProviderDefault, SafePromiseLike } from './types/type-provider'
|
|
34
|
+
import { ContextConfigDefault, HTTPMethods, RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerBase, RawServerDefault, RequestBodyDefault, RequestHeadersDefault, RequestParamsDefault, RequestQuerystringDefault } from './types/utils'
|
|
35
|
+
|
|
36
|
+
declare module '@fastify/error' {
|
|
37
|
+
interface FastifyError {
|
|
38
|
+
validationContext?: SchemaErrorDataVar;
|
|
39
|
+
validation?: FastifySchemaValidationError[];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
type Fastify = typeof fastify
|
|
44
|
+
|
|
45
|
+
declare namespace fastify {
|
|
46
|
+
export const errorCodes: FastifyErrorCodes
|
|
47
|
+
|
|
48
|
+
export type FastifyHttp2SecureOptions<
|
|
49
|
+
Server extends http2.Http2SecureServer,
|
|
50
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
51
|
+
> = FastifyServerOptions<Server, Logger> & {
|
|
52
|
+
http2: true,
|
|
53
|
+
https: http2.SecureServerOptions,
|
|
54
|
+
http2SessionTimeout?: number
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export type FastifyHttp2Options<
|
|
58
|
+
Server extends http2.Http2Server,
|
|
59
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
60
|
+
> = FastifyServerOptions<Server, Logger> & {
|
|
61
|
+
http2: true,
|
|
62
|
+
http2SessionTimeout?: number
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export type FastifyHttpsOptions<
|
|
66
|
+
Server extends https.Server,
|
|
67
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
68
|
+
> = FastifyServerOptions<Server, Logger> & {
|
|
69
|
+
https: https.ServerOptions | null
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export type FastifyHttpOptions<
|
|
73
|
+
Server extends http.Server,
|
|
74
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
75
|
+
> = FastifyServerOptions<Server, Logger> & {
|
|
76
|
+
http?: http.ServerOptions | null
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
type FindMyWayVersion<RawServer extends RawServerBase> = RawServer extends http.Server ? HTTPVersion.V1 : HTTPVersion.V2
|
|
80
|
+
type FindMyWayConfigForServer<RawServer extends RawServerBase> = FindMyWayConfig<FindMyWayVersion<RawServer>>
|
|
81
|
+
|
|
82
|
+
export interface ConnectionError extends Error {
|
|
83
|
+
code: string,
|
|
84
|
+
bytesParsed: number,
|
|
85
|
+
rawPacket: {
|
|
86
|
+
type: string,
|
|
87
|
+
data: number[]
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
type TrustProxyFunction = (address: string, hop: number) => boolean
|
|
92
|
+
|
|
93
|
+
export type FastifyRouterOptions<RawServer extends RawServerBase> = Omit<FindMyWayConfigForServer<RawServer>, 'defaultRoute' | 'onBadUrl' | 'querystringParser'> & {
|
|
94
|
+
defaultRoute?: (
|
|
95
|
+
req: RawRequestDefaultExpression<RawServer>,
|
|
96
|
+
res: RawReplyDefaultExpression<RawServer>
|
|
97
|
+
) => void,
|
|
98
|
+
onBadUrl?: (
|
|
99
|
+
path: string,
|
|
100
|
+
req: RawRequestDefaultExpression<RawServer>,
|
|
101
|
+
res: RawReplyDefaultExpression<RawServer>
|
|
102
|
+
) => void,
|
|
103
|
+
querystringParser?: (str: string) => { [key: string]: unknown }
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Options for a fastify server instance. Utilizes conditional logic on the generic server parameter to enforce certain https and http2
|
|
108
|
+
*/
|
|
109
|
+
export type FastifyServerOptions<
|
|
110
|
+
RawServer extends RawServerBase = RawServerDefault,
|
|
111
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
112
|
+
> = {
|
|
113
|
+
ignoreTrailingSlash?: boolean,
|
|
114
|
+
ignoreDuplicateSlashes?: boolean,
|
|
115
|
+
connectionTimeout?: number,
|
|
116
|
+
keepAliveTimeout?: number,
|
|
117
|
+
maxRequestsPerSocket?: number,
|
|
118
|
+
forceCloseConnections?: boolean | 'idle',
|
|
119
|
+
requestTimeout?: number,
|
|
120
|
+
pluginTimeout?: number,
|
|
121
|
+
bodyLimit?: number,
|
|
122
|
+
handlerTimeout?: number,
|
|
123
|
+
maxParamLength?: number,
|
|
124
|
+
disableRequestLogging?: boolean | ((req: FastifyRequest) => boolean),
|
|
125
|
+
exposeHeadRoutes?: boolean,
|
|
126
|
+
onProtoPoisoning?: ProtoAction,
|
|
127
|
+
onConstructorPoisoning?: ConstructorAction,
|
|
128
|
+
logger?: boolean | FastifyLoggerOptions<RawServer> & PinoLoggerOptions,
|
|
129
|
+
loggerInstance?: Logger
|
|
130
|
+
serializerOpts?: FJSOptions | Record<string, unknown>,
|
|
131
|
+
serverFactory?: FastifyServerFactory<RawServer>,
|
|
132
|
+
caseSensitive?: boolean,
|
|
133
|
+
allowUnsafeRegex?: boolean,
|
|
134
|
+
requestIdHeader?: string | false,
|
|
135
|
+
requestIdLogLabel?: string;
|
|
136
|
+
useSemicolonDelimiter?: boolean,
|
|
137
|
+
genReqId?: (req: RawRequestDefaultExpression<RawServer>) => string,
|
|
138
|
+
trustProxy?: boolean | string | string[] | number | TrustProxyFunction,
|
|
139
|
+
querystringParser?: (str: string) => { [key: string]: unknown },
|
|
140
|
+
constraints?: {
|
|
141
|
+
[name: string]: ConstraintStrategy<FindMyWayVersion<RawServer>, unknown>,
|
|
142
|
+
},
|
|
143
|
+
schemaController?: {
|
|
144
|
+
bucket?: (parentSchemas?: unknown) => {
|
|
145
|
+
add(schema: unknown): FastifyInstance;
|
|
146
|
+
getSchema(schemaId: string): unknown;
|
|
147
|
+
getSchemas(): Record<string, unknown>;
|
|
148
|
+
};
|
|
149
|
+
compilersFactory?: {
|
|
150
|
+
buildValidator?: ValidatorFactory;
|
|
151
|
+
buildSerializer?: SerializerFactory;
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
return503OnClosing?: boolean,
|
|
155
|
+
ajv?: Parameters<BuildCompilerFromPool>[1],
|
|
156
|
+
frameworkErrors?: <RequestGeneric extends RequestGenericInterface = RequestGenericInterface, TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault, SchemaCompiler extends FastifySchema = FastifySchema>(
|
|
157
|
+
error: FastifyError,
|
|
158
|
+
req: FastifyRequest<RequestGeneric, RawServer, RawRequestDefaultExpression<RawServer>, FastifySchema, TypeProvider>,
|
|
159
|
+
res: FastifyReply<RequestGeneric, RawServer, RawRequestDefaultExpression<RawServer>, RawReplyDefaultExpression<RawServer>, FastifyContextConfig, SchemaCompiler, TypeProvider>
|
|
160
|
+
) => void,
|
|
161
|
+
rewriteUrl?: (
|
|
162
|
+
// The RawRequestDefaultExpression, RawReplyDefaultExpression, and FastifyTypeProviderDefault parameters
|
|
163
|
+
// should be narrowed further but those generic parameters are not passed to this FastifyServerOptions type
|
|
164
|
+
this: FastifyInstance<RawServer, RawRequestDefaultExpression<RawServer>, RawReplyDefaultExpression<RawServer>, Logger, FastifyTypeProviderDefault>,
|
|
165
|
+
req: RawRequestDefaultExpression<RawServer>
|
|
166
|
+
) => string,
|
|
167
|
+
schemaErrorFormatter?: SchemaErrorFormatter,
|
|
168
|
+
/**
|
|
169
|
+
* listener to error events emitted by client connections
|
|
170
|
+
*/
|
|
171
|
+
clientErrorHandler?: (error: ConnectionError, socket: Socket) => void,
|
|
172
|
+
childLoggerFactory?: FastifyChildLoggerFactory,
|
|
173
|
+
allowErrorHandlerOverride?: boolean
|
|
174
|
+
routerOptions?: FastifyRouterOptions<RawServer>,
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @deprecated use {@link FastifySchemaValidationError}
|
|
179
|
+
*/
|
|
180
|
+
export type ValidationResult = FastifySchemaValidationError
|
|
181
|
+
|
|
182
|
+
/* Export additional types */
|
|
183
|
+
export type {
|
|
184
|
+
LightMyRequestChain, InjectOptions, LightMyRequestResponse, LightMyRequestCallback, // 'light-my-request'
|
|
185
|
+
FastifyRequest, RequestGenericInterface, // './types/request'
|
|
186
|
+
FastifyReply, // './types/reply'
|
|
187
|
+
FastifyPluginCallback, FastifyPluginAsync, FastifyPluginOptions, FastifyPlugin, // './types/plugin'
|
|
188
|
+
FastifyListenOptions, FastifyInstance, PrintRoutesOptions, // './types/instance'
|
|
189
|
+
FastifyLoggerOptions, FastifyBaseLogger, FastifyLoggerInstance, FastifyLogFn, LogLevel, // './types/logger'
|
|
190
|
+
FastifyRequestContext, FastifyContextConfig, FastifyReplyContext, // './types/context'
|
|
191
|
+
RouteHandler, RouteHandlerMethod, RouteOptions, RouteShorthandMethod, RouteShorthandOptions, RouteShorthandOptionsWithHandler, RouteGenericInterface, // './types/route'
|
|
192
|
+
FastifyRegister, FastifyRegisterOptions, RegisterOptions, // './types/register'
|
|
193
|
+
FastifyBodyParser, FastifyContentTypeParser, AddContentTypeParser, hasContentTypeParser, getDefaultJsonParser, ProtoAction, ConstructorAction, // './types/content-type-parser'
|
|
194
|
+
FastifyError, // '@fastify/error'
|
|
195
|
+
FastifySchema, FastifySchemaValidationError, FastifySchemaCompiler, FastifySerializerCompiler, // './types/schema'
|
|
196
|
+
HTTPMethods, RawServerBase, RawRequestDefaultExpression, RawReplyDefaultExpression, RawServerDefault, ContextConfigDefault, RequestBodyDefault, RequestQuerystringDefault, RequestParamsDefault, RequestHeadersDefault, // './types/utils'
|
|
197
|
+
DoneFuncWithErrOrRes, HookHandlerDoneFunction, RequestPayload, onCloseAsyncHookHandler, onCloseHookHandler, onErrorAsyncHookHandler, onErrorHookHandler, onReadyAsyncHookHandler, onReadyHookHandler, onListenAsyncHookHandler, onListenHookHandler, onRegisterHookHandler, onRequestAsyncHookHandler, onRequestHookHandler, onResponseAsyncHookHandler, onResponseHookHandler, onRouteHookHandler, onSendAsyncHookHandler, onSendHookHandler, onTimeoutAsyncHookHandler, onTimeoutHookHandler, preHandlerAsyncHookHandler, preHandlerHookHandler, preParsingAsyncHookHandler, preParsingHookHandler, preSerializationAsyncHookHandler, preSerializationHookHandler, preValidationAsyncHookHandler, preValidationHookHandler, onRequestAbortHookHandler, onRequestAbortAsyncHookHandler, preCloseAsyncHookHandler, preCloseHookHandler, // './types/hooks'
|
|
198
|
+
FastifyServerFactory, FastifyServerFactoryHandler, // './types/serverFactory'
|
|
199
|
+
FastifyTypeProvider, FastifyTypeProviderDefault, SafePromiseLike, // './types/type-provider'
|
|
200
|
+
FastifyErrorCodes // './types/errors'
|
|
201
|
+
}
|
|
202
|
+
// named export
|
|
203
|
+
// import { plugin } from 'plugin'
|
|
204
|
+
// const { plugin } = require('plugin')
|
|
205
|
+
export const fastify: Fastify
|
|
206
|
+
// default export
|
|
207
|
+
// import plugin from 'plugin'
|
|
208
|
+
export { fastify as default }
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Fastify factory function for the standard fastify http, https, or http2 server instance.
|
|
213
|
+
*
|
|
214
|
+
* The default function utilizes http
|
|
215
|
+
*
|
|
216
|
+
* @param opts Fastify server options
|
|
217
|
+
* @returns Fastify server instance
|
|
218
|
+
*/
|
|
219
|
+
declare function fastify<
|
|
220
|
+
Server extends http2.Http2SecureServer,
|
|
221
|
+
Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>,
|
|
222
|
+
Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>,
|
|
223
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger,
|
|
224
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
225
|
+
> (opts: fastify.FastifyHttp2SecureOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & SafePromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>
|
|
226
|
+
|
|
227
|
+
declare function fastify<
|
|
228
|
+
Server extends http2.Http2Server,
|
|
229
|
+
Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>,
|
|
230
|
+
Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>,
|
|
231
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger,
|
|
232
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
233
|
+
> (opts: fastify.FastifyHttp2Options<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & SafePromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>
|
|
234
|
+
|
|
235
|
+
declare function fastify<
|
|
236
|
+
Server extends https.Server,
|
|
237
|
+
Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>,
|
|
238
|
+
Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>,
|
|
239
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger,
|
|
240
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
241
|
+
> (opts: fastify.FastifyHttpsOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & SafePromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>
|
|
242
|
+
|
|
243
|
+
declare function fastify<
|
|
244
|
+
Server extends http.Server,
|
|
245
|
+
Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>,
|
|
246
|
+
Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>,
|
|
247
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger,
|
|
248
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
249
|
+
> (opts?: fastify.FastifyHttpOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & SafePromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>
|
|
250
|
+
|
|
251
|
+
// CJS export
|
|
252
|
+
// const fastify = require('fastify')
|
|
253
|
+
export = fastify
|