eslint-plugin-remeda 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,3859 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __glob = (map2) => (path2) => {
6
+ var fn = map2[path2];
7
+ if (fn) return fn();
8
+ throw new Error("Module not found in bundle: " + path2);
9
+ };
10
+ var __esm = (fn, res) => function __init() {
11
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
12
+ };
13
+ var __export = (target, all) => {
14
+ for (var name in all)
15
+ __defProp(target, name, { get: all[name], enumerable: true });
16
+ };
17
+ var __copyProps = (to, from, except, desc) => {
18
+ if (from && typeof from === "object" || typeof from === "function") {
19
+ for (let key of __getOwnPropNames(from))
20
+ if (!__hasOwnProp.call(to, key) && key !== except)
21
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
22
+ }
23
+ return to;
24
+ };
25
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
+
27
+ // package.json
28
+ var version;
29
+ var init_package = __esm({
30
+ "package.json"() {
31
+ version = "0.0.0-development";
32
+ }
33
+ });
34
+
35
+ // src/util/getDocsUrl.ts
36
+ function getDocsUrl(ruleName) {
37
+ return `${REPO_URL}/blob/v${version}/docs/rules/${ruleName}.md`;
38
+ }
39
+ var REPO_URL;
40
+ var init_getDocsUrl = __esm({
41
+ "src/util/getDocsUrl.ts"() {
42
+ "use strict";
43
+ init_package();
44
+ REPO_URL = "https://github.com/AndreaPontrandolfo/eslint-plugin-remeda";
45
+ }
46
+ });
47
+
48
+ // src/util/methodData.ts
49
+ var methodData_exports = {};
50
+ __export(methodData_exports, {
51
+ add: () => add,
52
+ after: () => after,
53
+ ary: () => ary,
54
+ assign: () => assign,
55
+ assignIn: () => assignIn,
56
+ assignInWith: () => assignInWith,
57
+ assignWith: () => assignWith,
58
+ at: () => at,
59
+ attempt: () => attempt,
60
+ before: () => before,
61
+ bind: () => bind,
62
+ bindAll: () => bindAll,
63
+ bindKey: () => bindKey,
64
+ camelCase: () => camelCase,
65
+ capitalize: () => capitalize,
66
+ castArray: () => castArray,
67
+ ceil: () => ceil,
68
+ chain: () => chain,
69
+ chunk: () => chunk,
70
+ clamp: () => clamp,
71
+ clone: () => clone,
72
+ cloneDeep: () => cloneDeep,
73
+ cloneDeepWith: () => cloneDeepWith,
74
+ cloneWith: () => cloneWith,
75
+ commit: () => commit,
76
+ concat: () => concat,
77
+ cond: () => cond,
78
+ conforms: () => conforms,
79
+ conformsTo: () => conformsTo,
80
+ constant: () => constant,
81
+ countBy: () => countBy,
82
+ create: () => create,
83
+ curry: () => curry,
84
+ curryRight: () => curryRight,
85
+ debounce: () => debounce,
86
+ deburr: () => deburr,
87
+ defaultTo: () => defaultTo,
88
+ defaults: () => defaults,
89
+ defaultsDeep: () => defaultsDeep,
90
+ defer: () => defer,
91
+ delay: () => delay,
92
+ difference: () => difference,
93
+ differenceBy: () => differenceBy,
94
+ differenceWith: () => differenceWith,
95
+ divide: () => divide,
96
+ drop: () => drop,
97
+ dropRight: () => dropRight,
98
+ dropRightWhile: () => dropRightWhile,
99
+ dropWhile: () => dropWhile,
100
+ endsWith: () => endsWith,
101
+ eq: () => eq,
102
+ escape: () => escape,
103
+ escapeRegExp: () => escapeRegExp,
104
+ every: () => every,
105
+ fill: () => fill,
106
+ filter: () => filter,
107
+ find: () => find,
108
+ findIndex: () => findIndex,
109
+ findKey: () => findKey,
110
+ findLast: () => findLast,
111
+ findLastIndex: () => findLastIndex,
112
+ findLastKey: () => findLastKey,
113
+ first: () => first,
114
+ flatMap: () => flatMap,
115
+ flatMapDeep: () => flatMapDeep,
116
+ flatMapDepth: () => flatMapDepth,
117
+ flatten: () => flatten,
118
+ flattenDeep: () => flattenDeep,
119
+ flattenDepth: () => flattenDepth,
120
+ flip: () => flip,
121
+ floor: () => floor,
122
+ flow: () => flow,
123
+ flowRight: () => flowRight,
124
+ forEach: () => forEach,
125
+ forEachRight: () => forEachRight,
126
+ forIn: () => forIn,
127
+ forInRight: () => forInRight,
128
+ forOwn: () => forOwn,
129
+ forOwnRight: () => forOwnRight,
130
+ fromPairs: () => fromPairs,
131
+ functions: () => functions,
132
+ functionsIn: () => functionsIn,
133
+ get: () => get,
134
+ groupBy: () => groupBy,
135
+ gt: () => gt,
136
+ gte: () => gte,
137
+ has: () => has,
138
+ hasIn: () => hasIn,
139
+ head: () => head,
140
+ identity: () => identity,
141
+ inRange: () => inRange,
142
+ includes: () => includes,
143
+ indexBy: () => indexBy,
144
+ indexOf: () => indexOf,
145
+ initial: () => initial,
146
+ intersection: () => intersection,
147
+ intersectionBy: () => intersectionBy,
148
+ intersectionWith: () => intersectionWith,
149
+ invert: () => invert,
150
+ invertBy: () => invertBy,
151
+ invoke: () => invoke,
152
+ invokeMap: () => invokeMap,
153
+ isArguments: () => isArguments,
154
+ isArray: () => isArray,
155
+ isArrayBuffer: () => isArrayBuffer,
156
+ isArrayLike: () => isArrayLike,
157
+ isArrayLikeObject: () => isArrayLikeObject,
158
+ isBoolean: () => isBoolean,
159
+ isBuffer: () => isBuffer,
160
+ isDate: () => isDate,
161
+ isElement: () => isElement,
162
+ isEmpty: () => isEmpty,
163
+ isEqual: () => isEqual,
164
+ isEqualWith: () => isEqualWith,
165
+ isError: () => isError,
166
+ isFinite: () => isFinite,
167
+ isFunction: () => isFunction,
168
+ isInteger: () => isInteger,
169
+ isLength: () => isLength,
170
+ isMap: () => isMap,
171
+ isMatch: () => isMatch,
172
+ isMatchWith: () => isMatchWith,
173
+ isNaN: () => isNaN,
174
+ isNative: () => isNative,
175
+ isNil: () => isNil,
176
+ isNull: () => isNull,
177
+ isNumber: () => isNumber,
178
+ isObject: () => isObject,
179
+ isObjectLike: () => isObjectLike,
180
+ isPlainObject: () => isPlainObject,
181
+ isRegExp: () => isRegExp,
182
+ isSafeInteger: () => isSafeInteger,
183
+ isSet: () => isSet,
184
+ isString: () => isString,
185
+ isSymbol: () => isSymbol,
186
+ isTypedArray: () => isTypedArray,
187
+ isUndefined: () => isUndefined,
188
+ isWeakMap: () => isWeakMap,
189
+ isWeakSet: () => isWeakSet,
190
+ iteratee: () => iteratee,
191
+ join: () => join,
192
+ kebabCase: () => kebabCase,
193
+ keyBy: () => keyBy,
194
+ keys: () => keys,
195
+ keysIn: () => keysIn,
196
+ last: () => last,
197
+ lastIndexOf: () => lastIndexOf,
198
+ lowerCase: () => lowerCase,
199
+ lowerFirst: () => lowerFirst,
200
+ lt: () => lt,
201
+ lte: () => lte,
202
+ map: () => map,
203
+ mapKeys: () => mapKeys,
204
+ mapValues: () => mapValues,
205
+ matches: () => matches,
206
+ matchesProperty: () => matchesProperty,
207
+ max: () => max,
208
+ maxBy: () => maxBy,
209
+ mean: () => mean,
210
+ meanBy: () => meanBy,
211
+ memoize: () => memoize,
212
+ merge: () => merge,
213
+ mergeWith: () => mergeWith,
214
+ method: () => method,
215
+ methodOf: () => methodOf,
216
+ min: () => min,
217
+ minBy: () => minBy,
218
+ mixin: () => mixin,
219
+ multiply: () => multiply,
220
+ negate: () => negate,
221
+ next: () => next,
222
+ noConflict: () => noConflict,
223
+ noop: () => noop,
224
+ now: () => now,
225
+ nth: () => nth,
226
+ nthArg: () => nthArg,
227
+ omit: () => omit,
228
+ omitBy: () => omitBy,
229
+ once: () => once,
230
+ orderBy: () => orderBy,
231
+ over: () => over,
232
+ overArgs: () => overArgs,
233
+ overEvery: () => overEvery,
234
+ overSome: () => overSome,
235
+ pad: () => pad,
236
+ padEnd: () => padEnd,
237
+ padStart: () => padStart,
238
+ parseInt: () => parseInt2,
239
+ partial: () => partial,
240
+ partialRight: () => partialRight,
241
+ partition: () => partition,
242
+ pick: () => pick,
243
+ pickBy: () => pickBy,
244
+ plant: () => plant,
245
+ pop: () => pop,
246
+ property: () => property,
247
+ propertyOf: () => propertyOf,
248
+ pull: () => pull,
249
+ pullAll: () => pullAll,
250
+ pullAllBy: () => pullAllBy,
251
+ pullAllWith: () => pullAllWith,
252
+ pullAt: () => pullAt,
253
+ push: () => push,
254
+ random: () => random,
255
+ range: () => range,
256
+ rangeRight: () => rangeRight,
257
+ rearg: () => rearg,
258
+ reduce: () => reduce,
259
+ reduceRight: () => reduceRight,
260
+ reject: () => reject,
261
+ remove: () => remove,
262
+ repeat: () => repeat,
263
+ replace: () => replace,
264
+ rest: () => rest,
265
+ result: () => result,
266
+ reverse: () => reverse,
267
+ round: () => round,
268
+ runInContext: () => runInContext,
269
+ sample: () => sample,
270
+ sampleSize: () => sampleSize,
271
+ set: () => set,
272
+ setWith: () => setWith,
273
+ shift: () => shift,
274
+ shuffle: () => shuffle,
275
+ size: () => size,
276
+ slice: () => slice,
277
+ snakeCase: () => snakeCase,
278
+ some: () => some,
279
+ sort: () => sort,
280
+ sortBy: () => sortBy,
281
+ sortedIndex: () => sortedIndex,
282
+ sortedIndexBy: () => sortedIndexBy,
283
+ sortedIndexOf: () => sortedIndexOf,
284
+ sortedLastIndex: () => sortedLastIndex,
285
+ sortedLastIndexBy: () => sortedLastIndexBy,
286
+ sortedLastIndexOf: () => sortedLastIndexOf,
287
+ sortedUniq: () => sortedUniq,
288
+ sortedUniqBy: () => sortedUniqBy,
289
+ splice: () => splice,
290
+ split: () => split,
291
+ spread: () => spread,
292
+ startCase: () => startCase,
293
+ startsWith: () => startsWith,
294
+ stubArray: () => stubArray,
295
+ stubFalse: () => stubFalse,
296
+ stubObject: () => stubObject,
297
+ stubString: () => stubString,
298
+ stubTrue: () => stubTrue,
299
+ subtract: () => subtract,
300
+ sum: () => sum,
301
+ sumBy: () => sumBy,
302
+ tail: () => tail,
303
+ take: () => take,
304
+ takeRight: () => takeRight,
305
+ takeRightWhile: () => takeRightWhile,
306
+ takeWhile: () => takeWhile,
307
+ tap: () => tap,
308
+ template: () => template,
309
+ throttle: () => throttle,
310
+ thru: () => thru,
311
+ times: () => times,
312
+ toArray: () => toArray,
313
+ toFinite: () => toFinite,
314
+ toInteger: () => toInteger,
315
+ toLength: () => toLength,
316
+ toLower: () => toLower,
317
+ toNumber: () => toNumber,
318
+ toPairs: () => toPairs,
319
+ toPairsIn: () => toPairsIn,
320
+ toPath: () => toPath,
321
+ toPlainObject: () => toPlainObject,
322
+ toSafeInteger: () => toSafeInteger,
323
+ toString: () => toString,
324
+ toUpper: () => toUpper,
325
+ transform: () => transform,
326
+ trim: () => trim,
327
+ trimEnd: () => trimEnd,
328
+ trimStart: () => trimStart,
329
+ truncate: () => truncate,
330
+ unary: () => unary,
331
+ unescape: () => unescape,
332
+ union: () => union,
333
+ unionBy: () => unionBy,
334
+ unionWith: () => unionWith,
335
+ uniq: () => uniq,
336
+ uniqBy: () => uniqBy,
337
+ uniqWith: () => uniqWith,
338
+ uniqueId: () => uniqueId,
339
+ unset: () => unset,
340
+ unshift: () => unshift,
341
+ unzip: () => unzip,
342
+ unzipWith: () => unzipWith,
343
+ update: () => update,
344
+ updateWith: () => updateWith,
345
+ upperCase: () => upperCase,
346
+ upperFirst: () => upperFirst,
347
+ value: () => value,
348
+ values: () => values,
349
+ valuesIn: () => valuesIn,
350
+ without: () => without,
351
+ words: () => words,
352
+ wrap: () => wrap,
353
+ xor: () => xor,
354
+ xorBy: () => xorBy,
355
+ xorWith: () => xorWith,
356
+ zip: () => zip,
357
+ zipObject: () => zipObject,
358
+ zipObjectDeep: () => zipObjectDeep,
359
+ zipWith: () => zipWith
360
+ });
361
+ var add, after, ary, assign, assignIn, assignInWith, assignWith, at, attempt, before, bind, bindAll, bindKey, camelCase, capitalize, castArray, ceil, chain, chunk, clamp, clone, cloneDeep, cloneDeepWith, cloneWith, commit, concat, cond, conforms, conformsTo, constant, countBy, create, curry, curryRight, debounce, deburr, defaultTo, defaults, defaultsDeep, defer, delay, difference, differenceBy, differenceWith, divide, drop, dropRight, dropRightWhile, dropWhile, endsWith, eq, escape, escapeRegExp, every, fill, filter, find, findIndex, findKey, findLast, findLastIndex, findLastKey, flatMap, flatMapDeep, flatMapDepth, flatten, flattenDeep, flattenDepth, flip, floor, flow, flowRight, forEach, forEachRight, forIn, forInRight, forOwn, forOwnRight, fromPairs, functions, functionsIn, get, groupBy, gt, gte, has, hasIn, head, first, identity, inRange, includes, indexBy, indexOf, initial, intersection, intersectionBy, intersectionWith, invert, invertBy, invoke, invokeMap, isArguments, isArray, isArrayBuffer, isArrayLike, isArrayLikeObject, isBoolean, isBuffer, isDate, isElement, isEmpty, isEqual, isEqualWith, isError, isFinite, isFunction, isInteger, isLength, isMap, isMatch, isMatchWith, isNaN, isNative, isNil, isNull, isNumber, isObject, isObjectLike, isPlainObject, isRegExp, isSafeInteger, isSet, isString, isSymbol, isTypedArray, isUndefined, isWeakMap, isWeakSet, iteratee, join, kebabCase, keyBy, keys, keysIn, last, lastIndexOf, lowerCase, lowerFirst, lt, lte, map, mapKeys, mapValues, matches, matchesProperty, max, maxBy, mean, meanBy, memoize, merge, mergeWith, method, methodOf, min, minBy, mixin, multiply, negate, next, noConflict, noop, now, nth, nthArg, omit, omitBy, once, orderBy, over, overArgs, overEvery, overSome, pad, padEnd, padStart, parseInt2, partial, partialRight, partition, pick, pickBy, plant, pop, property, propertyOf, pull, pullAll, pullAllBy, pullAllWith, pullAt, push, random, range, rangeRight, rearg, reduce, reduceRight, reject, remove, repeat, replace, rest, result, reverse, round, runInContext, sample, sampleSize, set, setWith, shift, shuffle, size, slice, snakeCase, some, sort, sortBy, sortedIndex, sortedIndexBy, sortedIndexOf, sortedLastIndex, sortedLastIndexBy, sortedLastIndexOf, sortedUniq, sortedUniqBy, splice, split, spread, startCase, startsWith, stubArray, stubFalse, stubObject, stubString, stubTrue, subtract, sum, sumBy, tail, take, takeRight, takeRightWhile, takeWhile, tap, template, throttle, thru, times, toArray, toFinite, toInteger, toLength, toLower, toNumber, toPairs, toPairsIn, toPath, toPlainObject, toSafeInteger, toString, toUpper, transform, trim, trimEnd, trimStart, truncate, unary, unescape, union, unionBy, unionWith, uniq, uniqBy, uniqWith, uniqueId, unset, unshift, unzip, unzipWith, update, updateWith, upperCase, upperFirst, value, values, valuesIn, without, words, wrap, xor, xorBy, xorWith, zip, zipObject, zipObjectDeep, zipWith;
362
+ var init_methodData = __esm({
363
+ "src/util/methodData.ts"() {
364
+ "use strict";
365
+ add = {
366
+ wrapper: false,
367
+ shorthand: false,
368
+ chainable: false,
369
+ iteratee: false,
370
+ args: 2
371
+ };
372
+ after = {
373
+ wrapper: false,
374
+ shorthand: false,
375
+ chainable: true,
376
+ iteratee: false,
377
+ args: 2
378
+ };
379
+ ary = {
380
+ wrapper: false,
381
+ shorthand: false,
382
+ chainable: true,
383
+ iteratee: false,
384
+ args: 2
385
+ };
386
+ assign = {
387
+ wrapper: false,
388
+ shorthand: false,
389
+ chainable: true,
390
+ iteratee: false
391
+ };
392
+ assignIn = {
393
+ wrapper: false,
394
+ shorthand: false,
395
+ chainable: true,
396
+ iteratee: false
397
+ };
398
+ assignInWith = {
399
+ wrapper: false,
400
+ shorthand: false,
401
+ chainable: true,
402
+ iteratee: false
403
+ };
404
+ assignWith = {
405
+ wrapper: false,
406
+ shorthand: false,
407
+ chainable: true,
408
+ iteratee: false
409
+ };
410
+ at = {
411
+ wrapper: false,
412
+ shorthand: false,
413
+ chainable: true,
414
+ iteratee: false
415
+ };
416
+ attempt = {
417
+ wrapper: false,
418
+ shorthand: false,
419
+ chainable: false,
420
+ iteratee: false
421
+ };
422
+ before = {
423
+ wrapper: false,
424
+ shorthand: false,
425
+ chainable: true,
426
+ iteratee: false,
427
+ args: 2
428
+ };
429
+ bind = {
430
+ wrapper: false,
431
+ shorthand: false,
432
+ chainable: true,
433
+ iteratee: false
434
+ };
435
+ bindAll = {
436
+ wrapper: false,
437
+ shorthand: false,
438
+ chainable: true,
439
+ iteratee: false
440
+ };
441
+ bindKey = {
442
+ wrapper: false,
443
+ shorthand: false,
444
+ chainable: true,
445
+ iteratee: false
446
+ };
447
+ camelCase = {
448
+ wrapper: false,
449
+ shorthand: false,
450
+ chainable: false,
451
+ iteratee: false,
452
+ args: 1
453
+ };
454
+ capitalize = {
455
+ wrapper: false,
456
+ shorthand: false,
457
+ chainable: false,
458
+ iteratee: false,
459
+ args: 1
460
+ };
461
+ castArray = {
462
+ wrapper: false,
463
+ shorthand: false,
464
+ chainable: true,
465
+ iteratee: false,
466
+ args: 1
467
+ };
468
+ ceil = {
469
+ wrapper: false,
470
+ shorthand: false,
471
+ chainable: false,
472
+ iteratee: false,
473
+ args: 2
474
+ };
475
+ chain = {
476
+ wrapper: false,
477
+ shorthand: false,
478
+ chainable: true,
479
+ iteratee: false,
480
+ args: 1
481
+ };
482
+ chunk = {
483
+ wrapper: false,
484
+ shorthand: false,
485
+ chainable: true,
486
+ iteratee: false,
487
+ args: 2
488
+ };
489
+ clamp = {
490
+ wrapper: false,
491
+ shorthand: false,
492
+ chainable: false,
493
+ iteratee: false,
494
+ args: 3
495
+ };
496
+ clone = {
497
+ wrapper: false,
498
+ shorthand: false,
499
+ chainable: false,
500
+ iteratee: false,
501
+ args: 1
502
+ };
503
+ cloneDeep = {
504
+ wrapper: false,
505
+ shorthand: false,
506
+ chainable: false,
507
+ iteratee: false,
508
+ args: 1
509
+ };
510
+ cloneDeepWith = {
511
+ wrapper: false,
512
+ shorthand: false,
513
+ chainable: false,
514
+ iteratee: true,
515
+ args: 2
516
+ };
517
+ cloneWith = {
518
+ wrapper: false,
519
+ shorthand: false,
520
+ chainable: false,
521
+ iteratee: true,
522
+ args: 2
523
+ };
524
+ commit = {
525
+ wrapper: false,
526
+ shorthand: false,
527
+ chainable: true,
528
+ iteratee: false
529
+ };
530
+ concat = {
531
+ wrapper: true,
532
+ shorthand: false,
533
+ chainable: true,
534
+ iteratee: false
535
+ };
536
+ cond = {
537
+ wrapper: false,
538
+ shorthand: false,
539
+ chainable: false,
540
+ iteratee: false,
541
+ args: 1
542
+ };
543
+ conforms = {
544
+ wrapper: false,
545
+ shorthand: false,
546
+ chainable: true,
547
+ iteratee: false,
548
+ args: 1
549
+ };
550
+ conformsTo = {
551
+ wrapper: false,
552
+ shorthand: false,
553
+ chainable: false,
554
+ iteratee: false,
555
+ args: 2
556
+ };
557
+ constant = {
558
+ wrapper: false,
559
+ shorthand: false,
560
+ chainable: true,
561
+ iteratee: false,
562
+ args: 1
563
+ };
564
+ countBy = {
565
+ wrapper: false,
566
+ shorthand: true,
567
+ chainable: true,
568
+ iteratee: true,
569
+ args: 2
570
+ };
571
+ create = {
572
+ wrapper: false,
573
+ shorthand: false,
574
+ chainable: true,
575
+ iteratee: false,
576
+ args: 2
577
+ };
578
+ curry = {
579
+ wrapper: false,
580
+ shorthand: false,
581
+ chainable: true,
582
+ iteratee: false,
583
+ args: 2
584
+ };
585
+ curryRight = {
586
+ wrapper: false,
587
+ shorthand: false,
588
+ chainable: false,
589
+ iteratee: false,
590
+ args: 2
591
+ };
592
+ debounce = {
593
+ wrapper: false,
594
+ shorthand: false,
595
+ chainable: true,
596
+ iteratee: false,
597
+ args: 3
598
+ };
599
+ deburr = {
600
+ wrapper: false,
601
+ shorthand: false,
602
+ chainable: false,
603
+ iteratee: false,
604
+ args: 1
605
+ };
606
+ defaultTo = {
607
+ wrapper: false,
608
+ shorthand: false,
609
+ chainable: false,
610
+ iteratee: false,
611
+ args: 2
612
+ };
613
+ defaults = {
614
+ wrapper: false,
615
+ shorthand: false,
616
+ chainable: true,
617
+ iteratee: false
618
+ };
619
+ defaultsDeep = {
620
+ wrapper: false,
621
+ shorthand: false,
622
+ chainable: true,
623
+ iteratee: false
624
+ };
625
+ defer = {
626
+ wrapper: false,
627
+ shorthand: false,
628
+ chainable: true,
629
+ iteratee: false
630
+ };
631
+ delay = {
632
+ wrapper: false,
633
+ shorthand: false,
634
+ chainable: true,
635
+ iteratee: false
636
+ };
637
+ difference = {
638
+ wrapper: false,
639
+ shorthand: false,
640
+ chainable: true,
641
+ iteratee: false
642
+ };
643
+ differenceBy = {
644
+ wrapper: false,
645
+ shorthand: true,
646
+ chainable: true,
647
+ iteratee: true
648
+ };
649
+ differenceWith = {
650
+ wrapper: false,
651
+ shorthand: false,
652
+ chainable: true,
653
+ iteratee: false
654
+ };
655
+ divide = {
656
+ wrapper: false,
657
+ shorthand: false,
658
+ chainable: false,
659
+ iteratee: false,
660
+ args: 2
661
+ };
662
+ drop = {
663
+ wrapper: false,
664
+ shorthand: false,
665
+ chainable: true,
666
+ iteratee: false,
667
+ args: 2
668
+ };
669
+ dropRight = {
670
+ wrapper: false,
671
+ shorthand: false,
672
+ chainable: true,
673
+ iteratee: false,
674
+ args: 2
675
+ };
676
+ dropRightWhile = {
677
+ wrapper: false,
678
+ shorthand: true,
679
+ chainable: true,
680
+ iteratee: true,
681
+ args: 3
682
+ };
683
+ dropWhile = {
684
+ wrapper: false,
685
+ shorthand: true,
686
+ chainable: true,
687
+ iteratee: true,
688
+ args: 3
689
+ };
690
+ endsWith = {
691
+ wrapper: false,
692
+ shorthand: false,
693
+ chainable: false,
694
+ iteratee: false,
695
+ args: 3
696
+ };
697
+ eq = {
698
+ wrapper: false,
699
+ shorthand: false,
700
+ chainable: false,
701
+ iteratee: false,
702
+ args: 2
703
+ };
704
+ escape = {
705
+ wrapper: false,
706
+ shorthand: false,
707
+ chainable: false,
708
+ iteratee: false,
709
+ args: 1
710
+ };
711
+ escapeRegExp = {
712
+ wrapper: false,
713
+ shorthand: false,
714
+ chainable: false,
715
+ iteratee: false,
716
+ args: 1
717
+ };
718
+ every = {
719
+ wrapper: false,
720
+ shorthand: true,
721
+ chainable: false,
722
+ iteratee: true,
723
+ args: 2
724
+ };
725
+ fill = {
726
+ wrapper: false,
727
+ shorthand: false,
728
+ chainable: true,
729
+ iteratee: false,
730
+ args: 4
731
+ };
732
+ filter = {
733
+ wrapper: false,
734
+ shorthand: true,
735
+ chainable: true,
736
+ iteratee: true,
737
+ args: 2
738
+ };
739
+ find = {
740
+ wrapper: false,
741
+ shorthand: true,
742
+ chainable: false,
743
+ iteratee: true,
744
+ args: 3
745
+ };
746
+ findIndex = {
747
+ wrapper: false,
748
+ shorthand: true,
749
+ chainable: false,
750
+ iteratee: true,
751
+ args: 3
752
+ };
753
+ findKey = {
754
+ wrapper: false,
755
+ shorthand: true,
756
+ chainable: false,
757
+ iteratee: true,
758
+ args: 2
759
+ };
760
+ findLast = {
761
+ wrapper: false,
762
+ shorthand: true,
763
+ chainable: false,
764
+ iteratee: true,
765
+ args: 3
766
+ };
767
+ findLastIndex = {
768
+ wrapper: false,
769
+ shorthand: true,
770
+ chainable: false,
771
+ iteratee: true,
772
+ args: 3
773
+ };
774
+ findLastKey = {
775
+ wrapper: false,
776
+ shorthand: true,
777
+ chainable: false,
778
+ iteratee: true,
779
+ args: 2
780
+ };
781
+ flatMap = {
782
+ wrapper: false,
783
+ shorthand: true,
784
+ chainable: true,
785
+ iteratee: true,
786
+ args: 2
787
+ };
788
+ flatMapDeep = {
789
+ wrapper: false,
790
+ shorthand: true,
791
+ chainable: true,
792
+ iteratee: true,
793
+ args: 2
794
+ };
795
+ flatMapDepth = {
796
+ wrapper: false,
797
+ shorthand: true,
798
+ chainable: true,
799
+ iteratee: true,
800
+ args: 3
801
+ };
802
+ flatten = {
803
+ wrapper: false,
804
+ shorthand: false,
805
+ chainable: true,
806
+ iteratee: false,
807
+ args: 1
808
+ };
809
+ flattenDeep = {
810
+ wrapper: false,
811
+ shorthand: false,
812
+ chainable: true,
813
+ iteratee: false,
814
+ args: 1
815
+ };
816
+ flattenDepth = {
817
+ wrapper: false,
818
+ shorthand: false,
819
+ chainable: true,
820
+ iteratee: false,
821
+ args: 2
822
+ };
823
+ flip = {
824
+ wrapper: false,
825
+ shorthand: false,
826
+ chainable: true,
827
+ iteratee: false,
828
+ args: 1
829
+ };
830
+ floor = {
831
+ wrapper: false,
832
+ shorthand: false,
833
+ chainable: false,
834
+ iteratee: false,
835
+ args: 2
836
+ };
837
+ flow = {
838
+ wrapper: false,
839
+ shorthand: false,
840
+ chainable: true,
841
+ iteratee: false
842
+ };
843
+ flowRight = {
844
+ wrapper: false,
845
+ shorthand: false,
846
+ chainable: true,
847
+ iteratee: false
848
+ };
849
+ forEach = {
850
+ wrapper: false,
851
+ shorthand: false,
852
+ chainable: false,
853
+ iteratee: true,
854
+ args: 2
855
+ };
856
+ forEachRight = {
857
+ wrapper: false,
858
+ shorthand: false,
859
+ chainable: false,
860
+ iteratee: true,
861
+ args: 2
862
+ };
863
+ forIn = {
864
+ wrapper: false,
865
+ shorthand: false,
866
+ chainable: false,
867
+ iteratee: true,
868
+ args: 2
869
+ };
870
+ forInRight = {
871
+ wrapper: false,
872
+ shorthand: false,
873
+ chainable: false,
874
+ iteratee: true,
875
+ args: 2
876
+ };
877
+ forOwn = {
878
+ wrapper: false,
879
+ shorthand: false,
880
+ chainable: false,
881
+ iteratee: true,
882
+ args: 2
883
+ };
884
+ forOwnRight = {
885
+ wrapper: false,
886
+ shorthand: false,
887
+ chainable: false,
888
+ iteratee: true,
889
+ args: 2
890
+ };
891
+ fromPairs = {
892
+ wrapper: false,
893
+ shorthand: false,
894
+ chainable: true,
895
+ iteratee: false,
896
+ args: 1
897
+ };
898
+ functions = {
899
+ wrapper: false,
900
+ shorthand: false,
901
+ chainable: true,
902
+ iteratee: false,
903
+ args: 1
904
+ };
905
+ functionsIn = {
906
+ wrapper: false,
907
+ shorthand: false,
908
+ chainable: true,
909
+ iteratee: false,
910
+ args: 1
911
+ };
912
+ get = {
913
+ wrapper: false,
914
+ shorthand: false,
915
+ chainable: false,
916
+ iteratee: false,
917
+ args: 3
918
+ };
919
+ groupBy = {
920
+ wrapper: false,
921
+ shorthand: true,
922
+ chainable: true,
923
+ iteratee: true,
924
+ args: 2
925
+ };
926
+ gt = {
927
+ wrapper: false,
928
+ shorthand: false,
929
+ chainable: false,
930
+ iteratee: false,
931
+ args: 2
932
+ };
933
+ gte = {
934
+ wrapper: false,
935
+ shorthand: false,
936
+ chainable: false,
937
+ iteratee: false,
938
+ args: 2
939
+ };
940
+ has = {
941
+ wrapper: false,
942
+ shorthand: false,
943
+ chainable: false,
944
+ iteratee: false,
945
+ args: 2
946
+ };
947
+ hasIn = {
948
+ wrapper: false,
949
+ shorthand: false,
950
+ chainable: false,
951
+ iteratee: false,
952
+ args: 2
953
+ };
954
+ head = {
955
+ wrapper: false,
956
+ shorthand: false,
957
+ chainable: false,
958
+ iteratee: false,
959
+ args: 1
960
+ };
961
+ first = {
962
+ wrapper: false,
963
+ shorthand: false,
964
+ chainable: false,
965
+ iteratee: false,
966
+ args: 1
967
+ };
968
+ identity = {
969
+ wrapper: false,
970
+ shorthand: false,
971
+ chainable: false,
972
+ iteratee: false,
973
+ args: 1
974
+ };
975
+ inRange = {
976
+ wrapper: false,
977
+ shorthand: false,
978
+ chainable: false,
979
+ iteratee: false,
980
+ args: 3
981
+ };
982
+ includes = {
983
+ wrapper: false,
984
+ shorthand: false,
985
+ chainable: false,
986
+ iteratee: false,
987
+ args: 3
988
+ };
989
+ indexBy = {
990
+ wrapper: false,
991
+ shorthand: false,
992
+ chainable: false,
993
+ iteratee: true
994
+ };
995
+ indexOf = {
996
+ wrapper: false,
997
+ shorthand: false,
998
+ chainable: false,
999
+ iteratee: false,
1000
+ args: 3
1001
+ };
1002
+ initial = {
1003
+ wrapper: false,
1004
+ shorthand: false,
1005
+ chainable: true,
1006
+ iteratee: false,
1007
+ args: 1
1008
+ };
1009
+ intersection = {
1010
+ wrapper: false,
1011
+ shorthand: false,
1012
+ chainable: true,
1013
+ iteratee: false
1014
+ };
1015
+ intersectionBy = {
1016
+ wrapper: false,
1017
+ shorthand: true,
1018
+ chainable: true,
1019
+ iteratee: true
1020
+ };
1021
+ intersectionWith = {
1022
+ wrapper: false,
1023
+ shorthand: false,
1024
+ chainable: true,
1025
+ iteratee: false
1026
+ };
1027
+ invert = {
1028
+ wrapper: false,
1029
+ shorthand: false,
1030
+ chainable: true,
1031
+ iteratee: false,
1032
+ args: 1
1033
+ };
1034
+ invertBy = {
1035
+ wrapper: false,
1036
+ shorthand: true,
1037
+ chainable: true,
1038
+ iteratee: true,
1039
+ args: 2
1040
+ };
1041
+ invoke = {
1042
+ wrapper: false,
1043
+ shorthand: false,
1044
+ chainable: false,
1045
+ iteratee: false
1046
+ };
1047
+ invokeMap = {
1048
+ wrapper: false,
1049
+ shorthand: false,
1050
+ chainable: true,
1051
+ iteratee: false
1052
+ };
1053
+ isArguments = {
1054
+ wrapper: false,
1055
+ shorthand: false,
1056
+ chainable: false,
1057
+ iteratee: false,
1058
+ args: 1
1059
+ };
1060
+ isArray = {
1061
+ wrapper: false,
1062
+ shorthand: false,
1063
+ chainable: false,
1064
+ iteratee: false,
1065
+ args: 1
1066
+ };
1067
+ isArrayBuffer = {
1068
+ wrapper: false,
1069
+ shorthand: false,
1070
+ chainable: false,
1071
+ iteratee: false,
1072
+ args: 1
1073
+ };
1074
+ isArrayLike = {
1075
+ wrapper: false,
1076
+ shorthand: false,
1077
+ chainable: false,
1078
+ iteratee: false,
1079
+ args: 1
1080
+ };
1081
+ isArrayLikeObject = {
1082
+ wrapper: false,
1083
+ shorthand: false,
1084
+ chainable: false,
1085
+ iteratee: false,
1086
+ args: 1
1087
+ };
1088
+ isBoolean = {
1089
+ wrapper: false,
1090
+ shorthand: false,
1091
+ chainable: false,
1092
+ iteratee: false,
1093
+ args: 1
1094
+ };
1095
+ isBuffer = {
1096
+ wrapper: false,
1097
+ shorthand: false,
1098
+ chainable: false,
1099
+ iteratee: false,
1100
+ args: 1
1101
+ };
1102
+ isDate = {
1103
+ wrapper: false,
1104
+ shorthand: false,
1105
+ chainable: false,
1106
+ iteratee: false,
1107
+ args: 1
1108
+ };
1109
+ isElement = {
1110
+ wrapper: false,
1111
+ shorthand: false,
1112
+ chainable: false,
1113
+ iteratee: false,
1114
+ args: 1
1115
+ };
1116
+ isEmpty = {
1117
+ wrapper: false,
1118
+ shorthand: false,
1119
+ chainable: false,
1120
+ iteratee: false,
1121
+ args: 1
1122
+ };
1123
+ isEqual = {
1124
+ wrapper: false,
1125
+ shorthand: false,
1126
+ chainable: false,
1127
+ iteratee: false,
1128
+ args: 2
1129
+ };
1130
+ isEqualWith = {
1131
+ wrapper: false,
1132
+ shorthand: false,
1133
+ chainable: false,
1134
+ iteratee: false,
1135
+ args: 3
1136
+ };
1137
+ isError = {
1138
+ wrapper: false,
1139
+ shorthand: false,
1140
+ chainable: false,
1141
+ iteratee: false,
1142
+ args: 1
1143
+ };
1144
+ isFinite = {
1145
+ wrapper: false,
1146
+ shorthand: false,
1147
+ chainable: false,
1148
+ iteratee: false,
1149
+ args: 1
1150
+ };
1151
+ isFunction = {
1152
+ wrapper: false,
1153
+ shorthand: false,
1154
+ chainable: false,
1155
+ iteratee: false,
1156
+ args: 1
1157
+ };
1158
+ isInteger = {
1159
+ wrapper: false,
1160
+ shorthand: false,
1161
+ chainable: false,
1162
+ iteratee: false,
1163
+ args: 1
1164
+ };
1165
+ isLength = {
1166
+ wrapper: false,
1167
+ shorthand: false,
1168
+ chainable: false,
1169
+ iteratee: false,
1170
+ args: 1
1171
+ };
1172
+ isMap = {
1173
+ wrapper: false,
1174
+ shorthand: false,
1175
+ chainable: false,
1176
+ iteratee: false,
1177
+ args: 1
1178
+ };
1179
+ isMatch = {
1180
+ wrapper: false,
1181
+ shorthand: false,
1182
+ chainable: false,
1183
+ iteratee: false,
1184
+ args: 2
1185
+ };
1186
+ isMatchWith = {
1187
+ wrapper: false,
1188
+ shorthand: false,
1189
+ chainable: false,
1190
+ iteratee: false,
1191
+ args: 3
1192
+ };
1193
+ isNaN = {
1194
+ wrapper: false,
1195
+ shorthand: false,
1196
+ chainable: false,
1197
+ iteratee: false,
1198
+ args: 1
1199
+ };
1200
+ isNative = {
1201
+ wrapper: false,
1202
+ shorthand: false,
1203
+ chainable: false,
1204
+ iteratee: false,
1205
+ args: 1
1206
+ };
1207
+ isNil = {
1208
+ wrapper: false,
1209
+ shorthand: false,
1210
+ chainable: false,
1211
+ iteratee: false,
1212
+ args: 1
1213
+ };
1214
+ isNull = {
1215
+ wrapper: false,
1216
+ shorthand: false,
1217
+ chainable: false,
1218
+ iteratee: false,
1219
+ args: 1
1220
+ };
1221
+ isNumber = {
1222
+ wrapper: false,
1223
+ shorthand: false,
1224
+ chainable: false,
1225
+ iteratee: false,
1226
+ args: 1
1227
+ };
1228
+ isObject = {
1229
+ wrapper: false,
1230
+ shorthand: false,
1231
+ chainable: false,
1232
+ iteratee: false,
1233
+ args: 1
1234
+ };
1235
+ isObjectLike = {
1236
+ wrapper: false,
1237
+ shorthand: false,
1238
+ chainable: false,
1239
+ iteratee: false,
1240
+ args: 1
1241
+ };
1242
+ isPlainObject = {
1243
+ wrapper: false,
1244
+ shorthand: false,
1245
+ chainable: false,
1246
+ iteratee: false,
1247
+ args: 1
1248
+ };
1249
+ isRegExp = {
1250
+ wrapper: false,
1251
+ shorthand: false,
1252
+ chainable: false,
1253
+ iteratee: false,
1254
+ args: 1
1255
+ };
1256
+ isSafeInteger = {
1257
+ wrapper: false,
1258
+ shorthand: false,
1259
+ chainable: false,
1260
+ iteratee: false,
1261
+ args: 1
1262
+ };
1263
+ isSet = {
1264
+ wrapper: false,
1265
+ shorthand: false,
1266
+ chainable: false,
1267
+ iteratee: false,
1268
+ args: 1
1269
+ };
1270
+ isString = {
1271
+ wrapper: false,
1272
+ shorthand: false,
1273
+ chainable: false,
1274
+ iteratee: false,
1275
+ args: 1
1276
+ };
1277
+ isSymbol = {
1278
+ wrapper: false,
1279
+ shorthand: false,
1280
+ chainable: false,
1281
+ iteratee: false,
1282
+ args: 1
1283
+ };
1284
+ isTypedArray = {
1285
+ wrapper: false,
1286
+ shorthand: false,
1287
+ chainable: false,
1288
+ iteratee: false,
1289
+ args: 1
1290
+ };
1291
+ isUndefined = {
1292
+ wrapper: false,
1293
+ shorthand: false,
1294
+ chainable: false,
1295
+ iteratee: false,
1296
+ args: 1
1297
+ };
1298
+ isWeakMap = {
1299
+ wrapper: false,
1300
+ shorthand: false,
1301
+ chainable: false,
1302
+ iteratee: false,
1303
+ args: 1
1304
+ };
1305
+ isWeakSet = {
1306
+ wrapper: false,
1307
+ shorthand: false,
1308
+ chainable: false,
1309
+ iteratee: false,
1310
+ args: 1
1311
+ };
1312
+ iteratee = {
1313
+ wrapper: false,
1314
+ shorthand: false,
1315
+ chainable: true,
1316
+ iteratee: false
1317
+ };
1318
+ join = {
1319
+ wrapper: true,
1320
+ shorthand: false,
1321
+ chainable: false,
1322
+ iteratee: false,
1323
+ args: 2
1324
+ };
1325
+ kebabCase = {
1326
+ wrapper: false,
1327
+ shorthand: false,
1328
+ chainable: false,
1329
+ iteratee: false,
1330
+ args: 1
1331
+ };
1332
+ keyBy = {
1333
+ wrapper: false,
1334
+ shorthand: false,
1335
+ chainable: true,
1336
+ iteratee: true,
1337
+ args: 2
1338
+ };
1339
+ keys = {
1340
+ wrapper: false,
1341
+ shorthand: false,
1342
+ chainable: true,
1343
+ iteratee: false,
1344
+ args: 1
1345
+ };
1346
+ keysIn = {
1347
+ wrapper: false,
1348
+ shorthand: false,
1349
+ chainable: true,
1350
+ iteratee: false,
1351
+ args: 1
1352
+ };
1353
+ last = {
1354
+ wrapper: false,
1355
+ shorthand: false,
1356
+ chainable: false,
1357
+ iteratee: false,
1358
+ args: 1
1359
+ };
1360
+ lastIndexOf = {
1361
+ wrapper: false,
1362
+ shorthand: false,
1363
+ chainable: false,
1364
+ iteratee: false,
1365
+ args: 3
1366
+ };
1367
+ lowerCase = {
1368
+ wrapper: false,
1369
+ shorthand: false,
1370
+ chainable: false,
1371
+ iteratee: false,
1372
+ args: 1
1373
+ };
1374
+ lowerFirst = {
1375
+ wrapper: false,
1376
+ shorthand: false,
1377
+ chainable: false,
1378
+ iteratee: false,
1379
+ args: 1
1380
+ };
1381
+ lt = {
1382
+ wrapper: false,
1383
+ shorthand: false,
1384
+ chainable: false,
1385
+ iteratee: false,
1386
+ args: 2
1387
+ };
1388
+ lte = {
1389
+ wrapper: false,
1390
+ shorthand: false,
1391
+ chainable: false,
1392
+ iteratee: false,
1393
+ args: 2
1394
+ };
1395
+ map = {
1396
+ wrapper: false,
1397
+ shorthand: true,
1398
+ chainable: true,
1399
+ iteratee: true,
1400
+ args: 2
1401
+ };
1402
+ mapKeys = {
1403
+ wrapper: false,
1404
+ shorthand: false,
1405
+ chainable: true,
1406
+ iteratee: true,
1407
+ args: 2
1408
+ };
1409
+ mapValues = {
1410
+ wrapper: false,
1411
+ shorthand: true,
1412
+ chainable: true,
1413
+ iteratee: true,
1414
+ args: 2
1415
+ };
1416
+ matches = {
1417
+ wrapper: false,
1418
+ shorthand: false,
1419
+ chainable: true,
1420
+ iteratee: false,
1421
+ args: 1
1422
+ };
1423
+ matchesProperty = {
1424
+ wrapper: false,
1425
+ shorthand: false,
1426
+ chainable: true,
1427
+ iteratee: false,
1428
+ args: 2
1429
+ };
1430
+ max = {
1431
+ wrapper: false,
1432
+ shorthand: false,
1433
+ chainable: false,
1434
+ iteratee: false,
1435
+ args: 1
1436
+ };
1437
+ maxBy = {
1438
+ wrapper: false,
1439
+ shorthand: true,
1440
+ chainable: false,
1441
+ iteratee: true,
1442
+ args: 2
1443
+ };
1444
+ mean = {
1445
+ wrapper: false,
1446
+ shorthand: false,
1447
+ chainable: false,
1448
+ iteratee: false,
1449
+ args: 1
1450
+ };
1451
+ meanBy = {
1452
+ wrapper: false,
1453
+ shorthand: false,
1454
+ chainable: false,
1455
+ iteratee: true,
1456
+ args: 2
1457
+ };
1458
+ memoize = {
1459
+ wrapper: false,
1460
+ shorthand: false,
1461
+ chainable: true,
1462
+ iteratee: false,
1463
+ args: 2
1464
+ };
1465
+ merge = {
1466
+ wrapper: false,
1467
+ shorthand: false,
1468
+ chainable: true,
1469
+ iteratee: false
1470
+ };
1471
+ mergeWith = {
1472
+ wrapper: false,
1473
+ shorthand: false,
1474
+ chainable: true,
1475
+ iteratee: false
1476
+ };
1477
+ method = {
1478
+ wrapper: false,
1479
+ shorthand: false,
1480
+ chainable: true,
1481
+ iteratee: false
1482
+ };
1483
+ methodOf = {
1484
+ wrapper: false,
1485
+ shorthand: false,
1486
+ chainable: true,
1487
+ iteratee: false
1488
+ };
1489
+ min = {
1490
+ wrapper: false,
1491
+ shorthand: false,
1492
+ chainable: false,
1493
+ iteratee: false,
1494
+ args: 1
1495
+ };
1496
+ minBy = {
1497
+ wrapper: false,
1498
+ shorthand: true,
1499
+ chainable: false,
1500
+ iteratee: true,
1501
+ args: 2
1502
+ };
1503
+ mixin = {
1504
+ wrapper: false,
1505
+ shorthand: false,
1506
+ chainable: true,
1507
+ iteratee: false,
1508
+ args: 3
1509
+ };
1510
+ multiply = {
1511
+ wrapper: false,
1512
+ shorthand: false,
1513
+ chainable: false,
1514
+ iteratee: false,
1515
+ args: 2
1516
+ };
1517
+ negate = {
1518
+ wrapper: false,
1519
+ shorthand: false,
1520
+ chainable: true,
1521
+ iteratee: false,
1522
+ args: 1
1523
+ };
1524
+ next = {
1525
+ wrapper: true,
1526
+ shorthand: false,
1527
+ chainable: true,
1528
+ iteratee: false,
1529
+ args: 0
1530
+ };
1531
+ noConflict = {
1532
+ wrapper: false,
1533
+ shorthand: false,
1534
+ chainable: false,
1535
+ iteratee: false,
1536
+ args: 0
1537
+ };
1538
+ noop = {
1539
+ wrapper: false,
1540
+ shorthand: false,
1541
+ chainable: false,
1542
+ iteratee: false,
1543
+ args: 0
1544
+ };
1545
+ now = {
1546
+ wrapper: false,
1547
+ shorthand: false,
1548
+ chainable: false,
1549
+ iteratee: false,
1550
+ args: 0
1551
+ };
1552
+ nth = {
1553
+ wrapper: false,
1554
+ shorthand: false,
1555
+ chainable: false,
1556
+ iteratee: false,
1557
+ args: 2
1558
+ };
1559
+ nthArg = {
1560
+ wrapper: false,
1561
+ shorthand: false,
1562
+ chainable: true,
1563
+ iteratee: false,
1564
+ args: 1
1565
+ };
1566
+ omit = {
1567
+ wrapper: false,
1568
+ shorthand: false,
1569
+ chainable: true,
1570
+ iteratee: false
1571
+ };
1572
+ omitBy = {
1573
+ wrapper: false,
1574
+ shorthand: true,
1575
+ chainable: true,
1576
+ iteratee: true
1577
+ };
1578
+ once = {
1579
+ wrapper: false,
1580
+ shorthand: false,
1581
+ chainable: true,
1582
+ iteratee: false,
1583
+ args: 1
1584
+ };
1585
+ orderBy = {
1586
+ wrapper: false,
1587
+ shorthand: false,
1588
+ chainable: true,
1589
+ iteratee: false,
1590
+ args: 3
1591
+ };
1592
+ over = {
1593
+ wrapper: false,
1594
+ shorthand: false,
1595
+ chainable: true,
1596
+ iteratee: false
1597
+ };
1598
+ overArgs = {
1599
+ wrapper: false,
1600
+ shorthand: false,
1601
+ chainable: true,
1602
+ iteratee: false
1603
+ };
1604
+ overEvery = {
1605
+ wrapper: false,
1606
+ shorthand: true,
1607
+ chainable: true,
1608
+ iteratee: true
1609
+ };
1610
+ overSome = {
1611
+ wrapper: false,
1612
+ shorthand: true,
1613
+ chainable: true,
1614
+ iteratee: true
1615
+ };
1616
+ pad = {
1617
+ wrapper: false,
1618
+ shorthand: false,
1619
+ chainable: false,
1620
+ iteratee: false,
1621
+ args: 3
1622
+ };
1623
+ padEnd = {
1624
+ wrapper: false,
1625
+ shorthand: false,
1626
+ chainable: false,
1627
+ iteratee: false,
1628
+ args: 3
1629
+ };
1630
+ padStart = {
1631
+ wrapper: false,
1632
+ shorthand: false,
1633
+ chainable: false,
1634
+ iteratee: false,
1635
+ args: 3
1636
+ };
1637
+ parseInt2 = {
1638
+ wrapper: false,
1639
+ shorthand: false,
1640
+ chainable: false,
1641
+ iteratee: false,
1642
+ args: 2
1643
+ };
1644
+ partial = {
1645
+ wrapper: false,
1646
+ shorthand: false,
1647
+ chainable: true,
1648
+ iteratee: false
1649
+ };
1650
+ partialRight = {
1651
+ wrapper: false,
1652
+ shorthand: false,
1653
+ chainable: true,
1654
+ iteratee: false
1655
+ };
1656
+ partition = {
1657
+ wrapper: false,
1658
+ shorthand: true,
1659
+ chainable: true,
1660
+ iteratee: true,
1661
+ args: 2
1662
+ };
1663
+ pick = {
1664
+ wrapper: false,
1665
+ shorthand: false,
1666
+ chainable: true,
1667
+ iteratee: false
1668
+ };
1669
+ pickBy = {
1670
+ wrapper: false,
1671
+ shorthand: true,
1672
+ chainable: true,
1673
+ iteratee: true
1674
+ };
1675
+ plant = {
1676
+ wrapper: false,
1677
+ shorthand: false,
1678
+ chainable: true,
1679
+ iteratee: false
1680
+ };
1681
+ pop = {
1682
+ wrapper: true,
1683
+ shorthand: false,
1684
+ chainable: false,
1685
+ iteratee: false
1686
+ };
1687
+ property = {
1688
+ wrapper: false,
1689
+ shorthand: false,
1690
+ chainable: true,
1691
+ iteratee: false,
1692
+ args: 1
1693
+ };
1694
+ propertyOf = {
1695
+ wrapper: false,
1696
+ shorthand: false,
1697
+ chainable: true,
1698
+ iteratee: false,
1699
+ args: 1
1700
+ };
1701
+ pull = {
1702
+ wrapper: false,
1703
+ shorthand: false,
1704
+ chainable: true,
1705
+ iteratee: false
1706
+ };
1707
+ pullAll = {
1708
+ wrapper: false,
1709
+ shorthand: false,
1710
+ chainable: true,
1711
+ iteratee: false,
1712
+ args: 2
1713
+ };
1714
+ pullAllBy = {
1715
+ wrapper: false,
1716
+ shorthand: true,
1717
+ chainable: true,
1718
+ iteratee: false,
1719
+ iterateeIndex: 2,
1720
+ args: 3
1721
+ };
1722
+ pullAllWith = {
1723
+ wrapper: false,
1724
+ shorthand: false,
1725
+ chainable: true,
1726
+ iteratee: false,
1727
+ args: 3
1728
+ };
1729
+ pullAt = {
1730
+ wrapper: false,
1731
+ shorthand: false,
1732
+ chainable: true,
1733
+ iteratee: false
1734
+ };
1735
+ push = {
1736
+ wrapper: true,
1737
+ shorthand: false,
1738
+ chainable: true,
1739
+ iteratee: false
1740
+ };
1741
+ random = {
1742
+ wrapper: false,
1743
+ shorthand: false,
1744
+ chainable: false,
1745
+ iteratee: false,
1746
+ args: 3
1747
+ };
1748
+ range = {
1749
+ wrapper: false,
1750
+ shorthand: false,
1751
+ chainable: true,
1752
+ iteratee: false,
1753
+ args: 3
1754
+ };
1755
+ rangeRight = {
1756
+ wrapper: false,
1757
+ shorthand: false,
1758
+ chainable: true,
1759
+ iteratee: false,
1760
+ args: 3
1761
+ };
1762
+ rearg = {
1763
+ wrapper: false,
1764
+ shorthand: false,
1765
+ chainable: true,
1766
+ iteratee: false
1767
+ };
1768
+ reduce = {
1769
+ wrapper: false,
1770
+ shorthand: false,
1771
+ chainable: false,
1772
+ iteratee: true,
1773
+ args: 3
1774
+ };
1775
+ reduceRight = {
1776
+ wrapper: false,
1777
+ shorthand: false,
1778
+ chainable: false,
1779
+ iteratee: true,
1780
+ args: 3
1781
+ };
1782
+ reject = {
1783
+ wrapper: false,
1784
+ shorthand: true,
1785
+ chainable: true,
1786
+ iteratee: true,
1787
+ args: 2
1788
+ };
1789
+ remove = {
1790
+ wrapper: false,
1791
+ shorthand: true,
1792
+ chainable: true,
1793
+ iteratee: true,
1794
+ args: 2
1795
+ };
1796
+ repeat = {
1797
+ wrapper: false,
1798
+ shorthand: false,
1799
+ chainable: false,
1800
+ iteratee: false,
1801
+ args: 2
1802
+ };
1803
+ replace = {
1804
+ wrapper: true,
1805
+ shorthand: false,
1806
+ chainable: false,
1807
+ iteratee: false
1808
+ };
1809
+ rest = {
1810
+ wrapper: false,
1811
+ shorthand: false,
1812
+ chainable: true,
1813
+ iteratee: false,
1814
+ args: 2
1815
+ };
1816
+ result = {
1817
+ wrapper: false,
1818
+ shorthand: false,
1819
+ chainable: false,
1820
+ iteratee: false,
1821
+ args: 3
1822
+ };
1823
+ reverse = {
1824
+ wrapper: false,
1825
+ shorthand: false,
1826
+ chainable: true,
1827
+ iteratee: false,
1828
+ args: 1
1829
+ };
1830
+ round = {
1831
+ wrapper: false,
1832
+ shorthand: false,
1833
+ chainable: false,
1834
+ iteratee: false,
1835
+ args: 2
1836
+ };
1837
+ runInContext = {
1838
+ wrapper: false,
1839
+ shorthand: false,
1840
+ chainable: false,
1841
+ iteratee: false,
1842
+ args: 1
1843
+ };
1844
+ sample = {
1845
+ wrapper: false,
1846
+ shorthand: false,
1847
+ chainable: false,
1848
+ iteratee: false,
1849
+ args: 1
1850
+ };
1851
+ sampleSize = {
1852
+ wrapper: false,
1853
+ shorthand: false,
1854
+ chainable: true,
1855
+ iteratee: false,
1856
+ args: 2
1857
+ };
1858
+ set = {
1859
+ wrapper: false,
1860
+ shorthand: false,
1861
+ chainable: true,
1862
+ iteratee: false,
1863
+ args: 3
1864
+ };
1865
+ setWith = {
1866
+ wrapper: false,
1867
+ shorthand: false,
1868
+ chainable: true,
1869
+ iteratee: false,
1870
+ args: 4
1871
+ };
1872
+ shift = {
1873
+ wrapper: true,
1874
+ shorthand: false,
1875
+ chainable: false,
1876
+ iteratee: false
1877
+ };
1878
+ shuffle = {
1879
+ wrapper: false,
1880
+ shorthand: false,
1881
+ chainable: true,
1882
+ iteratee: false,
1883
+ args: 1
1884
+ };
1885
+ size = {
1886
+ wrapper: false,
1887
+ shorthand: false,
1888
+ chainable: false,
1889
+ iteratee: false,
1890
+ args: 1
1891
+ };
1892
+ slice = {
1893
+ wrapper: false,
1894
+ shorthand: false,
1895
+ chainable: true,
1896
+ iteratee: false,
1897
+ args: 3
1898
+ };
1899
+ snakeCase = {
1900
+ wrapper: false,
1901
+ shorthand: false,
1902
+ chainable: false,
1903
+ iteratee: false,
1904
+ args: 1
1905
+ };
1906
+ some = {
1907
+ wrapper: false,
1908
+ shorthand: true,
1909
+ chainable: false,
1910
+ iteratee: true,
1911
+ args: 2
1912
+ };
1913
+ sort = {
1914
+ wrapper: true,
1915
+ shorthand: false,
1916
+ chainable: true,
1917
+ iteratee: false
1918
+ };
1919
+ sortBy = {
1920
+ wrapper: false,
1921
+ shorthand: {
1922
+ prop: true
1923
+ },
1924
+ chainable: true,
1925
+ iteratee: true
1926
+ };
1927
+ sortedIndex = {
1928
+ wrapper: false,
1929
+ shorthand: false,
1930
+ chainable: false,
1931
+ iteratee: false,
1932
+ args: 2
1933
+ };
1934
+ sortedIndexBy = {
1935
+ wrapper: false,
1936
+ shorthand: true,
1937
+ chainable: false,
1938
+ iteratee: false,
1939
+ iterateeIndex: 2,
1940
+ args: 3
1941
+ };
1942
+ sortedIndexOf = {
1943
+ wrapper: false,
1944
+ shorthand: false,
1945
+ chainable: false,
1946
+ iteratee: false,
1947
+ args: 2
1948
+ };
1949
+ sortedLastIndex = {
1950
+ wrapper: false,
1951
+ shorthand: false,
1952
+ chainable: false,
1953
+ iteratee: false,
1954
+ args: 2
1955
+ };
1956
+ sortedLastIndexBy = {
1957
+ wrapper: false,
1958
+ shorthand: true,
1959
+ chainable: false,
1960
+ iteratee: false,
1961
+ iterateeIndex: 2,
1962
+ args: 3
1963
+ };
1964
+ sortedLastIndexOf = {
1965
+ wrapper: false,
1966
+ shorthand: false,
1967
+ chainable: false,
1968
+ iteratee: false,
1969
+ args: 2
1970
+ };
1971
+ sortedUniq = {
1972
+ wrapper: false,
1973
+ shorthand: false,
1974
+ chainable: true,
1975
+ iteratee: false,
1976
+ args: 1
1977
+ };
1978
+ sortedUniqBy = {
1979
+ wrapper: false,
1980
+ shorthand: true,
1981
+ chainable: true,
1982
+ iteratee: true,
1983
+ args: 2
1984
+ };
1985
+ splice = {
1986
+ wrapper: true,
1987
+ shorthand: false,
1988
+ chainable: true,
1989
+ iteratee: false
1990
+ };
1991
+ split = {
1992
+ wrapper: true,
1993
+ shorthand: false,
1994
+ chainable: false,
1995
+ iteratee: false,
1996
+ args: 3
1997
+ };
1998
+ spread = {
1999
+ wrapper: false,
2000
+ shorthand: false,
2001
+ chainable: true,
2002
+ iteratee: false,
2003
+ args: 2
2004
+ };
2005
+ startCase = {
2006
+ wrapper: false,
2007
+ shorthand: false,
2008
+ chainable: false,
2009
+ iteratee: false,
2010
+ args: 1
2011
+ };
2012
+ startsWith = {
2013
+ wrapper: false,
2014
+ shorthand: false,
2015
+ chainable: false,
2016
+ iteratee: false,
2017
+ args: 3
2018
+ };
2019
+ stubArray = {
2020
+ wrapper: false,
2021
+ shorthand: false,
2022
+ chainable: false,
2023
+ iteratee: false,
2024
+ args: 0
2025
+ };
2026
+ stubFalse = {
2027
+ wrapper: false,
2028
+ shorthand: false,
2029
+ chainable: false,
2030
+ iteratee: false,
2031
+ args: 0
2032
+ };
2033
+ stubObject = {
2034
+ wrapper: false,
2035
+ shorthand: false,
2036
+ chainable: false,
2037
+ iteratee: false,
2038
+ args: 0
2039
+ };
2040
+ stubString = {
2041
+ wrapper: false,
2042
+ shorthand: false,
2043
+ chainable: false,
2044
+ iteratee: false,
2045
+ args: 0
2046
+ };
2047
+ stubTrue = {
2048
+ wrapper: false,
2049
+ shorthand: false,
2050
+ chainable: false,
2051
+ iteratee: false,
2052
+ args: 0
2053
+ };
2054
+ subtract = {
2055
+ wrapper: false,
2056
+ shorthand: false,
2057
+ chainable: false,
2058
+ iteratee: false,
2059
+ args: 2
2060
+ };
2061
+ sum = {
2062
+ wrapper: false,
2063
+ shorthand: false,
2064
+ chainable: false,
2065
+ iteratee: false,
2066
+ args: 1
2067
+ };
2068
+ sumBy = {
2069
+ wrapper: false,
2070
+ shorthand: true,
2071
+ chainable: false,
2072
+ iteratee: true,
2073
+ args: 2
2074
+ };
2075
+ tail = {
2076
+ wrapper: false,
2077
+ shorthand: false,
2078
+ chainable: true,
2079
+ iteratee: false,
2080
+ args: 1
2081
+ };
2082
+ take = {
2083
+ wrapper: false,
2084
+ shorthand: false,
2085
+ chainable: true,
2086
+ iteratee: false,
2087
+ args: 2
2088
+ };
2089
+ takeRight = {
2090
+ wrapper: false,
2091
+ shorthand: false,
2092
+ chainable: true,
2093
+ iteratee: false,
2094
+ args: 2
2095
+ };
2096
+ takeRightWhile = {
2097
+ wrapper: false,
2098
+ shorthand: true,
2099
+ chainable: true,
2100
+ iteratee: true,
2101
+ args: 2
2102
+ };
2103
+ takeWhile = {
2104
+ wrapper: false,
2105
+ shorthand: true,
2106
+ chainable: true,
2107
+ iteratee: true,
2108
+ args: 2
2109
+ };
2110
+ tap = {
2111
+ wrapper: false,
2112
+ shorthand: false,
2113
+ chainable: true,
2114
+ iteratee: true,
2115
+ args: 2
2116
+ };
2117
+ template = {
2118
+ wrapper: false,
2119
+ shorthand: false,
2120
+ chainable: false,
2121
+ iteratee: false,
2122
+ args: 2
2123
+ };
2124
+ throttle = {
2125
+ wrapper: false,
2126
+ shorthand: false,
2127
+ chainable: true,
2128
+ iteratee: false,
2129
+ args: 3
2130
+ };
2131
+ thru = {
2132
+ wrapper: false,
2133
+ shorthand: false,
2134
+ chainable: true,
2135
+ iteratee: true,
2136
+ args: 2
2137
+ };
2138
+ times = {
2139
+ wrapper: false,
2140
+ shorthand: false,
2141
+ chainable: false,
2142
+ iteratee: true,
2143
+ args: 2
2144
+ };
2145
+ toArray = {
2146
+ wrapper: false,
2147
+ shorthand: false,
2148
+ chainable: true,
2149
+ iteratee: false,
2150
+ args: 1
2151
+ };
2152
+ toFinite = {
2153
+ wrapper: false,
2154
+ shorthand: false,
2155
+ chainable: false,
2156
+ iteratee: false,
2157
+ args: 1
2158
+ };
2159
+ toInteger = {
2160
+ wrapper: false,
2161
+ shorthand: false,
2162
+ chainable: false,
2163
+ iteratee: false,
2164
+ args: 1
2165
+ };
2166
+ toLength = {
2167
+ wrapper: false,
2168
+ shorthand: false,
2169
+ chainable: false,
2170
+ iteratee: false,
2171
+ args: 1
2172
+ };
2173
+ toLower = {
2174
+ wrapper: false,
2175
+ shorthand: false,
2176
+ chainable: false,
2177
+ iteratee: false,
2178
+ args: 1
2179
+ };
2180
+ toNumber = {
2181
+ wrapper: false,
2182
+ shorthand: false,
2183
+ chainable: false,
2184
+ iteratee: false,
2185
+ args: 1
2186
+ };
2187
+ toPairs = {
2188
+ wrapper: false,
2189
+ shorthand: false,
2190
+ chainable: true,
2191
+ iteratee: false,
2192
+ args: 1
2193
+ };
2194
+ toPairsIn = {
2195
+ wrapper: false,
2196
+ shorthand: false,
2197
+ chainable: true,
2198
+ iteratee: false,
2199
+ args: 1
2200
+ };
2201
+ toPath = {
2202
+ wrapper: false,
2203
+ shorthand: false,
2204
+ chainable: true,
2205
+ iteratee: false,
2206
+ args: 1
2207
+ };
2208
+ toPlainObject = {
2209
+ wrapper: false,
2210
+ shorthand: false,
2211
+ chainable: true,
2212
+ iteratee: false,
2213
+ args: 1
2214
+ };
2215
+ toSafeInteger = {
2216
+ wrapper: false,
2217
+ shorthand: false,
2218
+ chainable: false,
2219
+ iteratee: false,
2220
+ args: 1
2221
+ };
2222
+ toString = {
2223
+ wrapper: false,
2224
+ shorthand: false,
2225
+ chainable: false,
2226
+ iteratee: false,
2227
+ args: 1
2228
+ };
2229
+ toUpper = {
2230
+ wrapper: false,
2231
+ shorthand: false,
2232
+ chainable: false,
2233
+ iteratee: false,
2234
+ args: 1
2235
+ };
2236
+ transform = {
2237
+ wrapper: false,
2238
+ shorthand: false,
2239
+ chainable: true,
2240
+ iteratee: true,
2241
+ args: 3
2242
+ };
2243
+ trim = {
2244
+ wrapper: false,
2245
+ shorthand: false,
2246
+ chainable: false,
2247
+ iteratee: false,
2248
+ args: 2
2249
+ };
2250
+ trimEnd = {
2251
+ wrapper: false,
2252
+ shorthand: false,
2253
+ chainable: false,
2254
+ iteratee: false,
2255
+ args: 2
2256
+ };
2257
+ trimStart = {
2258
+ wrapper: false,
2259
+ shorthand: false,
2260
+ chainable: false,
2261
+ iteratee: false,
2262
+ args: 2
2263
+ };
2264
+ truncate = {
2265
+ wrapper: false,
2266
+ shorthand: false,
2267
+ chainable: false,
2268
+ iteratee: false,
2269
+ args: 3
2270
+ };
2271
+ unary = {
2272
+ wrapper: false,
2273
+ shorthand: false,
2274
+ chainable: true,
2275
+ iteratee: false,
2276
+ args: 1
2277
+ };
2278
+ unescape = {
2279
+ wrapper: false,
2280
+ shorthand: false,
2281
+ chainable: false,
2282
+ iteratee: false,
2283
+ args: 1
2284
+ };
2285
+ union = {
2286
+ wrapper: false,
2287
+ shorthand: false,
2288
+ chainable: true,
2289
+ iteratee: false
2290
+ };
2291
+ unionBy = {
2292
+ wrapper: false,
2293
+ shorthand: true,
2294
+ chainable: true,
2295
+ iteratee: true
2296
+ };
2297
+ unionWith = {
2298
+ wrapper: false,
2299
+ shorthand: false,
2300
+ chainable: true,
2301
+ iteratee: false
2302
+ };
2303
+ uniq = {
2304
+ wrapper: false,
2305
+ shorthand: false,
2306
+ chainable: true,
2307
+ iteratee: false,
2308
+ args: 1
2309
+ };
2310
+ uniqBy = {
2311
+ wrapper: false,
2312
+ shorthand: true,
2313
+ chainable: true,
2314
+ iteratee: true,
2315
+ args: 2
2316
+ };
2317
+ uniqWith = {
2318
+ wrapper: false,
2319
+ shorthand: false,
2320
+ chainable: true,
2321
+ iteratee: false,
2322
+ args: 2
2323
+ };
2324
+ uniqueId = {
2325
+ wrapper: false,
2326
+ shorthand: false,
2327
+ chainable: false,
2328
+ iteratee: false,
2329
+ args: 1
2330
+ };
2331
+ unset = {
2332
+ wrapper: false,
2333
+ shorthand: false,
2334
+ chainable: true,
2335
+ iteratee: false,
2336
+ args: 2
2337
+ };
2338
+ unshift = {
2339
+ wrapper: true,
2340
+ shorthand: false,
2341
+ chainable: true,
2342
+ iteratee: false
2343
+ };
2344
+ unzip = {
2345
+ wrapper: false,
2346
+ shorthand: false,
2347
+ chainable: true,
2348
+ iteratee: false,
2349
+ args: 1
2350
+ };
2351
+ unzipWith = {
2352
+ wrapper: false,
2353
+ shorthand: false,
2354
+ chainable: true,
2355
+ iteratee: true,
2356
+ args: 2
2357
+ };
2358
+ update = {
2359
+ wrapper: false,
2360
+ shorthand: false,
2361
+ chainable: true,
2362
+ iteratee: false,
2363
+ args: 3
2364
+ };
2365
+ updateWith = {
2366
+ wrapper: false,
2367
+ shorthand: false,
2368
+ chainable: true,
2369
+ iteratee: false,
2370
+ args: 4
2371
+ };
2372
+ upperCase = {
2373
+ wrapper: false,
2374
+ shorthand: false,
2375
+ chainable: false,
2376
+ iteratee: false,
2377
+ args: 1
2378
+ };
2379
+ upperFirst = {
2380
+ wrapper: false,
2381
+ shorthand: false,
2382
+ chainable: false,
2383
+ iteratee: false,
2384
+ args: 1
2385
+ };
2386
+ value = {
2387
+ wrapper: true,
2388
+ shorthand: false,
2389
+ chainable: false,
2390
+ iteratee: false,
2391
+ args: 0
2392
+ };
2393
+ values = {
2394
+ wrapper: false,
2395
+ shorthand: false,
2396
+ chainable: true,
2397
+ iteratee: false,
2398
+ args: 1
2399
+ };
2400
+ valuesIn = {
2401
+ wrapper: false,
2402
+ shorthand: false,
2403
+ chainable: true,
2404
+ iteratee: false,
2405
+ args: 1
2406
+ };
2407
+ without = {
2408
+ wrapper: false,
2409
+ shorthand: false,
2410
+ chainable: true,
2411
+ iteratee: false
2412
+ };
2413
+ words = {
2414
+ wrapper: false,
2415
+ shorthand: false,
2416
+ chainable: false,
2417
+ iteratee: false,
2418
+ args: 2
2419
+ };
2420
+ wrap = {
2421
+ wrapper: false,
2422
+ shorthand: false,
2423
+ chainable: true,
2424
+ iteratee: false,
2425
+ args: 2
2426
+ };
2427
+ xor = {
2428
+ wrapper: false,
2429
+ shorthand: false,
2430
+ chainable: true,
2431
+ iteratee: false
2432
+ };
2433
+ xorBy = {
2434
+ wrapper: false,
2435
+ shorthand: true,
2436
+ chainable: true,
2437
+ iteratee: true
2438
+ };
2439
+ xorWith = {
2440
+ wrapper: false,
2441
+ shorthand: false,
2442
+ chainable: true,
2443
+ iteratee: false
2444
+ };
2445
+ zip = {
2446
+ wrapper: false,
2447
+ shorthand: false,
2448
+ chainable: true,
2449
+ iteratee: false
2450
+ };
2451
+ zipObject = {
2452
+ wrapper: false,
2453
+ shorthand: false,
2454
+ chainable: true,
2455
+ iteratee: false,
2456
+ args: 2
2457
+ };
2458
+ zipObjectDeep = {
2459
+ wrapper: false,
2460
+ shorthand: false,
2461
+ chainable: true,
2462
+ iteratee: false,
2463
+ args: 2
2464
+ };
2465
+ zipWith = {
2466
+ wrapper: false,
2467
+ shorthand: false,
2468
+ chainable: true,
2469
+ iteratee: false
2470
+ };
2471
+ }
2472
+ });
2473
+
2474
+ // src/util/methodDataUtil.ts
2475
+ import { includes as includes2, get as get2, isObject as isObject2, has as has2 } from "lodash";
2476
+ function isCollectionMethod(method2) {
2477
+ return methodSupportsShorthand(method2) || includes2(["reduce", "reduceRight"], method2);
2478
+ }
2479
+ function methodSupportsShorthand(method2, shorthandType) {
2480
+ const methodShorthandData = get2(methodData_exports, [method2, "shorthand"]);
2481
+ return isObject2(methodShorthandData) ? Boolean(shorthandType && methodShorthandData[shorthandType]) : Boolean(methodShorthandData);
2482
+ }
2483
+ function getIterateeIndex(method2) {
2484
+ const methodData = methodData_exports[method2];
2485
+ if (has2(methodData, "iterateeIndex")) {
2486
+ return methodData.iterateeIndex;
2487
+ }
2488
+ if (methodData?.iteratee) {
2489
+ return 1;
2490
+ }
2491
+ return -1;
2492
+ }
2493
+ function getSideEffectIterationMethods() {
2494
+ return sideEffectIterationMethods;
2495
+ }
2496
+ var sideEffectIterationMethods;
2497
+ var init_methodDataUtil = __esm({
2498
+ "src/util/methodDataUtil.ts"() {
2499
+ "use strict";
2500
+ init_methodData();
2501
+ sideEffectIterationMethods = [
2502
+ "forEach",
2503
+ "forEachRight",
2504
+ "forIn",
2505
+ "forInRight",
2506
+ "forOwn",
2507
+ "forOwnRight"
2508
+ ];
2509
+ }
2510
+ });
2511
+
2512
+ // src/util/astUtil.ts
2513
+ import {
2514
+ property as property2,
2515
+ matches as matches2,
2516
+ overSome as overSome2,
2517
+ matchesProperty as matchesProperty2,
2518
+ cond as cond2,
2519
+ get as get3,
2520
+ isMatch as isMatch2,
2521
+ isEqualWith as isEqualWith2,
2522
+ includes as includes3,
2523
+ overEvery as overEvery2,
2524
+ flatMap as flatMap2
2525
+ } from "lodash";
2526
+ function isMemberExpOf(node, objectName, { maxLength = Number.MAX_VALUE, allowComputed } = {}) {
2527
+ if (objectName) {
2528
+ let curr = node;
2529
+ let depth = maxLength;
2530
+ while (curr && depth) {
2531
+ if (allowComputed || isPropAccess(curr)) {
2532
+ if (curr.type === "MemberExpression" && curr.object.name === objectName) {
2533
+ return true;
2534
+ }
2535
+ curr = curr.object;
2536
+ depth--;
2537
+ } else {
2538
+ return false;
2539
+ }
2540
+ }
2541
+ }
2542
+ }
2543
+ function hasOnlyOneStatement(func) {
2544
+ if (isFunctionDefinitionWithBlock(func)) {
2545
+ return get3(func, "body.body.length") === 1;
2546
+ }
2547
+ if (func.type === "ArrowFunctionExpression") {
2548
+ return !get3(func, "body.body");
2549
+ }
2550
+ }
2551
+ function isObjectOfMethodCall(node) {
2552
+ return get3(node, "parent.object") === node && get3(node, "parent.parent.type") === "CallExpression";
2553
+ }
2554
+ function isLiteral(node) {
2555
+ return node.type === "Literal";
2556
+ }
2557
+ function isBinaryExpWithMemberOf(operator, exp, objectName, {
2558
+ maxLength,
2559
+ allowComputed,
2560
+ onlyLiterals
2561
+ } = {}) {
2562
+ if (!isMatch2(exp, { type: "BinaryExpression", operator })) {
2563
+ return false;
2564
+ }
2565
+ const [left, right] = [exp.left, exp.right].map(
2566
+ (side) => isMemberExpOf(side, objectName, { maxLength, allowComputed })
2567
+ );
2568
+ return left === !right && (!onlyLiterals || isLiteral(exp.left) || isLiteral(exp.right));
2569
+ }
2570
+ function isNegationOfMemberOf(exp, objectName, { maxLength } = {}) {
2571
+ return isNegationExpression(exp) && isMemberExpOf(exp.argument, objectName, { maxLength, allowComputed: false });
2572
+ }
2573
+ function isIdentifierWithName(exp, paramName) {
2574
+ return exp && paramName && exp.type === "Identifier" && exp.name === paramName;
2575
+ }
2576
+ function getValueReturnedInFirstStatement(func) {
2577
+ const firstLine = getFirstFunctionLine(func);
2578
+ if (func) {
2579
+ if (isFunctionDefinitionWithBlock(func)) {
2580
+ return isReturnStatement(firstLine) ? firstLine.argument : void 0;
2581
+ }
2582
+ if (func.type === "ArrowFunctionExpression") {
2583
+ return firstLine;
2584
+ }
2585
+ }
2586
+ }
2587
+ function isCallFromObject(node, objName) {
2588
+ return node && objName && node.type === "CallExpression" && get3(node, "callee.object.name") === objName;
2589
+ }
2590
+ function isComputed(node) {
2591
+ return get3(node, "computed") && node.property.type !== "Literal";
2592
+ }
2593
+ function isEquivalentMemberExp(a, b) {
2594
+ return isEqualWith2(a, b, (left, right, key) => {
2595
+ if (includes3(["loc", "range", "computed", "start", "end", "parent"], key)) {
2596
+ return true;
2597
+ }
2598
+ if (isComputed(left) || isComputed(right)) {
2599
+ return false;
2600
+ }
2601
+ if (key === "property") {
2602
+ const leftValue = left.name || left.value;
2603
+ const rightValue = right.name || right.value;
2604
+ return leftValue === rightValue;
2605
+ }
2606
+ });
2607
+ }
2608
+ function getIsValue(value2) {
2609
+ return value2 < 0 ? overEvery2(isMinus, matches2({ argument: { value: -value2 } })) : matches2({ value: value2 });
2610
+ }
2611
+ function getExpressionComparedToInt(node, value2, checkOver) {
2612
+ const isValue = getIsValue(value2);
2613
+ if (includes3(comparisonOperators, node.operator)) {
2614
+ if (isValue(node.right)) {
2615
+ return node.left;
2616
+ }
2617
+ if (isValue(node.left)) {
2618
+ return node.right;
2619
+ }
2620
+ }
2621
+ if (checkOver) {
2622
+ if (node.operator === ">" && isValue(node.right)) {
2623
+ return node.left;
2624
+ }
2625
+ if (node.operator === "<" && isValue(node.left)) {
2626
+ return node.right;
2627
+ }
2628
+ const isNext = getIsValue(value2 + 1);
2629
+ if ((node.operator === ">=" || node.operator === "<") && isNext(node.right)) {
2630
+ return node.left;
2631
+ }
2632
+ if ((node.operator === "<=" || node.operator === ">") && isNext(node.left)) {
2633
+ return node.right;
2634
+ }
2635
+ }
2636
+ }
2637
+ function collectParameterValues(node) {
2638
+ switch (node && node.type) {
2639
+ case "Identifier":
2640
+ return [node.name];
2641
+ case "ObjectPattern":
2642
+ return flatMap2(
2643
+ node.properties,
2644
+ (prop) => collectParameterValues(prop.value)
2645
+ );
2646
+ case "ArrayPattern":
2647
+ return flatMap2(node.elements, collectParameterValues);
2648
+ default:
2649
+ return [];
2650
+ }
2651
+ }
2652
+ var getCaller, getMethodName, isMethodCall, isFunctionExpression, isFunctionDefinitionWithBlock, getFirstFunctionLine, isPropAccess, getFirstParamName, isReturnStatement, isNegationExpression, isEqEqEq, isMinus, comparisonType, comparisonOperators, isIndexOfCall, isFindIndexCall, astUtil_default;
2653
+ var init_astUtil = __esm({
2654
+ "src/util/astUtil.ts"() {
2655
+ "use strict";
2656
+ getCaller = property2(["callee", "object"]);
2657
+ getMethodName = property2(["callee", "property", "name"]);
2658
+ isMethodCall = matches2({
2659
+ type: "CallExpression",
2660
+ callee: { type: "MemberExpression" }
2661
+ });
2662
+ isFunctionExpression = overSome2(
2663
+ matchesProperty2("type", "FunctionExpression"),
2664
+ matchesProperty2("type", "FunctionDeclaration")
2665
+ );
2666
+ isFunctionDefinitionWithBlock = overSome2(
2667
+ isFunctionExpression,
2668
+ matches2({
2669
+ type: "ArrowFunctionExpression",
2670
+ body: { type: "BlockStatement" }
2671
+ })
2672
+ );
2673
+ getFirstFunctionLine = cond2([
2674
+ [isFunctionDefinitionWithBlock, property2(["body", "body", 0])],
2675
+ [matches2({ type: "ArrowFunctionExpression" }), property2("body")]
2676
+ ]);
2677
+ isPropAccess = overSome2(
2678
+ matches2({ computed: false }),
2679
+ matchesProperty2(["property", "type"], "Literal")
2680
+ );
2681
+ getFirstParamName = property2(["params", 0, "name"]);
2682
+ isReturnStatement = matchesProperty2("type", "ReturnStatement");
2683
+ isNegationExpression = matches2({
2684
+ type: "UnaryExpression",
2685
+ operator: "!"
2686
+ });
2687
+ isEqEqEq = matches2({ type: "BinaryExpression", operator: "===" });
2688
+ isMinus = (node) => node.type === "UnaryExpression" && node.operator === "-";
2689
+ comparisonType = {
2690
+ exact: 0,
2691
+ over: 1,
2692
+ under: 2,
2693
+ any: 3
2694
+ };
2695
+ comparisonOperators = ["==", "!=", "===", "!=="];
2696
+ isIndexOfCall = (node) => isMethodCall(node) && getMethodName(node) === "indexOf";
2697
+ isFindIndexCall = (node) => isMethodCall(node) && getMethodName(node) === "findIndex";
2698
+ astUtil_default = {
2699
+ getCaller,
2700
+ getMethodName,
2701
+ isMethodCall,
2702
+ getFirstFunctionLine,
2703
+ isMemberExpOf,
2704
+ getFirstParamName,
2705
+ hasOnlyOneStatement,
2706
+ isObjectOfMethodCall,
2707
+ isEqEqEqToMemberOf: isBinaryExpWithMemberOf.bind(null, "==="),
2708
+ isNotEqEqToMemberOf: isBinaryExpWithMemberOf.bind(null, "!=="),
2709
+ isNegationOfMemberOf,
2710
+ isIdentifierWithName,
2711
+ isNegationExpression,
2712
+ getValueReturnedInFirstStatement,
2713
+ isCallFromObject,
2714
+ isComputed,
2715
+ isEquivalentMemberExp,
2716
+ isEqEqEq,
2717
+ comparisonType,
2718
+ getExpressionComparedToInt,
2719
+ isIndexOfCall,
2720
+ isFindIndexCall,
2721
+ isFunctionExpression,
2722
+ isFunctionDefinitionWithBlock,
2723
+ collectParameterValues
2724
+ };
2725
+ }
2726
+ });
2727
+
2728
+ // src/util/settingsUtil.ts
2729
+ import { chain as chain2, get as get4 } from "lodash";
2730
+ function getSettings(context) {
2731
+ return chain2(context).get(["settings", "remeda"]).clone().defaults({
2732
+ version: 4
2733
+ }).value();
2734
+ }
2735
+ var init_settingsUtil = __esm({
2736
+ "src/util/settingsUtil.ts"() {
2737
+ "use strict";
2738
+ }
2739
+ });
2740
+
2741
+ // src/util/importUtil.ts
2742
+ import get5 from "lodash/get";
2743
+ function getNameFromCjsRequire(init) {
2744
+ if (get5(init, "callee.name") === "require" && get5(init, "arguments.length") === 1 && init.arguments[0].type === "Literal") {
2745
+ return init.arguments[0].value;
2746
+ }
2747
+ }
2748
+ var isFullRemedaImport, getMethodImportFromName;
2749
+ var init_importUtil = __esm({
2750
+ "src/util/importUtil.ts"() {
2751
+ "use strict";
2752
+ isFullRemedaImport = (str) => /^remeda?(\/)?$/.test(str);
2753
+ getMethodImportFromName = (str) => {
2754
+ const match = /^remeda([./])(\w+)$/.exec(str);
2755
+ return match && match[2];
2756
+ };
2757
+ }
2758
+ });
2759
+
2760
+ // src/util/RemedaContext.ts
2761
+ var isMethodCall2, isCallFromObject2, getCaller2, RemedaContext_default;
2762
+ var init_RemedaContext = __esm({
2763
+ "src/util/RemedaContext.ts"() {
2764
+ "use strict";
2765
+ init_settingsUtil();
2766
+ init_astUtil();
2767
+ init_importUtil();
2768
+ ({ isMethodCall: isMethodCall2, isCallFromObject: isCallFromObject2, getCaller: getCaller2 } = astUtil_default);
2769
+ RemedaContext_default = class {
2770
+ context;
2771
+ general;
2772
+ methods;
2773
+ _pragma;
2774
+ /**
2775
+ * Create a Remeda context wrapper from a file's RuleContext
2776
+ * @param {RuleContext} context
2777
+ */
2778
+ constructor(context) {
2779
+ this.context = context;
2780
+ this.general = /* @__PURE__ */ Object.create(null);
2781
+ this.methods = /* @__PURE__ */ Object.create(null);
2782
+ }
2783
+ /**
2784
+ * Gets visitors to collect Remeda declarations in the context
2785
+ * @returns {Object} visitors for everywhere Remeda can be declared
2786
+ */
2787
+ getImportVisitors() {
2788
+ const self = this;
2789
+ return {
2790
+ ImportDeclaration({ source, specifiers }) {
2791
+ if (isFullRemedaImport(source.value)) {
2792
+ specifiers.forEach((spec) => {
2793
+ switch (spec.type) {
2794
+ case "ImportNamespaceSpecifier":
2795
+ case "ImportDefaultSpecifier":
2796
+ self.general[spec.local.name] = true;
2797
+ break;
2798
+ case "ImportSpecifier":
2799
+ self.methods[spec.local.name] = spec.imported.name;
2800
+ if (spec.imported.name === "chain") {
2801
+ self.general[spec.local.name] = true;
2802
+ }
2803
+ break;
2804
+ }
2805
+ });
2806
+ } else {
2807
+ const method2 = getMethodImportFromName(source.value);
2808
+ if (method2) {
2809
+ self.methods[specifiers[0].local.name] = method2;
2810
+ }
2811
+ }
2812
+ },
2813
+ VariableDeclarator({ init, id }) {
2814
+ const required = getNameFromCjsRequire(init);
2815
+ if (isFullRemedaImport(required)) {
2816
+ if (id.type === "Identifier") {
2817
+ self.general[id.name] = true;
2818
+ } else if (id.type === "ObjectPattern") {
2819
+ id.properties.forEach((prop) => {
2820
+ self.methods[prop.value.name] = prop.key.name;
2821
+ if (prop.value.name === "chain") {
2822
+ self.general[prop.value.name] = true;
2823
+ }
2824
+ });
2825
+ }
2826
+ } else if (required) {
2827
+ const method2 = getMethodImportFromName(required);
2828
+ if (method2) {
2829
+ self.methods[id.name] = method2;
2830
+ }
2831
+ }
2832
+ }
2833
+ };
2834
+ }
2835
+ /**
2836
+ * Returns whether the node is an imported Remeda in this context
2837
+ * @param node
2838
+ * @returns {boolean|undefined}
2839
+ */
2840
+ isImportedRemeda(node) {
2841
+ if (node && node.type === "Identifier") {
2842
+ return this.general[node.name];
2843
+ }
2844
+ }
2845
+ /**
2846
+ * Returns the name of the Remeda method for this node, if any
2847
+ * @param node
2848
+ * @returns {string|undefined}
2849
+ */
2850
+ getImportedRemedaMethod(node) {
2851
+ if (node && node.type === "CallExpression" && !isMethodCall2(node)) {
2852
+ return this.methods[node.callee.name];
2853
+ }
2854
+ }
2855
+ /**
2856
+ * Returns whether the node is a call from a Remeda object
2857
+ * @param node
2858
+ * @returns {boolean|undefined}
2859
+ */
2860
+ isRemedaCall(node) {
2861
+ return this.pragma && isCallFromObject2(node, this.pragma) || this.isImportedRemeda(getCaller2(node));
2862
+ }
2863
+ /**
2864
+ *
2865
+ * @returns {string|undefined} the current Remeda pragma
2866
+ */
2867
+ get pragma() {
2868
+ if (!this._pragma) {
2869
+ const { pragma } = getSettings(this.context);
2870
+ this._pragma = pragma;
2871
+ }
2872
+ return this._pragma;
2873
+ }
2874
+ };
2875
+ }
2876
+ });
2877
+
2878
+ // src/util/remedaUtil.ts
2879
+ import { includes as includes4, capitalize as capitalize2 } from "lodash";
2880
+ function isCallToMethod(node, method2) {
2881
+ return method2 === astUtil_default.getMethodName(node);
2882
+ }
2883
+ function getIsTypeMethod(name) {
2884
+ const types = [
2885
+ "number",
2886
+ "boolean",
2887
+ "function",
2888
+ "Function",
2889
+ "string",
2890
+ // "object",
2891
+ // "undefined",
2892
+ "Date",
2893
+ "Array",
2894
+ "Error"
2895
+ // "Element",
2896
+ ];
2897
+ return includes4(types, name) ? `is${capitalize2(name)}` : null;
2898
+ }
2899
+ function getRemedaMethodCallExpVisitor(remedaContext, reporter) {
2900
+ return function(node) {
2901
+ let iterateeIndex;
2902
+ if (remedaContext.isRemedaCall(node)) {
2903
+ const method2 = astUtil_default.getMethodName(node);
2904
+ iterateeIndex = getIterateeIndex(method2);
2905
+ reporter(node, node.arguments[iterateeIndex], {
2906
+ callType: "method",
2907
+ method: method2,
2908
+ remedaContext
2909
+ });
2910
+ } else {
2911
+ const method2 = remedaContext.getImportedRemedaMethod(node);
2912
+ if (method2) {
2913
+ iterateeIndex = getIterateeIndex(method2);
2914
+ reporter(node, node.arguments[iterateeIndex], {
2915
+ method: method2,
2916
+ callType: "single",
2917
+ remedaContext
2918
+ });
2919
+ }
2920
+ }
2921
+ };
2922
+ }
2923
+ function isRemedaCallToMethod(node, method2, remedaContext) {
2924
+ return remedaContext.isRemedaCall(node) && isCallToMethod(node, method2);
2925
+ }
2926
+ function isCallToRemedaMethod(node, method2, remedaContext) {
2927
+ if (!node || node.type !== "CallExpression") {
2928
+ return false;
2929
+ }
2930
+ return isRemedaCallToMethod(node, method2, remedaContext) || method2 === remedaContext.getImportedRemedaMethod(node);
2931
+ }
2932
+ function getRemedaMethodVisitors(context, remedaCallExpVisitor) {
2933
+ const remedaContext = new RemedaContext_default(context);
2934
+ const visitors = remedaContext.getImportVisitors();
2935
+ visitors.CallExpression = getRemedaMethodCallExpVisitor(
2936
+ remedaContext,
2937
+ remedaCallExpVisitor
2938
+ );
2939
+ return visitors;
2940
+ }
2941
+ function getRemedaContext(context) {
2942
+ return new RemedaContext_default(context);
2943
+ }
2944
+ var init_remedaUtil = __esm({
2945
+ "src/util/remedaUtil.ts"() {
2946
+ "use strict";
2947
+ init_methodDataUtil();
2948
+ init_astUtil();
2949
+ init_RemedaContext();
2950
+ }
2951
+ });
2952
+
2953
+ // src/rules/collection-method-value.ts
2954
+ var collection_method_value_exports = {};
2955
+ __export(collection_method_value_exports, {
2956
+ create: () => create2,
2957
+ meta: () => meta
2958
+ });
2959
+ import includes5 from "lodash/includes";
2960
+ function create2(context) {
2961
+ function parentUsesValue(node) {
2962
+ return node.parent.type !== "ExpressionStatement";
2963
+ }
2964
+ function isSideEffectIterationMethod(method2) {
2965
+ return includes5(getSideEffectIterationMethods(), method2);
2966
+ }
2967
+ function isParentCommit(node, callType) {
2968
+ return callType === "chained" && isCallToMethod(node.parent.parent, "commit");
2969
+ }
2970
+ return getRemedaMethodVisitors(
2971
+ context,
2972
+ (node, iteratee2, { method: method2, callType }) => {
2973
+ if (isCollectionMethod(method2) && !parentUsesValue(node)) {
2974
+ context.report({
2975
+ node,
2976
+ message: `Use value returned from R.${method2}`
2977
+ });
2978
+ } else if (isSideEffectIterationMethod(method2) && parentUsesValue(node) && !isParentCommit(node, callType)) {
2979
+ context.report({
2980
+ node,
2981
+ message: `Do not use value returned from R.${getMethodName2(node)}`
2982
+ });
2983
+ }
2984
+ }
2985
+ );
2986
+ }
2987
+ var getMethodName2, meta;
2988
+ var init_collection_method_value = __esm({
2989
+ "src/rules/collection-method-value.ts"() {
2990
+ "use strict";
2991
+ init_getDocsUrl();
2992
+ init_remedaUtil();
2993
+ init_astUtil();
2994
+ init_methodDataUtil();
2995
+ ({ getMethodName: getMethodName2 } = astUtil_default);
2996
+ meta = {
2997
+ type: "problem",
2998
+ schema: [],
2999
+ docs: {
3000
+ url: getDocsUrl("collection-method-value")
3001
+ }
3002
+ };
3003
+ }
3004
+ });
3005
+
3006
+ // src/rules/collection-return.ts
3007
+ var collection_return_exports = {};
3008
+ __export(collection_return_exports, {
3009
+ create: () => create3,
3010
+ meta: () => meta2
3011
+ });
3012
+ import assign2 from "lodash/assign";
3013
+ function create3(context) {
3014
+ const funcInfos = /* @__PURE__ */ new Map();
3015
+ let currFuncInfo;
3016
+ const remedaContext = getRemedaContext(context);
3017
+ return assign2(
3018
+ {
3019
+ "CallExpression:exit": getRemedaMethodCallExpVisitor(
3020
+ remedaContext,
3021
+ (node, iteratee2, { method: method2 }) => {
3022
+ if (isCollectionMethod(method2) && funcInfos.has(iteratee2)) {
3023
+ const { hasReturn } = funcInfos.get(iteratee2);
3024
+ if (astUtil_default.isFunctionDefinitionWithBlock(iteratee2) && !hasReturn && !iteratee2.async && !iteratee2.generator) {
3025
+ context.report({
3026
+ node,
3027
+ message: `Do not use R.${method2} without returning a value`
3028
+ });
3029
+ }
3030
+ }
3031
+ }
3032
+ ),
3033
+ ReturnStatement() {
3034
+ currFuncInfo.hasReturn = true;
3035
+ },
3036
+ onCodePathStart(codePath, node) {
3037
+ currFuncInfo = {
3038
+ upper: currFuncInfo,
3039
+ codePath,
3040
+ hasReturn: false
3041
+ };
3042
+ funcInfos.set(node, currFuncInfo);
3043
+ },
3044
+ onCodePathEnd() {
3045
+ currFuncInfo = currFuncInfo.upper;
3046
+ }
3047
+ },
3048
+ remedaContext.getImportVisitors()
3049
+ );
3050
+ }
3051
+ var meta2;
3052
+ var init_collection_return = __esm({
3053
+ "src/rules/collection-return.ts"() {
3054
+ "use strict";
3055
+ init_getDocsUrl();
3056
+ init_remedaUtil();
3057
+ init_methodDataUtil();
3058
+ init_astUtil();
3059
+ meta2 = {
3060
+ type: "problem",
3061
+ schema: [],
3062
+ docs: {
3063
+ url: getDocsUrl("collection-return")
3064
+ }
3065
+ };
3066
+ }
3067
+ });
3068
+
3069
+ // src/rules/prefer-constant.ts
3070
+ var prefer_constant_exports = {};
3071
+ __export(prefer_constant_exports, {
3072
+ create: () => create4,
3073
+ meta: () => meta3
3074
+ });
3075
+ function create4(context) {
3076
+ const shouldCheckArrowFunctions = context.options[0] !== void 0 ? context.options[0] : true;
3077
+ const shouldCheckFunctionDeclarations = context.options[1] !== void 0 ? context.options[1] : false;
3078
+ function isCompletelyLiteral(node) {
3079
+ switch (node.type) {
3080
+ case "Literal":
3081
+ return true;
3082
+ case "BinaryExpression":
3083
+ return isCompletelyLiteral(node.left) && isCompletelyLiteral(node.right);
3084
+ case "UnaryExpression":
3085
+ return isCompletelyLiteral(node.argument);
3086
+ case "ConditionalExpression":
3087
+ return isCompletelyLiteral(node.test) && isCompletelyLiteral(node.consequent) && isCompletelyLiteral(node.alternate);
3088
+ default:
3089
+ return false;
3090
+ }
3091
+ }
3092
+ function reportIfLikeConstant(func, node) {
3093
+ const valueReturnedInFirstLine = func(node);
3094
+ if (valueReturnedInFirstLine && isCompletelyLiteral(valueReturnedInFirstLine)) {
3095
+ context.report({
3096
+ node,
3097
+ message: "Prefer R.constant over a function returning a literal"
3098
+ });
3099
+ }
3100
+ }
3101
+ function handleFunctionDefinition(node) {
3102
+ reportIfLikeConstant(getValueReturnedInFirstStatement2, node);
3103
+ }
3104
+ return {
3105
+ FunctionExpression: handleFunctionDefinition,
3106
+ FunctionDeclaration(node) {
3107
+ if (shouldCheckFunctionDeclarations) {
3108
+ handleFunctionDefinition(node);
3109
+ }
3110
+ },
3111
+ ArrowFunctionExpression(node) {
3112
+ if (shouldCheckArrowFunctions) {
3113
+ handleFunctionDefinition(node);
3114
+ }
3115
+ }
3116
+ };
3117
+ }
3118
+ var getValueReturnedInFirstStatement2, meta3;
3119
+ var init_prefer_constant = __esm({
3120
+ "src/rules/prefer-constant.ts"() {
3121
+ "use strict";
3122
+ init_getDocsUrl();
3123
+ init_astUtil();
3124
+ ({ getValueReturnedInFirstStatement: getValueReturnedInFirstStatement2 } = astUtil_default);
3125
+ meta3 = {
3126
+ type: "problem",
3127
+ docs: {
3128
+ url: getDocsUrl("prefer-constant")
3129
+ },
3130
+ schema: [
3131
+ {
3132
+ type: "boolean"
3133
+ },
3134
+ {
3135
+ type: "boolean"
3136
+ }
3137
+ ]
3138
+ };
3139
+ }
3140
+ });
3141
+
3142
+ // src/rules/prefer-do-nothing.ts
3143
+ var prefer_do_nothing_exports = {};
3144
+ __export(prefer_do_nothing_exports, {
3145
+ create: () => create5,
3146
+ meta: () => meta4
3147
+ });
3148
+ function create5(context) {
3149
+ function reportIfEmptyFunction(node) {
3150
+ if (!getFirstFunctionLine2(node) && node.parent.type !== "MethodDefinition" && !node.generator && !node.async) {
3151
+ context.report({
3152
+ node,
3153
+ message: "Prefer R.doNothing() or R.constant(undefined) over an empty function"
3154
+ });
3155
+ }
3156
+ }
3157
+ return {
3158
+ FunctionExpression: reportIfEmptyFunction,
3159
+ ArrowFunctionExpression: reportIfEmptyFunction
3160
+ };
3161
+ }
3162
+ var getFirstFunctionLine2, meta4;
3163
+ var init_prefer_do_nothing = __esm({
3164
+ "src/rules/prefer-do-nothing.ts"() {
3165
+ "use strict";
3166
+ init_getDocsUrl();
3167
+ init_astUtil();
3168
+ ({ getFirstFunctionLine: getFirstFunctionLine2 } = astUtil_default);
3169
+ meta4 = {
3170
+ type: "problem",
3171
+ schema: [],
3172
+ docs: {
3173
+ url: getDocsUrl("prefer-do-nothing")
3174
+ }
3175
+ };
3176
+ }
3177
+ });
3178
+
3179
+ // src/rules/prefer-filter.ts
3180
+ var prefer_filter_exports = {};
3181
+ __export(prefer_filter_exports, {
3182
+ create: () => create6,
3183
+ meta: () => meta5
3184
+ });
3185
+ function create6(context) {
3186
+ const DEFAULT_MAX_PROPERTY_PATH_LENGTH = 3;
3187
+ const maxLength = parseInt(context.options[0], 10) || DEFAULT_MAX_PROPERTY_PATH_LENGTH;
3188
+ function isIfWithoutElse(statement) {
3189
+ return statement && statement.type === "IfStatement" && !statement.alternate;
3190
+ }
3191
+ function canBeShorthand(exp, paramName) {
3192
+ return isIdentifierWithName2(exp, paramName) || isMemberExpOf2(exp, paramName, { maxLength }) || isNegationOfMemberOf2(exp, paramName, { maxLength }) || isEqEqEqToMemberOf(exp, paramName, { maxLength }) || isNotEqEqToMemberOf(exp, paramName, { maxLength });
3193
+ }
3194
+ function onlyHasSimplifiableIf(func) {
3195
+ const firstLine = getFirstFunctionLine3(func);
3196
+ return func && hasOnlyOneStatement2(func) && func.params.length === 1 && isIfWithoutElse(firstLine) && canBeShorthand(firstLine.test, getFirstParamName2(func));
3197
+ }
3198
+ return getRemedaMethodVisitors(context, (node, iteratee2, { method: method2 }) => {
3199
+ if (method2 === "forEach" && onlyHasSimplifiableIf(iteratee2)) {
3200
+ context.report({
3201
+ node,
3202
+ message: "Prefer R.filter or R.some over an if statement inside a R.forEach"
3203
+ });
3204
+ }
3205
+ });
3206
+ }
3207
+ var isIdentifierWithName2, isMemberExpOf2, isNegationOfMemberOf2, isEqEqEqToMemberOf, isNotEqEqToMemberOf, getFirstFunctionLine3, hasOnlyOneStatement2, getFirstParamName2, meta5;
3208
+ var init_prefer_filter = __esm({
3209
+ "src/rules/prefer-filter.ts"() {
3210
+ "use strict";
3211
+ init_getDocsUrl();
3212
+ init_remedaUtil();
3213
+ init_astUtil();
3214
+ ({
3215
+ isIdentifierWithName: isIdentifierWithName2,
3216
+ isMemberExpOf: isMemberExpOf2,
3217
+ isNegationOfMemberOf: isNegationOfMemberOf2,
3218
+ isEqEqEqToMemberOf,
3219
+ isNotEqEqToMemberOf,
3220
+ getFirstFunctionLine: getFirstFunctionLine3,
3221
+ hasOnlyOneStatement: hasOnlyOneStatement2,
3222
+ getFirstParamName: getFirstParamName2
3223
+ } = astUtil_default);
3224
+ meta5 = {
3225
+ type: "problem",
3226
+ docs: {
3227
+ url: getDocsUrl("prefer-filter")
3228
+ },
3229
+ schema: [
3230
+ {
3231
+ type: "integer"
3232
+ }
3233
+ ]
3234
+ };
3235
+ }
3236
+ });
3237
+
3238
+ // src/rules/prefer-find.ts
3239
+ var prefer_find_exports = {};
3240
+ __export(prefer_find_exports, {
3241
+ create: () => create7,
3242
+ meta: () => meta6
3243
+ });
3244
+ function create7(context) {
3245
+ function isZeroIndexAccess(node) {
3246
+ return node.type === "MemberExpression" && node.property.value === 0;
3247
+ }
3248
+ function isChainedBeforeMethod(callType, node, method2) {
3249
+ return callType === "chained" && isCallToMethod(node.parent.parent, method2);
3250
+ }
3251
+ return getRemedaMethodVisitors(
3252
+ context,
3253
+ (node, iteratee2, { method: method2, callType, remedaContext }) => {
3254
+ if (method2 === "filter") {
3255
+ if (isZeroIndexAccess(node.parent) || isCallToRemedaMethod(node.parent, "first", remedaContext) || isChainedBeforeMethod(callType, node, "first")) {
3256
+ context.report({
3257
+ node,
3258
+ message: "Prefer using `R.find` over selecting the first item of a filtered result"
3259
+ });
3260
+ }
3261
+ if (isCallToRemedaMethod(node.parent, "last", remedaContext) || isChainedBeforeMethod(callType, node, "last")) {
3262
+ context.report({
3263
+ node,
3264
+ message: "Prefer using `R.findLast` over selecting the last item of a filtered result"
3265
+ });
3266
+ }
3267
+ }
3268
+ }
3269
+ );
3270
+ }
3271
+ var meta6;
3272
+ var init_prefer_find = __esm({
3273
+ "src/rules/prefer-find.ts"() {
3274
+ "use strict";
3275
+ init_getDocsUrl();
3276
+ init_remedaUtil();
3277
+ meta6 = {
3278
+ type: "problem",
3279
+ schema: [],
3280
+ docs: {
3281
+ url: getDocsUrl("prefer-find")
3282
+ }
3283
+ };
3284
+ }
3285
+ });
3286
+
3287
+ // src/rules/prefer-flat-map.ts
3288
+ var prefer_flat_map_exports = {};
3289
+ __export(prefer_flat_map_exports, {
3290
+ create: () => create8,
3291
+ meta: () => meta7
3292
+ });
3293
+ function create8(context) {
3294
+ function isChainedMapFlatten(node) {
3295
+ return isCallToMethod(getCaller3(node), "map");
3296
+ }
3297
+ return getRemedaMethodVisitors(
3298
+ context,
3299
+ (node, iteratee2, { method: method2, remedaContext }) => {
3300
+ if (method2 === "flat" && (isChainedMapFlatten(node) || isCallToRemedaMethod(node.arguments[0], "map", remedaContext))) {
3301
+ context.report({
3302
+ node,
3303
+ message: "Prefer R.flatMap over consecutive R.map and R.flat."
3304
+ });
3305
+ }
3306
+ }
3307
+ );
3308
+ }
3309
+ var getCaller3, meta7;
3310
+ var init_prefer_flat_map = __esm({
3311
+ "src/rules/prefer-flat-map.ts"() {
3312
+ "use strict";
3313
+ init_getDocsUrl();
3314
+ init_remedaUtil();
3315
+ init_astUtil();
3316
+ ({ getCaller: getCaller3 } = astUtil_default);
3317
+ meta7 = {
3318
+ type: "problem",
3319
+ schema: [],
3320
+ docs: {
3321
+ url: getDocsUrl("prefer-flat-map")
3322
+ }
3323
+ };
3324
+ }
3325
+ });
3326
+
3327
+ // src/rules/prefer-is-empty.ts
3328
+ var prefer_is_empty_exports = {};
3329
+ __export(prefer_is_empty_exports, {
3330
+ create: () => create9,
3331
+ meta: () => meta8
3332
+ });
3333
+ function create9(context) {
3334
+ const remedaContext = getRemedaContext(context);
3335
+ function getTextOfNode(node) {
3336
+ if (node) {
3337
+ if (node.type === "Identifier") {
3338
+ return node.name;
3339
+ }
3340
+ return context.getSourceCode().getText(node);
3341
+ }
3342
+ }
3343
+ const visitors = remedaContext.getImportVisitors();
3344
+ visitors.BinaryExpression = function(node) {
3345
+ if (node.operator === "===") {
3346
+ if (node.left) {
3347
+ if (node.left.property && node.right) {
3348
+ const leftExpressionMember = node.left.property.name;
3349
+ const rightExpressionMember = node.right.value;
3350
+ if (leftExpressionMember === "length" && rightExpressionMember === 0) {
3351
+ const subjectObject = node.left.object;
3352
+ context.report({
3353
+ node,
3354
+ message: "Prefer isEmpty over manually checking for length value.",
3355
+ fix(fixer) {
3356
+ return fixer.replaceText(
3357
+ node,
3358
+ `isEmpty(${getTextOfNode(subjectObject)})`
3359
+ );
3360
+ }
3361
+ });
3362
+ }
3363
+ } else if (node.left.expression && node.right && node.left.expression.property) {
3364
+ const leftExpressionMember = node.left.expression.property.name;
3365
+ const rightExpressionMember = node.right.value;
3366
+ if (leftExpressionMember === "length" && rightExpressionMember === 0) {
3367
+ const subjectObject = node.left.expression.object;
3368
+ context.report({
3369
+ node,
3370
+ message: "Prefer isEmpty over manually checking for length value.",
3371
+ fix(fixer) {
3372
+ return fixer.replaceText(
3373
+ node,
3374
+ `isEmpty(${getTextOfNode(subjectObject)})`
3375
+ );
3376
+ }
3377
+ });
3378
+ }
3379
+ }
3380
+ }
3381
+ }
3382
+ if (node.operator === ">") {
3383
+ if (node.left) {
3384
+ if (node.left.property && node.right) {
3385
+ const leftExpressionMember = node.left.property.name;
3386
+ const rightExpressionMember = node.right.value;
3387
+ if (leftExpressionMember === "length" && rightExpressionMember === 0) {
3388
+ const subjectObject = node.left.object;
3389
+ context.report({
3390
+ node,
3391
+ message: "Prefer isEmpty over manually checking for length value.",
3392
+ fix(fixer) {
3393
+ return fixer.replaceText(
3394
+ node,
3395
+ `!isEmpty(${getTextOfNode(subjectObject)})`
3396
+ );
3397
+ }
3398
+ });
3399
+ }
3400
+ } else if (node.left.expression && node.right) {
3401
+ const leftExpressionMember = node.left.expression.property.name;
3402
+ const rightExpressionMember = node.right.value;
3403
+ if (leftExpressionMember === "length" && rightExpressionMember === 0) {
3404
+ const subjectObject = node.left.expression.object;
3405
+ context.report({
3406
+ node,
3407
+ message: "Prefer isEmpty over manually checking for length value.",
3408
+ fix(fixer) {
3409
+ return fixer.replaceText(
3410
+ node,
3411
+ `!isEmpty(${getTextOfNode(subjectObject)})`
3412
+ );
3413
+ }
3414
+ });
3415
+ }
3416
+ }
3417
+ }
3418
+ }
3419
+ };
3420
+ return visitors;
3421
+ }
3422
+ var meta8;
3423
+ var init_prefer_is_empty = __esm({
3424
+ "src/rules/prefer-is-empty.ts"() {
3425
+ "use strict";
3426
+ init_remedaUtil();
3427
+ init_getDocsUrl();
3428
+ meta8 = {
3429
+ type: "problem",
3430
+ schema: [],
3431
+ docs: {
3432
+ url: getDocsUrl("prefer-is-empty")
3433
+ },
3434
+ fixable: "code"
3435
+ };
3436
+ }
3437
+ });
3438
+
3439
+ // src/rules/prefer-is-nil.ts
3440
+ var prefer_is_nil_exports = {};
3441
+ __export(prefer_is_nil_exports, {
3442
+ create: () => create10,
3443
+ meta: () => meta9
3444
+ });
3445
+ import _, { matches as matches3, cond as cond3, property as property3 } from "lodash";
3446
+ function create10(context) {
3447
+ const remedaContext = getRemedaContext(context);
3448
+ const nilChecks = {
3449
+ null: {
3450
+ isValue: matches3({ type: "Literal", value: null }),
3451
+ expressionChecks: [
3452
+ getRemedaTypeCheckedBy("isNull"),
3453
+ getValueComparedTo("null")
3454
+ ]
3455
+ },
3456
+ undefined: {
3457
+ isValue: matches3({ type: "Identifier", name: "undefined" }),
3458
+ expressionChecks: [
3459
+ getRemedaTypeCheckedBy("isUndefined"),
3460
+ getValueComparedTo("undefined"),
3461
+ getValueWithTypeofUndefinedComparison
3462
+ ]
3463
+ }
3464
+ };
3465
+ function getRemedaTypeCheckedBy(typecheck) {
3466
+ return function(node) {
3467
+ return isCallToRemedaMethod(node, typecheck, remedaContext) && node.arguments[0];
3468
+ };
3469
+ }
3470
+ function getValueComparedTo(nil) {
3471
+ return function(node, operator) {
3472
+ return node.type === "BinaryExpression" && node.operator === operator && (nilChecks[nil].isValue(node.right) && node.left || nilChecks[nil].isValue(node.left) && node.right);
3473
+ };
3474
+ }
3475
+ const getTypeofArgument = cond3([
3476
+ [
3477
+ matches3({ type: "UnaryExpression", operator: "typeof" }),
3478
+ property3("argument")
3479
+ ]
3480
+ ]);
3481
+ const isUndefinedString = matches3({
3482
+ type: "Literal",
3483
+ value: "undefined"
3484
+ });
3485
+ function getValueWithTypeofUndefinedComparison(node, operator) {
3486
+ return node.type === "BinaryExpression" && node.operator === operator && (isUndefinedString(node.right) && getTypeofArgument(node.left) || isUndefinedString(node.left) && getTypeofArgument(node.right));
3487
+ }
3488
+ function checkExpression(nil, operator, node) {
3489
+ return _(nilChecks[nil].expressionChecks).map((check) => check(node, operator)).find();
3490
+ }
3491
+ function checkNegatedExpression(nil, node) {
3492
+ return isNegationExpression2(node) && checkExpression(nil, "===", node.argument) || checkExpression(nil, "!==", node);
3493
+ }
3494
+ function isEquivalentExistingExpression(node, leftNil, rightNil) {
3495
+ const leftExp = checkExpression(leftNil, "===", node.left);
3496
+ return leftExp && isEquivalentMemberExp2(
3497
+ leftExp,
3498
+ checkExpression(rightNil, "===", node.right)
3499
+ );
3500
+ }
3501
+ function isEquivalentExistingNegation(node, leftNil, rightNil) {
3502
+ const leftExp = checkNegatedExpression(leftNil, node.left);
3503
+ return leftExp && isEquivalentMemberExp2(
3504
+ leftExp,
3505
+ checkNegatedExpression(rightNil, node.right)
3506
+ );
3507
+ }
3508
+ const visitors = remedaContext.getImportVisitors();
3509
+ visitors.LogicalExpression = function(node) {
3510
+ if (node.operator === "||") {
3511
+ if (isEquivalentExistingExpression(node, "undefined", "null") || isEquivalentExistingExpression(node, "null", "undefined")) {
3512
+ context.report({
3513
+ node,
3514
+ message: "Prefer isNil over checking for undefined or null."
3515
+ });
3516
+ }
3517
+ } else if (isEquivalentExistingNegation(node, "undefined", "null") || isEquivalentExistingNegation(node, "null", "undefined")) {
3518
+ context.report({
3519
+ node,
3520
+ message: "Prefer isNil over checking for undefined or null."
3521
+ });
3522
+ }
3523
+ };
3524
+ return visitors;
3525
+ }
3526
+ var isNegationExpression2, isEquivalentMemberExp2, meta9;
3527
+ var init_prefer_is_nil = __esm({
3528
+ "src/rules/prefer-is-nil.ts"() {
3529
+ "use strict";
3530
+ init_astUtil();
3531
+ init_getDocsUrl();
3532
+ init_remedaUtil();
3533
+ ({ isNegationExpression: isNegationExpression2, isEquivalentMemberExp: isEquivalentMemberExp2 } = astUtil_default);
3534
+ meta9 = {
3535
+ type: "problem",
3536
+ schema: [],
3537
+ docs: {
3538
+ url: getDocsUrl("prefer-is-nil")
3539
+ }
3540
+ };
3541
+ }
3542
+ });
3543
+
3544
+ // src/rules/prefer-map.ts
3545
+ var prefer_map_exports = {};
3546
+ __export(prefer_map_exports, {
3547
+ create: () => create11,
3548
+ meta: () => meta10
3549
+ });
3550
+ import get6 from "lodash/get";
3551
+ import includes6 from "lodash/includes";
3552
+ function create11(context) {
3553
+ function onlyHasPush(func) {
3554
+ const firstLine = getFirstFunctionLine4(func);
3555
+ const firstParam = get6(func, "params[0]");
3556
+ const exp = func && !isFunctionDefinitionWithBlock2(func) ? firstLine : (
3557
+ //@ts-expect-error
3558
+ firstLine?.expression
3559
+ );
3560
+ return func && hasOnlyOneStatement3(func) && getMethodName3(exp) === "push" && !includes6(
3561
+ collectParameterValues2(firstParam),
3562
+ get6(exp, "callee.object.name")
3563
+ );
3564
+ }
3565
+ return getRemedaMethodVisitors(context, (node, iteratee2, { method: method2 }) => {
3566
+ if (method2 === "forEach" && onlyHasPush(iteratee2)) {
3567
+ context.report({
3568
+ node,
3569
+ message: "Prefer R.map over a R.forEach with a push to an array inside"
3570
+ });
3571
+ }
3572
+ });
3573
+ }
3574
+ var getFirstFunctionLine4, hasOnlyOneStatement3, getMethodName3, isFunctionDefinitionWithBlock2, collectParameterValues2, meta10;
3575
+ var init_prefer_map = __esm({
3576
+ "src/rules/prefer-map.ts"() {
3577
+ "use strict";
3578
+ init_getDocsUrl();
3579
+ init_remedaUtil();
3580
+ init_astUtil();
3581
+ ({
3582
+ getFirstFunctionLine: getFirstFunctionLine4,
3583
+ hasOnlyOneStatement: hasOnlyOneStatement3,
3584
+ getMethodName: getMethodName3,
3585
+ isFunctionDefinitionWithBlock: isFunctionDefinitionWithBlock2,
3586
+ collectParameterValues: collectParameterValues2
3587
+ } = astUtil_default);
3588
+ meta10 = {
3589
+ type: "problem",
3590
+ schema: [],
3591
+ docs: {
3592
+ url: getDocsUrl("prefer-map")
3593
+ }
3594
+ };
3595
+ }
3596
+ });
3597
+
3598
+ // src/rules/prefer-nullish-coalescing.ts
3599
+ var prefer_nullish_coalescing_exports = {};
3600
+ __export(prefer_nullish_coalescing_exports, {
3601
+ create: () => create12,
3602
+ meta: () => meta11
3603
+ });
3604
+ function create12(context) {
3605
+ const remedaContext = getRemedaContext(context);
3606
+ function getTextOfNode(node) {
3607
+ if (node) {
3608
+ if (node.type === "Identifier") {
3609
+ return node.name;
3610
+ }
3611
+ return context.getSourceCode().getText(node);
3612
+ }
3613
+ }
3614
+ const visitors = remedaContext.getImportVisitors();
3615
+ visitors.ConditionalExpression = function(node) {
3616
+ const statement = node.test;
3617
+ if (statement.operator === "!") {
3618
+ if (statement.argument && statement.argument.callee && statement.argument.callee.name && statement.argument.callee.name === "isNullish") {
3619
+ const argument = getTextOfNode(statement.argument.arguments[0]);
3620
+ const consequent = getTextOfNode(node.consequent);
3621
+ const alternate = getTextOfNode(node.alternate);
3622
+ if (argument === consequent) {
3623
+ context.report({
3624
+ node,
3625
+ message: "Prefer nullish coalescing over checking a ternary with !isNullish.",
3626
+ fix(fixer) {
3627
+ return fixer.replaceText(node, `${argument} ?? ${alternate}`);
3628
+ }
3629
+ });
3630
+ }
3631
+ }
3632
+ }
3633
+ };
3634
+ return visitors;
3635
+ }
3636
+ var meta11;
3637
+ var init_prefer_nullish_coalescing = __esm({
3638
+ "src/rules/prefer-nullish-coalescing.ts"() {
3639
+ "use strict";
3640
+ init_getDocsUrl();
3641
+ init_remedaUtil();
3642
+ meta11 = {
3643
+ type: "problem",
3644
+ schema: [],
3645
+ docs: {
3646
+ url: getDocsUrl("prefer-nullish-coalescing")
3647
+ },
3648
+ fixable: "code"
3649
+ };
3650
+ }
3651
+ });
3652
+
3653
+ // src/rules/prefer-remeda-typecheck.ts
3654
+ var prefer_remeda_typecheck_exports = {};
3655
+ __export(prefer_remeda_typecheck_exports, {
3656
+ create: () => create13,
3657
+ meta: () => meta12
3658
+ });
3659
+ import some2 from "lodash/some";
3660
+ function create13(context) {
3661
+ const otherSides = {
3662
+ left: "right",
3663
+ right: "left"
3664
+ };
3665
+ function isTypeOf(node) {
3666
+ return node && node.type === "UnaryExpression" && node.operator === "typeof";
3667
+ }
3668
+ function isStrictComparison(node) {
3669
+ return node.operator === "===" || node.operator === "!==";
3670
+ }
3671
+ function isDeclaredVariable(node) {
3672
+ const sourceCode = context.sourceCode ?? context.getSourceCode();
3673
+ const scope = sourceCode.getScope ? sourceCode.getScope(node) : context.getScope();
3674
+ const definedVariables = scope.variables;
3675
+ return some2(definedVariables, { name: node.name });
3676
+ }
3677
+ function getValueForSide(node, side) {
3678
+ const otherSide = otherSides[side];
3679
+ if (isTypeOf(node[side]) && (node[otherSide].value !== "undefined" || node[side].argument.type !== "Identifier" || isDeclaredVariable(node[side].argument))) {
3680
+ return node[otherSide].value;
3681
+ }
3682
+ }
3683
+ function getTypeofCompareType(node) {
3684
+ if (isStrictComparison(node)) {
3685
+ return getValueForSide(node, "left") || getValueForSide(node, "right");
3686
+ }
3687
+ }
3688
+ const REPORT_MESSAGE = "Prefer 'R.{{method}}' over {{actual}}.";
3689
+ return {
3690
+ BinaryExpression(node) {
3691
+ const typeofCompareType = getTypeofCompareType(node);
3692
+ if (typeofCompareType) {
3693
+ context.report({
3694
+ node,
3695
+ message: REPORT_MESSAGE,
3696
+ data: {
3697
+ method: getIsTypeMethod(typeofCompareType),
3698
+ actual: "'typeof' comparison"
3699
+ }
3700
+ });
3701
+ } else if (node.operator === "instanceof") {
3702
+ const remedaEquivalent = getIsTypeMethod(node.right.name);
3703
+ if (node.right.type === "Identifier" && remedaEquivalent) {
3704
+ context.report({
3705
+ node,
3706
+ message: REPORT_MESSAGE,
3707
+ data: {
3708
+ method: remedaEquivalent,
3709
+ actual: `'instanceof ${node.right.name}'`
3710
+ }
3711
+ });
3712
+ }
3713
+ }
3714
+ }
3715
+ };
3716
+ }
3717
+ var meta12;
3718
+ var init_prefer_remeda_typecheck = __esm({
3719
+ "src/rules/prefer-remeda-typecheck.ts"() {
3720
+ "use strict";
3721
+ init_getDocsUrl();
3722
+ init_remedaUtil();
3723
+ meta12 = {
3724
+ type: "problem",
3725
+ schema: [],
3726
+ docs: {
3727
+ url: getDocsUrl("prefer-remeda-typecheck")
3728
+ }
3729
+ };
3730
+ }
3731
+ });
3732
+
3733
+ // src/rules/prefer-some.ts
3734
+ var prefer_some_exports = {};
3735
+ __export(prefer_some_exports, {
3736
+ create: () => create14,
3737
+ meta: () => meta13
3738
+ });
3739
+ function create14(context) {
3740
+ const visitors = getRemedaMethodVisitors(
3741
+ context,
3742
+ (node, iteratee2, { method: method2 }) => {
3743
+ if (method2 === "findIndex" && node === getExpressionComparedToInt2(node.parent, -1, true)) {
3744
+ context.report({
3745
+ node,
3746
+ message: "Prefer R.some over findIndex comparison to -1"
3747
+ });
3748
+ }
3749
+ }
3750
+ );
3751
+ return visitors;
3752
+ }
3753
+ var getExpressionComparedToInt2, meta13;
3754
+ var init_prefer_some = __esm({
3755
+ "src/rules/prefer-some.ts"() {
3756
+ "use strict";
3757
+ init_getDocsUrl();
3758
+ init_astUtil();
3759
+ init_remedaUtil();
3760
+ ({ getExpressionComparedToInt: getExpressionComparedToInt2 } = astUtil_default);
3761
+ meta13 = {
3762
+ type: "problem",
3763
+ docs: {
3764
+ url: getDocsUrl("prefer-some")
3765
+ },
3766
+ schema: []
3767
+ };
3768
+ }
3769
+ });
3770
+
3771
+ // src/rules/prefer-times.ts
3772
+ var prefer_times_exports = {};
3773
+ __export(prefer_times_exports, {
3774
+ create: () => create15,
3775
+ meta: () => meta14
3776
+ });
3777
+ import { get as get7 } from "lodash";
3778
+ function create15(context) {
3779
+ return getRemedaMethodVisitors(context, (node, iteratee2, { method: method2 }) => {
3780
+ if (method2 === "map" && get7(iteratee2, "params.length") === 0) {
3781
+ context.report({
3782
+ node,
3783
+ message: "Prefer R.times over R.map without using arguments"
3784
+ });
3785
+ }
3786
+ });
3787
+ }
3788
+ var meta14;
3789
+ var init_prefer_times = __esm({
3790
+ "src/rules/prefer-times.ts"() {
3791
+ "use strict";
3792
+ init_getDocsUrl();
3793
+ init_remedaUtil();
3794
+ meta14 = {
3795
+ type: "problem",
3796
+ schema: [],
3797
+ docs: {
3798
+ url: getDocsUrl("prefer-times")
3799
+ }
3800
+ };
3801
+ }
3802
+ });
3803
+
3804
+ // src/index.ts
3805
+ import fs from "fs";
3806
+ import path from "path";
3807
+ import _2 from "lodash";
3808
+
3809
+ // require("./rules/**/*") in src/index.ts
3810
+ var globRequire_rules = __glob({
3811
+ "./rules/collection-method-value.ts": () => (init_collection_method_value(), __toCommonJS(collection_method_value_exports)),
3812
+ "./rules/collection-return.ts": () => (init_collection_return(), __toCommonJS(collection_return_exports)),
3813
+ "./rules/prefer-constant.ts": () => (init_prefer_constant(), __toCommonJS(prefer_constant_exports)),
3814
+ "./rules/prefer-do-nothing.ts": () => (init_prefer_do_nothing(), __toCommonJS(prefer_do_nothing_exports)),
3815
+ "./rules/prefer-filter.ts": () => (init_prefer_filter(), __toCommonJS(prefer_filter_exports)),
3816
+ "./rules/prefer-find.ts": () => (init_prefer_find(), __toCommonJS(prefer_find_exports)),
3817
+ "./rules/prefer-flat-map.ts": () => (init_prefer_flat_map(), __toCommonJS(prefer_flat_map_exports)),
3818
+ "./rules/prefer-is-empty.ts": () => (init_prefer_is_empty(), __toCommonJS(prefer_is_empty_exports)),
3819
+ "./rules/prefer-is-nil.ts": () => (init_prefer_is_nil(), __toCommonJS(prefer_is_nil_exports)),
3820
+ "./rules/prefer-map.ts": () => (init_prefer_map(), __toCommonJS(prefer_map_exports)),
3821
+ "./rules/prefer-nullish-coalescing.ts": () => (init_prefer_nullish_coalescing(), __toCommonJS(prefer_nullish_coalescing_exports)),
3822
+ "./rules/prefer-remeda-typecheck.ts": () => (init_prefer_remeda_typecheck(), __toCommonJS(prefer_remeda_typecheck_exports)),
3823
+ "./rules/prefer-some.ts": () => (init_prefer_some(), __toCommonJS(prefer_some_exports)),
3824
+ "./rules/prefer-times.ts": () => (init_prefer_times(), __toCommonJS(prefer_times_exports))
3825
+ });
3826
+
3827
+ // src/index.ts
3828
+ var rules = fs.readdirSync(path.resolve(__dirname, "rules")).map((f) => f.replace(/\.js$/, ""));
3829
+ var recommended = {
3830
+ plugins: ["remeda"],
3831
+ rules: {
3832
+ "remeda/prefer-is-empty": 2,
3833
+ "remeda/prefer-is-nil": 2,
3834
+ "remeda/prefer-times": 2,
3835
+ "remeda/prefer-constant": 2,
3836
+ "remeda/prefer-remeda-typecheck": 2,
3837
+ "remeda/prefer-nullish-coalescing": 2,
3838
+ "remeda/prefer-filter": [2, 3],
3839
+ "remeda/collection-method-value": 2,
3840
+ "remeda/collection-return": 2,
3841
+ "remeda/prefer-map": 2,
3842
+ "remeda/prefer-find": 2,
3843
+ "remeda/prefer-some": 2,
3844
+ "remeda/prefer-flat-map": 2,
3845
+ "remeda/prefer-do-nothing": 2
3846
+ }
3847
+ };
3848
+ var userFacingConfig = {
3849
+ rules: _2.zipObject(
3850
+ rules,
3851
+ rules.map((rule) => globRequire_rules(`./rules/${rule}`))
3852
+ ),
3853
+ configs: {
3854
+ recommended
3855
+ }
3856
+ };
3857
+ export {
3858
+ userFacingConfig
3859
+ };