feat(api): error + validate + pagination plumbing

Add lib/api/{errors,validate,pagination,index}.js: typed ApiError
subclasses, errorMiddleware, zod-backed validate(), parsePagination
with caps, and a mountApi() that owns /api routing + 404 + error tail.
server.js delegates /api to mountApi and drops the inline /api/spaces
smoke (returns in Task 2).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
root
2026-05-31 16:37:06 +10:00
parent 42d7f568a2
commit 75afedaef0
9 changed files with 254 additions and 15 deletions

14
tests/api/helpers.js Normal file
View File

@@ -0,0 +1,14 @@
import { createApp } from '../../server.js';
import { resetDb } from '../helpers/db.js';
import { migrateUp } from '../../lib/db/migrate.js';
const OWNER_TOKEN = 'test-token';
export async function setup() {
await resetDb();
await migrateUp();
process.env.OWNER_TOKEN = OWNER_TOKEN;
const app = createApp();
const ownerHeaders = { Authorization: `Bearer ${OWNER_TOKEN}` };
return { app, ownerHeaders, OWNER_TOKEN };
}