@@ -24,7 +24,11 @@ export const isDynamicBuffer = (val: any) => val instanceof DynamicBuffer;
2424 * @param max The allowed maximum value (included) of this value.
2525 */
2626export const checkBounds = ( field : string , value : number , min : number , max : number ) => {
27- if ( value < min || value > max ) {
27+ if ( typeof value !== 'number' ) {
28+ throw new TypeError ( `${ field } must be a number` ) ;
29+ }
30+
31+ if ( Number . isNaN ( value ) || value < min || value > max ) {
2832 throw new RangeError ( `${ field } is out of bounds` ) ;
2933 }
3034} ;
@@ -38,12 +42,35 @@ export const checkBounds = (field: string, value: number, min: number, max: numb
3842 * @param max The allowed maximum value (included) of this value.
3943 */
4044export const checkRange = ( field : string , value : number , min ?: number , max ?: number ) => {
41- if ( min !== undefined && value < min ) {
42- throw new RangeError ( `The value of '${ field } ' is out of range. It must be >= ${ min } . Received ${ value } ` ) ;
45+ if ( typeof value !== 'number' ) {
46+ throw new TypeError ( `${ field } must be a number` ) ;
47+ }
48+
49+ const ranges : string [ ] = [ ] ;
50+ let isValid : boolean = true ;
51+
52+ if ( min !== undefined ) {
53+ ranges . push ( `>= ${ min } ` ) ;
54+ if ( value < min ) {
55+ isValid = false ;
56+ }
57+ }
58+
59+ if ( max !== undefined ) {
60+ ranges . push ( `<= ${ max } ` ) ;
61+ if ( isValid && value > max ) {
62+ isValid = false ;
63+ }
4364 }
4465
45- if ( max !== undefined && value > max ) {
46- throw new RangeError ( `The value of '${ field } ' is out of range. It must be <= ${ max } . Received ${ value } ` ) ;
66+ if ( ! isValid || Number . isNaN ( value ) ) {
67+ throw new RangeError ( `The value of '${
68+ field
69+ } ' is out of range. It must be ${
70+ ranges . join ( ' and ' )
71+ } . Received ${
72+ value
73+ } `) ;
4774 }
4875} ;
4976
0 commit comments