43 lines
1.8 KiB
JavaScript
43 lines
1.8 KiB
JavaScript
"use strict";
|
|
var _vm = _interopRequireDefault(require("vm"));
|
|
var _index = require("./index");
|
|
var _options = require("./options");
|
|
function _interopRequireDefault(obj) {
|
|
return obj && obj.__esModule ? obj : {
|
|
default: obj
|
|
};
|
|
}
|
|
// Jest use the `vm` [Module API](https://nodejs.org/api/vm.html#vm_class_vm_module) for ESM.
|
|
// see https://github.com/facebook/jest/issues/9430
|
|
const isSupportEsm = "Module" in _vm.default;
|
|
module.exports = {
|
|
createTransformer: (inputOptions)=>({
|
|
process (src, filename, jestOptions) {
|
|
const jestConfig = getJestConfig(jestOptions);
|
|
let swcTransformOpts = (0, _options).getJestSWCOptions({
|
|
// When target is node it's similar to the server option set in SWC.
|
|
isServer: jestConfig.testEnvironment && jestConfig.testEnvironment === "node",
|
|
filename,
|
|
nextConfig: inputOptions.nextConfig,
|
|
jsConfig: inputOptions.jsConfig,
|
|
resolvedBaseUrl: inputOptions.resolvedBaseUrl,
|
|
pagesDir: inputOptions.pagesDir,
|
|
hasServerComponents: inputOptions.hasServerComponents,
|
|
esm: isSupportEsm && isEsm(Boolean(inputOptions.isEsmProject), filename, jestConfig)
|
|
});
|
|
return (0, _index).transformSync(src, {
|
|
...swcTransformOpts,
|
|
filename
|
|
});
|
|
}
|
|
})
|
|
};
|
|
function getJestConfig(jestConfig) {
|
|
return "config" in jestConfig ? jestConfig.config : jestConfig;
|
|
}
|
|
function isEsm(isEsmProject, filename, jestConfig) {
|
|
var ref;
|
|
return /\.jsx?$/.test(filename) && isEsmProject || ((ref = jestConfig.extensionsToTreatAsEsm) == null ? void 0 : ref.find((ext)=>filename.endsWith(ext)));
|
|
}
|
|
|
|
//# sourceMappingURL=jest-transformer.js.map
|