jest-transformer.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. "use strict";
  2. var _vm = _interopRequireDefault(require("vm"));
  3. var _index = require("./index");
  4. var _options = require("./options");
  5. function _interopRequireDefault(obj) {
  6. return obj && obj.__esModule ? obj : {
  7. default: obj
  8. };
  9. }
  10. // Jest use the `vm` [Module API](https://nodejs.org/api/vm.html#vm_class_vm_module) for ESM.
  11. // see https://github.com/facebook/jest/issues/9430
  12. const isSupportEsm = "Module" in _vm.default;
  13. module.exports = {
  14. createTransformer: (inputOptions)=>({
  15. process (src, filename, jestOptions) {
  16. const jestConfig = getJestConfig(jestOptions);
  17. let swcTransformOpts = (0, _options).getJestSWCOptions({
  18. // When target is node it's similar to the server option set in SWC.
  19. isServer: jestConfig.testEnvironment && jestConfig.testEnvironment === "node",
  20. filename,
  21. nextConfig: inputOptions.nextConfig,
  22. jsConfig: inputOptions.jsConfig,
  23. resolvedBaseUrl: inputOptions.resolvedBaseUrl,
  24. pagesDir: inputOptions.pagesDir,
  25. esm: isSupportEsm && isEsm(Boolean(inputOptions.isEsmProject), filename, jestConfig)
  26. });
  27. return (0, _index).transformSync(src, {
  28. ...swcTransformOpts,
  29. filename
  30. });
  31. }
  32. })
  33. };
  34. function getJestConfig(jestConfig) {
  35. return "config" in jestConfig ? jestConfig.config : jestConfig;
  36. }
  37. function isEsm(isEsmProject, filename, jestConfig) {
  38. var ref;
  39. return /\.jsx?$/.test(filename) && isEsmProject || ((ref = jestConfig.extensionsToTreatAsEsm) == null ? void 0 : ref.find((ext)=>filename.endsWith(ext)));
  40. }
  41. //# sourceMappingURL=jest-transformer.js.map