Spaces:
Sleeping
Sleeping
| import { defineConfig } from 'vitest/config'; | |
| import swc from 'unplugin-swc'; | |
| export default defineConfig({ | |
| // SWC transform so NestJS decorator metadata is emitted in tests | |
| // (vitest's default esbuild does not emit it -> type-based DI would break). | |
| plugins: [ | |
| swc.vite({ | |
| jsc: { | |
| parser: { syntax: 'typescript', decorators: true }, | |
| transform: { legacyDecorator: true, decoratorMetadata: true }, | |
| keepClassNames: true, | |
| }, | |
| }), | |
| ], | |
| test: { | |
| root: '.', | |
| include: ['tests/**/*.test.ts'], | |
| globals: true, | |
| setupFiles: ['tests/setup.ts'], | |
| testTimeout: 15000, | |
| hookTimeout: 15000, | |
| pool: 'forks', | |
| silent: false, | |
| reporters: ['verbose'], | |
| coverage: { | |
| // Vite 8 + Vitest 4 made the sourcemap-based `v8` provider under-report branch | |
| // coverage on the SWC/decorator-transformed output (it dropped to ~68% even | |
| // though every test passes). `istanbul` instruments the source directly, so | |
| // coverage is measured independently of the transform pipeline. | |
| provider: 'istanbul', | |
| reporter: ['lcov', 'text'], | |
| reportsDirectory: './coverage', | |
| include: ['src/**/*.ts'], | |
| // Coverage gate scoped to the new NestJS code only — the legacy codebase | |
| // is intentionally ungated. Raised to the DoD's >=80% bar once the first | |
| // module (weather) landed; ratchet further as more modules are migrated. | |
| thresholds: { | |
| 'src/nest/**/*.ts': { statements: 80, branches: 80, functions: 80, lines: 80 }, | |
| }, | |
| }, | |
| }, | |
| resolve: { | |
| alias: { | |
| // MCP SDK's exports map uses extension-less wildcard targets that neither | |
| // Node nor Vite can resolve. Point directly at the CJS dist files. | |
| // Paths are relative to the monorepo root (packages are hoisted there). | |
| '@modelcontextprotocol/sdk/server/mcp': new URL( | |
| '../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js', | |
| import.meta.url | |
| ).pathname, | |
| '@modelcontextprotocol/sdk/server/streamableHttp': new URL( | |
| '../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/streamableHttp.js', | |
| import.meta.url | |
| ).pathname, | |
| '@modelcontextprotocol/sdk/inMemory': new URL( | |
| '../node_modules/@modelcontextprotocol/sdk/dist/cjs/inMemory.js', | |
| import.meta.url | |
| ).pathname, | |
| '@modelcontextprotocol/sdk/client/index': new URL( | |
| '../node_modules/@modelcontextprotocol/sdk/dist/cjs/client/index.js', | |
| import.meta.url | |
| ).pathname, | |
| }, | |
| }, | |
| }); |