-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerateSwaggerDocs.mjs
53 lines (41 loc) · 1.52 KB
/
generateSwaggerDocs.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import swaggerJsdoc from 'swagger-jsdoc';
import fs from 'fs';
import path from 'node:path';
import UserDeviceSwagger from "./src/api/userDevice/swaggerDocs.js";
import UserMetaSwagger from "./src/api/userMeta/swaggerDocs.js";
import UserNotificationSettingsSwagger from "./src/api/userNotificationSettings/swaggerDocs.js";
import ChallengeSwagger from "./src/api/userChallenge/swaggerDocs.js";
import UserSwagger from "./src/api/user/swaggerDocs.js";
import PasskeysSwagger from './src/api/passkeys/swaggerDocs.js'
import AuthSwagger from './src/api/auth/swaggerDocs.js'
import CounterSwagger from './src/api/counter/swaggerDocs.js'
const options = {
definition: {
openapi: '3.0.0',
info: {
title: 'Challengelogger API', // Название API
version: '1.0.0', // Версия API
},
servers: [],
},
apis: ['./src/**/*.ts'], // Пути к файлам с комментариями
};
const swaggerSpec = swaggerJsdoc(options);
swaggerSpec.paths = {
...swaggerSpec.paths,
...UserDeviceSwagger.paths,
...UserMetaSwagger.paths,
...UserNotificationSettingsSwagger.paths,
...ChallengeSwagger.paths,
...UserSwagger.paths,
...PasskeysSwagger.paths,
...AuthSwagger.paths,
...CounterSwagger.paths,
};
const outputDir = './dist';
const outputPath = path.join(outputDir, 'swagger.json');
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true });
}
fs.writeFileSync(outputPath, JSON.stringify(swaggerSpec, null, 2));
console.log('Swagger documentation generated successfully!');