Skip to content

Commit

Permalink
fix: πŸ› route payload options missing types
Browse files Browse the repository at this point in the history
🎟️ References #4505 #4501
  • Loading branch information
damusix authored and Marsup committed Jun 12, 2024
1 parent 6068875 commit 68f2774
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 7 deletions.
14 changes: 8 additions & 6 deletions lib/types/route.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,13 @@ export interface RouteOptionsPayload {
*/
maxBytes?: number | undefined;

/**
* @default 1000
* Limits the size of incoming payloads to the specified byte count. Allowing very large payloads may cause the server to run out of memory.
* [See docs](https://github.com/hapijs/hapi/blob/master/API.md#-routeoptionspayloadmaxparts)
*/
maxParts?: number;

/**
* @default none.
* Overrides payload processing for multipart requests. Value can be one of:
Expand All @@ -267,12 +274,7 @@ export interface RouteOptionsPayload {
* * * * payload - the processed part payload.
* [See docs](https://github.com/hapijs/hapi/blob/master/API.md#-routeoptionspayloadmultipart)
*/
multipart?:
| false
| {
output: PayloadOutput | 'annotated';
}
| undefined;
multipart?: boolean | { output: PayloadOutput | 'annotated' };

/**
* @default 'data'.
Expand Down
2 changes: 2 additions & 0 deletions lib/types/server/methods.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ export type ServerMethod = (...args: any[]) => any;
*/
export interface ServerMethodCache extends PolicyOptions<any> {
generateTimeout: number | false;
cache?: string;
segment?: string;
}

/**
Expand Down
30 changes: 29 additions & 1 deletion test/types/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { types as lab } from '@hapi/lab';
import { expect } from '@hapi/code';
import * as CatboxMemory from '@hapi/catbox-memory';

import {
Plugin,
Expand Down Expand Up @@ -39,11 +40,17 @@ interface RequestDecorations {
type AppRequest = Request<RequestDecorations>;

const route: ServerRoute<RequestDecorations> = {
method: 'GET',
method: 'POST',
path: '/',
options: {
app: {
prefix: ['xx-']
},
payload: {
maxParts: 100,
maxBytes: 1024 * 1024,
output: 'stream',
multipart: true
}
},
handler: (request: AppRequest, h: ResponseToolkit) => {
Expand Down Expand Up @@ -96,3 +103,24 @@ check.type<RequestRoute | null>(server.match('get', '/'));
const sum = loadedServer.plugins.test.add(1, 2);
expect(sum).to.equal(130);
check.type<number>(sum);

server.cache.provision({
name: 'some-cache',
provider: {
constructor: CatboxMemory.Engine,
options: {
partition: 'test'
}
}
})

server.method('test.add', (a: number, b: number) => a + b, {
bind: server,
cache: {
expiresIn: 1000,
generateTimeout: 100,
cache: 'some-cache',
segment: 'test-segment',
},
generateKey: (a: number, b: number) => `${a}${b}`
});

0 comments on commit 68f2774

Please sign in to comment.