elysiajs / elysia-swagger

A plugin for Elysia to auto-generate Swagger page
MIT License
74 stars 36 forks source link

bug: not provided guard json schema to routes #116

Open PandaWorker opened 2 months ago

PandaWorker commented 2 months ago

I would like to compose routes and not use multidimensional nesting

import http from 'node:http';
import { createServerAdapter } from '@whatwg-node/server';

import { Elysia, t } from 'elysia';
import { swagger } from '@elysiajs/swagger';

const setup = (app: Elysia) =>
    app.use(
        swagger({
            path: '/docs',
            provider: 'swagger-ui',
        })
    );

// Dont work
const router = new Elysia({
    prefix: '/:accountId',
    name: 'account-router',
}).guard({
    headers: t.Object({
        'x-remote-user': t.String({ title: 'Remote User', description: '...' }),
    }),
});
// Dont provide headers schema
router.get('/', ({ headers }) => {
    return {
        from: headers['x-remote-user'],
    };
});

// Work
const router2 = new Elysia({
    prefix: '/v2/:accountId',
    name: 'account-router',
}).guard(
    {
        headers: t.Object({
            'x-remote-user': t.String({
                title: 'Remote User',
                description: '...',
            }),
        }),
    },
    // Its ok provided
    (app) =>
        app.get('/', ({ headers }) => {
            return {
                from: headers['x-remote-user'],
            };
        })
);

const app = new Elysia().use(setup).use(router).use(router2);

const adapter = createServerAdapter(async (request) => {
    return app.handle(request);
});

http.createServer(adapter).listen(3000);
image image