This is a back-port of a similar change on the web.browser.legacy branch:
b8601d3ce7
To save size in modern browsers, JavaScript bundles built for the
web.browser architecture no longer statically include the SockJS library.
That's safe as long as native WebSockets actually work, but what if
there's a problem with the network that necessitates falling back to
long-polling or some other SockJS strategy?
In those cases, we can load SockJS using a dynamic import(), which is a
little slower than including it in the bundle, but that's OK because the
module will be permanently cached in IndexedDB in production, and falling
back to SockJS should be rare in modern browsers anyway.
Note that this trick would not be possible if the implementation of
dynamic import() still required a socket connection! (#9384)
All external service `accounts-*` packages (`accounts-facebook`,
`accounts-github`, etc.) are currently using ES2015 syntax, but
do not explicitly declare a dependency on the `ecmascript`
package. This means the ES2015 syntax being used is not
transpiled by Meteor, and can lead to issues like #9506.
Since `accounts-base` and `accounts-password` both already
have `ecmascript` as a dependency, this PR adds an `ecmascript`
dependency to all external service `accounts-*` packages.
Fixes#9506.
This commit updates the `meteor create --full` app skeleton to use `meteortesting:mocha`
(and npm based `chai`), instead of the deprecated `practicalmeteor:mocha` package.
When using the `oauth` package "redirect" `loginStyle`, the
redirect URL is escaped before it is embedded in the HTML
page that is used to finalize the oauth process. This
escaped redirect URL is then assigned directly to
`window.location` to finalize the redirect. Browsers can
properly handle most of the escaped URL components, with
the exception of HTML entity based ampersands: `&`.
The `&`'s are left in the redirect URL after the
redirect has completed, leading to broken redirects in
some cases.
This commit makes sure `&`'s are converted back to
`&`'s before the redirect URL is assigned to
`window.location`.
Fixes#9279
Clearly we haven't remembered to bump this version for some time now,
which is too bad, because it could have provided a more helpful error for
developers using an older version of Node in their non-Galaxy deployment
environments: https://github.com/meteor/meteor/issues/9470
* Deprecate the stylus package
Better / more up to date 3rd party stylus packages exist and
there isn't really any technical reason why Meteor core needs
to include its own stylus package. Since a stylus package
can be fully built and managed outside of core, this commit
moves the `stylus` package into `deprecated` (and preps the
package contents for deprecation if we decide to publish a
final version).
* Removed dupe
* Add test placeholder css file to console test runner
Some of Meteor's package tests require at least one `.css`
file to be available in the tested application bundle
(e.g. "appcache - sections validity" and "webapp -
content-type header"). The inclusion of this file makes
sure that at least one `.css` file can always be found,
when the tests are run.
* Bump test-in-console package version
* Bump package minor version
Putting the minor version at something unreachable to
make sure the deprecated version isn't accidientally
pulled into an app when running
`meteor update --all-packages` or `meteor update stylus`.
* Add PR link
* Prevent Tool crash when settings file contains BOM
The use of a byte order mark in a `--settings` file
crashes the Meteor Tool, when it attempts to JSON parse
the loaded settings data. Since a BOM is not required
(or recommended) when using UTF-8, this commit removes
it from the loaded settings data, before it is parsed.
Fixes#5180.
* Add PR link to History.md
* Update History.md
* Ignore undefined fields when inserting/updating in Mongo
The Mongo Node driver that Meteor uses currently replaces
`undefined` field values with `null`, when doing an
insert/update. This approach can lead to unexpected behaviour,
as outlined in #1646, #6051 and several other issues. This commit
configures the default Mongo connection to `ignoreUndefined`
fields, which means `undefined` fields are not inserted/updated,
instead of being inserted/updated as `null`.
Fixes#6051.
* Add PR link to History.md
* Update Email.send docs to show how to add header objects
Recent versions of `mailcomposer` (which Meteor is now using) no
longer `JSON.stringify` added header objects. This commit updates
the `Email.send` `options.headers` docs to show how to properly
associate objects with custom headers using `JSON.stringify`.
Fixes#8660.
* Adjust header object docs property naming to avoid confusion
* Help browser account saving with accounts-ui login/signup forms
`accounts-ui-unstyled` currently uses `<div />`'s to hold its
login/signup forms, as well as `<div />`'s to represent the
login/signup buttons in the form. By not using proper
`<form />` and `<button />` elements, certain browser's do not
notice incoming login/signup requests, and therefore do not
trigger their built in "would you like to save your user/password"
functionality. This commit adjusts the `accounts-ui-unstyled`
login/signup form to use proper `<form />` and `<button />`
elements, allowing most (Chrome, Firefox, IE - Safari will
recognize the request when a user attempts to leave the page)
browsers to recognize incoming login/signup requests.
Fixes#1746.
* Add History.md entry outlining potential back compat issues
* Bump minor versions
Since this test utilizes the `testWithAllClients` technique, which runs
the tests in various clients/browsers, it's necessary for the tests
`Sandbox` to define `clients`, otherwise the function within
`testWithAllClients` will not be executed at all. This was causing this
particular test to always return success (it was running without failure
on exactly zero clients).
Also the technique of setting `this.baseTimeout` appeared to cause
problems, likely because it overrides various other values instead of
using `waitSecs` (we don't use the `baseTimeout` technique in other
places within self-tests either).
Discovered during testing, as mentioned in
https://github.com/meteor/meteor/pull/9439#pullrequestreview-83139232.