UglifyJS requires Node.js to run, but it's a lot faster than Google's
compiler and produces smaller gzipped sizes. Some of the non-gzipped
sizes are a bit larger than Google's but I think the gzipped size is
more important. Faster runtime is also good when we start testing the
minified versions too.
This was breaking setTimeout and setInterval in Node, since I've already
unplugged env-js' event loop. With that out of the way, we can write tests for
transitions!
This fixes a bug with the usage of `require` in env-js, such that env-js now
uses proper relative paths rather than unshifting "." onto `require.paths`. The
behavior of `require` is documented here:
<http://nodejs.org/docs/v0.4.2/api/modules.html#all_Together...>
With this change in place, it's now possible to use env-js simply by require'ing
it from a script, rather than having env-js host and eval.
Also, this commit changes the initialization of env-js, such that the initial
document is immediately available when the env-js module is loaded. And, the
event loop is disabled so that env-js shuts down cleanly. This probably breaks
some parts of env-js, but it makes it much easier to use so I'm going to play
with it a bit.
D3 now supports Sizzle, preferring Sizzle to the native Selectors API if Sizzle
is available. Sizzle internally uses the native Selectors API and thus this
should have minimal performance implications; also, it allows you to use Sizzle
proprietary extensions such as ":first".
This commit also restricts the definition of the enter selection so that only
append and insert operations are defined. The other operations were generally
unsupported anyway, and it cleans up the code to have separate implementations
for insert and append. (I might enable additional operations in the future, such
as `filter`, `sort` and `each`, but this seems like a reasonable first pass.)