/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow strict-local
* @format
*/
'use strict';
const Server = require('../../Server');
const asAssets = require('./RamBundle/as-assets');
const asIndexedFile = require('./RamBundle/as-indexed-file').save;
import type {OutputOptions, RequestOptions} from '../types.flow';
import type {RamBundleInfo} from '../../DeltaBundler/Serializers/getRamBundleInfo';
async function build(
packagerClient: Server,
requestOptions: RequestOptions,
): Promise<RamBundleInfo> {
const options = {
...Server.DEFAULT_BUNDLE_OPTIONS,
...requestOptions,
bundleType: 'ram',
};
return await packagerClient.getRamBundleInfo(options);
}
function save(
bundle: RamBundleInfo,
options: OutputOptions,
log: (x: string) => void,
): Promise<mixed> {
// we fork here depending on the platform:
// while android is pretty good at loading individual assets, ios has a large
// overhead when reading hundreds pf assets from disk
/* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an error
* found when Flow v0.68 was deployed. To see the error delete this comment
* and run Flow. */
return options.platform === 'android' && !options.indexedRamBundle
? asAssets(bundle, options, log)
: asIndexedFile(bundle, options, log);
}
exports.build = build;
exports.save = save;
exports.formatName = 'bundle';