PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/metro/src/shared/output

Просмотр файла: bundle.flow.js.flow

/**
 * 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
 * @format
 * @oncall react_native
 */

import type {AssetData} from '../../Assets';
import type {BuildOptions, OutputOptions, RequestOptions} from '../types';
import type {MixedSourceMap} from 'metro-source-map';

import relativizeSourceMapInline from '../../lib/relativizeSourceMap';
import Server from '../../Server';
import writeFile from './writeFile';

const DEFAULTS = Server.DEFAULT_BUNDLE_OPTIONS;

export function build(
  packagerClient: Server,
  requestOptions: RequestOptions,
  buildOptions?: BuildOptions = {},
): Promise<{
  code: string,
  map: string,
  assets?: $ReadOnlyArray<AssetData>,
  ...
}> {
  return packagerClient.build(
    {
      ...DEFAULTS,
      ...requestOptions,
      ...{
        customResolverOptions:
          requestOptions.customResolverOptions ??
          DEFAULTS.customResolverOptions,
        customTransformOptions:
          requestOptions.customTransformOptions ??
          DEFAULTS.customTransformOptions,
        dev: requestOptions.dev ?? DEFAULTS.dev,
        inlineSourceMap:
          requestOptions.inlineSourceMap ?? DEFAULTS.inlineSourceMap,
        unstable_transformProfile:
          requestOptions.unstable_transformProfile ??
          DEFAULTS.unstable_transformProfile,
      },
    },
    buildOptions,
  );
}

function relativateSerializedMap(
  map: string,
  sourceMapSourcesRoot: string,
): string {
  const sourceMap: MixedSourceMap = JSON.parse(map);
  relativizeSourceMapInline(sourceMap, sourceMapSourcesRoot);
  return JSON.stringify(sourceMap);
}

export async function save(
  bundle: {
    code: string,
    map: string,
    ...
  },
  options: OutputOptions,
  log: string => void,
): Promise<mixed> {
  const {
    bundleOutput,
    bundleEncoding: encoding,
    sourcemapOutput,
    sourcemapSourcesRoot,
  } = options;

  const writeFns = [];

  writeFns.push(async () => {
    log(`Writing bundle output to: ${bundleOutput}`);
    await writeFile(bundleOutput, bundle.code, encoding);
    log('Done writing bundle output');
  });

  if (sourcemapOutput) {
    let {map} = bundle;
    if (sourcemapSourcesRoot != null) {
      log('start relativating source map');
      map = relativateSerializedMap(map, sourcemapSourcesRoot);
      log('finished relativating');
    }

    writeFns.push(async () => {
      log(`Writing sourcemap output to: ${sourcemapOutput}`);
      await writeFile(sourcemapOutput, map);
      log('Done writing sourcemap output');
    });
  }

  // Wait until everything is written to disk.
  await Promise.all(writeFns.map((cb: void => mixed) => cb()));
}

export const formatName = 'bundle';

Выполнить команду


Для локальной разработки. Не используйте в интернете!