ts-jest 29.4.11 → 29.4.13

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 CHANGED
@@ -1 +1 @@
1
- 73233cd15fa36234d30a07a1efa9643162305524
1
+ c8df0cdf1a992479f05d5c7f54be9cd5d436278e
package/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ ## [29.4.13](https://github.com/kulshekhar/ts-jest/compare/v29.4.12...v29.4.13) (2026-09-22)
2
+
3
+
4
+ ### Features
5
+
6
+ * support Babel 8 ([#5466](https://github.com/kulshekhar/ts-jest/issues/5466)) ([c3a0b57](https://github.com/kulshekhar/ts-jest/commit/c3a0b57c00d8b6acfb72b020e2411752d39073e2)), closes [#5412](https://github.com/kulshekhar/ts-jest/issues/5412)
7
+
8
+
9
+ ### Performance Improvements
10
+
11
+ * **compiler:** cache module resolution modes ([#5419](https://github.com/kulshekhar/ts-jest/issues/5419)) ([697d337](https://github.com/kulshekhar/ts-jest/commit/697d337c1b79a0804972a3d30c0875b02e73bf62)), closes [#5402](https://github.com/kulshekhar/ts-jest/issues/5402)
12
+
13
+ ## [29.4.12](https://github.com/kulshekhar/ts-jest/compare/v29.4.11...v29.4.12) (2026-07-22)
14
+
15
+
16
+ ### Features
17
+
18
+ * **compiler:** support TypeScript 7 projects through compatibility aliases ([#5386](https://github.com/kulshekhar/ts-jest/pull/5386))
19
+
1
20
  ## [29.4.11](https://github.com/kulshekhar/ts-jest/compare/v29.4.10...v29.4.11) (2026-05-21)
2
21
 
3
22
 
@@ -2071,4 +2090,3 @@ For example
2071
2090
  # 0.0.0 (2016-08-30)
2072
2091
 
2073
2092
 
2074
-
package/CONTRIBUTING.md CHANGED
@@ -48,28 +48,14 @@ this is where you will write it in. Tests here usually don't require much if any
48
48
 
49
49
  ##### Integration tests
50
50
 
51
- There will be situations however where the work you have done cannot be tested alone using unit tests. In situations like this,
52
- you should write an integration test for your code. The integration tests reside within the `e2e` directory.
53
- Within this directory, there is a `__tests__` directory. This is where you will write the integration test itself.
54
- The tests within this directory execute jest itself using `run-jest.ts` and assertions are usually made on one if not all
55
- the output of the following `status`, `stdout` and `stderr`. The other subdirectories within the `e2e` directory are
56
- where you will write the files that jest will run for your integration tests. Feel free to take a look at any of the tests
57
- in the `__tests__` directory within `e2e` to have a better sense of how it is currently being done.
58
-
59
- It is possible to run the integration test itself manually to inspect that the new behaviour is indeed correct.
60
- Here is a small code snippet of how to do just that. This is useful when debugging a failing test.
51
+ Integration tests reside in `e2e`. Controller tests under `e2e/__tests__` select isolated fixture projects and execute
52
+ their local Jest configurations through `run-jest.ts`. Each fixture owns its package metadata, Jest configuration,
53
+ TypeScript configuration, source files, and tests. Dependencies and lockfiles belong only to fixtures that require them.
61
54
 
62
55
  ```bash
63
- $ cd e2e/test-utils
64
- $ node ../../node_modules/jest/bin/jest.js # It is possible to use node --inspect or ndb
65
- PASS __tests__/test-utils.spec.ts
66
- ✓ stub (3ms)
67
-
68
- Test Suites: 1 passed, 1 total
69
- Tests: 1 passed, 1 total
70
- Snapshots: 0 total
71
- Time: 0.232 s, estimated 1 s
72
- Ran all test suites.
56
+ npm run build
57
+ npm run test-e2e
58
+ npm run test-e2e -- --runTestsByPath e2e/__tests__/test-utils.test.ts
73
59
  ```
74
60
 
75
61
  ### Additional Workflow for any changes made to website or docs
package/README.md CHANGED
@@ -35,12 +35,15 @@ It supports all features of TypeScript including type-checking. [Read more about
35
35
 
36
36
  These instructions will get you setup to use `ts-jest` in your project. For more detailed documentation, please check [online documentation](https://kulshekhar.github.io/ts-jest).
37
37
 
38
- | | using npm | using yarn |
39
- | ------------------: | ------------------------------ | ------------------------------------ |
40
- | **Prerequisites** | `npm i -D jest typescript` | `yarn add --dev jest typescript` |
41
- | **Installing** | `npm i -D ts-jest @types/jest` | `yarn add --dev ts-jest @types/jest` |
42
- | **Creating config** | `npx ts-jest config:init` | `yarn ts-jest config:init` |
43
- | **Running tests** | `npm test` or `npx jest` | `yarn test` or `yarn jest` |
38
+ | | using npm | using yarn |
39
+ | -----------------------------------: | ------------------------------ | ------------------------------------ |
40
+ | **Prerequisites (TypeScript 4.3–6)** | `npm i -D jest typescript` | `yarn add --dev jest typescript` |
41
+ | **Installing** | `npm i -D ts-jest @types/jest` | `yarn add --dev ts-jest @types/jest` |
42
+ | **Creating config** | `npx ts-jest config:init` | `yarn ts-jest config:init` |
43
+ | **Running tests** | `npm test` or `npx jest` | `yarn test` or `yarn jest` |
44
+
45
+ If your project uses TypeScript 7, follow the [supported side-by-side compiler setup](website/docs/guides/typescript-7.md)
46
+ instead of installing `typescript` directly.
44
47
 
45
48
  ## Built With
46
49
 
@@ -32,9 +32,9 @@ const migrateGlobalConfigToTransformConfig = (transformConfig, globalsTsJestConf
32
32
  };
33
33
  const migratePresetToTransformConfig = (transformConfig, preset, globalsTsJestConfig) => {
34
34
  if (preset) {
35
- const transformConfigFromPreset = preset.name === "ts-jest/presets/js-with-ts" /* JestPresetNames.jsWithTs */
35
+ const transformConfigFromPreset = preset.name === presets_1.JestPresetNames.jsWithTs
36
36
  ? (0, create_jest_preset_1.createJsWithTsPreset)(globalsTsJestConfig)
37
- : preset.name === "ts-jest/presets/js-with-babel" /* JestPresetNames.jsWIthBabel */
37
+ : preset.name === presets_1.JestPresetNames.jsWIthBabel
38
38
  ? (0, create_jest_preset_1.createJsWithBabelPreset)(globalsTsJestConfig)
39
39
  : (0, create_jest_preset_1.createDefaultPreset)(globalsTsJestConfig);
40
40
  return {
@@ -72,14 +72,14 @@ const run = async (args /* , logger: Logger*/) => {
72
72
  let preset;
73
73
  if (migratedConfig.preset) {
74
74
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
- preset = presets_1.allPresets[migratedConfig.preset] ?? presets_1.allPresets["ts-jest/presets/default" /* JestPresetNames.default */];
75
+ preset = presets_1.allPresets[migratedConfig.preset] ?? presets_1.allPresets[presets_1.JestPresetNames.default];
76
76
  }
77
77
  else {
78
78
  if (args.js) {
79
- preset = args.js === 'babel' ? presets_1.allPresets["ts-jest/presets/js-with-babel" /* JestPresetNames.jsWIthBabel */] : presets_1.allPresets["ts-jest/presets/js-with-ts" /* JestPresetNames.jsWithTs */];
79
+ preset = args.js === 'babel' ? presets_1.allPresets[presets_1.JestPresetNames.jsWIthBabel] : presets_1.allPresets[presets_1.JestPresetNames.jsWithTs];
80
80
  }
81
81
  else {
82
- preset = presets_1.allPresets["ts-jest/presets/default" /* JestPresetNames.default */];
82
+ preset = presets_1.allPresets[presets_1.JestPresetNames.default];
83
83
  }
84
84
  }
85
85
  // check the extensions
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.jsWIthBabel = exports.jsWithTs = exports.defaults = exports.allPresets = void 0;
3
+ exports.jsWIthBabel = exports.jsWithTs = exports.defaults = exports.allPresets = exports.JestPresetNames = void 0;
4
+ /** @internal */
5
+ var JestPresetNames;
6
+ (function (JestPresetNames) {
7
+ JestPresetNames["default"] = "ts-jest/presets/default";
8
+ JestPresetNames["jsWithTs"] = "ts-jest/presets/js-with-ts";
9
+ JestPresetNames["jsWIthBabel"] = "ts-jest/presets/js-with-babel";
10
+ })(JestPresetNames || (exports.JestPresetNames = JestPresetNames = {}));
4
11
  const definePreset = (fullName) => ({
5
12
  fullName,
6
13
  get name() {
@@ -27,15 +34,15 @@ const definePreset = (fullName) => ({
27
34
  return `const { ${this.jsVarName}: ${varName} } = require('ts-jest/presets')`;
28
35
  },
29
36
  get isDefault() {
30
- return fullName === "ts-jest/presets/default" /* JestPresetNames.default */;
37
+ return fullName === JestPresetNames.default;
31
38
  },
32
39
  });
33
40
  /** @internal */
34
41
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
42
  exports.allPresets = {};
36
43
  /** @internal */
37
- exports.defaults = (exports.allPresets["ts-jest/presets/default" /* JestPresetNames.default */] = definePreset("ts-jest/presets/default" /* JestPresetNames.default */));
44
+ exports.defaults = (exports.allPresets[JestPresetNames.default] = definePreset(JestPresetNames.default));
38
45
  /** @internal */
39
- exports.jsWithTs = (exports.allPresets["ts-jest/presets/js-with-ts" /* JestPresetNames.jsWithTs */] = definePreset("ts-jest/presets/js-with-ts" /* JestPresetNames.jsWithTs */));
46
+ exports.jsWithTs = (exports.allPresets[JestPresetNames.jsWithTs] = definePreset(JestPresetNames.jsWithTs));
40
47
  /** @internal */
41
- exports.jsWIthBabel = (exports.allPresets["ts-jest/presets/js-with-babel" /* JestPresetNames.jsWIthBabel */] = definePreset("ts-jest/presets/js-with-babel" /* JestPresetNames.jsWIthBabel */));
48
+ exports.jsWIthBabel = (exports.allPresets[JestPresetNames.jsWIthBabel] = definePreset(JestPresetNames.jsWIthBabel));
@@ -14,7 +14,7 @@ const pathsToModuleNameMapper = (mapping, { prefix = '', useESM = false } = {})
14
14
  const toPaths = mapping[fromPath];
15
15
  // check that we have only one target path
16
16
  if (toPaths.length === 0) {
17
- logger.warn((0, messages_1.interpolate)("Not mapping \"{{path}}\" because it has no target." /* Errors.NotMappingPathWithEmptyMap */, { path: fromPath }));
17
+ logger.warn((0, messages_1.interpolate)(messages_1.Errors.NotMappingPathWithEmptyMap, { path: fromPath }));
18
18
  continue;
19
19
  }
20
20
  // split with '*'
@@ -41,7 +41,7 @@ const pathsToModuleNameMapper = (mapping, { prefix = '', useESM = false } = {})
41
41
  jestMap[cjsPattern] = paths.length === 1 ? paths[0] : paths;
42
42
  }
43
43
  else {
44
- logger.warn((0, messages_1.interpolate)("Not mapping \"{{path}}\" because it has more than one star (`*`)." /* Errors.NotMappingMultiStarPath */, { path: fromPath }));
44
+ logger.warn((0, messages_1.interpolate)(messages_1.Errors.NotMappingMultiStarPath, { path: fromPath }));
45
45
  }
46
46
  }
47
47
  if (useESM) {
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SOURCE_MAPPING_PREFIX = void 0;
4
4
  exports.updateOutput = updateOutput;
5
+ const url_1 = require("url");
5
6
  const utils_1 = require("../../utils");
6
7
  /**
7
8
  * Rely on TypeScript compiled output generation which contains this prefix to point to sourcemap location.
@@ -26,7 +27,8 @@ function updateOutput(outputText, normalizedFileName, sourceMap) {
26
27
  const updateSourceMap = (sourceMapText, normalizedFileName) => {
27
28
  const sourceMap = JSON.parse(sourceMapText);
28
29
  sourceMap.file = normalizedFileName;
29
- sourceMap.sources = [normalizedFileName];
30
+ // Source-map consumers resolve sources as URLs, where Windows drive paths are relative.
31
+ sourceMap.sources = [(0, url_1.pathToFileURL)(normalizedFileName).href];
30
32
  delete sourceMap.sourceRoot;
31
33
  return (0, utils_1.stringify)(sourceMap);
32
34
  };
@@ -124,5 +124,12 @@ export declare class TsCompiler implements TsCompilerInstance {
124
124
  private preserveCustomConditionsIfCompatible;
125
125
  getCompiledOutput(fileContent: string, fileName: string, options: TsJestCompileOptions): CompiledOutput;
126
126
  protected _transpileOutput(fileContent: string, fileName: string): TranspileOutput;
127
+ /**
128
+ * TypeScript 6 reports TS5107 when ts-jest's historical default of
129
+ * `moduleResolution: Node10` is passed to `transpileModule`. The diagnostic
130
+ * is an implementation detail when ts-jest injected that value, but remains
131
+ * actionable when the user selected Node10 themselves.
132
+ */
133
+ private _filterDiagnosticsFromTsJestDefaults;
127
134
  protected _makeTransformers(customTransformers: TsJestAstTransformer): CustomTransformers;
128
135
  }
@@ -15,7 +15,7 @@ const messages_1 = require("../../utils/messages");
15
15
  const compiler_utils_1 = require("./compiler-utils");
16
16
  const assertCompilerOptionsWithJestTransformMode = (compilerOptions, isEsmMode, logger) => {
17
17
  if (isEsmMode && compilerOptions.module === typescript_1.default.ModuleKind.CommonJS) {
18
- logger.error("The current compiler option \"module\" value is not suitable for Jest ESM mode. Please either use ES module kinds or Node16/NodeNext module kinds with \"type: module\" in package.json" /* Errors.InvalidModuleKindForEsm */);
18
+ logger.error(messages_1.Errors.InvalidModuleKindForEsm);
19
19
  }
20
20
  };
21
21
  class TsCompiler {
@@ -285,7 +285,7 @@ class TsCompiler {
285
285
  this._previousCompiledModuleKind = currentModuleKind;
286
286
  if (this._languageService) {
287
287
  if (constants_1.JS_JSX_REGEX.test(fileName) && !this._compilerOptions.allowJs) {
288
- this._logger.warn({ fileName: fileName }, (0, 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" /* Errors.GotJsFileButAllowJsFalse */, { path: fileName }));
288
+ this._logger.warn({ fileName: fileName }, (0, messages_1.interpolate)(messages_1.Errors.GotJsFileButAllowJsFalse, { path: fileName }));
289
289
  return {
290
290
  code: fileContent,
291
291
  };
@@ -331,10 +331,10 @@ class TsCompiler {
331
331
  }
332
332
  if (output.emitSkipped) {
333
333
  if (constants_1.TS_TSX_REGEX.test(fileName)) {
334
- throw new Error((0, messages_1.interpolate)("Unable to process '{{file}}', please make sure that `outDir` in your tsconfig is neither `''` or `'.'`. You can also configure Jest config option `transformIgnorePatterns` to inform `ts-jest` to transform {{file}}" /* Errors.CannotProcessFile */, { file: fileName }));
334
+ throw new Error((0, messages_1.interpolate)(messages_1.Errors.CannotProcessFile, { file: fileName }));
335
335
  }
336
336
  else {
337
- this._logger.warn((0, messages_1.interpolate)("Unable to process '{{file}}', falling back to original file content. You can also configure Jest config option `transformIgnorePatterns` to ignore {{file}} from transformation or make sure that `outDir` in your tsconfig is neither `''` or `'.'`" /* Errors.CannotProcessFileReturnOriginal */, { file: fileName }));
337
+ this._logger.warn((0, messages_1.interpolate)(messages_1.Errors.CannotProcessFileReturnOriginal, { file: fileName }));
338
338
  return {
339
339
  code: fileContent,
340
340
  };
@@ -342,7 +342,7 @@ class TsCompiler {
342
342
  }
343
343
  // Throw an error when requiring `.d.ts` files.
344
344
  if (!output.outputFiles.length) {
345
- throw new TypeError((0, messages_1.interpolate)("Unable to require `.d.ts` file for file: {{file}}.\nThis is usually the result of a faulty configuration or import. Make sure there is a `.js`, `.json` or another executable extension available alongside `{{file}}`." /* Errors.UnableToRequireDefinitionFile */, {
345
+ throw new TypeError((0, messages_1.interpolate)(messages_1.Errors.UnableToRequireDefinitionFile, {
346
346
  file: (0, path_1.basename)(fileName),
347
347
  }));
348
348
  }
@@ -376,12 +376,14 @@ class TsCompiler {
376
376
  * This code path should be removed in the next major version to benefit from checking on compiler options
377
377
  */
378
378
  if (!(0, transpile_module_1.isModernNodeModuleKind)(this._initialCompilerOptions.module)) {
379
- return this._ts.transpileModule(fileContent, {
379
+ const result = this._ts.transpileModule(fileContent, {
380
380
  fileName,
381
381
  transformers: this._makeTransformers(this.configSet.resolvedTransformers),
382
382
  compilerOptions: this._compilerOptions,
383
383
  reportDiagnostics: this.configSet.shouldReportDiagnostics(fileName),
384
384
  });
385
+ const diagnostics = this._filterDiagnosticsFromTsJestDefaults(result.diagnostics);
386
+ return diagnostics === result.diagnostics ? result : { ...result, diagnostics };
385
387
  }
386
388
  return (0, transpile_module_1.tsTranspileModule)(fileContent, {
387
389
  fileName,
@@ -393,6 +395,24 @@ class TsCompiler {
393
395
  reportDiagnostics: fileName ? this.configSet.shouldReportDiagnostics(fileName) : false,
394
396
  });
395
397
  }
398
+ /**
399
+ * TypeScript 6 reports TS5107 when ts-jest's historical default of
400
+ * `moduleResolution: Node10` is passed to `transpileModule`. The diagnostic
401
+ * is an implementation detail when ts-jest injected that value, but remains
402
+ * actionable when the user selected Node10 themselves.
403
+ */
404
+ _filterDiagnosticsFromTsJestDefaults(diagnostics) {
405
+ // `Node10` was exposed as `NodeJs` (with the same value) by older supported TypeScript releases.
406
+ const node10 = this._ts.ModuleResolutionKind.Node10 ?? 2;
407
+ const tsMajor = Number.parseInt(this._ts.version.split('.')[0], 10);
408
+ const hasInjectedNode10 = tsMajor >= 6 &&
409
+ this._initialCompilerOptions.moduleResolution === undefined &&
410
+ this._compilerOptions.moduleResolution === node10;
411
+ if (!hasInjectedNode10 || !diagnostics?.some((diagnostic) => diagnostic.code === 5107)) {
412
+ return diagnostics;
413
+ }
414
+ return diagnostics.filter((diagnostic) => diagnostic.code !== 5107);
415
+ }
396
416
  _makeTransformers(customTransformers) {
397
417
  return {
398
418
  before: customTransformers.before.map((beforeTransformer) => beforeTransformer.factory(this, beforeTransformer.options)),
@@ -463,7 +483,13 @@ class TsCompiler {
463
483
  getCompilationSettings: () => this._compilerOptions,
464
484
  getDefaultLibFileName: () => this._ts.getDefaultLibFilePath(this._compilerOptions),
465
485
  getCustomTransformers: () => this._makeTransformers(this.configSet.resolvedTransformers),
466
- resolveModuleNames: (moduleNames, containingFile) => moduleNames.map((moduleName) => this._resolveModuleName(moduleName, containingFile).resolvedModule),
486
+ resolveModuleNames: (moduleNames, containingFile) => {
487
+ if (moduleNames.length === 0) {
488
+ return [];
489
+ }
490
+ const resolutionMode = this._getResolutionMode(containingFile);
491
+ return moduleNames.map((moduleName) => this._resolveModuleName(moduleName, containingFile, resolutionMode).resolvedModule);
492
+ },
467
493
  };
468
494
  this._logger.debug('created language service');
469
495
  this._languageService = this._ts.createLanguageService(serviceHost, this._ts.createDocumentRegistry(this._ts.sys.useCaseSensitiveFileNames, this.configSet.cwd));
@@ -486,10 +512,14 @@ class TsCompiler {
486
512
  * @internal
487
513
  */
488
514
  _getImportedModulePaths(resolvedFileContent, containingFile) {
489
- return this._ts
490
- .preProcessFile(resolvedFileContent, true, true)
491
- .importedFiles.map((importedFile) => {
492
- const { resolvedModule } = this._resolveModuleName(importedFile.fileName, containingFile);
515
+ const importedFiles = this._ts.preProcessFile(resolvedFileContent, true, true).importedFiles;
516
+ if (importedFiles.length === 0) {
517
+ return [];
518
+ }
519
+ const resolutionMode = this._getResolutionMode(containingFile);
520
+ return importedFiles
521
+ .map((importedFile) => {
522
+ const { resolvedModule } = this._resolveModuleName(importedFile.fileName, containingFile, resolutionMode);
493
523
  /* istanbul ignore next already covered */
494
524
  const resolvedFileName = resolvedModule?.resolvedFileName;
495
525
  /* istanbul ignore next already covered */
@@ -500,13 +530,25 @@ class TsCompiler {
500
530
  /**
501
531
  * @internal
502
532
  */
503
- _resolveModuleName(moduleNameToResolve, containingFile) {
533
+ _getResolutionMode(containingFile) {
504
534
  const getImpliedNodeFormat = this._ts.getImpliedNodeFormatForFile;
505
- const resolutionMode = typeof getImpliedNodeFormat === 'function'
506
- ? getImpliedNodeFormat(containingFile, undefined,
507
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
508
- this._moduleResolutionHost, this._compilerOptions)
509
- : undefined;
535
+ if (typeof getImpliedNodeFormat !== 'function') {
536
+ return undefined;
537
+ }
538
+ // @ts-expect-error internal TypeScript API
539
+ const moduleResolution = this._ts.getEmitModuleResolutionKind(this._compilerOptions);
540
+ const { Classic, Node10, NodeJs } = this._ts.ModuleResolutionKind;
541
+ if (moduleResolution === (Node10 ?? NodeJs) || moduleResolution === Classic) {
542
+ return undefined;
543
+ }
544
+ return getImpliedNodeFormat(containingFile, this._moduleResolutionCache?.getPackageJsonInfoCache?.(),
545
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
546
+ this._moduleResolutionHost, this._compilerOptions);
547
+ }
548
+ /**
549
+ * @internal
550
+ */
551
+ _resolveModuleName(moduleNameToResolve, containingFile, resolutionMode) {
510
552
  return this._ts.resolveModuleName(moduleNameToResolve, containingFile, this._compilerOptions,
511
553
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
512
554
  this._moduleResolutionHost,
@@ -200,7 +200,7 @@ class ConfigSet {
200
200
  const tsJestCfg = this._jestCfg.globals && this._jestCfg.globals['ts-jest'];
201
201
  const options = tsJestCfg ?? Object.create(null);
202
202
  // compiler module
203
- this.compilerModule = importer_1.importer.typescript("Using \"ts-jest\" requires this package to be installed." /* ImportReasons.TsJest */, options.compiler ?? 'typescript');
203
+ this.compilerModule = importer_1.importer.typescript(messages_1.ImportReasons.TsJest, options.compiler ?? 'typescript');
204
204
  this.logger.debug({ compilerModule: this.compilerModule }, 'normalized compiler module config via ts-jest option');
205
205
  this._setupConfigSet(options);
206
206
  this._matchablePatterns = [...this._jestCfg.testMatch, ...this._jestCfg.testRegex].filter((pattern) =>
@@ -217,12 +217,12 @@ class ConfigSet {
217
217
  if (options.isolatedModules) {
218
218
  this.parsedTsConfig.options.isolatedModules = true;
219
219
  if (this.tsconfigFilePath) {
220
- this.logger.warn((0, messages_1.interpolate)("\n The \"ts-jest\" config option \"isolatedModules\" is deprecated and will be removed in v30.0.0. Please use \"isolatedModules: true\" in {{tsconfigFilePath}} instead, see https://www.typescriptlang.org/tsconfig/#isolatedModules\n " /* Deprecations.IsolatedModulesWithTsconfigPath */, {
220
+ this.logger.warn((0, messages_1.interpolate)(messages_1.Deprecations.IsolatedModulesWithTsconfigPath, {
221
221
  tsconfigFilePath: this.tsconfigFilePath,
222
222
  }));
223
223
  }
224
224
  else {
225
- this.logger.warn("\n The \"ts-jest\" config option \"isolatedModules\" is deprecated and will be removed in v30.0.0. Please use \"isolatedModules: true\", see https://www.typescriptlang.org/tsconfig/#isolatedModules\n " /* Deprecations.IsolatedModulesWithoutTsconfigPath */);
225
+ this.logger.warn(messages_1.Deprecations.IsolatedModulesWithoutTsconfigPath);
226
226
  }
227
227
  }
228
228
  this.isolatedModules = this.parsedTsConfig.options.isolatedModules ?? false;
@@ -279,7 +279,7 @@ class ConfigSet {
279
279
  }
280
280
  this.logger.debug({ babelConfig: this.babelConfig }, 'normalized babel config via ts-jest option');
281
281
  this.babelJestTransformer = importer_1.importer
282
- .babelJest("Using \"babel-jest\" requires this package to be installed." /* ImportReasons.BabelJest */)
282
+ .babelJest(messages_1.ImportReasons.BabelJest)
283
283
  .createTransformer(this.babelConfig);
284
284
  this.logger.debug('created babel-jest transformer');
285
285
  }
@@ -337,7 +337,7 @@ class ConfigSet {
337
337
  let transformerFunc;
338
338
  if ((0, path_1.extname)(transformerPath) === '.ts') {
339
339
  const compiledTransformer = importer_1.importer
340
- .esBuild("Using \"esbuild\" requires this package to be installed." /* ImportReasons.EsBuild */)
340
+ .esBuild(messages_1.ImportReasons.EsBuild)
341
341
  .transformSync((0, fs_1.readFileSync)(transformerPath, 'utf-8'), {
342
342
  loader: 'ts',
343
343
  format: 'cjs',
@@ -349,10 +349,10 @@ class ConfigSet {
349
349
  transformerFunc = require(transformerPath);
350
350
  }
351
351
  if (!transformerFunc.version) {
352
- this.logger.warn("The AST transformer {{file}} must have an `export const version = <your_transformer_version>`" /* Errors.MissingTransformerVersion */, { file: transformerPath });
352
+ this.logger.warn(messages_1.Errors.MissingTransformerVersion, { file: transformerPath });
353
353
  }
354
354
  if (!transformerFunc.name) {
355
- this.logger.warn("The AST transformer {{file}} must have an `export const name = <your_transformer_name>`" /* Errors.MissingTransformerName */, { file: transformerPath });
355
+ this.logger.warn(messages_1.Errors.MissingTransformerName, { file: transformerPath });
356
356
  }
357
357
  return transformerFunc;
358
358
  };
@@ -449,7 +449,7 @@ class ConfigSet {
449
449
  !(finalOptions.esModuleInterop || finalOptions.allowSyntheticDefaultImports)) {
450
450
  result.errors.push({
451
451
  code: utils_1.TsJestDiagnosticCodes.ConfigModuleOption,
452
- messageText: "If you have issues related to imports, you should consider setting `esModuleInterop` to `true` in your TypeScript configuration file (usually `tsconfig.json`). See https://blogs.msdn.microsoft.com/typescript/2018/01/31/announcing-typescript-2-7/#easier-ecmascript-module-interoperability for more information." /* Errors.ConfigNoModuleInterop */,
452
+ messageText: messages_1.Errors.ConfigNoModuleInterop,
453
453
  category: this.compilerModule.DiagnosticCategory.Message,
454
454
  file: undefined,
455
455
  start: undefined,
@@ -488,7 +488,7 @@ class ConfigSet {
488
488
  !this.babelConfig &&
489
489
  nodeJsVer.startsWith('v12') &&
490
490
  compilationTarget > this.compilerModule.ScriptTarget.ES2019) {
491
- const message = (0, messages_1.interpolate)("There is a mismatch between your NodeJs version {{nodeJsVer}} and your TypeScript target {{compilationTarget}}. This might lead to some unexpected errors when running tests with `ts-jest`. To fix this, you can check https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping" /* Errors.MismatchNodeTargetMapping */, {
491
+ const message = (0, messages_1.interpolate)(messages_1.Errors.MismatchNodeTargetMapping, {
492
492
  nodeJsVer: process.version,
493
493
  compilationTarget: TARGET_TO_VERSION_MAPPING[compilationTarget],
494
494
  });
@@ -612,7 +612,7 @@ class ConfigSet {
612
612
  }
613
613
  }
614
614
  if (throwIfMissing && !(0, fs_1.existsSync)(path)) {
615
- throw new Error((0, messages_1.interpolate)("File not found: {{inputPath}} (resolved as: {{resolvedPath}})" /* Errors.FileNotFound */, { inputPath, resolvedPath: path }));
615
+ throw new Error((0, messages_1.interpolate)(messages_1.Errors.FileNotFound, { inputPath, resolvedPath: path }));
616
616
  }
617
617
  this.logger.debug({ fromPath: inputPath, toPath: path }, 'resolved path from', inputPath, 'to', path);
618
618
  return path;
@@ -79,7 +79,7 @@ class TsJestTransformer {
79
79
  // create the new record in the index
80
80
  this._logger.info('no matching config-set found, creating a new one');
81
81
  if (config.globals?.['ts-jest']) {
82
- 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},\nSee more at https://kulshekhar.github.io/ts-jest/docs/getting-started/presets#advanced" /* Deprecations.GlobalsTsJestConfigOption */);
82
+ this._logger.warn(messages_1.Deprecations.GlobalsTsJestConfigOption);
83
83
  }
84
84
  const jestGlobalsConfig = config.globals ?? {};
85
85
  const tsJestGlobalsConfig = jestGlobalsConfig['ts-jest'] ?? {};
@@ -215,7 +215,7 @@ class TsJestTransformer {
215
215
  // we should not get called for files with other extension than js[x], ts[x] and d.ts,
216
216
  // TypeScript will bail if we try to compile, and if it was to call babel, users can
217
217
  // define the transform value with `babel-jest` for this extension instead
218
- const 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." /* Errors.GotUnknownFileTypeWithBabel */ : "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." /* Errors.GotUnknownFileTypeWithoutBabel */;
218
+ const message = babelJest ? messages_1.Errors.GotUnknownFileTypeWithBabel : messages_1.Errors.GotUnknownFileTypeWithoutBabel;
219
219
  this._logger.warn({ fileName: sourcePath }, (0, messages_1.interpolate)(message, { path: sourcePath }));
220
220
  result = {
221
221
  code: sourceText,
@@ -17,7 +17,7 @@ const backportJestConfig = (logger, config) => {
17
17
  let hadWarnings = false;
18
18
  const warnConfig = (oldPath, newPath, note) => {
19
19
  hadWarnings = true;
20
- logger.warn(context, (0, messages_1.interpolate)(note ? "\"[jest-config].{{oldPath}}\" is deprecated, use \"[jest-config].{{newPath}}\" instead.\n \u21B3 {{note}}" /* Deprecations.ConfigOptionWithNote */ : "\"[jest-config].{{oldPath}}\" is deprecated, use \"[jest-config].{{newPath}}\" instead." /* Deprecations.ConfigOption */, {
20
+ logger.warn(context, (0, messages_1.interpolate)(note ? messages_1.Deprecations.ConfigOptionWithNote : messages_1.Deprecations.ConfigOption, {
21
21
  oldPath,
22
22
  newPath,
23
23
  note,
@@ -69,7 +69,7 @@ const backportJestConfig = (logger, config) => {
69
69
  delete tsJest.enableTsDiagnostics;
70
70
  }
71
71
  if ('useBabelrc' in tsJest) {
72
- warnConfig('globals.ts-jest.useBabelrc', 'globals.ts-jest.babelConfig', "See `babel-jest` related issue: https://github.com/facebook/jest/issues/3845" /* Deprecations.ConfigOptionUseBabelRcNote */);
72
+ warnConfig('globals.ts-jest.useBabelrc', 'globals.ts-jest.babelConfig', messages_1.Deprecations.ConfigOptionUseBabelRcNote);
73
73
  if (tsJest.useBabelrc != null) {
74
74
  mergeTsJest.babelConfig = tsJest.useBabelrc ? true : {};
75
75
  }
@@ -109,7 +109,7 @@ const backportTsJestDebugEnvVar = (logger) => {
109
109
  if (shouldLog) {
110
110
  process.env.TS_JEST_LOG = 'ts-jest.log,stderr:warn';
111
111
  }
112
- logger.warn(context, (0, messages_1.interpolate)("Using env. var \"{{old}}\" is deprecated, use \"{{new}}\" instead." /* Deprecations.EnvVar */, {
112
+ logger.warn(context, (0, messages_1.interpolate)(messages_1.Deprecations.EnvVar, {
113
113
  old: 'TS_JEST_DEBUG',
114
114
  new: 'TS_JEST_LOG',
115
115
  }));
@@ -27,7 +27,17 @@ class Importer {
27
27
  return this._import(why, '@babel/core');
28
28
  }
29
29
  typescript(why, which) {
30
- return this._import(why, which);
30
+ const compilerModule = this._import(why, which);
31
+ const hasRequiredCompilerApi = typeof compilerModule.createLanguageService === 'function' &&
32
+ typeof compilerModule.parseJsonConfigFileContent === 'function' &&
33
+ typeof compilerModule.transpileModule === 'function';
34
+ if (!hasRequiredCompilerApi) {
35
+ throw new Error((0, messages_1.interpolate)(messages_1.Errors.TypeScriptCompilerApiUnavailable, {
36
+ module: which,
37
+ version: compilerModule.version ?? 'unknown',
38
+ }));
39
+ }
40
+ return compilerModule;
31
41
  }
32
42
  esBuild(why) {
33
43
  return this._import(why, 'esbuild');
@@ -81,10 +91,10 @@ class Importer {
81
91
  if (!res.error)
82
92
  return res.exports;
83
93
  // it could not load because of a failure while importing, but it exists
84
- throw new Error((0, messages_1.interpolate)("Loading module {{module}} failed with error: {{error}}" /* Errors.LoadingModuleFailed */, { module: res.given, error: res.error.message }));
94
+ throw new Error((0, messages_1.interpolate)(messages_1.Errors.LoadingModuleFailed, { module: res.given, error: res.error.message }));
85
95
  }
86
96
  // if it couldn't load, build a nice error message so the user can fix it by himself
87
- const msg = alternatives.length ? "Unable to load any of these modules: {{module}}. {{reason}}. To fix it:\n{{fix}}" /* Errors.UnableToLoadAnyModule */ : "Unable to load the module {{module}}. {{reason}} To fix it:\n{{fix}}" /* Errors.UnableToLoadOneModule */;
97
+ const msg = alternatives.length ? messages_1.Errors.UnableToLoadAnyModule : messages_1.Errors.UnableToLoadOneModule;
88
98
  const loadModule = [moduleName, ...alternatives].map((m) => `"${m}"`).join(', ');
89
99
  if (typeof installTip === 'string') {
90
100
  installTip = [{ module: installTip, label: `install "${installTip}"` }];
@@ -1,8 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Helps = void 0;
3
+ exports.ImportReasons = exports.Deprecations = exports.Helps = exports.Errors = void 0;
4
4
  exports.interpolate = interpolate;
5
5
  const diagnostics_1 = require("./diagnostics");
6
+ /**
7
+ * @internal
8
+ */
9
+ var Errors;
10
+ (function (Errors) {
11
+ Errors["LoadingModuleFailed"] = "Loading module {{module}} failed with error: {{error}}";
12
+ Errors["TypeScriptCompilerApiUnavailable"] = "The TypeScript compiler \"{{module}}\" (version {{version}}) does not expose the JavaScript compiler API required by ts-jest. To use TypeScript 7 for project type-checking, install it as \"@typescript/native\" and alias \"@typescript/typescript6\" as \"typescript\" for ts-jest.";
13
+ Errors["UnableToLoadOneModule"] = "Unable to load the module {{module}}. {{reason}} To fix it:\n{{fix}}";
14
+ Errors["UnableToLoadAnyModule"] = "Unable to load any of these modules: {{module}}. {{reason}}. To fix it:\n{{fix}}";
15
+ Errors["UnableToRequireDefinitionFile"] = "Unable to require `.d.ts` file for file: {{file}}.\nThis is usually the result of a faulty configuration or import. Make sure there is a `.js`, `.json` or another executable extension available alongside `{{file}}`.";
16
+ Errors["FileNotFound"] = "File not found: {{inputPath}} (resolved as: {{resolvedPath}})";
17
+ Errors["UnableToCompileTypeScript"] = "{{diagnostics}}";
18
+ Errors["NotMappingMultiStarPath"] = "Not mapping \"{{path}}\" because it has more than one star (`*`).";
19
+ Errors["NotMappingPathWithEmptyMap"] = "Not mapping \"{{path}}\" because it has no target.";
20
+ Errors["GotJsFileButAllowJsFalse"] = "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";
21
+ Errors["GotUnknownFileTypeWithoutBabel"] = "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.";
22
+ Errors["GotUnknownFileTypeWithBabel"] = "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.";
23
+ Errors["ConfigNoModuleInterop"] = "If you have issues related to imports, you should consider setting `esModuleInterop` to `true` in your TypeScript configuration file (usually `tsconfig.json`). See https://blogs.msdn.microsoft.com/typescript/2018/01/31/announcing-typescript-2-7/#easier-ecmascript-module-interoperability for more information.";
24
+ Errors["MismatchNodeTargetMapping"] = "There is a mismatch between your NodeJs version {{nodeJsVer}} and your TypeScript target {{compilationTarget}}. This might lead to some unexpected errors when running tests with `ts-jest`. To fix this, you can check https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping";
25
+ Errors["CannotProcessFileReturnOriginal"] = "Unable to process '{{file}}', falling back to original file content. You can also configure Jest config option `transformIgnorePatterns` to ignore {{file}} from transformation or make sure that `outDir` in your tsconfig is neither `''` or `'.'`";
26
+ Errors["CannotProcessFile"] = "Unable to process '{{file}}', please make sure that `outDir` in your tsconfig is neither `''` or `'.'`. You can also configure Jest config option `transformIgnorePatterns` to inform `ts-jest` to transform {{file}}";
27
+ Errors["MissingTransformerName"] = "The AST transformer {{file}} must have an `export const name = <your_transformer_name>`";
28
+ Errors["MissingTransformerVersion"] = "The AST transformer {{file}} must have an `export const version = <your_transformer_version>`";
29
+ Errors["InvalidModuleKindForEsm"] = "The current compiler option \"module\" value is not suitable for Jest ESM mode. Please either use ES module kinds or Node16/NodeNext module kinds with \"type: module\" in package.json";
30
+ })(Errors || (exports.Errors = Errors = {}));
6
31
  /**
7
32
  * @internal
8
33
  */
@@ -11,6 +36,29 @@ exports.Helps = {
11
36
  MigrateConfigUsingCLI: 'Your Jest configuration is outdated. Use the CLI to help migrating it: ts-jest config:migrate <config-file>.',
12
37
  UsingModernNodeResolution: `Using hybrid module kind (Node16/18/Next) is only supported in "isolatedModules: true". Please set "isolatedModules: true" in your tsconfig.json. To disable this message, you can set "diagnostics.ignoreCodes" to include ${diagnostics_1.TsJestDiagnosticCodes.ModernNodeModule} in your ts-jest config. See more at https://kulshekhar.github.io/ts-jest/docs/getting-started/options/diagnostics`,
13
38
  };
39
+ /**
40
+ * @internal
41
+ */
42
+ var Deprecations;
43
+ (function (Deprecations) {
44
+ Deprecations["EnvVar"] = "Using env. var \"{{old}}\" is deprecated, use \"{{new}}\" instead.";
45
+ Deprecations["ConfigOption"] = "\"[jest-config].{{oldPath}}\" is deprecated, use \"[jest-config].{{newPath}}\" instead.";
46
+ Deprecations["ConfigOptionWithNote"] = "\"[jest-config].{{oldPath}}\" is deprecated, use \"[jest-config].{{newPath}}\" instead.\n \u21B3 {{note}}";
47
+ Deprecations["ConfigOptionUseBabelRcNote"] = "See `babel-jest` related issue: https://github.com/facebook/jest/issues/3845";
48
+ // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member
49
+ Deprecations["GlobalsTsJestConfigOption"] = "Define `ts-jest` config under `globals` is deprecated. Please do\ntransform: {\n <transform_regex>: ['ts-jest', { /* ts-jest config goes here in Jest */ }],\n},\nSee more at https://kulshekhar.github.io/ts-jest/docs/getting-started/presets#advanced";
50
+ Deprecations["IsolatedModulesWithTsconfigPath"] = "\n The \"ts-jest\" config option \"isolatedModules\" is deprecated and will be removed in v30.0.0. Please use \"isolatedModules: true\" in {{tsconfigFilePath}} instead, see https://www.typescriptlang.org/tsconfig/#isolatedModules\n ";
51
+ Deprecations["IsolatedModulesWithoutTsconfigPath"] = "\n The \"ts-jest\" config option \"isolatedModules\" is deprecated and will be removed in v30.0.0. Please use \"isolatedModules: true\", see https://www.typescriptlang.org/tsconfig/#isolatedModules\n ";
52
+ })(Deprecations || (exports.Deprecations = Deprecations = {}));
53
+ /**
54
+ * @internal
55
+ */
56
+ var ImportReasons;
57
+ (function (ImportReasons) {
58
+ ImportReasons["TsJest"] = "Using \"ts-jest\" requires this package to be installed.";
59
+ ImportReasons["BabelJest"] = "Using \"babel-jest\" requires this package to be installed.";
60
+ ImportReasons["EsBuild"] = "Using \"esbuild\" requires this package to be installed.";
61
+ })(ImportReasons || (exports.ImportReasons = ImportReasons = {}));
14
62
  /**
15
63
  * @internal
16
64
  */
@@ -20,7 +20,7 @@ class TSError extends make_error_1.BaseError {
20
20
  diagnosticCodes;
21
21
  name = 'TSError';
22
22
  constructor(diagnosticText, diagnosticCodes) {
23
- super((0, messages_1.interpolate)("{{diagnostics}}" /* Errors.UnableToCompileTypeScript */, {
23
+ super((0, messages_1.interpolate)(messages_1.Errors.UnableToCompileTypeScript, {
24
24
  diagnostics: diagnosticText.trim(),
25
25
  }));
26
26
  this.diagnosticText = diagnosticText;
package/npm-view.err CHANGED
@@ -1,9 +1,9 @@
1
1
  npm warn Unknown user config "always-auth". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
2
2
  npm error code E404
3
- npm error 404 No match found for version 29.4.11
3
+ npm error 404 No match found for version 29.4.13
4
4
  npm error 404
5
- npm error 404 The requested resource 'ts-jest@29.4.11' could not be found or you do not have permission to access it.
5
+ npm error 404 The requested resource 'ts-jest@29.4.13' could not be found or you do not have permission to access it.
6
6
  npm error 404
7
7
  npm error 404 Note that you can also install from a
8
8
  npm error 404 tarball, folder, http url, or git url.
9
- npm error A complete log of this run can be found in: /home/runner/.npm/_logs/2026-05-21T13_47_16_595Z-debug-0.log
9
+ npm error A complete log of this run can be found in: /home/runner/.npm/_logs/2026-09-23T11_08_22_928Z-debug-0.log
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-jest",
3
- "version": "29.4.11",
3
+ "version": "29.4.13",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "commonjs",
@@ -13,8 +13,7 @@
13
13
  "build": "tsc -p tsconfig.build.json",
14
14
  "postbuild": "node scripts/post-build.js",
15
15
  "test": "jest -c=jest.config.ts",
16
- "test-e2e-cjs": "jest -c=jest-e2e-cjs.config.ts --no-cache",
17
- "test-e2e-esm": "node --experimental-vm-modules --no-warnings node_modules/jest/bin/jest.js -c=jest-e2e-esm.config.ts --no-cache",
16
+ "test-e2e": "jest -c=e2e/jest.config.cts",
18
17
  "test-examples": "node scripts/test-examples.js",
19
18
  "lint": "eslint .",
20
19
  "lint-fix": "eslint --fix .",
@@ -57,12 +56,12 @@
57
56
  "json5": "^2.2.3",
58
57
  "lodash.memoize": "^4.1.2",
59
58
  "make-error": "^1.3.6",
60
- "semver": "^7.8.0",
59
+ "semver": "^7.8.5",
61
60
  "type-fest": "^4.41.0",
62
61
  "yargs-parser": "^21.1.1"
63
62
  },
64
63
  "peerDependencies": {
65
- "@babel/core": ">=7.0.0-beta.0 <8",
64
+ "@babel/core": ">=7.0.0-beta.0 <9",
66
65
  "@jest/transform": "^29.0.0 || ^30.0.0",
67
66
  "@jest/types": "^29.0.0 || ^30.0.0",
68
67
  "babel-jest": "^29.0.0 || ^30.0.0",
@@ -94,11 +93,11 @@
94
93
  "@commitlint/cli": "^19.8.1",
95
94
  "@commitlint/config-angular": "^19.8.1",
96
95
  "@eslint/compat": "^1.4.1",
97
- "@eslint/eslintrc": "^3.3.5",
98
- "@eslint/js": "^9.39.4",
99
- "@jest/globals": "^30.4.1",
100
- "@jest/transform": "^30.4.1",
101
- "@jest/types": "^30.4.1",
96
+ "@eslint/eslintrc": "^3.3.7",
97
+ "@eslint/js": "^9.39.5",
98
+ "@jest/globals": "^30.5.2",
99
+ "@jest/transform": "^30.5.2",
100
+ "@jest/types": "^30.5.1",
102
101
  "@types/babel__core": "^7.20.5",
103
102
  "@types/fs-extra": "^11.0.4",
104
103
  "@types/jest": "^29.5.14",
@@ -107,17 +106,15 @@
107
106
  "@types/lodash.memoize": "^4.1.9",
108
107
  "@types/lodash.set": "^4.3.9",
109
108
  "@types/micromatch": "^4.0.10",
110
- "@types/node": "20.19.41",
111
- "@types/semver": "^7.7.1",
109
+ "@types/node": "20.19.43",
110
+ "@types/semver": "^7.8.0",
112
111
  "@types/yargs": "^17.0.35",
113
112
  "@types/yargs-parser": "21.0.3",
114
- "@typescript-eslint/eslint-plugin": "^8.59.3",
115
- "@typescript-eslint/parser": "^8.59.3",
116
- "babel-jest": "^30.4.1",
113
+ "babel-jest": "^30.5.2",
117
114
  "conventional-changelog-angular": "^8.3.1",
118
- "conventional-changelog": "^7.2.0",
119
- "esbuild": "~0.28.0",
120
- "eslint": "^9.39.4",
115
+ "conventional-changelog": "^7.2.1",
116
+ "esbuild": "~0.28.2",
117
+ "eslint": "^9.39.5",
121
118
  "eslint-config-prettier": "^10.1.8",
122
119
  "eslint-plugin-import": "^2.32.0",
123
120
  "eslint-plugin-jest": "^28.14.0",
@@ -125,18 +122,18 @@
125
122
  "eslint-plugin-prettier": "^4.2.5",
126
123
  "execa": "5.1.1",
127
124
  "fast-glob": "^3.3.3",
128
- "fs-extra": "^11.3.5",
125
+ "fs-extra": "^11.4.0",
129
126
  "globals": "^16.5.0",
130
127
  "husky": "^9.1.7",
131
- "jest": "^30.4.2",
132
- "js-yaml": "^4.1.1",
128
+ "jest": "^30.5.2",
129
+ "js-yaml": "^4.3.2",
133
130
  "lint-staged": "^15.5.2",
134
- "memfs": "^4.57.2",
131
+ "memfs": "^4.78.1",
135
132
  "prettier": "^2.8.8",
136
133
  "rimraf": "^5.0.10",
137
134
  "ts-node": "^10.9.2",
138
135
  "typescript": "~5.9.3",
139
- "typescript-eslint": "^8.59.3"
136
+ "typescript-eslint": "^8.70.0"
140
137
  },
141
138
  "engines": {
142
139
  "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0"