@spec2ts/openapi
Version:
Utility to convert OpenAPI v3 specifications to Typescript using TypeScript native compiler
40 lines (39 loc) • 2.68 kB
TypeScript
import * as ts from "typescript";
import type { SchemaObject, ReferenceObject, PathItemObject, OperationObject, ParameterObject, ContentObject } from "openapi3-ts/oas31";
import { ParserContext, ParsedReference } from "@spec2ts/jsonschema/lib/core-parser";
import type { ParseOpenApiOptions } from "./openapi-parser";
export interface ParseOpenApiResult {
import: ts.Statement[];
params: ts.Statement[];
query: ts.Statement[];
headers: ts.Statement[];
body: ts.Statement[];
responses: ts.Statement[];
models: ts.Statement[];
cookie: ts.Statement[];
all: ts.Statement[];
}
export interface OApiParserContext extends ParserContext {
options: ParseOpenApiOptions;
}
export declare function parsePathItem(path: string, item: PathItemObject, context: OApiParserContext, result: ParseOpenApiResult): void;
export declare function parseOperation(path: string, verb: string, operation: OperationObject, baseParams: ParsedParams | undefined, context: OApiParserContext, result: ParseOpenApiResult): void;
export type ParamType = "params" | "headers" | "query" | "cookie";
export declare function parseParameters(baseName: string, data: Array<ReferenceObject | ParameterObject>, baseParams: ParsedParams | undefined, context: OApiParserContext, result: ParseOpenApiResult): ParsedParams;
export declare function parseReference(ref: ParsedReference, context: ParserContext): void;
export declare function getContentDeclaration(name: string, content: ReferenceObject | ContentObject | undefined, context: OApiParserContext): ts.Statement | undefined;
export declare function getParamType(paramType: ParamType, data: ParameterObject[], baseType: ts.TypeReferenceNode | undefined, context: OApiParserContext): ts.TypeNode;
export declare function getSchemaFromContent(content: ContentObject): SchemaObject | ReferenceObject | undefined;
export declare function getResponseName(operationName: string, statusCode: string, context: OApiParserContext): string;
export declare function getOperationName(verb: string, path: string, operationId: string | undefined, context: OApiParserContext): string;
export declare function getPathName(path: string, context: OApiParserContext): string;
export declare function getOperationIdentifier(id?: string): string | void;
export declare function addToOpenApiResult(result: ParseOpenApiResult, prop: keyof ParseOpenApiResult, statement: ts.Statement | ts.Statement[]): void;
export declare function createOpenApiResult(): ParseOpenApiResult;
interface ParsedParams {
params?: ts.TypeReferenceNode;
query?: ts.TypeReferenceNode;
headers?: ts.TypeReferenceNode;
cookie?: ts.TypeReferenceNode;
}
export {};