@rudderjs/pulse 5.0.0 → 6.1.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 (86) hide show
  1. package/README.md +16 -16
  2. package/boost/guidelines.md +22 -11
  3. package/dist/api/routes.d.ts +11 -4
  4. package/dist/api/routes.d.ts.map +1 -1
  5. package/dist/api/routes.js +117 -135
  6. package/dist/api/routes.js.map +1 -1
  7. package/dist/index.d.ts +10 -9
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +35 -31
  10. package/dist/index.js.map +1 -1
  11. package/dist/recorders/cache.d.ts +11 -0
  12. package/dist/recorders/cache.d.ts.map +1 -0
  13. package/dist/{aggregators → recorders}/cache.js +2 -2
  14. package/dist/recorders/cache.js.map +1 -0
  15. package/dist/recorders/exception.d.ts +11 -0
  16. package/dist/recorders/exception.d.ts.map +1 -0
  17. package/dist/{aggregators → recorders}/exception.js +2 -2
  18. package/dist/recorders/exception.js.map +1 -0
  19. package/dist/{aggregators → recorders}/query.d.ts +3 -3
  20. package/dist/recorders/query.d.ts.map +1 -0
  21. package/dist/{aggregators → recorders}/query.js +2 -2
  22. package/dist/recorders/query.js.map +1 -0
  23. package/dist/recorders/queue.d.ts +19 -0
  24. package/dist/recorders/queue.d.ts.map +1 -0
  25. package/dist/recorders/queue.js +52 -0
  26. package/dist/recorders/queue.js.map +1 -0
  27. package/dist/{aggregators → recorders}/request.d.ts +3 -3
  28. package/dist/recorders/request.d.ts.map +1 -0
  29. package/dist/{aggregators → recorders}/request.js +2 -2
  30. package/dist/recorders/request.js.map +1 -0
  31. package/dist/{aggregators → recorders}/server.d.ts +3 -3
  32. package/dist/recorders/server.d.ts.map +1 -0
  33. package/dist/{aggregators → recorders}/server.js +2 -2
  34. package/dist/recorders/server.js.map +1 -0
  35. package/dist/{aggregators → recorders}/user.d.ts +3 -3
  36. package/dist/recorders/user.d.ts.map +1 -0
  37. package/dist/{aggregators → recorders}/user.js +2 -2
  38. package/dist/recorders/user.js.map +1 -0
  39. package/dist/routes.d.ts +23 -0
  40. package/dist/routes.d.ts.map +1 -0
  41. package/dist/routes.js +44 -0
  42. package/dist/routes.js.map +1 -0
  43. package/dist/types.d.ts +1 -1
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/types.js.map +1 -1
  46. package/dist/views/vanilla/Dashboard.d.ts +11 -0
  47. package/dist/views/vanilla/Dashboard.d.ts.map +1 -0
  48. package/dist/{ui/dashboard.js → views/vanilla/Dashboard.js} +11 -7
  49. package/dist/views/vanilla/Dashboard.js.map +1 -0
  50. package/dist/views/vanilla/Layout.d.ts +13 -0
  51. package/dist/views/vanilla/Layout.d.ts.map +1 -0
  52. package/dist/{ui/layout.js → views/vanilla/Layout.js} +8 -15
  53. package/dist/views/vanilla/Layout.js.map +1 -0
  54. package/dist/views/vanilla/_html.d.ts +28 -0
  55. package/dist/views/vanilla/_html.d.ts.map +1 -0
  56. package/dist/views/vanilla/_html.js +56 -0
  57. package/dist/views/vanilla/_html.js.map +1 -0
  58. package/dist/views/vanilla/index.d.ts +4 -0
  59. package/dist/views/vanilla/index.d.ts.map +1 -0
  60. package/dist/views/vanilla/index.js +4 -0
  61. package/dist/views/vanilla/index.js.map +1 -0
  62. package/package.json +9 -8
  63. package/dist/aggregators/cache.d.ts +0 -11
  64. package/dist/aggregators/cache.d.ts.map +0 -1
  65. package/dist/aggregators/cache.js.map +0 -1
  66. package/dist/aggregators/exception.d.ts +0 -11
  67. package/dist/aggregators/exception.d.ts.map +0 -1
  68. package/dist/aggregators/exception.js.map +0 -1
  69. package/dist/aggregators/query.d.ts.map +0 -1
  70. package/dist/aggregators/query.js.map +0 -1
  71. package/dist/aggregators/queue.d.ts +0 -12
  72. package/dist/aggregators/queue.d.ts.map +0 -1
  73. package/dist/aggregators/queue.js +0 -43
  74. package/dist/aggregators/queue.js.map +0 -1
  75. package/dist/aggregators/request.d.ts.map +0 -1
  76. package/dist/aggregators/request.js.map +0 -1
  77. package/dist/aggregators/server.d.ts.map +0 -1
  78. package/dist/aggregators/server.js.map +0 -1
  79. package/dist/aggregators/user.d.ts.map +0 -1
  80. package/dist/aggregators/user.js.map +0 -1
  81. package/dist/ui/dashboard.d.ts +0 -5
  82. package/dist/ui/dashboard.d.ts.map +0 -1
  83. package/dist/ui/dashboard.js.map +0 -1
  84. package/dist/ui/layout.d.ts +0 -6
  85. package/dist/ui/layout.d.ts.map +0 -1
  86. package/dist/ui/layout.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @rudderjs/pulse
2
2
 
3
- Application performance monitoring for RudderJS — aggregates request throughput, queue metrics, cache hit rates, exceptions, active users, slow queries, and server resource usage.
3
+ Application performance monitoring for RudderJS — records request throughput, queue metrics, cache hit rates, exceptions, active users, slow queries, and server resource usage.
4
4
 
5
5
  ## Installation
6
6
 
@@ -53,12 +53,12 @@ const overview = await Pulse.overview(since)
53
53
  |------|--------|
54
54
  | `request_count` | Request middleware |
55
55
  | `request_duration` | Request middleware |
56
- | `queue_throughput` | Queue aggregator |
57
- | `queue_wait_time` | Queue aggregator |
58
- | `cache_hits` / `cache_misses` | Cache aggregator |
59
- | `exceptions` | Exception aggregator |
60
- | `active_users` | User aggregator middleware |
61
- | `server_cpu` / `server_memory` | Server aggregator (periodic) |
56
+ | `queue_throughput` | Queue recorder |
57
+ | `queue_wait_time` | Queue recorder |
58
+ | `cache_hits` / `cache_misses` | Cache recorder |
59
+ | `exceptions` | Exception recorder |
60
+ | `active_users` | User recorder middleware |
61
+ | `server_cpu` / `server_memory` | Server recorder (periodic) |
62
62
 
63
63
  ## Storage Drivers
64
64
 
@@ -88,17 +88,17 @@ export default {
88
88
  } satisfies PulseConfig
89
89
  ```
90
90
 
91
- ## Aggregators
91
+ ## Recorders
92
92
 
93
- Pulse auto-registers aggregators based on config:
93
+ Pulse auto-registers recorders based on config:
94
94
 
95
- - **RequestAggregator** — Tracks request throughput and duration via middleware
96
- - **QueueAggregator** — Tracks queue throughput and wait times
97
- - **CacheAggregator** — Tracks cache hit/miss rates
98
- - **ExceptionAggregator** — Counts unhandled exceptions
99
- - **QueryAggregator** — Records slow database queries
100
- - **UserAggregator** — Tracks unique active users via middleware
101
- - **ServerAggregator** — Periodically records CPU and memory usage
95
+ - **RequestRecorder** — Tracks request throughput and duration via middleware
96
+ - **QueueRecorder** — Tracks queue throughput and wait times
97
+ - **CacheRecorder** — Tracks cache hit/miss rates
98
+ - **ExceptionRecorder** — Counts unhandled exceptions
99
+ - **QueryRecorder** — Records slow database queries
100
+ - **UserRecorder** — Tracks unique active users via middleware
101
+ - **ServerRecorder** — Periodically records CPU and memory usage
102
102
 
103
103
  ## Notes
104
104
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## What This Package Does
4
4
 
5
- Pulse is an application metrics dashboard for RudderJS applications. It aggregates time-series data (request throughput, cache hit rates, queue metrics, server stats) into 1-minute buckets and exposes a JSON API for visualization.
5
+ Pulse is an application metrics dashboard for RudderJS applications. It records time-series data (request throughput, cache hit rates, queue metrics, server stats) into 1-minute buckets and exposes a JSON API + a single-page dashboard at `/pulse`.
6
6
 
7
7
  ## Architecture
8
8
 
@@ -10,18 +10,28 @@ Two data models:
10
10
  1. **Aggregates** — Time-bucketed metrics (1-minute resolution). Used for throughput, duration, hit rates.
11
11
  2. **Entries** — Individual notable events (slow requests, slow queries, exceptions, failed jobs).
12
12
 
13
- Seven aggregators collect data:
14
- - `RequestAggregator` — middleware: request count + duration
15
- - `QueueAggregator` — wraps adapter: throughput + wait time + failures
16
- - `CacheAggregator` — wraps adapter: hit/miss counting
17
- - `ExceptionAggregator` — exception reporter hook
18
- - `UserAggregator` — middleware: unique users per minute
19
- - `QueryAggregator` — ORM hook: slow query detection
20
- - `ServerAggregator` — periodic: CPU + memory
13
+ Seven recorders collect data:
14
+ - `RequestRecorder` — middleware: request count + duration
15
+ - `QueueRecorder` — wraps adapter: throughput + wait time + failures
16
+ - `CacheRecorder` — wraps adapter: hit/miss counting
17
+ - `ExceptionRecorder` — exception reporter hook
18
+ - `UserRecorder` — middleware: unique users per minute
19
+ - `QueryRecorder` — ORM hook: slow query detection
20
+ - `ServerRecorder` — periodic: CPU + memory
21
+
22
+ ### File Layout
23
+
24
+ - `src/index.ts` — `PulseProvider`, `Pulse` facade, `PulseRegistry`, public re-exports
25
+ - `src/types.ts` — `PulseAggregate`, `PulseEntry`, `Recorder`, `PulseStorage`, `PulseConfig`
26
+ - `src/storage.ts` — `MemoryStorage`, `SqliteStorage`
27
+ - `src/recorders/` — seven recorder classes (request, queue, cache, exception, query, user, server)
28
+ - `src/routes.ts` — `registerPulseRoutes(storage, opts)` — UI + API route registration. Mirrors `@rudderjs/telescope`'s `registerTelescopeRoutes()`.
29
+ - `src/api/routes.ts` — pure handler functions (`getOverview`, `getRequests`, `listSlowRequests`, `authMiddleware`, …) called from `routes.ts`. Holds no router calls.
30
+ - `src/views/vanilla/` — UI: `Layout`, `Dashboard` (single page), `_html` (auto-escape helper), `index.ts` barrel.
21
31
 
22
32
  ## Key Patterns
23
33
 
24
- - Aggregators implement the `Aggregator` interface with `register()` method
34
+ - Recorders implement the `Recorder` interface with a `register()` method
25
35
  - `storage.record(type, value, key?)` increments a 1-minute bucket aggregate
26
36
  - `storage.storeEntry(type, content)` records individual notable events
27
37
  - API endpoints support `?period=1h|6h|24h|7d` for time range selection
@@ -29,5 +39,6 @@ Seven aggregators collect data:
29
39
  ## Do NOT
30
40
 
31
41
  - Import peer dependencies statically — always use dynamic `import()` with try/catch
32
- - Record Pulse's own API requests (request aggregator skips `/pulse*`)
42
+ - Record Pulse's own API requests (RequestRecorder skips `/pulse*`)
33
43
  - Store high-cardinality keys in aggregates — keep `key` to queue names, route patterns, not full URLs
44
+ - Use the old `*Aggregator` class names — renamed to `*Recorder` in v6 to align with Laravel Pulse vocabulary
@@ -1,6 +1,13 @@
1
+ import type { AppRequest, AppResponse, MiddlewareHandler } from '@rudderjs/contracts';
1
2
  import type { PulseStorage, PulseConfig } from '../types.js';
2
- /**
3
- * Register all Pulse API routes on the router.
4
- */
5
- export declare function registerRoutes(storage: PulseStorage, config: PulseConfig): Promise<void>;
3
+ export declare function getOverview(storage: PulseStorage, req: AppRequest, res: AppResponse): Promise<void>;
4
+ export declare function getRequests(storage: PulseStorage, req: AppRequest, res: AppResponse): Promise<void>;
5
+ export declare function listSlowRequests(storage: PulseStorage, req: AppRequest, res: AppResponse): Promise<void>;
6
+ export declare function getQueues(storage: PulseStorage, req: AppRequest, res: AppResponse): Promise<void>;
7
+ export declare function listSlowQueries(storage: PulseStorage, req: AppRequest, res: AppResponse): Promise<void>;
8
+ export declare function getExceptions(storage: PulseStorage, req: AppRequest, res: AppResponse): Promise<void>;
9
+ export declare function getCache(storage: PulseStorage, req: AppRequest, res: AppResponse): Promise<void>;
10
+ export declare function getUsers(storage: PulseStorage, req: AppRequest, res: AppResponse): Promise<void>;
11
+ export declare function getServers(storage: PulseStorage, req: AppRequest, res: AppResponse): Promise<void>;
12
+ export declare function authMiddleware(config: Pick<PulseConfig, 'auth'>): MiddlewareHandler;
6
13
  //# sourceMappingURL=routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAc,MAAM,aAAa,CAAA;AAexE;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAG,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAkJf"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAyC5D,wBAAsB,WAAW,CAC/B,OAAO,EAAE,YAAY,EACrB,GAAG,EAAM,UAAU,EACnB,GAAG,EAAM,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,YAAY,EACrB,GAAG,EAAM,UAAU,EACnB,GAAG,EAAM,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,YAAY,EACrB,GAAG,EAAM,UAAU,EACnB,GAAG,EAAM,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,YAAY,EACrB,GAAG,EAAM,UAAU,EACnB,GAAG,EAAM,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,YAAY,EACrB,GAAG,EAAM,UAAU,EACnB,GAAG,EAAM,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,YAAY,EACrB,GAAG,EAAM,UAAU,EACnB,GAAG,EAAM,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,YAAY,EACrB,GAAG,EAAM,UAAU,EACnB,GAAG,EAAM,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,YAAY,EACrB,GAAG,EAAM,UAAU,EACnB,GAAG,EAAM,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,YAAY,EACrB,GAAG,EAAM,UAAU,EACnB,GAAG,EAAM,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CASf;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,iBAAiB,CAWnF"}
@@ -1,4 +1,4 @@
1
- import { dashboardPage } from '../ui/dashboard.js';
1
+ // ─── Period parsing ───────────────────────────────────────
2
2
  const PERIODS = {
3
3
  '1h': 60 * 60 * 1000,
4
4
  '6h': 6 * 60 * 60 * 1000,
@@ -9,139 +9,6 @@ function sinceFromPeriod(period) {
9
9
  const ms = PERIODS[period] ?? PERIODS['1h'];
10
10
  return new Date(Date.now() - ms);
11
11
  }
12
- /**
13
- * Register all Pulse API routes on the router.
14
- */
15
- export async function registerRoutes(storage, config) {
16
- const { router } = await import('@rudderjs/router');
17
- const basePath = `/${config.path ?? 'pulse'}`;
18
- const prefix = `${basePath}/api`;
19
- const middleware = config.auth ? [authMiddleware(config)] : [];
20
- // ── Dashboard UI ─────────────────────────────────────────
21
- router.get(basePath, (_req, res) => {
22
- res.header('Content-Type', 'text/html').send(dashboardPage(prefix));
23
- }, middleware);
24
- // ── Overview ─────────────────────────────────────────────
25
- router.get(`${prefix}/overview`, async (req, res) => {
26
- const since = sinceFromPeriod(req.query['period'] ?? '1h');
27
- const aggregates = await storage.overview(since);
28
- // Group by type and compute summary stats
29
- const summary = {};
30
- for (const agg of aggregates) {
31
- if (!summary[agg.type]) {
32
- summary[agg.type] = { count: 0, sum: 0, min: null, max: null, buckets: 0 };
33
- }
34
- const s = summary[agg.type];
35
- s.count += agg.count;
36
- s.sum += agg.sum;
37
- s.buckets += 1;
38
- if (agg.min !== null && (s.min === null || agg.min < s.min))
39
- s.min = agg.min;
40
- if (agg.max !== null && (s.max === null || agg.max > s.max))
41
- s.max = agg.max;
42
- }
43
- // Compute averages
44
- const metrics = {};
45
- for (const [type, s] of Object.entries(summary)) {
46
- metrics[type] = {
47
- total: s.count,
48
- avg: s.count > 0 ? Math.round((s.sum / s.count) * 100) / 100 : 0,
49
- min: s.min,
50
- max: s.max,
51
- buckets: s.buckets,
52
- };
53
- }
54
- res.json({ period: req.query['period'] ?? '1h', metrics });
55
- }, middleware);
56
- // ── Request metrics ──────────────────────────────────────
57
- router.get(`${prefix}/requests`, async (req, res) => {
58
- const since = sinceFromPeriod(req.query['period'] ?? '1h');
59
- const counts = await storage.aggregates('request_count', since);
60
- const durations = await storage.aggregates('request_duration', since);
61
- res.json({
62
- throughput: counts.map(bucketToJson),
63
- duration: durations.map(a => ({
64
- ...bucketToJson(a),
65
- avg: a.count > 0 ? Math.round((a.sum / a.count) * 100) / 100 : 0,
66
- })),
67
- });
68
- }, middleware);
69
- // ── Slow requests ────────────────────────────────────────
70
- router.get(`${prefix}/slow-requests`, async (req, res) => {
71
- const entries = await storage.entries('slow_request', {
72
- page: parseInt(req.query['page'] ?? '1', 10),
73
- perPage: parseInt(req.query['per_page'] ?? '50', 10),
74
- });
75
- res.json({ data: entries });
76
- }, middleware);
77
- // ── Queue metrics ────────────────────────────────────────
78
- router.get(`${prefix}/queues`, async (req, res) => {
79
- const since = sinceFromPeriod(req.query['period'] ?? '1h');
80
- const throughput = await storage.aggregates('queue_throughput', since);
81
- const waitTimes = await storage.aggregates('queue_wait_time', since);
82
- res.json({
83
- throughput: throughput.map(bucketToJson),
84
- wait_time: waitTimes.map(a => ({
85
- ...bucketToJson(a),
86
- avg: a.count > 0 ? Math.round((a.sum / a.count) * 100) / 100 : 0,
87
- })),
88
- });
89
- }, middleware);
90
- // ── Slow queries ─────────────────────────────────────────
91
- router.get(`${prefix}/slow-queries`, async (req, res) => {
92
- const entries = await storage.entries('slow_query', {
93
- page: parseInt(req.query['page'] ?? '1', 10),
94
- perPage: parseInt(req.query['per_page'] ?? '50', 10),
95
- });
96
- res.json({ data: entries });
97
- }, middleware);
98
- // ── Exceptions ───────────────────────────────────────────
99
- router.get(`${prefix}/exceptions`, async (req, res) => {
100
- const since = sinceFromPeriod(req.query['period'] ?? '1h');
101
- const aggregates = await storage.aggregates('exceptions', since);
102
- const entries = await storage.entries('exception', {
103
- page: parseInt(req.query['page'] ?? '1', 10),
104
- perPage: parseInt(req.query['per_page'] ?? '20', 10),
105
- });
106
- res.json({
107
- over_time: aggregates.map(bucketToJson),
108
- recent: entries,
109
- });
110
- }, middleware);
111
- // ── Cache ────────────────────────────────────────────────
112
- router.get(`${prefix}/cache`, async (req, res) => {
113
- const since = sinceFromPeriod(req.query['period'] ?? '1h');
114
- const hits = await storage.aggregates('cache_hits', since);
115
- const misses = await storage.aggregates('cache_misses', since);
116
- const totalHits = hits.reduce((s, a) => s + a.count, 0);
117
- const totalMisses = misses.reduce((s, a) => s + a.count, 0);
118
- const total = totalHits + totalMisses;
119
- const hitRate = total > 0 ? Math.round((totalHits / total) * 10000) / 100 : 0;
120
- res.json({
121
- hit_rate: hitRate,
122
- total_hits: totalHits,
123
- total_misses: totalMisses,
124
- hits: hits.map(bucketToJson),
125
- misses: misses.map(bucketToJson),
126
- });
127
- }, middleware);
128
- // ── Active users ─────────────────────────────────────────
129
- router.get(`${prefix}/users`, async (req, res) => {
130
- const since = sinceFromPeriod(req.query['period'] ?? '1h');
131
- const aggregates = await storage.aggregates('active_users', since);
132
- res.json({ data: aggregates.map(bucketToJson) });
133
- }, middleware);
134
- // ── Server stats ─────────────────────────────────────────
135
- router.get(`${prefix}/servers`, async (req, res) => {
136
- const since = sinceFromPeriod(req.query['period'] ?? '1h');
137
- const cpu = await storage.aggregates('server_cpu', since);
138
- const memory = await storage.aggregates('server_memory', since);
139
- res.json({
140
- cpu: cpu.map(a => ({ ...bucketToJson(a), avg: a.count > 0 ? Math.round((a.sum / a.count) * 100) / 100 : 0 })),
141
- memory: memory.map(a => ({ ...bucketToJson(a), avg: a.count > 0 ? Math.round((a.sum / a.count) * 100) / 100 : 0 })),
142
- });
143
- }, middleware);
144
- }
145
12
  function bucketToJson(agg) {
146
13
  return {
147
14
  bucket: agg.bucket.toISOString(),
@@ -152,7 +19,122 @@ function bucketToJson(agg) {
152
19
  max: agg.max,
153
20
  };
154
21
  }
155
- function authMiddleware(config) {
22
+ // ─── Handlers ──────────────────────────────────────────────
23
+ //
24
+ // Pure handler functions invoked from `../routes.ts`. Kept separate from
25
+ // route registration so they can be reused or unit-tested without
26
+ // spinning up a router.
27
+ export async function getOverview(storage, req, res) {
28
+ const since = sinceFromPeriod(req.query['period'] ?? '1h');
29
+ const aggregates = await storage.overview(since);
30
+ const summary = {};
31
+ for (const agg of aggregates) {
32
+ if (!summary[agg.type]) {
33
+ summary[agg.type] = { count: 0, sum: 0, min: null, max: null, buckets: 0 };
34
+ }
35
+ const s = summary[agg.type];
36
+ s.count += agg.count;
37
+ s.sum += agg.sum;
38
+ s.buckets += 1;
39
+ if (agg.min !== null && (s.min === null || agg.min < s.min))
40
+ s.min = agg.min;
41
+ if (agg.max !== null && (s.max === null || agg.max > s.max))
42
+ s.max = agg.max;
43
+ }
44
+ const metrics = {};
45
+ for (const [type, s] of Object.entries(summary)) {
46
+ metrics[type] = {
47
+ total: s.count,
48
+ avg: s.count > 0 ? Math.round((s.sum / s.count) * 100) / 100 : 0,
49
+ min: s.min,
50
+ max: s.max,
51
+ buckets: s.buckets,
52
+ };
53
+ }
54
+ res.json({ period: req.query['period'] ?? '1h', metrics });
55
+ }
56
+ export async function getRequests(storage, req, res) {
57
+ const since = sinceFromPeriod(req.query['period'] ?? '1h');
58
+ const counts = await storage.aggregates('request_count', since);
59
+ const durations = await storage.aggregates('request_duration', since);
60
+ res.json({
61
+ throughput: counts.map(bucketToJson),
62
+ duration: durations.map(a => ({
63
+ ...bucketToJson(a),
64
+ avg: a.count > 0 ? Math.round((a.sum / a.count) * 100) / 100 : 0,
65
+ })),
66
+ });
67
+ }
68
+ export async function listSlowRequests(storage, req, res) {
69
+ const entries = await storage.entries('slow_request', {
70
+ page: parseInt(req.query['page'] ?? '1', 10),
71
+ perPage: parseInt(req.query['per_page'] ?? '50', 10),
72
+ });
73
+ res.json({ data: entries });
74
+ }
75
+ export async function getQueues(storage, req, res) {
76
+ const since = sinceFromPeriod(req.query['period'] ?? '1h');
77
+ const throughput = await storage.aggregates('queue_throughput', since);
78
+ const waitTimes = await storage.aggregates('queue_wait_time', since);
79
+ res.json({
80
+ throughput: throughput.map(bucketToJson),
81
+ wait_time: waitTimes.map(a => ({
82
+ ...bucketToJson(a),
83
+ avg: a.count > 0 ? Math.round((a.sum / a.count) * 100) / 100 : 0,
84
+ })),
85
+ });
86
+ }
87
+ export async function listSlowQueries(storage, req, res) {
88
+ const entries = await storage.entries('slow_query', {
89
+ page: parseInt(req.query['page'] ?? '1', 10),
90
+ perPage: parseInt(req.query['per_page'] ?? '50', 10),
91
+ });
92
+ res.json({ data: entries });
93
+ }
94
+ export async function getExceptions(storage, req, res) {
95
+ const since = sinceFromPeriod(req.query['period'] ?? '1h');
96
+ const aggregates = await storage.aggregates('exceptions', since);
97
+ const entries = await storage.entries('exception', {
98
+ page: parseInt(req.query['page'] ?? '1', 10),
99
+ perPage: parseInt(req.query['per_page'] ?? '20', 10),
100
+ });
101
+ res.json({
102
+ over_time: aggregates.map(bucketToJson),
103
+ recent: entries,
104
+ });
105
+ }
106
+ export async function getCache(storage, req, res) {
107
+ const since = sinceFromPeriod(req.query['period'] ?? '1h');
108
+ const hits = await storage.aggregates('cache_hits', since);
109
+ const misses = await storage.aggregates('cache_misses', since);
110
+ const totalHits = hits.reduce((s, a) => s + a.count, 0);
111
+ const totalMisses = misses.reduce((s, a) => s + a.count, 0);
112
+ const total = totalHits + totalMisses;
113
+ const hitRate = total > 0 ? Math.round((totalHits / total) * 10000) / 100 : 0;
114
+ res.json({
115
+ hit_rate: hitRate,
116
+ total_hits: totalHits,
117
+ total_misses: totalMisses,
118
+ hits: hits.map(bucketToJson),
119
+ misses: misses.map(bucketToJson),
120
+ });
121
+ }
122
+ export async function getUsers(storage, req, res) {
123
+ const since = sinceFromPeriod(req.query['period'] ?? '1h');
124
+ const aggregates = await storage.aggregates('active_users', since);
125
+ res.json({ data: aggregates.map(bucketToJson) });
126
+ }
127
+ export async function getServers(storage, req, res) {
128
+ const since = sinceFromPeriod(req.query['period'] ?? '1h');
129
+ const cpu = await storage.aggregates('server_cpu', since);
130
+ const memory = await storage.aggregates('server_memory', since);
131
+ res.json({
132
+ cpu: cpu.map(a => ({ ...bucketToJson(a), avg: a.count > 0 ? Math.round((a.sum / a.count) * 100) / 100 : 0 })),
133
+ memory: memory.map(a => ({ ...bucketToJson(a), avg: a.count > 0 ? Math.round((a.sum / a.count) * 100) / 100 : 0 })),
134
+ });
135
+ }
136
+ // ─── Auth Middleware ───────────────────────────────────────
137
+ export function authMiddleware(config) {
156
138
  return async (req, res, next) => {
157
139
  if (config.auth) {
158
140
  const allowed = await config.auth(req);
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,14 +1,15 @@
1
1
  import { ServiceProvider } from '@rudderjs/core';
2
- import { type PulseConfig, type PulseStorage, type PulseAggregate, type PulseEntry, type MetricType, type EntryType, type Aggregator, type EntryListOptions } from './types.js';
3
- export type { PulseConfig, PulseStorage, PulseAggregate, PulseEntry, MetricType, EntryType, Aggregator, EntryListOptions };
2
+ import { type PulseConfig, type PulseStorage, type PulseAggregate, type PulseEntry, type MetricType, type EntryType, type Recorder, type EntryListOptions } from './types.js';
3
+ export type { PulseConfig, PulseStorage, PulseAggregate, PulseEntry, MetricType, EntryType, Recorder, EntryListOptions };
4
4
  export { MemoryStorage, SqliteStorage } from './storage.js';
5
- export { RequestAggregator } from './aggregators/request.js';
6
- export { QueueAggregator } from './aggregators/queue.js';
7
- export { CacheAggregator } from './aggregators/cache.js';
8
- export { ExceptionAggregator } from './aggregators/exception.js';
9
- export { UserAggregator } from './aggregators/user.js';
10
- export { QueryAggregator } from './aggregators/query.js';
11
- export { ServerAggregator } from './aggregators/server.js';
5
+ export { RequestRecorder } from './recorders/request.js';
6
+ export { QueueRecorder } from './recorders/queue.js';
7
+ export { CacheRecorder } from './recorders/cache.js';
8
+ export { ExceptionRecorder } from './recorders/exception.js';
9
+ export { UserRecorder } from './recorders/user.js';
10
+ export { QueryRecorder } from './recorders/query.js';
11
+ export { ServerRecorder } from './recorders/server.js';
12
+ export { registerPulseRoutes, type RegisterPulseRoutesOptions } from './routes.js';
12
13
  export declare class PulseRegistry {
13
14
  private static storage;
14
15
  static set(storage: PulseStorage): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAU,MAAM,gBAAgB,CAAA;AAUxD,OAAO,EAEL,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EACzE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EACxE,MAAM,YAAY,CAAA;AAInB,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAA;AAC1H,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAI1D,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,OAAO,CAA4B;IAElD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IACvC,MAAM,CAAC,GAAG,IAAI,YAAY,GAAG,IAAI;IACjC,mEAAmE;IACnE,MAAM,CAAC,KAAK,IAAI,IAAI;CACrB;AAID,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAC,KAAK;IAMpB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzF,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAInH,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIjG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAG3E;AAID;;;;;;;;;GASG;AACH,qBAAa,aAAc,SAAQ,eAAe;IAChD,QAAQ,IAAI,IAAI;IAQV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA2E5B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAU,MAAM,gBAAgB,CAAA;AAUxD,OAAO,EAEL,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EACzE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EACtE,MAAM,YAAY,CAAA;AAInB,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAA;AACxH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAIlF,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,OAAO,CAA4B;IAElD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IACvC,MAAM,CAAC,GAAG,IAAI,YAAY,GAAG,IAAI;IACjC,mEAAmE;IACnE,MAAM,CAAC,KAAK,IAAI,IAAI;CACrB;AAID,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAC,KAAK;IAMpB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzF,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAInH,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIjG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAG3E;AAID;;;;;;;;;GASG;AACH,qBAAa,aAAc,SAAQ,eAAe;IAChD,QAAQ,IAAI,IAAI;IAQV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA8E5B"}
package/dist/index.js CHANGED
@@ -1,22 +1,23 @@
1
1
  import { ServiceProvider, config } from '@rudderjs/core';
2
2
  import { MemoryStorage, SqliteStorage } from './storage.js';
3
- import { RequestAggregator } from './aggregators/request.js';
4
- import { QueueAggregator } from './aggregators/queue.js';
5
- import { CacheAggregator } from './aggregators/cache.js';
6
- import { ExceptionAggregator } from './aggregators/exception.js';
7
- import { UserAggregator } from './aggregators/user.js';
8
- import { QueryAggregator } from './aggregators/query.js';
9
- import { ServerAggregator } from './aggregators/server.js';
10
- import { registerRoutes } from './api/routes.js';
3
+ import { RequestRecorder } from './recorders/request.js';
4
+ import { QueueRecorder } from './recorders/queue.js';
5
+ import { CacheRecorder } from './recorders/cache.js';
6
+ import { ExceptionRecorder } from './recorders/exception.js';
7
+ import { UserRecorder } from './recorders/user.js';
8
+ import { QueryRecorder } from './recorders/query.js';
9
+ import { ServerRecorder } from './recorders/server.js';
10
+ import { registerPulseRoutes } from './routes.js';
11
11
  import { defaultConfig, } from './types.js';
12
12
  export { MemoryStorage, SqliteStorage } from './storage.js';
13
- export { RequestAggregator } from './aggregators/request.js';
14
- export { QueueAggregator } from './aggregators/queue.js';
15
- export { CacheAggregator } from './aggregators/cache.js';
16
- export { ExceptionAggregator } from './aggregators/exception.js';
17
- export { UserAggregator } from './aggregators/user.js';
18
- export { QueryAggregator } from './aggregators/query.js';
19
- export { ServerAggregator } from './aggregators/server.js';
13
+ export { RequestRecorder } from './recorders/request.js';
14
+ export { QueueRecorder } from './recorders/queue.js';
15
+ export { CacheRecorder } from './recorders/cache.js';
16
+ export { ExceptionRecorder } from './recorders/exception.js';
17
+ export { UserRecorder } from './recorders/user.js';
18
+ export { QueryRecorder } from './recorders/query.js';
19
+ export { ServerRecorder } from './recorders/server.js';
20
+ export { registerPulseRoutes } from './routes.js';
20
21
  // ─── Pulse Registry ────────────────────────────────────────
21
22
  export class PulseRegistry {
22
23
  static storage = null;
@@ -106,36 +107,39 @@ export class PulseProvider extends ServiceProvider {
106
107
  }, interval);
107
108
  timer.unref();
108
109
  }
109
- // ── Register aggregators ──────────────────────────────
110
- const requestAgg = new RequestAggregator(storage, resolved);
111
- const userAgg = new UserAggregator(storage);
112
- const aggregators = [];
110
+ // ── Register recorders ────────────────────────────────
111
+ const requestRec = new RequestRecorder(storage, resolved);
112
+ const userRec = new UserRecorder(storage);
113
+ const recorders = [];
113
114
  if (resolved.recordQueues)
114
- aggregators.push(new QueueAggregator(storage));
115
+ recorders.push(new QueueRecorder(storage));
115
116
  if (resolved.recordCache)
116
- aggregators.push(new CacheAggregator(storage));
117
+ recorders.push(new CacheRecorder(storage));
117
118
  if (resolved.recordExceptions)
118
- aggregators.push(new ExceptionAggregator(storage));
119
+ recorders.push(new ExceptionRecorder(storage));
119
120
  if (resolved.recordServers)
120
- aggregators.push(new ServerAggregator(storage, resolved.serverStatsIntervalMs));
121
- // Query aggregator for slow queries
122
- aggregators.push(new QueryAggregator(storage, resolved));
123
- for (const agg of aggregators) {
124
- await agg.register();
121
+ recorders.push(new ServerRecorder(storage, resolved.serverStatsIntervalMs));
122
+ // Query recorder for slow queries
123
+ recorders.push(new QueryRecorder(storage, resolved));
124
+ for (const rec of recorders) {
125
+ await rec.register();
125
126
  }
126
127
  // ── Register middleware ───────────────────────────────
127
128
  try {
128
129
  const { router } = await import('@rudderjs/router');
129
130
  if (resolved.recordRequests)
130
- router.use(requestAgg.middleware());
131
+ router.use(requestRec.middleware());
131
132
  if (resolved.recordUsers)
132
- router.use(userAgg.middleware());
133
+ router.use(userRec.middleware());
133
134
  }
134
135
  catch {
135
136
  // @rudderjs/router not available
136
137
  }
137
- // ── Register API routes ───────────────────────────────
138
- await registerRoutes(storage, resolved);
138
+ // ── Register UI + API routes ──────────────────────────
139
+ await registerPulseRoutes(storage, {
140
+ path: resolved.path,
141
+ ...(resolved.auth ? { auth: resolved.auth } : {}),
142
+ });
139
143
  }
140
144
  }
141
145
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Recorder, PulseStorage } from '../types.js';
2
+ /**
3
+ * Tracks cache hit/miss ratio by wrapping the CacheRegistry adapter.
4
+ */
5
+ export declare class CacheRecorder implements Recorder {
6
+ private readonly storage;
7
+ readonly name = "Cache Recorder";
8
+ constructor(storage: PulseStorage);
9
+ register(): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=cache.d.ts.map