Skip to content

Commit

Permalink
feat: Option to choose between swagger-ui and scalar for API docs
Browse files Browse the repository at this point in the history
  • Loading branch information
jrassa committed Dec 11, 2024
1 parent 08c6a24 commit 96fe5ac
Show file tree
Hide file tree
Showing 5 changed files with 140 additions and 9 deletions.
6 changes: 4 additions & 2 deletions config/default.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@ module.exports = {
apiDocs: {
enabled: true,
path: '/api-docs',
uiOptions: {
filter: true
ui: 'swagger-ui',
config: {
filter: true,
hideClientButton: true
}
},

Expand Down
119 changes: 119 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
"@fastify/swagger": "^9.2.0",
"@fastify/swagger-ui": "^5.1.0",
"@fastify/type-provider-typebox": "^5.0.1",
"@scalar/fastify-api-reference": "^1.25.78",
"@sinclair/typebox": "^0.33.22",
"agenda": "^4.3.0",
"config": "^3.3.11",
Expand Down
2 changes: 1 addition & 1 deletion src/app/core/user/eua/eua.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ export default function (_fastify: FastifyInstance) {
url: '/eua/:id',
schema: {
description: 'Update EUA details',
tags: ['Eua'],
tags: ['EUA'],
params: IdParamsType
},
preValidation: requireAdminAccess,
Expand Down
21 changes: 15 additions & 6 deletions src/lib/fastify.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { Authenticator } from '@fastify/passport';
import fastifySession from '@fastify/session';
import fastifySwagger from '@fastify/swagger';
import fastifySwaggerUi from '@fastify/swagger-ui';
import scalarApiReference from '@scalar/fastify-api-reference';
import config from 'config';
import MongoStore from 'connect-mongo';
import { fastify, FastifyInstance } from 'fastify';
Expand Down Expand Up @@ -54,7 +55,7 @@ export async function init(db: Mongoose) {
});
}

initSwaggerAPI(app);
await initAPIDocs(app);

initActuator(app);

Expand Down Expand Up @@ -118,7 +119,7 @@ async function initModulesServerRoutes(app: FastifyInstance) {
);
}

function initSwaggerAPI(app: FastifyInstance) {
async function initAPIDocs(app: FastifyInstance) {
// apiDocs must be enabled explicitly in the config
if (config.get<boolean>('apiDocs.enabled') !== true) {
return;
Expand All @@ -139,10 +140,18 @@ function initSwaggerAPI(app: FastifyInstance) {
}
}
});
app.register(fastifySwaggerUi, {
routePrefix: config.get<string>('apiDocs.path'),
uiConfig: config.get<Record<string, unknown>>('apiDocs.uiOptions')
});

if (config.get<string>('apiDocs.ui') === 'scalar') {
await app.register(scalarApiReference, {
routePrefix: config.get<`/${string}`>('apiDocs.path'),
configuration: config.get<Record<string, unknown>>('apiDocs.config')
});
} else {
app.register(fastifySwaggerUi, {
routePrefix: config.get<string>('apiDocs.path'),
uiConfig: config.get<Record<string, unknown>>('apiDocs.config')
});
}
}

function initActuator(app: FastifyInstance) {
Expand Down

0 comments on commit 96fe5ac

Please sign in to comment.