Spaces:
Runtime error
Runtime error
| import { FastifyPluginAsync } from "fastify"; | |
| import fp from "fastify-plugin"; | |
| import fastifySwagger from "@fastify/swagger"; | |
| import fastifyScalar from "@scalar/fastify-api-reference"; | |
| import { titleCase } from "../utils/text.js"; | |
| import actionSchemas from "../modules/actions/actions.schema.js"; | |
| import cdpSchemas from "../modules/cdp/cdp.schemas.js"; | |
| import logsSchemas from "../modules/logs/logs.schema.js"; | |
| import browserSchemas from "../modules/sessions/sessions.schema.js"; | |
| import seleniumSchemas from "../modules/selenium/selenium.schema.js"; | |
| import scalarTheme from "./scalar-theme.js"; | |
| import { buildJsonSchemas } from "../utils/schema.js"; | |
| import filesSchemas from "../modules/files/files.schema.js"; | |
| import { getBaseUrl } from "../utils/url.js"; | |
| const SCHEMAS = { | |
| ...actionSchemas, | |
| ...browserSchemas, | |
| ...logsSchemas, | |
| ...cdpSchemas, | |
| ...seleniumSchemas, | |
| ...filesSchemas, | |
| }; | |
| export const { schemas, $ref } = buildJsonSchemas(SCHEMAS); | |
| const schemaPlugin: FastifyPluginAsync = async (fastify) => { | |
| for (const schema of schemas) { | |
| fastify.addSchema(schema); | |
| } | |
| await fastify.register(fastifySwagger, { | |
| openapi: { | |
| info: { | |
| title: "Steel Browser Instance API", | |
| description: "Documentation for controlling a single instance of Steel Browser", | |
| version: "0.0.1", | |
| }, | |
| servers: [ | |
| { | |
| url: getBaseUrl(), | |
| description: "Local server", | |
| }, | |
| ], | |
| paths: {}, // paths must be included even if it's an empty object | |
| components: { | |
| securitySchemes: {}, | |
| }, | |
| }, | |
| refResolver: { | |
| buildLocalReference: (json, baseUri, fragment, i) => { | |
| return titleCase(json.$id as string) || `Fragment${i}`; | |
| }, | |
| }, | |
| }); | |
| await fastify.register(fastifyScalar as any, { | |
| // scalar still uses fastify v4 | |
| routePrefix: "/documentation", | |
| configuration: { | |
| customCss: scalarTheme, | |
| }, | |
| }); | |
| }; | |
| export default fp(schemaPlugin); | |