@@ -11,6 +11,8 @@ const {
11
11
codes : {
12
12
ERR_INVALID_ARG_TYPE ,
13
13
ERR_INVALID_ARG_VALUE ,
14
+ ERR_INVALID_OPT_TYPE ,
15
+ ERR_INVALID_OPT_VALUE ,
14
16
ERR_OUT_OF_RANGE ,
15
17
ERR_UNKNOWN_SIGNAL
16
18
}
@@ -67,65 +69,84 @@ function parseFileMode(value, name, def) {
67
69
throw new ERR_INVALID_ARG_VALUE ( name , value , modeDesc ) ;
68
70
}
69
71
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
+
70
85
const validateInteger = hideStackFrames (
71
86
( value , name , min = NumberMIN_SAFE_INTEGER , max = NumberMAX_SAFE_INTEGER ) => {
87
+ const { valueName, TypeErr } = handleValueName ( name ) ;
72
88
if ( typeof value !== 'number' )
73
- throw new ERR_INVALID_ARG_TYPE ( name , 'number' , value ) ;
89
+ throw new TypeErr ( valueName , 'number' , value ) ;
74
90
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 ) ;
76
92
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 ) ;
78
94
}
79
95
) ;
80
96
81
97
const validateInt32 = hideStackFrames (
82
98
( value , name , min = - 2147483648 , max = 2147483647 ) => {
83
99
// The defaults for min and max correspond to the limits of 32-bit integers.
100
+ const { valueName, TypeErr } = handleValueName ( name ) ;
84
101
if ( ! isInt32 ( value ) ) {
85
102
if ( typeof value !== 'number' ) {
86
- throw new ERR_INVALID_ARG_TYPE ( name , 'number' , value ) ;
103
+ throw new TypeErr ( valueName , 'number' , value ) ;
87
104
}
88
105
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 ) ;
90
107
}
91
- throw new ERR_OUT_OF_RANGE ( name , `>= ${ min } && <= ${ max } ` , value ) ;
108
+ throw new ERR_OUT_OF_RANGE ( valueName , `>= ${ min } && <= ${ max } ` , value ) ;
92
109
}
93
110
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 ) ;
95
112
}
96
113
}
97
114
) ;
98
115
99
116
const validateUint32 = hideStackFrames ( ( value , name , positive ) => {
117
+ const { valueName, TypeErr } = handleValueName ( name ) ;
100
118
if ( ! isUint32 ( value ) ) {
101
119
if ( typeof value !== 'number' ) {
102
- throw new ERR_INVALID_ARG_TYPE ( name , 'number' , value ) ;
120
+ throw new TypeErr ( valueName , 'number' , value ) ;
103
121
}
104
122
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 ) ;
106
124
}
107
125
const min = positive ? 1 : 0 ;
108
126
// 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 ) ;
110
128
}
111
129
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 ) ;
113
131
}
114
132
} ) ;
115
133
116
134
function validateString ( value , name ) {
135
+ const { valueName, TypeErr } = handleValueName ( name ) ;
117
136
if ( typeof value !== 'string' )
118
- throw new ERR_INVALID_ARG_TYPE ( name , 'string' , value ) ;
137
+ throw new TypeErr ( valueName , 'string' , value ) ;
119
138
}
120
139
121
140
function validateNumber ( value , name ) {
141
+ const { valueName, TypeErr } = handleValueName ( name ) ;
122
142
if ( typeof value !== 'number' )
123
- throw new ERR_INVALID_ARG_TYPE ( name , 'number' , value ) ;
143
+ throw new TypeErr ( valueName , 'number' , value ) ;
124
144
}
125
145
126
146
function validateSignalName ( signal , name = 'signal' ) {
147
+ const { valueName, TypeErr } = handleValueName ( name ) ;
127
148
if ( typeof signal !== 'string' )
128
- throw new ERR_INVALID_ARG_TYPE ( name , 'string' , signal ) ;
149
+ throw new TypeErr ( valueName , 'string' , signal ) ;
129
150
130
151
if ( signals [ signal ] === undefined ) {
131
152
if ( signals [ signal . toUpperCase ( ) ] !== undefined ) {
@@ -138,11 +159,9 @@ function validateSignalName(signal, name = 'signal') {
138
159
}
139
160
140
161
const 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 ) ;
146
165
} ) ;
147
166
148
167
function validateEncoding ( data , encoding ) {
0 commit comments