@rudderjs/telescope 0.0.1 → 0.0.2
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 +101 -27
- package/dist/api/routes.d.ts +10 -6
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +42 -54
- package/dist/api/routes.js.map +1 -1
- package/dist/batch-context.d.ts +19 -0
- package/dist/batch-context.d.ts.map +1 -0
- package/dist/batch-context.js +24 -0
- package/dist/batch-context.js.map +1 -0
- package/dist/collectors/ai.d.ts +13 -0
- package/dist/collectors/ai.d.ts.map +1 -0
- package/dist/collectors/ai.js +61 -0
- package/dist/collectors/ai.js.map +1 -0
- package/dist/collectors/broadcast.d.ts +10 -0
- package/dist/collectors/broadcast.d.ts.map +1 -0
- package/dist/collectors/broadcast.js +46 -0
- package/dist/collectors/broadcast.js.map +1 -0
- package/dist/collectors/cache.d.ts.map +1 -1
- package/dist/collectors/cache.js +5 -4
- package/dist/collectors/cache.js.map +1 -1
- package/dist/collectors/command.d.ts +21 -0
- package/dist/collectors/command.d.ts.map +1 -0
- package/dist/collectors/command.js +55 -0
- package/dist/collectors/command.js.map +1 -0
- package/dist/collectors/dump.d.ts +17 -0
- package/dist/collectors/dump.d.ts.map +1 -0
- package/dist/collectors/dump.js +37 -0
- package/dist/collectors/dump.js.map +1 -0
- package/dist/collectors/event.d.ts.map +1 -1
- package/dist/collectors/event.js +2 -1
- package/dist/collectors/event.js.map +1 -1
- package/dist/collectors/exception.d.ts +1 -0
- package/dist/collectors/exception.d.ts.map +1 -1
- package/dist/collectors/exception.js +23 -4
- package/dist/collectors/exception.js.map +1 -1
- package/dist/collectors/gate.d.ts +18 -0
- package/dist/collectors/gate.d.ts.map +1 -0
- package/dist/collectors/gate.js +49 -0
- package/dist/collectors/gate.js.map +1 -0
- package/dist/collectors/http.d.ts +21 -0
- package/dist/collectors/http.d.ts.map +1 -0
- package/dist/collectors/http.js +64 -0
- package/dist/collectors/http.js.map +1 -0
- package/dist/collectors/job.d.ts.map +1 -1
- package/dist/collectors/job.js +3 -2
- package/dist/collectors/job.js.map +1 -1
- package/dist/collectors/live.d.ts +13 -0
- package/dist/collectors/live.d.ts.map +1 -0
- package/dist/collectors/live.js +60 -0
- package/dist/collectors/live.js.map +1 -0
- package/dist/collectors/log.d.ts.map +1 -1
- package/dist/collectors/log.js +2 -1
- package/dist/collectors/log.js.map +1 -1
- package/dist/collectors/mail.d.ts.map +1 -1
- package/dist/collectors/mail.js +2 -1
- package/dist/collectors/mail.js.map +1 -1
- package/dist/collectors/mcp.d.ts +14 -0
- package/dist/collectors/mcp.d.ts.map +1 -0
- package/dist/collectors/mcp.js +49 -0
- package/dist/collectors/mcp.js.map +1 -0
- package/dist/collectors/model.d.ts +6 -0
- package/dist/collectors/model.d.ts.map +1 -1
- package/dist/collectors/model.js +44 -1
- package/dist/collectors/model.js.map +1 -1
- package/dist/collectors/notification.d.ts.map +1 -1
- package/dist/collectors/notification.js +2 -1
- package/dist/collectors/notification.js.map +1 -1
- package/dist/collectors/query.d.ts.map +1 -1
- package/dist/collectors/query.js +5 -3
- package/dist/collectors/query.js.map +1 -1
- package/dist/collectors/request.d.ts +2 -1
- package/dist/collectors/request.d.ts.map +1 -1
- package/dist/collectors/request.js +78 -4
- package/dist/collectors/request.js.map +1 -1
- package/dist/index.d.ts +17 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +152 -95
- package/dist/index.js.map +1 -1
- package/dist/redact.d.ts +25 -0
- package/dist/redact.d.ts.map +1 -0
- package/dist/redact.js +55 -0
- package/dist/redact.js.map +1 -0
- package/dist/routes.d.ts +22 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +105 -0
- package/dist/routes.js.map +1 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +13 -0
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +32 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -1
- package/dist/views/vanilla/Dashboard.d.ts +10 -0
- package/dist/views/vanilla/Dashboard.d.ts.map +1 -0
- package/dist/views/vanilla/Dashboard.js +48 -0
- package/dist/views/vanilla/Dashboard.js.map +1 -0
- package/dist/views/vanilla/EntryList.d.ts +29 -0
- package/dist/views/vanilla/EntryList.d.ts.map +1 -0
- package/dist/views/vanilla/EntryList.js +172 -0
- package/dist/views/vanilla/EntryList.js.map +1 -0
- package/dist/views/vanilla/Layout.d.ts +25 -0
- package/dist/views/vanilla/Layout.d.ts.map +1 -0
- package/dist/views/vanilla/Layout.js +225 -0
- package/dist/views/vanilla/Layout.js.map +1 -0
- package/dist/views/vanilla/_html.d.ts +27 -0
- package/dist/views/vanilla/_html.d.ts.map +1 -0
- package/dist/views/vanilla/_html.js +55 -0
- package/dist/views/vanilla/_html.js.map +1 -0
- package/dist/views/vanilla/columns.d.ts +20 -0
- package/dist/views/vanilla/columns.d.ts.map +1 -0
- package/dist/views/vanilla/columns.js +181 -0
- package/dist/views/vanilla/columns.js.map +1 -0
- package/dist/views/vanilla/details/Batch.d.ts +14 -0
- package/dist/views/vanilla/details/Batch.d.ts.map +1 -0
- package/dist/views/vanilla/details/Batch.js +120 -0
- package/dist/views/vanilla/details/Batch.js.map +1 -0
- package/dist/views/vanilla/details/Layout.d.ts +21 -0
- package/dist/views/vanilla/details/Layout.d.ts.map +1 -0
- package/dist/views/vanilla/details/Layout.js +163 -0
- package/dist/views/vanilla/details/Layout.js.map +1 -0
- package/dist/views/vanilla/details/NotFound.d.ts +8 -0
- package/dist/views/vanilla/details/NotFound.d.ts.map +1 -0
- package/dist/views/vanilla/details/NotFound.js +20 -0
- package/dist/views/vanilla/details/NotFound.js.map +1 -0
- package/dist/views/vanilla/details/index.d.ts +5 -0
- package/dist/views/vanilla/details/index.d.ts.map +1 -0
- package/dist/views/vanilla/details/index.js +5 -0
- package/dist/views/vanilla/details/index.js.map +1 -0
- package/dist/views/vanilla/details/sections.d.ts +46 -0
- package/dist/views/vanilla/details/sections.d.ts.map +1 -0
- package/dist/views/vanilla/details/sections.js +145 -0
- package/dist/views/vanilla/details/sections.js.map +1 -0
- package/dist/views/vanilla/details/views.d.ts +15 -0
- package/dist/views/vanilla/details/views.d.ts.map +1 -0
- package/dist/views/vanilla/details/views.js +534 -0
- package/dist/views/vanilla/details/views.js.map +1 -0
- package/dist/views/vanilla/index.d.ts +5 -0
- package/dist/views/vanilla/index.d.ts.map +1 -0
- package/dist/views/vanilla/index.js +5 -0
- package/dist/views/vanilla/index.js.map +1 -0
- package/package.json +53 -13
- package/dist/ui/layout.d.ts +0 -11
- package/dist/ui/layout.d.ts.map +0 -1
- package/dist/ui/layout.js +0 -69
- package/dist/ui/layout.js.map +0 -1
- package/dist/ui/pages.d.ts +0 -21
- package/dist/ui/pages.d.ts.map +0 -1
- package/dist/ui/pages.js +0 -225
- package/dist/ui/pages.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Collector, TelescopeStorage, TelescopeConfig } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Records MCP tool calls, resource reads, and prompt renders by subscribing
|
|
4
|
+
* to `@rudderjs/mcp`'s observer registry.
|
|
5
|
+
*/
|
|
6
|
+
export declare class McpCollector implements Collector {
|
|
7
|
+
private readonly storage;
|
|
8
|
+
private readonly config;
|
|
9
|
+
readonly name = "MCP Collector";
|
|
10
|
+
readonly type: "mcp";
|
|
11
|
+
constructor(storage: TelescopeStorage, config: TelescopeConfig);
|
|
12
|
+
register(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/collectors/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI/E;;;GAGG;AACH,qBAAa,YAAa,YAAW,SAAS;IAK1C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,QAAQ,CAAC,IAAI,mBAAkB;IAC/B,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAS;gBAGX,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAG,eAAe;IAGrC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAkChC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { createEntry } from '../storage.js';
|
|
2
|
+
import { batchOpts } from '../batch-context.js';
|
|
3
|
+
/**
|
|
4
|
+
* Records MCP tool calls, resource reads, and prompt renders by subscribing
|
|
5
|
+
* to `@rudderjs/mcp`'s observer registry.
|
|
6
|
+
*/
|
|
7
|
+
export class McpCollector {
|
|
8
|
+
storage;
|
|
9
|
+
config;
|
|
10
|
+
name = 'MCP Collector';
|
|
11
|
+
type = 'mcp';
|
|
12
|
+
constructor(storage, config) {
|
|
13
|
+
this.storage = storage;
|
|
14
|
+
this.config = config;
|
|
15
|
+
}
|
|
16
|
+
async register() {
|
|
17
|
+
try {
|
|
18
|
+
const mod = await import('@rudderjs/mcp/observers');
|
|
19
|
+
const { mcpObservers } = mod;
|
|
20
|
+
const storage = this.storage;
|
|
21
|
+
const threshold = this.config.slowMcpThreshold ?? 1000;
|
|
22
|
+
mcpObservers.subscribe((event) => {
|
|
23
|
+
const subject = event.kind.split('.')[0];
|
|
24
|
+
const tags = [
|
|
25
|
+
`server:${event.serverName}`,
|
|
26
|
+
`type:${subject}`,
|
|
27
|
+
`name:${event.name}`,
|
|
28
|
+
];
|
|
29
|
+
if (event.kind.endsWith('.failed'))
|
|
30
|
+
tags.push('error');
|
|
31
|
+
if (event.duration > threshold)
|
|
32
|
+
tags.push('slow');
|
|
33
|
+
storage.store(createEntry('mcp', {
|
|
34
|
+
kind: event.kind,
|
|
35
|
+
serverName: event.serverName,
|
|
36
|
+
name: event.name,
|
|
37
|
+
input: event.input,
|
|
38
|
+
output: event.output,
|
|
39
|
+
duration: event.duration,
|
|
40
|
+
error: event.error,
|
|
41
|
+
}, { tags, ...batchOpts() }));
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// @rudderjs/mcp not installed — skip
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/collectors/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C;;;GAGG;AACH,MAAM,OAAO,YAAY;IAKJ;IACA;IALV,IAAI,GAAG,eAAe,CAAA;IACtB,IAAI,GAAG,KAAc,CAAA;IAE9B,YACmB,OAAyB,EACzB,MAAwB;QADxB,YAAO,GAAP,OAAO,CAAkB;QACzB,WAAM,GAAN,MAAM,CAAkB;IACxC,CAAC;IAEJ,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAEjD,CAAA;YACD,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAA;YAE5B,MAAM,OAAO,GAAK,IAAI,CAAC,OAAO,CAAA;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAA;YAEtD,YAAY,CAAC,SAAS,CAAC,CAAC,KAAe,EAAE,EAAE;gBACzC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAmC,CAAA;gBAC1E,MAAM,IAAI,GAAa;oBACrB,UAAU,KAAK,CAAC,UAAU,EAAE;oBAC5B,QAAQ,OAAO,EAAE;oBACjB,QAAQ,KAAK,CAAC,IAAI,EAAE;iBACrB,CAAA;gBACD,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACtD,IAAI,KAAK,CAAC,QAAQ,GAAG,SAAS;oBAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAErD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE;oBAC/B,IAAI,EAAQ,KAAK,CAAC,IAAI;oBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,IAAI,EAAQ,KAAK,CAAC,IAAI;oBACtB,KAAK,EAAO,KAAK,CAAC,KAAK;oBACvB,MAAM,EAAM,KAAK,CAAC,MAAM;oBACxB,QAAQ,EAAI,KAAK,CAAC,QAAQ;oBAC1B,KAAK,EAAO,KAAK,CAAC,KAAK;iBACxB,EAAE,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -10,6 +10,12 @@ export declare class ModelCollector implements Collector {
|
|
|
10
10
|
readonly type: "model";
|
|
11
11
|
constructor(storage: TelescopeStorage);
|
|
12
12
|
register(): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Safely converts a model instance to a plain object. If the value has
|
|
15
|
+
* a `toJSON()` method (e.g. RudderJS Model), use it. Otherwise try
|
|
16
|
+
* JSON round-trip with a circular-reference guard. Falls back to
|
|
17
|
+
* `String(value)` if all else fails.
|
|
18
|
+
*/
|
|
13
19
|
private observeModel;
|
|
14
20
|
}
|
|
15
21
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/collectors/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/collectors/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9D;;;;GAIG;AACH,qBAAa,cAAe,YAAW,SAAS;IAIlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,qBAAoB;IACjC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAS;gBAEH,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB/B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CA4BrB"}
|
package/dist/collectors/model.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createEntry } from '../storage.js';
|
|
2
|
+
import { batchOpts } from '../batch-context.js';
|
|
2
3
|
/**
|
|
3
4
|
* Records model lifecycle events (created, updated, deleted) via Model.on().
|
|
4
5
|
*
|
|
@@ -25,6 +26,12 @@ export class ModelCollector {
|
|
|
25
26
|
// @rudderjs/orm not installed — skip
|
|
26
27
|
}
|
|
27
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Safely converts a model instance to a plain object. If the value has
|
|
31
|
+
* a `toJSON()` method (e.g. RudderJS Model), use it. Otherwise try
|
|
32
|
+
* JSON round-trip with a circular-reference guard. Falls back to
|
|
33
|
+
* `String(value)` if all else fails.
|
|
34
|
+
*/
|
|
28
35
|
observeModel(modelName, ModelClass) {
|
|
29
36
|
const storage = this.storage;
|
|
30
37
|
for (const event of ['created', 'updated', 'deleted']) {
|
|
@@ -34,16 +41,52 @@ export class ModelCollector {
|
|
|
34
41
|
action: event,
|
|
35
42
|
};
|
|
36
43
|
if (event === 'created' || event === 'updated') {
|
|
37
|
-
|
|
44
|
+
// Safely extract plain attributes — model instances may have
|
|
45
|
+
// circular references (e.g. Prisma relations) that blow the stack.
|
|
46
|
+
content['attributes'] = safeSerialize(args[0]);
|
|
38
47
|
}
|
|
39
48
|
else if (event === 'deleted') {
|
|
40
49
|
content['id'] = args[0];
|
|
41
50
|
}
|
|
42
51
|
storage.store(createEntry('model', content, {
|
|
43
52
|
tags: [`model:${modelName}`, `action:${event}`],
|
|
53
|
+
...batchOpts(),
|
|
44
54
|
}));
|
|
45
55
|
});
|
|
46
56
|
}
|
|
47
57
|
}
|
|
48
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Safely extract plain attributes from a model instance. Model objects
|
|
61
|
+
* may contain circular references (Prisma relations, back-references)
|
|
62
|
+
* that cause `JSON.stringify` / `createEntry` to blow the stack.
|
|
63
|
+
*/
|
|
64
|
+
function safeSerialize(value) {
|
|
65
|
+
if (value === null || value === undefined)
|
|
66
|
+
return value;
|
|
67
|
+
if (typeof value !== 'object')
|
|
68
|
+
return value;
|
|
69
|
+
// If the model has toJSON(), trust it — RudderJS Models strip hidden fields
|
|
70
|
+
if (typeof value['toJSON'] === 'function') {
|
|
71
|
+
try {
|
|
72
|
+
return value.toJSON();
|
|
73
|
+
}
|
|
74
|
+
catch { /* fall through */ }
|
|
75
|
+
}
|
|
76
|
+
// JSON round-trip with circular reference guard
|
|
77
|
+
try {
|
|
78
|
+
const seen = new WeakSet();
|
|
79
|
+
return JSON.parse(JSON.stringify(value, (_key, val) => {
|
|
80
|
+
if (typeof val === 'object' && val !== null) {
|
|
81
|
+
if (seen.has(val))
|
|
82
|
+
return '[Circular]';
|
|
83
|
+
seen.add(val);
|
|
84
|
+
}
|
|
85
|
+
return val;
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return String(value);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
49
92
|
//# sourceMappingURL=model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/collectors/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/collectors/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/collectors/notification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/collectors/notification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9D;;GAEG;AACH,qBAAa,qBAAsB,YAAW,SAAS;IAIzC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,4BAA2B;IACxC,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAS;gBAEV,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA+BhC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createEntry } from '../storage.js';
|
|
2
|
+
import { batchOpts } from '../batch-context.js';
|
|
2
3
|
/**
|
|
3
4
|
* Records notification dispatches by wrapping the ChannelRegistry's get method.
|
|
4
5
|
*/
|
|
@@ -28,7 +29,7 @@ export class NotificationCollector {
|
|
|
28
29
|
class: notif.constructor.name,
|
|
29
30
|
channel: name,
|
|
30
31
|
notifiable: n['id'] ?? notifiable.constructor.name,
|
|
31
|
-
}, { tags: [`notification:${notif.constructor.name}`, `channel:${name}`] }));
|
|
32
|
+
}, { tags: [`notification:${notif.constructor.name}`, `channel:${name}`], ...batchOpts() }));
|
|
32
33
|
},
|
|
33
34
|
};
|
|
34
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/collectors/notification.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/collectors/notification.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,qBAAqB;IAIH;IAHpB,IAAI,GAAG,wBAAwB,CAAA;IAC/B,IAAI,GAAG,cAAuB,CAAA;IAEvC,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAA;YAClD,MAAM,QAAQ,GAAG,GAAG,CAAC,eAEpB,CAAA;YAED,MAAM,OAAO,GAAO,IAAI,CAAC,OAAO,CAAA;YAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAE/C,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAY,EAAmC,EAAE;gBAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAClC,IAAI,CAAC,QAAQ;oBAAE,OAAO,QAAQ,CAAA;gBAE9B,OAAO;oBACL,KAAK,CAAC,IAAI,CAAC,UAAmB,EAAE,YAAqB;wBACnD,MAAO,QAAQ,CAAC,IAAsD,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;wBAChG,MAAM,KAAK,GAAG,YAA2E,CAAA;wBACzF,MAAM,CAAC,GAAO,UAAqC,CAAA;wBACnD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE;4BACxC,KAAK,EAAO,KAAK,CAAC,WAAW,CAAC,IAAI;4BAClC,OAAO,EAAK,IAAI;4BAChB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAK,UAAgD,CAAC,WAAW,CAAC,IAAI;yBAC1F,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;oBAC9F,CAAC;iBACqB,CAAA;YAC1B,CAAC,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/collectors/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/collectors/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI/E;;GAEG;AACH,qBAAa,cAAe,YAAW,SAAS;IAK5C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,QAAQ,CAAC,IAAI,qBAAoB;IACjC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAS;gBAGb,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAG,eAAe;IAGrC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAgChC"}
|
package/dist/collectors/query.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createEntry } from '../storage.js';
|
|
2
|
+
import { batchOpts } from '../batch-context.js';
|
|
2
3
|
/**
|
|
3
4
|
* Records database queries by hooking into the ORM's query logging.
|
|
4
5
|
*/
|
|
@@ -23,18 +24,19 @@ export class QueryCollector {
|
|
|
23
24
|
const storage = this.storage;
|
|
24
25
|
const threshold = this.config.slowQueryThreshold ?? 100;
|
|
25
26
|
adapter.onQuery((info) => {
|
|
27
|
+
const duration = Math.round(info.duration * 100) / 100;
|
|
26
28
|
const tags = [];
|
|
27
|
-
if (
|
|
29
|
+
if (duration > threshold)
|
|
28
30
|
tags.push('slow');
|
|
29
31
|
if (info.model)
|
|
30
32
|
tags.push(`model:${info.model}`);
|
|
31
33
|
storage.store(createEntry('query', {
|
|
32
34
|
sql: info.sql,
|
|
33
35
|
bindings: info.bindings,
|
|
34
|
-
duration
|
|
36
|
+
duration,
|
|
35
37
|
connection: info.connection,
|
|
36
38
|
model: info.model,
|
|
37
|
-
}, { tags }));
|
|
39
|
+
}, { tags, ...batchOpts() }));
|
|
38
40
|
});
|
|
39
41
|
}
|
|
40
42
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/collectors/query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/collectors/query.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,cAAc;IAKN;IACA;IALV,IAAI,GAAG,iBAAiB,CAAA;IACxB,IAAI,GAAG,OAAgB,CAAA;IAEhC,YACmB,OAAyB,EACzB,MAAwB;QADxB,YAAO,GAAP,OAAO,CAAkB;QACzB,WAAM,GAAN,MAAM,CAAkB;IACxC,CAAC;IAEJ,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,aAEpB,CAAA;YACD,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAAE,OAAM;YAEhC,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAA;YACrC,IAAI,CAAC,OAAO,EAAE,OAAO;gBAAE,OAAM;YAE7B,MAAM,OAAO,GAAK,IAAI,CAAC,OAAO,CAAA;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAA;YAEvD,OAAO,CAAC,OAAO,CAAC,CAAC,IAAe,EAAE,EAAE;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;gBACtD,MAAM,IAAI,GAAa,EAAE,CAAA;gBACzB,IAAI,QAAQ,GAAG,SAAS;oBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC3C,IAAI,IAAI,CAAC,KAAK;oBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;gBAEhD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE;oBACjC,GAAG,EAAS,IAAI,CAAC,GAAG;oBACpB,QAAQ,EAAI,IAAI,CAAC,QAAQ;oBACzB,QAAQ;oBACR,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,KAAK,EAAO,IAAI,CAAC,KAAK;iBACvB,EAAE,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { AppRequest, AppResponse } from '@rudderjs/contracts';
|
|
2
2
|
import type { Collector, TelescopeStorage, TelescopeConfig } from '../types.js';
|
|
3
3
|
/**
|
|
4
|
-
* Records HTTP requests — method, URL, status, duration, headers, payload
|
|
4
|
+
* Records HTTP requests — method, URL, status, duration, headers, payload,
|
|
5
|
+
* response status, IP, user-agent.
|
|
5
6
|
* Installs as global middleware via the router.
|
|
6
7
|
*/
|
|
7
8
|
export declare class RequestCollector implements Collector {
|
|
@@ -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;AAQ/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;IA2G5E,OAAO,CAAC,YAAY;IAOpB,+DAA+D;IAC/D,OAAO,CAAC,OAAO;CAShB"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { createEntry } from '../storage.js';
|
|
2
|
+
import { redactHeaders, redactFields } from '../redact.js';
|
|
3
|
+
import { setBatchId } from '../batch-context.js';
|
|
4
|
+
const DEFAULT_HIDE_HEADERS = ['authorization', 'cookie', 'set-cookie', 'x-csrf-token', 'x-api-key'];
|
|
5
|
+
const DEFAULT_HIDE_FIELDS = ['password', 'password_confirmation', 'token', 'secret'];
|
|
2
6
|
/**
|
|
3
|
-
* Records HTTP requests — method, URL, status, duration, headers, payload
|
|
7
|
+
* Records HTTP requests — method, URL, status, duration, headers, payload,
|
|
8
|
+
* response status, IP, user-agent.
|
|
4
9
|
* Installs as global middleware via the router.
|
|
5
10
|
*/
|
|
6
11
|
export class RequestCollector {
|
|
@@ -19,6 +24,8 @@ export class RequestCollector {
|
|
|
19
24
|
middleware() {
|
|
20
25
|
const storage = this.storage;
|
|
21
26
|
const ignore = this.config.ignoreRequests ?? [];
|
|
27
|
+
const hideHeaders = this.config.hideRequestHeaders ?? DEFAULT_HIDE_HEADERS;
|
|
28
|
+
const hideFields = this.config.hideRequestFields ?? DEFAULT_HIDE_FIELDS;
|
|
22
29
|
return async (req, res, next) => {
|
|
23
30
|
// Skip Vite internals, static assets, and source files
|
|
24
31
|
if (this.isAsset(req.path))
|
|
@@ -29,20 +36,87 @@ export class RequestCollector {
|
|
|
29
36
|
const start = Date.now();
|
|
30
37
|
const batchId = crypto.randomUUID();
|
|
31
38
|
req['__telescopeBatchId'] = batchId;
|
|
32
|
-
|
|
39
|
+
// Set batch context so collectors (query, cache, model) can correlate
|
|
40
|
+
setBatchId(batchId);
|
|
41
|
+
try {
|
|
42
|
+
await next();
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
setBatchId(null);
|
|
46
|
+
}
|
|
33
47
|
const duration = Date.now() - start;
|
|
34
48
|
const tags = [];
|
|
35
49
|
if (duration > (this.config.slowQueryThreshold ?? 100))
|
|
36
50
|
tags.push('slow');
|
|
51
|
+
// Extract response status from the res object
|
|
52
|
+
const status = res['statusCode'];
|
|
53
|
+
if (status && status >= 400)
|
|
54
|
+
tags.push('error');
|
|
55
|
+
// Extract IP and user-agent from request headers
|
|
56
|
+
const headers = req.headers;
|
|
57
|
+
const rawIp = req['ip'];
|
|
58
|
+
const ip = rawIp === '::1' || rawIp === '::ffff:127.0.0.1' ? '127.0.0.1' : rawIp;
|
|
59
|
+
const userAgent = headers['user-agent'];
|
|
60
|
+
const hostname = headers['host'];
|
|
61
|
+
// Response headers — Hono stores the final Response on c.res after handler runs
|
|
62
|
+
let responseHeaders;
|
|
63
|
+
try {
|
|
64
|
+
const c = res.raw;
|
|
65
|
+
if (c?.res) {
|
|
66
|
+
responseHeaders = {};
|
|
67
|
+
c.res.headers.forEach((v, k) => { responseHeaders[k] = v; });
|
|
68
|
+
responseHeaders = redactHeaders(responseHeaders, hideHeaders);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch { /* ignore — non-Hono adapters may not expose c.res */ }
|
|
72
|
+
// Session data — read from the SessionInstance if middleware attached one
|
|
73
|
+
let sessionData;
|
|
74
|
+
try {
|
|
75
|
+
const rawReq = req.raw;
|
|
76
|
+
const session = rawReq?.['__rjs_session'];
|
|
77
|
+
if (session)
|
|
78
|
+
sessionData = redactFields(session.all(), hideFields);
|
|
79
|
+
}
|
|
80
|
+
catch { /* session middleware may not be installed */ }
|
|
81
|
+
// Route metadata — stashed by server-hono's registerRoute()
|
|
82
|
+
const rawReqMeta = req.raw;
|
|
83
|
+
const routeMeta = rawReqMeta?.['__rjs_route'];
|
|
84
|
+
const viewMeta = rawReqMeta?.['__rjs_view'];
|
|
85
|
+
// Authenticated user — read from @rudderjs/auth's AsyncLocalStorage context
|
|
86
|
+
let user;
|
|
87
|
+
try {
|
|
88
|
+
const { auth } = await import('@rudderjs/auth');
|
|
89
|
+
const current = await auth().user();
|
|
90
|
+
if (current) {
|
|
91
|
+
user = {
|
|
92
|
+
id: current['id'],
|
|
93
|
+
name: current['name'],
|
|
94
|
+
email: current['email'],
|
|
95
|
+
};
|
|
96
|
+
tags.push(`user:${current['id']}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch { /* @rudderjs/auth may not be installed */ }
|
|
37
100
|
const entry = createEntry('request', {
|
|
38
101
|
method: req.method,
|
|
39
102
|
url: req.url,
|
|
40
103
|
path: req.path,
|
|
41
104
|
query: req.query,
|
|
42
|
-
headers:
|
|
43
|
-
body: req.body,
|
|
105
|
+
headers: redactHeaders(headers, hideHeaders),
|
|
106
|
+
body: redactFields(req.body, hideFields),
|
|
44
107
|
duration,
|
|
45
108
|
params: req.params,
|
|
109
|
+
status,
|
|
110
|
+
ip,
|
|
111
|
+
userAgent,
|
|
112
|
+
hostname,
|
|
113
|
+
responseHeaders,
|
|
114
|
+
session: sessionData,
|
|
115
|
+
user,
|
|
116
|
+
controller: routeMeta?.handler,
|
|
117
|
+
middleware: routeMeta?.middleware,
|
|
118
|
+
routePath: routeMeta?.path,
|
|
119
|
+
view: viewMeta,
|
|
46
120
|
}, { batchId, tags });
|
|
47
121
|
storage.store(entry);
|
|
48
122
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/collectors/request.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
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;AAErF;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAKR;IACA;IALV,IAAI,GAAG,mBAAmB,CAAA;IAC1B,IAAI,GAAG,SAAkB,CAAA;IAElC,YACmB,OAAyB,EACzB,MAAwB;QADxB,YAAO,GAAP,OAAO,CAAkB;QACzB,WAAM,GAAN,MAAM,CAAkB;IACxC,CAAC;IAEJ,QAAQ;QACN,yFAAyF;IAC3F,CAAC;IAED,yDAAyD;IACzD,UAAU;QACR,MAAM,OAAO,GAAO,IAAI,CAAC,OAAO,CAAA;QAChC,MAAM,MAAM,GAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAA;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,oBAAoB,CAAA;QAC1E,MAAM,UAAU,GAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAK,mBAAmB,CAAA;QAEzE,OAAO,KAAK,EAAE,GAAe,EAAE,GAAgB,EAAE,IAAyB,EAAE,EAAE;YAC5E,uDAAuD;YACvD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,EAAE,CAAA;YACzC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,EAAE,CAAA;YACf,CAAC;YAED,MAAM,KAAK,GAAK,IAAI,CAAC,GAAG,EAAE,CAAA;YAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAGlC;YAAC,GAA0C,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAA;YAE5E,sEAAsE;YACtE,UAAU,CAAC,OAAO,CAAC,CAAA;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,EAAE,CAAA;YACd,CAAC;oBAAS,CAAC;gBACT,UAAU,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;YACnC,MAAM,IAAI,GAAa,EAAE,CAAA;YACzB,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAEzE,8CAA8C;YAC9C,MAAM,MAAM,GAAI,GAA0C,CAAC,YAAY,CAAuB,CAAA;YAC9F,IAAI,MAAM,IAAI,MAAM,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAE/C,iDAAiD;YACjD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAkC,CAAA;YACtD,MAAM,KAAK,GAAI,GAA0C,CAAC,IAAI,CAAuB,CAAA;YACrF,MAAM,EAAE,GAAG,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAA;YAChF,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAuB,CAAA;YAC7D,MAAM,QAAQ,GAAI,OAAO,CAAC,MAAM,CAAuB,CAAA;YAEvD,gFAAgF;YAChF,IAAI,eAAmD,CAAA;YACvD,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,GAAG,CAAC,GAAqC,CAAA;gBACnD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;oBACX,eAAe,GAAG,EAAE,CAAA;oBACpB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,eAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;oBAC5D,eAAe,GAAG,aAAa,CAAC,eAAe,EAAE,WAAW,CAAuC,CAAA;gBACrG,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,qDAAqD,CAAC,CAAC;YAEjE,0EAA0E;YAC1E,IAAI,WAAgD,CAAA;YACpD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,GAAG,CAAC,GAA0C,CAAA;gBAC7D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,eAAe,CAAmD,CAAA;gBAC3F,IAAI,OAAO;oBAAE,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAA4B,CAAA;YAC/F,CAAC;YAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;YAEzD,4DAA4D;YAC5D,MAAM,UAAU,GAAG,GAAG,CAAC,GAA0C,CAAA;YACjE,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,aAAa,CAE/B,CAAA;YACb,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC,YAAY,CAE7B,CAAA;YAEb,4EAA4E;YAC5E,IAAI,IAAyC,CAAA;YAC7C,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAE7C,CAAA;gBACD,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;gBACnC,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,GAAG;wBACL,EAAE,EAAK,OAAO,CAAC,IAAI,CAAC;wBACpB,IAAI,EAAG,OAAO,CAAC,MAAM,CAAC;wBACtB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;qBACxB,CAAA;oBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,yCAAyC,CAAC,CAAC;YAErD,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE;gBACnC,MAAM,EAAK,GAAG,CAAC,MAAM;gBACrB,GAAG,EAAQ,GAAG,CAAC,GAAG;gBAClB,IAAI,EAAO,GAAG,CAAC,IAAI;gBACnB,KAAK,EAAM,GAAG,CAAC,KAAK;gBACpB,OAAO,EAAI,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC;gBAC9C,IAAI,EAAO,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;gBAC7C,QAAQ;gBACR,MAAM,EAAK,GAAG,CAAC,MAAM;gBACrB,MAAM;gBACN,EAAE;gBACF,SAAS;gBACT,QAAQ;gBACR,eAAe;gBACf,OAAO,EAAK,WAAW;gBACvB,IAAI;gBACJ,UAAU,EAAE,SAAS,EAAE,OAAO;gBAC9B,UAAU,EAAE,SAAS,EAAE,UAAU;gBACjC,SAAS,EAAG,SAAS,EAAE,IAAI;gBAC3B,IAAI,EAAQ,QAAQ;aACrB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAErB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC,CAAA;IACH,CAAC;IAEO,YAAY,CAAC,IAAY,EAAE,QAAkB;QACnD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACvB,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3D,OAAO,IAAI,KAAK,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,+DAA+D;IACvD,OAAO,CAAC,IAAY;QAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAa,OAAO,IAAI,CAAA,CAAE,sDAAsD;QACzG,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;YAAE,OAAO,IAAI,CAAA;QACjD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAU,OAAO,IAAI,CAAA,CAAE,iCAAiC;QACpF,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAQ,OAAO,IAAI,CAAA,CAAE,+BAA+B;QAClF,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAQ,OAAO,IAAI,CAAA,CAAE,aAAa;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;QAC3C,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,CAAuB,oCAAoC;IACzF,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ServiceProvider
|
|
1
|
+
import { ServiceProvider } from '@rudderjs/core';
|
|
2
2
|
import { type TelescopeConfig, type TelescopeStorage, type TelescopeEntry, type EntryType, type Collector, type ListOptions } from './types.js';
|
|
3
3
|
export type { TelescopeConfig, TelescopeStorage, TelescopeEntry, EntryType, Collector, ListOptions };
|
|
4
4
|
export { MemoryStorage, SqliteStorage, createEntry } from './storage.js';
|
|
@@ -13,12 +13,23 @@ export { EventCollector } from './collectors/event.js';
|
|
|
13
13
|
export { CacheCollector } from './collectors/cache.js';
|
|
14
14
|
export { ScheduleCollector } from './collectors/schedule.js';
|
|
15
15
|
export { ModelCollector } from './collectors/model.js';
|
|
16
|
+
export { CommandCollector } from './collectors/command.js';
|
|
17
|
+
export { BroadcastCollector } from './collectors/broadcast.js';
|
|
18
|
+
export { LiveCollector } from './collectors/live.js';
|
|
19
|
+
export { HttpCollector } from './collectors/http.js';
|
|
20
|
+
export { GateCollector } from './collectors/gate.js';
|
|
21
|
+
export { DumpCollector } from './collectors/dump.js';
|
|
22
|
+
export { AiCollector } from './collectors/ai.js';
|
|
23
|
+
export { McpCollector } from './collectors/mcp.js';
|
|
16
24
|
export declare class TelescopeRegistry {
|
|
17
25
|
private static storage;
|
|
18
26
|
static set(storage: TelescopeStorage): void;
|
|
19
27
|
static get(): TelescopeStorage | null;
|
|
20
28
|
/** @internal — clears the registered storage. Used for testing. */
|
|
21
29
|
static reset(): void;
|
|
30
|
+
static get recording(): boolean;
|
|
31
|
+
static set recording(v: boolean);
|
|
32
|
+
static toggleRecording(): boolean;
|
|
22
33
|
}
|
|
23
34
|
export declare class Telescope {
|
|
24
35
|
private static store;
|
|
@@ -38,5 +49,9 @@ export declare class Telescope {
|
|
|
38
49
|
* import { telescope } from '@rudderjs/telescope'
|
|
39
50
|
* export default [..., telescope(configs.telescope), ...]
|
|
40
51
|
*/
|
|
41
|
-
export declare
|
|
52
|
+
export declare class TelescopeProvider extends ServiceProvider {
|
|
53
|
+
register(): void;
|
|
54
|
+
boot(): Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
export { registerTelescopeRoutes, type RegisterTelescopeRoutesOptions } from './routes.js';
|
|
42
57
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|