1*a5fb1ba8SEvan Bacon"use strict";
2*a5fb1ba8SEvan BaconObject.defineProperty(exports, "__esModule", { value: true });
3*a5fb1ba8SEvan Baconexports.loadBundleAsync = 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 */
10*a5fb1ba8SEvan Baconconst buildUrlForBundle_1 = require("./buildUrlForBundle");
11*a5fb1ba8SEvan Baconconst fetchThenEval_1 = require("./fetchThenEval");
1226ad19fcSEvan Bacon// import LoadingView from '../LoadingView';
1326ad19fcSEvan Baconlet pendingRequests = 0;
1426ad19fcSEvan Bacon/**
1526ad19fcSEvan Bacon * Load a bundle for a URL using fetch + eval on native and script tag injection on web.
1626ad19fcSEvan Bacon *
1726ad19fcSEvan Bacon * @param bundlePath Given a statement like `import('./Bacon')` `bundlePath` would be `Bacon.bundle?params=from-metro`.
1826ad19fcSEvan Bacon */
19*a5fb1ba8SEvan Baconasync function loadBundleAsync(bundlePath) {
20*a5fb1ba8SEvan Bacon    const requestUrl = (0, buildUrlForBundle_1.buildUrlForBundle)(bundlePath);
2126ad19fcSEvan Bacon    if (process.env.NODE_ENV === 'production') {
22*a5fb1ba8SEvan Bacon        return (0, fetchThenEval_1.fetchThenEvalAsync)(requestUrl);
2326ad19fcSEvan Bacon    }
2426ad19fcSEvan Bacon    else {
2526ad19fcSEvan Bacon        const LoadingView = require('../LoadingView')
2626ad19fcSEvan Bacon            .default;
2726ad19fcSEvan Bacon        // Send a signal to the `expo` package to show the loading indicator.
2826ad19fcSEvan Bacon        LoadingView.showMessage('Downloading...', 'load');
2926ad19fcSEvan Bacon        pendingRequests++;
30*a5fb1ba8SEvan Bacon        return (0, fetchThenEval_1.fetchThenEvalAsync)(requestUrl)
3126ad19fcSEvan Bacon            .then(() => {
3226ad19fcSEvan Bacon            if (process.env.NODE_ENV !== 'production') {
3326ad19fcSEvan Bacon                const HMRClient = require('../HMRClient')
3426ad19fcSEvan Bacon                    .default;
3526ad19fcSEvan Bacon                HMRClient.registerBundle(requestUrl);
3626ad19fcSEvan Bacon            }
3726ad19fcSEvan Bacon        })
3826ad19fcSEvan Bacon            .finally(() => {
3926ad19fcSEvan Bacon            if (!--pendingRequests) {
4026ad19fcSEvan Bacon                LoadingView.hide();
4126ad19fcSEvan Bacon            }
4226ad19fcSEvan Bacon        });
4326ad19fcSEvan Bacon    }
4426ad19fcSEvan Bacon}
45*a5fb1ba8SEvan Baconexports.loadBundleAsync = loadBundleAsync;
4626ad19fcSEvan Bacon//# sourceMappingURL=loadBundle.js.map