flow-debugger 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/PORTFOLIO_README_SECTION.md +177 -0
  2. package/README.md +251 -0
  3. package/dashboard/app.js +339 -0
  4. package/dashboard/index.html +168 -0
  5. package/dashboard/style.css +846 -0
  6. package/dist/cjs/core/Analytics.js +174 -0
  7. package/dist/cjs/core/Analytics.js.map +1 -0
  8. package/dist/cjs/core/Classifier.js +66 -0
  9. package/dist/cjs/core/Classifier.js.map +1 -0
  10. package/dist/cjs/core/HealthMonitor.js +79 -0
  11. package/dist/cjs/core/HealthMonitor.js.map +1 -0
  12. package/dist/cjs/core/RootCause.js +89 -0
  13. package/dist/cjs/core/RootCause.js.map +1 -0
  14. package/dist/cjs/core/Sampler.js +34 -0
  15. package/dist/cjs/core/Sampler.js.map +1 -0
  16. package/dist/cjs/core/Timeline.js +90 -0
  17. package/dist/cjs/core/Timeline.js.map +1 -0
  18. package/dist/cjs/core/TraceEngine.js +222 -0
  19. package/dist/cjs/core/TraceEngine.js.map +1 -0
  20. package/dist/cjs/core/types.js +21 -0
  21. package/dist/cjs/core/types.js.map +1 -0
  22. package/dist/cjs/index.js +46 -0
  23. package/dist/cjs/index.js.map +1 -0
  24. package/dist/cjs/integrations/axios.js +136 -0
  25. package/dist/cjs/integrations/axios.js.map +1 -0
  26. package/dist/cjs/integrations/fetch.js +153 -0
  27. package/dist/cjs/integrations/fetch.js.map +1 -0
  28. package/dist/cjs/integrations/mongo.js +111 -0
  29. package/dist/cjs/integrations/mongo.js.map +1 -0
  30. package/dist/cjs/integrations/mysql.js +212 -0
  31. package/dist/cjs/integrations/mysql.js.map +1 -0
  32. package/dist/cjs/integrations/postgres.js +182 -0
  33. package/dist/cjs/integrations/postgres.js.map +1 -0
  34. package/dist/cjs/integrations/redis.js +105 -0
  35. package/dist/cjs/integrations/redis.js.map +1 -0
  36. package/dist/cjs/middleware/express.js +255 -0
  37. package/dist/cjs/middleware/express.js.map +1 -0
  38. package/dist/esm/core/Analytics.js +170 -0
  39. package/dist/esm/core/Analytics.js.map +1 -0
  40. package/dist/esm/core/Classifier.js +61 -0
  41. package/dist/esm/core/Classifier.js.map +1 -0
  42. package/dist/esm/core/HealthMonitor.js +75 -0
  43. package/dist/esm/core/HealthMonitor.js.map +1 -0
  44. package/dist/esm/core/RootCause.js +86 -0
  45. package/dist/esm/core/RootCause.js.map +1 -0
  46. package/dist/esm/core/Sampler.js +30 -0
  47. package/dist/esm/core/Sampler.js.map +1 -0
  48. package/dist/esm/core/Timeline.js +86 -0
  49. package/dist/esm/core/Timeline.js.map +1 -0
  50. package/dist/esm/core/TraceEngine.js +217 -0
  51. package/dist/esm/core/TraceEngine.js.map +1 -0
  52. package/dist/esm/core/types.js +18 -0
  53. package/dist/esm/core/types.js.map +1 -0
  54. package/dist/esm/index.js +22 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/integrations/axios.js +133 -0
  57. package/dist/esm/integrations/axios.js.map +1 -0
  58. package/dist/esm/integrations/fetch.js +149 -0
  59. package/dist/esm/integrations/fetch.js.map +1 -0
  60. package/dist/esm/integrations/mongo.js +107 -0
  61. package/dist/esm/integrations/mongo.js.map +1 -0
  62. package/dist/esm/integrations/mysql.js +209 -0
  63. package/dist/esm/integrations/mysql.js.map +1 -0
  64. package/dist/esm/integrations/postgres.js +179 -0
  65. package/dist/esm/integrations/postgres.js.map +1 -0
  66. package/dist/esm/integrations/redis.js +102 -0
  67. package/dist/esm/integrations/redis.js.map +1 -0
  68. package/dist/esm/middleware/express.js +219 -0
  69. package/dist/esm/middleware/express.js.map +1 -0
  70. package/dist/types/core/Analytics.d.ts +35 -0
  71. package/dist/types/core/Analytics.d.ts.map +1 -0
  72. package/dist/types/core/Classifier.d.ts +21 -0
  73. package/dist/types/core/Classifier.d.ts.map +1 -0
  74. package/dist/types/core/HealthMonitor.d.ts +14 -0
  75. package/dist/types/core/HealthMonitor.d.ts.map +1 -0
  76. package/dist/types/core/RootCause.d.ts +12 -0
  77. package/dist/types/core/RootCause.d.ts.map +1 -0
  78. package/dist/types/core/Sampler.d.ts +13 -0
  79. package/dist/types/core/Sampler.d.ts.map +1 -0
  80. package/dist/types/core/Timeline.d.ts +22 -0
  81. package/dist/types/core/Timeline.d.ts.map +1 -0
  82. package/dist/types/core/TraceEngine.d.ts +47 -0
  83. package/dist/types/core/TraceEngine.d.ts.map +1 -0
  84. package/dist/types/core/types.d.ts +118 -0
  85. package/dist/types/core/types.d.ts.map +1 -0
  86. package/dist/types/index.d.ts +18 -0
  87. package/dist/types/index.d.ts.map +1 -0
  88. package/dist/types/integrations/axios.d.ts +22 -0
  89. package/dist/types/integrations/axios.d.ts.map +1 -0
  90. package/dist/types/integrations/fetch.d.ts +25 -0
  91. package/dist/types/integrations/fetch.d.ts.map +1 -0
  92. package/dist/types/integrations/mongo.d.ts +26 -0
  93. package/dist/types/integrations/mongo.d.ts.map +1 -0
  94. package/dist/types/integrations/mysql.d.ts +20 -0
  95. package/dist/types/integrations/mysql.d.ts.map +1 -0
  96. package/dist/types/integrations/postgres.d.ts +20 -0
  97. package/dist/types/integrations/postgres.d.ts.map +1 -0
  98. package/dist/types/integrations/redis.d.ts +20 -0
  99. package/dist/types/integrations/redis.d.ts.map +1 -0
  100. package/dist/types/middleware/express.d.ts +39 -0
  101. package/dist/types/middleware/express.d.ts.map +1 -0
  102. package/example/server.ts +234 -0
  103. package/jest.config.js +8 -0
  104. package/package.json +110 -0
  105. package/portfolio-repo/APIRESPONSE DASH.png +0 -0
  106. package/portfolio-repo/PAYLOAD.png +0 -0
  107. package/portfolio-repo/README.md +182 -0
  108. package/src/core/Analytics.ts +209 -0
  109. package/src/core/Classifier.ts +82 -0
  110. package/src/core/HealthMonitor.ts +92 -0
  111. package/src/core/RootCause.ts +105 -0
  112. package/src/core/Sampler.ts +35 -0
  113. package/src/core/Timeline.ts +108 -0
  114. package/src/core/TraceEngine.ts +266 -0
  115. package/src/core/types.ts +170 -0
  116. package/src/index.ts +42 -0
  117. package/src/integrations/axios.ts +164 -0
  118. package/src/integrations/fetch.ts +172 -0
  119. package/src/integrations/mongo.ts +130 -0
  120. package/src/integrations/mysql.ts +239 -0
  121. package/src/integrations/postgres.ts +217 -0
  122. package/src/integrations/redis.ts +122 -0
  123. package/src/middleware/express.ts +264 -0
  124. package/tests/Analytics.test.ts +136 -0
  125. package/tests/Classifier.test.ts +57 -0
  126. package/tests/RootCause.test.ts +69 -0
  127. package/tests/TraceEngine.test.ts +110 -0
  128. package/tsconfig.cjs.json +9 -0
  129. package/tsconfig.esm.json +9 -0
  130. package/tsconfig.json +31 -0
  131. package/tsconfig.types.json +8 -0
@@ -0,0 +1,22 @@
1
+ import { Trace } from './types';
2
+ /**
3
+ * Render a trace timeline to the console.
4
+ *
5
+ * Output example:
6
+ * ┌─── flow-debugger ── req_abc123 ── POST /login ───
7
+ * │ [0ms] Request start
8
+ * │ [2ms] DB find user ✔ (14ms) [mongo]
9
+ * │ [16ms] Redis cache ❌ (3ms) [redis]
10
+ * │ [20ms] Response 200
11
+ * │
12
+ * │ ⚠ Root cause: Redis cache failed: connection refused
13
+ * │ Classification: ERROR
14
+ * │ Total: 20ms
15
+ * └────────────────────────────────────────────────────
16
+ */
17
+ export declare function renderTimeline(trace: Trace, logger?: (...args: unknown[]) => void): void;
18
+ /**
19
+ * Render a compact one-line summary for high-traffic mode.
20
+ */
21
+ export declare function renderCompact(trace: Trace, logger?: (...args: unknown[]) => void): void;
22
+ //# sourceMappingURL=Timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Timeline.d.ts","sourceRoot":"","sources":["../../../src/core/Timeline.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAuB,MAAM,SAAS,CAAC;AAoBrD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC1B,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAkB,GACnD,IAAI,CAiDN;AAED;;GAEG;AACH,wBAAgB,aAAa,CACzB,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAkB,GACnD,IAAI,CAON"}
@@ -0,0 +1,47 @@
1
+ import { EventEmitter } from 'events';
2
+ import { Trace, TraceStep, StepOptions, DebuggerConfig } from './types';
3
+ /**
4
+ * TraceEngine — manages the lifecycle of a single request trace.
5
+ *
6
+ * Usage:
7
+ * const engine = new TraceEngine(config);
8
+ * const tracer = engine.startTrace('/login', 'POST');
9
+ * await tracer.step('DB find user', async () => User.findOne(), { service: 'mongo' });
10
+ * tracer.end(200);
11
+ */
12
+ export declare class TraceEngine extends EventEmitter {
13
+ private config;
14
+ constructor(config?: DebuggerConfig);
15
+ /** Update config at runtime */
16
+ updateConfig(patch: Partial<DebuggerConfig>): void;
17
+ getConfig(): Required<DebuggerConfig>;
18
+ /** Start a new request trace */
19
+ startTrace(endpoint: string, method: string): RequestTracer;
20
+ /** Safe emit — never throws */
21
+ safeEmit(event: string, data: unknown): void;
22
+ }
23
+ /**
24
+ * RequestTracer — the object attached to a single request.
25
+ * Provides `step()` for manual instrumentation and `addStep()` for auto-instrumentation.
26
+ */
27
+ export declare class RequestTracer {
28
+ private traceId;
29
+ private endpoint;
30
+ private method;
31
+ private steps;
32
+ private startTime;
33
+ private config;
34
+ private engine;
35
+ private ended;
36
+ constructor(endpoint: string, method: string, config: Required<DebuggerConfig>, engine: TraceEngine);
37
+ getTraceId(): string;
38
+ getSteps(): TraceStep[];
39
+ /** Manually run & trace an async step */
40
+ step<T>(name: string, fn: () => Promise<T> | T, options?: StepOptions): Promise<T>;
41
+ /** Add a pre-recorded step (used by auto-integrations) */
42
+ addStep(step: TraceStep): void;
43
+ /** End the trace and produce the final result */
44
+ end(statusCode?: number): Trace;
45
+ private buildTrace;
46
+ }
47
+ //# sourceMappingURL=TraceEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceEngine.d.ts","sourceRoot":"","sources":["../../../src/core/TraceEngine.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACH,KAAK,EACL,SAAS,EACT,WAAW,EAGX,cAAc,EAGjB,MAAM,SAAS,CAAC;AA6CjB;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAA2B;gBAE7B,MAAM,CAAC,EAAE,cAAc;IAKnC,+BAA+B;IAC/B,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAIlD,SAAS,IAAI,QAAQ,CAAC,cAAc,CAAC;IAIrC,gCAAgC;IAChC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa;IAM3D,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;CAO/C;AAED;;;GAGG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAS;gBAGlB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,MAAM,EAAE,WAAW;IAUvB,UAAU,IAAI,MAAM;IAIpB,QAAQ,IAAI,SAAS,EAAE;IAIvB,yCAAyC;IACnC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IA0ExF,0DAA0D;IAC1D,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAQ9B,iDAAiD;IACjD,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK;IAqB/B,OAAO,CAAC,UAAU;CAoBrB"}
@@ -0,0 +1,118 @@
1
+ /** Classification severity levels */
2
+ export type ClassificationLevel = 'INFO' | 'WARN' | 'ERROR' | 'CRITICAL';
3
+ /** Known service/dependency types for tagging */
4
+ export type ServiceTag = 'mongo' | 'mysql' | 'postgres' | 'redis' | 'axios' | 'fetch' | 'stripe' | 'razorpay' | 'sendgrid' | 'twilio' | 'external' | 'internal' | 'unknown';
5
+ /** Health status for a dependency */
6
+ export type HealthState = 'healthy' | 'degraded' | 'down';
7
+ /** Status of a single traced step */
8
+ export type StepStatus = 'success' | 'error' | 'timeout';
9
+ /** A single measured step within a trace */
10
+ export interface TraceStep {
11
+ name: string;
12
+ service: ServiceTag;
13
+ status: StepStatus;
14
+ classification: ClassificationLevel;
15
+ startTime: number;
16
+ endTime: number;
17
+ duration: number;
18
+ error?: string;
19
+ stackTrace?: string;
20
+ errorFile?: string;
21
+ errorLine?: number;
22
+ metadata?: Record<string, unknown>;
23
+ }
24
+ /** Options passed to `step()` */
25
+ export interface StepOptions {
26
+ /** Service tag for grouping (e.g. 'postgres', 'redis') */
27
+ service?: ServiceTag;
28
+ /** Timeout in ms — triggers StepStatus.timeout if exceeded */
29
+ timeout?: number;
30
+ /** Arbitrary metadata attached to the step */
31
+ metadata?: Record<string, unknown>;
32
+ }
33
+ /** A complete request trace */
34
+ export interface Trace {
35
+ traceId: string;
36
+ endpoint: string;
37
+ method: string;
38
+ statusCode?: number;
39
+ steps: TraceStep[];
40
+ totalDuration: number;
41
+ classification: ClassificationLevel;
42
+ rootCause: RootCauseResult | null;
43
+ startTime: number;
44
+ endTime: number;
45
+ timestamp: Date;
46
+ environment?: string;
47
+ payloadSize?: number;
48
+ }
49
+ export interface RootCauseResult {
50
+ cause: string;
51
+ step: string;
52
+ service: ServiceTag;
53
+ confidence: 'high' | 'medium' | 'low';
54
+ }
55
+ export interface ServiceFailureStats {
56
+ service: ServiceTag;
57
+ count: number;
58
+ percentage: number;
59
+ }
60
+ export interface EndpointStats {
61
+ path: string;
62
+ method: string;
63
+ totalRequests: number;
64
+ errorCount: number;
65
+ slowCount: number;
66
+ avgDuration: number;
67
+ p95Duration: number;
68
+ maxDuration: number;
69
+ commonIssues: string[];
70
+ serviceFailures: ServiceFailureStats[];
71
+ recentTraces: Trace[];
72
+ }
73
+ export interface AnalyticsReport {
74
+ totalRequests: number;
75
+ totalErrors: number;
76
+ totalSlow: number;
77
+ uptime: number;
78
+ endpoints: EndpointStats[];
79
+ serviceHealth: HealthStatus[];
80
+ topFailures: ServiceFailureStats[];
81
+ recentTraces: Trace[];
82
+ }
83
+ export interface HealthStatus {
84
+ service: ServiceTag;
85
+ name: string;
86
+ status: HealthState;
87
+ lastCheck: Date;
88
+ successRate: number;
89
+ totalChecks: number;
90
+ }
91
+ export interface DebuggerConfig {
92
+ /** Enable/disable the debugger (default: true) */
93
+ enabled?: boolean;
94
+ /** Environment tag (dev / staging / production) */
95
+ environment?: string;
96
+ /** Threshold in ms to mark a step as slow (default: 300) */
97
+ slowThreshold?: number;
98
+ /** Threshold in ms for slow SQL/DB query detection (default: 300) */
99
+ slowQueryThreshold?: number;
100
+ /** Default step timeout in ms (default: 30000) */
101
+ defaultTimeout?: number;
102
+ /** Sampling rate 0-1 (default: 1 = 100%) */
103
+ samplingRate?: number;
104
+ /** Always sample errors even if sampling drops the request (default: true) */
105
+ alwaysSampleErrors?: boolean;
106
+ /** Max traces to keep in memory for analytics (default: 1000) */
107
+ maxTraces?: number;
108
+ /** Enable console timeline output (default: true) */
109
+ enableTimeline?: boolean;
110
+ /** Enable the /__debugger dashboard (default: true) */
111
+ enableDashboard?: boolean;
112
+ /** Payload size threshold in bytes to warn (default: 1MB) */
113
+ largePayloadThreshold?: number;
114
+ /** Custom logger function */
115
+ logger?: (...args: unknown[]) => void;
116
+ }
117
+ export declare const DEFAULT_CONFIG: Required<DebuggerConfig>;
118
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export { TraceEngine, RequestTracer } from './core/TraceEngine';
2
+ export { classify, classifyTrace, classifyQuery } from './core/Classifier';
3
+ export { detectRootCause } from './core/RootCause';
4
+ export { Analytics } from './core/Analytics';
5
+ export { HealthMonitor } from './core/HealthMonitor';
6
+ export { Sampler } from './core/Sampler';
7
+ export { renderTimeline, renderCompact } from './core/Timeline';
8
+ export type { ClassificationLevel, ServiceTag, HealthState, StepStatus, TraceStep, StepOptions, Trace, RootCauseResult, ServiceFailureStats, EndpointStats, AnalyticsReport, HealthStatus, DebuggerConfig, } from './core/types';
9
+ export { DEFAULT_CONFIG } from './core/types';
10
+ export { mongoTracer, removeMongoTracer } from './integrations/mongo';
11
+ export { mysqlTracer } from './integrations/mysql';
12
+ export { pgTracer } from './integrations/postgres';
13
+ export { redisTracer } from './integrations/redis';
14
+ export { fetchTracer, removeFetchTracer } from './integrations/fetch';
15
+ export { axiosTracer } from './integrations/axios';
16
+ export { flowDebugger } from './middleware/express';
17
+ export type { FlowDebuggerMiddleware } from './middleware/express';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhE,YAAY,EACR,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,EACX,KAAK,EACL,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { RequestTracer } from '../core/TraceEngine';
2
+ import { DebuggerConfig, ServiceTag } from '../core/types';
3
+ type AnyAxios = any;
4
+ interface AxiosTracerOptions {
5
+ config?: Partial<DebuggerConfig>;
6
+ getTracer?: () => RequestTracer | null;
7
+ /** Map URL patterns to service tags */
8
+ serviceMap?: Record<string, ServiceTag>;
9
+ }
10
+ /**
11
+ * Auto-instrument Axios instance to trace all HTTP requests.
12
+ *
13
+ * Usage:
14
+ * axiosTracer(axios, { getTracer: () => currentTracer })
15
+ *
16
+ * Output:
17
+ * Axios POST https://api.stripe.com/v1/charges → 234ms ✔ [stripe]
18
+ * Axios GET https://api.razorpay.com/orders → 502 error ❌ [razorpay]
19
+ */
20
+ export declare function axiosTracer(axiosInstance: AnyAxios, options?: AxiosTracerOptions): void;
21
+ export {};
22
+ //# sourceMappingURL=axios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axios.d.ts","sourceRoot":"","sources":["../../../src/integrations/axios.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAyB,cAAc,EAAkB,UAAU,EAAE,MAAM,eAAe,CAAC;AAGlG,KAAK,QAAQ,GAAG,GAAG,CAAC;AAEpB,UAAU,kBAAkB;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IACvC,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAC3C;AAaD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAgGvF"}
@@ -0,0 +1,25 @@
1
+ import { RequestTracer } from '../core/TraceEngine';
2
+ import { DebuggerConfig, ServiceTag } from '../core/types';
3
+ interface FetchTracerOptions {
4
+ config?: Partial<DebuggerConfig>;
5
+ getTracer?: () => RequestTracer | null;
6
+ /** Map URL patterns to service tags (e.g. 'stripe.com' -> 'stripe') */
7
+ serviceMap?: Record<string, ServiceTag>;
8
+ }
9
+ /**
10
+ * Auto-instrument global fetch to trace all HTTP requests.
11
+ *
12
+ * Usage:
13
+ * fetchTracer({ getTracer: () => currentTracer, serviceMap: { 'myapi.com': 'external' } })
14
+ *
15
+ * Output:
16
+ * Fetch POST https://api.stripe.com/v1/charges → 234ms ✔ [stripe]
17
+ * Fetch GET https://api.razorpay.com/orders → timeout ❌ [razorpay]
18
+ */
19
+ export declare function fetchTracer(options?: FetchTracerOptions): void;
20
+ /**
21
+ * Remove fetch tracer (for testing/cleanup)
22
+ */
23
+ export declare function removeFetchTracer(): void;
24
+ export {};
25
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/integrations/fetch.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAyB,cAAc,EAAkB,UAAU,EAAE,MAAM,eAAe,CAAC;AAGlG,UAAU,kBAAkB;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IACvC,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAC3C;AAeD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAyF9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAOxC"}
@@ -0,0 +1,26 @@
1
+ import { RequestTracer } from '../core/TraceEngine';
2
+ import { DebuggerConfig } from '../core/types';
3
+ type AnyMongoose = any;
4
+ interface MongoTracerOptions {
5
+ /** Config overrides for slow query thresholds */
6
+ config?: Partial<DebuggerConfig>;
7
+ /** Function to get the current active tracer (for auto-mode) */
8
+ getTracer?: () => RequestTracer | null;
9
+ }
10
+ /**
11
+ * Auto-instrument Mongoose to trace all queries.
12
+ *
13
+ * Usage:
14
+ * mongoTracer(mongoose, { getTracer: () => currentTracer })
15
+ *
16
+ * Output:
17
+ * Mongo users.findOne → 22ms ✔
18
+ * Mongo payments.insertMany → error ❌
19
+ */
20
+ export declare function mongoTracer(mongoose: AnyMongoose, options?: MongoTracerOptions): void;
21
+ /**
22
+ * Remove the monkey-patch from Mongoose (for testing/cleanup).
23
+ */
24
+ export declare function removeMongoTracer(mongoose: AnyMongoose): void;
25
+ export {};
26
+ //# sourceMappingURL=mongo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../../src/integrations/mongo.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAyB,cAAc,EAAkB,MAAM,eAAe,CAAC;AAGtF,KAAK,WAAW,GAAG,GAAG,CAAC;AAEvB,UAAU,kBAAkB;IACxB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;CAC1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAyFrF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAO7D"}
@@ -0,0 +1,20 @@
1
+ import { RequestTracer } from '../core/TraceEngine';
2
+ import { DebuggerConfig } from '../core/types';
3
+ type AnyPool = any;
4
+ interface MysqlTracerOptions {
5
+ config?: Partial<DebuggerConfig>;
6
+ getTracer?: () => RequestTracer | null;
7
+ }
8
+ /**
9
+ * Auto-instrument mysql2 pool to trace all queries.
10
+ *
11
+ * Usage:
12
+ * mysqlTracer(pool, { getTracer: () => currentTracer })
13
+ *
14
+ * Output:
15
+ * MySQL SELECT users → 12ms ✔
16
+ * MySQL INSERT payments → error ❌
17
+ */
18
+ export declare function mysqlTracer(pool: AnyPool, options?: MysqlTracerOptions): void;
19
+ export {};
20
+ //# sourceMappingURL=mysql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../../src/integrations/mysql.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAyB,cAAc,EAAkB,MAAM,eAAe,CAAC;AAGtF,KAAK,OAAO,GAAG,GAAG,CAAC;AAEnB,UAAU,kBAAkB;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;CAC1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAsM7E"}
@@ -0,0 +1,20 @@
1
+ import { RequestTracer } from '../core/TraceEngine';
2
+ import { DebuggerConfig } from '../core/types';
3
+ type AnyPool = any;
4
+ interface PgTracerOptions {
5
+ config?: Partial<DebuggerConfig>;
6
+ getTracer?: () => RequestTracer | null;
7
+ }
8
+ /**
9
+ * Auto-instrument pg Pool/Client to trace all queries.
10
+ *
11
+ * Usage:
12
+ * pgTracer(pool, { getTracer: () => currentTracer })
13
+ *
14
+ * Output:
15
+ * Postgres SELECT orders → 18ms ✔
16
+ * Postgres UPDATE invoice → timeout ❌
17
+ */
18
+ export declare function pgTracer(pool: AnyPool, options?: PgTracerOptions): void;
19
+ export {};
20
+ //# sourceMappingURL=postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../src/integrations/postgres.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAyB,cAAc,EAAkB,MAAM,eAAe,CAAC;AAGtF,KAAK,OAAO,GAAG,GAAG,CAAC;AAEnB,UAAU,eAAe;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;CAC1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAoFvE"}
@@ -0,0 +1,20 @@
1
+ import { RequestTracer } from '../core/TraceEngine';
2
+ import { DebuggerConfig } from '../core/types';
3
+ type AnyRedis = any;
4
+ interface RedisTracerOptions {
5
+ config?: Partial<DebuggerConfig>;
6
+ getTracer?: () => RequestTracer | null;
7
+ }
8
+ /**
9
+ * Auto-instrument a Redis client (ioredis or node-redis v4).
10
+ *
11
+ * Usage:
12
+ * redisTracer(redisClient, { getTracer: () => currentTracer })
13
+ *
14
+ * Output:
15
+ * Redis SET session → 3ms ✔
16
+ * Redis GET cache → timeout ❌
17
+ */
18
+ export declare function redisTracer(client: AnyRedis, options?: RedisTracerOptions): void;
19
+ export {};
20
+ //# sourceMappingURL=redis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../src/integrations/redis.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAyB,cAAc,EAAkB,MAAM,eAAe,CAAC;AAGtF,KAAK,QAAQ,GAAG,GAAG,CAAC;AAEpB,UAAU,kBAAkB;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;CAC1C;AAeD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAkFhF"}
@@ -0,0 +1,39 @@
1
+ import { TraceEngine, RequestTracer } from '../core/TraceEngine';
2
+ import { Analytics } from '../core/Analytics';
3
+ import { DebuggerConfig } from '../core/types';
4
+ type Request = any;
5
+ type Response = any;
6
+ type NextFunction = any;
7
+ /** Per-request extended request */
8
+ declare global {
9
+ namespace Express {
10
+ interface Request {
11
+ tracer?: RequestTracer;
12
+ traceId?: string;
13
+ }
14
+ }
15
+ }
16
+ export interface FlowDebuggerMiddleware {
17
+ middleware: (req: Request, res: Response, next: NextFunction) => void;
18
+ engine: TraceEngine;
19
+ analytics: Analytics;
20
+ /** Get current active tracer (for use in integrations) */
21
+ getTracer: () => RequestTracer | null;
22
+ }
23
+ /**
24
+ * Create the flow-debugger Express middleware.
25
+ *
26
+ * Usage:
27
+ * const debugger = flowDebugger({ slowThreshold: 500 });
28
+ * app.use(debugger.middleware);
29
+ *
30
+ * // Auto-instrument databases
31
+ * mongoTracer(mongoose, { getTracer: debugger.getTracer });
32
+ * mysqlTracer(pool, { getTracer: debugger.getTracer });
33
+ *
34
+ * // Dashboard at: GET /__debugger/dashboard
35
+ * // API at: GET /__debugger
36
+ */
37
+ export declare function flowDebugger(config?: DebuggerConfig): FlowDebuggerMiddleware;
38
+ export {};
39
+ //# sourceMappingURL=express.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../../src/middleware/express.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAkB,MAAM,eAAe,CAAC;AAK/D,KAAK,OAAO,GAAG,GAAG,CAAC;AACnB,KAAK,QAAQ,GAAG,GAAG,CAAC;AACpB,KAAK,YAAY,GAAG,GAAG,CAAC;AAYxB,mCAAmC;AACnC,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,OAAO,CAAC;QACd,UAAU,OAAO;YACb,MAAM,CAAC,EAAE,aAAa,CAAC;YACvB,OAAO,CAAC,EAAE,MAAM,CAAC;SACpB;KACJ;CACJ;AAED,MAAM,WAAW,sBAAsB;IACnC,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACtE,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,sBAAsB,CAyF5E"}