Skip to content

Commit d3f3ee1

Browse files
committed
remove non-null operators
1 parent ff48f73 commit d3f3ee1

File tree

2 files changed

+41
-41
lines changed

2 files changed

+41
-41
lines changed

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -107,23 +107,23 @@ class RouteHandlerRegistry {
107107
const compiled = compilePath(route.path);
108108

109109
if (compiled.isDynamic) {
110-
if (this.#dynamicRoutesIndexMap.has(route.id)) {
110+
let routeIndex = this.#dynamicRoutesIndexMap.get(route.id) ?? -1;
111+
if (routeIndex >= 0) {
111112
this.#logger.warn(
112113
`Handler for method: ${route.method} and path: ${route.path} already exists. The previous handler will be replaced.`
113114
);
114115
// as dynamic routes are stored in an array, we can't rely on
115116
// overwriting a key in a map like with static routes so have
116-
// to manually manage duplicate routes
117-
const index = this.#dynamicRoutesIndexMap.get(route.id)!;
118-
this.#dynamicRoutes.splice(index, 1);
117+
// to manually manage deleting them
118+
this.#dynamicRoutes.splice(routeIndex, 1);
119119
}
120120

121-
const index = this.#addDynamicRoute({
121+
routeIndex = this.#addDynamicRoute({
122122
...route,
123123
...compiled,
124124
});
125125

126-
this.#dynamicRoutesIndexMap.set(route.id, index);
126+
this.#dynamicRoutesIndexMap.set(route.id, routeIndex);
127127
} else {
128128
if (this.#staticRoutes.has(route.id)) {
129129
this.#logger.warn(

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

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ describe('Class: RouteHandlerRegistry', () => {
3131

3232
const result = registry.resolve(method, resolvePath as Path);
3333
expect(result).not.toBeNull();
34-
expect(result!.handler).toBe(handler2);
34+
expect(result?.handler).toBe(handler2);
3535
}
3636
);
3737

@@ -109,11 +109,11 @@ describe('Class: RouteHandlerRegistry', () => {
109109
// Assess
110110
const getResult = registry.resolve(HttpVerbs.GET, '/users/123');
111111
expect(getResult).not.toBeNull();
112-
expect(getResult!.handler).toBe(getHandler);
112+
expect(getResult?.handler).toBe(getHandler);
113113

114114
const postResult = registry.resolve(HttpVerbs.POST, '/users/123');
115115
expect(postResult).not.toBeNull();
116-
expect(postResult!.handler).toBe(postHandler);
116+
expect(postResult?.handler).toBe(postHandler);
117117
});
118118

119119
describe('getRouteCount', () => {
@@ -250,7 +250,7 @@ describe('Class: RouteHandlerRegistry', () => {
250250
// Assess
251251
const result = registry.resolve(HttpVerbs.GET, '/users/123/profile');
252252
expect(result).not.toBeNull();
253-
expect(result!.handler).toBe(mostSpecificHandler);
253+
expect(result?.handler).toBe(mostSpecificHandler);
254254
});
255255

256256
it('prioritizes static routes over dynamic routes', () => {
@@ -268,7 +268,7 @@ describe('Class: RouteHandlerRegistry', () => {
268268
// Assess
269269
const result = registry.resolve(HttpVerbs.GET, '/users/profile');
270270
expect(result).not.toBeNull();
271-
expect(result!.handler).toBe(staticHandler);
271+
expect(result?.handler).toBe(staticHandler);
272272
});
273273

274274
it('prioritizes deeper paths over shallower ones', () => {
@@ -284,7 +284,7 @@ describe('Class: RouteHandlerRegistry', () => {
284284
// Assess
285285
const result = registry.resolve(HttpVerbs.GET, '/api/v1/123');
286286
expect(result).not.toBeNull();
287-
expect(result!.handler).toBe(deepHandler);
287+
expect(result?.handler).toBe(deepHandler);
288288
});
289289

290290
it('prioritizes more specific segments over generic parameters', () => {
@@ -302,7 +302,7 @@ describe('Class: RouteHandlerRegistry', () => {
302302
// Assess
303303
const result = registry.resolve(HttpVerbs.GET, '/users/123');
304304
expect(result).not.toBeNull();
305-
expect(result!.handler).toBe(specificHandler);
305+
expect(result?.handler).toBe(specificHandler);
306306
});
307307

308308
it('prioritizes routes with fewer parameters', () => {
@@ -322,7 +322,7 @@ describe('Class: RouteHandlerRegistry', () => {
322322
// Assess
323323
const result = registry.resolve(HttpVerbs.GET, '/users/123/posts');
324324
expect(result).not.toBeNull();
325-
expect(result!.handler).toBe(fewerParamsHandler);
325+
expect(result?.handler).toBe(fewerParamsHandler);
326326
});
327327

328328
it('prioritizes static segments over parameters when parameter count differs', () => {
@@ -342,7 +342,7 @@ describe('Class: RouteHandlerRegistry', () => {
342342
// Assess
343343
const result = registry.resolve(HttpVerbs.GET, '/api/users/123/delete');
344344
expect(result).not.toBeNull();
345-
expect(result!.handler).toBe(staticHandler);
345+
expect(result?.handler).toBe(staticHandler);
346346
});
347347

348348
it('prioritizes more static segments in mixed routes', () => {
@@ -362,7 +362,7 @@ describe('Class: RouteHandlerRegistry', () => {
362362
// Assess
363363
const result = registry.resolve(HttpVerbs.GET, '/api/v1/users/123');
364364
expect(result).not.toBeNull();
365-
expect(result!.handler).toBe(moreStaticHandler);
365+
expect(result?.handler).toBe(moreStaticHandler);
366366
});
367367

368368
it('handles complex mixed static/dynamic precedence', () => {
@@ -386,7 +386,7 @@ describe('Class: RouteHandlerRegistry', () => {
386386
// Assess
387387
const result = registry.resolve(HttpVerbs.GET, '/users/profile/settings');
388388
expect(result).not.toBeNull();
389-
expect(result!.handler).toBe(mostStaticHandler);
389+
expect(result?.handler).toBe(mostStaticHandler);
390390
});
391391

392392
it('maintains specificity regardless of registration order - specific first', () => {
@@ -406,7 +406,7 @@ describe('Class: RouteHandlerRegistry', () => {
406406
// Assess
407407
const result = registry.resolve(HttpVerbs.GET, '/users/123/profile');
408408
expect(result).not.toBeNull();
409-
expect(result!.handler).toBe(specificHandler);
409+
expect(result?.handler).toBe(specificHandler);
410410
});
411411

412412
it('maintains specificity regardless of registration order - general first', () => {
@@ -426,7 +426,7 @@ describe('Class: RouteHandlerRegistry', () => {
426426
// Assess
427427
const result = registry.resolve(HttpVerbs.GET, '/users/123/profile');
428428
expect(result).not.toBeNull();
429-
expect(result!.handler).toBe(specificHandler);
429+
expect(result?.handler).toBe(specificHandler);
430430
});
431431

432432
it('handles root-level routes', () => {
@@ -442,11 +442,11 @@ describe('Class: RouteHandlerRegistry', () => {
442442
// Assess
443443
const rootResult = registry.resolve(HttpVerbs.GET, '/');
444444
expect(rootResult).not.toBeNull();
445-
expect(rootResult!.handler).toBe(rootHandler);
445+
expect(rootResult?.handler).toBe(rootHandler);
446446

447447
const paramResult = registry.resolve(HttpVerbs.GET, '/123');
448448
expect(paramResult).not.toBeNull();
449-
expect(paramResult!.handler).toBe(paramHandler);
449+
expect(paramResult?.handler).toBe(paramHandler);
450450
});
451451

452452
it('handles very long paths with mixed segments', () => {
@@ -477,7 +477,7 @@ describe('Class: RouteHandlerRegistry', () => {
477477
'/api/v1/users/123/profile/settings/data'
478478
);
479479
expect(result).not.toBeNull();
480-
expect(result!.handler).toBe(longSpecificHandler);
480+
expect(result?.handler).toBe(longSpecificHandler);
481481
});
482482
});
483483

@@ -493,9 +493,9 @@ describe('Class: RouteHandlerRegistry', () => {
493493

494494
// Assess
495495
expect(result).not.toBeNull();
496-
expect(result!.params).toEqual({ id: '123' });
497-
expect(result!.rawParams).toEqual({ id: '123' });
498-
expect(result!.handler).toBe(handler);
496+
expect(result?.params).toEqual({ id: '123' });
497+
expect(result?.rawParams).toEqual({ id: '123' });
498+
expect(result?.handler).toBe(handler);
499499
});
500500

501501
it('extracts multiple parameters correctly', () => {
@@ -511,9 +511,9 @@ describe('Class: RouteHandlerRegistry', () => {
511511

512512
// Assess
513513
expect(result).not.toBeNull();
514-
expect(result!.params).toEqual({ userId: '123', postId: '456' });
515-
expect(result!.rawParams).toEqual({ userId: '123', postId: '456' });
516-
expect(result!.handler).toBe(handler);
514+
expect(result?.params).toEqual({ userId: '123', postId: '456' });
515+
expect(result?.rawParams).toEqual({ userId: '123', postId: '456' });
516+
expect(result?.handler).toBe(handler);
517517
});
518518

519519
it('returns empty params for static routes', () => {
@@ -527,9 +527,9 @@ describe('Class: RouteHandlerRegistry', () => {
527527

528528
// Assess
529529
expect(result).not.toBeNull();
530-
expect(result!.params).toEqual({});
531-
expect(result!.rawParams).toEqual({});
532-
expect(result!.handler).toBe(handler);
530+
expect(result?.params).toEqual({});
531+
expect(result?.rawParams).toEqual({});
532+
expect(result?.handler).toBe(handler);
533533
});
534534

535535
it('decodes URL-encoded spaces in parameters', () => {
@@ -543,8 +543,8 @@ describe('Class: RouteHandlerRegistry', () => {
543543

544544
// Assess
545545
expect(result).not.toBeNull();
546-
expect(result!.params).toEqual({ query: 'hello world' });
547-
expect(result!.rawParams).toEqual({ query: 'hello%20world' });
546+
expect(result?.params).toEqual({ query: 'hello world' });
547+
expect(result?.rawParams).toEqual({ query: 'hello%20world' });
548548
});
549549

550550
it('decodes URL-encoded special characters in parameters', () => {
@@ -561,8 +561,8 @@ describe('Class: RouteHandlerRegistry', () => {
561561

562562
// Assess
563563
expect(result).not.toBeNull();
564-
expect(result!.params).toEqual({ email: '[email protected]' });
565-
expect(result!.rawParams).toEqual({ email: 'user%40example.com' });
564+
expect(result?.params).toEqual({ email: '[email protected]' });
565+
expect(result?.rawParams).toEqual({ email: 'user%40example.com' });
566566
});
567567

568568
it('decodes multiple URL-encoded parameters', () => {
@@ -581,11 +581,11 @@ describe('Class: RouteHandlerRegistry', () => {
581581

582582
// Assess
583583
expect(result).not.toBeNull();
584-
expect(result!.params).toEqual({
584+
expect(result?.params).toEqual({
585585
folder: 'my folder',
586586
filename: 'test+file.txt',
587587
});
588-
expect(result!.rawParams).toEqual({
588+
expect(result?.rawParams).toEqual({
589589
folder: 'my%20folder',
590590
filename: 'test%2Bfile.txt',
591591
});
@@ -625,13 +625,13 @@ describe('Class: RouteHandlerRegistry', () => {
625625

626626
// Assess
627627
expect(result).not.toBeNull();
628-
expect(result!.params).toEqual({
628+
expect(result?.params).toEqual({
629629
version: 'v1',
630630
userId: '123',
631631
postId: '456',
632632
commentId: '789',
633633
});
634-
expect(result!.rawParams).toEqual({
634+
expect(result?.rawParams).toEqual({
635635
version: 'v1',
636636
userId: '123',
637637
postId: '456',
@@ -655,12 +655,12 @@ describe('Class: RouteHandlerRegistry', () => {
655655

656656
// Assess
657657
expect(result).not.toBeNull();
658-
expect(result!.params).toEqual({
658+
expect(result?.params).toEqual({
659659
category: 'electronics',
660660
query: 'C++',
661661
page: '1',
662662
});
663-
expect(result!.rawParams).toEqual({
663+
expect(result?.rawParams).toEqual({
664664
category: 'electronics',
665665
query: 'C%2B%2B',
666666
page: '1',

0 commit comments

Comments
 (0)