ts-jest 26.4.4-alpha.0 → 26.4.4
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 +14 -0
- package/dist/cli/config/init.d.ts +1 -0
- package/dist/cli/config/init.js +153 -0
- package/dist/cli/config/migrate.d.ts +1 -0
- package/dist/cli/config/migrate.js +218 -0
- package/dist/transformers/index.d.ts +1 -0
- package/dist/transformers/index.js +24 -0
- package/dist/transformers/path-mapping.d.ts +3 -0
- package/dist/transformers/path-mapping.js +121 -0
- package/dist/ts-jest-transformer.d.ts +1 -2
- package/dist/ts-jest-transformer.js +44 -41
- package/package.json +4 -2
package/.ts-jest-digest
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
a9a5dc2939780dca25d373663e916519b0ac2dfb
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [26.4.4](https://github.com/kulshekhar/ts-jest/compare/v26.4.3...v26.4.4) (2020-11-08)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* revert usage of `@jest/create-cache-key-function` ([#2108](https://github.com/kulshekhar/ts-jest/issues/2108)) ([dee8231](https://github.com/kulshekhar/ts-jest/commit/dee823172ce1e8eb9e0b2dd3aeed1ab4033bd0d9)), closes [#2080](https://github.com/kulshekhar/ts-jest/issues/2080) [#2090](https://github.com/kulshekhar/ts-jest/issues/2090) [#2104](https://github.com/kulshekhar/ts-jest/issues/2104)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **testing:** expose all types for util `mocked` ([#2096](https://github.com/kulshekhar/ts-jest/issues/2096)) ([b1d072b](https://github.com/kulshekhar/ts-jest/commit/b1d072b52b9a7665b3a6914b0895f84f6ee3f8c0)), closes [#2086](https://github.com/kulshekhar/ts-jest/issues/2086)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
1
15
|
## [26.4.3](https://github.com/kulshekhar/ts-jest/compare/v26.4.2...v26.4.3) (2020-10-26)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,153 @@
|
|
|
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
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (_) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.help = exports.run = void 0;
|
|
51
|
+
var fs_1 = require("fs");
|
|
52
|
+
var json5_1 = require("json5");
|
|
53
|
+
var path_1 = require("path");
|
|
54
|
+
var presets_1 = require("../helpers/presets");
|
|
55
|
+
exports.run = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
56
|
+
var file, filePath, name, isPackage, exists, pkgFile, hasPackage, _a, jestPreset, askedTsconfig, force, jsdom, tsconfig, pkgJson, jsFilesProcessor, shouldPostProcessWithBabel, preset, body, base, tsJestConf, content;
|
|
57
|
+
return __generator(this, function (_b) {
|
|
58
|
+
file = args._[0] || 'jest.config.js';
|
|
59
|
+
filePath = path_1.join(process.cwd(), file);
|
|
60
|
+
name = path_1.basename(file);
|
|
61
|
+
isPackage = name === 'package.json';
|
|
62
|
+
exists = fs_1.existsSync(filePath);
|
|
63
|
+
pkgFile = isPackage ? filePath : path_1.join(process.cwd(), 'package.json');
|
|
64
|
+
hasPackage = isPackage || fs_1.existsSync(pkgFile);
|
|
65
|
+
_a = args.jestPreset, jestPreset = _a === void 0 ? true : _a, askedTsconfig = args.tsconfig, force = args.force, jsdom = args.jsdom;
|
|
66
|
+
tsconfig = askedTsconfig === 'tsconfig.json' ? undefined : askedTsconfig;
|
|
67
|
+
pkgJson = hasPackage ? JSON.parse(fs_1.readFileSync(pkgFile, 'utf8')) : {};
|
|
68
|
+
jsFilesProcessor = args.js, shouldPostProcessWithBabel = args.babel;
|
|
69
|
+
if (jsFilesProcessor == null) {
|
|
70
|
+
jsFilesProcessor = shouldPostProcessWithBabel ? 'babel' : undefined;
|
|
71
|
+
}
|
|
72
|
+
else if (shouldPostProcessWithBabel == null) {
|
|
73
|
+
shouldPostProcessWithBabel = jsFilesProcessor === 'babel';
|
|
74
|
+
}
|
|
75
|
+
if (jsFilesProcessor === 'babel') {
|
|
76
|
+
preset = presets_1.jsWIthBabel;
|
|
77
|
+
}
|
|
78
|
+
else if (jsFilesProcessor === 'ts') {
|
|
79
|
+
preset = presets_1.jsWithTs;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
preset = presets_1.defaults;
|
|
83
|
+
}
|
|
84
|
+
if (isPackage && !exists) {
|
|
85
|
+
throw new Error("File " + file + " does not exists.");
|
|
86
|
+
}
|
|
87
|
+
else if (!isPackage && exists && !force) {
|
|
88
|
+
throw new Error("Configuration file " + file + " already exists.");
|
|
89
|
+
}
|
|
90
|
+
if (!isPackage && !name.endsWith('.js')) {
|
|
91
|
+
throw new TypeError("Configuration file " + file + " must be a .js file or the package.json.");
|
|
92
|
+
}
|
|
93
|
+
if (hasPackage && pkgJson.jest) {
|
|
94
|
+
if (force && !isPackage) {
|
|
95
|
+
delete pkgJson.jest;
|
|
96
|
+
fs_1.writeFileSync(pkgFile, JSON.stringify(pkgJson, undefined, ' '));
|
|
97
|
+
}
|
|
98
|
+
else if (!force) {
|
|
99
|
+
throw new Error("A Jest configuration is already set in " + pkgFile + ".");
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (isPackage) {
|
|
103
|
+
base = jestPreset ? { preset: preset.name } : __assign({}, preset.value);
|
|
104
|
+
if (!jsdom)
|
|
105
|
+
base.testEnvironment = 'node';
|
|
106
|
+
if (tsconfig || shouldPostProcessWithBabel) {
|
|
107
|
+
tsJestConf = {};
|
|
108
|
+
base.globals = { 'ts-jest': tsJestConf };
|
|
109
|
+
if (tsconfig)
|
|
110
|
+
tsJestConf.tsconfig = tsconfig;
|
|
111
|
+
if (shouldPostProcessWithBabel)
|
|
112
|
+
tsJestConf.babelConfig = true;
|
|
113
|
+
}
|
|
114
|
+
body = JSON.stringify(__assign(__assign({}, pkgJson), { jest: base }), undefined, ' ');
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
content = [];
|
|
118
|
+
if (!jestPreset) {
|
|
119
|
+
content.push(preset.jsImport('tsjPreset') + ";", '');
|
|
120
|
+
}
|
|
121
|
+
content.push('module.exports = {');
|
|
122
|
+
if (jestPreset) {
|
|
123
|
+
content.push(" preset: '" + preset.name + "',");
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
content.push(' ...tsjPreset,');
|
|
127
|
+
}
|
|
128
|
+
if (!jsdom)
|
|
129
|
+
content.push(" testEnvironment: 'node',");
|
|
130
|
+
if (tsconfig || shouldPostProcessWithBabel) {
|
|
131
|
+
content.push(' globals: {');
|
|
132
|
+
content.push(" 'ts-jest': {");
|
|
133
|
+
if (tsconfig)
|
|
134
|
+
content.push(" tsconfig: " + json5_1.stringify(tsconfig) + ",");
|
|
135
|
+
if (shouldPostProcessWithBabel)
|
|
136
|
+
content.push(' babelConfig: true,');
|
|
137
|
+
content.push(' },');
|
|
138
|
+
content.push(' },');
|
|
139
|
+
}
|
|
140
|
+
content.push('};');
|
|
141
|
+
body = content.join('\n');
|
|
142
|
+
}
|
|
143
|
+
fs_1.writeFileSync(filePath, body);
|
|
144
|
+
process.stderr.write("\nJest configuration written to \"" + filePath + "\".\n");
|
|
145
|
+
return [2];
|
|
146
|
+
});
|
|
147
|
+
}); };
|
|
148
|
+
exports.help = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
149
|
+
return __generator(this, function (_a) {
|
|
150
|
+
process.stdout.write("\nUsage:\n ts-jest config:init [options] [<config-file>]\n\nArguments:\n <config-file> Can be a js or json Jest config file. If it is a\n package.json file, the configuration will be read from\n the \"jest\" property.\n Default: jest.config.js\n\nOptions:\n --force Discard any existing Jest config\n --js ts|babel Process .js files with ts-jest if 'ts' or with\n babel-jest if 'babel'\n --no-jest-preset Disable the use of Jest presets\n --tsconfig <file> Path to the tsconfig.json file\n --babel Pipe babel-jest after ts-jest\n --jsdom Use jsdom as test environment instead of node\n");
|
|
151
|
+
return [2];
|
|
152
|
+
});
|
|
153
|
+
}); };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
39
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
40
|
+
if (!m) return o;
|
|
41
|
+
var i = m.call(o), r, ar = [], e;
|
|
42
|
+
try {
|
|
43
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
44
|
+
}
|
|
45
|
+
catch (error) { e = { error: error }; }
|
|
46
|
+
finally {
|
|
47
|
+
try {
|
|
48
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
49
|
+
}
|
|
50
|
+
finally { if (e) throw e.error; }
|
|
51
|
+
}
|
|
52
|
+
return ar;
|
|
53
|
+
};
|
|
54
|
+
var __spread = (this && this.__spread) || function () {
|
|
55
|
+
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
|
|
56
|
+
return ar;
|
|
57
|
+
};
|
|
58
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
59
|
+
exports.help = exports.run = void 0;
|
|
60
|
+
var bs_logger_1 = require("bs-logger");
|
|
61
|
+
var stableStringify = require("fast-json-stable-stringify");
|
|
62
|
+
var fs_1 = require("fs");
|
|
63
|
+
var json5_1 = require("json5");
|
|
64
|
+
var path_1 = require("path");
|
|
65
|
+
var backports_1 = require("../../utils/backports");
|
|
66
|
+
var presets_1 = require("../helpers/presets");
|
|
67
|
+
exports.run = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
68
|
+
var nullLogger, file, filePath, footNotes, name, isPackage, actualConfig, migratedConfig, presetName, preset, jsTransformers, jsWithTs, jsWithBabel, presetValue, migratedValue, presetValue, migratedValue, before, after, stringify, prefix;
|
|
69
|
+
return __generator(this, function (_a) {
|
|
70
|
+
nullLogger = bs_logger_1.createLogger({ targets: [] });
|
|
71
|
+
file = args._[0];
|
|
72
|
+
filePath = path_1.resolve(process.cwd(), file);
|
|
73
|
+
footNotes = [];
|
|
74
|
+
if (!fs_1.existsSync(filePath)) {
|
|
75
|
+
throw new Error("Configuration file " + file + " does not exists.");
|
|
76
|
+
}
|
|
77
|
+
name = path_1.basename(file);
|
|
78
|
+
isPackage = name === 'package.json';
|
|
79
|
+
if (!/\.(js|json)$/.test(name)) {
|
|
80
|
+
throw new TypeError("Configuration file " + file + " must be a JavaScript or JSON file.");
|
|
81
|
+
}
|
|
82
|
+
actualConfig = require(filePath);
|
|
83
|
+
if (isPackage) {
|
|
84
|
+
actualConfig = actualConfig.jest;
|
|
85
|
+
}
|
|
86
|
+
if (!actualConfig)
|
|
87
|
+
actualConfig = {};
|
|
88
|
+
migratedConfig = backports_1.backportJestConfig(nullLogger, actualConfig);
|
|
89
|
+
if (!migratedConfig.preset && args.jestPreset) {
|
|
90
|
+
if (args.js) {
|
|
91
|
+
presetName = args.js === 'babel' ? "ts-jest/presets/js-with-babel" : "ts-jest/presets/js-with-ts";
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
jsTransformers = Object.keys(migratedConfig.transform || {}).reduce(function (list, pattern) {
|
|
95
|
+
if (RegExp(pattern.replace(/^<rootDir>\/?/, '/dummy-project/')).test('/dummy-project/src/foo.js')) {
|
|
96
|
+
var transformer = migratedConfig.transform[pattern];
|
|
97
|
+
if (/\bbabel-jest\b/.test(transformer))
|
|
98
|
+
transformer = 'babel-jest';
|
|
99
|
+
else if (/\ts-jest\b/.test(transformer))
|
|
100
|
+
transformer = 'ts-jest';
|
|
101
|
+
return __spread(list, [transformer]);
|
|
102
|
+
}
|
|
103
|
+
return list;
|
|
104
|
+
}, []);
|
|
105
|
+
jsWithTs = jsTransformers.includes('ts-jest');
|
|
106
|
+
jsWithBabel = jsTransformers.includes('babel-jest');
|
|
107
|
+
if (jsWithBabel && !jsWithTs) {
|
|
108
|
+
presetName = "ts-jest/presets/js-with-babel";
|
|
109
|
+
}
|
|
110
|
+
else if (jsWithTs && !jsWithBabel) {
|
|
111
|
+
presetName = "ts-jest/presets/js-with-ts";
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
presetName = "ts-jest/presets/default";
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
presetName = presetName || "ts-jest/presets/default";
|
|
118
|
+
preset = presets_1.allPresets[presetName];
|
|
119
|
+
footNotes.push("Detected preset '" + preset.label + "' as the best matching preset for your configuration.\nVisit https://kulshekhar.github.io/ts-jest/user/config/#jest-preset for more information about presets.\n");
|
|
120
|
+
}
|
|
121
|
+
else if (migratedConfig.preset && migratedConfig.preset.startsWith('ts-jest')) {
|
|
122
|
+
if (args.jestPreset === false) {
|
|
123
|
+
delete migratedConfig.preset;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
preset = presets_1.allPresets[migratedConfig.preset] || presets_1.defaults;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (preset)
|
|
130
|
+
migratedConfig.preset = preset.name;
|
|
131
|
+
if (migratedConfig.moduleFileExtensions && migratedConfig.moduleFileExtensions.length && preset) {
|
|
132
|
+
presetValue = dedupSort(preset.value.moduleFileExtensions || []).join('::');
|
|
133
|
+
migratedValue = dedupSort(migratedConfig.moduleFileExtensions).join('::');
|
|
134
|
+
if (presetValue === migratedValue) {
|
|
135
|
+
delete migratedConfig.moduleFileExtensions;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (migratedConfig.testRegex && preset) {
|
|
139
|
+
migratedConfig.testMatch = null;
|
|
140
|
+
}
|
|
141
|
+
else if (migratedConfig.testMatch && migratedConfig.testMatch.length && preset) {
|
|
142
|
+
presetValue = dedupSort(preset.value.testMatch || []).join('::');
|
|
143
|
+
migratedValue = dedupSort(migratedConfig.testMatch).join('::');
|
|
144
|
+
if (presetValue === migratedValue) {
|
|
145
|
+
delete migratedConfig.testMatch;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (migratedConfig.transform) {
|
|
149
|
+
Object.keys(migratedConfig.transform).forEach(function (key) {
|
|
150
|
+
var val = migratedConfig.transform[key];
|
|
151
|
+
if (typeof val === 'string' && /\/?ts-jest(?:\/preprocessor\.js)?$/.test(val)) {
|
|
152
|
+
;
|
|
153
|
+
migratedConfig.transform[key] = 'ts-jest';
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
if (preset &&
|
|
158
|
+
migratedConfig.transform &&
|
|
159
|
+
stableStringify(migratedConfig.transform) === stableStringify(preset.value.transform)) {
|
|
160
|
+
delete migratedConfig.transform;
|
|
161
|
+
}
|
|
162
|
+
cleanupConfig(actualConfig);
|
|
163
|
+
cleanupConfig(migratedConfig);
|
|
164
|
+
before = stableStringify(actualConfig);
|
|
165
|
+
after = stableStringify(migratedConfig);
|
|
166
|
+
if (after === before) {
|
|
167
|
+
process.stderr.write("\nNo migration needed for given Jest configuration\n ");
|
|
168
|
+
return [2];
|
|
169
|
+
}
|
|
170
|
+
stringify = file.endsWith('.json') ? JSON.stringify : json5_1.stringify;
|
|
171
|
+
prefix = file.endsWith('.json') ? '"jest": ' : 'module.exports = ';
|
|
172
|
+
if (preset && migratedConfig.transform) {
|
|
173
|
+
footNotes.push("\nI couldn't check if your \"transform\" value is the same as mine which is: " + stringify(preset.value.transform, undefined, ' ') + "\nIf it is the case, you can safely remove the \"transform\" from what I've migrated.\n");
|
|
174
|
+
}
|
|
175
|
+
process.stderr.write("\nMigrated Jest configuration:\n");
|
|
176
|
+
process.stdout.write("" + prefix + stringify(migratedConfig, undefined, ' ') + "\n");
|
|
177
|
+
if (footNotes.length) {
|
|
178
|
+
process.stderr.write("\n" + footNotes.join('\n') + "\n");
|
|
179
|
+
}
|
|
180
|
+
return [2];
|
|
181
|
+
});
|
|
182
|
+
}); };
|
|
183
|
+
function cleanupConfig(config) {
|
|
184
|
+
if (config.globals) {
|
|
185
|
+
if (config.globals['ts-jest'] && Object.keys(config.globals['ts-jest']).length === 0) {
|
|
186
|
+
delete config.globals['ts-jest'];
|
|
187
|
+
}
|
|
188
|
+
if (Object.keys(config.globals).length === 0) {
|
|
189
|
+
delete config.globals;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (config.transform && Object.keys(config.transform).length === 0) {
|
|
193
|
+
delete config.transform;
|
|
194
|
+
}
|
|
195
|
+
if (config.moduleFileExtensions) {
|
|
196
|
+
config.moduleFileExtensions = dedupSort(config.moduleFileExtensions);
|
|
197
|
+
if (config.moduleFileExtensions.length === 0)
|
|
198
|
+
delete config.moduleFileExtensions;
|
|
199
|
+
}
|
|
200
|
+
if (config.testMatch) {
|
|
201
|
+
config.testMatch = dedupSort(config.testMatch);
|
|
202
|
+
if (config.testMatch.length === 0)
|
|
203
|
+
delete config.testMatch;
|
|
204
|
+
}
|
|
205
|
+
if (config.preset === "ts-jest/presets/default")
|
|
206
|
+
config.preset = presets_1.defaults.name;
|
|
207
|
+
}
|
|
208
|
+
function dedupSort(arr) {
|
|
209
|
+
return arr
|
|
210
|
+
.filter(function (s, i, a) { return a.findIndex(function (e) { return s.toString() === e.toString(); }) === i; })
|
|
211
|
+
.sort(function (a, b) { return (a.toString() > b.toString() ? 1 : a.toString() < b.toString() ? -1 : 0); });
|
|
212
|
+
}
|
|
213
|
+
exports.help = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
214
|
+
return __generator(this, function (_a) {
|
|
215
|
+
process.stdout.write("\nUsage:\n ts-jest config:migrate [options] <config-file>\n\nArguments:\n <config-file> Can be a js or json Jest config file. If it is a\n package.json file, the configuration will be read from\n the \"jest\" property.\n\nOptions:\n --js ts|babel Process .js files with ts-jest if 'ts' or with\n babel-jest if 'babel'\n --no-jest-preset Disable the use of Jest presets\n");
|
|
216
|
+
return [2];
|
|
217
|
+
});
|
|
218
|
+
}); };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.internals = void 0;
|
|
23
|
+
var hoisting = __importStar(require("./hoist-jest"));
|
|
24
|
+
exports.internals = [hoisting];
|
|
@@ -0,0 +1,121 @@
|
|
|
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
|
+
};
|
|
13
|
+
var __values = (this && this.__values) || function(o) {
|
|
14
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
15
|
+
if (m) return m.call(o);
|
|
16
|
+
if (o && typeof o.length === "number") return {
|
|
17
|
+
next: function () {
|
|
18
|
+
if (o && i >= o.length) o = void 0;
|
|
19
|
+
return { value: o && o[i++], done: !o };
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.factory = exports.version = exports.name = void 0;
|
|
26
|
+
var bs_logger_1 = require("bs-logger");
|
|
27
|
+
var path_1 = require("path");
|
|
28
|
+
exports.name = 'path-mapping';
|
|
29
|
+
exports.version = 1;
|
|
30
|
+
var isBaseDir = function (base, dir) { var _a; return !((_a = path_1.relative(base, dir)) === null || _a === void 0 ? void 0 : _a.startsWith('.')); };
|
|
31
|
+
function factory(cs) {
|
|
32
|
+
var _a;
|
|
33
|
+
var logger = cs.logger.child({ namespace: 'ts-path-mapping' });
|
|
34
|
+
var ts = cs.compilerModule;
|
|
35
|
+
var compilerOptions = cs.parsedTsConfig.options;
|
|
36
|
+
var rootDirs = (_a = compilerOptions.rootDirs) === null || _a === void 0 ? void 0 : _a.filter(path_1.isAbsolute);
|
|
37
|
+
var isDynamicImport = function (node) {
|
|
38
|
+
return ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.ImportKeyword;
|
|
39
|
+
};
|
|
40
|
+
var isRequire = function (node) {
|
|
41
|
+
return ts.isCallExpression(node) &&
|
|
42
|
+
ts.isIdentifier(node.expression) &&
|
|
43
|
+
node.expression.text === 'require' &&
|
|
44
|
+
ts.isStringLiteral(node.arguments[0]) &&
|
|
45
|
+
node.arguments.length === 1;
|
|
46
|
+
};
|
|
47
|
+
var createVisitor = function (ctx, sf) {
|
|
48
|
+
var fileName = sf.fileName;
|
|
49
|
+
var fileDir = path_1.normalize(path_1.dirname(fileName));
|
|
50
|
+
var rewritePath = function (importPath) {
|
|
51
|
+
var e_1, _a;
|
|
52
|
+
var p = importPath;
|
|
53
|
+
var resolvedModule = ts.resolveModuleName(importPath, fileName, compilerOptions, ts.sys).resolvedModule;
|
|
54
|
+
if (resolvedModule) {
|
|
55
|
+
var resolvedFileName = resolvedModule.resolvedFileName;
|
|
56
|
+
var filePath = fileDir;
|
|
57
|
+
var modulePath = path_1.dirname(resolvedFileName);
|
|
58
|
+
if (rootDirs) {
|
|
59
|
+
var fileRootDir = '';
|
|
60
|
+
var moduleRootDir = '';
|
|
61
|
+
try {
|
|
62
|
+
for (var rootDirs_1 = __values(rootDirs), rootDirs_1_1 = rootDirs_1.next(); !rootDirs_1_1.done; rootDirs_1_1 = rootDirs_1.next()) {
|
|
63
|
+
var rootDir = rootDirs_1_1.value;
|
|
64
|
+
if (isBaseDir(rootDir, resolvedFileName) && rootDir.length > moduleRootDir.length)
|
|
65
|
+
moduleRootDir = rootDir;
|
|
66
|
+
if (isBaseDir(rootDir, fileName) && rootDir.length > fileRootDir.length)
|
|
67
|
+
fileRootDir = rootDir;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
71
|
+
finally {
|
|
72
|
+
try {
|
|
73
|
+
if (rootDirs_1_1 && !rootDirs_1_1.done && (_a = rootDirs_1.return)) _a.call(rootDirs_1);
|
|
74
|
+
}
|
|
75
|
+
finally { if (e_1) throw e_1.error; }
|
|
76
|
+
}
|
|
77
|
+
if (fileRootDir && moduleRootDir) {
|
|
78
|
+
filePath = path_1.relative(fileRootDir, filePath);
|
|
79
|
+
modulePath = path_1.relative(moduleRootDir, modulePath);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
p = path_1.normalize(path_1.join(path_1.relative(filePath, modulePath), path_1.basename(resolvedFileName)));
|
|
83
|
+
p = p.startsWith('.') ? p : "./" + p;
|
|
84
|
+
}
|
|
85
|
+
return p;
|
|
86
|
+
};
|
|
87
|
+
var visitor = function (node) {
|
|
88
|
+
var rewrittenPath;
|
|
89
|
+
var newNode = ts.getMutableClone(node);
|
|
90
|
+
if (isDynamicImport(node) || isRequire(node)) {
|
|
91
|
+
rewrittenPath = rewritePath(node.arguments[0].text);
|
|
92
|
+
return __assign(__assign({}, newNode), { arguments: ts.createNodeArray([ts.createStringLiteral(rewrittenPath)]) });
|
|
93
|
+
}
|
|
94
|
+
if (ts.isExternalModuleReference(node) && ts.isStringLiteral(node.expression)) {
|
|
95
|
+
rewrittenPath = rewritePath(node.expression.text);
|
|
96
|
+
return ts.updateExternalModuleReference(newNode, ts.createLiteral(rewrittenPath));
|
|
97
|
+
}
|
|
98
|
+
if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) {
|
|
99
|
+
rewrittenPath = rewritePath(node.moduleSpecifier.text);
|
|
100
|
+
return __assign(__assign({}, newNode), { moduleSpecifier: ts.createLiteral(rewrittenPath) });
|
|
101
|
+
}
|
|
102
|
+
if (ts.isExportDeclaration(node) && node.moduleSpecifier && ts.isStringLiteral(node.moduleSpecifier)) {
|
|
103
|
+
rewrittenPath = rewritePath(node.moduleSpecifier.text);
|
|
104
|
+
return __assign(__assign({}, newNode), { moduleSpecifier: ts.createLiteral(rewrittenPath) });
|
|
105
|
+
}
|
|
106
|
+
if (ts.isImportTypeNode(node) &&
|
|
107
|
+
ts.isLiteralTypeNode(node.argument) &&
|
|
108
|
+
ts.isStringLiteral(node.argument.literal)) {
|
|
109
|
+
rewrittenPath = rewritePath(node.argument.literal.text);
|
|
110
|
+
return __assign(__assign({}, newNode), { argument: ts.createLiteralTypeNode(ts.createStringLiteral(rewrittenPath)) });
|
|
111
|
+
}
|
|
112
|
+
return ts.visitEachChild(node, visitor, ctx);
|
|
113
|
+
};
|
|
114
|
+
return visitor;
|
|
115
|
+
};
|
|
116
|
+
return function (ctx) {
|
|
117
|
+
var _a;
|
|
118
|
+
return logger.wrap((_a = {}, _a[bs_logger_1.LogContexts.logLevel] = bs_logger_1.LogLevels.debug, _a.call = null, _a), 'visitSourceFileNode(): path mapping', function (sf) { return ts.visitNode(sf, createVisitor(ctx, sf)); });
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
exports.factory = factory;
|
|
@@ -5,9 +5,8 @@ import { ConfigSet } from './config/config-set';
|
|
|
5
5
|
export declare class TsJestTransformer implements Transformer {
|
|
6
6
|
protected readonly logger: Logger;
|
|
7
7
|
protected _transformCfgStr: string;
|
|
8
|
-
protected _configSet: ConfigSet;
|
|
9
8
|
constructor();
|
|
9
|
+
configsFor(jestConfig: Config.ProjectConfig): ConfigSet;
|
|
10
10
|
process(input: string, filePath: Config.Path, jestConfig: Config.ProjectConfig, transformOptions?: TransformOptions): TransformedSource | string;
|
|
11
11
|
getCacheKey(fileContent: string, filePath: string, _jestConfigStr: string, transformOptions: CacheKeyOptions): string;
|
|
12
|
-
protected createOrResolveTransformerCfg(jestConfig: Config.ProjectConfig): void;
|
|
13
12
|
}
|
|
@@ -24,13 +24,50 @@ var TsJestTransformer = (function () {
|
|
|
24
24
|
this.logger = logger_1.rootLogger.child({ namespace: 'ts-jest-transformer' });
|
|
25
25
|
this.logger.debug('created new transformer');
|
|
26
26
|
}
|
|
27
|
+
TsJestTransformer.prototype.configsFor = function (jestConfig) {
|
|
28
|
+
var ccs = TsJestTransformer._cachedConfigSets.find(function (cs) { return cs.jestConfig.value === jestConfig; });
|
|
29
|
+
var configSet;
|
|
30
|
+
if (ccs) {
|
|
31
|
+
this._transformCfgStr = ccs.transformerCfgStr;
|
|
32
|
+
configSet = ccs.configSet;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
var serializedJestCfg_1 = json_1.stringify(jestConfig);
|
|
36
|
+
var serializedCcs = TsJestTransformer._cachedConfigSets.find(function (cs) { return cs.jestConfig.serialized === serializedJestCfg_1; });
|
|
37
|
+
if (serializedCcs) {
|
|
38
|
+
serializedCcs.jestConfig.value = jestConfig;
|
|
39
|
+
this._transformCfgStr = serializedCcs.transformerCfgStr;
|
|
40
|
+
configSet = serializedCcs.configSet;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.logger.info('no matching config-set found, creating a new one');
|
|
44
|
+
configSet = new config_set_1.ConfigSet(jestConfig);
|
|
45
|
+
var jest_1 = __assign({}, jestConfig);
|
|
46
|
+
var globals = (jest_1.globals = __assign({}, jest_1.globals));
|
|
47
|
+
jest_1.name = undefined;
|
|
48
|
+
jest_1.cacheDirectory = undefined;
|
|
49
|
+
delete globals['ts-jest'];
|
|
50
|
+
this._transformCfgStr = new jsonable_value_1.JsonableValue(__assign(__assign({ digest: configSet.tsJestDigest, babel: configSet.babelConfig }, jest_1), { tsconfig: {
|
|
51
|
+
options: configSet.parsedTsConfig.options,
|
|
52
|
+
raw: configSet.parsedTsConfig.raw,
|
|
53
|
+
} })).serialized;
|
|
54
|
+
TsJestTransformer._cachedConfigSets.push({
|
|
55
|
+
jestConfig: new jsonable_value_1.JsonableValue(jestConfig),
|
|
56
|
+
configSet: configSet,
|
|
57
|
+
transformerCfgStr: this._transformCfgStr,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return configSet;
|
|
62
|
+
};
|
|
27
63
|
TsJestTransformer.prototype.process = function (input, filePath, jestConfig, transformOptions) {
|
|
28
64
|
this.logger.debug({ fileName: filePath, transformOptions: transformOptions }, 'processing', filePath);
|
|
29
65
|
var result;
|
|
30
66
|
var source = input;
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
var
|
|
67
|
+
var configs = this.configsFor(jestConfig);
|
|
68
|
+
var hooks = configs.hooks;
|
|
69
|
+
var shouldStringifyContent = configs.shouldStringifyContent(filePath);
|
|
70
|
+
var babelJest = shouldStringifyContent ? undefined : configs.babelJestTransformer;
|
|
34
71
|
var isDefinitionFile = filePath.endsWith(constants_1.DECLARATION_TYPE_EXT);
|
|
35
72
|
var isJsFile = constants_1.JS_JSX_REGEX.test(filePath);
|
|
36
73
|
var isTsFile = !isDefinitionFile && constants_1.TS_TSX_REGEX.test(filePath);
|
|
@@ -40,12 +77,12 @@ var TsJestTransformer = (function () {
|
|
|
40
77
|
else if (isDefinitionFile) {
|
|
41
78
|
result = '';
|
|
42
79
|
}
|
|
43
|
-
else if (!
|
|
80
|
+
else if (!configs.parsedTsConfig.options.allowJs && isJsFile) {
|
|
44
81
|
this.logger.warn({ fileName: filePath }, messages_1.interpolate("Got a `.js` file to compile while `allowJs` option is not set to `true` (file: {{path}}). To fix this:\n - if you want TypeScript to process JS files, set `allowJs` to `true` in your TypeScript config (usually tsconfig.json)\n - if you do not want TypeScript to process your `.js` files, in your Jest config change the `transform` key which value is `ts-jest` so that it does not match `.js` files anymore", { path: filePath }));
|
|
45
82
|
result = source;
|
|
46
83
|
}
|
|
47
84
|
else if (isJsFile || isTsFile) {
|
|
48
|
-
result =
|
|
85
|
+
result = configs.tsCompiler.compile(source, filePath);
|
|
49
86
|
}
|
|
50
87
|
else {
|
|
51
88
|
var message = babelJest ? "Got a unknown file type to compile (file: {{path}}). To fix this, in your Jest config change the `transform` key which value is `ts-jest` so that it does not match this kind of files anymore. If you still want Babel to process it, add another entry to the `transform` option with value `babel-jest` which key matches this type of files." : "Got a unknown file type to compile (file: {{path}}). To fix this, in your Jest config change the `transform` key which value is `ts-jest` so that it does not match this kind of files anymore.";
|
|
@@ -66,45 +103,11 @@ var TsJestTransformer = (function () {
|
|
|
66
103
|
return result;
|
|
67
104
|
};
|
|
68
105
|
TsJestTransformer.prototype.getCacheKey = function (fileContent, filePath, _jestConfigStr, transformOptions) {
|
|
69
|
-
this.
|
|
106
|
+
var configs = this.configsFor(transformOptions.config);
|
|
70
107
|
this.logger.debug({ fileName: filePath, transformOptions: transformOptions }, 'computing cache key for', filePath);
|
|
71
|
-
var _a = transformOptions.instrument, instrument = _a === void 0 ? false : _a, _b = transformOptions.rootDir, rootDir = _b === void 0 ?
|
|
108
|
+
var _a = transformOptions.instrument, instrument = _a === void 0 ? false : _a, _b = transformOptions.rootDir, rootDir = _b === void 0 ? configs.rootDir : _b;
|
|
72
109
|
return sha1_1.sha1(this._transformCfgStr, '\x00', rootDir, '\x00', "instrument:" + (instrument ? 'on' : 'off'), '\x00', fileContent, '\x00', filePath);
|
|
73
110
|
};
|
|
74
|
-
TsJestTransformer.prototype.createOrResolveTransformerCfg = function (jestConfig) {
|
|
75
|
-
var ccs = TsJestTransformer._cachedConfigSets.find(function (cs) { return cs.jestConfig.value === jestConfig; });
|
|
76
|
-
if (ccs) {
|
|
77
|
-
this._transformCfgStr = ccs.transformerCfgStr;
|
|
78
|
-
this._configSet = ccs.configSet;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
var serializedJestCfg_1 = json_1.stringify(jestConfig);
|
|
82
|
-
var serializedCcs = TsJestTransformer._cachedConfigSets.find(function (cs) { return cs.jestConfig.serialized === serializedJestCfg_1; });
|
|
83
|
-
if (serializedCcs) {
|
|
84
|
-
serializedCcs.jestConfig.value = jestConfig;
|
|
85
|
-
this._transformCfgStr = serializedCcs.transformerCfgStr;
|
|
86
|
-
this._configSet = serializedCcs.configSet;
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
this.logger.info('no matching config-set found, creating a new one');
|
|
90
|
-
this._configSet = new config_set_1.ConfigSet(jestConfig);
|
|
91
|
-
var jest_1 = __assign({}, jestConfig);
|
|
92
|
-
var globals = (jest_1.globals = __assign({}, jest_1.globals));
|
|
93
|
-
jest_1.name = undefined;
|
|
94
|
-
jest_1.cacheDirectory = undefined;
|
|
95
|
-
delete globals['ts-jest'];
|
|
96
|
-
this._transformCfgStr = new jsonable_value_1.JsonableValue(__assign(__assign({ digest: this._configSet.tsJestDigest }, jest_1), { babel: this._configSet.babelConfig, tsconfig: {
|
|
97
|
-
options: this._configSet.parsedTsConfig.options,
|
|
98
|
-
raw: this._configSet.parsedTsConfig.raw,
|
|
99
|
-
} })).serialized;
|
|
100
|
-
TsJestTransformer._cachedConfigSets.push({
|
|
101
|
-
jestConfig: new jsonable_value_1.JsonableValue(jestConfig),
|
|
102
|
-
configSet: this._configSet,
|
|
103
|
-
transformerCfgStr: this._transformCfgStr,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
111
|
TsJestTransformer._cachedConfigSets = [];
|
|
109
112
|
return TsJestTransformer;
|
|
110
113
|
}());
|
package/package.json
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-jest",
|
|
3
|
-
"version": "26.4.4
|
|
3
|
+
"version": "26.4.4",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
|
-
"bin":
|
|
6
|
+
"bin": {
|
|
7
|
+
"ts-jest": "cli.js"
|
|
8
|
+
},
|
|
7
9
|
"description": "A preprocessor with source maps support to help use TypeScript with Jest",
|
|
8
10
|
"scripts": {
|
|
9
11
|
"prebuild": "node scripts/clean-dist.js",
|