@@ -11,6 +11,8 @@ const {
1111 codes : {
1212 ERR_INVALID_ARG_TYPE ,
1313 ERR_INVALID_ARG_VALUE ,
14+ ERR_INVALID_OPT_TYPE ,
15+ ERR_INVALID_OPT_VALUE ,
1416 ERR_OUT_OF_RANGE ,
1517 ERR_UNKNOWN_SIGNAL
1618 }
@@ -67,65 +69,84 @@ function parseFileMode(value, name, def) {
6769 throw new ERR_INVALID_ARG_VALUE ( name , value , modeDesc ) ;
6870}
6971
72+ const handleValueName = ( name ) => {
73+ let TypeErr = ERR_INVALID_ARG_TYPE ;
74+ let ValueErr = ERR_INVALID_ARG_VALUE ;
75+ if ( typeof name === 'object' ) {
76+ if ( name . type === 'option' ) {
77+ TypeErr = ERR_INVALID_OPT_TYPE ;
78+ ValueErr = ERR_INVALID_OPT_VALUE ;
79+ }
80+ name = name . name ;
81+ }
82+ return { valueName : name , TypeErr, ValueErr } ;
83+ } ;
84+
7085const validateInteger = hideStackFrames (
7186 ( value , name , min = NumberMIN_SAFE_INTEGER , max = NumberMAX_SAFE_INTEGER ) => {
87+ const { valueName, TypeErr } = handleValueName ( name ) ;
7288 if ( typeof value !== 'number' )
73- throw new ERR_INVALID_ARG_TYPE ( name , 'number' , value ) ;
89+ throw new TypeErr ( valueName , 'number' , value ) ;
7490 if ( ! NumberIsInteger ( value ) )
75- throw new ERR_OUT_OF_RANGE ( name , 'an integer' , value ) ;
91+ throw new ERR_OUT_OF_RANGE ( valueName , 'an integer' , value ) ;
7692 if ( value < min || value > max )
77- throw new ERR_OUT_OF_RANGE ( name , `>= ${ min } && <= ${ max } ` , value ) ;
93+ throw new ERR_OUT_OF_RANGE ( valueName , `>= ${ min } && <= ${ max } ` , value ) ;
7894 }
7995) ;
8096
8197const validateInt32 = hideStackFrames (
8298 ( value , name , min = - 2147483648 , max = 2147483647 ) => {
8399 // The defaults for min and max correspond to the limits of 32-bit integers.
100+ const { valueName, TypeErr } = handleValueName ( name ) ;
84101 if ( ! isInt32 ( value ) ) {
85102 if ( typeof value !== 'number' ) {
86- throw new ERR_INVALID_ARG_TYPE ( name , 'number' , value ) ;
103+ throw new TypeErr ( valueName , 'number' , value ) ;
87104 }
88105 if ( ! NumberIsInteger ( value ) ) {
89- throw new ERR_OUT_OF_RANGE ( name , 'an integer' , value ) ;
106+ throw new ERR_OUT_OF_RANGE ( valueName , 'an integer' , value ) ;
90107 }
91- throw new ERR_OUT_OF_RANGE ( name , `>= ${ min } && <= ${ max } ` , value ) ;
108+ throw new ERR_OUT_OF_RANGE ( valueName , `>= ${ min } && <= ${ max } ` , value ) ;
92109 }
93110 if ( value < min || value > max ) {
94- throw new ERR_OUT_OF_RANGE ( name , `>= ${ min } && <= ${ max } ` , value ) ;
111+ throw new ERR_OUT_OF_RANGE ( valueName , `>= ${ min } && <= ${ max } ` , value ) ;
95112 }
96113 }
97114) ;
98115
99116const validateUint32 = hideStackFrames ( ( value , name , positive ) => {
117+ const { valueName, TypeErr } = handleValueName ( name ) ;
100118 if ( ! isUint32 ( value ) ) {
101119 if ( typeof value !== 'number' ) {
102- throw new ERR_INVALID_ARG_TYPE ( name , 'number' , value ) ;
120+ throw new TypeErr ( valueName , 'number' , value ) ;
103121 }
104122 if ( ! NumberIsInteger ( value ) ) {
105- throw new ERR_OUT_OF_RANGE ( name , 'an integer' , value ) ;
123+ throw new ERR_OUT_OF_RANGE ( valueName , 'an integer' , value ) ;
106124 }
107125 const min = positive ? 1 : 0 ;
108126 // 2 ** 32 === 4294967296
109- throw new ERR_OUT_OF_RANGE ( name , `>= ${ min } && < 4294967296` , value ) ;
127+ throw new ERR_OUT_OF_RANGE ( valueName , `>= ${ min } && < 4294967296` , value ) ;
110128 }
111129 if ( positive && value === 0 ) {
112- throw new ERR_OUT_OF_RANGE ( name , '>= 1 && < 4294967296' , value ) ;
130+ throw new ERR_OUT_OF_RANGE ( valueName , '>= 1 && < 4294967296' , value ) ;
113131 }
114132} ) ;
115133
116134function validateString ( value , name ) {
135+ const { valueName, TypeErr } = handleValueName ( name ) ;
117136 if ( typeof value !== 'string' )
118- throw new ERR_INVALID_ARG_TYPE ( name , 'string' , value ) ;
137+ throw new TypeErr ( valueName , 'string' , value ) ;
119138}
120139
121140function validateNumber ( value , name ) {
141+ const { valueName, TypeErr } = handleValueName ( name ) ;
122142 if ( typeof value !== 'number' )
123- throw new ERR_INVALID_ARG_TYPE ( name , 'number' , value ) ;
143+ throw new TypeErr ( valueName , 'number' , value ) ;
124144}
125145
126146function validateSignalName ( signal , name = 'signal' ) {
147+ const { valueName, TypeErr } = handleValueName ( name ) ;
127148 if ( typeof signal !== 'string' )
128- throw new ERR_INVALID_ARG_TYPE ( name , 'string' , signal ) ;
149+ throw new TypeErr ( valueName , 'string' , signal ) ;
129150
130151 if ( signals [ signal ] === undefined ) {
131152 if ( signals [ signal . toUpperCase ( ) ] !== undefined ) {
@@ -138,11 +159,9 @@ function validateSignalName(signal, name = 'signal') {
138159}
139160
140161const validateBuffer = hideStackFrames ( ( buffer , name = 'buffer' ) => {
141- if ( ! isArrayBufferView ( buffer ) ) {
142- throw new ERR_INVALID_ARG_TYPE ( name ,
143- [ 'Buffer' , 'TypedArray' , 'DataView' ] ,
144- buffer ) ;
145- }
162+ const { valueName, TypeErr } = handleValueName ( name ) ;
163+ if ( ! isArrayBufferView ( buffer ) )
164+ throw new TypeErr ( valueName , [ 'Buffer' , 'TypedArray' , 'DataView' ] , buffer ) ;
146165} ) ;
147166
148167function validateEncoding ( data , encoding ) {
0 commit comments