Skip to content

Commit e3759c5

Browse files
committed
removed tests which were testing for null headers, ignored the error constructor any, added unknown to the return type of some functions in GraphQL resolver
1 parent 7311816 commit e3759c5

File tree

3 files changed

+8
-104
lines changed

3 files changed

+8
-104
lines changed

packages/event-handler/src/appsync-graphql/AppSyncGraphQLResolver.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ class AppSyncGraphQLResolver extends Router {
174174
}
175175

176176
return this.#withErrorHandling(
177-
async () => await this.#executeSingleResolver(event, context, options),
177+
() => this.#executeSingleResolver(event, context, options),
178178
event,
179179
options
180180
);
@@ -190,7 +190,7 @@ class AppSyncGraphQLResolver extends Router {
190190
* @param options - Optional resolve options for customizing resolver behavior.
191191
*/
192192
async #withErrorHandling(
193-
fn: () => Promise<unknown>,
193+
fn: () => Promise<unknown> | unknown,
194194
event: AppSyncResolverEvent<Record<string, unknown>>,
195195
options?: ResolveOptions
196196
) {
@@ -377,7 +377,7 @@ class AppSyncGraphQLResolver extends Router {
377377
event: AppSyncResolverEvent<Record<string, unknown>>,
378378
context: Context,
379379
options?: ResolveOptions
380-
) {
380+
): Promise<unknown> | unknown {
381381
const { fieldName, parentTypeName: typeName } = event.info;
382382

383383
const resolverHandlerOptions = this.resolverRegistry.resolve(

packages/event-handler/src/types/rest.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ type ErrorHandler<T extends Error = Error> = (
2424
) => Promise<HandlerResponse>;
2525

2626
interface ErrorConstructor<T extends Error = Error> {
27-
new (...args: unknown[]): T;
27+
// biome-ignore lint/suspicious/noExplicitAny: this is a generic type that is intentionally open
28+
new (...args: any[]): T;
2829
prototype: T;
2930
}
3031

@@ -53,7 +54,7 @@ interface CompiledRoute {
5354

5455
type DynamicRoute = Route & CompiledRoute;
5556

56-
type HandlerResponse = Response | JSONObject;
57+
type HandlerResponse = Response | JSONObject | undefined;
5758

5859
type RouteHandler<TReturn = HandlerResponse> = (
5960
reqCtx: RequestContext
@@ -79,15 +80,15 @@ type RestRouteOptions = {
7980
};
8081

8182
type NextFunction = () =>
82-
| Promise<void>
8383
| Promise<HandlerResponse>
8484
| HandlerResponse
85+
| Promise<void>
8586
| void;
8687

8788
type Middleware = (args: {
8889
reqCtx: RequestContext;
8990
next: NextFunction;
90-
}) => Promise<void> | Promise<HandlerResponse> | HandlerResponse | void;
91+
}) => NextFunction;
9192

9293
type RouteRegistryOptions = {
9394
/**

packages/event-handler/tests/unit/rest/converters.test.ts

Lines changed: 0 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -51,45 +51,6 @@ describe('Converters', () => {
5151
expect(request.url).toBe('http://api.example.com/test');
5252
});
5353

54-
it('handles null values in multiValueHeaders arrays', () => {
55-
// Prepare
56-
const event = {
57-
...baseEvent,
58-
multiValueHeaders: {
59-
Accept: null as any,
60-
'Custom-Header': ['value1'],
61-
},
62-
};
63-
64-
// Act
65-
const request = proxyEventToWebRequest(event);
66-
67-
// Assess
68-
expect(request).toBeInstanceOf(Request);
69-
expect(request.headers.get('Accept')).toBe(null);
70-
expect(request.headers.get('Custom-Header')).toBe('value1');
71-
});
72-
73-
it('handles null values in multiValueQueryStringParameters arrays', () => {
74-
// Prepare
75-
const event = {
76-
...baseEvent,
77-
multiValueQueryStringParameters: {
78-
filter: null as any,
79-
sort: ['desc'],
80-
},
81-
};
82-
83-
// Act
84-
const request = proxyEventToWebRequest(event);
85-
86-
// Assess
87-
expect(request).toBeInstanceOf(Request);
88-
const url = new URL(request.url);
89-
expect(url.searchParams.has('filter')).toBe(false);
90-
expect(url.searchParams.get('sort')).toBe('desc');
91-
});
92-
9354
it('handles POST request with string body', () => {
9455
// Prepare
9556
const event = {
@@ -293,64 +254,6 @@ describe('Converters', () => {
293254
expect(url.searchParams.get('single')).toBe('value');
294255
expect(url.searchParams.getAll('multi')).toEqual(['value1', 'value2']);
295256
});
296-
297-
it('skips null queryStringParameter values', () => {
298-
// Prepare
299-
const event = {
300-
...baseEvent,
301-
queryStringParameters: {
302-
valid: 'value',
303-
null: null as any,
304-
},
305-
};
306-
307-
// Act
308-
const request = proxyEventToWebRequest(event);
309-
310-
// Assess
311-
expect(request).toBeInstanceOf(Request);
312-
const url = new URL(request.url);
313-
expect(url.searchParams.get('valid')).toBe('value');
314-
expect(url.searchParams.has('null')).toBe(false);
315-
});
316-
317-
it('skips null header values', () => {
318-
// Prepare
319-
const event = {
320-
...baseEvent,
321-
headers: {
322-
'Valid-Header': 'value',
323-
'Null-Header': null as any,
324-
},
325-
};
326-
327-
// Act
328-
const request = proxyEventToWebRequest(event);
329-
330-
// Assess
331-
expect(request).toBeInstanceOf(Request);
332-
expect(request.headers.get('Valid-Header')).toBe('value');
333-
expect(request.headers.get('Null-Header')).toBe(null);
334-
});
335-
336-
it('handles null/undefined collections', () => {
337-
// Prepare
338-
const event = {
339-
...baseEvent,
340-
headers: null as any,
341-
multiValueHeaders: null as any,
342-
queryStringParameters: null as any,
343-
multiValueQueryStringParameters: null as any,
344-
};
345-
346-
// Act
347-
const request = proxyEventToWebRequest(event);
348-
349-
// Assess
350-
expect(request).toBeInstanceOf(Request);
351-
expect(request.method).toBe('GET');
352-
expect(request.url).toBe('https://api.example.com/test');
353-
});
354257
});
355258

356259
describe('responseToProxyResult', () => {

0 commit comments

Comments
 (0)