Skip to content

Commit 7113a3e

Browse files
committed
Restore decorate option to typings
1 parent abbc3e1 commit 7113a3e

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

lib/index.d.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ export interface Options<Data> {
6060
*/
6161
readonly data?: Data;
6262

63+
/**
64+
* An object with extra properties to set on the error object
65+
*/
66+
readonly decorate?: { [key: string]: any };
67+
6368
/**
6469
* An object containing any HTTP headers where each key is a header name and value is the header content
6570
*/
@@ -149,10 +154,11 @@ export function isBoom(obj: unknown, statusCode?: number): obj is Boom;
149154
*
150155
* @returns A boom object
151156
*/
152-
export function boomify<Data>(err: Boom<Data>, options?: BoomifyOptions<Data>): Boom<Data>;
157+
export function boomify<Data, Decoration>(err: Boom<Data>, options?: BoomifyOptions<Data> & { decorate: Decoration }): Boom<Data> & Decoration;
158+
export function boomify<Data, Decoration>(err: unknown, options?: BoomifyOptions<Data> & { decorate: Decoration }): Boom<Data> & Decoration;
159+
export function boomify<Data extends object>(err: Boom<Data>, options?: BoomifyOptions<Data>): Boom<Data>;
153160
export function boomify<Data>(err: unknown, options?: BoomifyOptions<Data>): Boom<Data>;
154161

155-
156162
// 4xx Errors
157163

158164
/**

test/index.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,17 @@ class X {
1515
};
1616

1717

18+
const decorate = new X(1);
19+
1820
// new Boom.Boom()
1921

2022
expect.type<Boom.Boom>(new Boom.Boom());
2123
expect.type<Error>(new Boom.Boom());
2224
expect.type<Boom.Boom>(new Boom.Boom('error'));
25+
expect.type<Boom.Boom>(new Boom.Boom('error', { decorate }));
2326

24-
expect.error<Boom.Boom>(null);
25-
expect.error<Boom.Boom>(new Boom.Boom(new Error('error')));
27+
expect.error(new Boom.Boom(null));
28+
expect.error(new Boom.Boom(new Error('error')));
2629

2730

2831
class CustomError extends Boom.Boom {}
@@ -50,14 +53,16 @@ const error = new Error('Unexpected input');
5053

5154
expect.type<Boom.Boom>(Boom.boomify(error, { statusCode: 400 }));
5255
expect.type<Boom.Boom>(Boom.boomify(error, { statusCode: 400, message: 'Unexpected Input', override: false }));
56+
expect.type<number>(Boom.boomify(error, { decorate }).x);
5357
expect.type<Boom.Boom>(Boom.boomify('error'));
5458
expect.type<Boom.Boom<{ foo: 'bar' }>>(Boom.boomify(new Boom.Boom<{ foo: 'bar' }>()));
5559

5660
expect.error(Boom.boomify(error, { statusCode: '400' }));
5761
expect.error(Boom.boomify(error, { statusCode: 400, message: true }));
5862
expect.error(Boom.boomify(error, { statusCode: 400, override: 'false' }));
5963
expect.error(Boom.boomify());
60-
64+
expect.error(Boom.boomify(error, { decorate: true }));
65+
expect.error(Boom.boomify(error, { decorate }).y);
6166

6267
// isBoom
6368

0 commit comments

Comments
 (0)