jswagger-client
Version:
This is jswagger's client package.
143 lines • 4.52 kB
TypeScript
/// <reference types="node" />
import { AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';
import { OpenAPI2 } from 'jswagger-common';
import * as http from 'http';
import * as https from 'https';
import * as url from 'url';
export interface IRewriterParams {
operationId: string;
arg?: ApiRequestOptionsOO<any, any>;
}
export declare type HostRewriter = (params: IRewriterParams) => {
protocol?: string;
host?: string;
} | undefined;
export declare type UrlRewriter = (params: IRewriterParams, originalUrl: url.URL) => url.URL | undefined;
export declare type ArgRewriter = (params: IRewriterParams) => ApiRequestOptionsOO<any, any> | undefined;
/**
* @return
* value >= 0 : retry after *value* ms
* false or value < 0 : stop
*/
export declare type RetryHandler = (params: IRewriterParams, retryCount: number, err: any) => Promise<number | false>;
/**
* @return
* string : content-type
* null : use default resolver
*/
export declare type ContentTypeResolver = (params: IRewriterParams, data: any) => Promise<string | null>;
export interface ISwaggerClientConfig {
spec: OpenAPI2;
protocol?: string;
host?: string;
baseUrl?: string;
httpAgent?: http.Agent;
httpsAgent?: https.Agent;
securityContext?: IApiSecurityContext;
argRewriter?: ArgRewriter;
hostRewriter?: HostRewriter;
urlRewriter?: UrlRewriter;
retryHandler?: RetryHandler;
contentTypeResolver?: ContentTypeResolver;
}
export interface ISwaggerApiOptions {
securityContext?: IApiSecurityContext;
}
export interface QueryNameValue {
name: string;
value: string;
}
export interface ApiRequestOptions extends AxiosRequestConfig {
/**
* Override protocol
*/
protocol?: string;
/**
* Override host
*
* e.g. 1.2.3.4:321
*/
host?: string;
securityContext?: IApiSecurityContext;
queries?: QueryNameValue[];
}
export interface ApiRequestOptionsRX<T, P> extends ApiRequestOptions {
data: T;
}
export interface ApiRequestOptionsRO<T, P> extends ApiRequestOptions {
data: T;
params?: P;
}
export interface ApiRequestOptionsRR<T, P> extends ApiRequestOptions {
data: T;
params: P;
}
export interface ApiRequestOptionsOX<T, P> extends ApiRequestOptions {
data?: T;
}
export interface ApiRequestOptionsOO<T, P> extends ApiRequestOptions {
data?: T;
params?: P;
}
export interface ApiRequestOptionsOR<T, P> extends ApiRequestOptions {
data?: T;
params: P;
}
export interface ApiRequestOptionsXX<T, P> extends ApiRequestOptions {
}
export interface ApiRequestOptionsXO<T, P> extends ApiRequestOptions {
params?: P;
}
export interface ApiRequestOptionsXR<T, P> extends ApiRequestOptions {
params: P;
}
export interface ApiResponse<T, H> extends AxiosResponse<T> {
data: T;
headers: H;
}
export declare type AnyKeyValueType = {
[key: string]: any;
};
export interface IApiSecurityContext {
headerReplacer?: (input: AnyKeyValueType) => AnyKeyValueType;
queryReplacer?: (input: QueryNameValue[]) => QueryNameValue[];
}
declare const S_API_ERROR: unique symbol;
export declare class ApiError extends Error {
readonly [S_API_ERROR]: boolean;
readonly code: string;
readonly data: any;
readonly headers: AnyKeyValueType;
readonly axiosError: AxiosError;
readonly axiosConfig: AxiosRequestConfig;
readonly axiosRequest?: any;
readonly axiosResponse?: AxiosResponse;
constructor(params: {
message: string;
code: string;
status: number;
data: any;
headers: AnyKeyValueType;
axiosError: AxiosError;
axiosConfig: AxiosRequestConfig;
axiosRequest?: any;
axiosResponse?: AxiosResponse;
});
static isInstance(o: any): boolean;
}
declare type IsSwaggerDefinitionFunctionType = (o: any) => boolean;
declare type GetSwaggerDefinitionName = (o: any) => string;
declare type SwaggerDefinitionToJson = (o: any) => any;
export interface ISpecMetadata {
isSwaggerDefinition: IsSwaggerDefinitionFunctionType;
getSwaggerDefinitionName: GetSwaggerDefinitionName;
swaggerDefinitionToJson: SwaggerDefinitionToJson;
classes: readonly any[];
definitions: Record<string, any>;
}
export interface IApiMetadata {
tag: string;
specMetadata: ISpecMetadata;
}
export {};
//# sourceMappingURL=types.d.ts.map