1- import { Hono } from 'hono' ;
1+ import { OpenAPIHono } from '@hono/zod-openapi' ;
2+ import { Scalar } from '@scalar/hono-api-reference' ;
23import { cors } from 'hono/cors' ;
34
45import { createMiddlewares } from './middlewares' ;
@@ -9,10 +10,46 @@ import { createCategoryRouter } from './modules/category/category.router';
910import { createOrderRouter } from './modules/order/order.router' ;
1011import { createProductRouter } from './modules/product/product.router' ;
1112import { createUserRouter } from './modules/user/user.router' ;
13+ import { SECURITY_SCHEMES } from './shared/constants/security-schemes.constants' ;
1214import { ERROR_HTTP_STATUS } from './shared/exceptions/error-status-map' ;
1315import { resolveErrorCode } from './shared/exceptions/resolve-error-code' ;
1416
15- const app = new Hono ( ) . basePath ( '/api' ) ;
17+ const app = new OpenAPIHono ( ) . basePath ( '/api' ) ;
18+
19+ app . openAPIRegistry . registerComponent ( 'securitySchemes' , SECURITY_SCHEMES . ACCESS_TOKEN_COOKIE , {
20+ type : 'apiKey' ,
21+ in : 'cookie' ,
22+ name : 'accessToken' ,
23+ } ) ;
24+
25+ app . openAPIRegistry . registerComponent ( 'securitySchemes' , SECURITY_SCHEMES . REFRESH_TOKEN_COOKIE , {
26+ type : 'apiKey' ,
27+ in : 'cookie' ,
28+ name : 'refreshToken' ,
29+ } ) ;
30+
31+ app . doc ( '/openapi.json' , {
32+ openapi : '3.0.0' ,
33+ info : {
34+ title : 'Ecommerce Backend Starter' ,
35+ version : '1.0.0' ,
36+ } ,
37+ tags : [
38+ { name : 'Auth' , description : 'Авторизация и аутентификация' } ,
39+ { name : 'Products' , description : 'Работа с продуктами' } ,
40+ { name : 'Categories' , description : 'Работа с категориями' } ,
41+ { name : 'Cart' , description : 'Корзина пользователя' } ,
42+ { name : 'Orders' , description : 'Заказы пользователя' } ,
43+ { name : 'Users' , description : 'Работа с пользователями' } ,
44+ ] ,
45+ } ) ;
46+
47+ app . get (
48+ '/docs' ,
49+ Scalar ( {
50+ url : '/api/openapi.json' ,
51+ } ) ,
52+ ) ;
1653
1754app . use (
1855 '*' ,
0 commit comments