- v2: register, get, cancel and checkout a registration (owner/admin only). - Registration create/cancel moved to src/services/registrations.ts and online checkout to src/services/payments.ts; v1 controllers call the same services (ServiceError carries status). - Typed frontend calls: npm run api:types writes openapi.json and schema.d.ts; apiV2() helper. Register page, Pay now and My Events cancel use v2; apiFetch reads v2 errors. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ls1vMdg2GYqbnKZmPaX1ot
23 lines
963 B
TypeScript
23 lines
963 B
TypeScript
/**
|
|
* Writes the /api/v2 OpenAPI document to frontend/src/lib/api-v2/openapi.json, from which the
|
|
* frontend's types are generated (`npm run api:types` in the repo root does both). Run it after
|
|
* adding or changing a v2 route; tests/v2.test.ts fails while the saved copy is out of date.
|
|
*/
|
|
import 'dotenv/config';
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
import { buildOpenApi } from '../src/v2/openapi';
|
|
import '../src/v2';
|
|
|
|
export const OPENAPI_FILE = path.join(__dirname, '..', '..', 'frontend', 'src', 'lib', 'api-v2', 'openapi.json');
|
|
|
|
// The version is left out so a release bump doesn't change the file.
|
|
export const currentDocument = () => JSON.stringify(buildOpenApi({ version: 'v2' }), null, 2) + '\n';
|
|
|
|
if (require.main === module) {
|
|
fs.mkdirSync(path.dirname(OPENAPI_FILE), { recursive: true });
|
|
fs.writeFileSync(OPENAPI_FILE, currentDocument());
|
|
console.log(`Wrote ${path.relative(process.cwd(), OPENAPI_FILE)}`);
|
|
process.exit(0);
|
|
}
|