* Remove IE polyfills and special casing
* dashboard: remove `resize-observer-polyfill`
* deps: remove url-parse to use global `URL` instead
* Update documentation for browser support
* Add a migration guide
* Update e2e test platforms
* Remove polyfills from examples and add those missing in CDN bundle
* Use Node.js v16.x on CI because of `AbortController`
* Update bundle builder to produce two builds: `uppy.js` without polyfills, `uppy.legacy.js` with polyfills.
* Upgrade create-react-app deps
* remove null coalescing operator as it's not supported by the build chain
* disable Safari testing (for now)
Co-authored-by: Renée Kooi <renee@kooi.me>
Some new features are obvious, like Promises and fetch, but for some
smaller features we don't always know if they're supported everywhere.
eslint-plugin-compat, however, does :)
It will log an error if we use anything that is not supported in IE 10
or recent versions of Chrome/Edge/Firefox/Safari. Features can be
whitelisted by adding them to the `polyfills` setting in the eslint
config; this is nice, because it gives us an easy list of features that
users may have to polyfill without having to comb through all of the
code!