1a5fb1ba8SEvan Bacon"use strict"; 2a5fb1ba8SEvan BaconObject.defineProperty(exports, "__esModule", { value: true }); 3a5fb1ba8SEvan Baconexports.fetchThenEvalAsync = void 0; 426ad19fcSEvan Bacon/** 526ad19fcSEvan Bacon * Copyright © 2022 650 Industries. 626ad19fcSEvan Bacon * 726ad19fcSEvan Bacon * This source code is licensed under the MIT license found in the 826ad19fcSEvan Bacon * LICENSE file in the root directory of this source tree. 926ad19fcSEvan Bacon */ 1026ad19fcSEvan Bacon// Basically `__webpack_require__.l`. 11a5fb1ba8SEvan Baconfunction fetchThenEvalAsync(url, { scriptType, nonce, crossOrigin, } = {}) { 1226ad19fcSEvan Bacon if (typeof document === 'undefined') { 13*4a8c0978SEvan Bacon return require('./fetchThenEvalJs').fetchThenEvalAsync(url); 1426ad19fcSEvan Bacon } 1526ad19fcSEvan Bacon return new Promise((resolve, reject) => { 1626ad19fcSEvan Bacon const script = document.createElement('script'); 1726ad19fcSEvan Bacon if (scriptType) 1826ad19fcSEvan Bacon script.type = scriptType; 1926ad19fcSEvan Bacon if (nonce) 2026ad19fcSEvan Bacon script.setAttribute('nonce', nonce); 2126ad19fcSEvan Bacon // script.setAttribute('data-expo-metro', ...); 2226ad19fcSEvan Bacon script.src = url; 2326ad19fcSEvan Bacon if (crossOrigin && script.src.indexOf(window.location.origin + '/') !== 0) { 2426ad19fcSEvan Bacon script.crossOrigin = crossOrigin; 2526ad19fcSEvan Bacon } 2626ad19fcSEvan Bacon script.onload = () => { 2726ad19fcSEvan Bacon script.parentNode && script.parentNode.removeChild(script); 2826ad19fcSEvan Bacon resolve(); 2926ad19fcSEvan Bacon }; 3026ad19fcSEvan Bacon // Create a new error object to preserve the original stack trace. 3126ad19fcSEvan Bacon const error = new AsyncRequireError(); 3226ad19fcSEvan Bacon // Server error or network error. 3326ad19fcSEvan Bacon script.onerror = (ev) => { 3426ad19fcSEvan Bacon let event; 3526ad19fcSEvan Bacon if (typeof ev === 'string') { 3626ad19fcSEvan Bacon event = { 3726ad19fcSEvan Bacon type: 'error', 3826ad19fcSEvan Bacon target: { 3926ad19fcSEvan Bacon // @ts-expect-error 4026ad19fcSEvan Bacon src: event, 4126ad19fcSEvan Bacon }, 4226ad19fcSEvan Bacon }; 4326ad19fcSEvan Bacon } 4426ad19fcSEvan Bacon else { 4526ad19fcSEvan Bacon event = ev; 4626ad19fcSEvan Bacon } 4726ad19fcSEvan Bacon const errorType = event && (event.type === 'load' ? 'missing' : event.type); 4826ad19fcSEvan Bacon // @ts-expect-error 4926ad19fcSEvan Bacon const realSrc = event?.target?.src; 5026ad19fcSEvan Bacon error.message = 'Loading module ' + url + ' failed.\n(' + errorType + ': ' + realSrc + ')'; 5126ad19fcSEvan Bacon error.type = errorType; 5226ad19fcSEvan Bacon error.request = realSrc; 5326ad19fcSEvan Bacon script.parentNode && script.parentNode.removeChild(script); 5426ad19fcSEvan Bacon reject(error); 5526ad19fcSEvan Bacon }; 5626ad19fcSEvan Bacon document.head.appendChild(script); 5726ad19fcSEvan Bacon }); 5826ad19fcSEvan Bacon} 59a5fb1ba8SEvan Baconexports.fetchThenEvalAsync = fetchThenEvalAsync; 6026ad19fcSEvan Baconclass AsyncRequireError extends Error { 6126ad19fcSEvan Bacon name = 'AsyncRequireError'; 6226ad19fcSEvan Bacon type; 6326ad19fcSEvan Bacon request; 6426ad19fcSEvan Bacon} 6526ad19fcSEvan Bacon//# sourceMappingURL=fetchThenEval.web.js.map