-
-
Notifications
You must be signed in to change notification settings - Fork 6.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Christopher Roberts
authored and
Christopher Roberts
committed
Feb 17, 2021
1 parent
26efe98
commit ec15331
Showing
649 changed files
with
64,159 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,7 +16,6 @@ | |
|
||
/node_modules | ||
|
||
/packages/*/build/ | ||
/packages/*/coverage/ | ||
/packages/*/node_modules/ | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
/** | ||
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
import { TransformOptions } from '@babel/core'; | ||
import type { Transformer } from '@jest/transform'; | ||
declare const transformer: Transformer<TransformOptions>; | ||
export = transformer; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,292 @@ | ||
'use strict'; | ||
|
||
function _crypto() { | ||
const data = require('crypto'); | ||
|
||
_crypto = function () { | ||
return data; | ||
}; | ||
|
||
return data; | ||
} | ||
|
||
function path() { | ||
const data = _interopRequireWildcard(require('path')); | ||
|
||
path = function () { | ||
return data; | ||
}; | ||
|
||
return data; | ||
} | ||
|
||
function _core() { | ||
const data = require('@babel/core'); | ||
|
||
_core = function () { | ||
return data; | ||
}; | ||
|
||
return data; | ||
} | ||
|
||
function _chalk() { | ||
const data = _interopRequireDefault(require('chalk')); | ||
|
||
_chalk = function () { | ||
return data; | ||
}; | ||
|
||
return data; | ||
} | ||
|
||
function fs() { | ||
const data = _interopRequireWildcard(require('graceful-fs')); | ||
|
||
fs = function () { | ||
return data; | ||
}; | ||
|
||
return data; | ||
} | ||
|
||
function _slash() { | ||
const data = _interopRequireDefault(require('slash')); | ||
|
||
_slash = function () { | ||
return data; | ||
}; | ||
|
||
return data; | ||
} | ||
|
||
var _loadBabelConfig = require('./loadBabelConfig'); | ||
|
||
function _interopRequireDefault(obj) { | ||
return obj && obj.__esModule ? obj : {default: obj}; | ||
} | ||
|
||
function _getRequireWildcardCache() { | ||
if (typeof WeakMap !== 'function') return null; | ||
var cache = new WeakMap(); | ||
_getRequireWildcardCache = function () { | ||
return cache; | ||
}; | ||
return cache; | ||
} | ||
|
||
function _interopRequireWildcard(obj) { | ||
if (obj && obj.__esModule) { | ||
return obj; | ||
} | ||
if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) { | ||
return {default: obj}; | ||
} | ||
var cache = _getRequireWildcardCache(); | ||
if (cache && cache.has(obj)) { | ||
return cache.get(obj); | ||
} | ||
var newObj = {}; | ||
var hasPropertyDescriptor = | ||
Object.defineProperty && Object.getOwnPropertyDescriptor; | ||
for (var key in obj) { | ||
if (Object.prototype.hasOwnProperty.call(obj, key)) { | ||
var desc = hasPropertyDescriptor | ||
? Object.getOwnPropertyDescriptor(obj, key) | ||
: null; | ||
if (desc && (desc.get || desc.set)) { | ||
Object.defineProperty(newObj, key, desc); | ||
} else { | ||
newObj[key] = obj[key]; | ||
} | ||
} | ||
} | ||
newObj.default = obj; | ||
if (cache) { | ||
cache.set(obj, newObj); | ||
} | ||
return newObj; | ||
} | ||
|
||
/** | ||
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
const THIS_FILE = fs().readFileSync(__filename); | ||
|
||
const jestPresetPath = require.resolve('babel-preset-jest'); | ||
|
||
const babelIstanbulPlugin = require.resolve('babel-plugin-istanbul'); | ||
|
||
const createTransformer = userOptions => { | ||
var _inputOptions$plugins, _inputOptions$presets; | ||
|
||
const inputOptions = | ||
userOptions !== null && userOptions !== void 0 ? userOptions : {}; | ||
const options = { | ||
...inputOptions, | ||
caller: { | ||
name: 'babel-jest', | ||
supportsDynamicImport: false, | ||
supportsExportNamespaceFrom: false, | ||
supportsStaticESM: false, | ||
supportsTopLevelAwait: false, | ||
...inputOptions.caller | ||
}, | ||
compact: false, | ||
plugins: | ||
(_inputOptions$plugins = inputOptions.plugins) !== null && | ||
_inputOptions$plugins !== void 0 | ||
? _inputOptions$plugins | ||
: [], | ||
presets: ((_inputOptions$presets = inputOptions.presets) !== null && | ||
_inputOptions$presets !== void 0 | ||
? _inputOptions$presets | ||
: [] | ||
).concat(jestPresetPath), | ||
sourceMaps: 'both' | ||
}; | ||
|
||
function loadBabelConfig(cwd, filename, transformOptions) { | ||
var _transformOptions$sup, | ||
_transformOptions$sup2, | ||
_transformOptions$sup3, | ||
_transformOptions$sup4; | ||
|
||
// `cwd` first to allow incoming options to override it | ||
const babelConfig = (0, _loadBabelConfig.loadPartialConfig)({ | ||
cwd, | ||
...options, | ||
caller: { | ||
...options.caller, | ||
supportsDynamicImport: | ||
(_transformOptions$sup = transformOptions.supportsDynamicImport) !== | ||
null && _transformOptions$sup !== void 0 | ||
? _transformOptions$sup | ||
: options.caller.supportsDynamicImport, | ||
supportsExportNamespaceFrom: | ||
(_transformOptions$sup2 = | ||
transformOptions.supportsExportNamespaceFrom) !== null && | ||
_transformOptions$sup2 !== void 0 | ||
? _transformOptions$sup2 | ||
: options.caller.supportsExportNamespaceFrom, | ||
supportsStaticESM: | ||
(_transformOptions$sup3 = transformOptions.supportsStaticESM) !== | ||
null && _transformOptions$sup3 !== void 0 | ||
? _transformOptions$sup3 | ||
: options.caller.supportsStaticESM, | ||
supportsTopLevelAwait: | ||
(_transformOptions$sup4 = transformOptions.supportsTopLevelAwait) !== | ||
null && _transformOptions$sup4 !== void 0 | ||
? _transformOptions$sup4 | ||
: options.caller.supportsTopLevelAwait | ||
}, | ||
filename | ||
}); | ||
|
||
if (!babelConfig) { | ||
throw new Error( | ||
`babel-jest: Babel ignores ${_chalk().default.bold( | ||
(0, _slash().default)(path().relative(cwd, filename)) | ||
)} - make sure to include the file in Jest's ${_chalk().default.bold( | ||
'transformIgnorePatterns' | ||
)} as well.` | ||
); | ||
} | ||
|
||
return babelConfig; | ||
} | ||
|
||
return { | ||
canInstrument: true, | ||
|
||
getCacheKey(sourceText, sourcePath, transformOptions) { | ||
const {config, configString, instrument} = transformOptions; | ||
const babelOptions = loadBabelConfig( | ||
config.cwd, | ||
sourcePath, | ||
transformOptions | ||
); | ||
const configPath = [ | ||
babelOptions.config || '', | ||
babelOptions.babelrc || '' | ||
]; | ||
return (0, _crypto().createHash)('md5') | ||
.update(THIS_FILE) | ||
.update('\0', 'utf8') | ||
.update(JSON.stringify(babelOptions.options)) | ||
.update('\0', 'utf8') | ||
.update(sourceText) | ||
.update('\0', 'utf8') | ||
.update(path().relative(config.rootDir, sourcePath)) | ||
.update('\0', 'utf8') | ||
.update(configString) | ||
.update('\0', 'utf8') | ||
.update(configPath.join('')) | ||
.update('\0', 'utf8') | ||
.update(instrument ? 'instrument' : '') | ||
.update('\0', 'utf8') | ||
.update(process.env.NODE_ENV || '') | ||
.update('\0', 'utf8') | ||
.update(process.env.BABEL_ENV || '') | ||
.digest('hex'); | ||
}, | ||
|
||
process(sourceText, sourcePath, transformOptions) { | ||
const babelOptions = { | ||
...loadBabelConfig( | ||
transformOptions.config.cwd, | ||
sourcePath, | ||
transformOptions | ||
).options | ||
}; | ||
|
||
if ( | ||
transformOptions !== null && | ||
transformOptions !== void 0 && | ||
transformOptions.instrument | ||
) { | ||
babelOptions.auxiliaryCommentBefore = ' istanbul ignore next '; // Copied from jest-runtime transform.js | ||
|
||
babelOptions.plugins = (babelOptions.plugins || []).concat([ | ||
[ | ||
babelIstanbulPlugin, | ||
{ | ||
// files outside `cwd` will not be instrumented | ||
cwd: transformOptions.config.rootDir, | ||
exclude: [] | ||
} | ||
] | ||
]); | ||
} | ||
|
||
const transformResult = (0, _core().transformSync)( | ||
sourceText, | ||
babelOptions | ||
); | ||
|
||
if (transformResult) { | ||
const {code, map} = transformResult; | ||
|
||
if (typeof code === 'string') { | ||
return { | ||
code, | ||
map | ||
}; | ||
} | ||
} | ||
|
||
return sourceText; | ||
} | ||
}; | ||
}; | ||
|
||
const transformer = { | ||
...createTransformer(), | ||
// Assigned here so only the exported transformer has `createTransformer`, | ||
// instead of all created transformers by the function | ||
createTransformer | ||
}; | ||
module.exports = transformer; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
/** | ||
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
export { loadPartialConfig } from '@babel/core'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
'use strict'; | ||
|
||
Object.defineProperty(exports, '__esModule', { | ||
value: true | ||
}); | ||
Object.defineProperty(exports, 'loadPartialConfig', { | ||
enumerable: true, | ||
get: function () { | ||
return _core().loadPartialConfig; | ||
} | ||
}); | ||
|
||
function _core() { | ||
const data = require('@babel/core'); | ||
|
||
_core = function () { | ||
return data; | ||
}; | ||
|
||
return data; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
/** | ||
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
* | ||
*/ | ||
import type { PluginObj } from '@babel/core'; | ||
import { Identifier } from '@babel/types'; | ||
declare const _default: () => PluginObj<{ | ||
declareJestObjGetterIdentifier: () => Identifier; | ||
jestObjGetterIdentifier?: Identifier; | ||
}>; | ||
export default _default; |
Oops, something went wrong.