@rudderjs/telescope 13.0.2 → 13.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.
- package/README.md +13 -1
- package/dist/collectors/exception.d.ts +13 -0
- package/dist/collectors/exception.d.ts.map +1 -1
- package/dist/collectors/exception.js +13 -0
- package/dist/collectors/exception.js.map +1 -1
- package/dist/collectors/request.d.ts.map +1 -1
- package/dist/collectors/request.js +15 -4
- package/dist/collectors/request.js.map +1 -1
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -1
- package/dist/routes.d.ts +8 -0
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +20 -6
- package/dist/routes.js.map +1 -1
- package/dist/storage.d.ts +26 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +34 -6
- package/dist/storage.js.map +1 -1
- package/dist/stream.d.ts +23 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +96 -0
- package/dist/stream.js.map +1 -0
- package/dist/types.d.ts +29 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +22 -0
- package/dist/types.js.map +1 -1
- package/dist/views/vanilla/EntryList.d.ts +8 -0
- package/dist/views/vanilla/EntryList.d.ts.map +1 -1
- package/dist/views/vanilla/EntryList.js +62 -11
- package/dist/views/vanilla/EntryList.js.map +1 -1
- package/dist/views/vanilla/Layout.d.ts.map +1 -1
- package/dist/views/vanilla/Layout.js +6 -1
- package/dist/views/vanilla/Layout.js.map +1 -1
- package/dist/views/vanilla/details/ai-views.d.ts +16 -0
- package/dist/views/vanilla/details/ai-views.d.ts.map +1 -0
- package/dist/views/vanilla/details/ai-views.js +136 -0
- package/dist/views/vanilla/details/ai-views.js.map +1 -0
- package/dist/views/vanilla/details/format.d.ts +16 -0
- package/dist/views/vanilla/details/format.d.ts.map +1 -0
- package/dist/views/vanilla/details/format.js +45 -0
- package/dist/views/vanilla/details/format.js.map +1 -0
- package/dist/views/vanilla/details/request-views.d.ts +15 -0
- package/dist/views/vanilla/details/request-views.d.ts.map +1 -0
- package/dist/views/vanilla/details/request-views.js +135 -0
- package/dist/views/vanilla/details/request-views.js.map +1 -0
- package/dist/views/vanilla/details/views.d.ts.map +1 -1
- package/dist/views/vanilla/details/views.js +3 -295
- package/dist/views/vanilla/details/views.js.map +1 -1
- package/package.json +14 -14
package/README.md
CHANGED
|
@@ -23,15 +23,27 @@ export default {
|
|
|
23
23
|
enabled: Env.getBool('TELESCOPE_ENABLED', true),
|
|
24
24
|
path: 'telescope',
|
|
25
25
|
storage: 'memory',
|
|
26
|
+
// Real-time dashboard:
|
|
27
|
+
// 'polling' (default) — re-fetch every `pollInterval` ms when Live is on
|
|
28
|
+
// 'stream' — subscribe to `<path>/api/stream` via EventSource
|
|
29
|
+
updates: 'polling',
|
|
30
|
+
pollInterval: 2000,
|
|
26
31
|
} satisfies TelescopeConfig
|
|
27
32
|
```
|
|
28
33
|
|
|
34
|
+
### Real-time updates (SSE)
|
|
35
|
+
|
|
36
|
+
Flip `updates: 'stream'` and the dashboard subscribes to a Server-Sent Events
|
|
37
|
+
endpoint instead of polling. New entries appear the moment they're recorded —
|
|
38
|
+
no peer dependency, no WebSocket upgrade, no extra auth model. The existing
|
|
39
|
+
recording toggle and auth gate still apply to the stream endpoint.
|
|
40
|
+
|
|
29
41
|
## Dashboard
|
|
30
42
|
|
|
31
43
|
Telescope serves a built-in UI at `/{path}` (default `/telescope`) with:
|
|
32
44
|
|
|
33
45
|
- **Dashboard** — count cards for all entry types
|
|
34
|
-
- **Per-type list pages** — searchable, paginated tables with tag filtering and
|
|
46
|
+
- **Per-type list pages** — searchable, paginated tables with tag filtering and a live-updates toggle (polling by default, SSE-streamed if `updates: 'stream'`)
|
|
35
47
|
- **Detail pages** — rich, type-specific views at `/telescope/{type}/{id}` (formatted SQL, mail HTML preview, stack traces, WebSocket timelines, etc.)
|
|
36
48
|
- **Batch grouping** — entries linked by `batchId` (e.g. all queries from one request, all events from one WebSocket connection) viewable at `/telescope/batches/{batchId}`
|
|
37
49
|
- **Sensitive data redaction** — headers and body fields are redacted at collection time, before they reach storage
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import type { Collector, TelescopeStorage } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Records exceptions by wrapping the global exception reporter.
|
|
4
|
+
*
|
|
5
|
+
* **Load-bearing: this collector must swallow its own errors.** The
|
|
6
|
+
* exception reporter sits in the framework's error handling path. If
|
|
7
|
+
* `record()` throws — say, because storage is unhealthy — the framework's
|
|
8
|
+
* error handler calls `report()` on *that* failure, which re-enters this
|
|
9
|
+
* wrapper, which fails again, which reports again, ad infinitum. The
|
|
10
|
+
* `_recording` re-entry guard plus the try/catch around `record()` and
|
|
11
|
+
* `previousReport()` collectively break the cycle.
|
|
12
|
+
*
|
|
13
|
+
* If you refactor this class, preserve all three: the re-entry guard, the
|
|
14
|
+
* record-call try/catch, and the previous-reporter try/catch. None of
|
|
15
|
+
* them are defensive coding for hypothetical bugs — each blocks a real
|
|
16
|
+
* cascade path that has bitten us before.
|
|
4
17
|
*/
|
|
5
18
|
export declare class ExceptionCollector implements Collector {
|
|
6
19
|
private readonly storage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exception.d.ts","sourceRoot":"","sources":["../../src/collectors/exception.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9D
|
|
1
|
+
{"version":3,"file":"exception.d.ts","sourceRoot":"","sources":["../../src/collectors/exception.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9D;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAKtC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,QAAQ,CAAC,IAAI,yBAAwB;IACrC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAS;IACpC,OAAO,CAAC,UAAU,CAAQ;gBAEG,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAgC/B,OAAO,CAAC,MAAM;CAWf"}
|
|
@@ -2,6 +2,19 @@ import { createEntry } from '../storage.js';
|
|
|
2
2
|
import { batchOpts } from '../batch-context.js';
|
|
3
3
|
/**
|
|
4
4
|
* Records exceptions by wrapping the global exception reporter.
|
|
5
|
+
*
|
|
6
|
+
* **Load-bearing: this collector must swallow its own errors.** The
|
|
7
|
+
* exception reporter sits in the framework's error handling path. If
|
|
8
|
+
* `record()` throws — say, because storage is unhealthy — the framework's
|
|
9
|
+
* error handler calls `report()` on *that* failure, which re-enters this
|
|
10
|
+
* wrapper, which fails again, which reports again, ad infinitum. The
|
|
11
|
+
* `_recording` re-entry guard plus the try/catch around `record()` and
|
|
12
|
+
* `previousReport()` collectively break the cycle.
|
|
13
|
+
*
|
|
14
|
+
* If you refactor this class, preserve all three: the re-entry guard, the
|
|
15
|
+
* record-call try/catch, and the previous-reporter try/catch. None of
|
|
16
|
+
* them are defensive coding for hypothetical bugs — each blocks a real
|
|
17
|
+
* cascade path that has bitten us before.
|
|
5
18
|
*/
|
|
6
19
|
export class ExceptionCollector {
|
|
7
20
|
storage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exception.js","sourceRoot":"","sources":["../../src/collectors/exception.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C
|
|
1
|
+
{"version":3,"file":"exception.js","sourceRoot":"","sources":["../../src/collectors/exception.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,kBAAkB;IAKA;IAJpB,IAAI,GAAG,qBAAqB,CAAA;IAC5B,IAAI,GAAG,WAAoB,CAAA;IAC5B,UAAU,GAAG,KAAK,CAAA;IAE1B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAGrE,CAAA;YAED,sEAAsE;YACtE,2EAA2E;YAC3E,wEAAwE;YACxE,sCAAsC;YACtC,MAAM,cAAc,GAAG,MAAM,CAAA;YAC7B,oBAAoB,CAAC,CAAC,GAAY,EAAE,EAAE;gBACpC,IAAI,IAAI,CAAC,UAAU;oBAAE,OAAM;gBAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;gBACtB,IAAI,CAAC;oBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAClB,CAAC;gBAAC,MAAM,CAAC;oBACP,kDAAkD;gBACpD,CAAC;gBACD,IAAI,CAAC;oBACH,cAAc,CAAC,GAAG,CAAC,CAAA;gBACrB,CAAC;gBAAC,MAAM,CAAC;oBACP,qCAAqC;gBACvC,CAAC;gBACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;YACzB,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;QAC3D,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,GAAY;QACzB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAA;QACpC,MAAM,IAAI,GAAa,CAAC,OAAO,CAAC,CAAA;QAChC,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;QAEvD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE;YAC1C,KAAK,EAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACnD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YAC5C,KAAK,EAAI,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;SAC9E,EAAE,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACzF,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/collectors/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/collectors/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAiC/E;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAK9C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,QAAQ,CAAC,IAAI,uBAAsB;IACnC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAS;gBAGf,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAG,eAAe;IAG3C,QAAQ,IAAI,IAAI;IAIhB,yDAAyD;IACzD,UAAU,KAMM,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC;IA4J5E,OAAO,CAAC,YAAY;IAOpB,+DAA+D;IAC/D,OAAO,CAAC,OAAO;CAShB"}
|
|
@@ -3,6 +3,17 @@ import { redactHeaders, redactFields } from '../redact.js';
|
|
|
3
3
|
import { setBatchId } from '../batch-context.js';
|
|
4
4
|
const DEFAULT_HIDE_HEADERS = ['authorization', 'cookie', 'set-cookie', 'x-csrf-token', 'x-api-key'];
|
|
5
5
|
const DEFAULT_HIDE_FIELDS = ['password', 'password_confirmation', 'token', 'secret'];
|
|
6
|
+
const bag = (v) => v;
|
|
7
|
+
const BATCH_KEY = '__telescopeBatchId';
|
|
8
|
+
function attachBatchId(req, batchId) {
|
|
9
|
+
bag(req)[BATCH_KEY] = batchId;
|
|
10
|
+
}
|
|
11
|
+
function readStatus(res) {
|
|
12
|
+
return bag(res)['statusCode'];
|
|
13
|
+
}
|
|
14
|
+
function readRequestIp(req) {
|
|
15
|
+
return bag(req)['ip'];
|
|
16
|
+
}
|
|
6
17
|
/**
|
|
7
18
|
* Records HTTP requests — method, URL, status, duration, headers, payload,
|
|
8
19
|
* response status, IP, user-agent.
|
|
@@ -35,7 +46,8 @@ export class RequestCollector {
|
|
|
35
46
|
}
|
|
36
47
|
const start = Date.now();
|
|
37
48
|
const batchId = crypto.randomUUID();
|
|
38
|
-
|
|
49
|
+
// Stash batchId on the raw request for other collectors to correlate
|
|
50
|
+
attachBatchId(req, batchId);
|
|
39
51
|
// Set batch context so collectors (query, cache, model) can correlate
|
|
40
52
|
setBatchId(batchId);
|
|
41
53
|
try {
|
|
@@ -52,13 +64,12 @@ export class RequestCollector {
|
|
|
52
64
|
// (so redirect() calls that bypass res.status() still report accurately)
|
|
53
65
|
// and fall back to the normalized res.statusCode.
|
|
54
66
|
const finalRes = res.raw?.res;
|
|
55
|
-
const status =
|
|
56
|
-
?? res['statusCode']);
|
|
67
|
+
const status = finalRes?.status ?? readStatus(res);
|
|
57
68
|
if (status && status >= 400)
|
|
58
69
|
tags.push('error');
|
|
59
70
|
// Extract IP and user-agent from request headers
|
|
60
71
|
const headers = req.headers;
|
|
61
|
-
const rawIp = req
|
|
72
|
+
const rawIp = readRequestIp(req);
|
|
62
73
|
const ip = rawIp === '::1' || rawIp === '::ffff:127.0.0.1' ? '127.0.0.1' : rawIp;
|
|
63
74
|
const userAgent = headers['user-agent'];
|
|
64
75
|
const hostname = headers['host'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/collectors/request.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,oBAAoB,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,CAAC,CAAA;AACnG,MAAM,mBAAmB,GAAI,CAAC,UAAU,EAAE,uBAAuB,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/collectors/request.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,14 +21,32 @@ export { GateCollector } from './collectors/gate.js';
|
|
|
21
21
|
export { DumpCollector } from './collectors/dump.js';
|
|
22
22
|
export { AiCollector } from './collectors/ai.js';
|
|
23
23
|
export { McpCollector } from './collectors/mcp.js';
|
|
24
|
+
/**
|
|
25
|
+
* Process-wide registry holding the active `TelescopeStorage` and the
|
|
26
|
+
* recording on/off flag.
|
|
27
|
+
*
|
|
28
|
+
* **Recording state lives on `globalThis`, not as a static class field.**
|
|
29
|
+
* Telescope is loaded under Vite's SSR module runner in dev — every HMR
|
|
30
|
+
* cycle re-evaluates the module, which would re-initialize a static field
|
|
31
|
+
* to `true` and silently lose the dashboard's "Paused" state. The
|
|
32
|
+
* `globalThis['__rudderjs_telescope_recording__']` slot survives module
|
|
33
|
+
* re-eval; the recording API in `api/routes.ts` reads/writes the same
|
|
34
|
+
* key directly (never via `require('../index.js')` — ESM-only). The SSE
|
|
35
|
+
* stream subscriber registry follows the same pattern; see `stream.ts`.
|
|
36
|
+
*
|
|
37
|
+
* `storage.store()` (in `storage.ts`) checks `isRecording()` centrally
|
|
38
|
+
* before persisting — callers don't need to gate writes themselves.
|
|
39
|
+
*/
|
|
24
40
|
export declare class TelescopeRegistry {
|
|
25
41
|
private static storage;
|
|
26
42
|
static set(storage: TelescopeStorage): void;
|
|
27
43
|
static get(): TelescopeStorage | null;
|
|
28
44
|
/** @internal — clears the registered storage. Used for testing. */
|
|
29
45
|
static reset(): void;
|
|
46
|
+
/** Whether collectors are currently recording. Defaults to `true`. */
|
|
30
47
|
static get recording(): boolean;
|
|
31
48
|
static set recording(v: boolean);
|
|
49
|
+
/** Toggle and return the new recording state. */
|
|
32
50
|
static toggleRecording(): boolean;
|
|
33
51
|
}
|
|
34
52
|
export declare class Telescope {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -44,14 +44,32 @@ export { McpCollector } from './collectors/mcp.js';
|
|
|
44
44
|
// ─── Telescope Registry ────────────────────────────────────
|
|
45
45
|
const _g = globalThis;
|
|
46
46
|
const _recKey = '__rudderjs_telescope_recording__';
|
|
47
|
+
/**
|
|
48
|
+
* Process-wide registry holding the active `TelescopeStorage` and the
|
|
49
|
+
* recording on/off flag.
|
|
50
|
+
*
|
|
51
|
+
* **Recording state lives on `globalThis`, not as a static class field.**
|
|
52
|
+
* Telescope is loaded under Vite's SSR module runner in dev — every HMR
|
|
53
|
+
* cycle re-evaluates the module, which would re-initialize a static field
|
|
54
|
+
* to `true` and silently lose the dashboard's "Paused" state. The
|
|
55
|
+
* `globalThis['__rudderjs_telescope_recording__']` slot survives module
|
|
56
|
+
* re-eval; the recording API in `api/routes.ts` reads/writes the same
|
|
57
|
+
* key directly (never via `require('../index.js')` — ESM-only). The SSE
|
|
58
|
+
* stream subscriber registry follows the same pattern; see `stream.ts`.
|
|
59
|
+
*
|
|
60
|
+
* `storage.store()` (in `storage.ts`) checks `isRecording()` centrally
|
|
61
|
+
* before persisting — callers don't need to gate writes themselves.
|
|
62
|
+
*/
|
|
47
63
|
export class TelescopeRegistry {
|
|
48
64
|
static storage = null;
|
|
49
65
|
static set(storage) { this.storage = storage; }
|
|
50
66
|
static get() { return this.storage; }
|
|
51
67
|
/** @internal — clears the registered storage. Used for testing. */
|
|
52
68
|
static reset() { this.storage = null; }
|
|
69
|
+
/** Whether collectors are currently recording. Defaults to `true`. */
|
|
53
70
|
static get recording() { return _g[_recKey] ?? true; }
|
|
54
71
|
static set recording(v) { _g[_recKey] = v; }
|
|
72
|
+
/** Toggle and return the new recording state. */
|
|
55
73
|
static toggleRecording() { const v = !this.recording; _g[_recKey] = v; return v; }
|
|
56
74
|
}
|
|
57
75
|
// ─── Telescope Facade ──────────────────────────────────────
|
|
@@ -138,6 +156,8 @@ export class TelescopeProvider extends ServiceProvider {
|
|
|
138
156
|
hideRequestHeaders: merged.hideRequestHeaders ?? defaultConfig.hideRequestHeaders,
|
|
139
157
|
hideRequestFields: merged.hideRequestFields ?? defaultConfig.hideRequestFields,
|
|
140
158
|
auth: merged.auth ?? defaultConfig.auth,
|
|
159
|
+
updates: merged.updates ?? defaultConfig.updates,
|
|
160
|
+
pollInterval: merged.pollInterval ?? defaultConfig.pollInterval,
|
|
141
161
|
};
|
|
142
162
|
if (!resolved.enabled)
|
|
143
163
|
return;
|
|
@@ -220,6 +240,10 @@ export class TelescopeProvider extends ServiceProvider {
|
|
|
220
240
|
routeOpts.path = resolved.path;
|
|
221
241
|
if (resolved.auth)
|
|
222
242
|
routeOpts.auth = resolved.auth;
|
|
243
|
+
if (resolved.updates)
|
|
244
|
+
routeOpts.updates = resolved.updates;
|
|
245
|
+
if (resolved.pollInterval)
|
|
246
|
+
routeOpts.pollInterval = resolved.pollInterval;
|
|
223
247
|
await registerTelescopeRoutes(storage, routeOpts);
|
|
224
248
|
}
|
|
225
249
|
}
|
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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"}
|
package/dist/routes.d.ts
CHANGED
|
@@ -7,6 +7,14 @@ export interface RegisterTelescopeRoutesOptions {
|
|
|
7
7
|
auth?: TelescopeConfig['auth'];
|
|
8
8
|
/** Extra middleware to prepend to all routes */
|
|
9
9
|
middleware?: MiddlewareHandler[];
|
|
10
|
+
/**
|
|
11
|
+
* How the dashboard receives new entries. `'polling'` (default) re-fetches
|
|
12
|
+
* the list endpoint on a timer; `'stream'` registers the SSE endpoint and
|
|
13
|
+
* the dashboard subscribes via `EventSource`. See `TelescopeConfig.updates`.
|
|
14
|
+
*/
|
|
15
|
+
updates?: 'polling' | 'stream';
|
|
16
|
+
/** Poll interval in ms when `updates === 'polling'`. Default `2000`. */
|
|
17
|
+
pollInterval?: number;
|
|
10
18
|
}
|
|
11
19
|
/**
|
|
12
20
|
* Register all Telescope routes — UI pages, per-entry detail pages, batch
|
package/dist/routes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAa,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAa,MAAM,YAAY,CAAA;AAa9E,MAAM,WAAW,8BAA8B;IAC7C,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yFAAyF;IACzF,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;IAC9B,gDAAgD;IAChD,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC9B,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,gBAAgB,EACzB,IAAI,GAAK,8BAAmC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAqIf"}
|
package/dist/routes.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { toApiSlug } from './types.js';
|
|
1
2
|
import { Dashboard, EntryList, pages } from './views/vanilla/index.js';
|
|
2
3
|
import { DetailLayout, detailViews, NotFoundPage, BatchPage } from './views/vanilla/details/index.js';
|
|
3
4
|
import { listEntries, showEntry, overview, prune, listBatch, getRecording, toggleRecording, authMiddleware } from './api/routes.js';
|
|
5
|
+
import { createStreamResponse } from './stream.js';
|
|
4
6
|
const ENTRY_TYPES = [
|
|
5
7
|
'request', 'query', 'job', 'exception', 'log',
|
|
6
8
|
'mail', 'notification', 'event', 'cache', 'schedule', 'model', 'command', 'broadcast', 'sync',
|
|
@@ -26,6 +28,8 @@ export async function registerTelescopeRoutes(storage, opts = {}) {
|
|
|
26
28
|
}
|
|
27
29
|
const basePath = `/${(opts.path ?? 'telescope').replace(/^\/+/, '')}`;
|
|
28
30
|
const apiPrefix = `${basePath}/api`;
|
|
31
|
+
const updates = opts.updates ?? 'polling';
|
|
32
|
+
const pollInterval = opts.pollInterval ?? 2000;
|
|
29
33
|
const middleware = [
|
|
30
34
|
...(opts.middleware ?? []),
|
|
31
35
|
...(opts.auth ? [authMiddleware({ auth: opts.auth })] : []),
|
|
@@ -45,6 +49,8 @@ export async function registerTelescopeRoutes(storage, opts = {}) {
|
|
|
45
49
|
pageKey,
|
|
46
50
|
title: config.title,
|
|
47
51
|
columns: config.columns,
|
|
52
|
+
updates,
|
|
53
|
+
pollInterval,
|
|
48
54
|
})), middleware);
|
|
49
55
|
// Detail — fetches the entry, dispatches to the watcher-specific view
|
|
50
56
|
router.get(`${basePath}/${pageKey}/:id`, async (req, res) => {
|
|
@@ -86,13 +92,9 @@ export async function registerTelescopeRoutes(storage, opts = {}) {
|
|
|
86
92
|
res.header('Content-Type', 'text/html').send(BatchPage({ basePath, batchId, entries }));
|
|
87
93
|
}, middleware);
|
|
88
94
|
// ── API: list + show per entry type ──────────────────────
|
|
95
|
+
// Slug mapping is shared with EntryList.ts via `toApiSlug` (see types.ts).
|
|
89
96
|
for (const type of ENTRY_TYPES) {
|
|
90
|
-
const apiPath = type
|
|
91
|
-
: type === 'http' ? 'http'
|
|
92
|
-
: type === 'ai' ? 'ai'
|
|
93
|
-
: type === 'mcp' ? 'mcp'
|
|
94
|
-
: type === 'view' ? 'views'
|
|
95
|
-
: `${type}s`;
|
|
97
|
+
const apiPath = toApiSlug(type);
|
|
96
98
|
router.get(`${apiPrefix}/${apiPath}`, (req, res) => listEntries(storage, type, req, res), middleware);
|
|
97
99
|
router.get(`${apiPrefix}/${apiPath}/:id`, (req, res) => showEntry(storage, req, res), middleware);
|
|
98
100
|
}
|
|
@@ -102,5 +104,17 @@ export async function registerTelescopeRoutes(storage, opts = {}) {
|
|
|
102
104
|
router.delete(`${apiPrefix}/entries`, (req, res) => prune(storage, req, res), middleware);
|
|
103
105
|
router.get(`${apiPrefix}/recording`, (_req, res) => getRecording(res), middleware);
|
|
104
106
|
router.patch(`${apiPrefix}/recording`, (_req, res) => toggleRecording(res), middleware);
|
|
107
|
+
// ── API: real-time SSE stream ─────────────────────────────
|
|
108
|
+
// Only registered when the app opts in via `config.telescope.updates: 'stream'`.
|
|
109
|
+
// The dashboard subscribes via `EventSource(<apiPrefix>/stream?type=<entryType>)`.
|
|
110
|
+
if (updates === 'stream') {
|
|
111
|
+
router.get(`${apiPrefix}/stream`, (req) => {
|
|
112
|
+
const t = req.query['type'];
|
|
113
|
+
const typeFilter = (t && ENTRY_TYPES.includes(t))
|
|
114
|
+
? t
|
|
115
|
+
: null;
|
|
116
|
+
return createStreamResponse(typeFilter);
|
|
117
|
+
}, middleware);
|
|
118
|
+
}
|
|
105
119
|
}
|
|
106
120
|
//# sourceMappingURL=routes.js.map
|
package/dist/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AACrG,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/storage.d.ts
CHANGED
|
@@ -16,6 +16,32 @@ export declare class MemoryStorage implements TelescopeStorage {
|
|
|
16
16
|
prune(type?: EntryType): void;
|
|
17
17
|
pruneOlderThan(date: Date): void;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* SQLite-backed telescope storage — persistent across restarts, shared
|
|
21
|
+
* across the dev server and CLI processes.
|
|
22
|
+
*
|
|
23
|
+
* **Peer resolution** — `better-sqlite3` is loaded via
|
|
24
|
+
* `createRequire(import.meta.url)` rather than a top-level `import`.
|
|
25
|
+
* Two reasons:
|
|
26
|
+
* 1. better-sqlite3 ships native bindings; bundlers (Vite SSR, Webpack,
|
|
27
|
+
* esbuild) can't statically resolve them. createRequire pushes the
|
|
28
|
+
* lookup to runtime where Node's loader handles `.node` files.
|
|
29
|
+
* 2. Telescope's package.json lists `better-sqlite3` under
|
|
30
|
+
* `optionalDependencies`. Apps that pick `storage: 'memory'` never
|
|
31
|
+
* need it; we shouldn't force its install.
|
|
32
|
+
*
|
|
33
|
+
* The `globalThis.__betterSqlite3` escape hatch is for bundled
|
|
34
|
+
* environments where `createRequire` can't reach the module (e.g. when
|
|
35
|
+
* telescope is pre-bundled into a single file). Pre-stash the module
|
|
36
|
+
* there and the loader will pick it up. If neither path resolves, the
|
|
37
|
+
* constructor throws loudly — it does NOT silently fall back to memory.
|
|
38
|
+
*
|
|
39
|
+
* **WAL mode** — enabled in `migrate()`. Without it, `pnpm rudder ...`
|
|
40
|
+
* commands hit "database is locked" while `pnpm dev` is running. WAL
|
|
41
|
+
* (Write-Ahead Logging) lets the dev server and CLI processes read/write
|
|
42
|
+
* concurrently. `synchronous = NORMAL` is paired with WAL for the
|
|
43
|
+
* standard "durable on commit, fast on crash recovery" tradeoff.
|
|
44
|
+
*/
|
|
19
45
|
export declare class SqliteStorage implements TelescopeStorage {
|
|
20
46
|
private readonly dbPath;
|
|
21
47
|
private db;
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAY1F,wBAAgB,WAAW,CACzB,IAAI,EAAK,SAAS,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,cAAc,CAUhB;AAID,qBAAa,aAAc,YAAW,gBAAgB;IAGxC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,OAAO,CAAC,OAAO,CAAuB;gBAET,UAAU,GAAE,MAAa;IAEtD,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAYlC,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAK3C,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,EAAE;IA2B5C,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAIvC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM;IAK/B,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI;IAQ7B,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;CAIjC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,aAAc,YAAW,gBAAgB;IAGxC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,EAAE,CAAiD;gBAE9B,MAAM,EAAE,MAAM;IAE3C,OAAO,CAAC,KAAK;IAqBb,OAAO,CAAC,OAAO;IAmBf,OAAO,CAAC,KAAK;IAYb,OAAO,CAAC,OAAO;IAYf,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAUlC,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAc3C,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,EAAE;IAwB5C,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAOvC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM;IAQ/B,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI;IAQ7B,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;CAGjC"}
|
package/dist/storage.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
+
import { notifySubscribers } from './stream.js';
|
|
3
4
|
const _g = globalThis;
|
|
4
5
|
const _recKey = '__rudderjs_telescope_recording__';
|
|
5
6
|
function isRecording() {
|
|
@@ -31,6 +32,10 @@ export class MemoryStorage {
|
|
|
31
32
|
if (this.entries.length > this.maxEntries) {
|
|
32
33
|
this.entries.length = this.maxEntries;
|
|
33
34
|
}
|
|
35
|
+
// Fan out to live-stream subscribers after the in-memory write. Sync
|
|
36
|
+
// call — does not await any persistence, dashboard latency tracks the
|
|
37
|
+
// emit only.
|
|
38
|
+
notifySubscribers(entry);
|
|
34
39
|
}
|
|
35
40
|
storeBatch(entries) {
|
|
36
41
|
if (!isRecording())
|
|
@@ -81,7 +86,32 @@ export class MemoryStorage {
|
|
|
81
86
|
this.entries = this.entries.filter(e => e.createdAt.getTime() >= ts);
|
|
82
87
|
}
|
|
83
88
|
}
|
|
84
|
-
|
|
89
|
+
/**
|
|
90
|
+
* SQLite-backed telescope storage — persistent across restarts, shared
|
|
91
|
+
* across the dev server and CLI processes.
|
|
92
|
+
*
|
|
93
|
+
* **Peer resolution** — `better-sqlite3` is loaded via
|
|
94
|
+
* `createRequire(import.meta.url)` rather than a top-level `import`.
|
|
95
|
+
* Two reasons:
|
|
96
|
+
* 1. better-sqlite3 ships native bindings; bundlers (Vite SSR, Webpack,
|
|
97
|
+
* esbuild) can't statically resolve them. createRequire pushes the
|
|
98
|
+
* lookup to runtime where Node's loader handles `.node` files.
|
|
99
|
+
* 2. Telescope's package.json lists `better-sqlite3` under
|
|
100
|
+
* `optionalDependencies`. Apps that pick `storage: 'memory'` never
|
|
101
|
+
* need it; we shouldn't force its install.
|
|
102
|
+
*
|
|
103
|
+
* The `globalThis.__betterSqlite3` escape hatch is for bundled
|
|
104
|
+
* environments where `createRequire` can't reach the module (e.g. when
|
|
105
|
+
* telescope is pre-bundled into a single file). Pre-stash the module
|
|
106
|
+
* there and the loader will pick it up. If neither path resolves, the
|
|
107
|
+
* constructor throws loudly — it does NOT silently fall back to memory.
|
|
108
|
+
*
|
|
109
|
+
* **WAL mode** — enabled in `migrate()`. Without it, `pnpm rudder ...`
|
|
110
|
+
* commands hit "database is locked" while `pnpm dev` is running. WAL
|
|
111
|
+
* (Write-Ahead Logging) lets the dev server and CLI processes read/write
|
|
112
|
+
* concurrently. `synchronous = NORMAL` is paired with WAL for the
|
|
113
|
+
* standard "durable on commit, fast on crash recovery" tradeoff.
|
|
114
|
+
*/
|
|
85
115
|
export class SqliteStorage {
|
|
86
116
|
dbPath;
|
|
87
117
|
db = null;
|
|
@@ -90,9 +120,6 @@ export class SqliteStorage {
|
|
|
90
120
|
}
|
|
91
121
|
getDb() {
|
|
92
122
|
if (!this.db) {
|
|
93
|
-
// Load better-sqlite3 via createRequire so native bindings work under
|
|
94
|
-
// ESM + Vite SSR. Allow consumers to pre-stash the module on globalThis
|
|
95
|
-
// (e.g. when bundling) as an escape hatch.
|
|
96
123
|
let Database = globalThis.__betterSqlite3;
|
|
97
124
|
if (!Database) {
|
|
98
125
|
try {
|
|
@@ -111,8 +138,6 @@ export class SqliteStorage {
|
|
|
111
138
|
}
|
|
112
139
|
migrate() {
|
|
113
140
|
const db = this.db;
|
|
114
|
-
// WAL mode lets the dev server + CLI processes read/write the same file
|
|
115
|
-
// concurrently without "database is locked" errors.
|
|
116
141
|
db.pragma('journal_mode = WAL');
|
|
117
142
|
db.pragma('synchronous = NORMAL');
|
|
118
143
|
db.exec(`
|
|
@@ -157,6 +182,7 @@ export class SqliteStorage {
|
|
|
157
182
|
const row = this.toRow(entry);
|
|
158
183
|
this.getDb().prepare(`INSERT INTO telescope_entries (id, batch_id, type, content, tags, family_hash, created_at)
|
|
159
184
|
VALUES (@id, @batch_id, @type, @content, @tags, @family_hash, @created_at)`).run(row);
|
|
185
|
+
notifySubscribers(entry);
|
|
160
186
|
}
|
|
161
187
|
storeBatch(entries) {
|
|
162
188
|
if (!isRecording())
|
|
@@ -169,6 +195,8 @@ export class SqliteStorage {
|
|
|
169
195
|
stmt.run(row);
|
|
170
196
|
});
|
|
171
197
|
tx(entries.map(e => this.toRow(e)));
|
|
198
|
+
for (const entry of entries)
|
|
199
|
+
notifySubscribers(entry);
|
|
172
200
|
}
|
|
173
201
|
list(options) {
|
|
174
202
|
const conditions = [];
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|