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..7d1bc72f 100644 --- a/test/typescript-jest/integration/integration.test.ts +++ b/test/typescript-jest/integration/integration.test.ts @@ -1,11 +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 child = exec(`${instance} "${process.cwd()}/test/typescript-jest/integration/instance.ts"`) + 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 ${optionsArg} "${filePath}"` + ) + let stderr = '' child.stderr?.on('data', function (b) { stderr = stderr + b.toString() @@ -14,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) @@ -21,6 +46,6 @@ describe('integration test', function () { }) }) }, - 30000 + isWindows ? 60000 : 30000 ) }) 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()