0.0.5 • Published 1 month ago

@byyuurin/nitro-openapi v0.0.5

Weekly downloads
-
License
MIT
Repository
github
Last release
1 month ago

@byyuurin/nitro-openapi

WIP

Install

npm i -D @byyuurin/nitro-openapi

Usage

Enable openApi

// nitor.config.ts
export default defineNitroConfig({
  experimental: {
    openAPI: true,
  },
})

Create nitor plugin:

// plugins/swagger.ts
import { createOpenApiRegister } from '@byyuurin/nitro-openapi'
import type { OpenAPI3 } from 'openapi-typescript'

export const { register, merge, configExtends } = createOpenApiRegister({
  // ...
})

export default defineNitroPlugin((nitro) => {
  nitro.hooks.hook('beforeResponse', (event, context) => {
    if (!/openapi.json/.test(event.path))
      return

    // merge config
    const config = context.body as OpenAPI3
    context.body = merge(config)
  })
})

Auto import

// utils/swagger.ts
export { register } from '../plugins/swagger'

Or custom register

// utils/swagger.ts
import type { PathOperationItem, PathOperationMethod } from '@byyuurin/nitro-openapi'
import type { InternalApi } from 'nitropack'
import type { configExtends } from '../plugins/swagger'
import { register } from '../plugins/swagger'

type RouteMeta = PathOperationItem<typeof configExtends> & {
  method?: PathOperationMethod
}

export function defineRouteMeta(
  route: keyof InternalApi,
  meta: RouteMeta,
) {
  const { method, ...operation } = meta
  register(route, operation, method)
}

Then use the register

// route/**/*.ts

defineRouteMeta('/api/...', {
  /* ... */
})

export default defineEventHandler(() => {
  /* ... */
})
0.0.5

1 month ago

0.0.4

1 month ago

0.0.3

2 months ago

0.0.2

2 months ago

0.0.1

2 months ago