@trapi/swagger
Version:
Generate Swagger files from a decorator APIs.
35 lines • 2.61 kB
TypeScript
import type { BaseType, EnumType, Extension, IntersectionType, Metadata, NestedObjectLiteralType, Parameter, ParameterSource, RefAliasType, RefEnumType, RefObjectType, ReferenceType, ResolverProperty, UnionType, Validators, VariableType } from '@trapi/metadata';
import type { Options, OptionsInput } from '../config';
import type { DocumentFormat } from '../constants';
import type { DocumentFormatData } from '../type';
import type { BaseSchema, Info, SchemaV2, SchemaV3, SpecV2, SpecV3 } from '../schema';
export declare abstract class AbstractSpecGenerator<Spec extends SpecV2 | SpecV3, Schema extends SchemaV3 | SchemaV2> {
protected spec: Spec | undefined;
protected readonly metadata: Metadata;
protected readonly config: Options;
constructor(metadata: Metadata, config: OptionsInput);
save(): Promise<Record<`${DocumentFormat}`, DocumentFormatData>>;
abstract build(): Promise<Spec>;
protected buildInfo(): Info;
protected getSchemaForType(type: BaseType): Schema | BaseSchema<Schema>;
protected abstract getSchemaForIntersectionType(type: IntersectionType): Schema;
protected abstract getSchemaForEnumType(enumType: EnumType): Schema;
private getSchemaForPrimitiveType;
private getSchemaForArrayType;
getSchemaForObjectLiteralType(objectLiteral: NestedObjectLiteralType): BaseSchema<Schema>;
protected abstract getSchemaForReferenceType(referenceType: ReferenceType): Schema;
protected abstract getSchemaForUnionType(type: UnionType): Schema;
protected abstract buildSchemaForRefAlias(referenceType: RefAliasType): Schema;
protected abstract buildSchemaForRefEnum(referenceType: RefEnumType): Schema;
protected abstract buildSchemaForRefObject(referenceType: RefObjectType): Schema;
protected buildSchemasForReferenceTypes(extendFn?: (output: Schema, input: ReferenceType) => void): Record<string, Schema>;
protected isUndefinedProperty(input: ResolverProperty): boolean;
protected abstract buildProperties(properties: ResolverProperty[]): Record<string, Schema>;
protected determineTypesUsedInEnum(anEnum: Array<string | number | boolean | null>): VariableType[];
protected decideEnumType(input: Array<string | number | boolean>): 'string' | 'number' | 'boolean';
protected getOperationId(name: string): string;
protected groupParameters(items: Parameter[]): Partial<Record<ParameterSource, Parameter[]>>;
protected transformExtensions(input?: Extension[]): Record<string, any>;
protected transformValidators(input?: Validators): Record<string, any>;
}
//# sourceMappingURL=abstract.d.ts.map