1"use strict"; 2Object.defineProperty(exports, "__esModule", { value: true }); 3exports.fetchThenEvalAsync = void 0; 4/** 5 * Copyright © 2022 650 Industries. 6 * 7 * This source code is licensed under the MIT license found in the 8 * LICENSE file in the root directory of this source tree. 9 */ 10// Basically `__webpack_require__.l`. 11function fetchThenEvalAsync(url, { scriptType, nonce, crossOrigin, } = {}) { 12 if (typeof document === 'undefined') { 13 return require('./fetchThenEvalJs').fetchThenEvalAsync(url); 14 } 15 return new Promise((resolve, reject) => { 16 const script = document.createElement('script'); 17 if (scriptType) 18 script.type = scriptType; 19 if (nonce) 20 script.setAttribute('nonce', nonce); 21 // script.setAttribute('data-expo-metro', ...); 22 script.src = url; 23 if (crossOrigin && script.src.indexOf(window.location.origin + '/') !== 0) { 24 script.crossOrigin = crossOrigin; 25 } 26 script.onload = () => { 27 script.parentNode && script.parentNode.removeChild(script); 28 resolve(); 29 }; 30 // Create a new error object to preserve the original stack trace. 31 const error = new AsyncRequireError(); 32 // Server error or network error. 33 script.onerror = (ev) => { 34 let event; 35 if (typeof ev === 'string') { 36 event = { 37 type: 'error', 38 target: { 39 // @ts-expect-error 40 src: event, 41 }, 42 }; 43 } 44 else { 45 event = ev; 46 } 47 const errorType = event && (event.type === 'load' ? 'missing' : event.type); 48 // @ts-expect-error 49 const realSrc = event?.target?.src; 50 error.message = 'Loading module ' + url + ' failed.\n(' + errorType + ': ' + realSrc + ')'; 51 error.type = errorType; 52 error.request = realSrc; 53 script.parentNode && script.parentNode.removeChild(script); 54 reject(error); 55 }; 56 document.head.appendChild(script); 57 }); 58} 59exports.fetchThenEvalAsync = fetchThenEvalAsync; 60class AsyncRequireError extends Error { 61 name = 'AsyncRequireError'; 62 type; 63 request; 64} 65//# sourceMappingURL=fetchThenEval.web.js.map