From 6e46c3fb7131c88ebd6272567086b3a0d5675fcf Mon Sep 17 00:00:00 2001 From: Tony133 Date: Mon, 26 Jan 2026 11:57:54 +0100 Subject: [PATCH 1/2] chore: upgrade dependencie typescript and fix test --- package.json | 11 ++++- test/typescript-common/index.ts | 49 ++++++++----------- test/typescript-jest/integration/instance.ts | 4 +- .../integration/integration.test.ts | 4 +- types/index.test-d.ts | 4 +- 5 files changed, 39 insertions(+), 33 deletions(-) diff --git a/package.json b/package.json index 441f3150..3097738d 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "tsimp": "^2.0.11", "tsm": "^2.3.0", "tsx": "^4.15.7", - "typescript": "5.5", + "typescript": "~5.9.3", "vite": "^7.0.0", "vitest": "^4.0.6" }, @@ -108,7 +108,14 @@ "**/*.test.ts" ], "transform": { - "^.+\\.(ts|tsx)$": "ts-jest" + "^.+\\.(ts|tsx)$": [ + "ts-jest", + { + "tsconfig": { + "esModuleInterop": true + } + } + ] } }, "publishConfig": { diff --git a/test/typescript-common/index.ts b/test/typescript-common/index.ts index c8044cb6..f003330b 100644 --- a/test/typescript-common/index.ts +++ b/test/typescript-common/index.ts @@ -1,40 +1,33 @@ -'use script' +'use strict' -const { test: t } = require('node:test') +const { test: testRunner } = require('node:test') +const assert = require('node:assert/strict') const fastify = require('fastify') - const basicApp = require('./basic/app.ts') -t.plan(5) - -const app = fastify() - -app.register(basicApp) +testRunner('integration test with fastify autoload', async (t: any) => { + const app = fastify() + app.register(basicApp) -app.ready(async function (err) { - t.error(err) + await app.ready() - await app - .inject({ + await t.test('should return javascript data', async () => { + const res = await app.inject({ url: '/javascript', }) - .then(function (res: any) { - t.equal(res.statusCode, 200) - t.same(JSON.parse(res.payload), { script: 'java' }) - }) - .catch((err) => { - t.error(err) - }) - await app - .inject({ + assert.strictEqual(res.statusCode, 200) + assert.deepStrictEqual(res.json(), { script: 'java' }) + }) + + await t.test('should return typescript data', async () => { + const res = await app.inject({ url: '/typescript', }) - .then(function (res: any) { - t.equal(res.statusCode, 200) - t.same(JSON.parse(res.payload), { script: 'type' }) - }) - .catch((err) => { - t.error(err) - }) + + assert.strictEqual(res.statusCode, 200) + assert.deepStrictEqual(res.json(), { script: 'type' }) + }) + + await app.close() }) diff --git a/test/typescript-jest/integration/instance.ts b/test/typescript-jest/integration/instance.ts index 079340b4..1ae0d73c 100644 --- a/test/typescript-jest/integration/instance.ts +++ b/test/typescript-jest/integration/instance.ts @@ -7,7 +7,9 @@ app.register(basicApp) app.listen({ port: Math.floor(Math.random() * 3000 + 3000) }, function (err) { - if (err) process.stderr.write('failed') + if (err) { + process.stderr.write('failed') + } process.stdout.write('success') app.close() }) diff --git a/test/typescript-jest/integration/integration.test.ts b/test/typescript-jest/integration/integration.test.ts index 8bda51d5..6603059e 100644 --- a/test/typescript-jest/integration/integration.test.ts +++ b/test/typescript-jest/integration/integration.test.ts @@ -5,7 +5,9 @@ describe('integration test', function () { 'integration with %s', async function (instance) { await new Promise(function (resolve) { - const child = exec(`${instance} "${process.cwd()}/test/typescript-jest/integration/instance.ts"`) + const child = exec( + `npx ${instance} --compiler-options '{"module": "commonjs", "moduleResolution": "node", "esModuleInterop": true }' "${process.cwd()}/test/typescript-jest/integration/instance.ts"` + ) let stderr = '' child.stderr?.on('data', function (b) { stderr = stderr + b.toString() diff --git a/types/index.test-d.ts b/types/index.test-d.ts index 80b05847..2843cb65 100644 --- a/types/index.test-d.ts +++ b/types/index.test-d.ts @@ -1,9 +1,11 @@ import fastify, { FastifyInstance, FastifyPluginCallback } from 'fastify' import { expectType } from 'tsd' +// eslint-disable-next-line import-x/no-duplicates import * as fastifyAutoloadStar from '..' import fastifyAutoloadDefault, { AutoloadPluginOptions, fastifyAutoload as fastifyAutoloadNamed } from '..' -import fastifyAutoloadCjsImport = require('..') +// eslint-disable-next-line import-x/no-duplicates +import * as fastifyAutoloadCjsImport from '..' const fastifyAutoloadCjs = require('..') const app: FastifyInstance = fastify() From c6a4aabf841b8fc0041f75987bc9cee137b0b085 Mon Sep 17 00:00:00 2001 From: Tony133 Date: Mon, 26 Jan 2026 15:29:36 +0100 Subject: [PATCH 2/2] test: update test --- .../integration/integration.test.ts | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/test/typescript-jest/integration/integration.test.ts b/test/typescript-jest/integration/integration.test.ts index 6603059e..7d1bc72f 100644 --- a/test/typescript-jest/integration/integration.test.ts +++ b/test/typescript-jest/integration/integration.test.ts @@ -1,13 +1,35 @@ import { exec } from 'node:child_process' +import { join } from 'node:path' describe('integration test', function () { + const isWindows = process.platform === 'win32' + test.concurrent.each(['ts-node', 'ts-node-dev'])( 'integration with %s', async function (instance) { await new Promise(function (resolve) { + const compilerOpts = JSON.stringify({ + module: 'commonjs', + moduleResolution: 'node', + esModuleInterop: true + }) + + const optionsArg = isWindows + ? `"${compilerOpts.replace(/"/g, '\\"')}"` + : `'${compilerOpts}'` + + const filePath = join( + process.cwd(), + 'test', + 'typescript-jest', + 'integration', + 'instance.ts' + ) + const child = exec( - `npx ${instance} --compiler-options '{"module": "commonjs", "moduleResolution": "node", "esModuleInterop": true }' "${process.cwd()}/test/typescript-jest/integration/instance.ts"` + `npx ${instance} --compiler-options ${optionsArg} "${filePath}"` ) + let stderr = '' child.stderr?.on('data', function (b) { stderr = stderr + b.toString() @@ -16,6 +38,7 @@ describe('integration test', function () { child.stdout?.on('data', function (b) { stdout = stdout + b.toString() }) + child.once('close', function () { expect(stderr.includes('failed')).toStrictEqual(false) expect(stdout.includes('success')).toStrictEqual(true) @@ -23,6 +46,6 @@ describe('integration test', function () { }) }) }, - 30000 + isWindows ? 60000 : 30000 ) })