2017-05-30 09:11:15 -04:00
// Convenience function to load polyfills and return a promise when it's done.
// If there are no polyfills, then this is just Promise.resolve() which means
// it will execute in the same tick of the event loop (i.e. near-instant).
2023-05-31 17:43:39 -04:00
import { loadIntlPolyfills } from './intl' ;
2017-05-30 09:11:15 -04:00
function importExtraPolyfills() {
return import ( /* webpackChunkName: "extra_polyfills" */ './extra_polyfills' ) ;
}
2023-05-09 08:55:35 -04:00
export function loadPolyfills() {
2023-10-31 06:55:13 -04:00
// Safari does not have requestIdleCallback.
2017-05-30 09:11:15 -04:00
// This avoids shipping them all the polyfills.
2023-10-31 06:55:13 -04:00
const needsExtraPolyfills = ! window . requestIdleCallback ;
2017-05-30 09:11:15 -04:00
return Promise . all ( [
2023-05-31 17:43:39 -04:00
loadIntlPolyfills ( ) ,
2023-10-31 06:55:13 -04:00
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- those properties might not exist in old browsers, even if they are always here in types
2017-05-30 09:11:15 -04:00
needsExtraPolyfills && importExtraPolyfills ( ) ,
] ) ;
}