syntropylog
Version:
An instance manager with observability for Node.js applications
60 lines (59 loc) • 2.26 kB
TypeScript
import { SerializationResult } from './types';
import { SerializableData, SerializationPipelineContext } from '../types';
export interface PipelineStep<T> {
name: string;
execute(data: T, context: SerializationPipelineContext): Promise<T>;
}
export interface OperationTimeoutStrategy {
calculateTimeout(data: SerializableData): number;
getStrategyName(): string;
}
export interface PipelineMetrics {
stepDurations: {
[stepName: string]: number;
};
totalDuration: number;
operationTimeout: number;
timeoutStrategy: string;
}
export declare class SerializationPipeline {
private steps;
private timeoutStrategies;
private sanitizer;
private metrics;
constructor();
addStep(step: PipelineStep<SerializableData>): void;
addTimeoutStrategy(strategy: OperationTimeoutStrategy): void;
process(data: SerializableData, context: SerializationPipelineContext): Promise<SerializationResult>;
getMetrics(): PipelineMetrics | null;
private selectTimeoutStrategy;
private initializeDefaultStrategies;
}
export declare class DefaultTimeoutStrategy implements OperationTimeoutStrategy {
calculateTimeout(data: SerializableData): number;
getStrategyName(): string;
}
export declare class PrismaTimeoutStrategy implements OperationTimeoutStrategy {
calculateTimeout(data: SerializableData): number;
getStrategyName(): string;
}
export declare class TypeORMTimeoutStrategy implements OperationTimeoutStrategy {
calculateTimeout(data: SerializableData): number;
getStrategyName(): string;
}
export declare class MySQLTimeoutStrategy implements OperationTimeoutStrategy {
calculateTimeout(data: SerializableData): number;
getStrategyName(): string;
}
export declare class PostgreSQLTimeoutStrategy implements OperationTimeoutStrategy {
calculateTimeout(data: SerializableData): number;
getStrategyName(): string;
}
export declare class SQLServerTimeoutStrategy implements OperationTimeoutStrategy {
calculateTimeout(data: SerializableData): number;
getStrategyName(): string;
}
export declare class OracleTimeoutStrategy implements OperationTimeoutStrategy {
calculateTimeout(data: SerializableData): number;
getStrategyName(): string;
}