cozy / cozy-client-js

Javascript library to write Cozy applications
https://docs.cozy.io/en/cozy-client-js/README/
MIT License
11 stars 12 forks source link

fix: remove `babel-polyfill` #233

Closed enguerran closed 6 years ago

enguerran commented 6 years ago

On Firefox ESR 52 and Safari, polyfills were needed. Including multiple times babel-polyfill must throw an exception. In the case of cozy-drive it did not, get can't convert undefined to object in the console instead.

It fixes #221 It is related to https://github.com/cozy/cozy-bar/pull/113

enguerran commented 6 years ago

🐛 L'application crash Drive sur Firefox 52 ESR et Safari

y-lohse commented 6 years ago

If we do this, and cozy-client-js is included in an app that doesn't provide babel-polyfill, what happens?

enguerran commented 6 years ago

Then they will be no polyfill, so we will see an error Toto is not defined when Toto is something that need to be polyfilled.

ptbrowne commented 6 years ago

As we use babel-preset-env in .babelrc, polyfills will be included automatically though.

enguerran commented 6 years ago

@ptbrowne be ware / attention ⚠️

Cependant, si il n'existe pas de Polyfill lors de l'évaluation du code, une erreur explicite sera affichée dans la console : Promise is undefined.

Bref, tout ça pour dire que babel-preset-env ne remplace en rien babel-polyfill.

nono commented 6 years ago

@enguerran humm, de ce que je comprends de https://github.com/babel/babel/tree/master/packages/babel-preset-env#usebuiltins, c'est plus compliqué que ça. babel-preset-env peut (selon les options) faire appel à babel-polyfill pour forcer l'inclusion de polyfills.

enguerran commented 6 years ago

@nono à mon avis, ce que usebuitins permet c'est de ne pas inclure tous les polyfills manquant pour telle plateforme mais d'ajouter à la demande les imports des polyfills nécessaires, sachant que babel-polyfill inclut core-js et donc permet au bundle final d'avoir tout le code nécessaire à l'exécution du JavaScript transpilé et greffé avec les polyfills.