openapi-connect
Version:
Base for microservices around OpenAPI/Swagger
77 lines (76 loc) • 3.51 kB
TypeScript
/// <reference types="node" />
import { IncomingMessage, NextHandleFunction } from 'connect';
import { ILogger } from 'loggerism';
import { ICustomMiddleware } from './middleware/core/customMiddleware';
import { IBodyParserOptions } from './options/bodyParser';
import { ICorsOptionsWithDefaults } from './options/cors';
import { IErrorHandlingOptions, IErrorHandlingOptionsWithDefault } from './options/errorHandling';
import { IErrorLoggingOptions, IErrorLoggingOptionsWithDefaults } from './options/errorLogging';
import { IGracefulShutdownOptions, IGracefulShutdownOptionsWithDefaults } from './options/gracefulShutdown';
import { IHealthOptions, IHealthOptionsWithDefaults } from './options/health';
import { IHelmetOptions, IHelmetOptionsWithDefaults } from './options/helmet';
import { IOAuthOptions, IOAuthOptionsWithDefaults } from './options/oauth';
import { IRequestLoggingOptions, IRequestLoggingOptionsWithDefaults } from './options/requestLogging';
import { IRouterOptions, IRouterOptionsWithDefault } from './options/router';
import { ISecurityOptions, ISecurityOptionsWithDefaults } from './options/security';
import { ISwaggerUIOptions, ISwaggerUIOptionsWithDefaults } from './options/swaggerUi';
import { IUnlessOptions, IUnlessOptionsWithDefaults } from './options/unless';
import { IAPMOptions } from './options/apm';
import { Histogram, Counter } from 'prom-client';
import { ServerResponse } from 'http';
import { ISslOptions, ISslOptionsWithDefaults } from './options/ssl';
export type CustomHandler = NextHandleFunction | ICustomMiddleware;
export interface IMiddlewareOptions {
helmet?: IHelmetOptions;
cors?: ICorsOptionsWithDefaults;
requestLogging?: IRequestLoggingOptions;
oauth?: IOAuthOptions;
bodyParser?: IBodyParserOptions;
security?: ISecurityOptions;
router: IRouterOptions;
health?: IHealthOptions;
swaggerUI?: ISwaggerUIOptions;
errorLogging?: IErrorLoggingOptions;
errorHandling?: IErrorHandlingOptions;
collectMetrics?: IMetricsOptions;
ssl?: ISslOptions;
}
export interface IMetricsOptions {
requestCount?: Counter<string>;
requestDuration?: Histogram<string>;
requestLength?: Histogram<string>;
responseLength?: Histogram<string>;
options?: {
extraMasks?: RegExp[];
transformLabels?: (labels: Record<string, string>, req: IncomingMessage, res: ServerResponse) => Record<string, string>;
};
}
export interface IOptions extends IMiddlewareOptions {
port?: number;
basePath?: string;
logger: ILogger;
unless?: IUnlessOptions;
gracefulShutdown?: IGracefulShutdownOptions;
customHandlers?: CustomHandler[];
apm?: IAPMOptions;
}
export interface IOptionsWithDefaults extends IOptions {
port: number;
basePath: string;
helmet: IHelmetOptionsWithDefaults;
cors: ICorsOptionsWithDefaults;
requestLogging: IRequestLoggingOptionsWithDefaults;
oauth: IOAuthOptionsWithDefaults;
bodyParser: IBodyParserOptions;
router: IRouterOptionsWithDefault;
security: ISecurityOptionsWithDefaults;
health: IHealthOptionsWithDefaults;
unless: IUnlessOptionsWithDefaults;
swaggerUI: ISwaggerUIOptionsWithDefaults;
gracefulShutdown: IGracefulShutdownOptionsWithDefaults;
errorLogging: IErrorLoggingOptionsWithDefaults;
errorHandling: IErrorHandlingOptionsWithDefault;
ssl: ISslOptionsWithDefaults;
customHandlers: CustomHandler[];
}
export declare const getOptions: (options: IOptions) => IOptionsWithDefaults;