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