in packages/metro/src/lib/transformHelpers.js [31:93]
async function calcTransformerOptions(
entryFiles: $ReadOnlyArray<string>,
bundler: Bundler,
deltaBundler: DeltaBundler<>,
config: ConfigT,
options: TransformInputOptions,
): Promise<TransformOptionsWithRawInlines> {
const baseOptions = {
customTransformOptions: options.customTransformOptions,
dev: options.dev,
hot: options.hot,
inlineRequires: false,
inlinePlatform: true,
minify: options.minify,
platform: options.platform,
runtimeBytecodeVersion: options.runtimeBytecodeVersion,
unstable_transformProfile: options.unstable_transformProfile,
};
// When we're processing scripts, we don't need to calculate any
// inlineRequires information, since scripts by definition don't have
// requires().
if (options.type === 'script') {
return {
...baseOptions,
type: 'script',
};
}
const getDependencies = async (path: string) => {
const dependencies = await deltaBundler.getDependencies([path], {
resolve: await getResolveDependencyFn(bundler, options.platform),
transform: await getTransformFn([path], bundler, deltaBundler, config, {
...options,
minify: false,
}),
transformOptions: options,
onProgress: null,
experimentalImportBundleSupport:
config.transformer.experimentalImportBundleSupport,
shallow: false,
});
return Array.from(dependencies.keys());
};
const {transform} = await config.transformer.getTransformOptions(
entryFiles,
{dev: options.dev, hot: options.hot, platform: options.platform},
getDependencies,
);
return {
...baseOptions,
inlineRequires: transform.inlineRequires || false,
experimentalImportSupport: transform.experimentalImportSupport || false,
unstable_disableES6Transforms:
transform.unstable_disableES6Transforms || false,
nonInlinedRequires:
transform.nonInlinedRequires || baseIgnoredInlineRequires,
type: 'module',
};
}