You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.1 KiB
102 lines
3.1 KiB
"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
|