Since `observe` callbacks fire synchronously, before this change,
if you run a method on the client that leads to an observe
callback firing, and in that observe callback you call `Meteor.call`,
it would act the same as when you call `Meteor.call` within a method
stub -- that is, it would call the method stub but not send the
method invocation to the server.
Since `observe` callbacks fire synchronously, before this change,
if you run a method on the client that leads to an observe
callback firing, and in that observe callback you call `Meteor.call`,
it would act the same as when you call `Meteor.call` within a method
stub -- that is, it would call the method stub but not send the
method invocation to the server.
Since `observe` callbacks fire synchronously, before this change,
if you run a method on the client that leads to an observe
callback firing, and in that observe callback you call `Meteor.call`,
it would act the same as when you call `Meteor.call` within a method
stub -- that is, it would call the method stub but not send the
method invocation to the server.
Since we have added additional constraints to the database around case
sensitivity, we now want to discourage people from working with the Accounts
collection directly and provide an API for changing certain fields in a correct
way.
Methods that do database checks before and after the operation:
Accounts.setUsername
Accounts.addEmail
Accounts.removeEmail
Methods that make sure to use a case-insensitive query to retrieve the user
Accounts.findUserByUsername
Accounts.findUserByEmail
PR #5024
Cordova plugin IDs have changed as part of moving to npm. We convert
old plugin IDs to new IDs in the 1.2.0-cordova-changes upgrader, when
adding plugins, and when preparing for build.
If specified, instead of capturing the output, the child process stdout
will be piped to the destination stream.
Although the standard spawn stdio option lets you pass in streams,
these have to be connected to an open file descriptor. The destination
option allows you to use any Writable, so it can be used with a
Transform for instance.
This fixes an issue where starting up the Android Emulator with stdio
piped would only exit when the emulator exits, instead of when the app
is successfully installed, thus blocking further startup.
The reason for this was that cordova-lib superspawn listens for the
‘close’ event of its child process, which is emitted when the stdio
streams have all terminated. If those streams are shared with other
processes (such as further child processes spawned by the child
process), that means we won't receive a 'close' until all processes
have exited, so we should listen for 'exit' instead.
The execFileSync function is meant to resemble the similarly-named Node
0.12 synchronous process creation API, but instead of being fully
blocking it uses a promise-based implementation. You can also use
execFileAsync directly, which returns a promise.
Some functionality is currently missing but could be added when the
need arises (e.g. support for timeout, maxBuffer, and encoding options).
Eventually, these versions should replace the ones in
tools/utils/utils.js and tools/tool-testing/selftest.js.
We now create a temporary directory with a generated config.xml
to use as a template for creating the Cordova project. This way, we are
not dependent on the contents of cordova-app-hello-world but we base
our initial project state on our own defaults and optionally a
mobile-config.js.
This change was in part motivated by a bug in Cordova where changing
the app name to a version with a different case, on a case insensitive
file system like OS X, means the project will no longer build. Because
our app name on creation was based on the project directory and we
didn’t respect the app name set in mobile-config.js until the first
build, there was always a rename needed, triggering the bug.
This bug affected both the todos and localmarket example apps.