Object rest spread was standardised this year so it's safe to use. It
has shipped in major browsers and Node. Because Uppy uses immutable
state we can make a lot of gains in terseness and readability by using
the new object syntaxes, I think.
I updated one place where we were using Object.assign; I think we can
merge it like this first and then update the other places when we are
changing stuff there anyway.
Uses a custom Browserify plugin that turns resolved
`@uppy/xyz/lib/index.js` paths into `@uppy/xyz/src/index.js`. We can
move that plugin to a different file and use it in other places later.
It's a bit of a hack but this is easier than maintaining an aliasify
config for every package, I think.
(Also took this opportunity to ES6ify the examples build script using
`const` / arrows / Set.)
* s3: Do not return an uploadURL if S3 doesn't give us one.
* xhrupload: Add test for `this` inside getResponseData()
Because the S3 plugin depends on this now, but it might be easy to miss
if we changed that behaviour in the future.
* Remove debug logs in XHRUpload test.
* Log a warning if success_action_status is (probably) missing.
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!