ts-jest 26.1.4-alpha.0 → 26.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/.ts-jest-digest +1 -1
  2. package/CHANGELOG.md +60 -0
  3. package/dist/cli/config/migrate.js +1 -1
  4. package/dist/cli/index.js +6 -3
  5. package/dist/compiler/instance.js +1 -1
  6. package/dist/compiler/language-service.js +3 -3
  7. package/dist/compiler/transpiler.js +2 -3
  8. package/dist/config/config-set.d.ts +2 -2
  9. package/dist/config/config-set.js +158 -146
  10. package/dist/config/paths-to-module-name-mapper.d.ts +1 -1
  11. package/dist/config/paths-to-module-name-mapper.js +6 -5
  12. package/dist/index.d.ts +5 -6
  13. package/dist/index.js +5 -5
  14. package/dist/{config → presets}/create-jest-preset.d.ts +3 -2
  15. package/dist/{config → presets}/create-jest-preset.js +1 -1
  16. package/dist/presets/index.d.ts +339 -0
  17. package/dist/presets/index.js +18 -0
  18. package/dist/transformers/hoist-jest.js +59 -10
  19. package/dist/transformers/index.js +20 -1
  20. package/dist/transformers/path-mapping.d.ts +3 -0
  21. package/dist/transformers/path-mapping.js +121 -0
  22. package/dist/ts-jest-transformer.d.ts +3 -3
  23. package/dist/ts-jest-transformer.js +5 -5
  24. package/dist/types.d.ts +12 -49
  25. package/dist/{util → utils}/backports.d.ts +0 -0
  26. package/dist/{util → utils}/backports.js +0 -0
  27. package/dist/{util → utils}/get-package-version.d.ts +0 -0
  28. package/dist/{util → utils}/get-package-version.js +0 -0
  29. package/dist/{util → utils}/importer.d.ts +0 -0
  30. package/dist/{util → utils}/importer.js +0 -0
  31. package/dist/{util/exported.d.ts → utils/index.d.ts} +1 -1
  32. package/dist/{util/exported.js → utils/index.js} +2 -1
  33. package/dist/{util → utils}/json.d.ts +0 -0
  34. package/dist/{util → utils}/json.js +0 -0
  35. package/dist/{util → utils}/jsonable-value.d.ts +0 -0
  36. package/dist/{util → utils}/jsonable-value.js +0 -0
  37. package/dist/{util → utils}/logger.d.ts +0 -0
  38. package/dist/{util → utils}/logger.js +0 -0
  39. package/dist/{util → utils}/memoize.d.ts +0 -0
  40. package/dist/{util → utils}/memoize.js +0 -0
  41. package/dist/{util → utils}/messages.d.ts +0 -0
  42. package/dist/{util → utils}/messages.js +0 -0
  43. package/dist/{util → utils}/normalize-slashes.d.ts +0 -0
  44. package/dist/{util → utils}/normalize-slashes.js +0 -0
  45. package/dist/{util → utils}/sha1.d.ts +0 -0
  46. package/dist/{util → utils}/sha1.js +0 -0
  47. package/dist/{util → utils}/testing.d.ts +0 -0
  48. package/dist/{util → utils}/testing.js +0 -0
  49. package/dist/{util → utils}/ts-error.d.ts +0 -0
  50. package/dist/{util → utils}/ts-error.js +1 -1
  51. package/dist/{util → utils}/version-checkers.d.ts +0 -0
  52. package/dist/{util → utils}/version-checkers.js +23 -20
  53. package/jest-preset.js +1 -1
  54. package/package.json +11 -11
  55. package/presets/index.js +1 -20
  56. package/utils/index.d.ts +1 -1
  57. package/utils/index.js +1 -1
  58. package/jest-base.js +0 -12
  59. package/presets/create.js +0 -1
  60. package/presets/index.d.ts +0 -5
  61. package/tsconfig.spec.json +0 -4
package/.ts-jest-digest CHANGED
@@ -1 +1 @@
1
- a934b5392afb4df2914fcf08793c5377e5a34013
1
+ 19be30d21d2602243c1d945aa28bbcafd047e1fb
package/CHANGELOG.md CHANGED
@@ -1,3 +1,63 @@
1
+ # [26.4.0](https://github.com/kulshekhar/ts-jest/compare/v26.3.0...v26.4.0) (2020-09-20)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **utils:** `pathsToModuleNameMapper` resolve path mapping with `path.join` ([#1969](https://github.com/kulshekhar/ts-jest/issues/1969)) ([81fce4c](https://github.com/kulshekhar/ts-jest/commit/81fce4c090811a1cc071579a99dc193fb976b117)), closes [#1968](https://github.com/kulshekhar/ts-jest/issues/1968)
7
+ * set minimum `jest-util` version at 26.1.0 ([#1914](https://github.com/kulshekhar/ts-jest/issues/1914)) ([f00414c](https://github.com/kulshekhar/ts-jest/commit/f00414c6fbf8fc5413fd33d0a271c4a164c50d45)), closes [#1913](https://github.com/kulshekhar/ts-jest/issues/1913)
8
+
9
+
10
+ ### Features
11
+
12
+ * **config:** allow custom options in custom transformers ([#1966](https://github.com/kulshekhar/ts-jest/issues/1966)) ([1452ce4](https://github.com/kulshekhar/ts-jest/commit/1452ce4afcd36049cddd0db0861f1ac26b66f8c1)), closes [#1942](https://github.com/kulshekhar/ts-jest/issues/1942)
13
+ * **transformers:** support hoisting when using `@jest/globals` ([#1937](https://github.com/kulshekhar/ts-jest/issues/1937)) ([0e5be15](https://github.com/kulshekhar/ts-jest/commit/0e5be1597d755fed11869f67df05eeea54b3106f)), closes [#1593](https://github.com/kulshekhar/ts-jest/issues/1593)
14
+ * **transformers:** add `path-mapping` custom AST transformer ([#1927](https://github.com/kulshekhar/ts-jest/issues/1927)) ([3325186](https://github.com/kulshekhar/ts-jest/commit/3325186b6e55f41eb9bf7d81e092a358fc402b13))
15
+
16
+
17
+ ### Performance Improvements
18
+
19
+ * **compiler:** remove `createProgram` for `isolatedModules: true` to boost startup speed ([#1941](https://github.com/kulshekhar/ts-jest/issues/1941)) ([dd84534](https://github.com/kulshekhar/ts-jest/commit/dd8453401840862186f991e2d514e0d328a67987))
20
+
21
+
22
+
23
+ # [26.3.0](https://github.com/kulshekhar/ts-jest/compare/v26.2.0...v26.3.0) (2020-08-25)
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * **config:** compute cache key without reading `package.json` ([#1893](https://github.com/kulshekhar/ts-jest/issues/1893)) ([4875a58](https://github.com/kulshekhar/ts-jest/commit/4875a58345666e0407f9f5b3f95049ae2c9d056d)), closes [#1892](https://github.com/kulshekhar/ts-jest/issues/1892)
29
+
30
+
31
+ ### Features
32
+
33
+ * support TypeScript 4.0 ([#1889](https://github.com/kulshekhar/ts-jest/issues/1889)) ([f070e93](https://github.com/kulshekhar/ts-jest/commit/f070e9334a9cf31fa6f0d73b3f69d805be72601d))
34
+
35
+
36
+
37
+ # [26.2.0](https://github.com/kulshekhar/ts-jest/compare/v26.1.4...v26.2.0) (2020-08-11)
38
+
39
+
40
+ ### Bug Fixes
41
+
42
+ * move `@types/jest` to dependencies to work well with yarn 2 ([#1859](https://github.com/kulshekhar/ts-jest/issues/1859)) ([5eb1389](https://github.com/kulshekhar/ts-jest/commit/5eb1389caaa0431e49ae6ca26b18e290208e0a0a)), closes [#1857](https://github.com/kulshekhar/ts-jest/issues/1857)
43
+
44
+
45
+ ### Features
46
+
47
+ * **config:** support `after` and `afterDeclarations` AST transformers ([#1831](https://github.com/kulshekhar/ts-jest/issues/1831)) ([be20a7c](https://github.com/kulshekhar/ts-jest/commit/be20a7c78c97027b33aec178da0f533095790871))
48
+ * allow opt-out version warning message by environment variable `TS_JEST_DISABLE_VER_CHECKER` ([#1821](https://github.com/kulshekhar/ts-jest/issues/1821)) ([e6b42fc](https://github.com/kulshekhar/ts-jest/commit/e6b42fcd7a75c7b14e636a45cda04de18a46908b)), closes [#1774](https://github.com/kulshekhar/ts-jest/issues/1774)
49
+
50
+
51
+
52
+ ## [26.1.4](https://github.com/kulshekhar/ts-jest/compare/v26.1.3...v26.1.4) (2020-07-28)
53
+
54
+
55
+ ### Bug Fixes
56
+
57
+ * **compiler:** check if test file exists before doing type check ([#1827](https://github.com/kulshekhar/ts-jest/issues/1827)) ([cc89d5b](https://github.com/kulshekhar/ts-jest/commit/cc89d5b1f912975cd29114c5b3b0bf18426816da)), closes [#1506](https://github.com/kulshekhar/ts-jest/issues/1506)
58
+
59
+
60
+
1
61
  ## [26.1.3](https://github.com/kulshekhar/ts-jest/compare/v26.1.2...v26.1.3) (2020-07-16)
2
62
 
3
63
 
@@ -62,7 +62,7 @@ var stableStringify = require("fast-json-stable-stringify");
62
62
  var fs_1 = require("fs");
63
63
  var json5_1 = require("json5");
64
64
  var path_1 = require("path");
65
- var backports_1 = require("../../util/backports");
65
+ var backports_1 = require("../../utils/backports");
66
66
  var presets_1 = require("../helpers/presets");
67
67
  exports.run = function (args) { return __awaiter(void 0, void 0, void 0, function () {
68
68
  var nullLogger, file, filePath, footNotes, name, isPackage, actualConfig, migratedConfig, presetName, preset, jsTransformers, jsWithTs, jsWithBabel, presetValue, migratedValue, presetValue, migratedValue, before, after, stringify, prefix;
package/dist/cli/index.js CHANGED
@@ -35,19 +35,22 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
36
  }
37
37
  };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
38
41
  var _a;
39
42
  Object.defineProperty(exports, "__esModule", { value: true });
40
43
  exports.processArgv = void 0;
41
44
  var bs_logger_1 = require("bs-logger");
42
- var yargsParser = require("yargs-parser");
43
- var logger_1 = require("../util/logger");
45
+ var yargs_parser_1 = __importDefault(require("yargs-parser"));
46
+ var logger_1 = require("../utils/logger");
44
47
  var VALID_COMMANDS = ['help', 'config:migrate', 'config:init'];
45
48
  var logger = logger_1.rootLogger.child((_a = {}, _a[bs_logger_1.LogContexts.namespace] = 'cli', _a[bs_logger_1.LogContexts.application] = 'ts-jest', _a));
46
49
  function cli(args) {
47
50
  return __awaiter(this, void 0, void 0, function () {
48
51
  var parsedArgv, command, isHelp, _a, run, help, cmd;
49
52
  return __generator(this, function (_b) {
50
- parsedArgv = yargsParser(args, {
53
+ parsedArgv = yargs_parser_1.default(args, {
51
54
  boolean: ['dry-run', 'jest-preset', 'allow-js', 'diff', 'babel', 'force', 'jsdom'],
52
55
  string: ['tsconfig', 'js'],
53
56
  count: ['verbose'],
@@ -19,7 +19,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.createCompilerInstance = void 0;
20
20
  var language_service_1 = require("./language-service");
21
21
  var transpiler_1 = require("./transpiler");
22
- var json_1 = require("../util/json");
22
+ var json_1 = require("../utils/json");
23
23
  var SOURCE_MAPPING_PREFIX = 'sourceMappingURL=';
24
24
  function updateOutput(outputText, normalizedFileName, sourceMap) {
25
25
  var base64Map = Buffer.from(updateSourceMap(sourceMap, normalizedFileName), 'utf8').toString('base64');
@@ -85,9 +85,9 @@ var path_1 = require("path");
85
85
  var memoize = require("lodash.memoize");
86
86
  var mkdirp = require("mkdirp");
87
87
  var constants_1 = require("../constants");
88
- var messages_1 = require("../util/messages");
89
- var json_1 = require("../util/json");
90
- var sha1_1 = require("../util/sha1");
88
+ var messages_1 = require("../utils/messages");
89
+ var json_1 = require("../utils/json");
90
+ var sha1_1 = require("../utils/sha1");
91
91
  function doTypeChecking(configs, diagnosedFiles, fileName, service, logger) {
92
92
  if (configs.shouldReportDiagnostic(fileName)) {
93
93
  var diagnostics = service.getSemanticDiagnostics(fileName).concat(service.getSyntacticDiagnostics(fileName));
@@ -3,9 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.initializeTranspilerInstance = void 0;
4
4
  exports.initializeTranspilerInstance = function (configs, logger) {
5
5
  logger.debug('initializeTranspilerInstance(): create typescript compiler');
6
- var _a = configs.parsedTsConfig, options = _a.options, fileNames = _a.fileNames;
6
+ var options = configs.parsedTsConfig.options;
7
7
  var ts = configs.compilerModule;
8
- var program = ts.createProgram(fileNames, options);
9
8
  return {
10
9
  compileFn: function (code, fileName) {
11
10
  logger.debug({ fileName: fileName }, 'compileFn(): compiling as isolated module');
@@ -20,6 +19,6 @@ exports.initializeTranspilerInstance = function (configs, logger) {
20
19
  }
21
20
  return [result.outputText, result.sourceMapText];
22
21
  },
23
- program: program,
22
+ program: undefined,
24
23
  };
25
24
  };
@@ -1,6 +1,6 @@
1
- import { Config } from '@jest/types';
1
+ import type { Config } from '@jest/types';
2
2
  import { Logger } from 'bs-logger';
3
- import { TsCompiler, TsJestGlobalOptions, TTypeScript } from '../types';
3
+ import type { TsCompiler, TsJestGlobalOptions, TTypeScript } from '../types';
4
4
  export declare class ConfigSet {
5
5
  readonly parentOptions?: TsJestGlobalOptions | undefined;
6
6
  get versions(): Record<string, string>;
@@ -49,7 +49,7 @@ var __spread = (this && this.__spread) || function () {
49
49
  };
50
50
  var _a;
51
51
  Object.defineProperty(exports, "__esModule", { value: true });
52
- exports.ConfigSet = exports.TS_JEST_OUT_DIR = exports.IGNORE_DIAGNOSTIC_CODES = exports.MATCH_NOTHING = void 0;
52
+ exports.ConfigSet = exports.TS_JEST_OUT_DIR = exports.IGNORE_DIAGNOSTIC_CODES = void 0;
53
53
  var bs_logger_1 = require("bs-logger");
54
54
  var fs_1 = require("fs");
55
55
  var jest_util_1 = require("jest-util");
@@ -60,19 +60,18 @@ var __1 = require("..");
60
60
  var instance_1 = require("../compiler/instance");
61
61
  var constants_1 = require("../constants");
62
62
  var transformers_1 = require("../transformers");
63
- var backports_1 = require("../util/backports");
64
- var get_package_version_1 = require("../util/get-package-version");
65
- var importer_1 = require("../util/importer");
66
- var json_1 = require("../util/json");
67
- var jsonable_value_1 = require("../util/jsonable-value");
68
- var logger_1 = require("../util/logger");
69
- var memoize_1 = require("../util/memoize");
70
- var messages_1 = require("../util/messages");
71
- var normalize_slashes_1 = require("../util/normalize-slashes");
72
- var sha1_1 = require("../util/sha1");
73
- var ts_error_1 = require("../util/ts-error");
63
+ var backports_1 = require("../utils/backports");
64
+ var get_package_version_1 = require("../utils/get-package-version");
65
+ var importer_1 = require("../utils/importer");
66
+ var json_1 = require("../utils/json");
67
+ var jsonable_value_1 = require("../utils/jsonable-value");
68
+ var logger_1 = require("../utils/logger");
69
+ var memoize_1 = require("../utils/memoize");
70
+ var messages_1 = require("../utils/messages");
71
+ var normalize_slashes_1 = require("../utils/normalize-slashes");
72
+ var sha1_1 = require("../utils/sha1");
73
+ var ts_error_1 = require("../utils/ts-error");
74
74
  var logger = logger_1.rootLogger.child({ namespace: 'config' });
75
- exports.MATCH_NOTHING = /a^/;
76
75
  exports.IGNORE_DIAGNOSTIC_CODES = [
77
76
  6059,
78
77
  18002,
@@ -88,24 +87,14 @@ var TARGET_TO_VERSION_MAPPING = (_a = {},
88
87
  var normalizeRegex = function (pattern) {
89
88
  return pattern ? (typeof pattern === 'string' ? pattern : pattern.source) : undefined;
90
89
  };
91
- var toDiagnosticCode = function (code) {
92
- return code ? parseInt(("" + code).trim().replace(/^TS/, ''), 10) || undefined : undefined;
93
- };
90
+ var toDiagnosticCode = function (code) { var _a; return code ? (_a = parseInt(("" + code).trim().replace(/^TS/, ''), 10)) !== null && _a !== void 0 ? _a : undefined : undefined; };
94
91
  var toDiagnosticCodeList = function (items, into) {
95
92
  var e_1, _a;
96
93
  if (into === void 0) { into = []; }
97
- if (!Array.isArray(items))
98
- items = [items];
99
94
  try {
100
95
  for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {
101
96
  var item = items_1_1.value;
102
- if (!item)
103
- continue;
104
- if (Array.isArray(item)) {
105
- toDiagnosticCodeList(item, into);
106
- continue;
107
- }
108
- else if (typeof item === 'string') {
97
+ if (typeof item === 'string') {
109
98
  var children = item.trim().split(/\s*,\s*/g);
110
99
  if (children.length > 1) {
111
100
  toDiagnosticCodeList(children, into);
@@ -136,57 +125,12 @@ var ConfigSet = (function () {
136
125
  this._jestConfig = jestConfig;
137
126
  this.logger = parentLogger ? parentLogger.child((_a = {}, _a[bs_logger_1.LogContexts.namespace] = 'config', _a)) : logger;
138
127
  }
139
- Object.defineProperty(ConfigSet.prototype, "projectPackageJson", {
140
- get: function () {
141
- var packageJson = this.tsJest.packageJson;
142
- if (packageJson && packageJson.kind === 'inline') {
143
- return packageJson.value;
144
- }
145
- if (packageJson && packageJson.kind === 'file' && packageJson.value) {
146
- var path = this.resolvePath(packageJson.value);
147
- if (fs_1.existsSync(path)) {
148
- return require(path);
149
- }
150
- this.logger.warn("Unable to find the root of the project where ts-jest has been installed.");
151
- return {};
152
- }
153
- var tsJestRoot = path_1.resolve(__dirname, '..', '..');
154
- var pkgPath = path_1.resolve(tsJestRoot, '..', '..', 'package.json');
155
- if (fs_1.existsSync(pkgPath)) {
156
- return require(pkgPath);
157
- }
158
- if (fs_1.realpathSync(this.rootDir) === fs_1.realpathSync(tsJestRoot)) {
159
- pkgPath = path_1.resolve(tsJestRoot, 'package.json');
160
- if (fs_1.existsSync(pkgPath)) {
161
- return require(pkgPath);
162
- }
163
- }
164
- this.logger.warn("Unable to find the root of the project where ts-jest has been installed.");
165
- return {};
166
- },
167
- enumerable: false,
168
- configurable: true
169
- });
170
- Object.defineProperty(ConfigSet.prototype, "projectDependencies", {
171
- get: function () {
172
- var pkg = this.projectPackageJson;
173
- var names = Object.keys(__assign(__assign(__assign(__assign({}, pkg.optionalDependencies), pkg.peerDependencies), pkg.devDependencies), pkg.dependencies));
174
- return names.reduce(function (map, name) {
175
- var version = get_package_version_1.getPackageVersion(name);
176
- if (version)
177
- map[name] = version;
178
- return map;
179
- }, {});
180
- },
181
- enumerable: false,
182
- configurable: true
183
- });
184
128
  Object.defineProperty(ConfigSet.prototype, "jest", {
185
129
  get: function () {
186
130
  var _a;
187
131
  var config = backports_1.backportJestConfig(this.logger, this._jestConfig);
188
132
  if (this.parentOptions) {
189
- var globals = (_a = config.globals) !== null && _a !== void 0 ? _a : {};
133
+ var globals = (_a = config.globals) !== null && _a !== void 0 ? _a : Object.create(null);
190
134
  globals['ts-jest'] = __assign(__assign({}, this.parentOptions), globals['ts-jest']);
191
135
  }
192
136
  this.logger.debug({ jestConfig: config }, 'normalized jest config');
@@ -215,77 +159,78 @@ var ConfigSet = (function () {
215
159
  Object.defineProperty(ConfigSet.prototype, "tsJest", {
216
160
  get: function () {
217
161
  var _this = this;
218
- var _a, _b, _c;
162
+ var _a, _b, _c, _d, _e, _f;
219
163
  var parsedConfig = this.jest;
220
- var _d = parsedConfig.globals, globals = _d === void 0 ? {} : _d;
164
+ var _g = parsedConfig.globals, globals = _g === void 0 ? {} : _g;
221
165
  var options = __assign({}, globals['ts-jest']);
222
- var tsConfigOpt = (_b = (_a = options.tsConfig) !== null && _a !== void 0 ? _a : options.tsconfig) !== null && _b !== void 0 ? _b : true;
223
- var tsConfig;
224
- if (typeof tsConfigOpt === 'string' || tsConfigOpt === true) {
225
- tsConfig = {
226
- kind: 'file',
227
- value: typeof tsConfigOpt === 'string' ? this.resolvePath(tsConfigOpt) : undefined,
228
- };
229
- }
230
- else if (typeof tsConfigOpt === 'object') {
231
- tsConfig = {
232
- kind: 'inline',
233
- value: tsConfigOpt,
234
- };
235
- }
236
- var packageJsonOpt = options.packageJson;
237
- var packageJson;
238
- if (typeof packageJsonOpt === 'string' || packageJsonOpt == null || packageJsonOpt === true) {
239
- packageJson = {
240
- kind: 'file',
241
- value: typeof packageJsonOpt === 'string' ? this.resolvePath(packageJsonOpt) : undefined,
242
- };
243
- }
244
- else if (typeof packageJsonOpt === 'object') {
245
- packageJson = {
246
- kind: 'inline',
247
- value: packageJsonOpt,
248
- };
249
- }
250
- var transformers = (options.astTransformers || []).map(function (mod) { return _this.resolvePath(mod, { nodeResolve: true }); });
251
- var babelConfigOpt = options.babelConfig;
252
- var babelConfig;
253
- if (typeof babelConfigOpt === 'string' || babelConfigOpt === true) {
254
- babelConfig = {
255
- kind: 'file',
256
- value: babelConfigOpt === true ? undefined : this.resolvePath(babelConfigOpt),
257
- };
258
- }
259
- else if (babelConfigOpt) {
260
- babelConfig = {
261
- kind: 'inline',
262
- value: babelConfigOpt,
263
- };
166
+ var tsConfig = this.getInlineOrFileConfigOpt((_b = (_a = options.tsConfig) !== null && _a !== void 0 ? _a : options.tsconfig) !== null && _b !== void 0 ? _b : true);
167
+ var packageJson = this.getInlineOrFileConfigOpt((_c = options.packageJson) !== null && _c !== void 0 ? _c : true);
168
+ var transformers = Object.create(null);
169
+ var astTransformers = options.astTransformers;
170
+ if (astTransformers) {
171
+ if (Array.isArray(astTransformers)) {
172
+ this.logger.warn("The configuration for astTransformers as string[] is deprecated and will be removed in ts-jest 27. Please define your custom AST transformers in a form of an object. More information you can check online documentation https://kulshekhar.github.io/ts-jest/user/config/astTransformers");
173
+ transformers = {
174
+ before: astTransformers.map(function (transformerPath) { return ({
175
+ path: _this.resolvePath(transformerPath, { nodeResolve: true }),
176
+ }); }),
177
+ };
178
+ }
179
+ else {
180
+ if (astTransformers.before) {
181
+ transformers = {
182
+ before: astTransformers.before.map(function (transformer) {
183
+ return typeof transformer === 'string'
184
+ ? {
185
+ path: _this.resolvePath(transformer, { nodeResolve: true }),
186
+ }
187
+ : __assign(__assign({}, transformer), { path: _this.resolvePath(transformer.path, { nodeResolve: true }) });
188
+ }),
189
+ };
190
+ }
191
+ if (astTransformers.after) {
192
+ transformers = __assign(__assign({}, transformers), { after: astTransformers.after.map(function (transformer) {
193
+ return typeof transformer === 'string'
194
+ ? {
195
+ path: _this.resolvePath(transformer, { nodeResolve: true }),
196
+ }
197
+ : __assign(__assign({}, transformer), { path: _this.resolvePath(transformer.path, { nodeResolve: true }) });
198
+ }) });
199
+ }
200
+ if (astTransformers.afterDeclarations) {
201
+ transformers = __assign(__assign({}, transformers), { afterDeclarations: astTransformers.afterDeclarations.map(function (transformer) {
202
+ return typeof transformer === 'string'
203
+ ? {
204
+ path: _this.resolvePath(transformer, { nodeResolve: true }),
205
+ }
206
+ : __assign(__assign({}, transformer), { path: _this.resolvePath(transformer.path, { nodeResolve: true }) });
207
+ }) });
208
+ }
209
+ }
264
210
  }
211
+ var babelConfig = this.getInlineOrFileConfigOpt(options.babelConfig);
265
212
  var diagnostics;
266
- var _e = options.diagnostics, diagnosticsOpt = _e === void 0 ? true : _e;
267
- var ignoreList = [exports.IGNORE_DIAGNOSTIC_CODES, process.env.TS_JEST_IGNORE_DIAGNOSTICS];
268
- if (diagnosticsOpt === true || diagnosticsOpt == null) {
269
- diagnostics = { ignoreCodes: [], pretty: true, throws: true };
270
- }
271
- else if (diagnosticsOpt === false) {
213
+ var diagnosticsOpt = (_d = options.diagnostics) !== null && _d !== void 0 ? _d : true;
214
+ var ignoreList = __spread(exports.IGNORE_DIAGNOSTIC_CODES);
215
+ if (typeof diagnosticsOpt === 'object') {
216
+ var ignoreCodes = diagnosticsOpt.ignoreCodes;
217
+ if (ignoreCodes) {
218
+ Array.isArray(ignoreCodes) ? ignoreList.push.apply(ignoreList, __spread(ignoreCodes)) : ignoreList.push(ignoreCodes);
219
+ }
272
220
  diagnostics = {
273
- throws: false,
274
- pretty: true,
275
- ignoreCodes: [],
276
- pathRegex: exports.MATCH_NOTHING.source,
221
+ pretty: (_e = diagnosticsOpt.pretty) !== null && _e !== void 0 ? _e : true,
222
+ ignoreCodes: toDiagnosticCodeList(ignoreList),
223
+ pathRegex: normalizeRegex(diagnosticsOpt.pathRegex),
224
+ throws: !diagnosticsOpt.warnOnly,
277
225
  };
278
226
  }
279
227
  else {
280
- ignoreList.push(diagnosticsOpt.ignoreCodes);
281
228
  diagnostics = {
282
- pretty: diagnosticsOpt.pretty == null ? true : !!diagnosticsOpt.pretty,
283
- ignoreCodes: [],
284
- pathRegex: normalizeRegex(diagnosticsOpt.pathRegex),
285
- throws: !diagnosticsOpt.warnOnly,
229
+ ignoreCodes: diagnosticsOpt ? toDiagnosticCodeList(ignoreList) : [],
230
+ pretty: true,
231
+ throws: diagnosticsOpt,
286
232
  };
287
233
  }
288
- diagnostics.ignoreCodes = toDiagnosticCodeList(ignoreList);
289
234
  var stringifyContentPathRegex = normalizeRegex(options.stringifyContentPathRegex);
290
235
  var res = {
291
236
  tsConfig: tsConfig,
@@ -293,7 +238,7 @@ var ConfigSet = (function () {
293
238
  babelConfig: babelConfig,
294
239
  diagnostics: diagnostics,
295
240
  isolatedModules: !!options.isolatedModules,
296
- compiler: (_c = options.compiler) !== null && _c !== void 0 ? _c : 'typescript',
241
+ compiler: (_f = options.compiler) !== null && _f !== void 0 ? _f : 'typescript',
297
242
  transformers: transformers,
298
243
  stringifyContentPathRegex: stringifyContentPathRegex,
299
244
  };
@@ -411,7 +356,51 @@ var ConfigSet = (function () {
411
356
  });
412
357
  Object.defineProperty(ConfigSet.prototype, "astTransformers", {
413
358
  get: function () {
414
- return __spread(transformers_1.internals, this.tsJest.transformers.map(function (m) { return require(m); }));
359
+ var astTransformers = {
360
+ before: __spread(transformers_1.internals.map(function (transformer) { return ({
361
+ transformModule: transformer,
362
+ }); })),
363
+ };
364
+ var transformers = this.tsJest.transformers;
365
+ if (transformers.before) {
366
+ astTransformers = {
367
+ before: __spread(astTransformers.before, transformers.before.map(function (transformer) {
368
+ return typeof transformer === 'string'
369
+ ? {
370
+ transformModule: require(transformer),
371
+ }
372
+ : {
373
+ transformModule: require(transformer.path),
374
+ options: transformer.options,
375
+ };
376
+ })),
377
+ };
378
+ }
379
+ if (transformers.after) {
380
+ astTransformers = __assign(__assign({}, astTransformers), { after: transformers.after.map(function (transformer) {
381
+ return typeof transformer === 'string'
382
+ ? {
383
+ transformModule: require(transformer),
384
+ }
385
+ : {
386
+ transformModule: require(transformer.path),
387
+ options: transformer.options,
388
+ };
389
+ }) });
390
+ }
391
+ if (transformers.afterDeclarations) {
392
+ astTransformers = __assign(__assign({}, astTransformers), { afterDeclarations: transformers.afterDeclarations.map(function (transformer) {
393
+ return typeof transformer === 'string'
394
+ ? {
395
+ transformModule: require(transformer),
396
+ }
397
+ : {
398
+ transformModule: require(transformer.path),
399
+ options: transformer.options,
400
+ };
401
+ }) });
402
+ }
403
+ return astTransformers;
415
404
  },
416
405
  enumerable: false,
417
406
  configurable: true
@@ -419,9 +408,18 @@ var ConfigSet = (function () {
419
408
  Object.defineProperty(ConfigSet.prototype, "tsCustomTransformers", {
420
409
  get: function () {
421
410
  var _this = this;
422
- return {
423
- before: this.astTransformers.map(function (t) { return t.factory(_this); }),
411
+ var customTransformers = {
412
+ before: this.astTransformers.before.map(function (t) { return t.transformModule.factory(_this, t.options); }),
424
413
  };
414
+ if (this.astTransformers.after) {
415
+ customTransformers = __assign(__assign({}, customTransformers), { after: this.astTransformers.after.map(function (t) { return t.transformModule.factory(_this, t.options); }) });
416
+ }
417
+ if (this.astTransformers.afterDeclarations) {
418
+ customTransformers = __assign(__assign({}, customTransformers), { afterDeclarations: this.astTransformers.afterDeclarations.map(function (t) {
419
+ return t.transformModule.factory(_this, t.options);
420
+ }) });
421
+ }
422
+ return customTransformers;
425
423
  },
426
424
  enumerable: false,
427
425
  configurable: true
@@ -514,7 +512,6 @@ var ConfigSet = (function () {
514
512
  var cacheSuffix = sha1_1.sha1(json_1.stringify({
515
513
  version: this.compilerModule.version,
516
514
  digest: this.tsJestDigest,
517
- dependencies: this.projectDependencies,
518
515
  compiler: this.tsJest.compiler,
519
516
  compilerOptions: this.parsedTsConfig.options,
520
517
  isolatedModules: this.tsJest.isolatedModules,
@@ -578,14 +575,17 @@ var ConfigSet = (function () {
578
575
  get: function () {
579
576
  var jest = __assign({}, this.jest);
580
577
  var globals = (jest.globals = __assign({}, jest.globals));
581
- delete jest.name;
582
- delete jest.cacheDirectory;
578
+ jest.name = undefined;
579
+ jest.cacheDirectory = undefined;
583
580
  delete globals['ts-jest'];
584
581
  return new jsonable_value_1.JsonableValue({
585
- versions: this.versions,
586
- projectDepVersions: this.projectDependencies,
587
582
  digest: this.tsJestDigest,
588
- transformers: this.astTransformers.map(function (t) { return t.name + "@" + t.version; }),
583
+ transformers: Object.values(this.astTransformers)
584
+ .reduce(function (acc, val) { return acc.concat(val); }, [])
585
+ .map(function (_a) {
586
+ var transformModule = _a.transformModule;
587
+ return transformModule.name + "@" + transformModule.version;
588
+ }),
589
589
  jest: jest,
590
590
  tsJest: this.tsJest,
591
591
  babel: this.babel,
@@ -617,6 +617,21 @@ var ConfigSet = (function () {
617
617
  length: length,
618
618
  };
619
619
  };
620
+ ConfigSet.prototype.getInlineOrFileConfigOpt = function (configOpt) {
621
+ if (typeof configOpt === 'string' || configOpt === true) {
622
+ return {
623
+ kind: 'file',
624
+ value: typeof configOpt === 'string' ? this.resolvePath(configOpt) : undefined,
625
+ };
626
+ }
627
+ else if (typeof configOpt === 'object') {
628
+ return {
629
+ kind: 'inline',
630
+ value: configOpt,
631
+ };
632
+ }
633
+ return;
634
+ };
620
635
  ConfigSet.prototype.readTsConfig = function (compilerOptions, resolvedConfigFile, noProject) {
621
636
  var e_2, _a;
622
637
  var _b;
@@ -732,13 +747,10 @@ var ConfigSet = (function () {
732
747
  };
733
748
  __decorate([
734
749
  memoize_1.Memoize()
735
- ], ConfigSet.prototype, "projectPackageJson", null);
736
- __decorate([
737
- memoize_1.Memoize()
738
- ], ConfigSet.prototype, "projectDependencies", null);
750
+ ], ConfigSet.prototype, "jest", null);
739
751
  __decorate([
740
752
  memoize_1.Memoize()
741
- ], ConfigSet.prototype, "jest", null);
753
+ ], ConfigSet.prototype, "isTestFile", null);
742
754
  __decorate([
743
755
  memoize_1.Memoize()
744
756
  ], ConfigSet.prototype, "tsJest", null);
@@ -1,4 +1,4 @@
1
- import { Config } from '@jest/types';
1
+ import type { Config } from '@jest/types';
2
2
  declare type JestPathMapping = Config.InitialOptions['moduleNameMapper'];
3
3
  export declare const pathsToModuleNameMapper: (mapping: import("typescript").MapLike<string[]>, { prefix }?: {
4
4
  prefix?: string | undefined;
@@ -14,8 +14,10 @@ var _a;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.pathsToModuleNameMapper = void 0;
16
16
  var bs_logger_1 = require("bs-logger");
17
- var logger_1 = require("../util/logger");
18
- var messages_1 = require("../util/messages");
17
+ var logger_1 = require("../utils/logger");
18
+ var messages_1 = require("../utils/messages");
19
+ var path_1 = require("path");
20
+ var normalize_slashes_1 = require("../utils/normalize-slashes");
19
21
  var escapeRegex = function (str) { return str.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&'); };
20
22
  var logger = logger_1.rootLogger.child((_a = {}, _a[bs_logger_1.LogContexts.namespace] = 'path-mapper', _a));
21
23
  exports.pathsToModuleNameMapper = function (mapping, _a) {
@@ -33,18 +35,17 @@ exports.pathsToModuleNameMapper = function (mapping, _a) {
33
35
  }
34
36
  var segments = fromPath.split(/\*/g);
35
37
  if (segments.length === 1) {
36
- var paths = toPaths.map(function (target) { return "" + prefix + target; });
38
+ var paths = toPaths.map(function (target) { return normalize_slashes_1.normalizeSlashes(path_1.join(prefix, target)); });
37
39
  pattern = "^" + escapeRegex(fromPath) + "$";
38
40
  jestMap[pattern] = paths.length === 1 ? paths[0] : paths;
39
41
  }
40
42
  else if (segments.length === 2) {
41
- var paths = toPaths.map(function (target) { return "" + prefix + target.replace(/\*/g, '$1'); });
43
+ var paths = toPaths.map(function (target) { return normalize_slashes_1.normalizeSlashes(path_1.join(prefix, target.replace(/\*/g, '$1'))); });
42
44
  pattern = "^" + escapeRegex(segments[0]) + "(.*)" + escapeRegex(segments[1]) + "$";
43
45
  jestMap[pattern] = paths.length === 1 ? paths[0] : paths;
44
46
  }
45
47
  else {
46
48
  logger.warn(messages_1.interpolate("Not mapping \"{{path}}\" because it has more than one star (`*`).", { path: fromPath }));
47
- continue;
48
49
  }
49
50
  }
50
51
  }