openapi-metadata
Version:
Auto-Generate OpenAPI specifications from Typescript decorators
1 lines • 2 kB
Source Map (JSON)
{"version":3,"file":"document.cjs","sources":["../../src/generators/document.ts"],"sourcesContent":["import type { OpenAPIV3 } from \"openapi-types\";\nimport type { OpenAPIDocument, TypeLoaderFn } from \"../index.js\";\nimport type { Logger } from \"../types.js\";\nimport type { SetOptional } from \"type-fest\";\nimport { Context } from \"../context.js\";\nimport { generatePaths } from \"./paths.js\";\nimport deepmerge from \"deepmerge\";\n\nexport type GenerateDocumentOptions = {\n /**\n * List of Controller constructors that will be loaded into the document.\n *\n * @example [UsersController, PostsController]\n */\n controllers: Function[];\n\n /**\n * Base document that will be deep merged with the result.\n *\n * @example { info: { name: \"My Api\", version: \"1.0.0\" } }\n */\n document: SetOptional<OpenAPIV3.Document, \"openapi\" | \"paths\">;\n\n /**\n * Custom logger.\n *\n * @example { warn: (message) => myLogger.warn(mesage) }\n * @default console\n */\n customLogger?: Logger;\n\n /**\n * Additional type loaders.\n *\n * @example [VineTypeLoader, LuxonTypeLoader]\n */\n loaders?: TypeLoaderFn[];\n};\n\n/**\n * Generates a compliant OpenAPIV3 schema.\n */\nexport async function generateDocument(options: GenerateDocumentOptions): Promise<OpenAPIDocument> {\n const context = new Context(options.customLogger, options.loaders);\n\n return deepmerge(options.document, {\n openapi: \"3.0.0\",\n paths: await generatePaths(context, options.controllers),\n components: {\n schemas: context.schemas,\n },\n });\n}\n"],"names":["context","Context","deepmerge","generatePaths"],"mappings":";;;;;;;;;;AA0CA,eAAsB,iBAAiB,OAAA,EAA4D;AACjG,EAAA,MAAMA,YAAU,IAAIC,eAAA,CAAQ,OAAA,CAAQ,YAAA,EAAc,QAAQ,OAAO,CAAA;AAEjE,EAAA,OAAOC,kBAAA,CAAU,QAAQ,QAAA,EAAU;AAAA,IACjC,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,MAAMC,mBAAA,CAAcH,SAAA,EAAS,QAAQ,WAAW,CAAA;AAAA,IACvD,UAAA,EAAY;AAAA,MACV,SAASA,SAAA,CAAQ;AAAA;AACnB,GACD,CAAA;AACH;;;;"}