UNPKG

node-universe

Version:

基于 Nodejs 环境的一款微服务框架,原理来自于宇宙中的恒星,行星,卫星等系统。

106 lines (105 loc) 4.11 kB
import BaseLogger from '../../lib/logger/base'; import { BaseLoggerLevels, LogLevelConfig } from '../logger'; import { GenericObject } from '..'; import { StarRegistryOptions } from '../registry'; import { Serialize } from '../serializers'; import { Transporter } from '../transit/transporters'; import { Regenerator, UniverseError } from '../../lib/error'; import Context from '../../lib/context'; import { StarTransitOptions } from '../transit'; import Service from '../../lib/star/service'; import { ServiceSchema } from '../service'; import Star from '../../lib/star'; import { Middleware } from '../middleware'; import { Cacher } from '../cachers'; import { MetricRegistryOptions } from '../metric'; import BaseValidator from '../../lib/validators/base'; import { StarTrackingOptions, TracerOptions } from '../tracing'; import { BulkheadOptions, RetryPolicyOptions, StarCircuitBreakerOptions } from '../context'; export interface StarOptions { namespace?: string | null; nodeID?: string | null; metadata?: GenericObject; logger?: BaseLogger | LogLevelConfig | LogLevelConfig[] | boolean | null; logLevel?: BaseLoggerLevels | LogLevelConfig | null; registry?: StarRegistryOptions; contextParamsCloning?: boolean; maxCallLevel?: number; heartbeatInterval?: number; heartbeatTimeout?: number; transporter?: Transporter | string | GenericObject | null; transit?: StarTransitOptions; serializer?: Serialize | string | GenericObject | null; errorRegenerator?: Regenerator | null; uidGenerator?: () => string; errorHandler?: ((err: Error, info: any) => void) | null; Promise?: PromiseConstructorLike; ContextFactory?: Context; requestTimeout?: number; retryPolicy?: RetryPolicyOptions; tracking?: StarTrackingOptions; disableBalancer?: boolean; circuitBreaker?: StarCircuitBreakerOptions; bulkhead?: BulkheadOptions; cacher?: boolean | Cacher | string | GenericObject | null; validator?: boolean | BaseValidator | ValidatorNames | ValidatorOptions | null; metrics?: boolean | MetricRegistryOptions; tracing?: boolean | TracerOptions; internalServices?: boolean | { [key: string]: Partial<ServiceSchema>; }; internalMiddlewares?: boolean; dependencyInterval?: number; dependencyTimeout?: number; hotReload?: boolean | HotReloadOptions; middlewares?: (Middleware | string)[]; replCommands?: GenericObject[] | null; replDelimiter?: string; ServiceFactory?: Service; created?: StarSyncLifecyleHandler; started?: StarAsyncLifecyleHandler; stopped?: StarAsyncLifecyleHandler; skipProcessEventRegistration?: boolean; maxSafeObjectSize?: number; } export interface HotReloadOptions { modules?: string[]; } export type StarAsyncLifecyleHandler = (star: Star) => void; export type StarSyncLifecyleHandler = (star: Star) => void | Promise<void>; export type FallbackHandler = (ctx: Context, err: UniverseError) => Promise<any>; export type FallbackResponse = string | number | GenericObject; export type FallbackResponseHandler = (ctx: Context, err: UniverseError) => Promise<any>; export interface ContextParentSpan { id: string; traceID: string; sampled: boolean; } export interface CallCallingOptions { timeout?: number; retries?: number; fallbackResponse?: FallbackResponse | FallbackResponse[] | FallbackResponseHandler; nodeID?: string; meta?: GenericObject; parentSpan?: ContextParentSpan; parentCtx?: Context; requestID?: string; tracking?: boolean; paramsCloning?: boolean; caller?: string; } export interface MCallCallingOptions extends CallCallingOptions { settled?: boolean; } export interface StarCallActionParams<P extends GenericObject = GenericObject> { action: string; params?: P; } export interface StarMCallActionParams<P extends GenericObject = GenericObject> extends StarCallActionParams { options?: CallCallingOptions; } export interface ValidatorOptions { type: string; options?: GenericObject; } export type ValidatorNames = 'Fastest';