From 376c7e4efd069d90c3d6aa41b5643f4ce65c1f9d Mon Sep 17 00:00:00 2001 From: saltyaom Date: Mon, 23 Jan 2023 13:39:47 +0700 Subject: [PATCH] :tada: feat: rc.0 --- bun.lockb | Bin 32121 -> 32104 bytes example/index.ts | 48 ++++++++++++++++++++++++++++++++--------------- package.json | 13 ++++++------- src/index.ts | 24 ++++++++++++++---------- 4 files changed, 53 insertions(+), 32 deletions(-) diff --git a/bun.lockb b/bun.lockb index bbed54eddbe3952420b8a15f38edca5e894513bc..bcaa0d410e4a4bcdbeb69d995adb7b5f5b2f2422 100755 GIT binary patch delta 9429 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 U+#BJA-H5LbHQehh@{9Ao0Nh(GLI3~& diff --git a/example/index.ts b/example/index.ts index 011e453..aa2246a 100644 --- a/example/index.ts +++ b/example/index.ts @@ -3,8 +3,35 @@ import swagger from '../src/index' const app = new Elysia() .use(swagger()) - .get('/', () => 'hi') - .get('/unpath/:id', ({ params: { id } }) => id) + .setModel({ + sign: t.Object( + { + username: t.String(), + password: t.String() + }, + { + title: 'Sign Model', + description: 'Models for handling authentication' + } + ), + number: t.Number() + }) + .get('/', () => 'hi', { + schema: { + detail: { + summary: 'Ping Pong', + description: 'Lorem Ipsum Dolar', + tags: ['Test'] + } + } + }) + .get('/unpath/:id', ({ params: { id } }) => id, { + schema: { + detail: { + deprecated: false + } + } + }) .post( '/json/:id', ({ body, params: { id }, query: { name } }) => ({ @@ -13,10 +40,7 @@ const app = new Elysia() }), { schema: { - body: t.Object({ - username: t.String(), - password: t.String() - }), + body: 'sign', response: t.Object({ username: t.String(), password: t.String(), @@ -26,16 +50,10 @@ const app = new Elysia() } ) .get('/unpath/:id/:name', ({ params: { id } }) => id) - .post('/json', ({ body }) => body, { + .post('/json', ({ body }) => '1', { schema: { - body: t.Object({ - username: t.String(), - password: t.String() - }), - response: t.Object({ - username: t.String(), - password: t.String() - }) + body: 'sign', + response: 'sign' } }) .listen(8080) diff --git a/package.json b/package.json index c9bc409..ace1b23 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@elysiajs/swagger", - "version": "0.1.1", + "version": "0.2.0-rc.0", "description": "Plugin for Elysia to auto-generate Swagger page", "author": { "name": "saltyAom", @@ -33,19 +33,18 @@ "release": "npm run build && npm run test && npm publish --access public" }, "peerDependencies": { - "elysia": ">= 0.1.0" + "elysia": ">= 0.2.0-rc.0" }, "devDependencies": { "@types/node": "^18.11.7", "@types/swagger-ui-dist": "^3.30.1", - "bun-types": "^0.2.2", + "bun-types": "^0.5.0", "eslint": "^8.26.0", - "elysia": "^0.1.0", - "typescript": "^4.8.4" + "elysia": "^0.2.0-rc.0", + "typescript": "^4.9.3" }, "dependencies": { - "@elysiajs/static": "0.1.0", - "openapi-types": "^12.0.2", + "@elysiajs/static": "0.2.0-rc.0", "swagger-ui-dist": "^4.15.5" } } diff --git a/src/index.ts b/src/index.ts index 474f1a3..a68622c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -import { type Elysia, SCHEMA } from 'elysia' +import { type Elysia, SCHEMA, DEFS } from 'elysia' import { getAbsoluteFSPath } from 'swagger-ui-dist' import { staticPlugin } from '@elysiajs/static' @@ -34,11 +34,10 @@ export const swagger = exclude: [] } ) => - (app: Elysia) => - app - .get(path, (context) => { - context.set.redirect = `${path}/static/index.html` - }) + (app: Elysia) => { + app.get(path, (context) => { + context.set.redirect = `${path}/static/index.html` + }) .get( `${path}/static/swagger-initializer.js`, () => @@ -48,7 +47,7 @@ export const swagger = } }) ) - .get(`${path}/json`, (context) => ({ + .get(`${path}/json`, ({ store }) => ({ ...{ ...defaultConfig, ...swagger, @@ -59,16 +58,21 @@ export const swagger = ...swagger.info } }, - paths: filterPaths(context.store[SCHEMA], { + paths: filterPaths(store[SCHEMA], { excludeStaticFile, exclude: Array.isArray(exclude) ? exclude : [exclude] - }) + }), + definitions: store[DEFS] })) .use( staticPlugin({ prefix: `${path}/static`, - path: getAbsoluteFSPath() + assets: getAbsoluteFSPath() }) ) + // This is intentional to prevent deeply nested type + return app + } + export default swagger