node-universe
Version:
基于 Nodejs 环境的一款微服务框架,原理来自于宇宙中的恒星,行星,卫星等系统。
106 lines (105 loc) • 4.11 kB
TypeScript
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';