scripts/jest/preprocessor.js (51 lines of code) (raw):
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var babel = require('@babel/core');
var createCacheKeyFunction = require('fbjs-scripts/jest/createCacheKeyFunction');
var fbjsConfigurePreset = require('babel-preset-fbjs/configure');
var moduleMap = require('../module-map');
var path = require('path');
module.exports = {
process(src, filename) {
var options = {
presets: [fbjsConfigurePreset({rewriteModules: {map: moduleMap}})],
plugins: [
require('@babel/plugin-proposal-nullish-coalescing-operator'),
require('@babel/plugin-proposal-optional-chaining')
],
filename: filename,
retainLines: true,
};
return babel.transform(src, options).code;
},
getCacheKey: createCacheKeyFunction([
__filename,
path.join(
__dirname,
'..',
'..',
'node_modules',
'fbjs',
'package.json'
),
path.join(
__dirname,
'..',
'..',
'node_modules',
'fbjs-scripts',
'package.json'
),
path.join(
__dirname,
'..',
'..',
'node_modules',
'babel-preset-fbjs',
'package.json'
),
path.join(
__dirname,
'..',
'module-map.js'
),
]),
};