supportsUploadProgress.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. "use strict";
  2. function supportsUploadProgress(userAgent) {
  3. // Allow passing in userAgent for tests
  4. if (userAgent == null && typeof navigator !== 'undefined') {
  5. // eslint-disable-next-line no-param-reassign
  6. userAgent = navigator.userAgent;
  7. } // Assume it works because basically everything supports progress events.
  8. if (!userAgent) return true;
  9. const m = /Edge\/(\d+\.\d+)/.exec(userAgent);
  10. if (!m) return true;
  11. const edgeVersion = m[1];
  12. let [major, minor] = edgeVersion.split('.');
  13. major = parseInt(major, 10);
  14. minor = parseInt(minor, 10); // Worked before:
  15. // Edge 40.15063.0.0
  16. // Microsoft EdgeHTML 15.15063
  17. if (major < 15 || major === 15 && minor < 15063) {
  18. return true;
  19. } // Fixed in:
  20. // Microsoft EdgeHTML 18.18218
  21. if (major > 18 || major === 18 && minor >= 18218) {
  22. return true;
  23. } // other versions don't work.
  24. return false;
  25. }
  26. // Edge 15.x does not fire 'progress' events on uploads.
  27. // See https://github.com/transloadit/uppy/issues/945
  28. // And https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12224510/
  29. module.exports = supportsUploadProgress;