UNPKG

@spailybot/moleculer-auto-openapi

Version:
61 lines (60 loc) 2.3 kB
import { OpenAPIV3_1 } from 'openapi-types'; import { ValidationSchema } from 'fastest-validator'; import { addMappersFn, FastestValidatorType, openApiServiceOpenApi } from './types/index.js'; import { LoggerInstance } from 'moleculer'; import { Alias } from './objects/Alias.js'; import { OpenApiVersionsSupported } from './constants.js'; export declare class OpenApiGenerator { private readonly logger; private components; private readonly document; private readonly converter; constructor(logger: LoggerInstance, validator: FastestValidatorType, baseDocument: openApiServiceOpenApi, addMappersFn: addMappersFn); private isLoaded?; load(): Promise<void>; generate(openApiVersion: OpenApiVersionsSupported, aliases: Array<Alias>): OpenAPIV3_1.Document; private addServerToDocument; private mergeComponents; private addQueryParameters; private getRequestBody; private extractParameters; private getParameters; /** * file upload use a specific way to works, so we need to handle it here * * @link https://moleculer.services/docs/0.14/moleculer-web.html#File-upload-aliases */ private generateFileUploadBody; private isReferenceObject; private getComponent; private getComponentByRef; createRequestBodyFromParams(rootSchemeName: string, obj: ValidationSchema, exclude?: Array<string>, parentNode?: { default?: any; }): OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject | undefined; /** * extract params from /{table} * @param url * @returns {[]} */ extractParamsFromUrl(url?: string): Array<OpenAPIV3_1.ParameterObject>; /** * Convert moleculer params to openapi definitions(components schemas) * @param schemeName * @param obj * @param customProperties */ _createSchemaComponentFromObject(schemeName: string, obj: Record<string, OpenAPIV3_1.SchemaObject>, customProperties?: { default?: any; }): OpenAPIV3_1.ReferenceObject; /** * convert /:table to /{table} * @param url * @returns {string|string} */ private formatParamUrl; private _createSchemaPartFromRule; private extractSystemParams; private removeExtensions; private cleanComponents; private handleTags; }