in fusion-cli/build/loaders/babel-worker.js [33:126]
async function runTransformation(
source /*: string */,
inputSourceMap /*: Object */,
cacheKey /*: string */,
filename /*: string */,
loaderOptions /*: Object*/,
rootContext /*: Object*/,
sourceMap /*: Object*/
) {
let newOptions = {
...getBabelConfigFromCache(
rootContext,
loaderOptions.configCacheKey,
loaderOptions.babelConfigData
),
overrides: [],
};
if (loaderOptions.overrides != undefined) {
for (let i = 0; i < loaderOptions.overrides.length; i++) {
let override = getBabelConfigFromCache(
rootContext,
loaderOptions.overrideCacheKey,
loaderOptions.overrides[i]
);
//$FlowFixMe
override.test = modulePath => {
if (!JS_EXT_PATTERN.test(modulePath)) {
return false;
}
const experimentalTransformTest = getExperimentalTransformTest(
rootContext
);
const defaultTransform = getTransformDefault(modulePath, rootContext);
const transform = experimentalTransformTest
? experimentalTransformTest(modulePath, defaultTransform)
: defaultTransform;
if (transform === 'none' || transform === 'spec') {
return false;
} else if (transform === 'all') {
return true;
} else {
throw new Error(
`Unexpected value from experimentalTransformTest ${transform}. Expected 'spec' | 'all' | 'none'`
);
}
};
newOptions.overrides.push(override);
}
}
const config = babel.loadPartialConfig({
...newOptions,
filename,
sourceRoot: rootContext,
sourceMap: sourceMap,
inputSourceMap: inputSourceMap || void 0,
sourceFileName: relative(rootContext, filename),
});
const options = config.options;
const cacheDir = path.join(
loaderOptions.dir,
'node_modules/.fusion_babel-cache'
);
const diskCache = getCache(cacheDir);
const result = await diskCache.get(cacheKey, () => {
let metadata = {};
let translationIds = new Set();
// Add the discovery plugin
// This only does side effects, so it is ok this doesn't affect cache key
// This plugin is here because webpack config -> loader options
// requires serialization. But we want to pass translationsIds directly.
options.plugins.unshift([TranslationsExtractor, {translationIds}]);
const transformed = transform(source, options);
if (translationIds.size > 0) {
metadata.translationIds = Array.from(translationIds.values());
}
if (!transformed) {
return null;
}
return {metadata, ...transformed};
});
return result;
}