The use of path.sep is incorrect because req.url is a URL, not a file
path, and so always contains forward slashes.
I verified that the original code does not work on Windows and that
the new code does.
This branch:
- Updates fibers to 1.0.0, which hopefully fixes crash/stack overflow
issues. This version stops exporting a global 'Fiber' object which
means some server code needs to do some more requires.
- Updates uglify-js to (a Meteor bugfix fork) off of 2.2.3. This is a complete
rewrite of Uglify and appears to fix infinite recursion bugs that were
discovered on the engine branch and while investigating lodash. We also now
are able to minify all code in one pass instead of as separate pieces.
- Stops using a Meteor bugfix fork of fstream, because they have taken our
fork. This also affects the nested copy used by tar.
This definitely won't "work" because both have API changes.
UglifyJS 1 was having issues minifying certain code (eg lodash). But UglifyJS 2
was occasionally segfaulting (as was other code using large regexps). See the
bottom of https://github.com/laverdet/node-fibers/issues/89
Hopefully this will fix it.
Instead of a general client-side sub de-duping mechanism (which mostly existed
for the sake of autosubscribe, and causes issues with server-driven
unsubscribes), make Meteor.subscribe explicitly aware of reactivity.
Expose an "invalidated" flag on Meteor.deps.Context.
Guarantee that invalidation callbacks from different contexts will not be
interleaved at flush time. This has the implication that if you do
context1.onInvalidate(function () {
context2.invalidate();
});
and this is the only way to invalidate context2, then context2's invalidation
callbacks will not be called until after *ALL* of context1's callbacks are
called. This allows us to be sure that the "unsubscribe, unless autorun tried to
re-create an identical sub" logic runs after the autorun function is rerun.
The previous version only killed the wrapper bash script, not the child. We now
work around the broken (socketpair) stdin presented to Node's child processes by
using a bash heredoc rather than "cat |"; this means we can use exec, which only
gives us one process to clean up.
While we're at it, simplify code by switching from child_process.spawn to
child_process.execFile, which does the work of capturing stdout and setting a
timeout for us automatically.
Originally from https://github.com/meteor/meteor/pull/569
Reworked to:
- apply to soma.png, not soma.jpeg (file was previously misnamed).
- don't touch bootstrap's glyph image. It would cause conflicts later, and is not neighborly.
Taken from the Bootstrap homepage: "Sleek, intuitive, and powerful front-end framework for faster and easier web development."
Nitpick. There's no such thing as a "UX framework", and Bootstrap also provides more than just UI widgets, so I figured it would probably be best to just use the same description Twitter chose.
The cursor de-dup code introduced in Meteor 0.5.1 had a bug where a server-side
`observe` with no `added` callback would throw an error if the `observe` was
de-duped.
The 'exit' event on a ChildProcess doesn't necessarily occur before all the
'data' events on its stdio, so sometimes 'meteor mongo' didn't find the
process. We should have been using the 'close' event. Switch from
child_process.spawn to child_process.exec, which simplifies the code and uses
the right event.