ts-jest 26.2.0 → 26.4.1

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 (58) hide show
  1. package/.ts-jest-digest +1 -1
  2. package/CHANGELOG.md +46 -0
  3. package/README.md +0 -1
  4. package/dist/cli/config/migrate.js +1 -1
  5. package/dist/cli/index.js +6 -3
  6. package/dist/compiler/instance.js +1 -1
  7. package/dist/compiler/language-service.js +3 -3
  8. package/dist/compiler/transpiler.js +2 -3
  9. package/dist/config/config-set.js +113 -160
  10. package/dist/config/paths-to-module-name-mapper.d.ts +1 -1
  11. package/dist/config/paths-to-module-name-mapper.js +11 -6
  12. package/dist/index.d.ts +3 -3
  13. package/dist/index.js +5 -5
  14. package/dist/{config → presets}/create-jest-preset.d.ts +2 -1
  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.js +5 -5
  23. package/dist/types.d.ts +7 -3
  24. package/dist/{util → utils}/backports.d.ts +0 -0
  25. package/dist/{util → utils}/backports.js +0 -0
  26. package/dist/{util → utils}/get-package-version.d.ts +0 -0
  27. package/dist/{util → utils}/get-package-version.js +0 -0
  28. package/dist/{util → utils}/importer.d.ts +0 -0
  29. package/dist/{util → utils}/importer.js +0 -0
  30. package/dist/{util → utils}/index.d.ts +1 -1
  31. package/dist/{util → utils}/index.js +2 -1
  32. package/dist/{util → utils}/json.d.ts +0 -0
  33. package/dist/{util → utils}/json.js +0 -0
  34. package/dist/{util → utils}/jsonable-value.d.ts +0 -0
  35. package/dist/{util → utils}/jsonable-value.js +0 -0
  36. package/dist/{util → utils}/logger.d.ts +0 -0
  37. package/dist/{util → utils}/logger.js +0 -0
  38. package/dist/{util → utils}/memoize.d.ts +0 -0
  39. package/dist/{util → utils}/memoize.js +0 -0
  40. package/dist/{util → utils}/messages.d.ts +0 -0
  41. package/dist/{util → utils}/messages.js +0 -0
  42. package/dist/{util → utils}/normalize-slashes.d.ts +0 -0
  43. package/dist/{util → utils}/normalize-slashes.js +0 -0
  44. package/dist/{util → utils}/sha1.d.ts +0 -0
  45. package/dist/{util → utils}/sha1.js +0 -0
  46. package/dist/{util → utils}/testing.d.ts +1 -1
  47. package/dist/{util → utils}/testing.js +0 -0
  48. package/dist/{util → utils}/ts-error.d.ts +0 -0
  49. package/dist/{util → utils}/ts-error.js +1 -1
  50. package/dist/{util → utils}/version-checkers.d.ts +0 -0
  51. package/dist/{util → utils}/version-checkers.js +1 -1
  52. package/jest-preset.js +1 -1
  53. package/package.json +10 -9
  54. package/presets/index.js +1 -20
  55. package/utils/index.d.ts +1 -1
  56. package/utils/index.js +1 -1
  57. package/presets/create.js +0 -1
  58. package/presets/index.d.ts +0 -5
package/.ts-jest-digest CHANGED
@@ -1 +1 @@
1
- 3793ca0e5f06b7056a87f12d06ee54c5afb1dc2a
1
+ 1df3aab00abdf22069c7f2158ac81678877d34f5
package/CHANGELOG.md CHANGED
@@ -1,3 +1,49 @@
1
+ ## [26.4.1](https://github.com/kulshekhar/ts-jest/compare/v26.4.0...v26.4.1) (2020-09-29)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **utils:** `MaybeMockedConstructor` returns T ([#1976](https://github.com/kulshekhar/ts-jest/issues/1976)) ([b7712b2](https://github.com/kulshekhar/ts-jest/commit/b7712b2055d8f32dd97999de1d94e8f3515d79e8))
7
+ * **utils:** revert `path.join` and add check on prefix ends with `/` ([#1989](https://github.com/kulshekhar/ts-jest/issues/1989)) ([3d9035b](https://github.com/kulshekhar/ts-jest/commit/3d9035bd70dc087d4c5a943bb2fe2af2d0822875)), closes [#1982](https://github.com/kulshekhar/ts-jest/issues/1982)
8
+
9
+
10
+
11
+ # [26.4.0](https://github.com/kulshekhar/ts-jest/compare/v26.3.0...v26.4.0) (2020-09-20)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **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)
17
+ * 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)
18
+
19
+
20
+ ### Features
21
+
22
+ * **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)
23
+ * **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)
24
+ * **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))
25
+
26
+
27
+ ### Performance Improvements
28
+
29
+ * **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))
30
+
31
+
32
+
33
+ # [26.3.0](https://github.com/kulshekhar/ts-jest/compare/v26.2.0...v26.3.0) (2020-08-25)
34
+
35
+
36
+ ### Bug Fixes
37
+
38
+ * **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)
39
+
40
+
41
+ ### Features
42
+
43
+ * support TypeScript 4.0 ([#1889](https://github.com/kulshekhar/ts-jest/issues/1889)) ([f070e93](https://github.com/kulshekhar/ts-jest/commit/f070e9334a9cf31fa6f0d73b3f69d805be72601d))
44
+
45
+
46
+
1
47
  # [26.2.0](https://github.com/kulshekhar/ts-jest/compare/v26.1.4...v26.2.0) (2020-08-11)
2
48
 
3
49
 
package/README.md CHANGED
@@ -4,7 +4,6 @@
4
4
  [![NPM downloads](https://img.shields.io/npm/dm/ts-jest.svg?style=flat)](https://npmjs.org/package/ts-jest)
5
5
  [![Known Vulnerabilities](https://snyk.io/test/github/kulshekhar/ts-jest/badge.svg)](https://snyk.io/test/github/kulshekhar/ts-jest)
6
6
  [![Coverage Status](https://coveralls.io/repos/github/kulshekhar/ts-jest/badge.svg?branch=master)](https://coveralls.io/github/kulshekhar/ts-jest?branch=master)
7
- [![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=kulshekhar/ts-jest)](https://dependabot.com)
8
7
  [![Build Status](https://travis-ci.com/kulshekhar/ts-jest.svg?branch=master)](https://travis-ci.com/kulshekhar/ts-jest)
9
8
  [![doc-generator](https://github.com/kulshekhar/ts-jest/workflows/doc-generator/badge.svg)](https://github.com/kulshekhar/ts-jest/actions)
10
9
  [![release-and-publish](https://github.com/kulshekhar/ts-jest/workflows/release-and-publish/badge.svg)](https://github.com/kulshekhar/ts-jest/actions)
@@ -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
  };
@@ -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,53 +125,6 @@ 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) {
143
- if (packageJson.kind === 'inline') {
144
- return packageJson.value;
145
- }
146
- else if (packageJson.kind === 'file' && packageJson.value) {
147
- var path = this.resolvePath(packageJson.value);
148
- if (fs_1.existsSync(path)) {
149
- return require(path);
150
- }
151
- this.logger.warn("Unable to find the root of the project where ts-jest has been installed.");
152
- return {};
153
- }
154
- }
155
- var tsJestRoot = path_1.resolve(__dirname, '..', '..');
156
- var pkgPath = path_1.resolve(tsJestRoot, '..', '..', 'package.json');
157
- if (fs_1.existsSync(pkgPath)) {
158
- return require(pkgPath);
159
- }
160
- if (fs_1.realpathSync(this.rootDir) === fs_1.realpathSync(tsJestRoot)) {
161
- pkgPath = path_1.resolve(tsJestRoot, 'package.json');
162
- if (fs_1.existsSync(pkgPath)) {
163
- return require(pkgPath);
164
- }
165
- }
166
- this.logger.warn("Unable to find the root of the project where ts-jest has been installed.");
167
- return {};
168
- },
169
- enumerable: false,
170
- configurable: true
171
- });
172
- Object.defineProperty(ConfigSet.prototype, "projectDependencies", {
173
- get: function () {
174
- var pkg = this.projectPackageJson;
175
- var names = Object.keys(__assign(__assign(__assign(__assign({}, pkg.optionalDependencies), pkg.peerDependencies), pkg.devDependencies), pkg.dependencies));
176
- return names.reduce(function (map, name) {
177
- var version = get_package_version_1.getPackageVersion(name);
178
- if (version)
179
- map[name] = version;
180
- return map;
181
- }, {});
182
- },
183
- enumerable: false,
184
- configurable: true
185
- });
186
128
  Object.defineProperty(ConfigSet.prototype, "jest", {
187
129
  get: function () {
188
130
  var _a;
@@ -217,105 +159,78 @@ var ConfigSet = (function () {
217
159
  Object.defineProperty(ConfigSet.prototype, "tsJest", {
218
160
  get: function () {
219
161
  var _this = this;
220
- var _a, _b, _c;
162
+ var _a, _b, _c, _d, _e, _f;
221
163
  var parsedConfig = this.jest;
222
- var _d = parsedConfig.globals, globals = _d === void 0 ? {} : _d;
164
+ var _g = parsedConfig.globals, globals = _g === void 0 ? {} : _g;
223
165
  var options = __assign({}, globals['ts-jest']);
224
- var tsConfigOpt = (_b = (_a = options.tsConfig) !== null && _a !== void 0 ? _a : options.tsconfig) !== null && _b !== void 0 ? _b : true;
225
- var tsConfig;
226
- if (typeof tsConfigOpt === 'string' || tsConfigOpt === true) {
227
- tsConfig = {
228
- kind: 'file',
229
- value: typeof tsConfigOpt === 'string' ? this.resolvePath(tsConfigOpt) : undefined,
230
- };
231
- }
232
- else if (typeof tsConfigOpt === 'object') {
233
- tsConfig = {
234
- kind: 'inline',
235
- value: tsConfigOpt,
236
- };
237
- }
238
- var packageJsonOpt = options.packageJson;
239
- var packageJson;
240
- if (typeof packageJsonOpt === 'string' || packageJsonOpt == null || packageJsonOpt === true) {
241
- packageJson = {
242
- kind: 'file',
243
- value: typeof packageJsonOpt === 'string' ? this.resolvePath(packageJsonOpt) : undefined,
244
- };
245
- }
246
- else if (typeof packageJsonOpt === 'object') {
247
- packageJson = {
248
- kind: 'inline',
249
- value: packageJsonOpt,
250
- };
251
- }
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);
252
168
  var transformers = Object.create(null);
253
169
  var astTransformers = options.astTransformers;
254
170
  if (astTransformers) {
255
171
  if (Array.isArray(astTransformers)) {
256
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");
257
173
  transformers = {
258
- before: astTransformers.map(function (transformerPath) { return _this.resolvePath(transformerPath, { nodeResolve: true }); }),
174
+ before: astTransformers.map(function (transformerPath) { return ({
175
+ path: _this.resolvePath(transformerPath, { nodeResolve: true }),
176
+ }); }),
259
177
  };
260
178
  }
261
179
  else {
262
180
  if (astTransformers.before) {
263
181
  transformers = {
264
- before: astTransformers.before.map(function (transformerPath) {
265
- return _this.resolvePath(transformerPath, { nodeResolve: true });
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 }) });
266
188
  }),
267
189
  };
268
190
  }
269
191
  if (astTransformers.after) {
270
- transformers = __assign(__assign({}, transformers), { after: astTransformers.after.map(function (transformerPath) {
271
- return _this.resolvePath(transformerPath, { nodeResolve: true });
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 }) });
272
198
  }) });
273
199
  }
274
200
  if (astTransformers.afterDeclarations) {
275
- transformers = __assign(__assign({}, transformers), { afterDeclarations: astTransformers.afterDeclarations.map(function (transformerPath) {
276
- return _this.resolvePath(transformerPath, { nodeResolve: true });
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 }) });
277
207
  }) });
278
208
  }
279
209
  }
280
210
  }
281
- var babelConfigOpt = options.babelConfig;
282
- var babelConfig;
283
- if (typeof babelConfigOpt === 'string' || babelConfigOpt === true) {
284
- babelConfig = {
285
- kind: 'file',
286
- value: babelConfigOpt === true ? undefined : this.resolvePath(babelConfigOpt),
287
- };
288
- }
289
- else if (babelConfigOpt) {
290
- babelConfig = {
291
- kind: 'inline',
292
- value: babelConfigOpt,
293
- };
294
- }
211
+ var babelConfig = this.getInlineOrFileConfigOpt(options.babelConfig);
295
212
  var diagnostics;
296
- var _e = options.diagnostics, diagnosticsOpt = _e === void 0 ? true : _e;
297
- var ignoreList = [exports.IGNORE_DIAGNOSTIC_CODES, process.env.TS_JEST_IGNORE_DIAGNOSTICS];
298
- if (diagnosticsOpt === true || diagnosticsOpt == null) {
299
- diagnostics = { ignoreCodes: [], pretty: true, throws: true };
300
- }
301
- 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
+ }
302
220
  diagnostics = {
303
- throws: false,
304
- pretty: true,
305
- ignoreCodes: [],
306
- 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,
307
225
  };
308
226
  }
309
227
  else {
310
- ignoreList.push(diagnosticsOpt.ignoreCodes);
311
228
  diagnostics = {
312
- pretty: diagnosticsOpt.pretty == null ? true : !!diagnosticsOpt.pretty,
313
- ignoreCodes: [],
314
- pathRegex: normalizeRegex(diagnosticsOpt.pathRegex),
315
- throws: !diagnosticsOpt.warnOnly,
229
+ ignoreCodes: diagnosticsOpt ? toDiagnosticCodeList(ignoreList) : [],
230
+ pretty: true,
231
+ throws: diagnosticsOpt,
316
232
  };
317
233
  }
318
- diagnostics.ignoreCodes = toDiagnosticCodeList(ignoreList);
319
234
  var stringifyContentPathRegex = normalizeRegex(options.stringifyContentPathRegex);
320
235
  var res = {
321
236
  tsConfig: tsConfig,
@@ -323,7 +238,7 @@ var ConfigSet = (function () {
323
238
  babelConfig: babelConfig,
324
239
  diagnostics: diagnostics,
325
240
  isolatedModules: !!options.isolatedModules,
326
- compiler: (_c = options.compiler) !== null && _c !== void 0 ? _c : 'typescript',
241
+ compiler: (_f = options.compiler) !== null && _f !== void 0 ? _f : 'typescript',
327
242
  transformers: transformers,
328
243
  stringifyContentPathRegex: stringifyContentPathRegex,
329
244
  };
@@ -442,20 +357,47 @@ var ConfigSet = (function () {
442
357
  Object.defineProperty(ConfigSet.prototype, "astTransformers", {
443
358
  get: function () {
444
359
  var astTransformers = {
445
- before: __spread(transformers_1.internals),
360
+ before: __spread(transformers_1.internals.map(function (transformer) { return ({
361
+ transformModule: transformer,
362
+ }); })),
446
363
  };
447
364
  var transformers = this.tsJest.transformers;
448
365
  if (transformers.before) {
449
366
  astTransformers = {
450
- before: __spread(astTransformers.before, transformers.before.map(function (transformerFilePath) { return require(transformerFilePath); })),
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
+ })),
451
377
  };
452
378
  }
453
379
  if (transformers.after) {
454
- astTransformers = __assign(__assign({}, astTransformers), { after: transformers.after.map(function (transformerFilePath) { return require(transformerFilePath); }) });
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
+ }) });
455
390
  }
456
391
  if (transformers.afterDeclarations) {
457
- astTransformers = __assign(__assign({}, astTransformers), { afterDeclarations: transformers.afterDeclarations.map(function (transformerFilePath) {
458
- return require(transformerFilePath);
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
+ };
459
401
  }) });
460
402
  }
461
403
  return astTransformers;
@@ -467,13 +409,15 @@ var ConfigSet = (function () {
467
409
  get: function () {
468
410
  var _this = this;
469
411
  var customTransformers = {
470
- before: this.astTransformers.before.map(function (t) { return t.factory(_this); }),
412
+ before: this.astTransformers.before.map(function (t) { return t.transformModule.factory(_this, t.options); }),
471
413
  };
472
414
  if (this.astTransformers.after) {
473
- customTransformers = __assign(__assign({}, customTransformers), { after: this.astTransformers.after.map(function (t) { return t.factory(_this); }) });
415
+ customTransformers = __assign(__assign({}, customTransformers), { after: this.astTransformers.after.map(function (t) { return t.transformModule.factory(_this, t.options); }) });
474
416
  }
475
417
  if (this.astTransformers.afterDeclarations) {
476
- customTransformers = __assign(__assign({}, customTransformers), { afterDeclarations: this.astTransformers.afterDeclarations.map(function (t) { return t.factory(_this); }) });
418
+ customTransformers = __assign(__assign({}, customTransformers), { afterDeclarations: this.astTransformers.afterDeclarations.map(function (t) {
419
+ return t.transformModule.factory(_this, t.options);
420
+ }) });
477
421
  }
478
422
  return customTransformers;
479
423
  },
@@ -568,7 +512,6 @@ var ConfigSet = (function () {
568
512
  var cacheSuffix = sha1_1.sha1(json_1.stringify({
569
513
  version: this.compilerModule.version,
570
514
  digest: this.tsJestDigest,
571
- dependencies: this.projectDependencies,
572
515
  compiler: this.tsJest.compiler,
573
516
  compilerOptions: this.parsedTsConfig.options,
574
517
  isolatedModules: this.tsJest.isolatedModules,
@@ -632,16 +575,17 @@ var ConfigSet = (function () {
632
575
  get: function () {
633
576
  var jest = __assign({}, this.jest);
634
577
  var globals = (jest.globals = __assign({}, jest.globals));
635
- delete jest.name;
636
- delete jest.cacheDirectory;
578
+ jest.name = undefined;
579
+ jest.cacheDirectory = undefined;
637
580
  delete globals['ts-jest'];
638
581
  return new jsonable_value_1.JsonableValue({
639
- versions: this.versions,
640
- projectDepVersions: this.projectDependencies,
641
582
  digest: this.tsJestDigest,
642
583
  transformers: Object.values(this.astTransformers)
643
584
  .reduce(function (acc, val) { return acc.concat(val); }, [])
644
- .map(function (t) { return t.name + "@" + t.version; }),
585
+ .map(function (_a) {
586
+ var transformModule = _a.transformModule;
587
+ return transformModule.name + "@" + transformModule.version;
588
+ }),
645
589
  jest: jest,
646
590
  tsJest: this.tsJest,
647
591
  babel: this.babel,
@@ -673,6 +617,21 @@ var ConfigSet = (function () {
673
617
  length: length,
674
618
  };
675
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
+ };
676
635
  ConfigSet.prototype.readTsConfig = function (compilerOptions, resolvedConfigFile, noProject) {
677
636
  var e_2, _a;
678
637
  var _b;
@@ -786,12 +745,6 @@ var ConfigSet = (function () {
786
745
  ConfigSet.prototype.toJSON = function () {
787
746
  return this.jsonValue.value;
788
747
  };
789
- __decorate([
790
- memoize_1.Memoize()
791
- ], ConfigSet.prototype, "projectPackageJson", null);
792
- __decorate([
793
- memoize_1.Memoize()
794
- ], ConfigSet.prototype, "projectDependencies", null);
795
748
  __decorate([
796
749
  memoize_1.Memoize()
797
750
  ], ConfigSet.prototype, "jest", null);
@@ -1,6 +1,6 @@
1
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
- prefix?: string | undefined;
4
+ prefix: string;
5
5
  }) => JestPathMapping;
6
6
  export {};
@@ -14,13 +14,13 @@ 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
19
  var escapeRegex = function (str) { return str.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&'); };
20
20
  var logger = logger_1.rootLogger.child((_a = {}, _a[bs_logger_1.LogContexts.namespace] = 'path-mapper', _a));
21
21
  exports.pathsToModuleNameMapper = function (mapping, _a) {
22
22
  var e_1, _b;
23
- var _c = (_a === void 0 ? {} : _a).prefix, prefix = _c === void 0 ? '' : _c;
23
+ var _c = (_a === void 0 ? Object.create(null) : _a).prefix, prefix = _c === void 0 ? '' : _c;
24
24
  var jestMap = {};
25
25
  try {
26
26
  for (var _d = __values(Object.keys(mapping)), _e = _d.next(); !_e.done; _e = _d.next()) {
@@ -33,18 +33,23 @@ exports.pathsToModuleNameMapper = function (mapping, _a) {
33
33
  }
34
34
  var segments = fromPath.split(/\*/g);
35
35
  if (segments.length === 1) {
36
- var paths = toPaths.map(function (target) { return "" + prefix + target; });
36
+ var paths = toPaths.map(function (target) {
37
+ var enrichedPrefix = prefix !== '' && !prefix.endsWith('/') ? prefix + "/" : prefix;
38
+ return "" + enrichedPrefix + target;
39
+ });
37
40
  pattern = "^" + escapeRegex(fromPath) + "$";
38
41
  jestMap[pattern] = paths.length === 1 ? paths[0] : paths;
39
42
  }
40
43
  else if (segments.length === 2) {
41
- var paths = toPaths.map(function (target) { return "" + prefix + target.replace(/\*/g, '$1'); });
44
+ var paths = toPaths.map(function (target) {
45
+ var enrichedPrefix = prefix !== '' && !prefix.endsWith('/') ? prefix + "/" : prefix;
46
+ return "" + enrichedPrefix + target.replace(/\*/g, '$1');
47
+ });
42
48
  pattern = "^" + escapeRegex(segments[0]) + "(.*)" + escapeRegex(segments[1]) + "$";
43
49
  jestMap[pattern] = paths.length === 1 ? paths[0] : paths;
44
50
  }
45
51
  else {
46
52
  logger.warn(messages_1.interpolate("Not mapping \"{{path}}\" because it has more than one star (`*`).", { path: fromPath }));
47
- continue;
48
53
  }
49
54
  }
50
55
  }
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { createJestPreset as createJestPresetCore } from './config/create-jest-preset';
1
+ import { createJestPreset as createJestPresetCore } from './presets/create-jest-preset';
2
2
  import { TsJestTransformer } from './ts-jest-transformer';
3
3
  import type { TsJestGlobalOptions } from './types';
4
- import { mocked as mockedCore } from './util/testing';
4
+ import { mocked as mockedCore } from './utils/testing';
5
5
  declare module '@jest/types' {
6
6
  namespace Config {
7
7
  interface ConfigGlobals {
@@ -12,7 +12,7 @@ declare module '@jest/types' {
12
12
  export declare const mocked: typeof mockedCore;
13
13
  export declare const createJestPreset: typeof createJestPresetCore;
14
14
  export declare const pathsToModuleNameMapper: (mapping: import("typescript").MapLike<string[]>, { prefix }?: {
15
- prefix?: string | undefined;
15
+ prefix: string;
16
16
  }) => {
17
17
  [key: string]: string | string[];
18
18
  } | undefined;