1010import type { Comparator } from '../../types' ;
1111import type { TreeMapEntryCallback , TreeMapOptions , TreeMapRangeOptions , TreeMapReduceCallback } from '../../types' ;
1212import { RedBlackTree } from './red-black-tree' ;
13- import { ERR } from '../../common' ;
13+ import { ERR , raise } from '../../common' ;
1414
1515/**
1616 * An ordered Map backed by a red-black tree.
@@ -64,7 +64,8 @@ export class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[K, V | u
6464 } else {
6565 // Validate entries like native Map: each item must be a 2-tuple-like value.
6666 if ( ! Array . isArray ( item ) || item . length < 2 ) {
67- throw new TypeError ( ERR . invalidEntry ( 'TreeMap' ) ) ;
67+ raise ( TypeError , ERR . invalidEntry ( 'TreeMap' ) ) ;
68+ continue ;
6869 }
6970 k = item [ 0 ] as K ;
7071 v = item [ 1 ] as V | undefined ;
@@ -88,7 +89,7 @@ export class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[K, V | u
8889 return ( a : K , b : K ) : number => {
8990 if ( typeof a === 'number' && typeof b === 'number' ) {
9091 /* istanbul ignore next -- _validateKey prevents NaN from entering the tree */
91- if ( Number . isNaN ( a ) || Number . isNaN ( b ) ) throw new TypeError ( ERR . invalidNaN ( 'TreeMap' ) ) ;
92+ if ( Number . isNaN ( a ) || Number . isNaN ( b ) ) raise ( TypeError , ERR . invalidNaN ( 'TreeMap' ) ) ;
9293 const aa = Object . is ( a , - 0 ) ? 0 : a ;
9394 const bb = Object . is ( b , - 0 ) ? 0 : b ;
9495 return aa > bb ? 1 : aa < bb ? - 1 : 0 ;
@@ -102,30 +103,31 @@ export class TreeMap<K = any, V = any, R = [K, V]> implements Iterable<[K, V | u
102103 const ta = a . getTime ( ) ;
103104 const tb = b . getTime ( ) ;
104105 /* istanbul ignore next -- _validateKey prevents invalid Date from entering the tree */
105- if ( Number . isNaN ( ta ) || Number . isNaN ( tb ) ) throw new TypeError ( ERR . invalidDate ( 'TreeMap' ) ) ;
106+ if ( Number . isNaN ( ta ) || Number . isNaN ( tb ) ) raise ( TypeError , ERR . invalidDate ( 'TreeMap' ) ) ;
106107 return ta > tb ? 1 : ta < tb ? - 1 : 0 ;
107108 }
108109
109- throw new TypeError ( ERR . comparatorRequired ( 'TreeMap' ) ) ;
110+ raise ( TypeError , ERR . comparatorRequired ( 'TreeMap' ) ) ;
111+ return 0 ;
110112 } ;
111113 }
112114
113115 private _validateKey ( key : K ) : void {
114116 if ( ! this . #isDefaultComparator) return ;
115117
116118 if ( typeof key === 'number' ) {
117- if ( Number . isNaN ( key ) ) throw new TypeError ( ERR . invalidNaN ( 'TreeMap' ) ) ;
119+ if ( Number . isNaN ( key ) ) raise ( TypeError , ERR . invalidNaN ( 'TreeMap' ) ) ;
118120 return ;
119121 }
120122
121123 if ( typeof key === 'string' ) return ;
122124
123125 if ( key instanceof Date ) {
124- if ( Number . isNaN ( key . getTime ( ) ) ) throw new TypeError ( ERR . invalidDate ( 'TreeMap' ) ) ;
126+ if ( Number . isNaN ( key . getTime ( ) ) ) raise ( TypeError , ERR . invalidDate ( 'TreeMap' ) ) ;
125127 return ;
126128 }
127129
128- throw new TypeError ( ERR . comparatorRequired ( 'TreeMap' ) ) ;
130+ raise ( TypeError , ERR . comparatorRequired ( 'TreeMap' ) ) ;
129131 }
130132
131133 /**
0 commit comments