Specifically, Mongo.Collection objects on the server now have
rawCollection and rawDatabase methods.
You can use MongoInternals.NpmModules.mongodb.version to tell what
version of the mongodb npm module is the backend for HTTP.call. This
version may change incompatibly from version to version of Meteor; use
at your own risk. (For example, we expect to upgrade from the 1.4.x
series to the 2.x series in the not-too-distant future.)
Fixes#3640.
You can use HTTPInternals.NpmModules.request.version to tell what
version of request (if any) is the backend for HTTP.call. This version
may change incompatibly from version to version of Meteor; use at your
own risk.
Fixes#1703.
LocalCollection.wrapTransform is idempotent, so it's OK to doubly-wrap
them, but it's slightly more efficient to notice that a transform has
already been wrapped and not re-wrap it.
(One place where we doubly-wrap transforms is in SynchronousCursor,
which calls wrapTransform on a transform that probably came from
Mongo.Collection, which also wrapped it.)
Fixes#3623.
Specifically, it should only be an error if we actually try to make a
server, not if we're just loading this incidentally into our tool as
part of an isopacket. (Loading isopackets should never fail unless
there is a bug in our code; that's why it prints an ugly stack trace.)
The important part here is the upgrades of websocket-driver and
websocket-extensions, which fix the bugs that made compression
unusable. The other upgrades shouldn't hurt, though.
Also, note that 0.3.13 was a bad release which reverted the change we
needed from 0.3.12.
This breaks the path meteor-platform -> webapp -> boilerplate-generator
-> spacebars-compiler -> minifiers which ended up shipping all of uglify
with each built app, even though the code generated in
boilerplate-generator is just eval'd without ever being shown to humans.
Beautification still works on JS generated by templating (*.html),
though.
Older installers, like the one on http://win.meteor.com
populated the same directory as our new installer, but with
different files. Specifically, meteor.exe which runs before
our meteor.bat. So we delete the contents of the installed
directory before starting the install.
Previously, the document would be transformed based on the first deny or
allow rule's transform, instead of using the matching transform rule.
This bug only applied to update, not insert or remove.
Technically one could do something fancy to avoid calling transform
unnecessarily if there are many validators with the same transform, but
if you're stressing that much about performance you might as well just
write a method instead of using allow/deny.
Fixes#3108.
The `paused` flag is stored on LocalCollection, but two places in
minimongo looked for it on the `query` object (which represents an
active observeChanges call). In both cases, the bug had no correctness
impact but could have a performance impact.
Bug 1:
`_recomputeResults` (used to calculate changes to skip and limit
queries) tried to avoid calculating the diff if the collection had been
paused (by pauseObservers as part of latency compensation), but it
looked for the `paused` flag in the wrong place and always ran the diff.
This didn't have an effect on correctness (because the wrapped callbacks
on `query` are no-ops when `paused` is set) but did waste time on
unnecessary diffs.
Bug 2:
In `update`, we tried to avoid saving original results for skip/limit
queries if the collection was paused, because we don't actually run the
diff for paused queries. (Well, except for the fact that Bug 1 made us
run the diffs anyway...) But since we checked `query.paused` instead of
`self.paused`, we wasted time cloning the results even if we were
paused.
Reviewed at https://rbcommons.com/s/meteor/r/4/