ts-jest 29.0.2 → 29.0.3
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.
- package/.ts-jest-digest +1 -1
- package/CHANGELOG.md +15 -0
- package/dist/cli/config/init.js +11 -12
- package/dist/cli/config/migrate.js +38 -5
- package/dist/config/paths-to-module-name-mapper.d.ts +3 -2
- package/dist/config/paths-to-module-name-mapper.js +15 -9
- package/dist/legacy/ts-jest-transformer.js +4 -2
- package/dist/presets/create-jest-preset.js +3 -2
- package/dist/types.d.ts +2 -2
- package/package.json +4 -4
package/.ts-jest-digest
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
7378fcb54a209ca78cc5680b6d7f7243b480d5bb
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
## [29.0.3](https://github.com/kulshekhar/ts-jest/compare/v29.0.2...v29.0.3) (2022-09-28)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* merge config from `globals` with transformer config correctly ([#3842](https://github.com/kulshekhar/ts-jest/issues/3842)) ([9c9fd60](https://github.com/kulshekhar/ts-jest/commit/9c9fd6097aea36a6e8b06b0e8841df22896f9121)), closes [#3841](https://github.com/kulshekhar/ts-jest/issues/3841)
|
|
7
|
+
* **presets:** allow merging transform config when using presets ([#3833](https://github.com/kulshekhar/ts-jest/issues/3833)) ([afc6a94](https://github.com/kulshekhar/ts-jest/commit/afc6a948b17c2dc22be51b1a9475a0f6ecbbc372))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* add `useESM` option to `pathsToModuleNameMapper` options ([#3792](https://github.com/kulshekhar/ts-jest/issues/3792)) ([eabe906](https://github.com/kulshekhar/ts-jest/commit/eabe906e1dd6b132a7b0d05ffc13172cd8a6b73b))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
1
16
|
## [29.0.2](https://github.com/kulshekhar/ts-jest/compare/v29.0.1...v29.0.2) (2022-09-23)
|
|
2
17
|
|
|
3
18
|
|
package/dist/cli/config/init.js
CHANGED
|
@@ -133,19 +133,18 @@ var run = function (args /* , logger: Logger */) { return __awaiter(void 0, void
|
|
|
133
133
|
jestConfig.testEnvironment = 'node';
|
|
134
134
|
transformerConfig = Object.entries((_d = jestConfig.transform) !== null && _d !== void 0 ? _d : {}).reduce(function (acc, _a) {
|
|
135
135
|
var _b, _c;
|
|
136
|
-
var _d = __read(_a, 2), fileRegex = _d[0],
|
|
137
|
-
if (
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return __assign(__assign({}, acc), (_c = {}, _c[fileRegex] = transformerName, _c));
|
|
136
|
+
var _d = __read(_a, 2), fileRegex = _d[0], transformerConfig = _d[1];
|
|
137
|
+
if (tsconfig || shouldPostProcessWithBabel) {
|
|
138
|
+
var tsJestConf = {};
|
|
139
|
+
if (tsconfig)
|
|
140
|
+
tsJestConf.tsconfig = tsconfig;
|
|
141
|
+
if (shouldPostProcessWithBabel)
|
|
142
|
+
tsJestConf.babelConfig = true;
|
|
143
|
+
return __assign(__assign({}, acc), (_b = {}, _b[fileRegex] = typeof transformerConfig === 'string'
|
|
144
|
+
? [transformerConfig, tsJestConf]
|
|
145
|
+
: [transformerConfig[0], __assign(__assign({}, transformerConfig[1]), tsJestConf)], _b));
|
|
147
146
|
}
|
|
148
|
-
return acc;
|
|
147
|
+
return __assign(__assign({}, acc), (_c = {}, _c[fileRegex] = transformerConfig, _c));
|
|
149
148
|
}, {});
|
|
150
149
|
if (Object.keys(transformerConfig).length) {
|
|
151
150
|
jestConfig.transform = __assign(__assign({}, jestConfig.transform), transformerConfig);
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
15
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -76,7 +87,7 @@ var presets_1 = require("../helpers/presets");
|
|
|
76
87
|
* @internal
|
|
77
88
|
*/
|
|
78
89
|
var run = function (args /* , logger: Logger*/) { return __awaiter(void 0, void 0, void 0, function () {
|
|
79
|
-
var nullLogger, file, filePath, footNotes, name, isPackage, actualConfig, migratedConfig, presetName, preset, jsTransformers, jsWithTs, jsWithBabel, presetValue, migratedValue, presetValue, migratedValue, globalsTsJestConfig, before, after, stringify, prefix;
|
|
90
|
+
var nullLogger, file, filePath, footNotes, name, isPackage, actualConfig, migratedConfig, presetName, preset, jsTransformers, jsWithTs, jsWithBabel, presetValue, migratedValue, presetValue, migratedValue, globalsTsJestConfig, migratedConfigTransform, presetValueTransform_1, before, after, stringify, prefix;
|
|
80
91
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
81
92
|
return __generator(this, function (_l) {
|
|
82
93
|
nullLogger = (0, bs_logger_1.createLogger)({ targets: [] });
|
|
@@ -194,10 +205,32 @@ var run = function (args /* , logger: Logger*/) { return __awaiter(void 0, void
|
|
|
194
205
|
delete ((_k = migratedConfig.globals) !== null && _k !== void 0 ? _k : Object.create(null))['ts-jest'];
|
|
195
206
|
}
|
|
196
207
|
// check if it's the same as the preset's one
|
|
197
|
-
if (preset &&
|
|
198
|
-
migratedConfig.transform
|
|
199
|
-
|
|
200
|
-
|
|
208
|
+
if (preset && migratedConfig.transform) {
|
|
209
|
+
if ((0, fast_json_stable_stringify_1.default)(migratedConfig.transform) === (0, fast_json_stable_stringify_1.default)(preset.value.transform)) {
|
|
210
|
+
delete migratedConfig.transform;
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
migratedConfigTransform = migratedConfig.transform;
|
|
214
|
+
presetValueTransform_1 = preset.value.transform;
|
|
215
|
+
if (migratedConfigTransform && presetValueTransform_1) {
|
|
216
|
+
migratedConfig.transform = Object.entries(migratedConfigTransform).reduce(
|
|
217
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
218
|
+
function (acc, _a) {
|
|
219
|
+
var _b, _c;
|
|
220
|
+
var _d = __read(_a, 2), fileRegex = _d[0], transformerConfig = _d[1];
|
|
221
|
+
var presetValueTransformerConfig = presetValueTransform_1[fileRegex];
|
|
222
|
+
var shouldRemoveDuplicatedConfig = (presetValueTransformerConfig &&
|
|
223
|
+
Array.isArray(presetValueTransformerConfig) &&
|
|
224
|
+
transformerConfig === presetValueTransformerConfig[0] &&
|
|
225
|
+
!Object.keys(presetValueTransformerConfig[1]).length) ||
|
|
226
|
+
transformerConfig === presetValueTransformerConfig;
|
|
227
|
+
return shouldRemoveDuplicatedConfig
|
|
228
|
+
? acc
|
|
229
|
+
: acc
|
|
230
|
+
? __assign(__assign({}, acc), (_b = {}, _b[fileRegex] = transformerConfig, _b)) : (_c = {}, _c[fileRegex] = transformerConfig, _c);
|
|
231
|
+
}, undefined);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
201
234
|
}
|
|
202
235
|
// cleanup
|
|
203
236
|
cleanupConfig(actualConfig);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Config } from '@jest/types';
|
|
2
2
|
declare type JestPathMapping = Config.InitialOptions['moduleNameMapper'];
|
|
3
|
-
export declare const pathsToModuleNameMapper: (mapping: import("typescript").MapLike<string[]>, { prefix }?: {
|
|
4
|
-
prefix
|
|
3
|
+
export declare const pathsToModuleNameMapper: (mapping: import("typescript").MapLike<string[]>, { prefix, useESM }?: {
|
|
4
|
+
prefix?: string | undefined;
|
|
5
|
+
useESM?: boolean | undefined;
|
|
5
6
|
}) => JestPathMapping;
|
|
6
7
|
export {};
|
|
@@ -22,12 +22,11 @@ var escapeRegex = function (str) { return str.replace(/[-\\^$*+?.()|[\]{}]/g, '\
|
|
|
22
22
|
var logger = utils_1.rootLogger.child((_a = {}, _a[bs_logger_1.LogContexts.namespace] = 'path-mapper', _a));
|
|
23
23
|
var pathsToModuleNameMapper = function (mapping, _a) {
|
|
24
24
|
var e_1, _b;
|
|
25
|
-
var _c = _a === void 0 ?
|
|
25
|
+
var _c = _a === void 0 ? {} : _a, _d = _c.prefix, prefix = _d === void 0 ? '' : _d, _e = _c.useESM, useESM = _e === void 0 ? false : _e;
|
|
26
26
|
var jestMap = {};
|
|
27
27
|
try {
|
|
28
|
-
for (var
|
|
29
|
-
var fromPath =
|
|
30
|
-
var pattern = void 0;
|
|
28
|
+
for (var _f = __values(Object.keys(mapping)), _g = _f.next(); !_g.done; _g = _f.next()) {
|
|
29
|
+
var fromPath = _g.value;
|
|
31
30
|
var toPaths = mapping[fromPath];
|
|
32
31
|
// check that we have only one target path
|
|
33
32
|
if (toPaths.length === 0) {
|
|
@@ -41,8 +40,8 @@ var pathsToModuleNameMapper = function (mapping, _a) {
|
|
|
41
40
|
var enrichedPrefix = prefix !== '' && !prefix.endsWith('/') ? "".concat(prefix, "/") : prefix;
|
|
42
41
|
return "".concat(enrichedPrefix).concat(target);
|
|
43
42
|
});
|
|
44
|
-
|
|
45
|
-
jestMap[
|
|
43
|
+
var cjsPattern = "^".concat(escapeRegex(fromPath), "$");
|
|
44
|
+
jestMap[cjsPattern] = paths.length === 1 ? paths[0] : paths;
|
|
46
45
|
}
|
|
47
46
|
else if (segments.length === 2) {
|
|
48
47
|
var paths = toPaths.map(function (target) {
|
|
@@ -50,8 +49,12 @@ var pathsToModuleNameMapper = function (mapping, _a) {
|
|
|
50
49
|
var enrichedPrefix = prefix !== '' && !prefix.endsWith('/') ? "".concat(prefix, "/") : prefix;
|
|
51
50
|
return "".concat(enrichedPrefix).concat(enrichedTarget.replace(/\*/g, '$1'));
|
|
52
51
|
});
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
if (useESM) {
|
|
53
|
+
var esmPattern = "^".concat(escapeRegex(segments[0]), "(.*)").concat(escapeRegex(segments[1]), "\\.js$");
|
|
54
|
+
jestMap[esmPattern] = paths.length === 1 ? paths[0] : paths;
|
|
55
|
+
}
|
|
56
|
+
var cjsPattern = "^".concat(escapeRegex(segments[0]), "(.*)").concat(escapeRegex(segments[1]), "$");
|
|
57
|
+
jestMap[cjsPattern] = paths.length === 1 ? paths[0] : paths;
|
|
55
58
|
}
|
|
56
59
|
else {
|
|
57
60
|
logger.warn((0, messages_1.interpolate)("Not mapping \"{{path}}\" because it has more than one star (`*`)." /* Errors.NotMappingMultiStarPath */, { path: fromPath }));
|
|
@@ -61,10 +64,13 @@ var pathsToModuleNameMapper = function (mapping, _a) {
|
|
|
61
64
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
62
65
|
finally {
|
|
63
66
|
try {
|
|
64
|
-
if (
|
|
67
|
+
if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
|
|
65
68
|
}
|
|
66
69
|
finally { if (e_1) throw e_1.error; }
|
|
67
70
|
}
|
|
71
|
+
if (useESM) {
|
|
72
|
+
jestMap['^(\\.{1,2}/.*)\\.js$'] = '$1';
|
|
73
|
+
}
|
|
68
74
|
return jestMap;
|
|
69
75
|
};
|
|
70
76
|
exports.pathsToModuleNameMapper = pathsToModuleNameMapper;
|
|
@@ -109,7 +109,7 @@ var TsJestTransformer = /** @class */ (function () {
|
|
|
109
109
|
process.env.TS_JEST = '1';
|
|
110
110
|
}
|
|
111
111
|
TsJestTransformer.prototype._configsFor = function (transformOptions) {
|
|
112
|
-
var _a, _b;
|
|
112
|
+
var _a, _b, _c;
|
|
113
113
|
var config = transformOptions.config, cacheFS = transformOptions.cacheFS;
|
|
114
114
|
var ccs = TsJestTransformer._cachedConfigSets.find(function (cs) { return cs.jestConfig.value === config; });
|
|
115
115
|
var configSet;
|
|
@@ -143,8 +143,10 @@ var TsJestTransformer = /** @class */ (function () {
|
|
|
143
143
|
if ((_a = config.globals) === null || _a === void 0 ? void 0 : _a['ts-jest']) {
|
|
144
144
|
this._logger.warn("Define `ts-jest` config under `globals` is deprecated. Please do\ntransform: {\n <transform_regex>: ['ts-jest', { /* ts-jest config goes here in Jest */ }],\n}," /* Deprecations.GlobalsTsJestConfigOption */);
|
|
145
145
|
}
|
|
146
|
+
var jestGlobalsConfig = (_b = config.globals) !== null && _b !== void 0 ? _b : {};
|
|
147
|
+
var tsJestGlobalsConfig = (_c = jestGlobalsConfig['ts-jest']) !== null && _c !== void 0 ? _c : {};
|
|
146
148
|
var migratedConfig = this.tsJestConfig
|
|
147
|
-
? __assign(__assign({}, config), { globals: __assign(__assign({},
|
|
149
|
+
? __assign(__assign({}, config), { globals: __assign(__assign({}, jestGlobalsConfig), { 'ts-jest': __assign(__assign({}, tsJestGlobalsConfig), this.tsJestConfig) }) }) : config;
|
|
148
150
|
configSet = this._createConfigSet(migratedConfig);
|
|
149
151
|
var jest_1 = __assign({}, migratedConfig);
|
|
150
152
|
// we need to remove some stuff from jest config
|
|
@@ -22,8 +22,9 @@ function createJestPreset(legacy, allowJs, extraOptions) {
|
|
|
22
22
|
logger.debug({ allowJs: allowJs }, 'creating jest presets', allowJs ? 'handling' : 'not handling', 'JavaScript files');
|
|
23
23
|
var extensionsToTreatAsEsm = extraOptions.extensionsToTreatAsEsm, moduleFileExtensions = extraOptions.moduleFileExtensions, testMatch = extraOptions.testMatch;
|
|
24
24
|
var supportESM = extensionsToTreatAsEsm === null || extensionsToTreatAsEsm === void 0 ? void 0 : extensionsToTreatAsEsm.length;
|
|
25
|
+
var tsJestTransformOptions = supportESM ? { useESM: true } : {};
|
|
25
26
|
return __assign(__assign(__assign(__assign({}, (extensionsToTreatAsEsm ? { extensionsToTreatAsEsm: extensionsToTreatAsEsm } : undefined)), (moduleFileExtensions ? { moduleFileExtensions: moduleFileExtensions } : undefined)), (testMatch ? { testMatch: testMatch } : undefined)), { transform: __assign(__assign({}, extraOptions.transform), (_a = {}, _a[allowJs ? (supportESM ? '^.+\\.m?[tj]sx?$' : '^.+\\.[tj]sx?$') : '^.+\\.tsx?$'] = legacy
|
|
26
|
-
? 'ts-jest/legacy'
|
|
27
|
-
: 'ts-jest', _a)) });
|
|
27
|
+
? ['ts-jest/legacy', tsJestTransformOptions]
|
|
28
|
+
: ['ts-jest', tsJestTransformOptions], _a)) });
|
|
28
29
|
}
|
|
29
30
|
exports.createJestPreset = createJestPreset;
|
package/dist/types.d.ts
CHANGED
|
@@ -20,7 +20,6 @@ export declare type TTypeScript = typeof _ts;
|
|
|
20
20
|
* Don't mark as internal because it is used in TsJestGlobalOptions which is an exposed type
|
|
21
21
|
*/
|
|
22
22
|
export declare type BabelConfig = _babel.TransformOptions;
|
|
23
|
-
export declare type TsJestPresets = Pick<Config.InitialOptions, 'extensionsToTreatAsEsm' | 'moduleFileExtensions' | 'transform' | 'testMatch'>;
|
|
24
23
|
export interface AstTransformer<T = Record<string, unknown>> {
|
|
25
24
|
path: string;
|
|
26
25
|
options?: T;
|
|
@@ -145,9 +144,10 @@ export interface InitialOptionsTsJest extends Config.InitialOptions {
|
|
|
145
144
|
export declare type TsJestTransformerOptions = TsJestGlobalOptions;
|
|
146
145
|
export interface JestConfigWithTsJest extends Omit<Config.InitialOptions, 'transform'> {
|
|
147
146
|
transform?: {
|
|
148
|
-
[regex: string]: 'ts-jest' | ['ts-jest', TsJestTransformerOptions] |
|
|
147
|
+
[regex: string]: 'ts-jest' | 'ts-jest/legacy' | ['ts-jest', TsJestTransformerOptions] | ['ts-jest/legacy', TsJestTransformerOptions] | string | Config.TransformerConfig;
|
|
149
148
|
};
|
|
150
149
|
}
|
|
150
|
+
export declare type TsJestPresets = Pick<JestConfigWithTsJest, 'extensionsToTreatAsEsm' | 'moduleFileExtensions' | 'transform' | 'testMatch'>;
|
|
151
151
|
export declare type StringMap = Map<string, string>;
|
|
152
152
|
export interface DepGraphInfo {
|
|
153
153
|
fileContent: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-jest",
|
|
3
|
-
"version": "29.0.
|
|
3
|
+
"version": "29.0.3",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"bin": {
|
|
@@ -108,13 +108,13 @@
|
|
|
108
108
|
"@types/semver": "latest",
|
|
109
109
|
"@types/yargs": "latest",
|
|
110
110
|
"@types/yargs-parser": "21.x",
|
|
111
|
-
"@typescript-eslint/eslint-plugin": "^5.38.
|
|
112
|
-
"@typescript-eslint/parser": "^5.38.
|
|
111
|
+
"@typescript-eslint/eslint-plugin": "^5.38.1",
|
|
112
|
+
"@typescript-eslint/parser": "^5.38.1",
|
|
113
113
|
"babel-jest": "^29.0.3",
|
|
114
114
|
"conventional-changelog-cli": "2.x",
|
|
115
115
|
"cross-spawn": "latest",
|
|
116
116
|
"esbuild": "~0.15.9",
|
|
117
|
-
"eslint": "^8.
|
|
117
|
+
"eslint": "^8.24.0",
|
|
118
118
|
"eslint-config-prettier": "latest",
|
|
119
119
|
"eslint-plugin-import": "latest",
|
|
120
120
|
"eslint-plugin-jest": "latest",
|