"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.bundleAsync = bundleAsync;
function _lodash() {
const data = _interopRequireDefault(require("lodash"));
_lodash = function () {
return data;
};
return data;
}
function _fsExtra() {
const data = _interopRequireDefault(require("fs-extra"));
_fsExtra = 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 _ExponentTools() {
const data = require("./ExponentTools");
_ExponentTools = 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 ASSETS_DIR_DEFAULT_URL = 'https://d1wp6m56sqw74a.cloudfront.net/~assets';
async function bundleAsync(context, assets, dest) {
if (!assets) {
return;
}
await _fsExtra().default.ensureDir(dest);
const urlResolver = createAssetsUrlResolver(context);
const batches = _lodash().default.chunk(assets, 5);
for (const batch of batches) {
await Promise.all(batch.map(async asset => {
const extensionIndex = asset.lastIndexOf('.');
const prefixLength = 'asset_'.length;
const hash = extensionIndex >= 0 ? asset.substring(prefixLength, extensionIndex) : asset.substring(prefixLength);
await (0, _ExponentTools().saveUrlToPathAsync)(urlResolver(hash), _path().default.join(dest, asset));
}));
}
}
function createAssetsUrlResolver(context) {
let assetsDirUrl = ASSETS_DIR_DEFAULT_URL;
if (context && context.published) {
const {
assetUrlOverride = './assets'
} = context.config;
const publishedUrl = context.published.url;
const {
hostname
} = _url().default.parse(publishedUrl);
const maybeExpoDomain = _lodash().default.takeRight(hostname.split('.'), 2).join('.');
if (!_lodash().default.includes(EXPO_DOMAINS, maybeExpoDomain)) {
assetsDirUrl = _url().default.resolve(publishedUrl, assetUrlOverride);
}
}
return hash => `${assetsDirUrl}/${hash}`;
}
//# sourceMappingURL=../__sourcemaps__/detach/AssetBundle.js.map