feat(api): replace astro openapi with hono openapi ui
All checks were successful
Build and Push Docker Image / build (push) Successful in 55s
All checks were successful
Build and Push Docker Image / build (push) Successful in 55s
This commit is contained in:
parent
d7c1b0525a
commit
fad940b517
@ -10,6 +10,7 @@
|
||||
"@boring.tools/schema": "workspace:*",
|
||||
"@hono/clerk-auth": "^2.0.0",
|
||||
"@hono/zod-openapi": "^0.16.2",
|
||||
"@scalar/hono-api-reference": "^0.5.149",
|
||||
"hono": "^4.6.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
@ -1,5 +1,6 @@
|
||||
import type { UserOutput } from '@boring.tools/schema'
|
||||
import { OpenAPIHono, type z } from '@hono/zod-openapi'
|
||||
import { apiReference } from '@scalar/hono-api-reference'
|
||||
import { cors } from 'hono/cors'
|
||||
|
||||
import user from './user'
|
||||
@ -27,6 +28,17 @@ app.doc('/openapi.json', {
|
||||
},
|
||||
})
|
||||
|
||||
app.get(
|
||||
'/',
|
||||
apiReference({
|
||||
pageTitle: 'boring.tools API',
|
||||
theme: 'purple',
|
||||
spec: {
|
||||
url: '/openapi.json',
|
||||
},
|
||||
}),
|
||||
)
|
||||
|
||||
export default {
|
||||
port: 3000,
|
||||
fetch: app.fetch,
|
||||
|
@ -1,6 +1,5 @@
|
||||
import starlight from '@astrojs/starlight'
|
||||
import { defineConfig } from 'astro/config'
|
||||
import starlightOpenAPI, { openAPISidebarGroups } from 'starlight-openapi'
|
||||
|
||||
export default defineConfig({
|
||||
outDir: '../../build/website',
|
||||
@ -20,31 +19,18 @@ export default defineConfig({
|
||||
social: {
|
||||
github: 'https://github.com/boring-tools/boring.tools',
|
||||
},
|
||||
favicon: '/public/favicon.svg',
|
||||
favicon: '/favicon.svg',
|
||||
sidebar: [
|
||||
{
|
||||
label: 'Guides',
|
||||
items: [{ label: 'Getting started', slug: 'guides/getting-started' }],
|
||||
},
|
||||
...openAPISidebarGroups,
|
||||
{ label: 'API', link: 'https://api.boring.tools' },
|
||||
// {
|
||||
// label: 'Reference',
|
||||
// autogenerate: { directory: 'reference' },
|
||||
// },
|
||||
],
|
||||
plugins: [
|
||||
// Generate the OpenAPI documentation pages.
|
||||
starlightOpenAPI([
|
||||
{
|
||||
base: 'api',
|
||||
label: 'API',
|
||||
schema:
|
||||
import.meta.env.NODE_ENV !== 'production'
|
||||
? 'http://localhost:3000/openapi.json'
|
||||
: 'https://api.boring.tools/openapi.json',
|
||||
},
|
||||
]),
|
||||
],
|
||||
}),
|
||||
],
|
||||
})
|
||||
|
@ -14,7 +14,6 @@
|
||||
"@astrojs/starlight": "^0.28.2",
|
||||
"astro": "^4.15.3",
|
||||
"sharp": "^0.32.5",
|
||||
"starlight-openapi": "^0.7.0",
|
||||
"typescript": "^5.6.2"
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,11 @@
|
||||
import { z } from '@hono/zod-openapi'
|
||||
|
||||
export const UserOutput = z.object({
|
||||
id: z.string().openapi({
|
||||
example: 'user_2metCkqOhUhHN1jEhLyh8wMODu7',
|
||||
}),
|
||||
name: z.string(),
|
||||
email: z.string().email(),
|
||||
})
|
||||
export const UserOutput = z
|
||||
.object({
|
||||
id: z.string().openapi({
|
||||
example: 'user_2metCkqOhUhHN1jEhLyh8wMODu7',
|
||||
}),
|
||||
name: z.string(),
|
||||
email: z.string().email(),
|
||||
})
|
||||
.openapi('User')
|
||||
|
@ -27,4 +27,4 @@ export const UserWebhookInput = z
|
||||
examples: ['user.created', 'user.updated'],
|
||||
}),
|
||||
})
|
||||
.openapi('User')
|
||||
.openapi('User Webhook')
|
||||
|
Loading…
Reference in New Issue
Block a user