nsgm-cli
Version:
A CLI tool to run Next/Style-components and Graphql/Mysql fullstack project
88 lines (87 loc) • 2.3 kB
TypeScript
import { DataLoaderContext } from "../dataloaders";
/**
* DataLoader 性能监控和调试工具
*/
export declare class DataLoaderMonitor {
private static requestStats;
/**
* 记录 DataLoader 请求统计
*/
static recordRequest(loaderName: string, isBatch: boolean, batchSize?: number): void;
/**
* 记录缓存命中/未命中
*/
static recordCacheResult(loaderName: string, isHit: boolean): void;
/**
* 获取所有 DataLoader 统计信息
*/
static getAllStats(): {
summary: {
totalLoaders: number;
totalRequests: number;
totalBatchRequests: number;
totalCacheHits: number;
totalCacheMisses: number;
};
loaders: {
[k: string]: {
totalRequests: number;
batchRequests: number;
cacheHits: number;
cacheMisses: number;
averageBatchSize: number;
lastActivity: Date;
};
};
generatedAt: string;
};
/**
* 获取 DataLoader 缓存效率报告
*/
static getCacheEfficiencyReport(): any[];
/**
* 重置统计信息
*/
static resetStats(): void;
/**
* 打印性能报告到控制台
*/
static printPerformanceReport(): void;
}
/**
* 创建 DataLoader 性能中间件
*/
export declare function createDataLoaderPerformanceMiddleware(): (req: any, res: any, next: any) => void;
/**
* 获取 DataLoader 健康状态
*/
export declare function getDataLoaderHealth(context?: DataLoaderContext): {
status: string;
score: number;
summary: {
totalLoaders: number;
totalRequests: number;
totalBatchRequests: number;
totalCacheHits: number;
totalCacheMisses: number;
};
loaders: any[];
recommendations: string[];
contextStats: {
template: {
byId: {
cacheMap: any;
name: string;
};
byName: {
cacheMap: any;
name: string;
};
searchByName: {
cacheMap: any;
name: string;
};
};
timestamp: string;
} | null;
};