Including an empty PUBLIC_SETTINGS object when there are no public
settings fixes a discrepancy between the way we calculated the client
hash for Cordova in CordovaBuilder and in webapp_server.js. This
discrepancy meant a Cordova app would always download a new version the
first time it started up, because the bundled version hash and the
server version hash would be different.
This fixes a long standing issue where Meteor.startup was not waiting
for the deviceready event (fired when all plugins have been
initialized) in a Cordova app. It also removes a non-functioning
workaround that was based on the belief that this was a Cordova bug,
and cleans up the code somewhat.
The cause of this issue was that we tried to keep track of
awaitingEventsCount, but forgot that both DOMContentLoaded and loaded
events would usually fire. As a result, awaitingEventsCount became 0
before deviceready fired (leading to all sorts of bugs with code
calling into Cordova).
The holdReady() function is based on a similarly named function in
jQuery and generalizes waiting for events in addition to loading
completing.
We only got away with this because we later use _.values to iterate over
the elements of the array, which just happens to do the right thing when
the array is overloaded with object properties. The order of iteration was
even the same because object keys are enumerated in order of assignment,
but when you're working with an ordered list of files it's better to use
an array the normal way (for its elements rather than its properties).
The inputFile.getPathInPackage() path is not very useful for package
files, since it does not contain the name of the package.
This change makes BabelCompiler behave more like the CoffeeCompiler, which
also omits the explicit sourcePath option to the inputFile.error method.
Fixes#5551.
Fixes#4757
Uses environment variable CAFILE (to match NPM) which must contain a fully qualified path to a pem format root certificate to include in the list of trusted root certs.
This additional root certificate will be needed for those behind an SSL inspection proxy which acts as an SSL termination point and resigns the traffic with its own root certificate.
Currently, when `value` is null, the error message is (for example) `Expected string, got object`. This changes the error message to `Expected string, got null`, which aids debugging.
According to Facebook
(https://developers.facebook.com/docs/sharing/webmasters/crawler), they
have a new (May 2014) crawler named Facebot. Spiderable doesn't
currently work for Facebot. It should.
PS. I shed a tear along with @stuabilo that this is even a thing.