This reverts commit 4a6dd52bca.
This made some tests flaky because notSpaceSensitive sometimes (but not
always!) ate the newline after the regexp.
We should just disable word wrapping in processes run by self-test
instead.
The blaze package defines Blaze.Template, not Template, and should find
it there.
(Apps tend to put `Template = Blaze.Template` globally on the client via
templating package, but that's not guaranteed, and doesn't happen on the
server.)
The test is fine, but we were publishing a different version than we checked for.
(That is, we published 1.1.0, and were surprised when 1.0.1 did not show up).
Fixed.
This reverts commit 5d3cfa2d76, reversing
changes made to 2b466a9015.
Ah well, we tried to enable websocket compression again and ran into
more bugs.
First, newer versions of websocket-driver seem to sometimes send
duplicate close messages:
https://github.com/faye/faye-websocket-node/issues/41
This occurs whether or not deflate is actually used.
Second, in some circumstances permessage-deflate seems to completely
corrupt messages. This was reasonably easily observable by running
test-packages with Chrome, and seeing that sometimes (but not always) a
large number of bad JSON messages got printed to the client
console. (Another symptom was that the total number of tests would be
larger than it should be, leading to messages like "Passed 1109 of
1153", presumably because the test name got corrupted in some status
messages.) https://github.com/faye/permessage-deflate-node/issues/4
See #3007.
For example, 5ddf203 stops us from understanding $sets and $unsets with
empty field parts, but pre-2.6 MongoDB could generate them. (And even
post-2.6 may be able to generate $unsets with bad field names, but it's
not important for us to match that behavior since with Minimongo you
shouldn't be able to put them in in the first place.)
Projection functions act on *documents*, not the diffs that are passed
to changed callbacks. For example, a projection `{'a.b': 1}` applied to
the *document* `{a: undefined}` will result in `{}`, but the *diff*
of `{a: undefined}` on a query with that projection should still result
in a `changed` callback with that diff being invoked.
Refactor various parts of minimongo to always have a projectionFn for
each observed query (perhaps a trivial one).
Pass the projection into _diffQueryChanges so that it can apply the
projection *before* taking the diff, in the two cases in Minimongo which
use _diffQueryChanges instead of direct application. (We could instead
make the query's results and resultsSnapshot be projected, but Minimongo
currently relies on the fact that these data structures alias the
documents stored in the collection.)
Stop applying the projection to the diffs in changed via
wrapCallback. (We could still use wrapCallback to apply the projection
for added/addedBefore calls, but it seems more consistent to use the
same mechanisms for added that we use for changed.
Fixes#3800. Fixes#2254. Fixes#3571.
This change actually introduces another layer of projections before diffing, in
addition to more projection after the diffing, on the result.
I didn't figure out why, but the tests fail if you remove either of them.
Adds tests. Fixes#2254.