ts-jest 25.2.1 → 25.3.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.
- package/.ts-jest-digest +1 -1
- package/CHANGELOG.md +57 -28
- package/CONTRIBUTING.md +1 -1
- package/README.md +3 -5
- package/TROUBLESHOOTING.md +41 -0
- package/dist/cli/config/migrate.js +6 -6
- package/dist/cli/helpers/presets.js +4 -10
- package/dist/{compiler.d.ts → compiler/instance.d.ts} +0 -0
- package/dist/compiler/instance.js +128 -0
- package/dist/compiler/language-service.d.ts +1 -0
- package/dist/compiler/language-service.js +94 -0
- package/dist/compiler/program.d.ts +1 -0
- package/dist/compiler/program.js +123 -0
- package/dist/compiler/transpile-module.d.ts +1 -0
- package/dist/compiler/transpile-module.js +21 -0
- package/dist/config/config-set.js +16 -20
- package/dist/config/paths-to-module-name-mapper.d.ts +1 -1
- package/dist/config/paths-to-module-name-mapper.js +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/ts-jest-transformer.d.ts +3 -5
- package/dist/ts-jest-transformer.js +17 -19
- package/dist/types.d.ts +5 -40
- package/dist/util/backports.js +4 -4
- package/dist/util/importer.js +3 -3
- package/dist/util/messages.js +0 -40
- package/dist/util/ts-error.js +1 -2
- package/dist/util/version-checkers.js +5 -12
- package/package.json +8 -7
- package/dist/compiler.js +0 -247
|
@@ -5,18 +5,11 @@ var get_package_version_1 = require("./get-package-version");
|
|
|
5
5
|
var logger_1 = require("./logger");
|
|
6
6
|
var messages_1 = require("./messages");
|
|
7
7
|
var logger = logger_1.rootLogger.child({ namespace: 'versions' });
|
|
8
|
-
var ExpectedVersions;
|
|
9
|
-
(function (ExpectedVersions) {
|
|
10
|
-
ExpectedVersions["Jest"] = ">=25 <26";
|
|
11
|
-
ExpectedVersions["TypeScript"] = ">=2.7 <4";
|
|
12
|
-
ExpectedVersions["BabelJest"] = ">=25 <26";
|
|
13
|
-
ExpectedVersions["BabelCore"] = ">=7.0.0-beta.0 <8";
|
|
14
|
-
})(ExpectedVersions = exports.ExpectedVersions || (exports.ExpectedVersions = {}));
|
|
15
8
|
exports.VersionCheckers = {
|
|
16
|
-
jest: createVersionChecker('jest',
|
|
17
|
-
typescript: createVersionChecker('typescript',
|
|
18
|
-
babelJest: createVersionChecker('babel-jest',
|
|
19
|
-
babelCore: createVersionChecker('@babel/core',
|
|
9
|
+
jest: createVersionChecker('jest', ">=25 <26"),
|
|
10
|
+
typescript: createVersionChecker('typescript', ">=2.7 <4"),
|
|
11
|
+
babelJest: createVersionChecker('babel-jest', ">=25 <26"),
|
|
12
|
+
babelCore: createVersionChecker('@babel/core', ">=7.0.0-beta.0 <8"),
|
|
20
13
|
};
|
|
21
14
|
function checkVersion(name, expectedRange, action) {
|
|
22
15
|
if (action === void 0) { action = 'warn'; }
|
|
@@ -28,7 +21,7 @@ function checkVersion(name, expectedRange, action) {
|
|
|
28
21
|
}, 'checking version of %s: %s', name, success ? 'OK' : 'NOT OK');
|
|
29
22
|
if (!action || success)
|
|
30
23
|
return success;
|
|
31
|
-
var message = messages_1.interpolate(version ?
|
|
24
|
+
var message = messages_1.interpolate(version ? "Version {{actualVersion}} of {{module}} installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version ({{expectedVersion}}). Please do not report issues in ts-jest if you are using unsupported versions." : "Module {{module}} is not installed. If you're experiencing issues, consider installing a supported version ({{expectedVersion}}).", {
|
|
32
25
|
module: name,
|
|
33
26
|
actualVersion: version || '??',
|
|
34
27
|
expectedVersion: rangeToHumanString(expectedRange),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-jest",
|
|
3
|
-
"version": "25.
|
|
3
|
+
"version": "25.3.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"bin": "cli.js",
|
|
@@ -67,10 +67,10 @@
|
|
|
67
67
|
"json5": "2.x",
|
|
68
68
|
"lodash.memoize": "4.x",
|
|
69
69
|
"make-error": "1.x",
|
|
70
|
-
"mkdirp": "
|
|
70
|
+
"mkdirp": "1.x",
|
|
71
71
|
"resolve": "1.x",
|
|
72
|
-
"semver": "
|
|
73
|
-
"yargs-parser": "^
|
|
72
|
+
"semver": "6.x",
|
|
73
|
+
"yargs-parser": "^18.1.1"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
76
|
"jest": ">=25 <26"
|
|
@@ -99,6 +99,7 @@
|
|
|
99
99
|
"@types/lodash.set": "4.x",
|
|
100
100
|
"@types/mkdirp": "latest",
|
|
101
101
|
"@types/node": "10.x",
|
|
102
|
+
"@types/react": "^16.x",
|
|
102
103
|
"@types/resolve": "latest",
|
|
103
104
|
"@types/semver": "latest",
|
|
104
105
|
"@types/yargs": "latest",
|
|
@@ -106,7 +107,7 @@
|
|
|
106
107
|
"conventional-changelog-cli": "2.x",
|
|
107
108
|
"cross-spawn": "latest",
|
|
108
109
|
"eslint": "latest",
|
|
109
|
-
"fs-extra": "
|
|
110
|
+
"fs-extra": "8.x",
|
|
110
111
|
"glob-gitignore": "latest",
|
|
111
112
|
"husky": "3.x",
|
|
112
113
|
"jest": "25.x",
|
|
@@ -115,7 +116,7 @@
|
|
|
115
116
|
"lodash.merge": "4.x",
|
|
116
117
|
"lodash.set": "4.x",
|
|
117
118
|
"npm-run-all": "latest",
|
|
118
|
-
"prettier": "
|
|
119
|
+
"prettier": "1.x",
|
|
119
120
|
"source-map": "latest",
|
|
120
121
|
"tslint": "latest",
|
|
121
122
|
"tslint-config-prettier": "latest",
|
|
@@ -133,6 +134,6 @@
|
|
|
133
134
|
]
|
|
134
135
|
},
|
|
135
136
|
"engines": {
|
|
136
|
-
"node": ">=
|
|
137
|
+
"node": ">= 8"
|
|
137
138
|
}
|
|
138
139
|
}
|
package/dist/compiler.js
DELETED
|
@@ -1,247 +0,0 @@
|
|
|
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
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
25
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
26
|
-
if (!m) return o;
|
|
27
|
-
var i = m.call(o), r, ar = [], e;
|
|
28
|
-
try {
|
|
29
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
30
|
-
}
|
|
31
|
-
catch (error) { e = { error: error }; }
|
|
32
|
-
finally {
|
|
33
|
-
try {
|
|
34
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
35
|
-
}
|
|
36
|
-
finally { if (e) throw e.error; }
|
|
37
|
-
}
|
|
38
|
-
return ar;
|
|
39
|
-
};
|
|
40
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
var bs_logger_1 = require("bs-logger");
|
|
42
|
-
var bufferFrom = require("buffer-from");
|
|
43
|
-
var stableStringify = require("fast-json-stable-stringify");
|
|
44
|
-
var fs_1 = require("fs");
|
|
45
|
-
var build_1 = require("jest-config/build");
|
|
46
|
-
var memoize = require("lodash.memoize");
|
|
47
|
-
var mkdirp = require("mkdirp");
|
|
48
|
-
var path_1 = require("path");
|
|
49
|
-
var messages_1 = require("./util/messages");
|
|
50
|
-
var sha1_1 = require("./util/sha1");
|
|
51
|
-
var hasOwn = Object.prototype.hasOwnProperty;
|
|
52
|
-
function createCompiler(configs) {
|
|
53
|
-
var e_1, _a, _b, _c;
|
|
54
|
-
var logger = configs.logger.child({ namespace: 'ts-compiler' });
|
|
55
|
-
logger.debug('creating typescript compiler', configs.tsJest.isolatedModules ? '(isolated modules)' : '(language service)');
|
|
56
|
-
var cachedir = configs.tsCacheDir;
|
|
57
|
-
var memoryCache = {
|
|
58
|
-
contents: Object.create(null),
|
|
59
|
-
versions: Object.create(null),
|
|
60
|
-
outputs: Object.create(null),
|
|
61
|
-
};
|
|
62
|
-
var ts = configs.compilerModule;
|
|
63
|
-
var cwd = configs.cwd;
|
|
64
|
-
var extensions = ['.ts', '.tsx'];
|
|
65
|
-
var _d = configs.typescript, compilerOptions = _d.options, fileNames = _d.fileNames;
|
|
66
|
-
if (compilerOptions.allowJs) {
|
|
67
|
-
extensions.push('.js');
|
|
68
|
-
extensions.push('.jsx');
|
|
69
|
-
}
|
|
70
|
-
try {
|
|
71
|
-
for (var fileNames_1 = __values(fileNames), fileNames_1_1 = fileNames_1.next(); !fileNames_1_1.done; fileNames_1_1 = fileNames_1.next()) {
|
|
72
|
-
var path = fileNames_1_1.value;
|
|
73
|
-
memoryCache.versions[path] = 1;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
77
|
-
finally {
|
|
78
|
-
try {
|
|
79
|
-
if (fileNames_1_1 && !fileNames_1_1.done && (_a = fileNames_1.return)) _a.call(fileNames_1);
|
|
80
|
-
}
|
|
81
|
-
finally { if (e_1) throw e_1.error; }
|
|
82
|
-
}
|
|
83
|
-
var getExtension = compilerOptions.jsx === ts.JsxEmit.Preserve
|
|
84
|
-
? function (path) { return (/\.[tj]sx$/.test(path) ? '.jsx' : '.js'); }
|
|
85
|
-
: function (_) { return '.js'; };
|
|
86
|
-
var transformers = configs.tsCustomTransformers;
|
|
87
|
-
var getOutput = function (code, fileName) {
|
|
88
|
-
logger.debug({ fileName: fileName }, 'getOutput(): compiling as isolated module');
|
|
89
|
-
var result = ts.transpileModule(code, {
|
|
90
|
-
fileName: fileName,
|
|
91
|
-
transformers: transformers,
|
|
92
|
-
compilerOptions: compilerOptions,
|
|
93
|
-
reportDiagnostics: configs.shouldReportDiagnostic(fileName),
|
|
94
|
-
});
|
|
95
|
-
if (result.diagnostics)
|
|
96
|
-
configs.raiseDiagnostics(result.diagnostics, fileName, logger);
|
|
97
|
-
return [result.outputText, result.sourceMapText];
|
|
98
|
-
};
|
|
99
|
-
var getTypeInfo = function (_code, _fileName, _position) {
|
|
100
|
-
throw new TypeError(messages_1.Errors.TypesUnavailableWithoutTypeCheck);
|
|
101
|
-
};
|
|
102
|
-
if (!configs.tsJest.isolatedModules) {
|
|
103
|
-
var updateMemoryCache_1 = function (code, fileName) {
|
|
104
|
-
logger.debug({ fileName: fileName }, "updateMemoryCache()");
|
|
105
|
-
if (memoryCache.contents[fileName] !== code) {
|
|
106
|
-
memoryCache.contents[fileName] = code;
|
|
107
|
-
memoryCache.versions[fileName] = (memoryCache.versions[fileName] || 0) + 1;
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
var serviceHostDebugCtx = (_b = {},
|
|
111
|
-
_b[bs_logger_1.LogContexts.logLevel] = bs_logger_1.LogLevels.debug,
|
|
112
|
-
_b.namespace = 'ts:serviceHost',
|
|
113
|
-
_b.call = null,
|
|
114
|
-
_b);
|
|
115
|
-
var serviceHostTraceCtx = __assign(__assign({}, serviceHostDebugCtx), (_c = {}, _c[bs_logger_1.LogContexts.logLevel] = bs_logger_1.LogLevels.trace, _c));
|
|
116
|
-
var transformIgnorePattern = (configs.jest.transformIgnorePatterns || build_1.defaults.transformIgnorePatterns)
|
|
117
|
-
.map(function (pattern) { return build_1.replaceRootDirInPath(configs.rootDir, pattern); })
|
|
118
|
-
.join('|');
|
|
119
|
-
var transformIgnoreRegExp_1 = new RegExp(transformIgnorePattern);
|
|
120
|
-
var serviceHost = {
|
|
121
|
-
getScriptFileNames: function () { return Object.keys(memoryCache.versions); },
|
|
122
|
-
getScriptVersion: function (fileName) {
|
|
123
|
-
var normalizedFileName = path_1.normalize(fileName);
|
|
124
|
-
var version = memoryCache.versions[normalizedFileName];
|
|
125
|
-
return version === undefined ? undefined : String(version);
|
|
126
|
-
},
|
|
127
|
-
getScriptSnapshot: function (fileName) {
|
|
128
|
-
var normalizedFileName = path_1.normalize(fileName);
|
|
129
|
-
var hit = hasOwn.call(memoryCache.contents, normalizedFileName);
|
|
130
|
-
logger.trace({ normalizedFileName: normalizedFileName, cacheHit: hit }, "getScriptSnapshot():", 'cache', hit ? 'hit' : 'miss');
|
|
131
|
-
if (!hit) {
|
|
132
|
-
memoryCache.contents[normalizedFileName] = ts.sys.readFile(normalizedFileName);
|
|
133
|
-
}
|
|
134
|
-
var contents = memoryCache.contents[normalizedFileName];
|
|
135
|
-
if (contents === undefined) {
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
return ts.ScriptSnapshot.fromString(contents);
|
|
139
|
-
},
|
|
140
|
-
fileExists: memoize(ts.sys.fileExists),
|
|
141
|
-
readFile: logger.wrap(serviceHostTraceCtx, 'readFile', memoize(ts.sys.readFile)),
|
|
142
|
-
readDirectory: memoize(ts.sys.readDirectory),
|
|
143
|
-
getDirectories: memoize(ts.sys.getDirectories),
|
|
144
|
-
directoryExists: memoize(ts.sys.directoryExists),
|
|
145
|
-
realpath: memoize(ts.sys.realpath),
|
|
146
|
-
getNewLine: function () { return '\n'; },
|
|
147
|
-
getCurrentDirectory: function () { return cwd; },
|
|
148
|
-
getCompilationSettings: function () { return compilerOptions; },
|
|
149
|
-
getDefaultLibFileName: function () { return ts.getDefaultLibFilePath(compilerOptions); },
|
|
150
|
-
getCustomTransformers: function () { return transformers; },
|
|
151
|
-
};
|
|
152
|
-
logger.debug('creating language service');
|
|
153
|
-
var service_1 = ts.createLanguageService(serviceHost);
|
|
154
|
-
getOutput = function (code, fileName) {
|
|
155
|
-
logger.debug({ fileName: fileName }, 'getOutput(): compiling using language service');
|
|
156
|
-
updateMemoryCache_1(code, fileName);
|
|
157
|
-
var output = service_1.getEmitOutput(fileName);
|
|
158
|
-
if (configs.shouldReportDiagnostic(fileName)) {
|
|
159
|
-
logger.debug({ fileName: fileName }, 'getOutput(): computing diagnostics');
|
|
160
|
-
var diagnostics = service_1
|
|
161
|
-
.getCompilerOptionsDiagnostics()
|
|
162
|
-
.concat(service_1.getSyntacticDiagnostics(fileName))
|
|
163
|
-
.concat(service_1.getSemanticDiagnostics(fileName));
|
|
164
|
-
configs.raiseDiagnostics(diagnostics, fileName, logger);
|
|
165
|
-
}
|
|
166
|
-
if (output.emitSkipped) {
|
|
167
|
-
throw new TypeError(path_1.relative(cwd, fileName) + ": Emit skipped");
|
|
168
|
-
}
|
|
169
|
-
if (output.outputFiles.length === 0 && !transformIgnoreRegExp_1.test(fileName)) {
|
|
170
|
-
var normalizedFileName = path_1.normalize(fileName);
|
|
171
|
-
if (!hasOwn.call(memoryCache.versions, normalizedFileName)) {
|
|
172
|
-
memoryCache.versions[normalizedFileName] = 0;
|
|
173
|
-
}
|
|
174
|
-
output = service_1.getEmitOutput(fileName);
|
|
175
|
-
}
|
|
176
|
-
if (output.outputFiles.length === 0) {
|
|
177
|
-
throw new TypeError(messages_1.interpolate(messages_1.Errors.UnableToRequireDefinitionFile, {
|
|
178
|
-
file: path_1.basename(fileName),
|
|
179
|
-
}));
|
|
180
|
-
}
|
|
181
|
-
return [output.outputFiles[1].text, output.outputFiles[0].text];
|
|
182
|
-
};
|
|
183
|
-
getTypeInfo = function (code, fileName, position) {
|
|
184
|
-
updateMemoryCache_1(code, fileName);
|
|
185
|
-
var info = service_1.getQuickInfoAtPosition(fileName, position);
|
|
186
|
-
var name = ts.displayPartsToString(info ? info.displayParts : []);
|
|
187
|
-
var comment = ts.displayPartsToString(info ? info.documentation : []);
|
|
188
|
-
return { name: name, comment: comment };
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
var compile = readThrough(cachedir, memoryCache, getOutput, getExtension, cwd, logger);
|
|
192
|
-
return { cwd: cwd, compile: compile, getTypeInfo: getTypeInfo, extensions: extensions, cachedir: cachedir, ts: ts };
|
|
193
|
-
}
|
|
194
|
-
exports.createCompiler = createCompiler;
|
|
195
|
-
function readThrough(cachedir, memoryCache, compile, getExtension, cwd, logger) {
|
|
196
|
-
if (!cachedir) {
|
|
197
|
-
return function (code, fileName, lineOffset) {
|
|
198
|
-
logger.debug({ fileName: fileName }, 'readThrough(): no cache');
|
|
199
|
-
var _a = __read(compile(code, fileName, lineOffset), 2), value = _a[0], sourceMap = _a[1];
|
|
200
|
-
var output = updateOutput(value, fileName, sourceMap, getExtension, cwd);
|
|
201
|
-
memoryCache.outputs[fileName] = output;
|
|
202
|
-
return output;
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
mkdirp.sync(cachedir);
|
|
206
|
-
return function (code, fileName, lineOffset) {
|
|
207
|
-
var cachePath = path_1.join(cachedir, getCacheName(code, fileName));
|
|
208
|
-
var extension = getExtension(fileName);
|
|
209
|
-
var outputPath = "" + cachePath + extension;
|
|
210
|
-
try {
|
|
211
|
-
var output_1 = fs_1.readFileSync(outputPath, 'utf8');
|
|
212
|
-
if (isValidCacheContent(output_1)) {
|
|
213
|
-
logger.debug({ fileName: fileName }, 'readThrough(): cache hit');
|
|
214
|
-
memoryCache.outputs[fileName] = output_1;
|
|
215
|
-
return output_1;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
catch (err) { }
|
|
219
|
-
logger.debug({ fileName: fileName }, 'readThrough(): cache miss');
|
|
220
|
-
var _a = __read(compile(code, fileName, lineOffset), 2), value = _a[0], sourceMap = _a[1];
|
|
221
|
-
var output = updateOutput(value, fileName, sourceMap, getExtension, cwd);
|
|
222
|
-
logger.debug({ fileName: fileName, outputPath: outputPath }, 'readThrough(): writing caches');
|
|
223
|
-
memoryCache.outputs[fileName] = output;
|
|
224
|
-
fs_1.writeFileSync(outputPath, output);
|
|
225
|
-
return output;
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
function updateOutput(outputText, fileName, sourceMap, getExtension, sourceRoot) {
|
|
229
|
-
var base = path_1.basename(fileName);
|
|
230
|
-
var base64Map = bufferFrom(updateSourceMap(sourceMap, fileName, sourceRoot), 'utf8').toString('base64');
|
|
231
|
-
var sourceMapContent = "data:application/json;charset=utf-8;base64," + base64Map;
|
|
232
|
-
var sourceMapLength = (base + ".map").length + (getExtension(fileName).length - path_1.extname(fileName).length);
|
|
233
|
-
return outputText.slice(0, -sourceMapLength) + sourceMapContent;
|
|
234
|
-
}
|
|
235
|
-
function updateSourceMap(sourceMapText, fileName, _sourceRoot) {
|
|
236
|
-
var sourceMap = JSON.parse(sourceMapText);
|
|
237
|
-
sourceMap.file = fileName;
|
|
238
|
-
sourceMap.sources = [fileName];
|
|
239
|
-
delete sourceMap.sourceRoot;
|
|
240
|
-
return stableStringify(sourceMap);
|
|
241
|
-
}
|
|
242
|
-
function getCacheName(sourceCode, fileName) {
|
|
243
|
-
return sha1_1.sha1(fileName, '\x00', sourceCode);
|
|
244
|
-
}
|
|
245
|
-
function isValidCacheContent(contents) {
|
|
246
|
-
return /(?:9|0=|Q==)$/.test(contents.slice(-3));
|
|
247
|
-
}
|