test: move the test suites from deno test to vitest (#2891) master
* feat: run server and workflows on node 26 Replace the Deno runtime and build for apps/server, apps/workflows and the db migrate image with Node 26 and the Oxc toolchain: - dev and scripts run through oxc-node (node --import @oxc-node/core/register) - prod bundles with tsdown; @hono/node-server replaces Deno.serve - images move to node:26.8.1-slim with curl and ca-certificates (libsql's native TLS reads the system CA store); workflows ships its tsdown externals as a side-car node_modules - workflows switches @sentry/deno to @sentry/node - type checks move from deno check to tsc --noEmit; test files are excluded until they move to Vitest - pin node 26.8.1 in devbox and CI Tests still run on deno test; that moves in the next PR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test: move the test suites from deno test to vitest Run all 33 test packages on Vitest 5 instead of deno test with @std/expect and @std/testing: - @openstatus/test-utils becomes a shared vitest config (defineTestConfig) with a plugin that applies the existing test.importmap.json doubles with Deno import-map semantics, so no double changed - a codemod moves @std/testing/bdd + @std/expect to vitest, stub/spy to vi.spyOn/vi.fn, assertSpyCalls to toHaveBeenCalledTimes, .calls[i].args to .mock.calls[i]; FakeTime, returnsNext, Deno.serve/Command hand-ported - test files are typechecked again (tsc --noEmit), with the type errors that surfaced fixed - 10 unawaited expect().rejects assertions now await, so they actually run - the Bun-era compat shims (runner, mock(), matchers) and the dead server preload are removed; openapi:v1 runs on node Parity with the deno baseline was checked file by file: every test that ran under deno runs under vitest (5163 passed, 15 skipped).