Skip to content

Commit 528d37c

Browse files
authored
fix: log hybrid module as warning instead of failing tests (#5144)
Fixes #5130
1 parent 141e5af commit 528d37c

File tree

8 files changed

+67
-20
lines changed

8 files changed

+67
-20
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
describe('hybrid-module', () => {
2+
it('should work', () => {
3+
expect(true).toBe(true)
4+
})
5+
})
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import type { Config } from 'jest'
2+
import { TS_JS_TRANSFORM_PATTERN } from 'ts-jest'
3+
4+
export default {
5+
displayName: 'hybrid-module-compiler-cjs',
6+
transform: {
7+
[TS_JS_TRANSFORM_PATTERN]: [
8+
'ts-jest',
9+
{
10+
tsconfig: '<rootDir>/tsconfig.spec.json',
11+
diagnostics: {
12+
ignoreCodes: [151002],
13+
},
14+
},
15+
],
16+
},
17+
} satisfies Config
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import type { Config } from 'jest'
2+
import { TS_JS_TRANSFORM_PATTERN } from 'ts-jest'
3+
4+
export default {
5+
displayName: 'hybrid-module-compiler-esm',
6+
extensionsToTreatAsEsm: ['.ts'],
7+
transform: {
8+
[TS_JS_TRANSFORM_PATTERN]: [
9+
'ts-jest',
10+
{
11+
tsconfig: '<rootDir>/tsconfig.spec.json',
12+
useESM: true,
13+
diagnostics: {
14+
ignoreCodes: [151002],
15+
},
16+
},
17+
],
18+
},
19+
} satisfies Config

e2e/hybrid-module/package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"name": "hybrid-module",
3+
"private": true
4+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"extends": "../../tsconfig.base.json"
3+
}

src/legacy/compiler/ts-compiler.spec.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import { createConfigSet, makeCompiler } from '../../__helpers__/fakers'
99
import { logTargetMock } from '../../__helpers__/mocks'
1010
import { tsTranspileModule } from '../../transpilers/typescript/transpile-module'
1111
import type { DepGraphInfo, TsJestTransformerOptions } from '../../types'
12-
import { TsJestDiagnosticCodes } from '../../utils'
1312
import { Errors, Helps, interpolate } from '../../utils/messages'
1413

1514
import { updateOutput } from './compiler-utils'
@@ -392,17 +391,11 @@ describe('TsCompiler', () => {
392391
expect(usedCompilerOptions.customConditions).toBeUndefined()
393392
expect(output).toEqual({
394393
code: updateOutput(jsOutput, fileName, sourceMap),
395-
diagnostics: [
396-
{
397-
category: ts.DiagnosticCategory.Message,
398-
code: TsJestDiagnosticCodes.ModernNodeModule,
399-
messageText: Helps.UsingModernNodeResolution,
400-
file: undefined,
401-
start: undefined,
402-
length: undefined,
403-
},
404-
],
394+
diagnostics: [],
405395
})
396+
expect(logTarget.filteredLines(LogLevels.warn)).toEqual(
397+
expect.arrayContaining([expect.stringContaining(Helps.UsingModernNodeResolution)]),
398+
)
406399

407400
// @ts-expect-error testing purpose
408401
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion

src/legacy/compiler/ts-compiler.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -211,14 +211,16 @@ export class TsCompiler implements TsCompilerInstance {
211211
const output: EmitOutput = this._languageService.getEmitOutput(fileName)
212212
const diagnostics = this.getDiagnostics(fileName)
213213
if (isModernNodeModuleKind(this._initialCompilerOptions.module)) {
214-
diagnostics.push({
215-
category: this._ts.DiagnosticCategory.Message,
216-
code: TsJestDiagnosticCodes.ModernNodeModule,
217-
messageText: Helps.UsingModernNodeResolution,
218-
file: undefined,
219-
start: undefined,
220-
length: undefined,
221-
})
214+
this.configSet.raiseDiagnostics([
215+
{
216+
category: this._ts.DiagnosticCategory.Message,
217+
code: TsJestDiagnosticCodes.ModernNodeModule,
218+
messageText: Helps.UsingModernNodeResolution,
219+
file: undefined,
220+
start: undefined,
221+
length: undefined,
222+
},
223+
])
222224
}
223225
if (!isEsmMode && diagnostics.length) {
224226
this.configSet.raiseDiagnostics(diagnostics, fileName, this._logger)

src/transpilers/typescript/transpile-module.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,11 @@ type ExtendedTsTranspileModuleFn = (
4949
) => ts.TranspileOutput
5050

5151
export const isModernNodeModuleKind = (module: ts.ModuleKind | undefined): boolean => {
52-
return module ? [ts.ModuleKind.Node16, /* ModuleKind.Node18 */ 101, ts.ModuleKind.NodeNext].includes(module) : false
52+
return module
53+
? [ts.ModuleKind.Node16, /* ModuleKind.Node18 */ 101, /* ModuleKind.Node20 */ 102, ts.ModuleKind.NodeNext].includes(
54+
module,
55+
)
56+
: false
5357
}
5458

5559
const shouldCheckProjectPkgJsonContent = (fileName: string, moduleKind: ts.ModuleKind | undefined): boolean => {

0 commit comments

Comments
 (0)