UNPKG

@expo/metro-config

Version:

A Metro config for running React Native projects with the Metro bundler

57 lines (56 loc) 2.73 kB
/// <reference types="node" /> import * as babylon from '@babel/parser'; import * as t from '@babel/types'; import type { MetroSourceMapSegmentTuple } from 'metro-source-map'; import { JsTransformerConfig, JsTransformOptions } from 'metro-transform-worker'; import { InvalidRequireCallError as InternalInvalidRequireCallError, CollectedDependencies, Options as CollectDependenciesOptions } from './collect-dependencies'; import { ExpoJsOutput } from '../serializer/jsOutput'; export { JsTransformOptions }; interface TransformResponse { readonly dependencies: CollectedDependencies['dependencies']; readonly output: readonly ExpoJsOutput[]; } export declare class InvalidRequireCallError extends Error { innerError: InternalInvalidRequireCallError; filename: string; constructor(innerError: InternalInvalidRequireCallError, filename: string); } export declare const minifyCode: (config: Pick<JsTransformerConfig, 'minifierPath' | 'minifierConfig'>, filename: string, code: string, source: string, map: MetroSourceMapSegmentTuple[], reserved?: string[]) => Promise<{ code: string; map: MetroSourceMapSegmentTuple[]; }>; export declare function applyImportSupport<TFile extends t.File>(ast: TFile, { filename, options, importDefault, importAll, }: { filename: string; options: Pick<JsTransformOptions, 'experimentalImportSupport' | 'inlineRequires' | 'nonInlinedRequires'>; importDefault: string; importAll: string; }): TFile; export declare function transform(config: JsTransformerConfig, projectRoot: string, filename: string, data: Buffer, options: JsTransformOptions): Promise<TransformResponse>; export declare function getCacheKey(config: JsTransformerConfig): string; export declare function collectDependenciesForShaking(ast: babylon.ParseResult<t.File>, options: CollectDependenciesOptions): Readonly<{ ast: babylon.ParseResult<t.File>; dependencyMapName: string; dependencies: readonly Readonly<{ data: Readonly<{ key: string; asyncType: import("./collect-dependencies").AsyncDependencyType | null; isOptional?: boolean | undefined; locs: readonly t.SourceLocation[]; contextParams?: Readonly<{ recursive: boolean; filter: Readonly<Readonly<{ pattern: string; flags: string; }>>; mode: "sync" | "eager" | "lazy" | "lazy-once"; }> | undefined; exportNames: string[]; css?: { url: string; supports: string | null; media: string | null; } | undefined; }>; name: string; }>[]; }>;