ts-jest 29.3.2 → 29.3.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 +21 -0
- package/dist/cli/config/init.js +103 -128
- package/dist/cli/config/migrate.js +113 -156
- package/dist/cli/help.js +14 -42
- package/dist/cli/helpers/presets.js +7 -8
- package/dist/cli/index.js +47 -101
- package/dist/config/paths-to-module-name-mapper.js +37 -61
- package/dist/constants.js +1 -5
- package/dist/index.js +2 -2
- package/dist/legacy/compiler/compiler-utils.js +5 -5
- package/dist/legacy/compiler/ts-compiler.js +194 -213
- package/dist/legacy/compiler/ts-jest-compiler.js +9 -9
- package/dist/legacy/config/config-set.js +298 -298
- package/dist/legacy/index.js +2 -4
- package/dist/legacy/ts-jest-transformer.js +134 -201
- package/dist/presets/all-presets.js +2 -2
- package/dist/presets/create-jest-preset.js +101 -139
- package/dist/transformers/hoist-jest.js +30 -43
- package/dist/transpilers/typescript/transpile-module.js +69 -98
- package/dist/types.d.ts +2 -2
- package/dist/types.js +1 -1
- package/dist/utils/backports.js +26 -28
- package/dist/utils/get-package-version.js +2 -2
- package/dist/utils/importer.js +53 -108
- package/dist/utils/json.js +2 -2
- package/dist/utils/jsonable-value.js +20 -27
- package/dist/utils/logger.js +11 -15
- package/dist/utils/memoize.js +11 -17
- package/dist/utils/messages.js +2 -3
- package/dist/utils/sha1.js +7 -11
- package/dist/utils/ts-error.js +19 -35
- package/package.json +19 -19
- package/tsconfig.base.json +20 -0
- package/sonar-project.properties +0 -16
|
@@ -1,40 +1,4 @@
|
|
|
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
|
-
};
|
|
13
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
14
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
-
if (!m) return o;
|
|
16
|
-
var i = m.call(o), r, ar = [], e;
|
|
17
|
-
try {
|
|
18
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
19
|
-
}
|
|
20
|
-
catch (error) { e = { error: error }; }
|
|
21
|
-
finally {
|
|
22
|
-
try {
|
|
23
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
24
|
-
}
|
|
25
|
-
finally { if (e) throw e.error; }
|
|
26
|
-
}
|
|
27
|
-
return ar;
|
|
28
|
-
};
|
|
29
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
30
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
31
|
-
if (ar || !(i in from)) {
|
|
32
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
33
|
-
ar[i] = from[i];
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
37
|
-
};
|
|
38
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
3
|
exports.createJestPreset = createJestPreset;
|
|
40
4
|
exports.createDefaultPreset = createDefaultPreset;
|
|
@@ -49,170 +13,168 @@ exports.createJsWithTsEsmPreset = createJsWithTsEsmPreset;
|
|
|
49
13
|
exports.createJsWithTsEsmLegacyPreset = createJsWithTsEsmLegacyPreset;
|
|
50
14
|
exports.createJsWithBabelEsmPreset = createJsWithBabelEsmPreset;
|
|
51
15
|
exports.createJsWithBabelEsmLegacyPreset = createJsWithBabelEsmLegacyPreset;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
16
|
+
const constants_1 = require("../constants");
|
|
17
|
+
const utils_1 = require("../utils");
|
|
18
|
+
const logger = utils_1.rootLogger.child({ namespace: 'jest-preset' });
|
|
55
19
|
/**
|
|
56
20
|
* @deprecated use other functions below instead
|
|
57
21
|
*/
|
|
58
|
-
function createJestPreset(legacy, allowJs, extraOptions) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
: ['
|
|
22
|
+
function createJestPreset(legacy = false, allowJs = false, extraOptions = {}) {
|
|
23
|
+
logger.debug({ allowJs }, 'creating jest presets', allowJs ? 'handling' : 'not handling', 'JavaScript files');
|
|
24
|
+
const { extensionsToTreatAsEsm, moduleFileExtensions, testMatch } = extraOptions;
|
|
25
|
+
const supportESM = extensionsToTreatAsEsm?.length;
|
|
26
|
+
const tsJestTransformOptions = supportESM ? { useESM: true } : {};
|
|
27
|
+
return {
|
|
28
|
+
...(extensionsToTreatAsEsm ? { extensionsToTreatAsEsm } : undefined),
|
|
29
|
+
...(moduleFileExtensions ? { moduleFileExtensions } : undefined),
|
|
30
|
+
...(testMatch ? { testMatch } : undefined),
|
|
31
|
+
transform: {
|
|
32
|
+
...extraOptions.transform,
|
|
33
|
+
[allowJs ? (supportESM ? '^.+\\.m?[tj]sx?$' : '^.+\\.[tj]sx?$') : '^.+\\.tsx?$']: legacy
|
|
34
|
+
? ['ts-jest/legacy', tsJestTransformOptions]
|
|
35
|
+
: ['ts-jest', tsJestTransformOptions],
|
|
36
|
+
},
|
|
37
|
+
};
|
|
70
38
|
}
|
|
71
|
-
function createDefaultPreset(tsJestTransformOptions) {
|
|
72
|
-
var _a;
|
|
73
|
-
if (tsJestTransformOptions === void 0) { tsJestTransformOptions = {}; }
|
|
39
|
+
function createDefaultPreset(tsJestTransformOptions = {}) {
|
|
74
40
|
logger.debug('creating default CJS Jest preset');
|
|
75
41
|
return {
|
|
76
|
-
transform:
|
|
77
|
-
|
|
78
|
-
|
|
42
|
+
transform: {
|
|
43
|
+
[constants_1.TS_TRANSFORM_PATTERN]: ['ts-jest', tsJestTransformOptions],
|
|
44
|
+
},
|
|
79
45
|
};
|
|
80
46
|
}
|
|
81
|
-
function createDefaultLegacyPreset(tsJestTransformOptions) {
|
|
82
|
-
var _a;
|
|
83
|
-
if (tsJestTransformOptions === void 0) { tsJestTransformOptions = {}; }
|
|
47
|
+
function createDefaultLegacyPreset(tsJestTransformOptions = {}) {
|
|
84
48
|
logger.debug('creating default CJS Jest preset');
|
|
85
49
|
return {
|
|
86
|
-
transform:
|
|
87
|
-
|
|
88
|
-
|
|
50
|
+
transform: {
|
|
51
|
+
[constants_1.TS_TRANSFORM_PATTERN]: ['ts-jest/legacy', tsJestTransformOptions],
|
|
52
|
+
},
|
|
89
53
|
};
|
|
90
54
|
}
|
|
91
|
-
function createJsWithTsPreset(tsJestTransformOptions) {
|
|
92
|
-
var _a;
|
|
93
|
-
if (tsJestTransformOptions === void 0) { tsJestTransformOptions = {}; }
|
|
55
|
+
function createJsWithTsPreset(tsJestTransformOptions = {}) {
|
|
94
56
|
logger.debug('creating Js with Ts CJS Jest preset');
|
|
95
57
|
return {
|
|
96
|
-
transform:
|
|
97
|
-
|
|
98
|
-
|
|
58
|
+
transform: {
|
|
59
|
+
[constants_1.TS_JS_TRANSFORM_PATTERN]: ['ts-jest', tsJestTransformOptions],
|
|
60
|
+
},
|
|
99
61
|
};
|
|
100
62
|
}
|
|
101
|
-
function createJsWithTsLegacyPreset(tsJestTransformOptions) {
|
|
102
|
-
var _a;
|
|
103
|
-
if (tsJestTransformOptions === void 0) { tsJestTransformOptions = {}; }
|
|
63
|
+
function createJsWithTsLegacyPreset(tsJestTransformOptions = {}) {
|
|
104
64
|
logger.debug('creating Js with Ts CJS Jest preset');
|
|
105
65
|
return {
|
|
106
|
-
transform:
|
|
107
|
-
|
|
108
|
-
|
|
66
|
+
transform: {
|
|
67
|
+
[constants_1.TS_JS_TRANSFORM_PATTERN]: ['ts-jest/legacy', tsJestTransformOptions],
|
|
68
|
+
},
|
|
109
69
|
};
|
|
110
70
|
}
|
|
111
|
-
function createJsWithBabelPreset(tsJestTransformOptions) {
|
|
112
|
-
var _a;
|
|
113
|
-
if (tsJestTransformOptions === void 0) { tsJestTransformOptions = {}; }
|
|
71
|
+
function createJsWithBabelPreset(tsJestTransformOptions = {}) {
|
|
114
72
|
logger.debug('creating JS with Babel CJS Jest preset');
|
|
115
73
|
return {
|
|
116
|
-
transform:
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
74
|
+
transform: {
|
|
75
|
+
[constants_1.JS_TRANSFORM_PATTERN]: 'babel-jest',
|
|
76
|
+
[constants_1.TS_TRANSFORM_PATTERN]: ['ts-jest', tsJestTransformOptions],
|
|
77
|
+
},
|
|
120
78
|
};
|
|
121
79
|
}
|
|
122
|
-
function createJsWithBabelLegacyPreset(tsJestTransformOptions) {
|
|
123
|
-
var _a;
|
|
124
|
-
if (tsJestTransformOptions === void 0) { tsJestTransformOptions = {}; }
|
|
80
|
+
function createJsWithBabelLegacyPreset(tsJestTransformOptions = {}) {
|
|
125
81
|
logger.debug('creating JS with Babel CJS Jest preset');
|
|
126
82
|
return {
|
|
127
|
-
transform:
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
83
|
+
transform: {
|
|
84
|
+
[constants_1.JS_TRANSFORM_PATTERN]: 'babel-jest',
|
|
85
|
+
[constants_1.TS_TRANSFORM_PATTERN]: ['ts-jest/legacy', tsJestTransformOptions],
|
|
86
|
+
},
|
|
131
87
|
};
|
|
132
88
|
}
|
|
133
|
-
function createDefaultEsmPreset(tsJestTransformOptions) {
|
|
134
|
-
var _a;
|
|
135
|
-
if (tsJestTransformOptions === void 0) { tsJestTransformOptions = {}; }
|
|
89
|
+
function createDefaultEsmPreset(tsJestTransformOptions = {}) {
|
|
136
90
|
logger.debug('creating default ESM Jest preset');
|
|
137
91
|
return {
|
|
138
|
-
extensionsToTreatAsEsm:
|
|
139
|
-
transform:
|
|
140
|
-
|
|
92
|
+
extensionsToTreatAsEsm: [...constants_1.TS_EXT_TO_TREAT_AS_ESM],
|
|
93
|
+
transform: {
|
|
94
|
+
[constants_1.ESM_TS_TRANSFORM_PATTERN]: [
|
|
141
95
|
'ts-jest',
|
|
142
|
-
|
|
96
|
+
{
|
|
97
|
+
...tsJestTransformOptions,
|
|
98
|
+
useESM: true,
|
|
99
|
+
},
|
|
143
100
|
],
|
|
144
|
-
|
|
101
|
+
},
|
|
145
102
|
};
|
|
146
103
|
}
|
|
147
|
-
function createDefaultEsmLegacyPreset(tsJestTransformOptions) {
|
|
148
|
-
var _a;
|
|
149
|
-
if (tsJestTransformOptions === void 0) { tsJestTransformOptions = {}; }
|
|
104
|
+
function createDefaultEsmLegacyPreset(tsJestTransformOptions = {}) {
|
|
150
105
|
logger.debug('creating default ESM Jest preset');
|
|
151
106
|
return {
|
|
152
|
-
extensionsToTreatAsEsm:
|
|
153
|
-
transform:
|
|
154
|
-
|
|
107
|
+
extensionsToTreatAsEsm: [...constants_1.TS_EXT_TO_TREAT_AS_ESM],
|
|
108
|
+
transform: {
|
|
109
|
+
[constants_1.ESM_TS_TRANSFORM_PATTERN]: [
|
|
155
110
|
'ts-jest/legacy',
|
|
156
|
-
|
|
111
|
+
{
|
|
112
|
+
...tsJestTransformOptions,
|
|
113
|
+
useESM: true,
|
|
114
|
+
},
|
|
157
115
|
],
|
|
158
|
-
|
|
116
|
+
},
|
|
159
117
|
};
|
|
160
118
|
}
|
|
161
|
-
function createJsWithTsEsmPreset(tsJestTransformOptions) {
|
|
162
|
-
var _a;
|
|
163
|
-
if (tsJestTransformOptions === void 0) { tsJestTransformOptions = {}; }
|
|
119
|
+
function createJsWithTsEsmPreset(tsJestTransformOptions = {}) {
|
|
164
120
|
logger.debug('creating Js with Ts ESM Jest preset');
|
|
165
121
|
return {
|
|
166
|
-
extensionsToTreatAsEsm:
|
|
167
|
-
transform:
|
|
168
|
-
|
|
122
|
+
extensionsToTreatAsEsm: [...constants_1.JS_EXT_TO_TREAT_AS_ESM, ...constants_1.TS_EXT_TO_TREAT_AS_ESM],
|
|
123
|
+
transform: {
|
|
124
|
+
[constants_1.ESM_TS_JS_TRANSFORM_PATTERN]: [
|
|
169
125
|
'ts-jest',
|
|
170
|
-
|
|
126
|
+
{
|
|
127
|
+
...tsJestTransformOptions,
|
|
128
|
+
useESM: true,
|
|
129
|
+
},
|
|
171
130
|
],
|
|
172
|
-
|
|
131
|
+
},
|
|
173
132
|
};
|
|
174
133
|
}
|
|
175
|
-
function createJsWithTsEsmLegacyPreset(tsJestTransformOptions) {
|
|
176
|
-
var _a;
|
|
177
|
-
if (tsJestTransformOptions === void 0) { tsJestTransformOptions = {}; }
|
|
134
|
+
function createJsWithTsEsmLegacyPreset(tsJestTransformOptions = {}) {
|
|
178
135
|
logger.debug('creating Js with Ts ESM Jest preset');
|
|
179
136
|
return {
|
|
180
|
-
extensionsToTreatAsEsm:
|
|
181
|
-
transform:
|
|
182
|
-
|
|
137
|
+
extensionsToTreatAsEsm: [...constants_1.JS_EXT_TO_TREAT_AS_ESM, ...constants_1.TS_EXT_TO_TREAT_AS_ESM],
|
|
138
|
+
transform: {
|
|
139
|
+
[constants_1.ESM_TS_JS_TRANSFORM_PATTERN]: [
|
|
183
140
|
'ts-jest/legacy',
|
|
184
|
-
|
|
141
|
+
{
|
|
142
|
+
...tsJestTransformOptions,
|
|
143
|
+
useESM: true,
|
|
144
|
+
},
|
|
185
145
|
],
|
|
186
|
-
|
|
146
|
+
},
|
|
187
147
|
};
|
|
188
148
|
}
|
|
189
|
-
function createJsWithBabelEsmPreset(tsJestTransformOptions) {
|
|
190
|
-
var _a;
|
|
191
|
-
if (tsJestTransformOptions === void 0) { tsJestTransformOptions = {}; }
|
|
149
|
+
function createJsWithBabelEsmPreset(tsJestTransformOptions = {}) {
|
|
192
150
|
logger.debug('creating JS with Babel ESM Jest preset');
|
|
193
151
|
return {
|
|
194
|
-
extensionsToTreatAsEsm:
|
|
195
|
-
transform:
|
|
196
|
-
|
|
197
|
-
|
|
152
|
+
extensionsToTreatAsEsm: [...constants_1.JS_EXT_TO_TREAT_AS_ESM, ...constants_1.TS_EXT_TO_TREAT_AS_ESM],
|
|
153
|
+
transform: {
|
|
154
|
+
[constants_1.ESM_JS_TRANSFORM_PATTERN]: 'babel-jest',
|
|
155
|
+
[constants_1.ESM_TS_TRANSFORM_PATTERN]: [
|
|
198
156
|
'ts-jest',
|
|
199
|
-
|
|
157
|
+
{
|
|
158
|
+
...tsJestTransformOptions,
|
|
159
|
+
useESM: true,
|
|
160
|
+
},
|
|
200
161
|
],
|
|
201
|
-
|
|
162
|
+
},
|
|
202
163
|
};
|
|
203
164
|
}
|
|
204
|
-
function createJsWithBabelEsmLegacyPreset(tsJestTransformOptions) {
|
|
205
|
-
var _a;
|
|
206
|
-
if (tsJestTransformOptions === void 0) { tsJestTransformOptions = {}; }
|
|
165
|
+
function createJsWithBabelEsmLegacyPreset(tsJestTransformOptions = {}) {
|
|
207
166
|
logger.debug('creating JS with Babel ESM Jest preset');
|
|
208
167
|
return {
|
|
209
|
-
extensionsToTreatAsEsm:
|
|
210
|
-
transform:
|
|
211
|
-
|
|
212
|
-
|
|
168
|
+
extensionsToTreatAsEsm: [...constants_1.JS_EXT_TO_TREAT_AS_ESM, ...constants_1.TS_EXT_TO_TREAT_AS_ESM],
|
|
169
|
+
transform: {
|
|
170
|
+
[constants_1.ESM_JS_TRANSFORM_PATTERN]: 'babel-jest',
|
|
171
|
+
[constants_1.ESM_TS_TRANSFORM_PATTERN]: [
|
|
213
172
|
'ts-jest/legacy',
|
|
214
|
-
|
|
173
|
+
{
|
|
174
|
+
...tsJestTransformOptions,
|
|
175
|
+
useESM: true,
|
|
176
|
+
},
|
|
215
177
|
],
|
|
216
|
-
|
|
178
|
+
},
|
|
217
179
|
};
|
|
218
180
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.name = exports.version = void 0;
|
|
4
4
|
exports.factory = factory;
|
|
5
|
-
|
|
5
|
+
const bs_logger_1 = require("bs-logger");
|
|
6
6
|
/**
|
|
7
7
|
* Remember to increase the version whenever transformer's content is changed. This is to inform Jest to not reuse
|
|
8
8
|
* the previous cache which contains old transformer's content
|
|
@@ -10,20 +10,19 @@ var bs_logger_1 = require("bs-logger");
|
|
|
10
10
|
exports.version = 4;
|
|
11
11
|
// Used for constructing cache key
|
|
12
12
|
exports.name = 'hoist-jest';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
function factory(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
var isJestGlobalImport = function (node) {
|
|
13
|
+
const HOIST_METHODS = ['mock', 'unmock', 'enableAutomock', 'disableAutomock', 'deepUnmock'];
|
|
14
|
+
const JEST_GLOBALS_MODULE_NAME = '@jest/globals';
|
|
15
|
+
const JEST_GLOBAL_NAME = 'jest';
|
|
16
|
+
function factory({ configSet }) {
|
|
17
|
+
const logger = configSet.logger.child({ namespace: exports.name });
|
|
18
|
+
const ts = configSet.compilerModule;
|
|
19
|
+
const importNamesOfJestObj = [];
|
|
20
|
+
const isJestGlobalImport = (node) => {
|
|
22
21
|
return (ts.isImportDeclaration(node) &&
|
|
23
22
|
ts.isStringLiteral(node.moduleSpecifier) &&
|
|
24
23
|
node.moduleSpecifier.text === JEST_GLOBALS_MODULE_NAME);
|
|
25
24
|
};
|
|
26
|
-
|
|
25
|
+
const shouldHoistExpression = (node) => {
|
|
27
26
|
if (ts.isCallExpression(node) &&
|
|
28
27
|
ts.isPropertyAccessExpression(node.expression) &&
|
|
29
28
|
HOIST_METHODS.includes(node.expression.name.text)) {
|
|
@@ -47,45 +46,38 @@ function factory(_a) {
|
|
|
47
46
|
/**
|
|
48
47
|
* Checks whether given node is a statement that we need to hoist
|
|
49
48
|
*/
|
|
50
|
-
|
|
49
|
+
const isHoistableStatement = (node) => {
|
|
51
50
|
return ts.isExpressionStatement(node) && shouldHoistExpression(node.expression);
|
|
52
51
|
};
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
stmt.declarationList.declarations.find(function (decl) { return ts.isIdentifier(decl.name) && decl.name.text !== JEST_GLOBAL_NAME; }) &&
|
|
57
|
-
node.statements.find(function (stmt) { return isHoistableStatement(stmt); });
|
|
58
|
-
});
|
|
59
|
-
};
|
|
52
|
+
const canHoistInBlockScope = (node) => !!node.statements.find((stmt) => ts.isVariableStatement(stmt) &&
|
|
53
|
+
stmt.declarationList.declarations.find((decl) => ts.isIdentifier(decl.name) && decl.name.text !== JEST_GLOBAL_NAME) &&
|
|
54
|
+
node.statements.find((stmt) => isHoistableStatement(stmt)));
|
|
60
55
|
/**
|
|
61
56
|
* Sort statements according to priority
|
|
62
57
|
* - Import Jest object from `@jest/globals`
|
|
63
58
|
* - Hoistable methods
|
|
64
59
|
* - Non-hoistable methods
|
|
65
60
|
*/
|
|
66
|
-
|
|
61
|
+
const sortStatements = (statements) => {
|
|
67
62
|
if (statements.length <= 1) {
|
|
68
63
|
return statements;
|
|
69
64
|
}
|
|
70
|
-
return statements.sort(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
: 1;
|
|
75
|
-
});
|
|
65
|
+
return statements.sort((stmtA, stmtB) => isJestGlobalImport(stmtA) ||
|
|
66
|
+
(isHoistableStatement(stmtA) && !isHoistableStatement(stmtB) && !isJestGlobalImport(stmtB))
|
|
67
|
+
? -1
|
|
68
|
+
: 1);
|
|
76
69
|
};
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
70
|
+
const createVisitor = (ctx, _) => {
|
|
71
|
+
const visitor = (node) => {
|
|
72
|
+
const resultNode = ts.visitEachChild(node, visitor, ctx);
|
|
80
73
|
// Since we use `visitEachChild`, we go upwards tree so all children node elements are checked first
|
|
81
74
|
if (ts.isBlock(resultNode) && canHoistInBlockScope(resultNode)) {
|
|
82
|
-
|
|
75
|
+
const newNodeArrayStatements = ts.factory.createNodeArray(sortStatements(resultNode.statements));
|
|
83
76
|
return ts.factory.updateBlock(resultNode, newNodeArrayStatements);
|
|
84
77
|
}
|
|
85
78
|
else {
|
|
86
79
|
if (ts.isSourceFile(resultNode)) {
|
|
87
|
-
resultNode.statements.forEach(
|
|
88
|
-
var _a, _b;
|
|
80
|
+
resultNode.statements.forEach((stmt) => {
|
|
89
81
|
/**
|
|
90
82
|
* Gather all possible import names, from different types of import syntax including:
|
|
91
83
|
* - named import, e.g. `import { jest } from '@jest/globals'`
|
|
@@ -93,19 +85,19 @@ function factory(_a) {
|
|
|
93
85
|
* - namespace import, e.g `import * as JestGlobals from '@jest/globals'`
|
|
94
86
|
*/
|
|
95
87
|
if (isJestGlobalImport(stmt) &&
|
|
96
|
-
|
|
88
|
+
stmt.importClause?.namedBindings &&
|
|
97
89
|
(ts.isNamespaceImport(stmt.importClause.namedBindings) ||
|
|
98
90
|
ts.isNamedImports(stmt.importClause.namedBindings))) {
|
|
99
|
-
|
|
100
|
-
|
|
91
|
+
const { namedBindings } = stmt.importClause;
|
|
92
|
+
const jestImportName = ts.isNamespaceImport(namedBindings)
|
|
101
93
|
? namedBindings.name.text
|
|
102
|
-
:
|
|
94
|
+
: namedBindings.elements.find((element) => element.name.text === JEST_GLOBAL_NAME || element.propertyName?.text === JEST_GLOBAL_NAME)?.name.text;
|
|
103
95
|
if (jestImportName) {
|
|
104
96
|
importNamesOfJestObj.push(jestImportName);
|
|
105
97
|
}
|
|
106
98
|
}
|
|
107
99
|
});
|
|
108
|
-
|
|
100
|
+
const newNodeArrayStatements = ts.factory.createNodeArray(sortStatements(resultNode.statements));
|
|
109
101
|
importNamesOfJestObj.length = 0;
|
|
110
102
|
return ts.factory.updateSourceFile(resultNode, newNodeArrayStatements, resultNode.isDeclarationFile, resultNode.referencedFiles, resultNode.typeReferenceDirectives, resultNode.hasNoDefaultLib, resultNode.libReferenceDirectives);
|
|
111
103
|
}
|
|
@@ -115,10 +107,5 @@ function factory(_a) {
|
|
|
115
107
|
return visitor;
|
|
116
108
|
};
|
|
117
109
|
// returns the transformer factory
|
|
118
|
-
return
|
|
119
|
-
var _a;
|
|
120
|
-
return logger.wrap((_a = {}, _a[bs_logger_1.LogContexts.logLevel] = bs_logger_1.LogLevels.debug, _a.call = null, _a), 'visitSourceFileNode(): hoist jest', function (sf) {
|
|
121
|
-
return ts.visitNode(sf, createVisitor(ctx, sf));
|
|
122
|
-
});
|
|
123
|
-
};
|
|
110
|
+
return (ctx) => logger.wrap({ [bs_logger_1.LogContexts.logLevel]: bs_logger_1.LogLevels.debug, call: null }, 'visitSourceFileNode(): hoist jest', (sf) => ts.visitNode(sf, createVisitor(ctx, sf)));
|
|
124
111
|
}
|