@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.
Files changed (150) hide show
  1. package/README.md +101 -27
  2. package/dist/api/routes.d.ts +10 -6
  3. package/dist/api/routes.d.ts.map +1 -1
  4. package/dist/api/routes.js +42 -54
  5. package/dist/api/routes.js.map +1 -1
  6. package/dist/batch-context.d.ts +19 -0
  7. package/dist/batch-context.d.ts.map +1 -0
  8. package/dist/batch-context.js +24 -0
  9. package/dist/batch-context.js.map +1 -0
  10. package/dist/collectors/ai.d.ts +13 -0
  11. package/dist/collectors/ai.d.ts.map +1 -0
  12. package/dist/collectors/ai.js +61 -0
  13. package/dist/collectors/ai.js.map +1 -0
  14. package/dist/collectors/broadcast.d.ts +10 -0
  15. package/dist/collectors/broadcast.d.ts.map +1 -0
  16. package/dist/collectors/broadcast.js +46 -0
  17. package/dist/collectors/broadcast.js.map +1 -0
  18. package/dist/collectors/cache.d.ts.map +1 -1
  19. package/dist/collectors/cache.js +5 -4
  20. package/dist/collectors/cache.js.map +1 -1
  21. package/dist/collectors/command.d.ts +21 -0
  22. package/dist/collectors/command.d.ts.map +1 -0
  23. package/dist/collectors/command.js +55 -0
  24. package/dist/collectors/command.js.map +1 -0
  25. package/dist/collectors/dump.d.ts +17 -0
  26. package/dist/collectors/dump.d.ts.map +1 -0
  27. package/dist/collectors/dump.js +37 -0
  28. package/dist/collectors/dump.js.map +1 -0
  29. package/dist/collectors/event.d.ts.map +1 -1
  30. package/dist/collectors/event.js +2 -1
  31. package/dist/collectors/event.js.map +1 -1
  32. package/dist/collectors/exception.d.ts +1 -0
  33. package/dist/collectors/exception.d.ts.map +1 -1
  34. package/dist/collectors/exception.js +23 -4
  35. package/dist/collectors/exception.js.map +1 -1
  36. package/dist/collectors/gate.d.ts +18 -0
  37. package/dist/collectors/gate.d.ts.map +1 -0
  38. package/dist/collectors/gate.js +49 -0
  39. package/dist/collectors/gate.js.map +1 -0
  40. package/dist/collectors/http.d.ts +21 -0
  41. package/dist/collectors/http.d.ts.map +1 -0
  42. package/dist/collectors/http.js +64 -0
  43. package/dist/collectors/http.js.map +1 -0
  44. package/dist/collectors/job.d.ts.map +1 -1
  45. package/dist/collectors/job.js +3 -2
  46. package/dist/collectors/job.js.map +1 -1
  47. package/dist/collectors/live.d.ts +13 -0
  48. package/dist/collectors/live.d.ts.map +1 -0
  49. package/dist/collectors/live.js +60 -0
  50. package/dist/collectors/live.js.map +1 -0
  51. package/dist/collectors/log.d.ts.map +1 -1
  52. package/dist/collectors/log.js +2 -1
  53. package/dist/collectors/log.js.map +1 -1
  54. package/dist/collectors/mail.d.ts.map +1 -1
  55. package/dist/collectors/mail.js +2 -1
  56. package/dist/collectors/mail.js.map +1 -1
  57. package/dist/collectors/mcp.d.ts +14 -0
  58. package/dist/collectors/mcp.d.ts.map +1 -0
  59. package/dist/collectors/mcp.js +49 -0
  60. package/dist/collectors/mcp.js.map +1 -0
  61. package/dist/collectors/model.d.ts +6 -0
  62. package/dist/collectors/model.d.ts.map +1 -1
  63. package/dist/collectors/model.js +44 -1
  64. package/dist/collectors/model.js.map +1 -1
  65. package/dist/collectors/notification.d.ts.map +1 -1
  66. package/dist/collectors/notification.js +2 -1
  67. package/dist/collectors/notification.js.map +1 -1
  68. package/dist/collectors/query.d.ts.map +1 -1
  69. package/dist/collectors/query.js +5 -3
  70. package/dist/collectors/query.js.map +1 -1
  71. package/dist/collectors/request.d.ts +2 -1
  72. package/dist/collectors/request.d.ts.map +1 -1
  73. package/dist/collectors/request.js +78 -4
  74. package/dist/collectors/request.js.map +1 -1
  75. package/dist/index.d.ts +17 -2
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +152 -95
  78. package/dist/index.js.map +1 -1
  79. package/dist/redact.d.ts +25 -0
  80. package/dist/redact.d.ts.map +1 -0
  81. package/dist/redact.js +55 -0
  82. package/dist/redact.js.map +1 -0
  83. package/dist/routes.d.ts +22 -0
  84. package/dist/routes.d.ts.map +1 -0
  85. package/dist/routes.js +105 -0
  86. package/dist/routes.js.map +1 -0
  87. package/dist/storage.d.ts.map +1 -1
  88. package/dist/storage.js +13 -0
  89. package/dist/storage.js.map +1 -1
  90. package/dist/types.d.ts +32 -1
  91. package/dist/types.d.ts.map +1 -1
  92. package/dist/types.js +13 -0
  93. package/dist/types.js.map +1 -1
  94. package/dist/views/vanilla/Dashboard.d.ts +10 -0
  95. package/dist/views/vanilla/Dashboard.d.ts.map +1 -0
  96. package/dist/views/vanilla/Dashboard.js +48 -0
  97. package/dist/views/vanilla/Dashboard.js.map +1 -0
  98. package/dist/views/vanilla/EntryList.d.ts +29 -0
  99. package/dist/views/vanilla/EntryList.d.ts.map +1 -0
  100. package/dist/views/vanilla/EntryList.js +172 -0
  101. package/dist/views/vanilla/EntryList.js.map +1 -0
  102. package/dist/views/vanilla/Layout.d.ts +25 -0
  103. package/dist/views/vanilla/Layout.d.ts.map +1 -0
  104. package/dist/views/vanilla/Layout.js +225 -0
  105. package/dist/views/vanilla/Layout.js.map +1 -0
  106. package/dist/views/vanilla/_html.d.ts +27 -0
  107. package/dist/views/vanilla/_html.d.ts.map +1 -0
  108. package/dist/views/vanilla/_html.js +55 -0
  109. package/dist/views/vanilla/_html.js.map +1 -0
  110. package/dist/views/vanilla/columns.d.ts +20 -0
  111. package/dist/views/vanilla/columns.d.ts.map +1 -0
  112. package/dist/views/vanilla/columns.js +181 -0
  113. package/dist/views/vanilla/columns.js.map +1 -0
  114. package/dist/views/vanilla/details/Batch.d.ts +14 -0
  115. package/dist/views/vanilla/details/Batch.d.ts.map +1 -0
  116. package/dist/views/vanilla/details/Batch.js +120 -0
  117. package/dist/views/vanilla/details/Batch.js.map +1 -0
  118. package/dist/views/vanilla/details/Layout.d.ts +21 -0
  119. package/dist/views/vanilla/details/Layout.d.ts.map +1 -0
  120. package/dist/views/vanilla/details/Layout.js +163 -0
  121. package/dist/views/vanilla/details/Layout.js.map +1 -0
  122. package/dist/views/vanilla/details/NotFound.d.ts +8 -0
  123. package/dist/views/vanilla/details/NotFound.d.ts.map +1 -0
  124. package/dist/views/vanilla/details/NotFound.js +20 -0
  125. package/dist/views/vanilla/details/NotFound.js.map +1 -0
  126. package/dist/views/vanilla/details/index.d.ts +5 -0
  127. package/dist/views/vanilla/details/index.d.ts.map +1 -0
  128. package/dist/views/vanilla/details/index.js +5 -0
  129. package/dist/views/vanilla/details/index.js.map +1 -0
  130. package/dist/views/vanilla/details/sections.d.ts +46 -0
  131. package/dist/views/vanilla/details/sections.d.ts.map +1 -0
  132. package/dist/views/vanilla/details/sections.js +145 -0
  133. package/dist/views/vanilla/details/sections.js.map +1 -0
  134. package/dist/views/vanilla/details/views.d.ts +15 -0
  135. package/dist/views/vanilla/details/views.d.ts.map +1 -0
  136. package/dist/views/vanilla/details/views.js +534 -0
  137. package/dist/views/vanilla/details/views.js.map +1 -0
  138. package/dist/views/vanilla/index.d.ts +5 -0
  139. package/dist/views/vanilla/index.d.ts.map +1 -0
  140. package/dist/views/vanilla/index.js +5 -0
  141. package/dist/views/vanilla/index.js.map +1 -0
  142. package/package.json +53 -13
  143. package/dist/ui/layout.d.ts +0 -11
  144. package/dist/ui/layout.d.ts.map +0 -1
  145. package/dist/ui/layout.js +0 -69
  146. package/dist/ui/layout.js.map +0 -1
  147. package/dist/ui/pages.d.ts +0 -21
  148. package/dist/ui/pages.d.ts.map +0 -1
  149. package/dist/ui/pages.js +0 -225
  150. package/dist/ui/pages.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ import type { Collector, TelescopeStorage } from '../types.js';
2
+ /**
3
+ * Records every `rudder` CLI invocation by subscribing to the
4
+ * `commandObservers` registry exported from `@rudderjs/rudder`. The CLI
5
+ * runner emits one observation per command (success or failure) including
6
+ * name, parsed args/opts, duration, exit code, and any thrown error.
7
+ *
8
+ * Self-contained: no app middleware, no router involvement. The collector
9
+ * just subscribes once at boot. If `@rudderjs/rudder` is not installed
10
+ * (impossible in practice since telescope depends on it transitively),
11
+ * the import quietly fails and no commands are recorded.
12
+ */
13
+ export declare class CommandCollector implements Collector {
14
+ private readonly storage;
15
+ readonly name = "Command Collector";
16
+ readonly type: "command";
17
+ constructor(storage: TelescopeStorage);
18
+ register(): Promise<void>;
19
+ private record;
20
+ }
21
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/collectors/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAc9D;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAIpC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,uBAAsB;IACnC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAS;gBAEL,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,OAAO,CAAC,MAAM;CAyBf"}
@@ -0,0 +1,55 @@
1
+ import { createEntry } from '../storage.js';
2
+ /**
3
+ * Records every `rudder` CLI invocation by subscribing to the
4
+ * `commandObservers` registry exported from `@rudderjs/rudder`. The CLI
5
+ * runner emits one observation per command (success or failure) including
6
+ * name, parsed args/opts, duration, exit code, and any thrown error.
7
+ *
8
+ * Self-contained: no app middleware, no router involvement. The collector
9
+ * just subscribes once at boot. If `@rudderjs/rudder` is not installed
10
+ * (impossible in practice since telescope depends on it transitively),
11
+ * the import quietly fails and no commands are recorded.
12
+ */
13
+ export class CommandCollector {
14
+ storage;
15
+ name = 'Command Collector';
16
+ type = 'command';
17
+ constructor(storage) {
18
+ this.storage = storage;
19
+ }
20
+ async register() {
21
+ try {
22
+ const { commandObservers } = await import('@rudderjs/rudder');
23
+ commandObservers.subscribe((obs) => this.record(obs));
24
+ }
25
+ catch {
26
+ // @rudderjs/rudder not available — skip
27
+ }
28
+ }
29
+ record(obs) {
30
+ const tags = [
31
+ `source:${obs.source}`,
32
+ `status:${obs.exitCode === 0 ? 'success' : 'failed'}`,
33
+ ];
34
+ if (obs.error)
35
+ tags.push('error');
36
+ if (obs.exitCode === 130)
37
+ tags.push('cancelled');
38
+ const content = {
39
+ name: obs.name,
40
+ args: obs.args,
41
+ opts: obs.opts,
42
+ duration: obs.duration,
43
+ exitCode: obs.exitCode,
44
+ source: obs.source,
45
+ };
46
+ if (obs.error) {
47
+ content['error'] = {
48
+ message: obs.error.message,
49
+ stack: obs.error.stack,
50
+ };
51
+ }
52
+ this.storage.store(createEntry('command', content, { tags }));
53
+ }
54
+ }
55
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/collectors/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAa3C;;;;;;;;;;GAUG;AACH,MAAM,OAAO,gBAAgB;IAIE;IAHpB,IAAI,GAAG,mBAAmB,CAAA;IAC1B,IAAI,GAAG,SAAkB,CAAA;IAElC,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAE3D,CAAA;YACD,gBAAgB,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,GAAuB;QACpC,MAAM,IAAI,GAAa;YACrB,UAAU,GAAG,CAAC,MAAM,EAAE;YACtB,UAAU,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;SACtD,CAAA;QACD,IAAI,GAAG,CAAC,KAAK;YAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxC,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAEhD,MAAM,OAAO,GAA4B;YACvC,IAAI,EAAM,GAAG,CAAC,IAAI;YAClB,IAAI,EAAM,GAAG,CAAC,IAAI;YAClB,IAAI,EAAM,GAAG,CAAC,IAAI;YAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAI,GAAG,CAAC,MAAM;SACrB,CAAA;QACD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,CAAC,OAAO,CAAC,GAAG;gBACjB,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO;gBAC1B,KAAK,EAAI,GAAG,CAAC,KAAK,CAAC,KAAK;aACzB,CAAA;QACH,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC/D,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { Collector, TelescopeStorage } from '../types.js';
2
+ /**
3
+ * Records `dump()` and `dd()` calls by subscribing to the
4
+ * `dumpObservers` registry exported from `@rudderjs/support/dump-observers`.
5
+ * Each invocation becomes a `dump` entry in telescope.
6
+ *
7
+ * `dd()` entries are tagged `fatal` since `dd` terminates the process.
8
+ */
9
+ export declare class DumpCollector implements Collector {
10
+ private readonly storage;
11
+ readonly name = "Dump Collector";
12
+ readonly type: "dump";
13
+ constructor(storage: TelescopeStorage);
14
+ register(): Promise<void>;
15
+ private record;
16
+ }
17
+ //# sourceMappingURL=dump.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dump.d.ts","sourceRoot":"","sources":["../../src/collectors/dump.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAS9D;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,SAAS;IAIjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,oBAAmB;IAChC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAS;gBAEF,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,OAAO,CAAC,MAAM;CAWf"}
@@ -0,0 +1,37 @@
1
+ import { createEntry } from '../storage.js';
2
+ /**
3
+ * Records `dump()` and `dd()` calls by subscribing to the
4
+ * `dumpObservers` registry exported from `@rudderjs/support/dump-observers`.
5
+ * Each invocation becomes a `dump` entry in telescope.
6
+ *
7
+ * `dd()` entries are tagged `fatal` since `dd` terminates the process.
8
+ */
9
+ export class DumpCollector {
10
+ storage;
11
+ name = 'Dump Collector';
12
+ type = 'dump';
13
+ constructor(storage) {
14
+ this.storage = storage;
15
+ }
16
+ async register() {
17
+ try {
18
+ const { dumpObservers } = await import('@rudderjs/support/dump-observers');
19
+ dumpObservers.subscribe((event) => this.record(event));
20
+ }
21
+ catch {
22
+ // @rudderjs/support/dump-observers not available — skip
23
+ }
24
+ }
25
+ record(event) {
26
+ const tags = [`method:${event.method}`];
27
+ if (event.method === 'dd')
28
+ tags.push('fatal');
29
+ this.storage.store(createEntry('dump', {
30
+ args: event.args,
31
+ method: event.method,
32
+ caller: event.caller,
33
+ count: event.args.length,
34
+ }, { tags }));
35
+ }
36
+ }
37
+ //# sourceMappingURL=dump.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dump.js","sourceRoot":"","sources":["../../src/collectors/dump.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAQ3C;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IAIK;IAHpB,IAAI,GAAG,gBAAgB,CAAA;IACvB,IAAI,GAAG,MAAe,CAAA;IAE/B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAExE,CAAA;YACD,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;QAC1D,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAgB;QAC7B,MAAM,IAAI,GAAa,CAAC,UAAU,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE7C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE;YACrC,IAAI,EAAI,KAAK,CAAC,IAAI;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAG,KAAK,CAAC,IAAI,CAAC,MAAM;SAC1B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACf,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/collectors/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG9D;;GAEG;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,OAAO,CAAC,MAAM;CAaf"}
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/collectors/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9D;;GAEG;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,OAAO,CAAC,MAAM;CAaf"}
@@ -1,4 +1,5 @@
1
1
  import { createEntry } from '../storage.js';
2
+ import { batchOpts } from '../batch-context.js';
2
3
  /**
3
4
  * Records dispatched events by registering a wildcard ('*') listener.
4
5
  */
@@ -30,7 +31,7 @@ export class EventCollector {
30
31
  payload: event && typeof event === 'object'
31
32
  ? JSON.parse(JSON.stringify(event))
32
33
  : { value: event },
33
- }, { tags: [`event:${name}`] }));
34
+ }, { tags: [`event:${name}`], ...batchOpts() }));
34
35
  }
35
36
  }
36
37
  //# sourceMappingURL=event.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/collectors/event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,cAAc;IAII;IAHpB,IAAI,GAAG,iBAAiB,CAAA;IACxB,IAAI,GAAG,OAAgB,CAAA;IAEhC,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAInD,CAAA;YAED,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACvB,MAAM,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aAC/C,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,6CAA6C;QAC/C,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAc;QAC3B,MAAM,IAAI,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QAEpF,+CAA+C;QAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAM;QAExC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE;YACtC,IAAI;YACJ,OAAO,EAAE,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBACzC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;SACrB,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAClC,CAAC;CACF"}
1
+ {"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/collectors/event.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;IAII;IAHpB,IAAI,GAAG,iBAAiB,CAAA;IACxB,IAAI,GAAG,OAAgB,CAAA;IAEhC,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAInD,CAAA;YAED,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACvB,MAAM,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aAC/C,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,6CAA6C;QAC/C,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAc;QAC3B,MAAM,IAAI,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QAEpF,+CAA+C;QAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAM;QAExC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE;YACtC,IAAI;YACJ,OAAO,EAAE,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBACzC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;SACrB,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;IAClD,CAAC;CACF"}
@@ -6,6 +6,7 @@ export declare class ExceptionCollector implements Collector {
6
6
  private readonly storage;
7
7
  readonly name = "Exception Collector";
8
8
  readonly type: "exception";
9
+ private _recording;
9
10
  constructor(storage: TelescopeStorage);
10
11
  register(): Promise<void>;
11
12
  private record;
@@ -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;AAG9D;;GAEG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAItC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,yBAAwB;IACrC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAS;gBAEP,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB/B,OAAO,CAAC,MAAM;CAWf"}
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"}
@@ -1,4 +1,5 @@
1
1
  import { createEntry } from '../storage.js';
2
+ import { batchOpts } from '../batch-context.js';
2
3
  /**
3
4
  * Records exceptions by wrapping the global exception reporter.
4
5
  */
@@ -6,17 +7,35 @@ export class ExceptionCollector {
6
7
  storage;
7
8
  name = 'Exception Collector';
8
9
  type = 'exception';
10
+ _recording = false;
9
11
  constructor(storage) {
10
12
  this.storage = storage;
11
13
  }
12
14
  async register() {
13
15
  try {
14
16
  const { setExceptionReporter, report } = await import('@rudderjs/core');
15
- // Chain: record the exception, then forward to the previous reporter
17
+ // Chain: record the exception, then forward to the previous reporter.
18
+ // The _recording guard stays ON through both record() and previousReport()
19
+ // to prevent re-entry — the framework's error handler may call report()
20
+ // again which re-enters this wrapper.
16
21
  const previousReport = report;
17
22
  setExceptionReporter((err) => {
18
- this.record(err);
19
- previousReport(err);
23
+ if (this._recording)
24
+ return;
25
+ this._recording = true;
26
+ try {
27
+ this.record(err);
28
+ }
29
+ catch {
30
+ // Recording failed — swallow to prevent cascading
31
+ }
32
+ try {
33
+ previousReport(err);
34
+ }
35
+ catch {
36
+ // Previous reporter failed — swallow
37
+ }
38
+ this._recording = false;
20
39
  });
21
40
  }
22
41
  catch {
@@ -32,7 +51,7 @@ export class ExceptionCollector {
32
51
  class: isError ? err.constructor.name : 'Unknown',
33
52
  message: isError ? err.message : String(err),
34
53
  stack: isError && err.stack ? err.stack.split('\n').map(l => l.trim()) : [],
35
- }, { tags, ...(isError ? { familyHash: err.constructor.name } : {}) }));
54
+ }, { tags, ...batchOpts(), ...(isError ? { familyHash: err.constructor.name } : {}) }));
36
55
  }
37
56
  }
38
57
  //# sourceMappingURL=exception.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exception.js","sourceRoot":"","sources":["../../src/collectors/exception.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAIA;IAHpB,IAAI,GAAG,qBAAqB,CAAA;IAC5B,IAAI,GAAG,WAAoB,CAAA;IAEpC,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,qEAAqE;YACrE,MAAM,cAAc,GAAG,MAAM,CAAA;YAC7B,oBAAoB,CAAC,CAAC,GAAY,EAAE,EAAE;gBACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAChB,cAAc,CAAC,GAAG,CAAC,CAAA;YACrB,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,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACzE,CAAC;CACF"}
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"}
@@ -0,0 +1,18 @@
1
+ import type { Collector, TelescopeStorage } from '../types.js';
2
+ /**
3
+ * Records authorization decisions by subscribing to the
4
+ * `gateObservers` registry exported from `@rudderjs/auth/gate-observers`.
5
+ * Every `Gate.allows()`, `Gate.denies()`, and `Gate.authorize()` call
6
+ * becomes a `gate` entry in telescope.
7
+ *
8
+ * If `@rudderjs/auth` is not installed, the collector silently skips.
9
+ */
10
+ export declare class GateCollector implements Collector {
11
+ private readonly storage;
12
+ readonly name = "Gate Collector";
13
+ readonly type: "gate";
14
+ constructor(storage: TelescopeStorage);
15
+ register(): Promise<void>;
16
+ private record;
17
+ }
18
+ //# sourceMappingURL=gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/collectors/gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAc9D;;;;;;;GAOG;AACH,qBAAa,aAAc,YAAW,SAAS;IAIjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,oBAAmB;IAChC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAS;gBAEF,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,OAAO,CAAC,MAAM;CAmBf"}
@@ -0,0 +1,49 @@
1
+ import { createEntry } from '../storage.js';
2
+ import { batchOpts } from '../batch-context.js';
3
+ /**
4
+ * Records authorization decisions by subscribing to the
5
+ * `gateObservers` registry exported from `@rudderjs/auth/gate-observers`.
6
+ * Every `Gate.allows()`, `Gate.denies()`, and `Gate.authorize()` call
7
+ * becomes a `gate` entry in telescope.
8
+ *
9
+ * If `@rudderjs/auth` is not installed, the collector silently skips.
10
+ */
11
+ export class GateCollector {
12
+ storage;
13
+ name = 'Gate Collector';
14
+ type = 'gate';
15
+ constructor(storage) {
16
+ this.storage = storage;
17
+ }
18
+ async register() {
19
+ try {
20
+ const { gateObservers } = await import('@rudderjs/auth/gate-observers');
21
+ gateObservers.subscribe((event) => this.record(event));
22
+ }
23
+ catch {
24
+ // @rudderjs/auth not installed — skip
25
+ }
26
+ }
27
+ record(event) {
28
+ const tags = [
29
+ event.allowed ? 'allowed' : 'denied',
30
+ `via:${event.resolvedVia}`,
31
+ ];
32
+ if (event.policy)
33
+ tags.push(`policy:${event.policy}`);
34
+ if (event.model)
35
+ tags.push(`model:${event.model}`);
36
+ if (event.duration > 50)
37
+ tags.push('slow');
38
+ this.storage.store(createEntry('gate', {
39
+ ability: event.ability,
40
+ userId: event.userId,
41
+ allowed: event.allowed,
42
+ resolvedVia: event.resolvedVia,
43
+ policy: event.policy,
44
+ model: event.model,
45
+ duration: event.duration,
46
+ }, { tags, ...batchOpts() }));
47
+ }
48
+ }
49
+ //# sourceMappingURL=gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/collectors/gate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAY/C;;;;;;;GAOG;AACH,MAAM,OAAO,aAAa;IAIK;IAHpB,IAAI,GAAG,gBAAgB,CAAA;IACvB,IAAI,GAAG,MAAe,CAAA;IAE/B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAErE,CAAA;YACD,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAgB;QAC7B,MAAM,IAAI,GAAa;YACrB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;YACpC,OAAO,KAAK,CAAC,WAAW,EAAE;SAC3B,CAAA;QACD,IAAI,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;QACrD,IAAI,KAAK,CAAC,KAAK;YAAG,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QACnD,IAAI,KAAK,CAAC,QAAQ,GAAG,EAAE;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE;YACrC,OAAO,EAAM,KAAK,CAAC,OAAO;YAC1B,MAAM,EAAO,KAAK,CAAC,MAAM;YACzB,OAAO,EAAM,KAAK,CAAC,OAAO;YAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAO,KAAK,CAAC,MAAM;YACzB,KAAK,EAAQ,KAAK,CAAC,KAAK;YACxB,QAAQ,EAAK,KAAK,CAAC,QAAQ;SAC5B,EAAE,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;IAC/B,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ import type { Collector, TelescopeStorage } from '../types.js';
2
+ /**
3
+ * Records outgoing HTTP requests made through `@rudderjs/http` by
4
+ * subscribing to the `httpObservers` registry. Each completed or
5
+ * failed request becomes an `http` entry in telescope.
6
+ *
7
+ * Only captures traffic routed through the framework's HTTP client
8
+ * (`Http.get()`, `Http.post()`, etc.) — raw `fetch()` calls from
9
+ * third-party libraries are not intercepted. A global fetch wrapper
10
+ * is a separate future effort.
11
+ */
12
+ export declare class HttpCollector implements Collector {
13
+ private readonly storage;
14
+ private readonly hideHeaders;
15
+ readonly name = "HTTP Client Collector";
16
+ readonly type: "http";
17
+ constructor(storage: TelescopeStorage, hideHeaders?: string[]);
18
+ register(): Promise<void>;
19
+ private record;
20
+ }
21
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/collectors/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAmB9D;;;;;;;;;GASG;AACH,qBAAa,aAAc,YAAW,SAAS;IAK3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAL9B,QAAQ,CAAC,IAAI,2BAA0B;IACvC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAS;gBAGZ,OAAO,EAAE,gBAAgB,EACzB,WAAW,GAAE,MAAM,EAA2E;IAG3G,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,OAAO,CAAC,MAAM;CAgCf"}
@@ -0,0 +1,64 @@
1
+ import { createEntry } from '../storage.js';
2
+ import { redactHeaders } from '../redact.js';
3
+ import { batchOpts } from '../batch-context.js';
4
+ /**
5
+ * Records outgoing HTTP requests made through `@rudderjs/http` by
6
+ * subscribing to the `httpObservers` registry. Each completed or
7
+ * failed request becomes an `http` entry in telescope.
8
+ *
9
+ * Only captures traffic routed through the framework's HTTP client
10
+ * (`Http.get()`, `Http.post()`, etc.) — raw `fetch()` calls from
11
+ * third-party libraries are not intercepted. A global fetch wrapper
12
+ * is a separate future effort.
13
+ */
14
+ export class HttpCollector {
15
+ storage;
16
+ hideHeaders;
17
+ name = 'HTTP Client Collector';
18
+ type = 'http';
19
+ constructor(storage, hideHeaders = ['authorization', 'cookie', 'set-cookie', 'x-csrf-token', 'x-api-key']) {
20
+ this.storage = storage;
21
+ this.hideHeaders = hideHeaders;
22
+ }
23
+ async register() {
24
+ try {
25
+ const { httpObservers } = await import('@rudderjs/http/observers');
26
+ httpObservers.subscribe((event) => this.record(event));
27
+ }
28
+ catch {
29
+ // @rudderjs/http not installed — skip
30
+ }
31
+ }
32
+ record(event) {
33
+ const tags = [`kind:${event.kind}`];
34
+ if (event.kind === 'request.completed' && event.status != null) {
35
+ tags.push(`status:${event.status}`);
36
+ if (event.status >= 400)
37
+ tags.push('error');
38
+ }
39
+ if (event.kind === 'request.failed')
40
+ tags.push('error');
41
+ if (event.duration > 1000)
42
+ tags.push('slow');
43
+ // Redact sensitive headers before storing
44
+ const content = {
45
+ kind: event.kind,
46
+ method: event.method,
47
+ url: event.url,
48
+ duration: event.duration,
49
+ reqHeaders: redactHeaders(event.reqHeaders, this.hideHeaders),
50
+ reqBody: event.reqBody,
51
+ };
52
+ if (event.kind === 'request.completed') {
53
+ content['status'] = event.status;
54
+ content['resHeaders'] = redactHeaders(event.resHeaders, this.hideHeaders);
55
+ content['resBody'] = event.resBody;
56
+ content['resSize'] = event.resSize;
57
+ }
58
+ if (event.kind === 'request.failed') {
59
+ content['error'] = event.error;
60
+ }
61
+ this.storage.store(createEntry('http', content, { tags, ...batchOpts() }));
62
+ }
63
+ }
64
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/collectors/http.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAgB/C;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAa;IAKL;IACA;IALV,IAAI,GAAG,uBAAuB,CAAA;IAC9B,IAAI,GAAG,MAAe,CAAA;IAE/B,YACmB,OAAyB,EACzB,cAAwB,CAAC,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,CAAC;QAD9F,YAAO,GAAP,OAAO,CAAkB;QACzB,gBAAW,GAAX,WAAW,CAAmF;IAC9G,CAAC;IAEJ,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAEhE,CAAA;YACD,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAgB;QAC7B,MAAM,IAAI,GAAa,CAAC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAE7C,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;YACnC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC7C,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACvD,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE5C,0CAA0C;QAC1C,MAAM,OAAO,GAA4B;YACvC,IAAI,EAAQ,KAAK,CAAC,IAAI;YACtB,MAAM,EAAM,KAAK,CAAC,MAAM;YACxB,GAAG,EAAS,KAAK,CAAC,GAAG;YACrB,QAAQ,EAAI,KAAK,CAAC,QAAQ;YAC1B,UAAU,EAAE,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;YAC7D,OAAO,EAAK,KAAK,CAAC,OAAO;SAC1B,CAAA;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACvC,OAAO,CAAC,QAAQ,CAAC,GAAO,KAAK,CAAC,MAAM,CAAA;YACpC,OAAO,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;YACzE,OAAO,CAAC,SAAS,CAAC,GAAM,KAAK,CAAC,OAAO,CAAA;YACrC,OAAO,CAAC,SAAS,CAAC,GAAM,KAAK,CAAC,OAAO,CAAA;QACvC,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACpC,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAA;QAChC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;IAC5E,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../src/collectors/job.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG9D;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAIhC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,mBAAkB;IAC/B,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAS;gBAED,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAuChC"}
1
+ {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../src/collectors/job.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9D;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAIhC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,mBAAkB;IAC/B,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAS;gBAED,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAuChC"}
@@ -1,4 +1,5 @@
1
1
  import { createEntry } from '../storage.js';
2
+ import { batchOpts } from '../batch-context.js';
2
3
  /**
3
4
  * Records queue job dispatches by wrapping the QueueRegistry adapter's dispatch method.
4
5
  */
@@ -30,7 +31,7 @@ export class JobCollector {
30
31
  status: 'dispatched',
31
32
  duration,
32
33
  payload: JSON.parse(JSON.stringify(job)),
33
- }, { tags: [`job:${j.constructor.name}`, 'status:dispatched'] }));
34
+ }, { tags: [`job:${j.constructor.name}`, 'status:dispatched'], ...batchOpts() }));
34
35
  }
35
36
  catch (err) {
36
37
  const duration = Date.now() - start;
@@ -40,7 +41,7 @@ export class JobCollector {
40
41
  status: 'failed',
41
42
  duration,
42
43
  exception: err instanceof Error ? err.message : String(err),
43
- }, { tags: [`job:${j.constructor.name}`, 'status:failed'] }));
44
+ }, { tags: [`job:${j.constructor.name}`, 'status:failed'], ...batchOpts() }));
44
45
  throw err;
45
46
  }
46
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"job.js","sourceRoot":"","sources":["../../src/collectors/job.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,YAAY;IAIM;IAHpB,IAAI,GAAG,eAAe,CAAA;IACtB,IAAI,GAAG,KAAc,CAAA;IAE9B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;YACzD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,CAAA;YACpC,IAAI,CAAC,QAAQ;gBAAE,OAAM;YAErB,MAAM,OAAO,GAAY,IAAI,CAAC,OAAO,CAAA;YACrC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAEzD,QAAQ,CAAC,QAAQ,GAAG,KAAK,EAAE,GAAY,EAAE,OAAiB,EAAiB,EAAE;gBAC3E,MAAM,CAAC,GAAM,GAAkE,CAAA;gBAC/E,MAAM,IAAI,GAAG,CAAC,CAAC,WAAiD,CAAA;gBAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBACxB,IAAI,CAAC;oBACH,MAAO,gBAAuE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;oBAC5F,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;oBACnC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE;wBAC/B,KAAK,EAAK,CAAC,CAAC,WAAW,CAAC,IAAI;wBAC5B,KAAK,EAAK,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS;wBACpC,MAAM,EAAI,YAAY;wBACtB,QAAQ;wBACR,OAAO,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;qBAC1C,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAA;gBACnE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;oBACnC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE;wBAC/B,KAAK,EAAM,CAAC,CAAC,WAAW,CAAC,IAAI;wBAC7B,KAAK,EAAM,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS;wBACrC,MAAM,EAAK,QAAQ;wBACnB,QAAQ;wBACR,SAAS,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBAC5D,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,CAAA;oBAC7D,MAAM,GAAG,CAAA;gBACX,CAAC;YACH,CAAC,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"job.js","sourceRoot":"","sources":["../../src/collectors/job.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,YAAY;IAIM;IAHpB,IAAI,GAAG,eAAe,CAAA;IACtB,IAAI,GAAG,KAAc,CAAA;IAE9B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;YACzD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,CAAA;YACpC,IAAI,CAAC,QAAQ;gBAAE,OAAM;YAErB,MAAM,OAAO,GAAY,IAAI,CAAC,OAAO,CAAA;YACrC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAEzD,QAAQ,CAAC,QAAQ,GAAG,KAAK,EAAE,GAAY,EAAE,OAAiB,EAAiB,EAAE;gBAC3E,MAAM,CAAC,GAAM,GAAkE,CAAA;gBAC/E,MAAM,IAAI,GAAG,CAAC,CAAC,WAAiD,CAAA;gBAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBACxB,IAAI,CAAC;oBACH,MAAO,gBAAuE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;oBAC5F,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;oBACnC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE;wBAC/B,KAAK,EAAK,CAAC,CAAC,WAAW,CAAC,IAAI;wBAC5B,KAAK,EAAK,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS;wBACpC,MAAM,EAAI,YAAY;wBACtB,QAAQ;wBACR,OAAO,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;qBAC1C,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,mBAAmB,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;gBACnF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;oBACnC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE;wBAC/B,KAAK,EAAM,CAAC,CAAC,WAAW,CAAC,IAAI;wBAC7B,KAAK,EAAM,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS;wBACrC,MAAM,EAAK,QAAQ;wBACnB,QAAQ;wBACR,SAAS,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBAC5D,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;oBAC7E,MAAM,GAAG,CAAA;gBACX,CAAC;YACH,CAAC,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { Collector, TelescopeStorage } from '../types.js';
2
+ export declare class LiveCollector implements Collector {
3
+ private readonly storage;
4
+ private readonly awarenessSampleMs;
5
+ readonly name = "Live Collector";
6
+ readonly type: "live";
7
+ /** `(docName + '\u0000' + clientId)` → last awareness sample timestamp (ms) */
8
+ private awarenessLastSampleAt;
9
+ constructor(storage: TelescopeStorage, awarenessSampleMs?: number);
10
+ register(): Promise<void>;
11
+ private record;
12
+ }
13
+ //# sourceMappingURL=live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/collectors/live.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AA2B9D,qBAAa,aAAc,YAAW,SAAS;IAQ3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IARpC,QAAQ,CAAC,IAAI,oBAAmB;IAChC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAS;IAE/B,+EAA+E;IAC/E,OAAO,CAAC,qBAAqB,CAA4B;gBAGtC,OAAO,EAAY,gBAAgB,EACnC,iBAAiB,GAAE,MAAY;IAG5C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,OAAO,CAAC,MAAM;CAqCf"}
@@ -0,0 +1,60 @@
1
+ import { createEntry } from '../storage.js';
2
+ export class LiveCollector {
3
+ storage;
4
+ awarenessSampleMs;
5
+ name = 'Live Collector';
6
+ type = 'live';
7
+ /** `(docName + '\u0000' + clientId)` → last awareness sample timestamp (ms) */
8
+ awarenessLastSampleAt = new Map();
9
+ constructor(storage, awarenessSampleMs = 500) {
10
+ this.storage = storage;
11
+ this.awarenessSampleMs = awarenessSampleMs;
12
+ }
13
+ async register() {
14
+ try {
15
+ const { liveObservers } = await import('@rudderjs/live');
16
+ liveObservers.subscribe((event) => this.record(event));
17
+ }
18
+ catch {
19
+ // @rudderjs/live not installed — skip
20
+ }
21
+ }
22
+ record(event) {
23
+ // Awareness throttling — drop events that arrive within the sample window.
24
+ if (event.kind === 'awareness.changed' && this.awarenessSampleMs > 0) {
25
+ const docName = String(event['docName'] ?? '');
26
+ const clientId = String(event['clientId'] ?? '');
27
+ const key = `${docName}\u0000${clientId}`;
28
+ const now = Date.now();
29
+ const last = this.awarenessLastSampleAt.get(key) ?? 0;
30
+ if (now - last < this.awarenessSampleMs)
31
+ return; // dropped
32
+ this.awarenessLastSampleAt.set(key, now);
33
+ }
34
+ // Auto-prune the throttle map when a client disconnects.
35
+ if (event.kind === 'doc.closed') {
36
+ const docName = String(event['docName'] ?? '');
37
+ const clientId = String(event['clientId'] ?? '');
38
+ this.awarenessLastSampleAt.delete(`${docName}\u0000${clientId}`);
39
+ }
40
+ const tags = [`kind:${event.kind}`];
41
+ if (event['docName'])
42
+ tags.push(`doc:${event['docName']}`);
43
+ if (event.kind === 'sync.error')
44
+ tags.push('error');
45
+ // Use clientId as batchId for client-scoped events so the existing
46
+ // batch view groups everything one client did during one connection.
47
+ // Server-scoped events (persistence.*) get docName as batchId so all
48
+ // events for one document group together for storage diagnostics.
49
+ const opts = { tags };
50
+ if (event['clientId']) {
51
+ opts.batchId = String(event['clientId']);
52
+ }
53
+ else if (event['docName']) {
54
+ opts.batchId = `doc:${event['docName']}`;
55
+ }
56
+ const { kind: _kind, ...rest } = event;
57
+ this.storage.store(createEntry('live', { kind: event.kind, ...rest }, opts));
58
+ }
59
+ }
60
+ //# sourceMappingURL=live.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/collectors/live.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/collectors/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG9D;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAIhC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,mBAAkB;IAC/B,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAS;gBAED,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,OAAO,CAAC,MAAM;CAcf"}
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/collectors/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9D;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAIhC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,mBAAkB;IAC/B,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAS;gBAED,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,OAAO,CAAC,MAAM;CAcf"}
@@ -1,4 +1,5 @@
1
1
  import { createEntry } from '../storage.js';
2
+ import { batchOpts } from '../batch-context.js';
2
3
  /**
3
4
  * Records log entries by hooking into @rudderjs/log's listener API.
4
5
  */
@@ -29,7 +30,7 @@ export class LogCollector {
29
30
  context: entry.context,
30
31
  channel: entry.channel,
31
32
  timestamp: entry.timestamp.toISOString(),
32
- }, { tags }));
33
+ }, { tags, ...batchOpts() }));
33
34
  }
34
35
  }
35
36
  //# sourceMappingURL=log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/collectors/log.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,YAAY;IAIM;IAHpB,IAAI,GAAG,eAAe,CAAA;IACtB,IAAI,GAAG,KAAc,CAAA;IAE9B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAE3C,CAAA;YACD,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAe;QAC5B,MAAM,IAAI,GAAa,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACpB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE;YACpC,KAAK,EAAM,KAAK,CAAC,KAAK;YACtB,OAAO,EAAI,KAAK,CAAC,OAAO;YACxB,OAAO,EAAI,KAAK,CAAC,OAAO;YACxB,OAAO,EAAI,KAAK,CAAC,OAAO;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;SACzC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/collectors/log.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,YAAY;IAIM;IAHpB,IAAI,GAAG,eAAe,CAAA;IACtB,IAAI,GAAG,KAAc,CAAA;IAE9B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAE3C,CAAA;YACD,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAe;QAC5B,MAAM,IAAI,GAAa,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACpB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE;YACpC,KAAK,EAAM,KAAK,CAAC,KAAK;YACtB,OAAO,EAAI,KAAK,CAAC,OAAO;YACxB,OAAO,EAAI,KAAK,CAAC,OAAO;YACxB,OAAO,EAAI,KAAK,CAAC,OAAO;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;SACzC,EAAE,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;IAC/B,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/collectors/mail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG9D;;GAEG;AACH,qBAAa,aAAc,YAAW,SAAS;IAIjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,oBAAmB;IAChC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAS;gBAEF,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA8BhC"}
1
+ {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/collectors/mail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9D;;GAEG;AACH,qBAAa,aAAc,YAAW,SAAS;IAIjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,QAAQ,CAAC,IAAI,oBAAmB;IAChC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAS;gBAEF,OAAO,EAAE,gBAAgB;IAEhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA8BhC"}
@@ -1,4 +1,5 @@
1
1
  import { createEntry } from '../storage.js';
2
+ import { batchOpts } from '../batch-context.js';
2
3
  /**
3
4
  * Records mail sends by wrapping the MailRegistry adapter's send method.
4
5
  */
@@ -27,7 +28,7 @@ export class MailCollector {
27
28
  to: opt['to'] ?? [],
28
29
  subject: m['subject'] ?? '',
29
30
  queued: false,
30
- }, { tags: [`mail:${m.constructor.name}`] }));
31
+ }, { tags: [`mail:${m.constructor.name}`], ...batchOpts() }));
31
32
  };
32
33
  }
33
34
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/collectors/mail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,aAAa;IAIK;IAHpB,IAAI,GAAG,gBAAgB,CAAA;IACvB,IAAI,GAAG,MAAe,CAAA;IAE/B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;YAC1C,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAA;YAE5B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,CAAA;YACnC,IAAI,CAAC,QAAQ;gBAAE,OAAM;YAErB,MAAM,OAAO,GAAO,IAAI,CAAC,OAAO,CAAA;YAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAGhD;YAAC,QAA+C,CAAC,MAAM,CAAC,GAAG,KAAK,WAC/D,QAAiB,EACjB,OAAgB;gBAEhB,MAAO,YAAsD,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;gBAChF,MAAM,CAAC,GAAK,QAAuE,CAAA;gBACnF,MAAM,GAAG,GAAG,OAAkC,CAAA;gBAC9C,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE;oBAChC,KAAK,EAAI,CAAC,CAAC,WAAW,CAAC,IAAI;oBAC3B,EAAE,EAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;oBACxB,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE;oBAC3B,MAAM,EAAG,KAAK;iBACf,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAC/C,CAAC,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/collectors/mail.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,aAAa;IAIK;IAHpB,IAAI,GAAG,gBAAgB,CAAA;IACvB,IAAI,GAAG,MAAe,CAAA;IAE/B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;YAC1C,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAA;YAE5B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,CAAA;YACnC,IAAI,CAAC,QAAQ;gBAAE,OAAM;YAErB,MAAM,OAAO,GAAO,IAAI,CAAC,OAAO,CAAA;YAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAGhD;YAAC,QAA+C,CAAC,MAAM,CAAC,GAAG,KAAK,WAC/D,QAAiB,EACjB,OAAgB;gBAEhB,MAAO,YAAsD,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;gBAChF,MAAM,CAAC,GAAK,QAAuE,CAAA;gBACnF,MAAM,GAAG,GAAG,OAAkC,CAAA;gBAC9C,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE;oBAChC,KAAK,EAAI,CAAC,CAAC,WAAW,CAAC,IAAI;oBAC3B,EAAE,EAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;oBACxB,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE;oBAC3B,MAAM,EAAG,KAAK;iBACf,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;YAC/D,CAAC,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;CACF"}