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