project bootstrap

This commit is contained in:
2023-11-25 18:12:47 -05:00
parent 5cd875ae80
commit 6ef22d88f9
39139 changed files with 4944609 additions and 2 deletions
+23
View File
@@ -0,0 +1,23 @@
Copyright (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative
Reporters & Editors
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
+28
View File
@@ -0,0 +1,28 @@
__
/\ \ __
__ __ ___ \_\ \ __ _ __ ____ ___ ___ _ __ __ /\_\ ____
/\ \/\ \ /' _ `\ /'_ \ /'__`\/\ __\/ ,__\ / ___\ / __`\/\ __\/'__`\ \/\ \ /',__\
\ \ \_\ \/\ \/\ \/\ \ \ \/\ __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\ __/ __ \ \ \/\__, `\
\ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/
\/___/ \/_/\/_/\/__,_ /\/____/ \/_/ \/___/ \/____/\/___/ \/_/ \/____/\/_//\ \_\ \/___/
\ \____/
\/___/
Underscore.js is a utility-belt library for JavaScript that provides
support for the usual functional suspects (each, map, reduce, filter...)
without extending any core JavaScript objects.
For Docs, License, Tests, and pre-packed downloads, see:
https://underscorejs.org
For support and questions, please use
[the gitter channel](https://gitter.im/jashkenas/underscore)
or [stackoverflow](https://stackoverflow.com/search?q=underscore.js)
Underscore is an open-sourced component of DocumentCloud:
https://github.com/documentcloud
Many thanks to our contributors:
https://github.com/jashkenas/underscore/contributors
This project adheres to a [code of conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code.
+7
View File
@@ -0,0 +1,7 @@
define(['./_setup', './_unmethodize'], function (_setup, _unmethodize) {
var apply = _unmethodize(_setup.apply);
return apply;
});
+14
View File
@@ -0,0 +1,14 @@
define(function () {
// Internal helper that wraps an `iteratee` to call it with the
// property of a closed-over `object`. Useful when iterating over
// an array of keys of `object`.
function applyProperty(iteratee, object) {
return function(key) {
return iteratee(object[key], key, object);
};
}
return applyProperty;
});
+11
View File
@@ -0,0 +1,11 @@
define(['exports', './concat', './join', './slice'], function (exports, concat, join, slice) {
exports.concat = concat;
exports.join = join;
exports.slice = slice;
Object.defineProperty(exports, '__esModule', { value: true });
});
+15
View File
@@ -0,0 +1,15 @@
define(['exports', './pop', './push', './reverse', './shift', './sort', './splice', './unshift'], function (exports, pop, push, reverse, shift, sort, splice, unshift) {
exports.pop = pop;
exports.push = push;
exports.reverse = reverse;
exports.shift = shift;
exports.sort = sort;
exports.splice = splice;
exports.unshift = unshift;
Object.defineProperty(exports, '__esModule', { value: true });
});
+21
View File
@@ -0,0 +1,21 @@
define(['./isObject', './_setup'], function (isObject, _setup) {
// Create a naked function reference for surrogate-prototype-swapping.
function ctor() {
return function(){};
}
// An internal function for creating a new object that inherits from another.
function baseCreate(prototype) {
if (!isObject(prototype)) return {};
if (_setup.nativeCreate) return _setup.nativeCreate(prototype);
var Ctor = ctor();
Ctor.prototype = prototype;
var result = new Ctor;
Ctor.prototype = null;
return result;
}
return baseCreate;
});
+15
View File
@@ -0,0 +1,15 @@
define(['./isObject', './identity', './isFunction', './isArray', './matcher', './property', './_optimizeCb'], function (isObject, identity, isFunction, isArray, matcher, property, _optimizeCb) {
// An internal function to generate callbacks that can be applied to each
// element in a collection, returning the desired result — either `_.identity`,
// an arbitrary callback, a property matcher, or a property accessor.
function baseIteratee(value, context, argCount) {
if (value == null) return identity;
if (isFunction(value)) return _optimizeCb(value, context, argCount);
if (isObject(value) && !isArray(value)) return matcher(value);
return property(value);
}
return baseIteratee;
});
+17
View File
@@ -0,0 +1,17 @@
define(['./_getLength'], function (_getLength) {
// Iteratively cut `array` in half to figure out the index at which `obj` should
// be inserted so as to maintain the order defined by `compare`.
function binarySearch(array, obj, iteratee, compare) {
var value = iteratee(obj);
var low = 0, high = _getLength(array);
while (low < high) {
var mid = Math.floor((low + high) / 2);
if (compare(iteratee(array[mid]), value)) low = mid + 1; else high = mid;
}
return low;
}
return binarySearch;
});
+14
View File
@@ -0,0 +1,14 @@
define(function () {
// Internal function that returns a bound version of the passed-in callback, to
// be repeatedly applied in other Underscore functions.
function bindCb(func, context) {
if (context === void 0) return func;
return function() {
return func.apply(context, arguments);
};
}
return bindCb;
});
+17
View File
@@ -0,0 +1,17 @@
define(function () {
// In Firefox, `Function.prototype.call` is faster than
// `Function.prototype.apply`. In the optimized variant of
// `bindCb` below, we exploit the fact that no Underscore
// function passes more than four arguments to a callback.
// **NOT general enough for use outside of Underscore.**
function bindCb4(func, context) {
if (context === void 0) return func;
return function(a1, a2, a3, a4) {
return func.call(context, a1, a2, a3, a4);
};
}
return bindCb4;
});
+11
View File
@@ -0,0 +1,11 @@
define(function () {
// Internal wrapper to enable match-by-value mode in `linearSearch`.
function byValue(value) {
if (!(this instanceof byValue)) return new byValue(value);
this.value = value;
}
return byValue;
});
+12
View File
@@ -0,0 +1,12 @@
define(['./underscore', './_baseIteratee', './iteratee'], function (underscore, _baseIteratee, iteratee) {
// The function we call internally to generate a callback. It invokes
// `_.iteratee` if overridden, otherwise `baseIteratee`.
function cb(value, context, argCount) {
if (underscore.iteratee !== iteratee) return underscore.iteratee(value, context);
return _baseIteratee(value, context, argCount);
}
return cb;
});
+10
View File
@@ -0,0 +1,10 @@
define(['./underscore'], function (underscore) {
// Helper function to continue chaining intermediate results.
function chainResult(instance, obj) {
return instance._chain ? underscore(obj).chain() : obj;
}
return chainResult;
});
+42
View File
@@ -0,0 +1,42 @@
define(['./_setup', './isFunction', './_has'], function (_setup, isFunction, _has) {
// Internal helper to create a simple lookup structure.
// `collectNonEnumProps` used to depend on `_.contains`, but this led to
// circular imports. `emulatedSet` is a one-off solution that only works for
// arrays of strings.
function emulatedSet(keys) {
var hash = {};
for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;
return {
contains: function(key) { return hash[key]; },
push: function(key) {
hash[key] = true;
return keys.push(key);
}
};
}
// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't
// be iterated by `for key in ...` and thus missed. Extends `keys` in place if
// needed.
function collectNonEnumProps(obj, keys) {
keys = emulatedSet(keys);
var nonEnumIdx = _setup.nonEnumerableProps.length;
var constructor = obj.constructor;
var proto = isFunction(constructor) && constructor.prototype || _setup.ObjProto;
// Constructor is a special case.
var prop = 'constructor';
if (_has(obj, prop) && !keys.contains(prop)) keys.push(prop);
while (nonEnumIdx--) {
prop = _setup.nonEnumerableProps[nonEnumIdx];
if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {
keys.push(prop);
}
}
}
return collectNonEnumProps;
});
+24
View File
@@ -0,0 +1,24 @@
define(function () {
// An internal function for creating assigner functions.
function createAssigner(keysFunc, defaults) {
return function(obj) {
var length = arguments.length;
if (defaults) obj = Object(obj);
if (length < 2 || obj == null) return obj;
for (var index = 1; index < length; index++) {
var source = arguments[index],
keys = keysFunc(source),
l = keys.length;
for (var i = 0; i < l; i++) {
var key = keys[i];
if (!defaults || obj[key] === void 0) obj[key] = source[key];
}
}
return obj;
};
}
return createAssigner;
});
+21
View File
@@ -0,0 +1,21 @@
define(['./keys'], function (keys) {
// Internal helper to generate functions for escaping and unescaping strings
// to/from HTML interpolation.
function createEscaper(map) {
var escaper = function(match) {
return map[match];
};
// Regexes for identifying a key that needs to be escaped.
var source = '(?:' + keys(map).join('|') + ')';
var testRegexp = RegExp(source);
var replaceRegexp = RegExp(source, 'g');
return function(string) {
string = string == null ? '' : '' + string;
return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;
};
}
return createEscaper;
});
+30
View File
@@ -0,0 +1,30 @@
define(['./_setup', './_getLength', './isNaN'], function (_setup, _getLength, _isNaN) {
// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.
function createIndexFinder(dir, predicateFind, sortedIndex) {
return function(array, item, idx) {
var i = 0, length = _getLength(array);
if (typeof idx == 'number') {
if (dir > 0) {
i = idx >= 0 ? idx : Math.max(idx + length, i);
} else {
length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
}
} else if (sortedIndex && idx && length) {
idx = sortedIndex(array, item);
return array[idx] === item ? idx : -1;
}
if (item !== item) {
idx = predicateFind(_setup.slice.call(array, i, length), _isNaN);
return idx >= 0 ? idx + i : -1;
}
for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
if (array[idx] === item) return idx;
}
return -1;
};
}
return createIndexFinder;
});
+18
View File
@@ -0,0 +1,18 @@
define(['./_cb', './_getLength'], function (_cb, _getLength) {
// Internal function to generate `_.findIndex` and `_.findLastIndex`.
function createPredicateIndexFinder(dir) {
return function(array, predicate, context) {
predicate = _cb(predicate, context);
var length = _getLength(array);
var index = dir > 0 ? 0 : length - 1;
for (; index >= 0 && index < length; index += dir) {
if (predicate(array[index], index, array)) return index;
}
return -1;
};
}
return createPredicateIndexFinder;
});
+30
View File
@@ -0,0 +1,30 @@
define(['./keys', './_optimizeCb', './_isArrayLike'], function (keys, _optimizeCb, _isArrayLike) {
// Internal helper to create a reducing function, iterating left or right.
function createReduce(dir) {
// Wrap code that reassigns argument variables in a separate function than
// the one that accesses `arguments.length` to avoid a perf hit. (#1991)
var reducer = function(obj, iteratee, memo, initial) {
var _keys = !_isArrayLike(obj) && keys(obj),
length = (_keys || obj).length,
index = dir > 0 ? 0 : length - 1;
if (!initial) {
memo = obj[_keys ? _keys[index] : index];
index += dir;
}
for (; index >= 0 && index < length; index += dir) {
var currentKey = _keys ? _keys[index] : index;
memo = iteratee(memo, obj[currentKey], currentKey, obj);
}
return memo;
};
return function(obj, iteratee, memo, context) {
var initial = arguments.length >= 3;
return reducer(obj, _optimizeCb(iteratee, context, 4), memo, initial);
};
}
return createReduce;
});
+13
View File
@@ -0,0 +1,13 @@
define(['./_setup'], function (_setup) {
// Common internal logic for `isArrayLike` and `isBufferLike`.
function createSizePropertyCheck(getSizeProperty) {
return function(collection) {
var sizeProperty = getSizeProperty(collection);
return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= _setup.MAX_ARRAY_INDEX;
}
}
return createSizePropertyCheck;
});
+15
View File
@@ -0,0 +1,15 @@
define(function () {
// Internal function to obtain a nested property in `obj` along `path`.
function deepGet(obj, path) {
var length = path.length;
for (var i = 0; i < length; i++) {
if (obj == null) return void 0;
obj = obj[path[i]];
}
return length ? obj : void 0;
}
return deepGet;
});
+15
View File
@@ -0,0 +1,15 @@
define(function () {
// Internal list of HTML entities for escaping.
var escapeMap = {
'&': '&amp;',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
"'": '&#x27;',
'`': '&#x60;'
};
return escapeMap;
});
+16
View File
@@ -0,0 +1,16 @@
define(['./isObject', './_baseCreate'], function (isObject, _baseCreate) {
// Internal function to execute `sourceFunc` bound to `context` with optional
// `args`. Determines whether to execute a function as a constructor or as a
// normal function.
function executeBound(sourceFunc, boundFunc, context, callingContext, args) {
if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);
var self = _baseCreate(sourceFunc.prototype);
var result = sourceFunc.apply(self, args);
if (isObject(result)) return result;
return self;
}
return executeBound;
});
+35
View File
@@ -0,0 +1,35 @@
define(['./identity', './_cb', './find'], function (identity, _cb, find) {
// The general algorithm behind `_.min` and `_.max`. `compare` should return
// `true` if its first argument is more extreme than (i.e., should be preferred
// over) its second argument, `false` otherwise. `iteratee` and `context`, like
// in other collection functions, let you map the actual values in `collection`
// to the values to `compare`. `decide` is an optional customization point
// which is only present for historical reasons; please don't use it, as it will
// likely be removed in the future.
function extremum(collection, compare, iteratee, context, decide) {
decide || (decide = identity);
// `extremum` is essentially a combined map+reduce with **two** accumulators:
// `result` and `iterResult`, respectively the unmapped and the mapped version
// corresponding to the same element.
var result, iterResult;
iteratee = _cb(iteratee, context);
var first = true;
find(collection, function(value, key) {
var iterValue = iteratee(value, key, collection);
if (first || compare(iterValue, iterResult)) {
result = value;
iterResult = iterValue;
first = false;
}
});
// `extremum` normally returns an unmapped element from `collection`. However,
// `_.min` and `_.max` forcibly return a number even if there is no element
// that maps to a numeric value. Passing both accumulators through `decide`
// before returning enables this behavior.
return decide(result, iterResult);
}
return extremum;
});
+32
View File
@@ -0,0 +1,32 @@
define(['./isArray', './_getLength', './_isArrayLike', './isArguments'], function (isArray, _getLength, _isArrayLike, isArguments) {
// Internal implementation of a recursive `flatten` function.
function flatten(input, depth, strict, output) {
output = output || [];
if (!depth && depth !== 0) {
depth = Infinity;
} else if (depth <= 0) {
return output.concat(input);
}
var idx = output.length;
for (var i = 0, length = _getLength(input); i < length; i++) {
var value = input[i];
if (_isArrayLike(value) && (isArray(value) || isArguments(value))) {
// Flatten current level of array or arguments object.
if (depth > 1) {
flatten(value, depth - 1, strict, output);
idx = output.length;
} else {
var j = 0, len = value.length;
while (j < len) output[idx++] = value[j++];
}
} else if (!strict) {
output[idx++] = value;
}
}
return output;
}
return flatten;
});
+16
View File
@@ -0,0 +1,16 @@
define(['exports', './isNaN'], function (exports, _isNaN) {
// Internal `extremum` return value adapter for `_.min` and `_.max`.
// Ensures that a number is returned even if no element of the
// collection maps to a numeric value.
function decideNumeric(fallback) {
return function(result, iterResult) {
return _isNaN(+iterResult) ? fallback : result;
}
}
exports.decideNumeric = decideNumeric;
Object.defineProperty(exports, '__esModule', { value: true });
});
+8
View File
@@ -0,0 +1,8 @@
define(['./_shallowProperty'], function (_shallowProperty) {
// Internal helper to obtain the `byteLength` property of an object.
var getByteLength = _shallowProperty('byteLength');
return getByteLength;
});
+8
View File
@@ -0,0 +1,8 @@
define(['./_shallowProperty'], function (_shallowProperty) {
// Internal helper to obtain the `length` property of an object.
var getLength = _shallowProperty('length');
return getLength;
});
+10
View File
@@ -0,0 +1,10 @@
define(function () {
// A version of the `>` operator that can be passed around as a function.
function greater(left, right) {
return left > right;
}
return greater;
});
+18
View File
@@ -0,0 +1,18 @@
define(['./_cb', './each'], function (_cb, each) {
// An internal function used for aggregate "group by" operations.
function group(behavior, partition) {
return function(obj, iteratee, context) {
var result = partition ? [[], []] : {};
iteratee = _cb(iteratee, context);
each(obj, function(value, index) {
var key = iteratee(value, index, obj);
behavior(result, value, key);
});
return result;
};
}
return group;
});
+10
View File
@@ -0,0 +1,10 @@
define(['./_setup'], function (_setup) {
// Internal function to check whether `key` is an own property name of `obj`.
function has(obj, key) {
return obj != null && _setup.hasOwnProperty.call(obj, key);
}
return has;
});
+7
View File
@@ -0,0 +1,7 @@
define(['./_tagTester'], function (_tagTester) {
var hasObjectTag = _tagTester('Object');
return hasObjectTag;
});
+11
View File
@@ -0,0 +1,11 @@
define(['./_getLength', './_createSizePropertyCheck'], function (_getLength, _createSizePropertyCheck) {
// Internal helper for collection methods to determine whether a collection
// should be iterated as an array or as an object.
// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength
// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094
var isArrayLike = _createSizePropertyCheck(_getLength);
return isArrayLike;
});
+9
View File
@@ -0,0 +1,9 @@
define(['./_createSizePropertyCheck', './_getByteLength'], function (_createSizePropertyCheck, _getByteLength) {
// Internal helper to determine whether we should spend extensive checks against
// `ArrayBuffer` et al.
var isBufferLike = _createSizePropertyCheck(_getByteLength);
return isBufferLike;
});
+11
View File
@@ -0,0 +1,11 @@
define(function () {
// Internal `_.pick` helper function to determine whether `key` is an enumerable
// property name of `obj`.
function keyInObj(value, key, obj) {
return key in obj;
}
return keyInObj;
});
+10
View File
@@ -0,0 +1,10 @@
define(function () {
// A version of the `<` operator that can be passed around as a function.
function less(left, right) {
return left < right;
}
return less;
});
+10
View File
@@ -0,0 +1,10 @@
define(function () {
// A version of the `<=` operator that can be passed around as a function.
function lessEqual(left, right) {
return left <= right;
}
return lessEqual;
});
+31
View File
@@ -0,0 +1,31 @@
define(['./_getLength', './isFunction'], function (_getLength, isFunction) {
// Internal function for linearly iterating over arrays.
function linearSearch(array, predicate, dir, start) {
var target, length = _getLength(array);
dir || (dir = 1);
start = (
start == null ? (dir > 0 ? 0 : length - 1) :
start < 0 ? (dir > 0 ? Math.max(0, start + length) : start + length) :
dir > 0 ? start : Math.min(start, length - 1)
);
// As a special case, in order to elide the `predicate` invocation on every
// loop iteration, we allow the caller to pass a value that should be found by
// strict equality comparison. This is somewhat like a rudimentary iteratee
// shorthand. It is used in `_.indexof` and `_.lastIndexOf`.
if (!isFunction(predicate)) {
target = predicate && predicate.value;
predicate = false;
}
for (; start >= 0 && start < length; start += dir) {
if (
predicate ? predicate(array[start], start, array) :
array[start] === target
) return start;
}
return -1;
}
return linearSearch;
});
+5
View File
@@ -0,0 +1,5 @@
define(function () {
});
+44
View File
@@ -0,0 +1,44 @@
define(['exports', './isFunction', './_getLength', './allKeys'], function (exports, isFunction, _getLength, allKeys) {
// Since the regular `Object.prototype.toString` type tests don't work for
// some types in IE 11, we use a fingerprinting heuristic instead, based
// on the methods. It's not great, but it's the best we got.
// The fingerprint method lists are defined below.
function ie11fingerprint(methods) {
var length = _getLength(methods);
return function(obj) {
if (obj == null) return false;
// `Map`, `WeakMap` and `Set` have no enumerable keys.
var keys = allKeys(obj);
if (_getLength(keys)) return false;
for (var i = 0; i < length; i++) {
if (!isFunction(obj[methods[i]])) return false;
}
// If we are testing against `WeakMap`, we need to ensure that
// `obj` doesn't have a `forEach` method in order to distinguish
// it from a regular `Map`.
return methods !== weakMapMethods || !isFunction(obj[forEachName]);
};
}
// In the interest of compact minification, we write
// each string in the fingerprints only once.
var forEachName = 'forEach',
hasName = 'has',
commonInit = ['clear', 'delete'],
mapTail = ['get', hasName, 'set'];
// `Map`, `WeakMap` and `Set` each have slightly different
// combinations of the above sublists.
var mapMethods = commonInit.concat(forEachName, mapTail),
weakMapMethods = commonInit.concat(mapTail),
setMethods = ['add'].concat(commonInit, forEachName, hasName);
exports.ie11fingerprint = ie11fingerprint;
exports.mapMethods = mapMethods;
exports.setMethods = setMethods;
exports.weakMapMethods = weakMapMethods;
Object.defineProperty(exports, '__esModule', { value: true });
});
+27
View File
@@ -0,0 +1,27 @@
define(function () {
// Internal function that returns an efficient (for current engines) version
// of the passed-in callback, to be repeatedly applied in other Underscore
// functions.
function optimizeCb(func, context, argCount) {
if (context === void 0) return func;
switch (argCount == null ? 3 : argCount) {
case 1: return function(value) {
return func.call(context, value);
};
// The 2-argument case is omitted because were not using it.
case 3: return function(value, index, collection) {
return func.call(context, value, index, collection);
};
case 4: return function(accumulator, value, index, collection) {
return func.call(context, accumulator, value, index, collection);
};
}
return function() {
return func.apply(context, arguments);
};
}
return optimizeCb;
});
+7
View File
@@ -0,0 +1,7 @@
define(['./_setup', './_unmethodize'], function (_setup, _unmethodize) {
var push = _unmethodize(_setup.ArrayProto.push);
return push;
});
+13
View File
@@ -0,0 +1,13 @@
define(function () {
// Internal helper to generate a callback that will append
// its first argument to the closed-over `array`.
function pusher(array) {
return function(arg) {
array.push(arg);
};
}
return pusher;
});
+18
View File
@@ -0,0 +1,18 @@
define(function () {
function sequence(iteratee, start, stop, step) {
if (stop == null) {
stop = start || 0;
start = 0;
}
if (!step) {
step = stop < start ? -1 : 1;
}
var rest = (stop - start) % step;
stop += (rest && step - rest);
for ( ; start != stop ; start += step) if (iteratee(start)) return start;
}
return sequence;
});
+70
View File
@@ -0,0 +1,70 @@
define(['exports'], function (exports) {
// Current version.
var VERSION = '1.12.1';
// Establish the root object, `window` (`self`) in the browser, `global`
// on the server, or `this` in some virtual machines. We use `self`
// instead of `window` for `WebWorker` support.
var root = typeof self == 'object' && self.self === self && self ||
typeof global == 'object' && global.global === global && global ||
Function('return this')() ||
{};
// Save bytes in the minified (but not gzipped) version:
var ArrayProto = Array.prototype, ObjProto = Object.prototype;
var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;
// Create quick reference variables for speed access to core prototypes.
var push = ArrayProto.push,
slice = ArrayProto.slice,
toString = ObjProto.toString,
hasOwnProperty = ObjProto.hasOwnProperty;
// Modern feature detection.
var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',
supportsDataView = typeof DataView !== 'undefined';
// All **ECMAScript 5+** native function implementations that we hope to use
// are declared here.
var nativeIsArray = Array.isArray,
nativeKeys = Object.keys,
nativeCreate = Object.create,
nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;
// Create references to these builtin functions because we override them.
var _isNaN = isNaN,
_isFinite = isFinite;
// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.
var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');
var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',
'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];
// The largest integer that can be represented exactly.
var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;
exports.ArrayProto = ArrayProto;
exports.MAX_ARRAY_INDEX = MAX_ARRAY_INDEX;
exports.ObjProto = ObjProto;
exports.SymbolProto = SymbolProto;
exports.VERSION = VERSION;
exports._isFinite = _isFinite;
exports._isNaN = _isNaN;
exports.hasEnumBug = hasEnumBug;
exports.hasOwnProperty = hasOwnProperty;
exports.nativeCreate = nativeCreate;
exports.nativeIsArray = nativeIsArray;
exports.nativeIsView = nativeIsView;
exports.nativeKeys = nativeKeys;
exports.nonEnumerableProps = nonEnumerableProps;
exports.push = push;
exports.root = root;
exports.slice = slice;
exports.supportsArrayBuffer = supportsArrayBuffer;
exports.supportsDataView = supportsDataView;
exports.toString = toString;
Object.defineProperty(exports, '__esModule', { value: true });
});
+12
View File
@@ -0,0 +1,12 @@
define(function () {
// Internal helper to generate a function to obtain property `key` from `obj`.
function shallowProperty(key) {
return function(obj) {
return obj == null ? void 0 : obj[key];
};
}
return shallowProperty;
});
+7
View File
@@ -0,0 +1,7 @@
define(['./_setup', './_unmethodize'], function (_setup, _unmethodize) {
var slice = _unmethodize(_setup.ArrayProto.slice);
return slice;
});
+9
View File
@@ -0,0 +1,9 @@
define(function () {
function strictEqual(left, right) {
return left === right;
}
return strictEqual;
});
+16
View File
@@ -0,0 +1,16 @@
define(['exports', './_setup', './_hasObjectTag'], function (exports, _setup, _hasObjectTag) {
// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.
// In IE 11, the most common among them, this problem also applies to
// `Map`, `WeakMap` and `Set`.
var hasStringTagBug = (
_setup.supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8)))
),
isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map));
exports.hasStringTagBug = hasStringTagBug;
exports.isIE11 = isIE11;
Object.defineProperty(exports, '__esModule', { value: true });
});
+13
View File
@@ -0,0 +1,13 @@
define(['./_setup'], function (_setup) {
// Internal function for creating a `toString`-based type tester.
function tagTester(name) {
var tag = '[object ' + name + ']';
return function(obj) {
return _setup.toString.call(obj) === tag;
};
}
return tagTester;
});
+15
View File
@@ -0,0 +1,15 @@
define(['./_getByteLength'], function (_getByteLength) {
// Internal function to wrap or shallow-copy an ArrayBuffer,
// typed array or DataView to a new view, reusing the buffer.
function toBufferView(bufferSource) {
return new Uint8Array(
bufferSource.buffer || bufferSource,
bufferSource.byteOffset || 0,
_getByteLength(bufferSource)
);
}
return toBufferView;
});
+11
View File
@@ -0,0 +1,11 @@
define(['./underscore', './toPath'], function (underscore, toPath$1) {
// Internal wrapper for `_.toPath` to enable minification.
// Similar to `cb` for `_.iteratee`.
function toPath(path) {
return underscore.toPath(path);
}
return toPath;
});
+8
View File
@@ -0,0 +1,8 @@
define(['./_escapeMap', './invert'], function (_escapeMap, invert) {
// Internal list of HTML entities for unescaping.
var unescapeMap = invert(_escapeMap);
return unescapeMap;
});
+9
View File
@@ -0,0 +1,9 @@
define(['./_bindCb', './_setup'], function (_bindCb, _setup) {
function unmethodize(method) {
return _bindCb(_setup.call, method);
}
return unmethodize;
});
+15
View File
@@ -0,0 +1,15 @@
define(['./_setup', './restArguments'], function (_setup, restArguments) {
// Internal function to wrap `Array.prototype` methods that return a
// new value so they can be directly invoked as standalone functions.
// Works for `concat`, `slice` and `join`.
function wrapArrayAccessor(name) {
var method = _setup.ArrayProto[name];
return restArguments(function(array, args) {
return array == null ? array : method.apply(array, args);
});
}
return wrapArrayAccessor;
});
+28
View File
@@ -0,0 +1,28 @@
define(['exports', './_setup', './_getLength', './identity', './restArguments'], function (exports, _setup, _getLength, identity, restArguments) {
// Internal function to work around a bug in IE < 9. See
// https://github.com/jashkenas/underscore/issues/397.
function removeGhostHead(array) {
if (!_getLength(array)) delete array[0];
return array;
}
// Internal function to wrap `Array.prototype` methods that modify
// the context in place so they can be directly invoked as standalone
// functions. Works for `pop`, `push`, `reverse`, `shift`, `sort`,
// `splice` and `unshift`.
function wrapArrayMutator(name, fixup) {
var method = _setup.ArrayProto[name];
fixup || (fixup = identity);
return restArguments(function(array, args) {
if (array != null) method.apply(array, args);
return fixup(array);
});
}
exports.default = wrapArrayMutator;
exports.removeGhostHead = removeGhostHead;
Object.defineProperty(exports, '__esModule', { value: true });
});
+14
View File
@@ -0,0 +1,14 @@
define(function () {
// Returns a function that will only be executed on and after the Nth call.
function after(times, func) {
return function() {
if (--times < 1) {
return func.apply(this, arguments);
}
};
}
return after;
});
+15
View File
@@ -0,0 +1,15 @@
define(['./isObject', './_setup', './_collectNonEnumProps'], function (isObject, _setup, _collectNonEnumProps) {
// Retrieve all the enumerable property names of an object.
function allKeys(obj) {
if (!isObject(obj)) return [];
var keys = [];
for (var key in obj) keys.push(key);
// Ahem, IE < 9.
if (_setup.hasEnumBug) _collectNonEnumProps(obj, keys);
return keys;
}
return allKeys;
});
+18
View File
@@ -0,0 +1,18 @@
define(function () {
// Returns a function that will only be executed up to (but not including) the
// Nth call.
function before(times, func) {
var memo;
return function() {
if (--times > 0) {
memo = func.apply(this, arguments);
}
if (times <= 1) func = null;
return memo;
};
}
return before;
});
+15
View File
@@ -0,0 +1,15 @@
define(['./isFunction', './_executeBound', './restArguments'], function (isFunction, _executeBound, restArguments) {
// Create a function bound to a given object (assigning `this`, and arguments,
// optionally).
var bind = restArguments(function(func, context, args) {
if (!isFunction(func)) throw new TypeError('Bind must be called on a function');
var bound = restArguments(function(callArgs) {
return _executeBound(func, bound, context, this, args.concat(callArgs));
});
return bound;
});
return bind;
});
+19
View File
@@ -0,0 +1,19 @@
define(['./_flatten', './restArguments', './bind'], function (_flatten, restArguments, bind) {
// Bind a number of an object's methods to that object. Remaining arguments
// are the method names to be bound. Useful for ensuring that all callbacks
// defined on an object belong to it.
var bindAll = restArguments(function(obj, keys) {
keys = _flatten(keys, false, false);
var index = keys.length;
if (index < 1) throw new Error('bindAll must be passed function names');
while (index--) {
var key = keys[index];
obj[key] = bind(obj[key], obj);
}
return obj;
});
return bindAll;
});
+12
View File
@@ -0,0 +1,12 @@
define(['./underscore'], function (underscore) {
// Start chaining a wrapped Underscore object.
function chain(obj) {
var instance = underscore(obj);
instance._chain = true;
return instance;
}
return chain;
});
+17
View File
@@ -0,0 +1,17 @@
define(['./_setup'], function (_setup) {
// Chunk a single array into multiple arrays, each containing `count` or fewer
// items.
function chunk(array, count) {
if (count == null || count < 1) return [];
var result = [];
var i = 0, length = array.length;
while (i < length) {
result.push(_setup.slice.call(array, i, i += count));
}
return result;
}
return chunk;
});
+11
View File
@@ -0,0 +1,11 @@
define(['./isObject', './isArray', './extend'], function (isObject, isArray, extend) {
// Create a (shallow-cloned) duplicate of an object.
function clone(obj) {
if (!isObject(obj)) return obj;
return isArray(obj) ? obj.slice() : extend({}, obj);
}
return clone;
});
+10
View File
@@ -0,0 +1,10 @@
define(['./filter'], function (filter) {
// Trim out all falsy values from an array.
function compact(array) {
return filter(array, Boolean);
}
return compact;
});
+18
View File
@@ -0,0 +1,18 @@
define(function () {
// Returns a function that is the composition of a list of functions, each
// consuming the return value of the function that follows.
function compose() {
var args = arguments;
var start = args.length - 1;
return function() {
var i = start;
var result = args[start].apply(this, arguments);
while (i--) result = args[i].call(this, result);
return result;
};
}
return compose;
});
+7
View File
@@ -0,0 +1,7 @@
define(['./_unmethodize', './_setup'], function (_unmethodize, _setup) {
var concat = _unmethodize(_setup.ArrayProto.concat);
return concat;
});
+12
View File
@@ -0,0 +1,12 @@
define(function () {
// Predicate-generating function. Often useful outside of Underscore.
function constant(value) {
return function() {
return value;
};
}
return constant;
});
+12
View File
@@ -0,0 +1,12 @@
define(['./_isArrayLike', './values', './indexOf'], function (_isArrayLike, values, indexOf) {
// Determine if the array or object contains a given item (using `===`).
function contains(obj, item, fromIndex, guard) {
if (!_isArrayLike(obj)) obj = values(obj);
if (typeof fromIndex != 'number' || guard) fromIndex = 0;
return indexOf(obj, item, fromIndex) >= 0;
}
return contains;
});
+12
View File
@@ -0,0 +1,12 @@
define(['./_has', './_group'], function (_has, _group) {
// Counts instances of an object that group by a certain criterion. Pass
// either a string attribute to count by, or a function that returns the
// criterion.
var countBy = _group(function(result, value, key) {
if (_has(result, key)) result[key]++; else result[key] = 1;
});
return countBy;
});
+14
View File
@@ -0,0 +1,14 @@
define(['./_baseCreate', './extendOwn'], function (_baseCreate, extendOwn) {
// Creates an object that inherits from the given prototype object.
// If additional properties are provided then they will be added to the
// created object.
function create(prototype, props) {
var result = _baseCreate(prototype);
if (props) extendOwn(result, props);
return result;
}
return create;
});
+43
View File
@@ -0,0 +1,43 @@
define(['./restArguments', './now'], function (restArguments, now) {
// When a sequence of calls of the returned function ends, the argument
// function is triggered. The end of a sequence is defined by the `wait`
// parameter. If `immediate` is passed, the argument function will be
// triggered at the beginning of the sequence instead of at the end.
function debounce(func, wait, immediate) {
var timeout, previous, args, result, context;
var later = function() {
var passed = now() - previous;
if (wait > passed) {
timeout = setTimeout(later, wait - passed);
} else {
timeout = null;
if (!immediate) result = func.apply(context, args);
// This check is needed because `func` can recursively invoke `debounced`.
if (!timeout) args = context = null;
}
};
var debounced = restArguments(function(_args) {
context = this;
args = _args;
previous = now();
if (!timeout) {
timeout = setTimeout(later, wait);
if (immediate) result = func.apply(context, args);
}
return result;
});
debounced.cancel = function() {
clearTimeout(timeout);
timeout = args = context = null;
};
return debounced;
}
return debounce;
});
+8
View File
@@ -0,0 +1,8 @@
define(['./_createAssigner', './allKeys'], function (_createAssigner, allKeys) {
// Fill in a given object with default properties.
var defaults = _createAssigner(allKeys, true);
return defaults;
});
+9
View File
@@ -0,0 +1,9 @@
define(['./underscore', './partial', './delay'], function (underscore, partial, delay) {
// Defers a function, scheduling it to run after the current call stack has
// cleared.
var defer = partial(delay, underscore, 1);
return defer;
});
+13
View File
@@ -0,0 +1,13 @@
define(['./restArguments'], function (restArguments) {
// Delays a function for the given number of milliseconds, and then calls
// it with the arguments supplied.
var delay = restArguments(function(func, wait, args) {
return setTimeout(function() {
return func.apply(null, args);
}, wait);
});
return delay;
});
+14
View File
@@ -0,0 +1,14 @@
define(['./_flatten', './restArguments', './filter', './contains'], function (_flatten, restArguments, filter, contains) {
// Take the difference between one array and a number of other arrays.
// Only the elements present in just the first array will remain.
var difference = restArguments(function(array, rest) {
rest = _flatten(rest, true, true);
return filter(array, function(value){
return !contains(rest, value);
});
});
return difference;
});
+25
View File
@@ -0,0 +1,25 @@
define(['./keys', './_optimizeCb', './_isArrayLike'], function (keys, _optimizeCb, _isArrayLike) {
// The cornerstone for collection functions, an `each`
// implementation, aka `forEach`.
// Handles raw objects in addition to array-likes. Treats all
// sparse array-likes as if they were dense.
function each(obj, iteratee, context) {
iteratee = _optimizeCb(iteratee, context);
var i, length;
if (_isArrayLike(obj)) {
for (i = 0, length = obj.length; i < length; i++) {
iteratee(obj[i], i, obj);
}
} else {
var _keys = keys(obj);
for (i = 0, length = _keys.length; i < length; i++) {
iteratee(obj[_keys[i]], _keys[i], obj);
}
}
return obj;
}
return each;
});
+8
View File
@@ -0,0 +1,8 @@
define(['./_createEscaper', './_escapeMap'], function (_createEscaper, _escapeMap) {
// Function for escaping strings to HTML interpolation.
var _escape = _createEscaper(_escapeMap);
return _escape;
});
+17
View File
@@ -0,0 +1,17 @@
define(['./keys', './_cb', './_isArrayLike'], function (keys, _cb, _isArrayLike) {
// Determine whether all of the elements pass a truth test.
function every(obj, predicate, context) {
predicate = _cb(predicate, context);
var _keys = !_isArrayLike(obj) && keys(obj),
length = (_keys || obj).length;
for (var index = 0; index < length; index++) {
var currentKey = _keys ? _keys[index] : index;
if (!predicate(obj[currentKey], currentKey, obj)) return false;
}
return true;
}
return every;
});
+8
View File
@@ -0,0 +1,8 @@
define(['./_createAssigner', './allKeys'], function (_createAssigner, allKeys) {
// Extend a given object with all the properties in passed-in object(s).
var extend = _createAssigner(allKeys);
return extend;
});
+10
View File
@@ -0,0 +1,10 @@
define(['./_createAssigner', './keys'], function (_createAssigner, keys) {
// Assigns a given object with all the own properties in the passed-in
// object(s).
// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
var extendOwn = _createAssigner(keys);
return extendOwn;
});
+15
View File
@@ -0,0 +1,15 @@
define(['./_cb', './each'], function (_cb, each) {
// Return all the elements that pass a truth test.
function filter(obj, predicate, context) {
var results = [];
predicate = _cb(predicate, context);
each(obj, function(value, index, list) {
if (predicate(value, index, list)) results.push(value);
});
return results;
}
return filter;
});
+12
View File
@@ -0,0 +1,12 @@
define(['./_isArrayLike', './findIndex', './findKey'], function (_isArrayLike, findIndex, findKey) {
// Return the first value which passes a truth test.
function find(obj, predicate, context) {
var keyFinder = _isArrayLike(obj) ? findIndex : findKey;
var key = keyFinder(obj, predicate, context);
if (key !== void 0 && key !== -1) return obj[key];
}
return find;
});
+8
View File
@@ -0,0 +1,8 @@
define(['./_createPredicateIndexFinder'], function (_createPredicateIndexFinder) {
// Returns the first index on an array-like that passes a truth test.
var findIndex = _createPredicateIndexFinder(1);
return findIndex;
});
+15
View File
@@ -0,0 +1,15 @@
define(['./keys', './_cb'], function (keys, _cb) {
// Returns the first key on an object that passes a truth test.
function findKey(obj, predicate, context) {
predicate = _cb(predicate, context);
var _keys = keys(obj), key;
for (var i = 0, length = _keys.length; i < length; i++) {
key = _keys[i];
if (predicate(obj[key], key, obj)) return key;
}
}
return findKey;
});
+8
View File
@@ -0,0 +1,8 @@
define(['./_createPredicateIndexFinder'], function (_createPredicateIndexFinder) {
// Returns the last index on an array-like that passes a truth test.
var findLastIndex = _createPredicateIndexFinder(-1);
return findLastIndex;
});
+11
View File
@@ -0,0 +1,11 @@
define(['./matcher', './find'], function (matcher, find) {
// Convenience version of a common use case of `_.find`: getting the first
// object containing specific `key:value` pairs.
function findWhere(obj, attrs) {
return find(obj, matcher(attrs));
}
return findWhere;
});
+13
View File
@@ -0,0 +1,13 @@
define(['./initial'], function (initial) {
// Get the first element of an array. Passing **n** will return the first N
// values in the array. The **guard** check allows it to work with `_.map`.
function first(array, n, guard) {
if (array == null || array.length < 1) return n == null || guard ? void 0 : [];
if (n == null || guard) return array[0];
return initial(array, array.length - n);
}
return first;
});
+11
View File
@@ -0,0 +1,11 @@
define(['./_flatten'], function (_flatten) {
// Flatten out an array, either recursively (by default), or up to `depth`.
// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.
function flatten(array, depth) {
return _flatten(array, depth, false);
}
return flatten;
});
+14
View File
@@ -0,0 +1,14 @@
define(['./isFunction'], function (isFunction) {
// Return a sorted list of the function names available on the object.
function functions(obj) {
var names = [];
for (var key in obj) {
if (isFunction(obj[key])) names.push(key);
}
return names.sort();
}
return functions;
});
+14
View File
@@ -0,0 +1,14 @@
define(['./_deepGet', './_toPath', './isUndefined'], function (_deepGet, _toPath, isUndefined) {
// Get the value of the (deep) property on `path` from `object`.
// If any property in `path` does not exist or if the value is
// `undefined`, return `defaultValue` instead.
// The `path` is normalized through `_.toPath`.
function get(object, path, defaultValue) {
var value = _deepGet(object, _toPath(path));
return isUndefined(value) ? defaultValue : value;
}
return get;
});
+11
View File
@@ -0,0 +1,11 @@
define(['./_has', './_group'], function (_has, _group) {
// Groups the object's values by a criterion. Pass either a string attribute
// to group by, or a function that returns the criterion.
var groupBy = _group(function(result, value, key) {
if (_has(result, key)) result[key].push(value); else result[key] = [value];
});
return groupBy;
});
+19
View File
@@ -0,0 +1,19 @@
define(['./_has', './_toPath'], function (_has, _toPath) {
// Shortcut function for checking if an object has a given property directly on
// itself (in other words, not on a prototype). Unlike the internal `has`
// function, this public version can also traverse nested properties.
function has(obj, path) {
path = _toPath(path);
var length = path.length;
for (var i = 0; i < length; i++) {
var key = path[i];
if (!_has(obj, key)) return false;
obj = obj[key];
}
return !!length;
}
return has;
});
+10
View File
@@ -0,0 +1,10 @@
define(function () {
// Keep the identity function around for default iteratees.
function identity(value) {
return value;
}
return identity;
});
+12
View File
@@ -0,0 +1,12 @@
define(['./mixin', './index'], function (mixin, index) {
// Default Export
// Add all of the Underscore functions to the wrapper object.
var _ = mixin(index);
// Legacy Node.js API.
_._ = _;
return _;
});
+154
View File
@@ -0,0 +1,154 @@
define(['exports', './isObject', './_setup', './identity', './isFunction', './isArray', './keys', './extendOwn', './isMatch', './matcher', './toPath', './property', './iteratee', './isNumber', './isNaN', './isArguments', './each', './allKeys', './invert', './after', './before', './restArguments', './bind', './bindAll', './chain', './chunk', './extend', './clone', './filter', './compact', './compose', './constant', './values', './sortedIndex', './findIndex', './indexOf', './contains', './countBy', './create', './now', './debounce', './defaults', './partial', './delay', './defer', './difference', './escape', './every', './findKey', './find', './findLastIndex', './findWhere', './initial', './first', './flatten', './functions', './isUndefined', './get', './groupBy', './has', './isNull', './isBoolean', './isElement', './isString', './isDate', './isRegExp', './isError', './isSymbol', './isArrayBuffer', './isDataView', './isFinite', './isTypedArray', './isEmpty', './isEqual', './isMap', './isWeakMap', './isSet', './isWeakSet', './pairs', './tap', './mapObject', './noop', './propertyOf', './times', './random', './unescape', './templateSettings', './template', './result', './uniqueId', './memoize', './throttle', './wrap', './negate', './once', './lastIndexOf', './map', './reduce', './reduceRight', './reject', './some', './invoke', './pluck', './where', './max', './min', './sample', './shuffle', './sortBy', './indexBy', './partition', './toArray', './size', './pick', './omit', './rest', './last', './without', './uniq', './union', './intersection', './unzip', './zip', './object', './range', './mixin', './underscore-array-methods'], function (exports, isObject, _setup, identity, isFunction, isArray, keys, extendOwn, isMatch, matcher, toPath$1, property, iteratee, isNumber, _isNaN, isArguments, each, allKeys, invert, after, before, restArguments, bind, bindAll, chain, chunk, extend, clone, filter, compact, compose, constant, values, sortedIndex, findIndex, indexOf, contains, countBy, create, now, debounce, defaults, partial, delay, defer, difference, _escape, every, findKey, find, findLastIndex, findWhere, initial, first, flatten, functions, isUndefined, get, groupBy, has, isNull, isBoolean, isElement, isString, isDate, isRegExp, isError, isSymbol, isArrayBuffer, isDataView, _isFinite, isTypedArray, isEmpty, isEqual, isMap, isWeakMap, isSet, isWeakSet, pairs, tap, mapObject, noop, propertyOf, times, random, _unescape, templateSettings, template, result, uniqueId, memoize, throttle, wrap, negate, once, lastIndexOf, map, reduce, reduceRight, reject, some, invoke, pluck, where, max, min, sample, shuffle, sortBy, indexBy, partition, toArray, size, pick, omit, rest, last, without, uniq, union, intersection, unzip, zip, object, range, mixin, underscoreArrayMethods) {
// Named Exports
exports.isObject = isObject;
exports.VERSION = _setup.VERSION;
exports.identity = identity;
exports.isFunction = isFunction;
exports.isArray = isArray;
exports.keys = keys;
exports.assign = extendOwn;
exports.extendOwn = extendOwn;
exports.isMatch = isMatch;
exports.matcher = matcher;
exports.matches = matcher;
exports.toPath = toPath$1;
exports.property = property;
exports.iteratee = iteratee;
exports.isNumber = isNumber;
exports.isNaN = _isNaN;
exports.isArguments = isArguments;
exports.each = each;
exports.forEach = each;
exports.allKeys = allKeys;
exports.invert = invert;
exports.after = after;
exports.before = before;
exports.restArguments = restArguments;
exports.bind = bind;
exports.bindAll = bindAll;
exports.chain = chain;
exports.chunk = chunk;
exports.extend = extend;
exports.clone = clone;
exports.filter = filter;
exports.select = filter;
exports.compact = compact;
exports.compose = compose;
exports.constant = constant;
exports.values = values;
exports.sortedIndex = sortedIndex;
exports.findIndex = findIndex;
exports.indexOf = indexOf;
exports.contains = contains;
exports.include = contains;
exports.includes = contains;
exports.countBy = countBy;
exports.create = create;
exports.now = now;
exports.debounce = debounce;
exports.defaults = defaults;
exports.partial = partial;
exports.delay = delay;
exports.defer = defer;
exports.difference = difference;
exports.escape = _escape;
exports.all = every;
exports.every = every;
exports.findKey = findKey;
exports.detect = find;
exports.find = find;
exports.findLastIndex = findLastIndex;
exports.findWhere = findWhere;
exports.initial = initial;
exports.first = first;
exports.head = first;
exports.take = first;
exports.flatten = flatten;
exports.functions = functions;
exports.methods = functions;
exports.isUndefined = isUndefined;
exports.get = get;
exports.groupBy = groupBy;
exports.has = has;
exports.isNull = isNull;
exports.isBoolean = isBoolean;
exports.isElement = isElement;
exports.isString = isString;
exports.isDate = isDate;
exports.isRegExp = isRegExp;
exports.isError = isError;
exports.isSymbol = isSymbol;
exports.isArrayBuffer = isArrayBuffer;
exports.isDataView = isDataView;
exports.isFinite = _isFinite;
exports.isTypedArray = isTypedArray;
exports.isEmpty = isEmpty;
exports.isEqual = isEqual;
exports.isMap = isMap;
exports.isWeakMap = isWeakMap;
exports.isSet = isSet;
exports.isWeakSet = isWeakSet;
exports.pairs = pairs;
exports.tap = tap;
exports.mapObject = mapObject;
exports.noop = noop;
exports.propertyOf = propertyOf;
exports.times = times;
exports.random = random;
exports.unescape = _unescape;
exports.templateSettings = templateSettings;
exports.template = template;
exports.result = result;
exports.uniqueId = uniqueId;
exports.memoize = memoize;
exports.throttle = throttle;
exports.wrap = wrap;
exports.negate = negate;
exports.once = once;
exports.lastIndexOf = lastIndexOf;
exports.collect = map;
exports.map = map;
exports.foldl = reduce;
exports.inject = reduce;
exports.reduce = reduce;
exports.foldr = reduceRight;
exports.reduceRight = reduceRight;
exports.reject = reject;
exports.any = some;
exports.some = some;
exports.invoke = invoke;
exports.pluck = pluck;
exports.where = where;
exports.max = max;
exports.min = min;
exports.sample = sample;
exports.shuffle = shuffle;
exports.sortBy = sortBy;
exports.indexBy = indexBy;
exports.partition = partition;
exports.toArray = toArray;
exports.size = size;
exports.pick = pick;
exports.omit = omit;
exports.drop = rest;
exports.rest = rest;
exports.tail = rest;
exports.last = last;
exports.without = without;
exports.uniq = uniq;
exports.unique = uniq;
exports.union = union;
exports.intersection = intersection;
exports.transpose = unzip;
exports.unzip = unzip;
exports.zip = zip;
exports.object = object;
exports.range = range;
exports.mixin = mixin;
exports.default = underscoreArrayMethods;
Object.defineProperty(exports, '__esModule', { value: true });
});
+11
View File
@@ -0,0 +1,11 @@
define(['./_group'], function (_group) {
// Indexes the object's values by a criterion, similar to `_.groupBy`, but for
// when you know that your index values will be unique.
var indexBy = _group(function(result, value, key) {
result[key] = value;
});
return indexBy;
});
+11
View File
@@ -0,0 +1,11 @@
define(['./_createIndexFinder', './sortedIndex', './findIndex'], function (_createIndexFinder, sortedIndex, findIndex) {
// Return the position of the first occurrence of an item in an array,
// or -1 if the item is not included in the array.
// If the array is large and already in sort order, pass `true`
// for **isSorted** to use binary search.
var indexOf = _createIndexFinder(1, findIndex, sortedIndex);
return indexOf;
});
+12
View File
@@ -0,0 +1,12 @@
define(['./_setup'], function (_setup) {
// Returns everything but the last entry of the array. Especially useful on
// the arguments object. Passing **n** will return all the values in
// the array, excluding the last N.
function initial(array, n, guard) {
return _setup.slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));
}
return initial;
});

Some files were not shown because too many files have changed in this diff Show More