fastify 4.28.0 → 5.0.0-alpha.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/.idea/fastify.iml +12 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/jsLibraryMappings.xml +6 -0
- package/.idea/jsLinters/eslint.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/vcs.xml +6 -0
- package/.markdownlint-cli2.yaml +1 -1
- package/.taprc +4 -8
- package/README.md +3 -6
- package/build/build-error-serializer.js +4 -1
- package/build/build-validation.js +5 -4
- package/docs/Guides/Database.md +1 -1
- package/docs/Guides/Delay-Accepting-Requests.md +3 -3
- package/docs/Guides/Ecosystem.md +2 -0
- package/docs/Guides/Migration-Guide-V5.md +20 -0
- package/docs/Guides/Write-Type-Provider.md +4 -2
- package/docs/Reference/ContentTypeParser.md +30 -1
- package/docs/Reference/Decorators.md +42 -16
- package/docs/Reference/Errors.md +10 -2
- package/docs/Reference/Hooks.md +48 -14
- package/docs/Reference/Logging.md +5 -5
- package/docs/Reference/Reply.md +23 -18
- package/docs/Reference/Request.md +5 -1
- package/docs/Reference/Routes.md +24 -28
- package/docs/Reference/Server.md +14 -53
- package/docs/Reference/Type-Providers.md +21 -26
- package/docs/Reference/TypeScript.md +46 -29
- package/docs/Reference/Warnings.md +0 -8
- package/eslint.config.js +27 -0
- package/examples/typescript-server.ts +14 -14
- package/fastify.d.ts +15 -14
- package/fastify.js +41 -15
- package/lib/configValidator.js +94 -76
- package/lib/contentTypeParser.js +54 -88
- package/lib/decorate.js +3 -7
- package/lib/error-serializer.js +2 -1
- package/lib/errors.js +31 -6
- package/lib/handleRequest.js +70 -39
- package/lib/httpMethods.js +34 -18
- package/lib/logger.js +24 -6
- package/lib/pluginUtils.js +5 -5
- package/lib/reply.js +7 -10
- package/lib/request.js +37 -19
- package/lib/route.js +6 -34
- package/lib/server.js +62 -123
- package/lib/warnings.js +24 -29
- package/lib/wrapThenable.js +46 -22
- package/package.json +38 -58
- package/test/404s.test.js +8 -12
- package/test/async-await.test.js +46 -2
- package/test/build/error-serializer.test.js +4 -2
- package/test/check.test.js +225 -0
- package/test/close-pipelining.test.js +2 -41
- package/test/close.test.js +1 -41
- package/test/content-parser.test.js +69 -117
- package/test/custom-parser.1.test.js +40 -1
- package/test/decorator-namespace.test._js_ +31 -0
- package/test/decorator.test.js +92 -43
- package/test/delete.test.js +21 -1
- package/test/diagnostics-channel/404.test.js +57 -0
- package/test/diagnostics-channel/async-delay-request.test.js +74 -0
- package/test/diagnostics-channel/async-request.test.js +72 -0
- package/test/diagnostics-channel/error-before-handler.test.js +36 -0
- package/test/diagnostics-channel/error-request.test.js +61 -0
- package/test/diagnostics-channel/error-status.test.js +39 -0
- package/test/{diagnostics-channel.test.js → diagnostics-channel/init.test.js} +6 -16
- package/test/diagnostics-channel/sync-delay-request.test.js +58 -0
- package/test/diagnostics-channel/sync-request-reply.test.js +58 -0
- package/test/diagnostics-channel/sync-request.test.js +61 -0
- package/test/encapsulated-error-handler.test.js +201 -14
- package/test/esm/index.test.js +2 -12
- package/test/findRoute.test.js +16 -0
- package/test/genReqId.test.js +9 -0
- package/test/get.test.js +28 -0
- package/test/has-route.test.js +1 -1
- package/test/helper.js +1 -5
- package/test/hooks.test.js +0 -4
- package/test/http2/constraint.test.js +22 -1
- package/test/http2/plain.test.js +21 -6
- package/test/http2/secure.test.js +12 -1
- package/test/https/https.test.js +57 -0
- package/test/inject.test.js +1 -2
- package/test/internals/decorator.test.js +0 -2
- package/test/internals/errors.test.js +57 -17
- package/test/internals/handleRequest.test.js +5 -1
- package/test/internals/initialConfig.test.js +5 -5
- package/test/internals/logger.test.js +31 -2
- package/test/internals/reply.test.js +6 -78
- package/test/internals/request.test.js +13 -11
- package/test/listen.1.test.js +5 -15
- package/test/listen.5.test.js +99 -0
- package/test/logger/instantiation.test.js +8 -8
- package/test/logger/logging.test.js +4 -4
- package/test/logger/options.test.js +102 -21
- package/test/logger/response.test.js +6 -6
- package/test/maxRequestsPerSocket.test.js +2 -5
- package/test/method-missing.test.js +24 -0
- package/test/plugin.1.test.js +2 -4
- package/test/plugin.2.test.js +0 -2
- package/test/plugin.3.test.js +0 -2
- package/test/plugin.4.test.js +92 -56
- package/test/register.test.js +2 -4
- package/test/reply-earlyHints.test.js +98 -0
- package/test/reply-error.test.js +0 -2
- package/test/route-hooks.test.js +0 -1
- package/test/route-shorthand.test.js +60 -0
- package/test/schema-special-usage.test.js +1 -1
- package/test/server.test.js +17 -2
- package/test/stream.2.test.js +1 -1
- package/test/stream.4.test.js +0 -42
- package/test/stream.5.test.js +2 -2
- package/test/trust-proxy.test.js +33 -27
- package/test/types/errors.test-d.ts +0 -2
- package/test/types/fastify.test-d.ts +14 -12
- package/test/types/hooks.test-d.ts +1 -0
- package/test/types/import.ts +1 -0
- package/test/types/instance.test-d.ts +10 -51
- package/test/types/logger.test-d.ts +43 -6
- package/test/types/plugin.test-d.ts +5 -2
- package/test/types/register.test-d.ts +2 -2
- package/test/types/reply.test-d.ts +13 -12
- package/test/types/request.test-d.ts +19 -8
- package/test/types/route.test-d.ts +30 -2
- package/test/types/schema.test-d.ts +2 -2
- package/test/types/serverFactory.test-d.ts +1 -1
- package/test/types/type-provider.test-d.ts +59 -12
- package/test/types/using.test-d.ts +4 -1
- package/test/url-rewriting.test.js +3 -2
- package/test/useSemicolonDelimiter.test.js +3 -6
- package/test/versioned-routes.test.js +1 -1
- package/test/web-api.test.js +0 -6
- package/types/content-type-parser.d.ts +3 -3
- package/types/context.d.ts +0 -1
- package/types/errors.d.ts +1 -0
- package/types/hooks.d.ts +6 -6
- package/types/instance.d.ts +28 -41
- package/types/logger.d.ts +3 -3
- package/types/plugin.d.ts +3 -3
- package/types/reply.d.ts +9 -12
- package/types/request.d.ts +5 -3
- package/types/route.d.ts +31 -31
- package/types/schema.d.ts +3 -3
- package/types/serverFactory.d.ts +2 -2
- package/types/type-provider.d.ts +22 -12
- package/types/utils.d.ts +18 -23
- package/.c8rc.json +0 -8
- package/.eslintrc +0 -4
- package/.tap/processinfo/029eb7a1-1942-40bc-98e2-cef3b7a14b5e.json +0 -268
- package/.tap/processinfo/03c196c6-01c3-4268-a9b5-298dff18a873.json +0 -269
- package/.tap/processinfo/04bbabba-8611-4908-9092-dfa9fcc13327.json +0 -268
- package/.tap/processinfo/05d8a743-3edf-4e2d-ae5a-dc99d0855ba5.json +0 -272
- package/.tap/processinfo/07718963-36a8-4d87-82ad-366c877a5247.json +0 -268
- package/.tap/processinfo/08fe3bde-5814-4308-9158-cdf1e47391b7.json +0 -268
- package/.tap/processinfo/0a3e3fb0-eabf-4532-ae80-20434da22678.json +0 -268
- package/.tap/processinfo/0caf2a75-4b3a-46c4-9b41-c7e450e5e15f.json +0 -268
- package/.tap/processinfo/0cf35d52-e5b2-4884-bcf0-b0ab3017b689.json +0 -268
- package/.tap/processinfo/0e666134-5013-4ecd-9ee6-59b22716c39c.json +0 -268
- package/.tap/processinfo/1087b811-4ec4-4f91-92b4-a78a51a437de.json +0 -268
- package/.tap/processinfo/13709ed3-b68c-42cf-8472-b0c4b8a89d2b.json +0 -268
- package/.tap/processinfo/13ac2f18-d0e0-439f-bc86-2ff0119af857.json +0 -268
- package/.tap/processinfo/13e47e0e-f6e8-4381-8a42-923b661f4a4f.json +0 -268
- package/.tap/processinfo/143f7d43-b8e8-4666-b482-f28fb37160ee.json +0 -268
- package/.tap/processinfo/14f3801d-03ab-4db3-9df5-c5d47e0a8cf0.json +0 -270
- package/.tap/processinfo/15a07dad-4bcd-442c-95e0-30c31f2b9818.json +0 -273
- package/.tap/processinfo/191ad3ad-04d8-4fb9-b119-ad2811f9b925.json +0 -243
- package/.tap/processinfo/1b25d54b-62d3-44cd-b581-31e705522fae.json +0 -268
- package/.tap/processinfo/1b7cb260-f04b-4135-a4fe-093081c4706f.json +0 -268
- package/.tap/processinfo/1e395d63-4815-4c77-aa47-df3709cc0ef9.json +0 -268
- package/.tap/processinfo/1e7f6a54-3abf-4771-863a-585cba110aec.json +0 -268
- package/.tap/processinfo/21a15e1d-0b41-47d8-b03d-0ba130969034.json +0 -244
- package/.tap/processinfo/21e02016-9ecd-4983-8417-9c74d224644f.json +0 -269
- package/.tap/processinfo/2327d941-d0d5-4762-b386-02a9a27ad28e.json +0 -268
- package/.tap/processinfo/23d39204-eac9-4f57-8db4-ffa996227fbd.json +0 -268
- package/.tap/processinfo/2493875a-0ac6-4d53-993c-f44471fd0678.json +0 -268
- package/.tap/processinfo/2698669f-f1e7-4a12-a687-8d58177be2b0.json +0 -269
- package/.tap/processinfo/2862b053-0a3d-46d7-9381-ffcb06287609.json +0 -268
- package/.tap/processinfo/2ac1b8d6-ac92-40e2-a59a-7681069f487c.json +0 -268
- package/.tap/processinfo/2c75e5f7-c4ef-47e4-a1c4-105eef6c0fab.json +0 -242
- package/.tap/processinfo/2e2c45cd-718b-4e5a-bf88-f801630f2803.json +0 -268
- package/.tap/processinfo/2f9ca478-3e03-4cce-a0bc-fcdc86d7c316.json +0 -268
- package/.tap/processinfo/30e3117f-fb74-456f-8f02-527e9eb9fcc3.json +0 -268
- package/.tap/processinfo/332be679-63c7-4b49-8b87-ef55995ada2d.json +0 -268
- package/.tap/processinfo/37c36f95-07f9-4ef0-8ab4-9e107d51b605.json +0 -269
- package/.tap/processinfo/3874eae2-f3db-44ef-9a9f-c8169d4b2b76.json +0 -268
- package/.tap/processinfo/38a7c3da-a411-41d0-8993-9deefd23500d.json +0 -268
- package/.tap/processinfo/3a7b6dbd-e153-4ce5-b557-21fb82009983.json +0 -269
- package/.tap/processinfo/3c6731ec-936d-470f-b7b0-0c87b54be051.json +0 -268
- package/.tap/processinfo/3c850ea9-4ef0-4044-a3fd-fbadfa9d543e.json +0 -268
- package/.tap/processinfo/3e4e15e0-a325-46f0-be57-5fd374560b7a.json +0 -269
- package/.tap/processinfo/3ed868e0-887c-402a-9f22-b1fdb74b4da0.json +0 -268
- package/.tap/processinfo/405498d7-5854-4ce1-a7dc-06920932f26d.json +0 -268
- package/.tap/processinfo/40b7eb19-ae35-4490-8a11-eb91a573c590.json +0 -268
- package/.tap/processinfo/40bb1260-d856-4248-8939-a0a05e322041.json +0 -268
- package/.tap/processinfo/41252e0b-7f69-44cc-b356-dd94bcbfdb29.json +0 -268
- package/.tap/processinfo/418fa710-e2fd-4508-b533-c179958da464.json +0 -269
- package/.tap/processinfo/433ef009-63aa-48fe-8e5d-c725228fa2fc.json +0 -268
- package/.tap/processinfo/44bf577c-9c01-4197-bd29-2e1ae888c4d4.json +0 -268
- package/.tap/processinfo/458fb7f2-20b9-48a2-8853-403c9851f605.json +0 -268
- package/.tap/processinfo/46b9892b-bb23-4b86-b0fa-9297f08c611a.json +0 -268
- package/.tap/processinfo/46bd9aaf-6cf3-4bd5-b90d-e136a7299a8e.json +0 -268
- package/.tap/processinfo/4779aa5f-e57a-4fcc-87e2-7d0bd4fca27f.json +0 -268
- package/.tap/processinfo/47b73f4b-ab31-49e1-97fd-8436dbe4bdf3.json +0 -269
- package/.tap/processinfo/49dba52e-e0c9-445d-8e9d-6d9ebe3ce6c4.json +0 -268
- package/.tap/processinfo/4b1dbc61-4e65-4c56-9784-2036f369038a.json +0 -268
- package/.tap/processinfo/4b6f0b40-43ef-4668-83a0-e07e28509df5.json +0 -268
- package/.tap/processinfo/4c236f70-f532-460b-8f7a-dd973301d493.json +0 -268
- package/.tap/processinfo/4d92b707-a268-48b8-885b-004d3a288c41.json +0 -269
- package/.tap/processinfo/4ff10bae-7c97-4c0a-b712-6c0d2f8c0e8e.json +0 -270
- package/.tap/processinfo/50f95bd5-ae12-4d83-99f4-ae9b0690c6a8.json +0 -268
- package/.tap/processinfo/557e4a49-d99c-4a63-b2f2-f33d897ab874.json +0 -268
- package/.tap/processinfo/589fd21a-8319-4abf-8cf7-82cb4a463a4b.json +0 -269
- package/.tap/processinfo/5a872f3a-949f-40be-8004-d739d034255c.json +0 -272
- package/.tap/processinfo/5abc301a-23da-424d-891e-3afbaff9156c.json +0 -269
- package/.tap/processinfo/5c31614c-a766-4837-ab59-dd6977166f72.json +0 -253
- package/.tap/processinfo/5d1e90c8-d819-4901-b022-f9ea4cd81978.json +0 -268
- package/.tap/processinfo/5d283e67-f31d-4fa8-a559-a1d8e82ee046.json +0 -269
- package/.tap/processinfo/5df505bc-6a4b-4c41-822f-51e2d7111de8.json +0 -268
- package/.tap/processinfo/5eaf64a2-fbfd-40e7-b391-c30f744b2bf1.json +0 -269
- package/.tap/processinfo/5ef5ede0-6436-4938-8401-d32ad4bffd5d.json +0 -268
- package/.tap/processinfo/606f05c0-8293-41db-bc92-eea82123697f.json +0 -269
- package/.tap/processinfo/6446806d-6cab-4c1d-a9ed-6bccaf3c4ea9.json +0 -268
- package/.tap/processinfo/64da7e08-925d-444d-98de-6568c6115d8d.json +0 -269
- package/.tap/processinfo/6917da6d-d2dc-466a-a893-7fb7412dde96.json +0 -268
- package/.tap/processinfo/69bbeee0-c398-4ccf-98b3-fb625a63bab4.json +0 -268
- package/.tap/processinfo/6da6ea8f-3370-4703-b230-90159531f766.json +0 -268
- package/.tap/processinfo/6ecffe1f-3016-4c11-9294-b488baced99f.json +0 -268
- package/.tap/processinfo/6f23f41f-ccbd-48cb-9ab6-311db0cfb65c.json +0 -270
- package/.tap/processinfo/70168912-9bb2-4334-bb89-041f1764cddf.json +0 -268
- package/.tap/processinfo/713a674e-40e1-46b4-866e-949d57c1a9f9.json +0 -270
- package/.tap/processinfo/730254d4-eacb-4cdf-80f4-8da22341cde5.json +0 -268
- package/.tap/processinfo/7344e559-c546-416f-8f1b-0f9fe12c6f02.json +0 -268
- package/.tap/processinfo/7556217a-0155-448f-b4d4-bec1bb0f6040.json +0 -269
- package/.tap/processinfo/7572079c-166c-4c4c-85ff-89b9430b214f.json +0 -268
- package/.tap/processinfo/7808180f-1974-47cd-bba2-2d6b8b711d65.json +0 -273
- package/.tap/processinfo/796dde83-da66-4db2-8d27-d45a3627c9c7.json +0 -268
- package/.tap/processinfo/7979819f-3723-48be-9f55-be700e689441.json +0 -270
- package/.tap/processinfo/7a664d39-d7f5-42f9-89df-15563048fab6.json +0 -268
- package/.tap/processinfo/7b047b72-01d9-4217-857c-93341651b4b3.json +0 -269
- package/.tap/processinfo/7ce41af6-7961-45ae-8c6f-b6e1c5692a48.json +0 -268
- package/.tap/processinfo/7e1de1c6-127e-463d-9357-081ee33ef5ce.json +0 -269
- package/.tap/processinfo/81ac7a7f-b0c0-4ef6-82cb-c718ea84e152.json +0 -268
- package/.tap/processinfo/851a058f-a497-4b10-a0b7-c9182d9c4d5a.json +0 -268
- package/.tap/processinfo/86502974-c245-4194-ade4-d9c6fdbb757e.json +0 -268
- package/.tap/processinfo/86b9786f-4a98-43b8-882a-5f936b876f08.json +0 -241
- package/.tap/processinfo/8a3fe726-86ab-4300-8d73-7eacbbc02a05.json +0 -268
- package/.tap/processinfo/8adf928b-c963-4ba0-9c35-606fcbd8a2aa.json +0 -272
- package/.tap/processinfo/8b31a6d8-1a33-4a27-93ca-1c5b364be068.json +0 -240
- package/.tap/processinfo/8ec12773-6b18-49a2-8e52-874c797df965.json +0 -833
- package/.tap/processinfo/8edb9502-3420-42fb-a602-e5de93be2df1.json +0 -268
- package/.tap/processinfo/8fc572e6-9828-4f98-a49c-9e081b2193c4.json +0 -242
- package/.tap/processinfo/8fee2d30-c5dd-4fae-9cf2-2ef8dd0f90de.json +0 -834
- package/.tap/processinfo/92cc0496-5f26-4370-8212-18136b972f99.json +0 -268
- package/.tap/processinfo/93a3f064-3f6e-4f49-becb-f7925f2961a9.json +0 -268
- package/.tap/processinfo/967e3697-8310-4a19-8dd5-927ac8bd6c79.json +0 -269
- package/.tap/processinfo/97225e23-9d30-4287-b3f5-72bccebec50b.json +0 -268
- package/.tap/processinfo/9a363bc6-4e65-47e8-94ca-26a9db428fb4.json +0 -268
- package/.tap/processinfo/9d2fe462-57fa-43f1-b02c-d188f15de30b.json +0 -270
- package/.tap/processinfo/a00b6cda-feb7-4b8a-8179-4c43bc29d670.json +0 -269
- package/.tap/processinfo/a017cbd5-4ac7-49e1-8c77-1bf4f6e7f2a6.json +0 -271
- package/.tap/processinfo/a1277309-1984-48f8-b60b-f5e8639736be.json +0 -271
- package/.tap/processinfo/a16bf53e-4337-48ff-88fa-67f55738e0f5.json +0 -268
- package/.tap/processinfo/a3a9848f-440e-41bb-9b0b-568bcfee0ddc.json +0 -268
- package/.tap/processinfo/a468c11f-f2f1-4e92-9ba0-6d28b6569b72.json +0 -268
- package/.tap/processinfo/a5880465-68f1-46b3-84a5-0da389d0bc67.json +0 -268
- package/.tap/processinfo/a666f394-39b4-44ad-8e74-abebf74dde3b.json +0 -270
- package/.tap/processinfo/af09d8ca-7053-4410-b514-b22c47f5979f.json +0 -268
- package/.tap/processinfo/af203309-28aa-459d-a56e-d88833695521.json +0 -268
- package/.tap/processinfo/afa2f7b6-dcd2-4d90-bf3c-54ba8b6800eb.json +0 -268
- package/.tap/processinfo/b231291d-ef14-4ff0-85f9-38a73a5408f8.json +0 -268
- package/.tap/processinfo/b3d3f2a1-a9fc-4d88-b122-fae90248cd59.json +0 -268
- package/.tap/processinfo/b834bf83-26c4-403a-8e91-eb15fe4b0b5d.json +0 -268
- package/.tap/processinfo/b8786fd7-47df-4ac1-8d6f-2d4c7623c681.json +0 -268
- package/.tap/processinfo/b9758f53-7f5a-4b03-8684-8a42ad644e5a.json +0 -268
- package/.tap/processinfo/bd194ea2-a21a-4604-b225-ee48abf1e607.json +0 -242
- package/.tap/processinfo/bd7ced53-3872-43b7-ad73-3352e50b728b.json +0 -268
- package/.tap/processinfo/be50295b-7e50-46cd-8bf1-637bf222699c.json +0 -268
- package/.tap/processinfo/bec61dd9-aa52-4e6c-8e37-5c9c10e935fd.json +0 -268
- package/.tap/processinfo/c015adf9-1d60-447e-87b5-b2031fe55bba.json +0 -268
- package/.tap/processinfo/c0666afa-7f64-45bd-97fb-145df1380157.json +0 -268
- package/.tap/processinfo/c2c0c012-c1c0-4457-84d6-dadba8396c94.json +0 -268
- package/.tap/processinfo/c3dd3ecd-737b-47ce-a917-54341c7bbed3.json +0 -268
- package/.tap/processinfo/c41ac06d-64b8-4bb3-bf56-0551f5a48f4b.json +0 -268
- package/.tap/processinfo/c4235bfb-a2aa-4271-9c6b-3ceb370219b1.json +0 -268
- package/.tap/processinfo/c4e6f24f-288c-493c-b6f0-02924aeb6758.json +0 -270
- package/.tap/processinfo/c54227bb-4a7b-40bb-bfe6-b54fe55078f3.json +0 -268
- package/.tap/processinfo/c699de91-3b0b-4466-9418-6910a3eb640a.json +0 -269
- package/.tap/processinfo/c74e2f37-451a-4577-ac18-e597fbd9a1d4.json +0 -269
- package/.tap/processinfo/c90cccec-5b4b-445f-a935-ac22859675d0.json +0 -252
- package/.tap/processinfo/c9dd6c7d-0d16-45e5-87ae-117388bf2994.json +0 -268
- package/.tap/processinfo/ca2e48fb-58c5-47fc-ad2e-263838aea42c.json +0 -272
- package/.tap/processinfo/ca87351d-c710-45c1-838a-16bccac59874.json +0 -273
- package/.tap/processinfo/cdb4a671-5776-4944-91b9-c456c58841ef.json +0 -268
- package/.tap/processinfo/cf10fdc8-6a87-447a-9e12-45f447af61f3.json +0 -244
- package/.tap/processinfo/cf3f1f08-643e-4f24-82ca-40f7a349c3d1.json +0 -268
- package/.tap/processinfo/d091172a-06a5-469b-82a9-8fefe3dd99da.json +0 -240
- package/.tap/processinfo/d1675431-61d6-45f8-a010-6e654112a00a.json +0 -272
- package/.tap/processinfo/d2d54aa2-c221-4ad4-b6b7-0c58e3c3679c.json +0 -269
- package/.tap/processinfo/d4f3c95a-ddbe-419d-bce0-dd6acceee21f.json +0 -268
- package/.tap/processinfo/d54ed8f1-43c3-478a-90d3-2c8aced723f2.json +0 -269
- package/.tap/processinfo/d6e5a2a6-4647-4d98-916c-aec4ace54a65.json +0 -268
- package/.tap/processinfo/d7280c64-45e6-4b12-affc-3ac9a5d4014a.json +0 -268
- package/.tap/processinfo/d82c8367-d825-4405-88df-07298f6ef840.json +0 -269
- package/.tap/processinfo/d8f97e53-e921-4d33-9c8d-2f7e807a9425.json +0 -268
- package/.tap/processinfo/da546a73-9714-4f8c-bdbb-e42730edbcfa.json +0 -268
- package/.tap/processinfo/da7fb7fb-1da4-49f8-a3ee-d4ea623c01a5.json +0 -268
- package/.tap/processinfo/daa6a016-4f0c-4050-923c-2022e0bb21d8.json +0 -268
- package/.tap/processinfo/db9a251d-8540-4719-b464-e7d5febd97d1.json +0 -240
- package/.tap/processinfo/dc10c603-8e58-4611-baa3-44da2578d07a.json +0 -268
- package/.tap/processinfo/dde56c1a-858c-47cc-b0bb-61279620ac17.json +0 -268
- package/.tap/processinfo/e0d9c4ea-f7c7-4c64-8ced-66dc6f0ac5d2.json +0 -271
- package/.tap/processinfo/e121454f-5dfa-4209-ba15-4c39840871f2.json +0 -831
- package/.tap/processinfo/e1f43e40-c3fe-4eb8-a713-d5910cc6b25a.json +0 -268
- package/.tap/processinfo/e4575e7a-f00e-488b-94e1-8f877b54725e.json +0 -268
- package/.tap/processinfo/e9ad667e-8603-4488-af64-449cc9532803.json +0 -268
- package/.tap/processinfo/eb26a697-e5e2-4730-aeea-bcb9c49afd4d.json +0 -268
- package/.tap/processinfo/eb29d1c3-feaf-4744-9d84-cf257e8269b0.json +0 -268
- package/.tap/processinfo/ee720c0a-ed64-4e7e-8c0a-139c7b9725d2.json +0 -268
- package/.tap/processinfo/ef88c13a-87b2-49e4-a683-7b812505cd6f.json +0 -268
- package/.tap/processinfo/f4ed6948-dac0-4128-9f86-d083b6918ea7.json +0 -268
- package/.tap/processinfo/f7544c01-8ac7-4e42-8ad5-c4d62e094d1f.json +0 -270
- package/.tap/processinfo/f7cee4b3-7bcc-4591-a628-5629b0b41c9e.json +0 -268
- package/.tap/processinfo/f9c0a1f7-c1a4-44d3-ae3f-8c1eb42cd746.json +0 -269
- package/.tap/processinfo/fc46b4da-79db-4201-af7e-34bb17f92d69.json +0 -270
- package/.tap/processinfo/fccc0056-03c4-40cb-9d0b-2db4bbe573c1.json +0 -268
- package/.tap/processinfo/fd2df572-54d7-4ce7-b7aa-a2b4b00d4127.json +0 -254
- package/.tap/processinfo/fea9377f-b473-484d-bee6-ac7f49e50937.json +0 -269
- package/.tap/processinfo/feb516dc-abda-46e6-9b42-d37adfc63366.json +0 -268
- package/.tap/processinfo/ff0fda4c-aa2e-4236-906e-fdfb6bd6632e.json +0 -269
- package/.tap/test-results/test/404s.test.js.tap +0 -623
- package/.tap/test-results/test/500s.test.js.tap +0 -64
- package/.tap/test-results/test/allowUnsafeRegex.test.js.tap +0 -36
- package/.tap/test-results/test/als.test.js.tap +0 -15
- package/.tap/test-results/test/async-await.test.js.tap +0 -184
- package/.tap/test-results/test/async-dispose.test.js.tap +0 -8
- package/.tap/test-results/test/async_hooks.test.js.tap +0 -10
- package/.tap/test-results/test/bodyLimit.test.js.tap +0 -48
- package/.tap/test-results/test/buffer.test.js.tap +0 -20
- package/.tap/test-results/test/build/error-serializer.test.js.tap +0 -8
- package/.tap/test-results/test/build/version.test.js.tap +0 -7
- package/.tap/test-results/test/case-insensitive.test.js.tap +0 -36
- package/.tap/test-results/test/chainable.test.js.tap +0 -17
- package/.tap/test-results/test/check.test.js.tap +0 -10
- package/.tap/test-results/test/childLoggerFactory.test.js.tap +0 -23
- package/.tap/test-results/test/client-timeout.test.js.tap +0 -7
- package/.tap/test-results/test/close-pipelining.test.js.tap +0 -15
- package/.tap/test-results/test/close.test.js.tap +0 -172
- package/.tap/test-results/test/connectionTimeout.test.js.tap +0 -12
- package/.tap/test-results/test/constrained-routes.test.js.tap +0 -173
- package/.tap/test-results/test/content-length.test.js.tap +0 -46
- package/.tap/test-results/test/content-parser.test.js.tap +0 -266
- package/.tap/test-results/test/content-type.test.js.tap +0 -14
- package/.tap/test-results/test/context-config.test.js.tap +0 -41
- package/.tap/test-results/test/copy.test.js.tap +0 -14
- package/.tap/test-results/test/custom-http-server.test.js.tap +0 -30
- package/.tap/test-results/test/custom-parser-async.test.js.tap +0 -21
- package/.tap/test-results/test/custom-parser.0.test.js.tap +0 -199
- package/.tap/test-results/test/custom-parser.1.test.js.tap +0 -90
- package/.tap/test-results/test/custom-parser.2.test.js.tap +0 -22
- package/.tap/test-results/test/custom-parser.3.test.js.tap +0 -53
- package/.tap/test-results/test/custom-parser.4.test.js.tap +0 -45
- package/.tap/test-results/test/custom-parser.5.test.js.tap +0 -41
- package/.tap/test-results/test/custom-querystring-parser.test.js.tap +0 -46
- package/.tap/test-results/test/decorator.test.js.tap +0 -465
- package/.tap/test-results/test/delete.test.js.tap +0 -110
- package/.tap/test-results/test/diagnostics-channel/404.test.js.tap +0 -15
- package/.tap/test-results/test/diagnostics-channel/async-delay-request.test.js.tap +0 -25
- package/.tap/test-results/test/diagnostics-channel/async-request.test.js.tap +0 -24
- package/.tap/test-results/test/diagnostics-channel/error-before-handler.test.js.tap +0 -9
- package/.tap/test-results/test/diagnostics-channel/error-request.test.js.tap +0 -20
- package/.tap/test-results/test/diagnostics-channel/error-status.test.js.tap +0 -10
- package/.tap/test-results/test/diagnostics-channel/init.test.js.tap +0 -14
- package/.tap/test-results/test/diagnostics-channel/sync-delay-request.test.js.tap +0 -16
- package/.tap/test-results/test/diagnostics-channel/sync-request-reply.test.js.tap +0 -16
- package/.tap/test-results/test/diagnostics-channel/sync-request.test.js.tap +0 -19
- package/.tap/test-results/test/encapsulated-child-logger-factory.test.js.tap +0 -18
- package/.tap/test-results/test/encapsulated-error-handler.test.js.tap +0 -243
- package/.tap/test-results/test/esm/errorCodes.test.mjs.tap +0 -9
- package/.tap/test-results/test/esm/esm.test.mjs.tap +0 -8
- package/.tap/test-results/test/esm/index.test.js.tap +0 -8
- package/.tap/test-results/test/fastify-instance.test.js.tap +0 -114
- package/.tap/test-results/test/findRoute.test.js.tap +0 -37
- package/.tap/test-results/test/fluent-schema.test.js.tap +0 -36
- package/.tap/test-results/test/genReqId.test.js.tap +0 -106
- package/.tap/test-results/test/get.test.js.tap +0 -151
- package/.tap/test-results/test/handler-context.test.js.tap +0 -19
- package/.tap/test-results/test/has-route.test.js.tap +0 -30
- package/.tap/test-results/test/head.test.js.tap +0 -130
- package/.tap/test-results/test/header-overflow.test.js.tap +0 -16
- package/.tap/test-results/test/hooks-async.test.js.tap +0 -286
- package/.tap/test-results/test/hooks.on-listen.test.js.tap +0 -311
- package/.tap/test-results/test/hooks.on-ready.test.js.tap +0 -151
- package/.tap/test-results/test/hooks.test.js.tap +0 -966
- package/.tap/test-results/test/http2/closing.test.js.tap +0 -35
- package/.tap/test-results/test/http2/constraint.test.js.tap +0 -32
- package/.tap/test-results/test/http2/head.test.js.tap +0 -9
- package/.tap/test-results/test/http2/missing-http2-module.test.js.tap +0 -8
- package/.tap/test-results/test/http2/plain.test.js.tap +0 -22
- package/.tap/test-results/test/http2/secure-with-fallback.test.js.tap +0 -40
- package/.tap/test-results/test/http2/secure.test.js.tap +0 -27
- package/.tap/test-results/test/http2/unknown-http-method.test.js.tap +0 -9
- package/.tap/test-results/test/https/custom-https-server.test.js.tap +0 -10
- package/.tap/test-results/test/https/https.test.js.tap +0 -45
- package/.tap/test-results/test/imports.test.js.tap +0 -14
- package/.tap/test-results/test/inject.test.js.tap +0 -165
- package/.tap/test-results/test/internals/all.test.js.tap +0 -42
- package/.tap/test-results/test/internals/contentTypeParser.test.js.tap +0 -14
- package/.tap/test-results/test/internals/context.test.js.tap +0 -14
- package/.tap/test-results/test/internals/decorator.test.js.tap +0 -51
- package/.tap/test-results/test/internals/errors.test.js.tap +0 -1212
- package/.tap/test-results/test/internals/handleRequest.test.js.tap +0 -69
- package/.tap/test-results/test/internals/hookRunner.test.js.tap +0 -143
- package/.tap/test-results/test/internals/hooks.test.js.tap +0 -45
- package/.tap/test-results/test/internals/initialConfig.test.js.tap +0 -125
- package/.tap/test-results/test/internals/logger.test.js.tap +0 -71
- package/.tap/test-results/test/internals/plugin.test.js.tap +0 -48
- package/.tap/test-results/test/internals/reply-serialize.test.js.tap +0 -166
- package/.tap/test-results/test/internals/reply.test.js.tap +0 -688
- package/.tap/test-results/test/internals/reqIdGenFactory.test.js.tap +0 -74
- package/.tap/test-results/test/internals/request-validate.test.js.tap +0 -384
- package/.tap/test-results/test/internals/request.test.js.tap +0 -163
- package/.tap/test-results/test/internals/server.test.js.tap +0 -30
- package/.tap/test-results/test/internals/validation.test.js.tap +0 -121
- package/.tap/test-results/test/keepAliveTimeout.test.js.tap +0 -12
- package/.tap/test-results/test/listen.1.test.js.tap +0 -31
- package/.tap/test-results/test/listen.2.test.js.tap +0 -46
- package/.tap/test-results/test/listen.3.test.js.tap +0 -25
- package/.tap/test-results/test/listen.4.test.js.tap +0 -51
- package/.tap/test-results/test/lock.test.js.tap +0 -29
- package/.tap/test-results/test/logger/instantiation.test.js.tap +0 -92
- package/.tap/test-results/test/logger/logging.test.js.tap +0 -117
- package/.tap/test-results/test/logger/options.test.js.tap +0 -165
- package/.tap/test-results/test/logger/request.test.js.tap +0 -82
- package/.tap/test-results/test/logger/response.test.js.tap +0 -38
- package/.tap/test-results/test/maxRequestsPerSocket.test.js.tap +0 -44
- package/.tap/test-results/test/method-missing.test.js.tap +0 -8
- package/.tap/test-results/test/middleware.test.js.tap +0 -17
- package/.tap/test-results/test/mkcalendar.test.js.tap +0 -43
- package/.tap/test-results/test/mkcol.test.js.tap +0 -14
- package/.tap/test-results/test/move.test.js.tap +0 -15
- package/.tap/test-results/test/noop-set.test.js.tap +0 -8
- package/.tap/test-results/test/nullable-validation.test.js.tap +0 -36
- package/.tap/test-results/test/options.error-handler.test.js.tap +0 -186
- package/.tap/test-results/test/options.test.js.tap +0 -174
- package/.tap/test-results/test/output-validation.test.js.tap +0 -66
- package/.tap/test-results/test/patch.error-handler.test.js.tap +0 -206
- package/.tap/test-results/test/patch.test.js.tap +0 -182
- package/.tap/test-results/test/plugin.1.test.js.tap +0 -78
- package/.tap/test-results/test/plugin.2.test.js.tap +0 -102
- package/.tap/test-results/test/plugin.3.test.js.tap +0 -58
- package/.tap/test-results/test/plugin.4.test.js.tap +0 -164
- package/.tap/test-results/test/post-empty-body.test.js.tap +0 -8
- package/.tap/test-results/test/pretty-print.test.js.tap +0 -82
- package/.tap/test-results/test/promises.test.js.tap +0 -46
- package/.tap/test-results/test/propfind.test.js.tap +0 -43
- package/.tap/test-results/test/proppatch.test.js.tap +0 -29
- package/.tap/test-results/test/proto-poisoning.test.js.tap +0 -47
- package/.tap/test-results/test/put.error-handler.test.js.tap +0 -206
- package/.tap/test-results/test/put.test.js.tap +0 -182
- package/.tap/test-results/test/register.test.js.tap +0 -61
- package/.tap/test-results/test/reply-code.test.js.tap +0 -40
- package/.tap/test-results/test/reply-earlyHints.test.js.tap +0 -22
- package/.tap/test-results/test/reply-error.test.js.tap +0 -643
- package/.tap/test-results/test/reply-trailers.test.js.tap +0 -176
- package/.tap/test-results/test/report.test.js.tap +0 -43
- package/.tap/test-results/test/request-error.test.js.tap +0 -98
- package/.tap/test-results/test/request-id.test.js.tap +0 -38
- package/.tap/test-results/test/request.deprecated.test.js.tap +0 -13
- package/.tap/test-results/test/requestTimeout.test.js.tap +0 -21
- package/.tap/test-results/test/route-hooks.test.js.tap +0 -498
- package/.tap/test-results/test/route-prefix.test.js.tap +0 -195
- package/.tap/test-results/test/route-shorthand.test.js.tap +0 -190
- package/.tap/test-results/test/route.1.test.js.tap +0 -93
- package/.tap/test-results/test/route.2.test.js.tap +0 -28
- package/.tap/test-results/test/route.3.test.js.tap +0 -39
- package/.tap/test-results/test/route.4.test.js.tap +0 -32
- package/.tap/test-results/test/route.5.test.js.tap +0 -54
- package/.tap/test-results/test/route.6.test.js.tap +0 -81
- package/.tap/test-results/test/route.7.test.js.tap +0 -93
- package/.tap/test-results/test/route.8.test.js.tap +0 -38
- package/.tap/test-results/test/router-options.test.js.tap +0 -104
- package/.tap/test-results/test/same-shape.test.js.tap +0 -22
- package/.tap/test-results/test/schema-examples.test.js.tap +0 -85
- package/.tap/test-results/test/schema-feature.test.js.tap +0 -445
- package/.tap/test-results/test/schema-serialization.test.js.tap +0 -194
- package/.tap/test-results/test/schema-special-usage.test.js.tap +0 -186
- package/.tap/test-results/test/schema-validation.test.js.tap +0 -199
- package/.tap/test-results/test/search.test.js.tap +0 -77
- package/.tap/test-results/test/serialize-response.test.js.tap +0 -26
- package/.tap/test-results/test/server.test.js.tap +0 -65
- package/.tap/test-results/test/set-error-handler.test.js.tap +0 -7
- package/.tap/test-results/test/skip-reply-send.test.js.tap +0 -272
- package/.tap/test-results/test/stream.1.test.js.tap +0 -36
- package/.tap/test-results/test/stream.2.test.js.tap +0 -20
- package/.tap/test-results/test/stream.3.test.js.tap +0 -34
- package/.tap/test-results/test/stream.4.test.js.tap +0 -40
- package/.tap/test-results/test/stream.5.test.js.tap +0 -37
- package/.tap/test-results/test/sync-routes.test.js.tap +0 -19
- package/.tap/test-results/test/throw.test.js.tap +0 -116
- package/.tap/test-results/test/trace.test.js.tap +0 -7
- package/.tap/test-results/test/trust-proxy.test.js.tap +0 -109
- package/.tap/test-results/test/type-provider.test.js.tap +0 -12
- package/.tap/test-results/test/unlock.test.js.tap +0 -14
- package/.tap/test-results/test/upgrade.test.js.tap +0 -8
- package/.tap/test-results/test/url-rewriting.test.js.tap +0 -39
- package/.tap/test-results/test/useSemicolonDelimiter.test.js.tap +0 -33
- package/.tap/test-results/test/validation-error-handling.test.js.tap +0 -180
- package/.tap/test-results/test/versioned-routes.test.js.tap +0 -151
- package/.tap/test-results/test/web-api.test.js.tap +0 -51
- package/.tap/test-results/test/wrapThenable.test.js.tap +0 -11
- package/EXPENSE_POLICY.md +0 -105
- package/test/default-route.test.js +0 -88
- package/test/listen.deprecated.test.js +0 -229
- package/test/unsupported-httpversion.test.js +0 -31
- package/types/.eslintrc.json +0 -48
package/types/instance.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { FastifyBaseLogger, FastifyChildLoggerFactory } from './logger'
|
|
|
9
9
|
import { FastifyRegister } from './register'
|
|
10
10
|
import { FastifyReply } from './reply'
|
|
11
11
|
import { FastifyRequest } from './request'
|
|
12
|
-
import {
|
|
12
|
+
import { RouteGenericInterface, RouteHandlerMethod, RouteOptions, RouteShorthandMethod } from './route'
|
|
13
13
|
import {
|
|
14
14
|
FastifySchema,
|
|
15
15
|
FastifySchemaCompiler,
|
|
@@ -19,7 +19,8 @@ import {
|
|
|
19
19
|
} from './schema'
|
|
20
20
|
import {
|
|
21
21
|
FastifyTypeProvider,
|
|
22
|
-
FastifyTypeProviderDefault
|
|
22
|
+
FastifyTypeProviderDefault,
|
|
23
|
+
SafePromiseLike
|
|
23
24
|
} from './type-provider'
|
|
24
25
|
import { ContextConfigDefault, HTTPMethods, RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerBase, RawServerDefault } from './utils'
|
|
25
26
|
|
|
@@ -30,7 +31,7 @@ export interface PrintRoutesOptions {
|
|
|
30
31
|
includeHooks?: boolean
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
type AsyncFunction = (...args: any) => Promise<any
|
|
34
|
+
type AsyncFunction = (...args: any) => Promise<any>
|
|
34
35
|
|
|
35
36
|
export interface FastifyListenOptions {
|
|
36
37
|
/**
|
|
@@ -96,7 +97,7 @@ type GetterSetter<This, T> = T | {
|
|
|
96
97
|
type DecorationMethod<This, Return = This> = {
|
|
97
98
|
<
|
|
98
99
|
// Need to disable "no-use-before-define" to maintain backwards compatibility, as else decorate<Foo> would suddenly mean something new
|
|
99
|
-
|
|
100
|
+
|
|
100
101
|
T extends (P extends keyof This ? This[P] : unknown),
|
|
101
102
|
P extends string | symbol = string | symbol
|
|
102
103
|
>(property: P,
|
|
@@ -109,9 +110,7 @@ type DecorationMethod<This, Return = This> = {
|
|
|
109
110
|
|
|
110
111
|
(property: string | symbol): Return;
|
|
111
112
|
|
|
112
|
-
(property: string | symbol, value: null): Return;
|
|
113
|
-
|
|
114
|
-
(property: string | symbol, value: null|undefined, dependencies: string[]): Return;
|
|
113
|
+
(property: string | symbol, value: null | undefined, dependencies: string[]): Return;
|
|
115
114
|
}
|
|
116
115
|
|
|
117
116
|
/**
|
|
@@ -122,7 +121,7 @@ export interface FastifyInstance<
|
|
|
122
121
|
RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
|
123
122
|
RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,
|
|
124
123
|
Logger extends FastifyBaseLogger = FastifyBaseLogger,
|
|
125
|
-
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
124
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
126
125
|
> {
|
|
127
126
|
server: RawServer;
|
|
128
127
|
pluginName: string;
|
|
@@ -137,14 +136,14 @@ export interface FastifyInstance<
|
|
|
137
136
|
getSchema(schemaId: string): unknown;
|
|
138
137
|
getSchemas(): Record<string, unknown>;
|
|
139
138
|
|
|
140
|
-
after(): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider> &
|
|
139
|
+
after(): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider> & SafePromiseLike<undefined>;
|
|
141
140
|
after(afterListener: (err: Error | null) => void): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
|
|
142
141
|
|
|
143
142
|
close(): Promise<undefined>;
|
|
144
143
|
close(closeListener: () => void): undefined;
|
|
145
144
|
|
|
146
145
|
/** Alias for {@linkcode FastifyInstance.close()} */
|
|
147
|
-
|
|
146
|
+
|
|
148
147
|
// @ts-ignore - type only available for @types/node >=17 or typescript >= 5.2
|
|
149
148
|
[Symbol.asyncDispose](): Promise<undefined>;
|
|
150
149
|
|
|
@@ -169,61 +168,49 @@ export interface FastifyInstance<
|
|
|
169
168
|
listen(opts?: FastifyListenOptions): Promise<string>;
|
|
170
169
|
listen(callback: (err: Error | null, address: string) => void): void;
|
|
171
170
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
* @see https://github.com/fastify/fastify/pull/3712
|
|
175
|
-
*/
|
|
176
|
-
listen(port: number | string, address: string, backlog: number, callback: (err: Error|null, address: string) => void): void;
|
|
177
|
-
/**
|
|
178
|
-
* @deprecated Variadic listen method is deprecated. Please use `.listen(optionsObject, callback)` instead. The variadic signature will be removed in `fastify@5`
|
|
179
|
-
* @see https://github.com/fastify/fastify/pull/3712
|
|
180
|
-
*/
|
|
181
|
-
listen(port: number | string, address: string, callback: (err: Error|null, address: string) => void): void;
|
|
182
|
-
/**
|
|
183
|
-
* @deprecated Variadic listen method is deprecated. Please use `.listen(optionsObject, callback)` instead. The variadic signature will be removed in `fastify@5`
|
|
184
|
-
* @see https://github.com/fastify/fastify/pull/3712
|
|
185
|
-
*/
|
|
186
|
-
listen(port: number | string, callback: (err: Error|null, address: string) => void): void;
|
|
187
|
-
/**
|
|
188
|
-
* @deprecated Variadic listen method is deprecated. Please use `.listen(optionsObject)` instead. The variadic signature will be removed in `fastify@5`
|
|
189
|
-
* @see https://github.com/fastify/fastify/pull/3712
|
|
190
|
-
*/
|
|
191
|
-
listen(port: number | string, address?: string, backlog?: number): Promise<string>;
|
|
192
|
-
|
|
193
|
-
ready(): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider> & PromiseLike<undefined>;
|
|
194
|
-
ready(readyListener: (err: Error | null) => void): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
|
|
171
|
+
ready(): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider> & SafePromiseLike<undefined>;
|
|
172
|
+
ready(readyListener: (err: Error | null) => void | Promise<void>): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
|
|
195
173
|
|
|
196
|
-
register: FastifyRegister<FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider> &
|
|
174
|
+
register: FastifyRegister<FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider> & SafePromiseLike<undefined>>;
|
|
197
175
|
|
|
198
176
|
routing(req: RawRequest, res: RawReply): void;
|
|
199
|
-
getDefaultRoute(): DefaultRoute<RawRequest, RawReply>;
|
|
200
|
-
setDefaultRoute(defaultRoute: DefaultRoute<RawRequest, RawReply>): void;
|
|
201
177
|
|
|
202
178
|
route<
|
|
203
179
|
RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
|
|
204
180
|
ContextConfig = ContextConfigDefault,
|
|
205
|
-
const SchemaCompiler extends FastifySchema = FastifySchema
|
|
181
|
+
const SchemaCompiler extends FastifySchema = FastifySchema
|
|
206
182
|
>(opts: RouteOptions<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
|
|
207
183
|
|
|
184
|
+
delete: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
208
185
|
get: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
209
186
|
head: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
187
|
+
patch: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
210
188
|
post: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
211
189
|
put: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
212
|
-
delete: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
213
190
|
options: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
214
|
-
|
|
191
|
+
propfind: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
192
|
+
proppatch: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
193
|
+
mkcalendar: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
194
|
+
mkcol: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
195
|
+
copy: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
196
|
+
move: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
197
|
+
lock: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
198
|
+
unlock: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
199
|
+
trace: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
200
|
+
report: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
201
|
+
search: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
215
202
|
all: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
216
203
|
|
|
217
204
|
hasRoute<
|
|
218
205
|
RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
|
|
219
206
|
ContextConfig = ContextConfigDefault,
|
|
220
|
-
SchemaCompiler extends FastifySchema = FastifySchema
|
|
207
|
+
SchemaCompiler extends FastifySchema = FastifySchema
|
|
221
208
|
>(opts: Pick<RouteOptions<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>, 'method' | 'url' | 'constraints'>): boolean;
|
|
222
209
|
|
|
223
210
|
findRoute<
|
|
224
211
|
RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
|
|
225
212
|
ContextConfig = ContextConfigDefault,
|
|
226
|
-
SchemaCompiler extends FastifySchema = FastifySchema
|
|
213
|
+
SchemaCompiler extends FastifySchema = FastifySchema
|
|
227
214
|
>(opts: Pick<RouteOptions<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>, 'method' | 'url' | 'constraints'>): Omit<FindMyWayFindResult<RawServer>, 'store'>;
|
|
228
215
|
|
|
229
216
|
// addHook: overloads
|
package/types/logger.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export type PinoLoggerOptions = pino.LoggerOptions
|
|
|
43
43
|
export type ResSerializerReply<
|
|
44
44
|
RawServer extends RawServerBase,
|
|
45
45
|
RawReply extends FastifyReply<RawServer>
|
|
46
|
-
> = Partial<RawReply> & Pick<RawReply, 'statusCode'
|
|
46
|
+
> = Partial<RawReply> & Pick<RawReply, 'statusCode'>
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
49
|
* Fastify Custom Logger options.
|
|
@@ -51,14 +51,14 @@ export type ResSerializerReply<
|
|
|
51
51
|
export interface FastifyLoggerOptions<
|
|
52
52
|
RawServer extends RawServerBase = RawServerDefault,
|
|
53
53
|
RawRequest extends FastifyRequest<RouteGenericInterface, RawServer, RawRequestDefaultExpression<RawServer>, FastifySchema, FastifyTypeProvider> = FastifyRequest<RouteGenericInterface, RawServer, RawRequestDefaultExpression<RawServer>, FastifySchema, FastifyTypeProviderDefault>,
|
|
54
|
-
RawReply extends FastifyReply<RawServer, RawRequestDefaultExpression<RawServer>, RawReplyDefaultExpression<RawServer>, RouteGenericInterface, ContextConfigDefault, FastifySchema, FastifyTypeProvider> = FastifyReply<RawServer, RawRequestDefaultExpression<RawServer>, RawReplyDefaultExpression<RawServer>, RouteGenericInterface, ContextConfigDefault, FastifySchema, FastifyTypeProviderDefault
|
|
54
|
+
RawReply extends FastifyReply<RawServer, RawRequestDefaultExpression<RawServer>, RawReplyDefaultExpression<RawServer>, RouteGenericInterface, ContextConfigDefault, FastifySchema, FastifyTypeProvider> = FastifyReply<RawServer, RawRequestDefaultExpression<RawServer>, RawReplyDefaultExpression<RawServer>, RouteGenericInterface, ContextConfigDefault, FastifySchema, FastifyTypeProviderDefault>
|
|
55
55
|
> {
|
|
56
56
|
serializers?: {
|
|
57
57
|
req?: (req: RawRequest) => {
|
|
58
58
|
method?: string;
|
|
59
59
|
url?: string;
|
|
60
60
|
version?: string;
|
|
61
|
-
|
|
61
|
+
host?: string;
|
|
62
62
|
remoteAddress?: string;
|
|
63
63
|
remotePort?: number;
|
|
64
64
|
[key: string]: unknown;
|
package/types/plugin.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export type FastifyPluginCallback<
|
|
|
14
14
|
Options extends FastifyPluginOptions = Record<never, never>,
|
|
15
15
|
Server extends RawServerBase = RawServerDefault,
|
|
16
16
|
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
|
|
17
|
-
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
17
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
18
18
|
> = (
|
|
19
19
|
instance: FastifyInstance<Server, RawRequestDefaultExpression<Server>, RawReplyDefaultExpression<Server>, Logger, TypeProvider>,
|
|
20
20
|
opts: Options,
|
|
@@ -30,11 +30,11 @@ export type FastifyPluginAsync<
|
|
|
30
30
|
Options extends FastifyPluginOptions = Record<never, never>,
|
|
31
31
|
Server extends RawServerBase = RawServerDefault,
|
|
32
32
|
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
|
|
33
|
-
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
33
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
34
34
|
> = (
|
|
35
35
|
instance: FastifyInstance<Server, RawRequestDefaultExpression<Server>, RawReplyDefaultExpression<Server>, Logger, TypeProvider>,
|
|
36
36
|
opts: Options
|
|
37
|
-
) => Promise<void
|
|
37
|
+
) => Promise<void>
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
40
|
* Generic plugin type.
|
package/types/reply.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { FastifyBaseLogger } from './logger'
|
|
|
5
5
|
import { FastifyRequest } from './request'
|
|
6
6
|
import { RouteGenericInterface } from './route'
|
|
7
7
|
import { FastifySchema } from './schema'
|
|
8
|
-
import { FastifyReplyType, FastifyTypeProvider, FastifyTypeProviderDefault, ResolveFastifyReplyType
|
|
8
|
+
import { CallSerializerTypeProvider, FastifyReplyType, FastifyTypeProvider, FastifyTypeProviderDefault, ResolveFastifyReplyType } from './type-provider'
|
|
9
9
|
import { CodeToReplyKey, ContextConfigDefault, HttpKeys, RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerBase, RawServerDefault, ReplyDefault, ReplyKeysToCodes, HttpHeader } from './utils'
|
|
10
10
|
|
|
11
11
|
export interface ReplyGenericInterface {
|
|
@@ -18,13 +18,13 @@ type ReplyTypeConstrainer<RouteGenericReply, Code extends ReplyKeysToCodes<keyof
|
|
|
18
18
|
RouteGenericReply extends HttpCodesReplyType & Record<Exclude<keyof RouteGenericReply, keyof HttpCodesReplyType>, never> ?
|
|
19
19
|
Code extends keyof RouteGenericReply ? RouteGenericReply[Code] :
|
|
20
20
|
CodeToReplyKey<Code> extends keyof RouteGenericReply ? RouteGenericReply[CodeToReplyKey<Code>] : unknown :
|
|
21
|
-
RouteGenericReply
|
|
21
|
+
RouteGenericReply
|
|
22
22
|
|
|
23
23
|
export type ResolveReplyTypeWithRouteGeneric<RouteGenericReply, Code extends ReplyKeysToCodes<keyof RouteGenericReply>,
|
|
24
24
|
SchemaCompiler extends FastifySchema = FastifySchema,
|
|
25
25
|
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault> =
|
|
26
26
|
Code extends keyof SchemaCompiler['response'] ?
|
|
27
|
-
|
|
27
|
+
CallSerializerTypeProvider<TypeProvider, SchemaCompiler['response'][Code]> :
|
|
28
28
|
ResolveFastifyReplyType<TypeProvider, SchemaCompiler, { Reply: ReplyTypeConstrainer<RouteGenericReply, Code> }>
|
|
29
29
|
/**
|
|
30
30
|
* FastifyReply is an instance of the standard http or http2 reply types.
|
|
@@ -62,21 +62,18 @@ export interface FastifyReply<
|
|
|
62
62
|
*/
|
|
63
63
|
redirect(statusCode: number, url: string): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
|
|
64
64
|
redirect(url: string, statusCode?: number): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
|
|
65
|
+
writeEarlyHints(hints: Record<string, string | string[]>, callback?: () => void): void;
|
|
65
66
|
hijack(): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
|
|
66
67
|
callNotFound(): void;
|
|
67
|
-
/**
|
|
68
|
-
* @deprecated Use the Reply#elapsedTime property instead
|
|
69
|
-
*/
|
|
70
|
-
getResponseTime(): number;
|
|
71
68
|
type(contentType: string): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
|
|
72
69
|
serializer(fn: (payload: any) => string): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
|
|
73
70
|
serialize(payload: any): string | ArrayBuffer | Buffer;
|
|
74
71
|
// Serialization Methods
|
|
75
|
-
getSerializationFunction(httpStatus: string, contentType?: string): ((payload: {[key: string]: unknown}) => string) | undefined;
|
|
76
|
-
getSerializationFunction(schema: {[key: string]: unknown}): ((payload: {[key: string]: unknown}) => string) | undefined;
|
|
77
|
-
compileSerializationSchema(schema: {[key: string]: unknown}, httpStatus?: string, contentType?: string): (payload: {[key: string]: unknown}) => string;
|
|
78
|
-
serializeInput(input: {[key: string]: unknown}, schema: {[key: string]: unknown}, httpStatus?: string, contentType?: string): string;
|
|
79
|
-
serializeInput(input: {[key: string]: unknown}, httpStatus: string, contentType?: string): unknown;
|
|
72
|
+
getSerializationFunction(httpStatus: string, contentType?: string): ((payload: { [key: string]: unknown }) => string) | undefined;
|
|
73
|
+
getSerializationFunction(schema: { [key: string]: unknown }): ((payload: { [key: string]: unknown }) => string) | undefined;
|
|
74
|
+
compileSerializationSchema(schema: { [key: string]: unknown }, httpStatus?: string, contentType?: string): (payload: { [key: string]: unknown }) => string;
|
|
75
|
+
serializeInput(input: { [key: string]: unknown }, schema: { [key: string]: unknown }, httpStatus?: string, contentType?: string): string;
|
|
76
|
+
serializeInput(input: { [key: string]: unknown }, httpStatus: string, contentType?: string): unknown;
|
|
80
77
|
then(fulfilled: () => void, rejected: (err: Error) => void): void;
|
|
81
78
|
trailer: (
|
|
82
79
|
key: string,
|
package/types/request.d.ts
CHANGED
|
@@ -75,6 +75,8 @@ export interface FastifyRequest<RouteGeneric extends RouteGenericInterface = Rou
|
|
|
75
75
|
readonly req: RawRequest & RouteGeneric['Headers']; // this enables the developer to extend the existing http(s|2) headers list
|
|
76
76
|
readonly ip: string;
|
|
77
77
|
readonly ips?: string[];
|
|
78
|
+
readonly host: string;
|
|
79
|
+
readonly port: number;
|
|
78
80
|
readonly hostname: string;
|
|
79
81
|
readonly url: string;
|
|
80
82
|
readonly originalUrl: string;
|
|
@@ -87,9 +89,9 @@ export interface FastifyRequest<RouteGeneric extends RouteGenericInterface = Rou
|
|
|
87
89
|
readonly socket: RawRequest['socket'];
|
|
88
90
|
|
|
89
91
|
getValidationFunction(httpPart: HTTPRequestPart): ValidationFunction
|
|
90
|
-
getValidationFunction(schema: {[key: string]: any}): ValidationFunction
|
|
91
|
-
compileValidationSchema(schema: {[key: string]: any}, httpPart?: HTTPRequestPart): ValidationFunction
|
|
92
|
-
validateInput(input: any, schema: {[key: string]: any}, httpPart?: HTTPRequestPart): boolean
|
|
92
|
+
getValidationFunction(schema: { [key: string]: any }): ValidationFunction
|
|
93
|
+
compileValidationSchema(schema: { [key: string]: any }, httpPart?: HTTPRequestPart): ValidationFunction
|
|
94
|
+
validateInput(input: any, schema: { [key: string]: any }, httpPart?: HTTPRequestPart): boolean
|
|
93
95
|
validateInput(input: any, httpPart?: HTTPRequestPart): boolean
|
|
94
96
|
|
|
95
97
|
// Prefer `socket` over deprecated `connection` property in node 13.0.0 or higher
|
package/types/route.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FastifyError } from '@fastify/error'
|
|
2
2
|
import { ConstraintStrategy } from 'find-my-way'
|
|
3
|
-
import {
|
|
3
|
+
import { FastifyContextConfig } from './context'
|
|
4
4
|
import { onErrorMetaHookHandler, onRequestAbortMetaHookHandler, onRequestMetaHookHandler, onResponseMetaHookHandler, onSendMetaHookHandler, onTimeoutMetaHookHandler, preHandlerMetaHookHandler, preParsingMetaHookHandler, preSerializationMetaHookHandler, preValidationMetaHookHandler } from './hooks'
|
|
5
5
|
import { FastifyInstance } from './instance'
|
|
6
6
|
import { FastifyBaseLogger, FastifyChildLoggerFactory, LogLevel } from './logger'
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
FastifyTypeProviderDefault,
|
|
13
13
|
ResolveFastifyReplyReturnType
|
|
14
14
|
} from './type-provider'
|
|
15
|
-
import { ContextConfigDefault, HTTPMethods,
|
|
15
|
+
import { ContextConfigDefault, HTTPMethods, RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerBase, RawServerDefault } from './utils'
|
|
16
16
|
|
|
17
17
|
export interface FastifyRouteConfig {
|
|
18
18
|
url: string;
|
|
@@ -48,44 +48,44 @@ export interface RouteShorthandOptions<
|
|
|
48
48
|
attachValidation?: boolean;
|
|
49
49
|
exposeHeadRoute?: boolean;
|
|
50
50
|
|
|
51
|
-
validatorCompiler?: FastifySchemaCompiler<
|
|
52
|
-
serializerCompiler?: FastifySerializerCompiler<
|
|
51
|
+
validatorCompiler?: FastifySchemaCompiler<NoInfer<SchemaCompiler>>;
|
|
52
|
+
serializerCompiler?: FastifySerializerCompiler<NoInfer<SchemaCompiler>>;
|
|
53
53
|
bodyLimit?: number;
|
|
54
54
|
logLevel?: LogLevel;
|
|
55
|
-
config?:
|
|
55
|
+
config?: FastifyContextConfig & ContextConfig;
|
|
56
56
|
version?: string;
|
|
57
57
|
constraints?: RouteConstraint,
|
|
58
|
-
prefixTrailingSlash?: 'slash'|'no-slash'|'both';
|
|
58
|
+
prefixTrailingSlash?: 'slash' | 'no-slash' | 'both';
|
|
59
59
|
errorHandler?: (
|
|
60
60
|
this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,
|
|
61
61
|
error: FastifyError,
|
|
62
|
-
request: FastifyRequest<RouteGeneric, RawServer, RawRequest,
|
|
63
|
-
reply: FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
62
|
+
request: FastifyRequest<RouteGeneric, RawServer, RawRequest, NoInfer<SchemaCompiler>, TypeProvider, ContextConfig, Logger>,
|
|
63
|
+
reply: FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider>
|
|
64
64
|
) => void;
|
|
65
65
|
childLoggerFactory?: FastifyChildLoggerFactory<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
|
|
66
66
|
schemaErrorFormatter?: SchemaErrorFormatter;
|
|
67
67
|
|
|
68
68
|
// hooks
|
|
69
|
-
onRequest?: onRequestMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
70
|
-
| onRequestMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
71
|
-
preParsing?: preParsingMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
72
|
-
| preParsingMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
73
|
-
preValidation?: preValidationMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
74
|
-
| preValidationMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
75
|
-
preHandler?: preHandlerMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
76
|
-
| preHandlerMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
77
|
-
preSerialization?: preSerializationMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
78
|
-
| preSerializationMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
79
|
-
onSend?: onSendMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
80
|
-
| onSendMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
81
|
-
onResponse?: onResponseMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
82
|
-
| onResponseMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
83
|
-
onTimeout?: onTimeoutMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
84
|
-
| onTimeoutMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
85
|
-
onError?: onErrorMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError,
|
|
86
|
-
| onErrorMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError,
|
|
87
|
-
onRequestAbort?: onRequestAbortMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
88
|
-
| onRequestAbortMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
69
|
+
onRequest?: onRequestMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
70
|
+
| onRequestMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
71
|
+
preParsing?: preParsingMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
72
|
+
| preParsingMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
73
|
+
preValidation?: preValidationMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
74
|
+
| preValidationMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
75
|
+
preHandler?: preHandlerMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
76
|
+
| preHandlerMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
77
|
+
preSerialization?: preSerializationMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
78
|
+
| preSerializationMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
79
|
+
onSend?: onSendMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
80
|
+
| onSendMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
81
|
+
onResponse?: onResponseMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
82
|
+
| onResponseMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
83
|
+
onTimeout?: onTimeoutMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
84
|
+
| onTimeoutMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
85
|
+
onError?: onErrorMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
86
|
+
| onErrorMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
87
|
+
onRequestAbort?: onRequestAbortMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
88
|
+
| onRequestAbortMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
91
91
|
* Route handler method declaration.
|
|
@@ -119,7 +119,7 @@ export interface RouteShorthandOptionsWithHandler<
|
|
|
119
119
|
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
|
|
120
120
|
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
121
121
|
> extends RouteShorthandOptions<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> {
|
|
122
|
-
handler: RouteHandlerMethod<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
122
|
+
handler: RouteHandlerMethod<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
/**
|
|
@@ -162,7 +162,7 @@ export interface RouteOptions<
|
|
|
162
162
|
> extends RouteShorthandOptions<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> {
|
|
163
163
|
method: HTTPMethods | HTTPMethods[];
|
|
164
164
|
url: string;
|
|
165
|
-
handler: RouteHandlerMethod<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig,
|
|
165
|
+
handler: RouteHandlerMethod<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>;
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
export type RouteHandler<
|
|
@@ -183,4 +183,4 @@ export type RouteHandler<
|
|
|
183
183
|
export type DefaultRoute<Request, Reply> = (
|
|
184
184
|
req: Request,
|
|
185
185
|
res: Reply,
|
|
186
|
-
) => void
|
|
186
|
+
) => void
|
package/types/schema.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ValidatorFactory } from '@fastify/ajv-compiler'
|
|
2
2
|
import { SerializerFactory } from '@fastify/fast-json-stringify-compiler'
|
|
3
|
-
import { FastifyInstance } from '../fastify'
|
|
3
|
+
import { FastifyInstance, SafePromiseLike } from '../fastify'
|
|
4
4
|
/**
|
|
5
5
|
* Schemas in Fastify follow the JSON-Schema standard. For this reason
|
|
6
6
|
* we have opted to not ship strict schema based types. Instead we provide
|
|
@@ -33,7 +33,7 @@ export interface FastifySchemaValidationError {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
export interface FastifyValidationResult {
|
|
36
|
-
(data: any): boolean |
|
|
36
|
+
(data: any): boolean | SafePromiseLike<any> | { error?: Error, value?: any }
|
|
37
37
|
errors?: FastifySchemaValidationError[] | null;
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -44,7 +44,7 @@ export type FastifySchemaCompiler<T> = (routeSchema: FastifyRouteSchemaDef<T>) =
|
|
|
44
44
|
|
|
45
45
|
export type FastifySerializerCompiler<T> = (routeSchema: FastifyRouteSchemaDef<T>) => (data: any) => string
|
|
46
46
|
|
|
47
|
-
export interface FastifySchemaControllerOptions{
|
|
47
|
+
export interface FastifySchemaControllerOptions {
|
|
48
48
|
bucket?: (parentSchemas?: unknown) => {
|
|
49
49
|
add(schema: unknown): FastifyInstance;
|
|
50
50
|
getSchema(schemaId: string): unknown;
|
package/types/serverFactory.d.ts
CHANGED
|
@@ -9,8 +9,8 @@ export type FastifyServerFactoryHandler<
|
|
|
9
9
|
RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>
|
|
10
10
|
> =
|
|
11
11
|
RawServer extends http.Server | https.Server ?
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
(request: http.IncomingMessage & RawRequest, response: http.ServerResponse & RawReply) => void :
|
|
13
|
+
(request: http2.Http2ServerRequest & RawRequest, response: http2.Http2ServerResponse & RawReply) => void
|
|
14
14
|
|
|
15
15
|
export interface FastifyServerFactory<
|
|
16
16
|
RawServer extends RawServerBase = RawServerDefault
|
package/types/type-provider.d.ts
CHANGED
|
@@ -7,14 +7,15 @@ import { RecordKeysToLowercase } from './utils'
|
|
|
7
7
|
// -----------------------------------------------------------------------------------------------
|
|
8
8
|
|
|
9
9
|
export interface FastifyTypeProvider {
|
|
10
|
-
readonly
|
|
11
|
-
readonly
|
|
10
|
+
readonly schema: unknown,
|
|
11
|
+
readonly validator: unknown,
|
|
12
|
+
readonly serializer: unknown,
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
15
15
|
export interface FastifyTypeProviderDefault extends FastifyTypeProvider {}
|
|
16
16
|
|
|
17
|
-
export type
|
|
17
|
+
export type CallValidatorTypeProvider<F extends FastifyTypeProvider, S> = (F & { schema: S })['validator']
|
|
18
|
+
export type CallSerializerTypeProvider<F extends FastifyTypeProvider, S> = (F & { schema: S })['serializer']
|
|
18
19
|
|
|
19
20
|
// -----------------------------------------------------------------------------------------------
|
|
20
21
|
// FastifyRequestType
|
|
@@ -32,13 +33,13 @@ type KeysOf<T> = T extends any ? keyof T : never
|
|
|
32
33
|
|
|
33
34
|
// Resolves Request types either from generic argument or Type Provider.
|
|
34
35
|
type ResolveRequestParams<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> =
|
|
35
|
-
UndefinedToUnknown<KeysOf<RouteGeneric['Params']> extends never ?
|
|
36
|
+
UndefinedToUnknown<KeysOf<RouteGeneric['Params']> extends never ? CallValidatorTypeProvider<TypeProvider, SchemaCompiler['params']> : RouteGeneric['Params']>
|
|
36
37
|
type ResolveRequestQuerystring<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> =
|
|
37
|
-
UndefinedToUnknown<KeysOf<RouteGeneric['Querystring']> extends never ?
|
|
38
|
+
UndefinedToUnknown<KeysOf<RouteGeneric['Querystring']> extends never ? CallValidatorTypeProvider<TypeProvider, SchemaCompiler['querystring']> : RouteGeneric['Querystring']>
|
|
38
39
|
type ResolveRequestHeaders<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> =
|
|
39
|
-
UndefinedToUnknown<KeysOf<RouteGeneric['Headers']> extends never ?
|
|
40
|
+
UndefinedToUnknown<KeysOf<RouteGeneric['Headers']> extends never ? CallValidatorTypeProvider<TypeProvider, SchemaCompiler['headers']> : RouteGeneric['Headers']>
|
|
40
41
|
type ResolveRequestBody<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> =
|
|
41
|
-
UndefinedToUnknown<KeysOf<RouteGeneric['Body']> extends never ?
|
|
42
|
+
UndefinedToUnknown<KeysOf<RouteGeneric['Body']> extends never ? CallValidatorTypeProvider<TypeProvider, SchemaCompiler['body']> : RouteGeneric['Body']>
|
|
42
43
|
|
|
43
44
|
// The target request type. This type is inferenced on fastify 'requests' via generic argument assignment
|
|
44
45
|
export interface FastifyRequestType<Params = unknown, Querystring = unknown, Headers = unknown, Body = unknown> {
|
|
@@ -63,8 +64,8 @@ export interface ResolveFastifyRequestType<TypeProvider extends FastifyTypeProvi
|
|
|
63
64
|
// Resolves the Reply type by taking a union of response status codes and content-types
|
|
64
65
|
type ResolveReplyFromSchemaCompiler<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema> = {
|
|
65
66
|
[K1 in keyof SchemaCompiler['response']]: SchemaCompiler['response'][K1] extends { content: { [keyof: string]: { schema: unknown } } } ? ({
|
|
66
|
-
[K2 in keyof SchemaCompiler['response'][K1]['content']]:
|
|
67
|
-
} extends infer Result ? Result[keyof Result] : unknown) :
|
|
67
|
+
[K2 in keyof SchemaCompiler['response'][K1]['content']]: CallSerializerTypeProvider<TypeProvider, SchemaCompiler['response'][K1]['content'][K2]['schema']>
|
|
68
|
+
} extends infer Result ? Result[keyof Result] : unknown) : CallSerializerTypeProvider<TypeProvider, SchemaCompiler['response'][K1]>
|
|
68
69
|
} extends infer Result ? Result[keyof Result] : unknown;
|
|
69
70
|
|
|
70
71
|
// The target reply type. This type is inferenced on fastify 'replies' via generic argument assignment
|
|
@@ -83,13 +84,22 @@ export type ResolveFastifyReplyType<TypeProvider extends FastifyTypeProvider, Sc
|
|
|
83
84
|
export type ResolveFastifyReplyReturnType<
|
|
84
85
|
TypeProvider extends FastifyTypeProvider,
|
|
85
86
|
SchemaCompiler extends FastifySchema,
|
|
86
|
-
RouteGeneric extends RouteGenericInterface
|
|
87
|
+
RouteGeneric extends RouteGenericInterface
|
|
87
88
|
> = ResolveFastifyReplyType<
|
|
88
89
|
TypeProvider,
|
|
89
90
|
SchemaCompiler,
|
|
90
91
|
RouteGeneric
|
|
91
92
|
> extends infer Return ?
|
|
92
|
-
|
|
93
|
+
(Return | void | Promise<Return | void>)
|
|
93
94
|
// review: support both async and sync return types
|
|
94
95
|
// (Promise<Return> | Return | Promise<void> | void)
|
|
95
96
|
: unknown
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* This branded type is needed to indicate APIs that return Promise-likes which can
|
|
100
|
+
* safely "float" (not have rejections handled by calling code).
|
|
101
|
+
*
|
|
102
|
+
* Please refer to the following Github issue for more info:
|
|
103
|
+
* https://github.com/fastify/fastify/issues/5498
|
|
104
|
+
*/
|
|
105
|
+
export type SafePromiseLike<T> = PromiseLike<T> & { __linterBrands: 'SafePromiseLike' }
|
package/types/utils.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export type RawServerDefault = http.Server
|
|
|
24
24
|
* The default request type based on the server type. Utilizes generic constraining.
|
|
25
25
|
*/
|
|
26
26
|
export type RawRequestDefaultExpression<
|
|
27
|
-
RawServer extends RawServerBase = RawServerDefault
|
|
27
|
+
RawServer extends RawServerBase = RawServerDefault
|
|
28
28
|
> = RawServer extends http.Server | https.Server ? http.IncomingMessage
|
|
29
29
|
: RawServer extends http2.Http2Server | http2.Http2SecureServer ? http2.Http2ServerRequest
|
|
30
30
|
: never
|
|
@@ -50,46 +50,41 @@ export type ReplyDefault = unknown
|
|
|
50
50
|
* Helpers for determining the type of the response payload based on the code
|
|
51
51
|
*/
|
|
52
52
|
|
|
53
|
-
type StringAsNumber<T extends string> = T extends `${infer N extends number}` ? N : never
|
|
54
|
-
type CodeClasses = 1 | 2 | 3 | 4 | 5
|
|
55
|
-
type Digit = 0 |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
|
|
56
|
-
type HttpCodes = StringAsNumber<`${CodeClasses}${Digit}${Digit}
|
|
57
|
-
type HttpKeys = HttpCodes | `${Digit}xx
|
|
53
|
+
type StringAsNumber<T extends string> = T extends `${infer N extends number}` ? N : never
|
|
54
|
+
type CodeClasses = 1 | 2 | 3 | 4 | 5
|
|
55
|
+
type Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
|
|
56
|
+
type HttpCodes = StringAsNumber<`${CodeClasses}${Digit}${Digit}`>
|
|
57
|
+
type HttpKeys = HttpCodes | `${Digit}xx`
|
|
58
58
|
export type StatusCodeReply = {
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
[Key in HttpKeys]?: unknown;
|
|
61
|
-
}
|
|
61
|
+
}
|
|
62
62
|
|
|
63
63
|
// weird TS quirk: https://stackoverflow.com/questions/58977876/generic-conditional-type-resolves-to-never-when-the-generic-type-is-set-to-never
|
|
64
64
|
export type ReplyKeysToCodes<Key> = [Key] extends [never] ? number :
|
|
65
65
|
Key extends HttpCodes ? Key :
|
|
66
66
|
Key extends `${infer X extends CodeClasses}xx` ?
|
|
67
|
-
StringAsNumber<`${X}${Digit}${Digit}`> : number
|
|
67
|
+
StringAsNumber<`${X}${Digit}${Digit}`> : number
|
|
68
68
|
|
|
69
69
|
export type CodeToReplyKey<Code extends number> = `${Code}` extends `${infer FirstDigit extends CodeClasses}${number}`
|
|
70
70
|
? `${FirstDigit}xx`
|
|
71
|
-
: never
|
|
71
|
+
: never
|
|
72
72
|
|
|
73
73
|
export type RecordKeysToLowercase<Input> = Input extends Record<string, unknown>
|
|
74
74
|
? {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
: Input
|
|
75
|
+
[Key in keyof Input as Key extends string
|
|
76
|
+
? Lowercase<Key>
|
|
77
|
+
: Key
|
|
78
|
+
]: Input[Key];
|
|
79
|
+
}
|
|
80
|
+
: Input
|
|
81
81
|
|
|
82
82
|
type OmitIndexSignature<T> = {
|
|
83
83
|
[K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
|
|
84
|
-
}
|
|
84
|
+
}
|
|
85
85
|
|
|
86
86
|
/**
|
|
87
87
|
* HTTP header strings
|
|
88
88
|
* Use this type only for input values, not for output values.
|
|
89
89
|
*/
|
|
90
|
-
export type HttpHeader = keyof OmitIndexSignature<http.OutgoingHttpHeaders> | (string & Record<never, never>)
|
|
91
|
-
|
|
92
|
-
// cheat for similar (same?) behavior as NoInfer but for TS <5.4
|
|
93
|
-
export type NoInferCompat<SC> = {
|
|
94
|
-
[K in keyof SC]: SC[K]
|
|
95
|
-
};
|
|
90
|
+
export type HttpHeader = keyof OmitIndexSignature<http.OutgoingHttpHeaders> | (string & Record<never, never>)
|
package/.c8rc.json
DELETED
package/.eslintrc
DELETED