@@ -14,6 +14,11 @@ function getTypeName(value: unknown): string {
1414
1515export function filter ( arg1 : Function | any [ ] | undefined , arg2 : Function | any [ ] | undefined ) : any [ ] | undefined {
1616 // Support both filter(array, fn) and filter(fn, array) for backwards compatibility
17+ // Early return for undefined first argument
18+ if ( arg1 === undefined ) {
19+ return undefined ;
20+ }
21+
1722 let f : Function ;
1823 let a : any [ ] | undefined ;
1924
@@ -25,8 +30,6 @@ export function filter(arg1: Function | any[] | undefined, arg2: Function | any[
2530 // function-first: filter(fn, array)
2631 f = arg1 ;
2732 a = arg2 as any [ ] | undefined ;
28- } else if ( arg1 === undefined ) {
29- return undefined ;
3033 } else {
3134 throw new Error (
3235 `filter(array, predicate) expects an array and a function.\n` +
@@ -44,6 +47,11 @@ export function filter(arg1: Function | any[] | undefined, arg2: Function | any[
4447
4548export function fold ( arg1 : Function | any [ ] | undefined , arg2 : any , arg3 : Function | any [ ] | undefined ) : any {
4649 // Support both fold(array, initial, fn) and fold(fn, initial, array) for backwards compatibility
50+ // Early return for undefined arguments
51+ if ( arg1 === undefined ) {
52+ return undefined ;
53+ }
54+
4755 let f : Function ;
4856 let init : any ;
4957 let a : any [ ] | undefined ;
@@ -58,7 +66,7 @@ export function fold(arg1: Function | any[] | undefined, arg2: any, arg3: Functi
5866 f = arg1 ;
5967 init = arg2 ;
6068 a = arg3 as any [ ] | undefined ;
61- } else if ( arg1 === undefined || arg3 === undefined ) {
69+ } else if ( arg3 === undefined ) {
6270 return undefined ;
6371 } else {
6472 throw new Error (
@@ -105,6 +113,11 @@ export function join(sep: string | undefined, a: any[] | undefined): string | un
105113
106114export function map ( arg1 : Function | any [ ] | undefined , arg2 : Function | any [ ] | undefined ) : any [ ] | undefined {
107115 // Support both map(array, fn) and map(fn, array) for backwards compatibility
116+ // Early return for undefined first argument
117+ if ( arg1 === undefined ) {
118+ return undefined ;
119+ }
120+
108121 let f : Function ;
109122 let a : any [ ] | undefined ;
110123
@@ -116,8 +129,6 @@ export function map(arg1: Function | any[] | undefined, arg2: Function | any[] |
116129 // function-first: map(fn, array)
117130 f = arg1 ;
118131 a = arg2 as any [ ] | undefined ;
119- } else if ( arg1 === undefined ) {
120- return undefined ;
121132 } else {
122133 throw new Error (
123134 `map(array, mapper) expects an array and a function.\n` +
@@ -172,6 +183,11 @@ export function reduce(arg1: Function | any[] | undefined, arg2: any, arg3: Func
172183
173184export function find ( arg1 : Function | any [ ] | undefined , arg2 : Function | any [ ] | undefined ) : any {
174185 // Support both find(array, fn) and find(fn, array) for backwards compatibility
186+ // Early return for undefined first argument
187+ if ( arg1 === undefined ) {
188+ return undefined ;
189+ }
190+
175191 let f : Function ;
176192 let a : any [ ] | undefined ;
177193
@@ -183,8 +199,6 @@ export function find(arg1: Function | any[] | undefined, arg2: Function | any[]
183199 // function-first: find(fn, array)
184200 f = arg1 ;
185201 a = arg2 as any [ ] | undefined ;
186- } else if ( arg1 === undefined ) {
187- return undefined ;
188202 } else {
189203 throw new Error (
190204 `find(array, predicate) expects an array and a function.\n` +
@@ -202,6 +216,11 @@ export function find(arg1: Function | any[] | undefined, arg2: Function | any[]
202216
203217export function some ( arg1 : Function | any [ ] | undefined , arg2 : Function | any [ ] | undefined ) : boolean | undefined {
204218 // Support both some(array, fn) and some(fn, array) for backwards compatibility
219+ // Early return for undefined first argument
220+ if ( arg1 === undefined ) {
221+ return undefined ;
222+ }
223+
205224 let f : Function ;
206225 let a : any [ ] | undefined ;
207226
@@ -213,8 +232,6 @@ export function some(arg1: Function | any[] | undefined, arg2: Function | any[]
213232 // function-first: some(fn, array)
214233 f = arg1 ;
215234 a = arg2 as any [ ] | undefined ;
216- } else if ( arg1 === undefined ) {
217- return undefined ;
218235 } else {
219236 throw new Error (
220237 `some(array, predicate) expects an array and a function.\n` +
@@ -232,6 +249,11 @@ export function some(arg1: Function | any[] | undefined, arg2: Function | any[]
232249
233250export function every ( arg1 : Function | any [ ] | undefined , arg2 : Function | any [ ] | undefined ) : boolean | undefined {
234251 // Support both every(array, fn) and every(fn, array) for backwards compatibility
252+ // Early return for undefined first argument
253+ if ( arg1 === undefined ) {
254+ return undefined ;
255+ }
256+
235257 let f : Function ;
236258 let a : any [ ] | undefined ;
237259
@@ -243,8 +265,6 @@ export function every(arg1: Function | any[] | undefined, arg2: Function | any[]
243265 // function-first: every(fn, array)
244266 f = arg1 ;
245267 a = arg2 as any [ ] | undefined ;
246- } else if ( arg1 === undefined ) {
247- return undefined ;
248268 } else {
249269 throw new Error (
250270 `every(array, predicate) expects an array and a function.\n` +
0 commit comments