UNPKG

@standard-community/standard-openapi

Version:

[![npm version](https://img.shields.io/npm/v/@standard-community/standard-openapi.svg)](https://npmjs.org/package/@standard-community/standard-openapi "View this project on NPM") [![npm downloads](https://img.shields.io/npm/dm/@standard-community/standard

41 lines (38 loc) 1.37 kB
import { toJsonSchema } from '@standard-community/standard-json'; import { convertToOpenAPISchema } from './vendors/convert.js'; function getToOpenAPISchemaFn() { return async (schema, context) => { const openapiSchema = await toJsonSchema(schema, { errorMode: "ignore", // @ts-expect-error overrideAction: ({ valibotAction, jsonSchema }) => { const _jsonSchema = convertToOpenAPISchema(jsonSchema, context); if (valibotAction.kind === "metadata" && valibotAction.type === "metadata" && !("$ref" in _jsonSchema)) { const metadata = valibotAction.metadata; if (metadata.example !== void 0) { _jsonSchema.example = metadata.example; } if (metadata.examples && metadata.examples.length > 0) { _jsonSchema.examples = metadata.examples; } if (metadata.ref) { context.components.schemas = { ...context.components.schemas, [metadata.ref]: _jsonSchema }; return { $ref: `#/components/schemas/${metadata.ref}` }; } } return _jsonSchema; }, ...context.options }); if ("$schema" in openapiSchema) { delete openapiSchema.$schema; } return openapiSchema; }; } export { getToOpenAPISchemaFn as default };