Fix/apiDocsBuild (#989)

* copy api json to docs

* copy api json to docs

* improvements

* fix web build

* mjs > js
This commit is contained in:
slothful-vassal
2026-05-12 11:28:04 +02:00
committed by GitHub
parent 0bb55ef84e
commit 611a7b5f02
11 changed files with 59 additions and 13871 deletions

View File

@@ -62,6 +62,8 @@ jobs:
VERSION: ${{ needs.publish.outputs.version }}
run: |
docker buildx build db/ --no-cache -t flomp/wanderer-db:$VERSION -t flomp/wanderer-db:latest --platform=linux/amd64,linux/arm64 --push
npm --prefix web ci
npm --prefix web run openapi:generate
docker buildx build web/ --no-cache -t flomp/wanderer-web:$VERSION -t flomp/wanderer-web:latest --platform=linux/amd64,linux/arm64 --push
npm --prefix docs ci
npm --prefix docs run build

3
docs/.gitignore vendored
View File

@@ -3,6 +3,9 @@ dist/
# generated types
.astro/
# generated OpenAPI schema
wanderer.openapi.json
# dependencies
node_modules/

View File

@@ -5,7 +5,8 @@
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"build": "astro check && astro build",
"sync-openapi": "node scripts/sync-openapi.js",
"build": "npm run sync-openapi && astro check && astro build",
"preview": "astro preview",
"astro": "astro"
},

View File

@@ -0,0 +1,18 @@
import { copyFileSync, existsSync } from 'node:fs';
import { dirname, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
const scriptDir = dirname(fileURLToPath(import.meta.url));
const docsDir = resolve(scriptDir, '..');
const repoDir = resolve(docsDir, '..');
const source = resolve(repoDir, 'web/static/docs/api/wanderer.openapi.json');
const destination = resolve(docsDir, 'wanderer.openapi.json');
if (!existsSync(source)) {
console.error(`OpenAPI schema not found at ${source}. Run the web build first so it can be generated.`);
process.exit(1);
}
copyFileSync(source, destination);
console.log(`Synced OpenAPI schema to ${destination}`);

File diff suppressed because it is too large Load Diff

1
web/.gitignore vendored
View File

@@ -3,6 +3,7 @@ node_modules
/build
/.svelte-kit
/package
static/docs/api/wanderer.openapi.json
.env
.env.*
!.env.example

12
web/openapi.config.js Normal file
View File

@@ -0,0 +1,12 @@
export function openapiOptions(version) {
return {
info: {
title: 'Wanderer API',
version,
description: 'API documentation for wanderer backend',
},
outputPath: 'static/docs/api/wanderer.openapi.json',
include: ['src/routes/api/v1/**/*.{js,ts}'],
baseSchemasPath: 'src/lib/models/api/openapi_schemas.ts',
};
}

View File

@@ -5,6 +5,7 @@
"scripts": {
"dev": "vite dev",
"build": "vite build",
"openapi:generate": "node scripts/generate-openapi.js",
"start": "node watcher.js & node build",
"preview": "vite preview",
"test": "npm run test:integration && npm run test:unit",

View File

@@ -0,0 +1,18 @@
import { readFileSync } from 'node:fs';
import { dirname, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
import { generateSpec, writeSpec } from '../node_modules/sveltekit-openapi-generator/dist/generator.js';
import { openapiOptions } from '../openapi.config.js';
const scriptDir = dirname(fileURLToPath(import.meta.url));
const webDir = resolve(scriptDir, '..');
const packageJson = JSON.parse(readFileSync(resolve(webDir, 'package.json'), 'utf-8'));
const { outputPath, ...generatorOptions } = openapiOptions(packageJson.version);
const spec = generateSpec({
rootDir: webDir,
...generatorOptions,
});
writeSpec(spec, resolve(webDir, outputPath));

File diff suppressed because it is too large Load Diff

View File

@@ -4,20 +4,12 @@ import tailwindcss from '@tailwindcss/vite';
import fs from 'fs';
import openapiPlugin from 'sveltekit-openapi-generator';
import { defineConfig } from 'vitest/config';
import { openapiOptions } from './openapi.config.js';
const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf-8'));
export default defineConfig({
plugins: [enhancedImages(), openapiPlugin({
info: {
title: 'Wanderer API',
version: `${packageJson.version}`,
description: 'API documentation for wanderer backend',
},
outputPath: 'static/docs/api/wanderer.openapi.json',
include: ['src/routes/api/v1/**/*.{js,ts}'],
baseSchemasPath: 'src/lib/models/api/openapi_schemas.ts',
}), tailwindcss(), sveltekit()],
plugins: [enhancedImages(), openapiPlugin(openapiOptions(packageJson.version)), tailwindcss(), sveltekit()],
test: { include: ['src/**/*.{test,spec}.{js,ts}'] },
ssr: { noExternal: ['three'] },
...(process.env.WANDERER_ENV == "dev" ? {