Files
meteor/packages/underscore/package.js
David Glasser bab936eac9 Patch _.each to not treat {length: 5} as an array
Specifically, in all Underscore "collection" functions which treat their
arguments polymorphically as either "object-like" or "array-like", don't
treat arguments with `x.constructor === Object` as arrays (except for
the 'arguments' object).

Fixes #594. Fixes #1737.
2014-01-07 20:17:47 -08:00

30 lines
1.4 KiB
JavaScript

Package.describe({
summary: "Collection of small helper functions: _.map, _.each, ..."
});
Package.on_use(function (api) {
// Like all packages, we have an implicit depedency on the 'meteor'
// package, which provides such things as the *.js file handler. Use
// an undocumented API to allow 'meteor' to after us even though we
// depend on it. This is necessary since 'meteor' depends on us. One
// day we will avoid this problem by refactor, but for now this is a
// practical and expedient solution.
//
// XXX Now the *.js handler is intrinsic rather than coming from the
// 'meteor' package and we could remove this (if we provided a way
// to let the package opt to not depend on 'meteor'.) We could even
// remove unordered dependency support, though I think it's worth keeping
// around for now to keep the possibility of dependency
// configuration alive in the codebase.
api.use('meteor', {unordered: true});
api.export('_');
// NOTE: we patch _.each and various other functions that polymorphically take
// objects, arrays, and array-like objects (such as the querySelectorAll
// return value, document.images, and 'arguments') such that objects with a
// numeric length field whose constructor === Object are still treated as
// objects, not as arrays. Search for looksLikeArray.
api.add_files(['pre.js', 'underscore.js', 'post.js']);
});