@spailybot/moleculer-auto-openapi
Version:
Generate openapi scheme for moleculer
61 lines (60 loc) • 2.3 kB
TypeScript
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;
}