41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
/* global __react_refresh_polyfill_url__ */
|
|
|
|
/**
|
|
* @typedef {Object} UrlAPIs
|
|
* @property {typeof URL} URL
|
|
* @property {typeof URLSearchParams} URLSearchParams
|
|
*/
|
|
|
|
/**
|
|
* Runs a callback with patched the DOM URL APIs.
|
|
* @param {function(UrlAPIs): void} callback The code to run with patched URL globals.
|
|
* @returns {void}
|
|
*/
|
|
function runWithPatchedUrl(callback) {
|
|
var __originalURL;
|
|
var __originalURLSearchParams;
|
|
|
|
// Polyfill the DOM URL and URLSearchParams constructors
|
|
if (__react_refresh_polyfill_url__ || !window.URL) {
|
|
__originalURL = window.URL;
|
|
window.URL = require('core-js-pure/web/url');
|
|
}
|
|
if (__react_refresh_polyfill_url__ || !window.URLSearchParams) {
|
|
__originalURLSearchParams = window.URLSearchParams;
|
|
window.URLSearchParams = require('core-js-pure/web/url-search-params');
|
|
}
|
|
|
|
// Pass in URL APIs in case they are needed
|
|
callback({ URL: window.URL, URLSearchParams: window.URLSearchParams });
|
|
|
|
// Restore polyfill-ed APIs to their original state
|
|
if (__originalURL) {
|
|
window.URL = __originalURL;
|
|
}
|
|
if (__originalURLSearchParams) {
|
|
window.URLSearchParams = __originalURLSearchParams;
|
|
}
|
|
}
|
|
|
|
module.exports = runWithPatchedUrl;
|