netmvc-tools.schemas.ts•12.6 kB
import { z } from 'zod';
/**
* ASP.NET Core specific debugging schemas
*/
// HTTP Request Debugging Schema
export const DapHttpRequestDebugRequestSchema = z.object({
type: z.literal('request'),
seq: z.number(),
command: z.literal('debugHttpRequest'),
arguments: z.object({
requestId: z.string().optional(),
method: z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS']),
path: z.string(),
queryString: z.string().optional(),
headers: z.record(z.string()).optional(),
body: z.string().optional(),
cookies: z.record(z.string()).optional(),
session: z.record(z.any()).optional(),
user: z.record(z.any()).optional(),
routeData: z.record(z.any()).optional(),
controller: z.string().optional(),
action: z.string().optional(),
modelState: z.record(z.any()).optional(),
form: z.record(z.any()).optional(),
files: z.record(z.any()).optional(),
culture: z.string().optional(),
acceptedLanguages: z.array(z.string()).optional(),
isAjax: z.boolean().optional(),
isLocal: z.boolean().optional(),
protocol: z.string().optional(),
scheme: z.string().optional(),
host: z.string().optional(),
originalUrl: z.string().optional(),
}),
});
// Database Query Debug Schema
export const DapDatabaseQueryDebugRequestSchema = z.object({
type: z.literal('request'),
seq: z.number(),
command: z.literal('debugDatabaseQuery'),
arguments: z.object({
queryId: z.string().optional(),
queryText: z.string(),
parameters: z.record(z.any()).optional(),
parameterTypes: z.record(z.string()).optional(),
executionTime: z.number().optional(),
connection: z.string().optional(),
isAsync: z.boolean().optional(),
entityType: z.string().optional(),
dbContext: z.string().optional(),
transaction: z.string().optional(),
commandType: z.enum(['Text', 'StoredProcedure', 'TableDirect']).optional(),
tableMappings: z.record(z.any()).optional(),
changeTracking: z.boolean().optional(),
}),
});
// Distributed Trace Schema
export const DapDistributedTraceRequestSchema = z.object({
type: z.literal('request'),
seq: z.number(),
command: z.literal('trackDistributedTrace'),
arguments: z.object({
traceId: z.string(),
spanId: z.string(),
parentSpanId: z.string().optional(),
service: z.string(),
operation: z.string(),
startTime: z.number(),
endTime: z.number().optional(),
duration: z.number().optional(),
tags: z.record(z.any()).optional(),
logs: z.array(z.record(z.any())).optional(),
references: z.array(z.record(z.any())).optional(),
baggage: z.record(z.string()).optional(),
}),
});
// ASP.NET Core Evaluation Request Schema
export const DapAspNetEvaluationRequestSchema = z.object({
type: z.literal('request'),
seq: z.number(),
command: z.literal('evaluateAspNet'),
arguments: z.object({
expression: z.string(),
frameId: z.number().optional(),
context: z.enum(['hover', 'watch', 'repl', 'clipboard']).default('repl'),
ASPNETSpecific: z.boolean().default(true),
}),
});
// .NET Microservice Launch Request Schema
export const DapNetMvcLaunchRequestSchema = z.object({
type: z.literal('request'),
seq: z.number(),
command: z.literal('launch'),
arguments: z.object({
__type__: z.literal('LaunchRequestArguments'),
program: z.string(),
cwd: z.string(),
args: z.array(z.string()).optional(),
noDebug: z.boolean().default(false),
sourceMaps: z.boolean().default(true),
console: z
.enum(['internalConsole', 'integratedTerminal', 'externalTerminal'])
.default('integratedTerminal'),
internalConsoleOptions: z
.enum(['neverOpen', 'openOnSessionStart', 'openOnDebugBreak'])
.default('neverOpen'),
stopAtEntry: z.boolean().default(false),
launchSettings: z.record(z.any()).optional(),
// ASP.NET Core specific
environment: z.enum(['Development', 'Staging', 'Production']).default('Development'),
urls: z.string().default('https://localhost:5001;http://localhost:5000'),
applicationUrl: z.string().optional(),
launchBrowser: z.boolean().default(true),
useSSL: z.boolean().default(true),
sslPort: z.number().default(5001),
httpPort: z.number().default(5000),
// Entity Framework Core
databaseProvider: z
.enum(['SQLServer', 'PostgreSQL', 'MySQL', 'SQLite', 'Oracle'])
.default('SQLServer'),
connectionString: z.string().optional(),
migrationsEnabled: z.boolean().default(true),
// Microservice configuration
serviceDiscovery: z.record(z.any()).optional(),
apiGateway: z.string().optional(),
serviceRegistry: z.string().optional(),
loadBalancer: z.string().optional(),
// Logging configuration
logLevel: z
.enum(['trace', 'debug', 'information', 'warning', 'error', 'critical', 'none'])
.default('information'),
logProviders: z.array(z.string()).optional(),
// Health checks
healthChecksEnabled: z.boolean().default(true),
healthCheckPath: z.string().default('/health'),
// Performance monitoring
enablePerformanceMonitoring: z.boolean().default(true),
performanceMetricsInterval: z.number().default(30),
// CORS configuration
corsOrigins: z.array(z.string()).optional(),
corsMethods: z.array(z.string()).optional(),
corsHeaders: z.array(z.string()).optional(),
// Security
authentication: z.record(z.any()).optional(),
authorization: z.record(z.any()).optional(),
jwtSecret: z.string().optional(),
// Configuration
appSettings: z.record(z.any()).optional(),
userSecrets: z.boolean().default(false),
// Dependency injection
serviceLifetime: z.enum(['Transient', 'Scoped', 'Singleton']).default('Scoped'),
// MVC specific
mvcViewEngine: z.enum(['Razor', 'Spark', 'NHaml']).default('Razor'),
razorPagesEnabled: z.boolean().default(true),
areasEnabled: z.boolean().default(true),
// SignalR
signalREnabled: z.boolean().default(false),
signalROptions: z.record(z.any()).optional(),
// gRPC
grpcEnabled: z.boolean().default(false),
grpcReflectionEnabled: z.boolean().default(false),
// OpenAPI/Swagger
openApiEnabled: z.boolean().default(true),
openApiPath: z.string().default('/swagger/v1/swagger.json'),
openUiPath: z.string().default('/swagger'),
// Testing
integrationTestsEnabled: z.boolean().default(true),
unitTestsEnabled: z.boolean().default(true),
loadTestsEnabled: z.boolean().default(false),
}),
});
// HTTP Request Response Schema
export const DapHttpRequestDebugResponseSchema = z.object({
type: z.literal('response'),
seq: z.number(),
command: z.literal('debugHttpRequest'),
request_seq: z.number(),
success: z.boolean(),
message: z.string().optional(),
body: z
.object({
success: z.boolean(),
requestId: z.string(),
message: z.string(),
httpRequest: z.record(z.any()).optional(),
})
.optional(),
});
// Database Query Response Schema
export const DapDatabaseQueryResponseSchema = z.object({
type: z.literal('response'),
seq: z.number(),
command: z.literal('debugDatabaseQuery'),
request_seq: z.number(),
success: z.boolean(),
message: z.string().optional(),
body: z
.object({
success: z.boolean(),
queryId: z.string(),
message: z.string(),
databaseQuery: z.record(z.any()).optional(),
executionPlan: z.string().optional(),
queryAnalysis: z.record(z.any()).optional(),
})
.optional(),
});
// Distributed Trace Response Schema
export const DapDistributedTraceResponseSchema = z.object({
type: z.literal('response'),
seq: z.number(),
command: z.literal('trackDistributedTrace'),
request_seq: z.number(),
success: z.boolean(),
message: z.string().optional(),
body: z
.object({
success: z.boolean(),
traceId: z.string(),
message: z.string(),
distributedTrace: z.record(z.any()).optional(),
traceVisualization: z.string().optional(),
})
.optional(),
});
// ASP.NET Evaluation Response Schema
export const DapAspNetEvaluationResponseSchema = z.object({
type: z.literal('response'),
seq: z.number(),
command: z.literal('evaluateAspNet'),
request_seq: z.number(),
success: z.boolean(),
message: z.string().optional(),
body: z
.object({
result: z.string(),
type: z.string(),
presentationHint: z.record(z.any()).optional(),
variablesReference: z.number(),
namedVariables: z.number().optional(),
indexedVariables: z.number().optional(),
ASPNETSpecific: z
.object({
httpContext: z.record(z.any()).optional(),
controllerContext: z.record(z.any()).optional(),
routeData: z.record(z.any()).optional(),
viewData: z.record(z.any()).optional(),
tempData: z.record(z.any()).optional(),
session: z.record(z.any()).optional(),
configuration: z.record(z.any()).optional(),
dbContext: z.record(z.any()).optional(),
identity: z.record(z.any()).optional(),
})
.optional(),
})
.optional(),
});
// Microservice Information Schema
export const DapMicroserviceInfoSchema = z.object({
sessionId: z.string(),
microservice: z.object({
name: z.string(),
environment: z.string(),
version: z.string(),
services: z.array(z.string()),
connectionString: z.string(),
isMvc: z.boolean(),
controllerActions: z.array(z.string()),
status: z.enum(['starting', 'running', 'stopping', 'stopped', 'error']),
health: z.enum(['healthy', 'degraded', 'unhealthy']),
uptime: z.number(),
memoryUsage: z.number(),
cpuUsage: z.number(),
requestCount: z.number(),
errorCount: z.number(),
averageResponseTime: z.number(),
}),
});
// Performance Metrics Schema
export const DapPerformanceMetricsSchema = z.object({
sessionId: z.string(),
timestamp: z.number(),
metrics: z.object({
requestsPerSecond: z.number(),
averageResponseTime: z.number(),
errorRate: z.number(),
cpuUsage: z.number(),
memoryUsage: z.number(),
garbageCollections: z.number(),
threadCount: z.number(),
handleCount: z.number(),
workingSet: z.number(),
privateBytes: z.number(),
databaseConnections: z.number(),
databaseQueriesPerSecond: z.number(),
cacheHitRate: z.number(),
activeConnections: z.number(),
queuedRequests: z.number(),
throughput: z.number(),
p95ResponseTime: z.number(),
p99ResponseTime: z.number(),
}),
});
// Distributed Trace Visualization Schema
export const DapTraceVisualizationSchema = z.object({
sessionId: z.string(),
traceId: z.string(),
visualization: z.object({
spans: z.array(
z.object({
id: z.string(),
parentId: z.string().optional(),
operationName: z.string(),
startTime: z.number(),
duration: z.number(),
service: z.string(),
tags: z.record(z.any()),
logs: z.array(z.record(z.any())),
isError: z.boolean(),
stackTrace: z.string().optional(),
})
),
timeline: z.array(
z.object({
timestamp: z.number(),
event: z.string(),
service: z.string(),
operation: z.string(),
duration: z.number(),
properties: z.record(z.any()),
})
),
criticalPath: z.array(z.string()),
totalTime: z.number(),
startTime: z.number(),
endTime: z.number(),
}),
});
// Export all schemas
export type DapHttpRequestDebugRequest = z.infer<typeof DapHttpRequestDebugRequestSchema>;
export type DapDatabaseQueryDebugRequest = z.infer<typeof DapDatabaseQueryDebugRequestSchema>;
export type DapDistributedTraceRequest = z.infer<typeof DapDistributedTraceRequestSchema>;
export type DapAspNetEvaluationRequest = z.infer<typeof DapAspNetEvaluationRequestSchema>;
export type DapNetMvcLaunchRequest = z.infer<typeof DapNetMvcLaunchRequestSchema>;
export type DapHttpRequestDebugResponse = z.infer<typeof DapHttpRequestDebugResponseSchema>;
export type DapDatabaseQueryResponse = z.infer<typeof DapDatabaseQueryResponseSchema>;
export type DapDistributedTraceResponse = z.infer<typeof DapDistributedTraceResponseSchema>;
export type DapAspNetEvaluationResponse = z.infer<typeof DapAspNetEvaluationResponseSchema>;
export type DapMicroserviceInfo = z.infer<typeof DapMicroserviceInfoSchema>;
export type DapPerformanceMetrics = z.infer<typeof DapPerformanceMetricsSchema>;
export type DapTraceVisualization = z.infer<typeof DapTraceVisualizationSchema>;