UNPKG

google-closure-compiler

Version:

Check, compile, optimize and compress Javascript with Closure-Compiler

836 lines (720 loc) • 17.6 kB
/* * Copyright 2012 The Closure Compiler Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @fileoverview Externs for Underscore 1.5.2. * * TODO: Wrapper objects. * TODO: _.bind - for some reason this plays up in practice. * * @see http://documentcloud.github.com/underscore/ * @externs */ /** * @param {*} obj * @return {!_} * @constructor */ function _(obj) {} // Collection functions /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, VALUE, ?, ?)} iterator * @param {CONTEXT=} opt_context * @template CONTEXT, VALUE */ _.each = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, VALUE, ?, ?)} iterator * @param {CONTEXT=} opt_context * @template CONTEXT, VALUE */ _.forEach = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, VALUE, ?, ?) : RETURN} iterator * @param {CONTEXT=} opt_context * @return {!Array.<RETURN>} * @template CONTEXT, VALUE, RETURN */ _.map = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, VALUE, ?, ?) : RETURN} iterator * @param {CONTEXT=} opt_context * @return {!Array.<RETURN>} * @template CONTEXT, VALUE, RETURN */ _.collect = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, ?, VALUE, ?, ?) : RETURN} iterator * @param {?} memo * @param {CONTEXT=} opt_context * @return {RETURN} * @template CONTEXT, VALUE, RETURN */ _.reduce = function(obj, iterator, memo, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, ?, VALUE, ?, ?) : RETURN} iterator * @param {?} memo * @param {CONTEXT=} opt_context * @return {RETURN} * @template CONTEXT, VALUE, RETURN */ _.inject = function(obj, iterator, memo, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, ?, VALUE, ?, ?) : RETURN} iterator * @param {?} memo * @param {CONTEXT=} opt_context * @return {RETURN} * @template CONTEXT, VALUE, RETURN */ _.foldl = function(obj, iterator, memo, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, ?, VALUE, ?, ?) : RETURN} iterator * @param {?} memo * @param {CONTEXT=} opt_context * @return {RETURN} * @template CONTEXT, VALUE, RETURN */ _.reduceRight = function(obj, iterator, memo, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, ?, VALUE, ?, ?) : RETURN} iterator * @param {VALUE} memo * @param {CONTEXT=} opt_context * @return {RETURN} * @template CONTEXT, VALUE, RETURN */ _.foldr = function(obj, iterator, memo, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, VALUE, ?, ?) : ?} iterator * @param {CONTEXT=} opt_context * @return {VALUE|undefined} * @template CONTEXT, VALUE */ _.find = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, VALUE, ?, ?) : ?} iterator * @param {CONTEXT=} opt_context * @return {VALUE|undefined} * @template CONTEXT, VALUE */ _.detect = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, VALUE, ?, ?) : ?} iterator * @param {CONTEXT=} opt_context * @return {!Array.<VALUE>} * @template CONTEXT, VALUE */ _.filter = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, VALUE, ?, ?) : ?} iterator * @param {CONTEXT=} opt_context * @return {!Array.<VALUE>} * @template CONTEXT, VALUE */ _.select = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {Object} properties * @return {!Array.<VALUE>} * @template VALUE */ _.where = function(obj, properties) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {Object.<string, ?>} properties * @return {VALUE|undefined} * @template VALUE */ _.findWhere = function(obj, properties) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, VALUE, ?, ?) : ?} iterator * @param {CONTEXT=} opt_context * @return {!Array.<VALUE>} * @template CONTEXT, VALUE */ _.reject = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {(function(this:CONTEXT, VALUE, ?, ?) : ?)=} opt_iterator * @param {CONTEXT=} opt_context * @return {boolean} * @template CONTEXT, VALUE */ _.every = function(obj, opt_iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {(function(this:CONTEXT, VALUE, ?, ?) : ?)=} opt_iterator * @param {CONTEXT=} opt_context * @return {boolean} * @template CONTEXT, VALUE */ _.all = function(obj, opt_iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {(function(this:CONTEXT, VALUE, ?, ?) : ?)=} opt_iterator * @param {CONTEXT=} opt_context * @return {boolean} * @template CONTEXT, VALUE */ _.some = function(obj, opt_iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {(function(this:CONTEXT, VALUE, ?, ?) : ?)=} opt_iterator * @param {CONTEXT=} opt_context * @return {boolean} * @template CONTEXT, VALUE */ _.any = function(obj, opt_iterator, opt_context) {}; /** * @param {Object|Array} obj * @param {*} target * @return {boolean} */ _.contains = function(obj, target) {}; /** * @param {Object|Array} obj * @param {*} target * @return {boolean} */ _.include = function(obj, target) {}; /** * @param {Object|Array} obj * @param {string|Function} method * @param {...*} var_args */ _.invoke = function(obj, method, var_args) {}; /** * @param {Array.<Object.<?, VALUE>>} obj * @param {string} key * @return {!Array.<VALUE>} * @template VALUE */ _.pluck = function(obj, key) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, VALUE, ?, ?) : ?=} opt_iterator * @param {CONTEXT=} opt_context * @return {VALUE} * @template CONTEXT, VALUE */ _.max = function(obj, opt_iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {function(this:CONTEXT, VALUE, ?, ?) : ?=} opt_iterator * @param {CONTEXT=} opt_context * @return {VALUE} * @template CONTEXT, VALUE */ _.min = function(obj, opt_iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {string|function(this:CONTEXT, VALUE, ?, ?) : ?} iterator * @param {CONTEXT=} opt_context * @return {!Array.<VALUE>} * @template CONTEXT, VALUE */ _.sortBy = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {string|function(this:CONTEXT, VALUE, ?, ?) : ?} iterator * @param {CONTEXT=} opt_context * @return {!Object.<Array.<VALUE>>} * @template CONTEXT, VALUE */ _.groupBy = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {string|function(this:CONTEXT, VALUE, ?, ?) : ?} iterator * @param {CONTEXT=} opt_context * @return {!Object.<?, VALUE>} * @template CONTEXT, VALUE */ _.indexBy = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {string|function(this:CONTEXT, VALUE, ?, ?) : ?} iterator * @param {CONTEXT=} opt_context * @return {!Object.<?, number>} * @template CONTEXT, VALUE */ _.countBy = function(obj, iterator, opt_context) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @return {!Array.<VALUE>} * @template VALUE */ _.shuffle = function(obj) {}; /** * @param {Object.<?, VALUE>|Array.<VALUE>} obj * @param {number=} opt_n * @return {VALUE|Array.<VALUE>} * @template VALUE */ _.sample = function(obj, opt_n) {}; /** * @param {*} iterable * @return {!Array} */ _.toArray = function(iterable) {}; /** * @param {Object|Array} obj * @return {number} */ _.size = function(obj) {}; // Array functions /** * @param {Array.<VALUE>} array * @param {number=} opt_n * @return {VALUE|!Array.<VALUE>} * @template VALUE */ _.first = function(array, opt_n) {}; /** * @param {Array.<VALUE>} array * @param {number=} opt_n * @return {VALUE|!Array.<VALUE>} * @template VALUE */ _.head = function(array, opt_n) {}; /** * @param {Array.<VALUE>} array * @param {number=} opt_n * @return {VALUE|!Array.<VALUE>} * @template VALUE */ _.take = function(array, opt_n) {}; /** * @param {Array.<VALUE>} array * @param {number=} opt_n * @return {!Array.<VALUE>} * @template VALUE */ _.initial = function(array, opt_n) {}; /** * @param {Array.<VALUE>} array * @param {number=} opt_n * @return {VALUE|!Array.<VALUE>} * @template VALUE */ _.last = function(array, opt_n) {}; /** * @param {Array.<VALUE>} array * @param {number=} opt_n * @return {!Array.<VALUE>} * @template VALUE */ _.rest = function(array, opt_n) {}; /** * @param {Array.<VALUE>} array * @param {number=} opt_n * @return {!Array.<VALUE>} * @template VALUE */ _.tail = function(array, opt_n) {}; /** * @param {Array.<VALUE>} array * @param {number=} opt_n * @return {!Array.<VALUE>} * @template VALUE */ _.drop = function(array, opt_n) {}; /** * @param {!Array.<VALUE>} array * @return {!Array.<VALUE>} * @template VALUE */ _.compact = function(array) {}; /** * @param {Array} array * @param {boolean=} opt_shallow * @return {!Array} */ _.flatten = function(array, opt_shallow) {}; /** * @param {!Array.<VALUE>} array * @param {...VALUE} var_args * @return {!Array.<VALUE>} * @template VALUE */ _.without = function(array, var_args) {}; /** * @param {...Array} arrays * @return {!Array} */ _.union = function(arrays) {}; /** * @param {...Array} arrays * @return {!Array} */ _.intersection = function(arrays) {}; /** * @param {Array} array * @param {...Array} arrays * @return {!Array} */ _.difference = function(array, arrays) {}; /** * @param {!Array.<VALUE>} array * @param {boolean=} opt_isSorted * @param {(function(this:CONTEXT, VALUE, ?, ?) : RETURN)=} opt_iterator * @param {CONTEXT=} opt_context * @return {!Array.<RETURN>} * @template CONTEXT, VALUE, RETURN */ _.uniq = function(array, opt_isSorted, opt_iterator, opt_context) {}; /** * @param {!Array.<VALUE>} array * @param {boolean=} opt_isSorted * @param {(function(this:CONTEXT, VALUE, ?, ?) : RETURN)=} opt_iterator * @param {CONTEXT=} opt_context * @return {!Array.<RETURN>} * @template CONTEXT, VALUE, RETURN */ _.unique = function(array, opt_isSorted, opt_iterator, opt_context) {}; /** * @param {...Array} arrays * @return {!Array} */ _.zip = function(arrays) {}; /** * @param {!Array} list * @param {Array=} opt_values * @return {!Object} */ _.object = function(list, opt_values) {}; /** * @param {Array} array * @param {*} item * @param {boolean=} opt_isSorted * @return {number} */ _.indexOf = function(array, item, opt_isSorted) {}; /** * @param {Array} array * @param {*} item * @param {number=} opt_fromindex * @return {number} */ _.lastIndexOf = function(array, item, opt_fromindex) {}; /** * @param {Array.<VALUE>} list * @param {VALUE} obj * @param {(function(this:CONTEXT, VALUE) : ?)=} opt_iterator * @param {CONTEXT=} opt_context * @return {number} * @template CONTEXT, VALUE */ _.sortedIndex = function(list, obj, opt_iterator, opt_context) {}; /** * @param {number} start * @param {number=} opt_stop * @param {number=} opt_step * @return {!Array.<number>} */ _.range = function(start, opt_stop, opt_step) {}; // Function (ahem) functions /** * @param {Object} obj * @param {...string} methodNames */ _.bindAll = function(obj, methodNames) {}; /** * @param {Function} func * @param {...*} var_args * @return {!Function} */ _.partial = function(func, var_args) {}; /** * @param {Function} func * @param {Function=} opt_hasher */ _.memoize = function(func, opt_hasher) {}; /** * @param {Function} func * @param {number} wait * @param {...*} var_args */ _.delay = function(func, wait, var_args) {}; /** * @param {Function} func */ _.defer = function(func) {}; /** * @param {Function} func * @param {number} wait * @param {Object=} opt_options * @return {!Function} */ _.throttle = function(func, wait, opt_options) {}; /** * @param {Function} func * @param {number} wait * @param {boolean=} opt_immediate * @return {!Function} */ _.debounce = function(func, wait, opt_immediate) {}; /** * @param {Function} func * @return {!Function} */ _.once = function(func) {}; /** * @param {number} times * @param {Function} func * @return {!Function} */ _.after = function(times, func) {}; /** * @param {Function} func * @param {Function} wrapper * @return {!Function} */ _.wrap = function(func, wrapper) {}; /** * @param {...Function} funcs * @return {!Function} */ _.compose = function(funcs) {}; // Object functions /** * @param {Object} obj * @return {!Array.<string>} */ _.keys = function(obj) {}; /** * @param {Object.<?, VALUE>} obj * @return {!Array.<VALUE>} * @template VALUE */ _.values = function(obj) {}; /** * @param {Object} obj * @return {!Array.<!Array>} */ _.pairs = function(obj) {}; /** * @param {Object.<K, V>} obj * @return {!Object.<V, K>} * @template K, V */ _.invert = function(obj) {}; /** * @param {Object} obj * @return {!Array.<string>} */ _.functions = function(obj) {}; /** * @param {Object} obj * @return {!Array.<string>} */ _.methods = function(obj) {}; /** * @param {Object} obj * @param {...Object} objs */ _.extend = function(obj, objs) {}; /** * @param {Object.<K, V>} obj * @param {...K|Array.<K>} keys * @return {Object.<K, V>} * @template K, V */ _.pick = function(obj, keys) {}; /** * @param {Object.<K, V>} obj * @param {...string|Array.<string>} keys * @return {Object.<K, V>} * @template K, V */ _.omit = function(obj, keys) {}; /** * @param {Object} obj * @param {...Object} defs */ _.defaults = function(obj, defs) {}; /** * @param {Object.<K, V>} obj * @return {Object.<K, V>} * @template K, V */ _.clone = function(obj) {}; /** * @param {Object.<K, V>} obj * @param {function(Object.<K, V>)} interceptor * @return {Object.<K, V>} obj * @template K, V */ _.tap = function(obj, interceptor) {}; /** * @param {Object} obj * @param {string} key * @return {boolean} */ _.has = function(obj, key) {}; /** * @param {Object} a * @param {Object} b * @return {boolean} */ _.isEqual = function(a, b) {}; /** * @param {Object|Array|string} obj * @return {boolean} */ _.isEmpty = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isElement = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isArray = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isObject = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isArguments = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isFunction = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isString = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isNumber = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isFinite = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isBoolean = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isDate = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isRegExp = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isNaN = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isNull = function(obj) {}; /** * @param {*} obj * @return {boolean} */ _.isUndefined = function(obj) {}; // Utility functions /** * @return {_} */ _.noConflict = function() {}; /** * @param {VALUE} value * @return {VALUE} * @template VALUE */ _.identity = function(value) {}; /** * @param {number} n * @param {Function} iterator * @param {Object=} opt_context * @return {Array} */ _.times = function(n, iterator, opt_context) {}; /** * @param {number} min * @param {number=} opt_max * @return {number} */ _.random = function(min, opt_max) {}; /** * @param {Object} obj */ _.mixin = function(obj) {}; /** * @param {string=} opt_prefix * @return {number|string} */ _.uniqueId = function(opt_prefix) {}; /** * @param {string} s * @return {string} */ _.escape = function(s) {}; /** * @param {string} s * @return {string} */ _.unescape = function(s) {}; /** * @param {Object} obj * @param {string|Function} property * @return {*} */ _.result = function(obj, property) {}; /** * @param {string} str * @param {Object=} opt_data * @param {Object=} opt_settings */ _.template = function(str, opt_data, opt_settings) {}; // Chaining functions /** * @param {Object} obj * @return {Object} */ _.chain = function(obj) {};