UNPKG

@ng-openapi/http-resource

Version:

HTTP Resource plugin for ng-openapi - Angular HTTP utilities with caching and state management

156 lines (149 loc) 4.83 kB
import { ScriptTarget, ModuleKind, Project } from 'ts-morph'; import { Info, ExternalDocs, Path, ParameterType, XML, BodyParameter, QueryParameter, Security, Tag } from 'swagger-schema-official'; interface SwaggerResponse { description?: string; content?: Record<string, { schema?: any; }>; } interface SwaggerDefinition { type?: ParameterType | undefined; format?: string | undefined; title?: string | undefined; description?: string | undefined; default?: any; multipleOf?: number | undefined; maximum?: number | undefined; exclusiveMaximum?: boolean | undefined; minimum?: number | undefined; exclusiveMinimum?: boolean | undefined; maxLength?: number | undefined; minLength?: number | undefined; pattern?: string | undefined; maxItems?: number | undefined; minItems?: number | undefined; uniqueItems?: boolean | undefined; maxProperties?: number | undefined; minProperties?: number | undefined; enum?: any[] | undefined; items?: SwaggerDefinition | SwaggerDefinition[] | undefined; $ref?: string | undefined; allOf?: SwaggerDefinition[] | undefined; additionalProperties?: SwaggerDefinition | boolean | undefined; properties?: { [propertyName: string]: SwaggerDefinition; } | undefined; discriminator?: string | undefined; readOnly?: boolean | undefined; nullable?: boolean | undefined; xml?: XML | undefined; externalDocs?: ExternalDocs | undefined; example?: any; required?: string[] | undefined; oneOf?: SwaggerDefinition[]; anyOf?: SwaggerDefinition[]; } interface SwaggerSpec { openapi: string; swagger: string; info: Info; externalDocs?: ExternalDocs | undefined; host?: string | undefined; basePath?: string | undefined; schemes?: string[] | undefined; consumes?: string[] | undefined; produces?: string[] | undefined; paths: { [pathName: string]: Path; }; definitions?: { [definitionsName: string]: SwaggerDefinition; } | undefined; parameters?: { [parameterName: string]: BodyParameter | QueryParameter; } | undefined; responses?: { [responseName: string]: SwaggerResponse; } | undefined; security?: Array<{ [securityDefinitionName: string]: string[]; }> | undefined; securityDefinitions?: { [securityDefinitionName: string]: Security; } | undefined; tags?: Tag[] | undefined; components?: { schemas?: Record<string, SwaggerDefinition>; }; } declare class SwaggerParser { private readonly spec; private constructor(); static create(swaggerPathOrUrl: string, config: GeneratorConfig): Promise<SwaggerParser>; private static loadContent; private static fetchUrlContent; private static parseSpecContent; private static detectFormat; getDefinitions(): Record<string, SwaggerDefinition>; getDefinition(name: string): SwaggerDefinition | undefined; resolveReference(ref: string): SwaggerDefinition | undefined; getAllDefinitionNames(): string[]; getSpec(): SwaggerSpec; getPaths(): Record<string, any>; isValidSpec(): boolean; getSpecVersion(): { type: "swagger" | "openapi"; version: string; } | null; } /** * Interface for generator instances */ interface IPluginGenerator { /** * Generate code files */ generate(outputRoot: string): Promise<void>; } interface GeneratorConfig { input: string; output: string; clientName?: string; validateInput?: (spec: SwaggerSpec) => boolean; options: { dateType: "string" | "Date"; enumStyle: "enum" | "union"; validation?: { response?: boolean; }; generateServices?: boolean; generateEnumBasedOnDescription?: boolean; customHeaders?: Record<string, string>; responseTypeMapping?: { [contentType: string]: "json" | "blob" | "arraybuffer" | "text"; }; customizeMethodName?: (operationId: string) => string; }; compilerOptions?: { declaration?: boolean; target?: ScriptTarget; module?: ModuleKind; strict?: boolean; }; plugins?: (new (...args: any) => IPluginGenerator)[]; } declare class HttpResourceGenerator implements IPluginGenerator { private project; private parser; private spec; private config; private methodGenerator; private indexGenerator; constructor(parser: SwaggerParser, project: Project, config: GeneratorConfig); generate(outputRoot: string): Promise<void>; private groupPathsByController; private generateServiceFile; private addImports; private addServiceClass; } export { HttpResourceGenerator as HttpResourcePlugin };