159 lines
6.0 KiB
TypeScript
159 lines
6.0 KiB
TypeScript
import { Swagger, Tsoa } from '@tsoa/runtime';
|
|
import { ExtendedSpecConfig } from '../cli';
|
|
import { SpecGenerator } from './specGenerator';
|
|
/**
|
|
* TODO:
|
|
* Handle formData parameters
|
|
* Handle requestBodies of type other than json
|
|
* Handle requestBodies as reusable objects
|
|
* Handle headers, examples, responses, etc.
|
|
* Cleaner interface between SpecGenerator2 and SpecGenerator3
|
|
* Also accept OpenAPI 3.0.0 metadata, like components/securitySchemes instead of securityDefinitions
|
|
*/
|
|
export declare class SpecGenerator3 extends SpecGenerator {
|
|
protected readonly metadata: Tsoa.Metadata;
|
|
protected readonly config: ExtendedSpecConfig;
|
|
constructor(metadata: Tsoa.Metadata, config: ExtendedSpecConfig);
|
|
GetSpec(): Swagger.Spec3;
|
|
protected buildInfo(): Swagger.Info;
|
|
protected buildComponents(): {
|
|
examples: {};
|
|
headers: {};
|
|
parameters: {};
|
|
requestBodies: {};
|
|
responses: {};
|
|
schemas: {
|
|
[name: string]: Swagger.Schema3;
|
|
};
|
|
securitySchemes: {};
|
|
};
|
|
protected translateSecurityDefinitions(definitions: {
|
|
[name: string]: Swagger.SecuritySchemes;
|
|
}): {
|
|
[name: string]: Swagger.SecuritySchemes;
|
|
};
|
|
protected hasOAuthFlow(definition: any): definition is {
|
|
flow: string;
|
|
};
|
|
protected hasOAuthFlows(definition: any): definition is {
|
|
flows: Swagger.OAuthFlow;
|
|
};
|
|
protected buildServers(): Swagger.Server[];
|
|
protected buildSchema(): {
|
|
[name: string]: Swagger.Schema3;
|
|
};
|
|
protected buildPaths(): {
|
|
[pathName: string]: Swagger.Path3;
|
|
};
|
|
protected buildMethod(controllerName: string, method: Tsoa.Method, pathObject: any, defaultProduces?: string[]): void;
|
|
protected buildOperation(controllerName: string, method: Tsoa.Method, defaultProduces?: string[]): Swagger.Operation3;
|
|
protected buildRequestBodyWithFormData(controllerName: string, method: Tsoa.Method, parameters: Tsoa.Parameter[]): Swagger.RequestBody;
|
|
protected buildRequestBody(controllerName: string, method: Tsoa.Method, parameter: Tsoa.Parameter): Swagger.RequestBody;
|
|
protected buildMediaType(controllerName: string, method: Tsoa.Method, parameter: Tsoa.Parameter): Swagger.MediaType;
|
|
protected buildQueriesParameter(source: Tsoa.Parameter): Swagger.Parameter3[];
|
|
protected buildParameter(source: Tsoa.Parameter): Swagger.Parameter3;
|
|
protected buildExamples(source: Pick<Tsoa.Parameter, 'example' | 'exampleLabels'>): {
|
|
example?: unknown;
|
|
examples?: {
|
|
[name: string]: Swagger.Example3;
|
|
};
|
|
};
|
|
protected buildProperties(source: Tsoa.Property[]): {
|
|
[propertyName: string]: Swagger.Schema3;
|
|
};
|
|
protected getSwaggerTypeForReferenceType(referenceType: Tsoa.ReferenceType): Swagger.BaseSchema;
|
|
protected getSwaggerTypeForPrimitiveType(dataType: Tsoa.PrimitiveTypeLiteral): Swagger.BaseSchema;
|
|
protected isNull(type: Tsoa.Type): boolean;
|
|
protected groupEnums(types: Swagger.BaseSchema[]): Swagger.BaseSchema<unknown>[];
|
|
protected removeDuplicateSwaggerTypes(types: Swagger.BaseSchema[]): Swagger.BaseSchema[];
|
|
protected getSwaggerTypeForUnionType(type: Tsoa.UnionType, title?: string): {
|
|
allOf: Swagger.BaseSchema<unknown>[];
|
|
nullable: true;
|
|
} | {
|
|
nullable: true;
|
|
type?: string;
|
|
format?: Swagger.DataFormat;
|
|
$ref?: string;
|
|
title?: string;
|
|
description?: string;
|
|
default?: string | boolean | number | unknown;
|
|
multipleOf?: number;
|
|
maximum?: number;
|
|
exclusiveMaximum?: number;
|
|
minimum?: number;
|
|
exclusiveMinimum?: number;
|
|
maxLength?: number;
|
|
minLength?: number;
|
|
pattern?: string;
|
|
maxItems?: number;
|
|
minItems?: number;
|
|
uniqueItems?: boolean;
|
|
maxProperties?: number;
|
|
minProperties?: number;
|
|
enum?: Array<boolean | string | number | null>;
|
|
'x-enum-varnames'?: string[];
|
|
additionalProperties?: boolean | Swagger.BaseSchema;
|
|
properties?: {
|
|
[propertyName: string]: unknown;
|
|
} | undefined;
|
|
discriminator?: string;
|
|
readOnly?: boolean;
|
|
xml?: Swagger.XML;
|
|
externalDocs?: Swagger.ExternalDocs;
|
|
example?: unknown;
|
|
required?: string[];
|
|
items?: Swagger.BaseSchema;
|
|
allOf?: undefined;
|
|
} | {
|
|
anyOf: Swagger.BaseSchema<unknown>[];
|
|
nullable: true;
|
|
title?: string | undefined;
|
|
allOf?: undefined;
|
|
} | {
|
|
type?: string;
|
|
format?: Swagger.DataFormat;
|
|
$ref?: string;
|
|
title?: string;
|
|
description?: string;
|
|
default?: string | boolean | number | unknown;
|
|
multipleOf?: number;
|
|
maximum?: number;
|
|
exclusiveMaximum?: number;
|
|
minimum?: number;
|
|
exclusiveMinimum?: number;
|
|
maxLength?: number;
|
|
minLength?: number;
|
|
pattern?: string;
|
|
maxItems?: number;
|
|
minItems?: number;
|
|
uniqueItems?: boolean;
|
|
maxProperties?: number;
|
|
minProperties?: number;
|
|
enum?: Array<boolean | string | number | null>;
|
|
'x-enum-varnames'?: string[];
|
|
additionalProperties?: boolean | Swagger.BaseSchema;
|
|
properties?: {
|
|
[propertyName: string]: unknown;
|
|
} | undefined;
|
|
discriminator?: string;
|
|
readOnly?: boolean;
|
|
xml?: Swagger.XML;
|
|
externalDocs?: Swagger.ExternalDocs;
|
|
example?: unknown;
|
|
required?: string[];
|
|
items?: Swagger.BaseSchema;
|
|
allOf?: undefined;
|
|
nullable?: undefined;
|
|
} | {
|
|
anyOf: Swagger.BaseSchema<unknown>[];
|
|
title?: string | undefined;
|
|
allOf?: undefined;
|
|
nullable?: undefined;
|
|
};
|
|
protected getSwaggerTypeForIntersectionType(type: Tsoa.IntersectionType, title?: string): {
|
|
title?: string | undefined;
|
|
allOf: Swagger.BaseSchema<unknown>[];
|
|
};
|
|
protected getSwaggerTypeForEnumType(enumType: Tsoa.EnumType, title?: string): Swagger.Schema3;
|
|
}
|