/** * Copyright (c) Meta Platforms, Inc. and 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 * @oncall react_native */ 'use strict'; import type {RamBundleInfo} from '../../DeltaBundler/Serializers/getRamBundleInfo'; import type {OutputOptions, RequestOptions} from '../types.flow'; const Server = require('../../Server'); const asAssets = require('./RamBundle/as-assets'); const asIndexedFile = require('./RamBundle/as-indexed-file').save; async function build( packagerClient: Server, requestOptions: RequestOptions, ): Promise { 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 { // We fork here depending on the platform: while Android is pretty good at // loading individual assets, iOS has a large overhead when reading hundreds // of assets from disk. return options.platform === 'android' && !(options.indexedRamBundle === true) ? asAssets(bundle, options, log) : asIndexedFile(bundle, options, log); } exports.build = build; exports.save = save; exports.formatName = 'bundle';