181 lines
6.2 KiB
TypeScript
181 lines
6.2 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;
|
|
private buildInfo;
|
|
private buildComponents;
|
|
private translateSecurityDefinitions;
|
|
private hasOAuthFlow;
|
|
private hasOAuthFlows;
|
|
private buildServers;
|
|
private buildSchema;
|
|
private buildPaths;
|
|
private buildMethod;
|
|
protected buildOperation(controllerName: string, method: Tsoa.Method, defaultProduces?: string[]): Swagger.Operation3;
|
|
private buildRequestBodyWithFormData;
|
|
private buildRequestBody;
|
|
private buildMediaType;
|
|
private buildQueriesParameter;
|
|
private buildParameter;
|
|
protected buildProperties(source: Tsoa.Property[]): {
|
|
[propertyName: string]: Swagger.Schema3;
|
|
};
|
|
protected getSwaggerTypeForReferenceType(referenceType: Tsoa.ReferenceType): Swagger.BaseSchema;
|
|
protected getSwaggerTypeForPrimitiveType(dataType: Tsoa.PrimitiveTypeLiteral): Swagger.Schema;
|
|
private isNull;
|
|
private groupEnums;
|
|
protected removeDuplicateSwaggerTypes(types: Array<Swagger.Schema | Swagger.BaseSchema>): Array<Swagger.Schema | Swagger.BaseSchema>;
|
|
protected getSwaggerTypeForUnionType(type: Tsoa.UnionType, title?: string): {
|
|
allOf: (Swagger.Schema | Swagger.BaseSchema)[];
|
|
nullable: true;
|
|
} | {
|
|
nullable: true;
|
|
type?: Swagger.DataType;
|
|
format?: Swagger.DataFormat;
|
|
additionalProperties?: boolean | Swagger.BaseSchema;
|
|
properties?: {
|
|
[propertyName: string]: Swagger.Schema3;
|
|
};
|
|
discriminator?: string;
|
|
readOnly?: boolean;
|
|
xml?: Swagger.XML;
|
|
externalDocs?: Swagger.ExternalDocs;
|
|
example?: unknown;
|
|
required?: string[];
|
|
$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[];
|
|
items?: Swagger.BaseSchema;
|
|
allOf?: undefined;
|
|
} | {
|
|
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[];
|
|
items?: Swagger.BaseSchema;
|
|
allOf?: undefined;
|
|
} | {
|
|
anyOf: (Swagger.Schema | Swagger.BaseSchema)[];
|
|
nullable: true;
|
|
title?: string | undefined;
|
|
allOf?: undefined;
|
|
} | {
|
|
type?: Swagger.DataType;
|
|
format?: Swagger.DataFormat;
|
|
additionalProperties?: boolean | Swagger.BaseSchema;
|
|
properties?: {
|
|
[propertyName: string]: Swagger.Schema3;
|
|
};
|
|
discriminator?: string;
|
|
readOnly?: boolean;
|
|
xml?: Swagger.XML;
|
|
externalDocs?: Swagger.ExternalDocs;
|
|
example?: unknown;
|
|
required?: string[];
|
|
$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[];
|
|
items?: Swagger.BaseSchema;
|
|
allOf?: undefined;
|
|
nullable?: 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[];
|
|
items?: Swagger.BaseSchema;
|
|
allOf?: undefined;
|
|
nullable?: undefined;
|
|
} | {
|
|
anyOf: (Swagger.Schema | Swagger.BaseSchema)[];
|
|
title?: string | undefined;
|
|
allOf?: undefined;
|
|
nullable?: undefined;
|
|
};
|
|
protected getSwaggerTypeForIntersectionType(type: Tsoa.IntersectionType, title?: string): {
|
|
title?: string | undefined;
|
|
allOf: (Swagger.Schema | Swagger.BaseSchema)[];
|
|
};
|
|
protected getSwaggerTypeForEnumType(enumType: Tsoa.EnumType, title?: string): Swagger.Schema3;
|
|
}
|