Skip to content

Commit 8ae78d2

Browse files
authored
feat(types): add fromParameters method (#440)
* feat(types): add fromParameters method Signed-off-by: Roberto Bianchi <roberto.bianchi@spendesk.com> * lint Signed-off-by: Roberto Bianchi <roberto.bianchi@spendesk.com> --------- Signed-off-by: Roberto Bianchi <roberto.bianchi@spendesk.com>
1 parent bbe97fb commit 8ae78d2

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

types/index.d.ts

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import {
44
FastifyPluginCallback,
5+
FastifyReply,
56
FastifyRequest,
67
preHandlerHookHandler,
78
preValidationHookHandler,
@@ -17,6 +18,28 @@ import {
1718
import { ClientOptions, ServerOptions, WebSocket } from 'ws'
1819
import { Logger } from 'pino'
1920

21+
type FastifyReplyWithFromParameters = FastifyReply & {
22+
fromParameters: (
23+
url: string,
24+
params?: unknown,
25+
prefix?: string
26+
) => { url: string; options: unknown };
27+
}
28+
29+
type ProxyPreHandlerHookHandler = (
30+
this: preHandlerHookHandler,
31+
request: Parameters<preHandlerHookHandler>[0],
32+
reply: FastifyReplyWithFromParameters,
33+
done: Parameters<preHandlerHookHandler>[2]
34+
) => void
35+
36+
type ProxyPreValidationHookHandler = (
37+
this: preValidationHookHandler,
38+
request: Parameters<preValidationHookHandler>[0],
39+
reply: FastifyReplyWithFromParameters,
40+
done: Parameters<preValidationHookHandler>[2]
41+
) => void
42+
2043
interface WebSocketHooks {
2144
onConnect?: (context: { log: Logger }, source: WebSocket, target: WebSocket) => void;
2245
onDisconnect?: (context: { log: Logger }, source: WebSocket) => void;
@@ -42,6 +65,7 @@ interface FastifyHttpProxyWebsocketOptionsEnabled {
4265
wsHooks?: WebSocketHooks;
4366
wsReconnect?: WebSocketReconnectOptions;
4467
}
68+
4569
interface FastifyHttpProxyWebsocketOptionsDisabled {
4670
websocket?: false | never;
4771
wsUpstream?: never;
@@ -64,9 +88,9 @@ declare namespace fastifyHttpProxy {
6488
prefix?: string;
6589
rewritePrefix?: string;
6690
proxyPayloads?: boolean;
67-
preHandler?: preHandlerHookHandler;
68-
beforeHandler?: preHandlerHookHandler;
69-
preValidation?: preValidationHookHandler;
91+
preHandler?: ProxyPreHandlerHookHandler;
92+
beforeHandler?: ProxyPreHandlerHookHandler;
93+
preValidation?: ProxyPreValidationHookHandler;
7094
config?: Object;
7195
replyOptions?: FastifyReplyFromHooks;
7296
wsClientOptions?: ClientOptions & { queryString?: { [key: string]: unknown } | QueryStringFunction; };

types/index.test-d.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,21 @@ app.register(fastifyHttpProxy, {
2525
preHandler: (request, reply) => {
2626
expectType<RawRequestDefaultExpression>(request.raw)
2727
expectType<RawReplyDefaultExpression>(reply.raw)
28+
expectType<(url: string, params?: unknown, prefix?: string) => { url: string; options: unknown }>(reply.fromParameters)
2829
},
2930
beforeHandler: (request, reply) => {
3031
expectType<RawRequestDefaultExpression>(request.raw)
3132
expectType<RawReplyDefaultExpression>(reply.raw)
33+
expectType<(url: string, params?: unknown, prefix?: string) => { url: string; options: unknown }>(reply.fromParameters)
3234
},
3335
preValidation: (request, reply) => {
3436
expectType<RawRequestDefaultExpression>(request.raw)
3537
expectType<RawReplyDefaultExpression>(reply.raw)
38+
expectType<(url: string, params?: unknown, prefix?: string) => { url: string; options: unknown }>(reply.fromParameters)
39+
40+
const result = reply.fromParameters('/')
41+
expectType<unknown>(result.options)
42+
expectType<string>(result.url)
3643
},
3744
base: 'whatever',
3845
cacheURLs: 10,

0 commit comments

Comments
 (0)