experimental: api doc

This commit is contained in:
Methapon Metanipat 2024-10-24 11:50:55 +07:00
parent 25a20c4ad2
commit cef53c0db9
3 changed files with 47 additions and 35 deletions

View file

@ -21,7 +21,6 @@
"@types/cors": "^2.8.17",
"@types/express": "^4.17.21",
"@types/node": "^20.16.13",
"@types/swagger-ui-express": "^4.1.6",
"nodemon": "^3.1.7",
"prettier": "^3.3.3",
"prisma": "^5.21.1",
@ -33,6 +32,7 @@
"@elastic/elasticsearch": "^8.15.1",
"@fast-csv/parse": "^5.0.0",
"@prisma/client": "^5.21.1",
"@scalar/express-api-reference": "^0.4.165",
"@tsoa/runtime": "^6.5.1",
"@types/morgan": "^1.9.9",
"cors": "^2.8.5",
@ -44,7 +44,6 @@
"morgan": "^1.10.0",
"prisma-extension-kysely": "^2.1.0",
"promise.any": "^2.0.6",
"swagger-ui-express": "^5.0.1",
"tsoa": "^6.5.1",
"winston": "^3.15.0",
"winston-elasticsearch": "^0.19.0"

74
pnpm-lock.yaml generated
View file

@ -17,6 +17,9 @@ importers:
'@prisma/client':
specifier: ^5.21.1
version: 5.21.1(prisma@5.21.1)
'@scalar/express-api-reference':
specifier: ^0.4.165
version: 0.4.165
'@tsoa/runtime':
specifier: ^6.5.1
version: 6.5.1
@ -50,9 +53,6 @@ importers:
promise.any:
specifier: ^2.0.6
version: 2.0.6
swagger-ui-express:
specifier: ^5.0.1
version: 5.0.1(express@4.21.1)
tsoa:
specifier: ^6.5.1
version: 6.5.1
@ -72,9 +72,6 @@ importers:
'@types/node':
specifier: ^20.16.13
version: 20.16.13
'@types/swagger-ui-express':
specifier: ^4.1.6
version: 4.1.6
nodemon:
specifier: ^3.1.7
version: 3.1.7
@ -354,6 +351,18 @@ packages:
'@prisma/prisma-schema-wasm@5.3.1-2.61e140623197a131c2a6189271ffee05a7aa9a59':
resolution: {integrity: sha512-+zUI7NQDXfcNnU8HgrAj4jRMv8yRfITLzcfv0Urf0adKimM+hkkVG4rX38i9zWMlxekkEBw7NLFx3Gxxy8d3iQ==}
'@scalar/express-api-reference@0.4.165':
resolution: {integrity: sha512-Bpam2htoq6Oq+vlW05qlEyw1libyoA2i44DwN+1gHH9s6toydEIkFdlAS00gor+3WwN+ogdBeAyfJDZlqUj7Bw==}
engines: {node: '>=18'}
'@scalar/openapi-types@0.1.4':
resolution: {integrity: sha512-+wRXgmqzgDnj8Dxqf4OOPMPo4or/LRd1Bsy4pnrIW0yBt8rKSdtBb+jH/aRnhgDDmKVjWxJ+KFk7WlSKvZwNTw==}
engines: {node: '>=18'}
'@scalar/types@0.0.17':
resolution: {integrity: sha512-wUrvNnYFMULsHENX/9TP3oyECRTtZsP06mOZU+RlWg9sRtzWVTjlBCahkgUETL93J+Bz2RLFSKVgPyNN4fpIpA==}
engines: {node: '>=18'}
'@tsconfig/node10@1.0.11':
resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
@ -457,12 +466,12 @@ packages:
'@types/serve-static@1.15.5':
resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==}
'@types/swagger-ui-express@4.1.6':
resolution: {integrity: sha512-UVSiGYXa5IzdJJG3hrc86e8KdZWLYxyEsVoUI4iPXc7CO4VZ3AfNP8d/8+hrDRIqz+HAaSMtZSqAsF3Nq2X/Dg==}
'@types/triple-beam@1.3.5':
resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==}
'@unhead/schema@1.11.10':
resolution: {integrity: sha512-lXh7cm5XtFaw3gc+ZVXTSfIHXiBpAywbjtEiOsz5TR4GxOjj2rtfOAl4C3Difk1yupP6L2otYmOZdn/i8EXSJg==}
'@zxing/text-encoding@0.9.0':
resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==}
@ -1173,6 +1182,9 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
hosted-git-info@2.8.9:
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
@ -2215,15 +2227,6 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
swagger-ui-dist@5.13.0:
resolution: {integrity: sha512-uaWhh6j18IIs5tOX0arvIBnVINAzpTXaQXkr7qAk8zoupegJVg0UU/5+S/FgsgVCnzVsJ9d7QLjIxkswEeTg0Q==}
swagger-ui-express@5.0.1:
resolution: {integrity: sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA==}
engines: {node: '>= v0.10.32'}
peerDependencies:
express: '>=4.0.0 || >=5.0.0-beta'
tar-stream@2.2.0:
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
engines: {node: '>=6'}
@ -2501,6 +2504,9 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
zhead@2.2.4:
resolution: {integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==}
zip-stream@4.1.1:
resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==}
engines: {node: '>= 10'}
@ -2950,6 +2956,17 @@ snapshots:
'@prisma/prisma-schema-wasm@5.3.1-2.61e140623197a131c2a6189271ffee05a7aa9a59': {}
'@scalar/express-api-reference@0.4.165':
dependencies:
'@scalar/types': 0.0.17
'@scalar/openapi-types@0.1.4': {}
'@scalar/types@0.0.17':
dependencies:
'@scalar/openapi-types': 0.1.4
'@unhead/schema': 1.11.10
'@tsconfig/node10@1.0.11': {}
'@tsconfig/node12@1.0.11': {}
@ -3095,13 +3112,13 @@ snapshots:
'@types/mime': 4.0.0
'@types/node': 20.16.13
'@types/swagger-ui-express@4.1.6':
dependencies:
'@types/express': 4.17.21
'@types/serve-static': 1.15.5
'@types/triple-beam@1.3.5': {}
'@unhead/schema@1.11.10':
dependencies:
hookable: 5.5.3
zhead: 2.2.4
'@zxing/text-encoding@0.9.0':
optional: true
@ -4024,6 +4041,8 @@ snapshots:
dependencies:
function-bind: 1.1.2
hookable@5.5.3: {}
hosted-git-info@2.8.9: {}
hpagent@1.2.0: {}
@ -5081,13 +5100,6 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
swagger-ui-dist@5.13.0: {}
swagger-ui-express@5.0.1(express@4.21.1):
dependencies:
express: 4.21.1
swagger-ui-dist: 5.13.0
tar-stream@2.2.0:
dependencies:
bl: 4.1.0
@ -5408,6 +5420,8 @@ snapshots:
yocto-queue@0.1.0: {}
zhead@2.2.4: {}
zip-stream@4.1.1:
dependencies:
archiver-utils: 3.0.4

View file

@ -1,13 +1,12 @@
import "dotenv/config";
import cors from "cors";
import express, { json, urlencoded } from "express";
import swaggerUi from "swagger-ui-express";
import swaggerDocument from "./swagger.json";
import error from "./middlewares/error";
import morgan from "./middlewares/morgan";
import { RegisterRoutes } from "./routes";
import { initThailandAreaDatabase } from "./utils/thailand-area";
import { initFirstAdmin } from "./utils/database";
import { apiReference } from "@scalar/express-api-reference";
const APP_HOST = process.env.APP_HOST || "0.0.0.0";
const APP_PORT = +(process.env.APP_PORT || 3000);
@ -31,7 +30,7 @@ const APP_PORT = +(process.env.APP_PORT || 3000);
app.use(morgan);
app.use("/", express.static("static"));
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerDocument));
app.use("/api-docs", apiReference({ theme: "kepler", spec: { url: "/api/openapi" } }));
RegisterRoutes(app);