@@ -4,15 +4,16 @@ const { AbortController } = require('internal/abort_controller');
4
4
5
5
const {
6
6
codes : {
7
- ERR_INVALID_ARG_TYPE ,
8
7
ERR_MISSING_ARGS ,
9
8
ERR_OUT_OF_RANGE ,
10
9
} ,
11
10
AbortError,
12
11
} = require ( 'internal/errors' ) ;
13
12
const {
14
13
validateAbortSignal,
14
+ validateFunction,
15
15
validateInteger,
16
+ validateObject,
16
17
} = require ( 'internal/validators' ) ;
17
18
const { kWeakHandler } = require ( 'internal/event_target' ) ;
18
19
const { finished } = require ( 'internal/streams/end-of-stream' ) ;
@@ -32,12 +33,9 @@ const kEmpty = Symbol('kEmpty');
32
33
const kEof = Symbol ( 'kEof' ) ;
33
34
34
35
function map ( fn , options ) {
35
- if ( typeof fn !== 'function' ) {
36
- throw new ERR_INVALID_ARG_TYPE (
37
- 'fn' , [ 'Function' , 'AsyncFunction' ] , fn ) ;
38
- }
39
- if ( options != null && typeof options !== 'object' ) {
40
- throw new ERR_INVALID_ARG_TYPE ( 'options' , [ 'Object' ] ) ;
36
+ validateFunction ( fn , 'fn' ) ;
37
+ if ( options != null ) {
38
+ validateObject ( options , 'options' ) ;
41
39
}
42
40
if ( options ?. signal != null ) {
43
41
validateAbortSignal ( options . signal , 'options.signal' ) ;
@@ -167,8 +165,8 @@ function map(fn, options) {
167
165
}
168
166
169
167
function asIndexedPairs ( options = undefined ) {
170
- if ( options != null && typeof options !== 'object' ) {
171
- throw new ERR_INVALID_ARG_TYPE ( ' options' , [ 'Object' ] ) ;
168
+ if ( options != null ) {
169
+ validateObject ( options , 'options' ) ;
172
170
}
173
171
if ( options ?. signal != null ) {
174
172
validateAbortSignal ( options . signal , 'options.signal' ) ;
@@ -186,8 +184,8 @@ function asIndexedPairs(options = undefined) {
186
184
}
187
185
188
186
async function some ( fn , options ) {
189
- if ( options != null && typeof options !== 'object' ) {
190
- throw new ERR_INVALID_ARG_TYPE ( ' options' , [ 'Object' ] ) ;
187
+ if ( options != null ) {
188
+ validateObject ( options , 'options' ) ;
191
189
}
192
190
if ( options ?. signal != null ) {
193
191
validateAbortSignal ( options . signal , 'options.signal' ) ;
@@ -216,21 +214,15 @@ async function some(fn, options) {
216
214
}
217
215
218
216
async function every ( fn , options ) {
219
- if ( typeof fn !== 'function' ) {
220
- throw new ERR_INVALID_ARG_TYPE (
221
- 'fn' , [ 'Function' , 'AsyncFunction' ] , fn ) ;
222
- }
217
+ validateFunction ( fn , 'fn' ) ;
223
218
// https://en.wikipedia.org/wiki/De_Morgan%27s_laws
224
219
return ! ( await some . call ( this , async ( ...args ) => {
225
220
return ! ( await fn ( ...args ) ) ;
226
221
} , options ) ) ;
227
222
}
228
223
229
224
async function forEach ( fn , options ) {
230
- if ( typeof fn !== 'function' ) {
231
- throw new ERR_INVALID_ARG_TYPE (
232
- 'fn' , [ 'Function' , 'AsyncFunction' ] , fn ) ;
233
- }
225
+ validateFunction ( fn , 'fn' ) ;
234
226
async function forEachFn ( value , options ) {
235
227
await fn ( value , options ) ;
236
228
return kEmpty ;
@@ -240,10 +232,7 @@ async function forEach(fn, options) {
240
232
}
241
233
242
234
function filter ( fn , options ) {
243
- if ( typeof fn !== 'function' ) {
244
- throw new ERR_INVALID_ARG_TYPE (
245
- 'fn' , [ 'Function' , 'AsyncFunction' ] , fn ) ;
246
- }
235
+ validateFunction ( fn , 'fn' ) ;
247
236
async function filterFn ( value , options ) {
248
237
if ( await fn ( value , options ) ) {
249
238
return value ;
@@ -263,12 +252,9 @@ class ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS {
263
252
}
264
253
265
254
async function reduce ( reducer , initialValue , options ) {
266
- if ( typeof reducer !== 'function' ) {
267
- throw new ERR_INVALID_ARG_TYPE (
268
- 'reducer' , [ 'Function' , 'AsyncFunction' ] , reducer ) ;
269
- }
270
- if ( options != null && typeof options !== 'object' ) {
271
- throw new ERR_INVALID_ARG_TYPE ( 'options' , [ 'Object' ] ) ;
255
+ validateFunction ( reducer , 'reducer' ) ;
256
+ if ( options != null ) {
257
+ validateObject ( options , 'options' ) ;
272
258
}
273
259
if ( options ?. signal != null ) {
274
260
validateAbortSignal ( options . signal , 'options.signal' ) ;
@@ -311,8 +297,8 @@ async function reduce(reducer, initialValue, options) {
311
297
}
312
298
313
299
async function toArray ( options ) {
314
- if ( options != null && typeof options !== 'object' ) {
315
- throw new ERR_INVALID_ARG_TYPE ( ' options' , [ 'Object' ] ) ;
300
+ if ( options != null ) {
301
+ validateObject ( options , 'options' ) ;
316
302
}
317
303
if ( options ?. signal != null ) {
318
304
validateAbortSignal ( options . signal , 'options.signal' ) ;
@@ -351,8 +337,8 @@ function toIntegerOrInfinity(number) {
351
337
}
352
338
353
339
function drop ( number , options = undefined ) {
354
- if ( options != null && typeof options !== 'object' ) {
355
- throw new ERR_INVALID_ARG_TYPE ( ' options' , [ 'Object' ] ) ;
340
+ if ( options != null ) {
341
+ validateObject ( options , 'options' ) ;
356
342
}
357
343
if ( options ?. signal != null ) {
358
344
validateAbortSignal ( options . signal , 'options.signal' ) ;
@@ -375,8 +361,8 @@ function drop(number, options = undefined) {
375
361
}
376
362
377
363
function take ( number , options = undefined ) {
378
- if ( options != null && typeof options !== 'object' ) {
379
- throw new ERR_INVALID_ARG_TYPE ( ' options' , [ 'Object' ] ) ;
364
+ if ( options != null ) {
365
+ validateObject ( options , 'options' ) ;
380
366
}
381
367
if ( options ?. signal != null ) {
382
368
validateAbortSignal ( options . signal , 'options.signal' ) ;
0 commit comments