{"version":3,"file":"exports.mjs","sources":["../src/exports.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { DocumentAssemblerFactory } from './assemblers';\nimport { DocumentContextFactory } from './context';\nimport { OpenAPIGenerator } from './generator';\nimport { PostProcessorsFactory } from './post-processor';\nimport { PreProcessorFactory } from './pre-processor';\nimport {\n AdminRoutesProvider,\n ApiRoutesProvider,\n PluginRoutesProvider,\n RouteCollector,\n RouteMatcher,\n rules,\n} from './routes';\n\nimport type { GenerationOptions } from './types';\nimport type { GeneratorOutput } from './generator';\n\n/**\n * Generates an in-memory OpenAPI specification for Strapi routes.\n *\n * @experimental\n *\n * @param strapi - The Strapi application instance.\n * @param options - Optional configuration for the generation process.\n * @param options.type - The type of routes to generate documentation for, either 'admin' or 'content-api'.\n * Defaults to 'content-api'.\n * @returns An object containing the generated OpenAPI document and other relevant outputs.\n *\n * @example\n * ```typescript\n * import { generate } from '@strapi/openapi';\n *\n * // Assuming 'strapi' is your Strapi instance\n * const output = generate(strapi, { type: 'content-api' });\n * console.log(output.document);\n * ```\n *\n * @example\n * ```typescript\n * import { generate } from '@strapi/openapi';\n *\n * // Generate documentation for all route types (default)\n * const output = generate(strapi);\n * console.log(output.document);\n * ```\n */\nexport const generate = (strapi: Core.Strapi, options?: GenerationOptions): GeneratorOutput => {\n const { type = 'content-api' } = options ?? {};\n\n const config = {\n preProcessors: new PreProcessorFactory().createAll(),\n assemblers: new DocumentAssemblerFactory().createAll(),\n postProcessors: new PostProcessorsFactory().createAll(),\n };\n\n // Data sources for the Strapi routes\n const routeCollector = new RouteCollector(\n [\n new AdminRoutesProvider(strapi),\n new ApiRoutesProvider(strapi),\n new PluginRoutesProvider(strapi),\n ],\n\n new RouteMatcher([\n // Only match content-api routes\n rules.isOfType(type),\n ])\n );\n\n const contextFactory = new DocumentContextFactory();\n\n const generator = new OpenAPIGenerator(config, strapi, routeCollector, contextFactory);\n\n return generator.generate();\n};\n\nexport type { GenerationOptions, GeneratorOutput };\n"],"names":["generate","strapi","options","type","config","preProcessors","PreProcessorFactory","createAll","assemblers","DocumentAssemblerFactory","postProcessors","PostProcessorsFactory","routeCollector","RouteCollector","AdminRoutesProvider","ApiRoutesProvider","PluginRoutesProvider","RouteMatcher","rules","contextFactory","DocumentContextFactory","generator","OpenAPIGenerator"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAmBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BC,IACM,MAAMA,QAAW,GAAA,CAACC,MAAqBC,EAAAA,OAAAA,GAAAA;AAC5C,IAAA,MAAM,EAAEC,IAAO,GAAA,aAAa,EAAE,GAAGD,WAAW,EAAC;AAE7C,IAAA,MAAME,MAAS,GAAA;QACbC,aAAe,EAAA,IAAIC,sBAAsBC,SAAS,EAAA;QAClDC,UAAY,EAAA,IAAIC,2BAA2BF,SAAS,EAAA;QACpDG,cAAgB,EAAA,IAAIC,wBAAwBJ,SAAS;AACvD,KAAA;;IAGA,MAAMK,cAAAA,GAAiB,IAAIC,cACzB,CAAA;AACE,QAAA,IAAIC,mBAAoBb,CAAAA,MAAAA,CAAAA;AACxB,QAAA,IAAIc,iBAAkBd,CAAAA,MAAAA,CAAAA;AACtB,QAAA,IAAIe,oBAAqBf,CAAAA,MAAAA;AAC1B,KAAA,EAED,IAAIgB,YAAa,CAAA;;AAEfC,QAAAA,QAAc,CAACf,IAAAA;AAChB,KAAA,CAAA,CAAA;AAGH,IAAA,MAAMgB,iBAAiB,IAAIC,sBAAAA,EAAAA;AAE3B,IAAA,MAAMC,SAAY,GAAA,IAAIC,gBAAiBlB,CAAAA,MAAAA,EAAQH,QAAQW,cAAgBO,EAAAA,cAAAA,CAAAA;AAEvE,IAAA,OAAOE,UAAUrB,QAAQ,EAAA;AAC3B;;;;"}