"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_CDN_HOST = exports.ASSETS_DIR_DEFAULT_URL = void 0; exports.bundleAsync = bundleAsync; function _fsExtra() { const data = _interopRequireDefault(require("fs-extra")); _fsExtra = function () { return data; }; return data; } function _pMap() { const data = _interopRequireDefault(require("p-map")); _pMap = function () { return data; }; return data; } function _pRetry() { const data = _interopRequireDefault(require("p-retry")); _pRetry = function () { return data; }; return data; } function _path() { const data = _interopRequireDefault(require("path")); _path = function () { return data; }; return data; } function _url() { const data = _interopRequireDefault(require("url")); _url = function () { return data; }; return data; } function _urlJoin() { const data = _interopRequireDefault(require("url-join")); _urlJoin = function () { return data; }; return data; } function _internal() { const data = require("../internal"); _internal = function () { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const EXPO_DOMAINS = ['expo.io', 'exp.host', 'expo.test', 'localhost']; const DEFAULT_CDN_HOST = 'https://classic-assets.eascdn.net'; exports.DEFAULT_CDN_HOST = DEFAULT_CDN_HOST; const ASSETS_DIR_DEFAULT_URL = `${DEFAULT_CDN_HOST}/~assets`; exports.ASSETS_DIR_DEFAULT_URL = ASSETS_DIR_DEFAULT_URL; async function bundleAsync(context, assets, dest, exportUrl) { if (!assets) { return; } await _fsExtra().default.ensureDir(dest); const urlResolver = createAssetsUrlResolver(context, exportUrl); await (0, _pMap().default)(assets, asset => downloadAssetAsync(urlResolver, dest, asset), { concurrency: 5 }); } async function downloadAssetAsync(urlResolver, dest, asset) { const extensionIndex = asset.lastIndexOf('.'); const prefixLength = 'asset_'.length; const hash = extensionIndex >= 0 ? asset.substring(prefixLength, extensionIndex) : asset.substring(prefixLength); console.log(urlResolver(hash)); await (0, _pRetry().default)(() => _internal().ExponentTools.saveUrlToPathAsync(urlResolver(hash), _path().default.join(dest, asset)), { retries: 3 }); } function createAssetsUrlResolver(context, exportUrl) { let assetsDirUrl = exportUrl ? `${exportUrl}/assets` : ASSETS_DIR_DEFAULT_URL; if (context && context.published && context.published.url) { const { assetUrlOverride = './assets' } = context.config; const publishedUrl = context.published.url; const { hostname } = _url().default.parse(publishedUrl); if (hostname == null) { throw new Error(`Could not resolve asset URLs relative to "${publishedUrl}". Published URL must be an absolute URL.`); } const maybeExpoDomain = hostname.split('.').slice(-2).join('.'); if (!EXPO_DOMAINS.includes(maybeExpoDomain)) { assetsDirUrl = _url().default.resolve(publishedUrl, assetUrlOverride); } } return hash => (0, _urlJoin().default)(assetsDirUrl, hash); } //# sourceMappingURL=AssetBundle.js.map