@dxos/tracing 0.5.3-main.bc67fdb → 0.5.3-main.c3feabc

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.
@@ -3,8 +3,6 @@ import { type LogEntry } from '@dxos/protocols/proto/dxos/client/services';
3
3
  import { type Error as SerializedError } from '@dxos/protocols/proto/dxos/error';
4
4
  import { type Metric, type Resource, type Span } from '@dxos/protocols/proto/dxos/tracing';
5
5
  import type { AddLinkOptions } from './api';
6
- import { DiagnosticsManager } from './diagnostic';
7
- import { DiagnosticsChannel } from './diagnostics-channel';
8
6
  import { TraceSender } from './trace-sender';
9
7
  export type Diagnostics = {
10
8
  resources: Record<string, Resource>;
@@ -44,8 +42,6 @@ export type TraceSubscription = {
44
42
  newLogs: LogEntry[];
45
43
  };
46
44
  export declare class TraceProcessor {
47
- readonly diagnostics: DiagnosticsManager;
48
- readonly diagnosticsChannel: DiagnosticsChannel;
49
45
  readonly subscriptions: Set<TraceSubscription>;
50
46
  readonly resources: Map<number, ResourceEntry>;
51
47
  readonly resourceInstanceIndex: WeakMap<any, ResourceEntry>;
@@ -1 +1 @@
1
- {"version":3,"file":"trace-processor.d.ts","sourceRoot":"","sources":["../../../src/trace-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace-processor.d.ts","sourceRoot":"","sources":["../../../src/trace-processor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/tracing",
3
- "version": "0.5.3-main.bc67fdb",
3
+ "version": "0.5.3-main.c3feabc",
4
4
  "description": "Async utilities.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -16,18 +16,18 @@
16
16
  "src"
17
17
  ],
18
18
  "dependencies": {
19
- "@dxos/async": "0.5.3-main.bc67fdb",
20
- "@dxos/codec-protobuf": "0.5.3-main.bc67fdb",
21
- "@dxos/context": "0.5.3-main.bc67fdb",
22
- "@dxos/debug": "0.5.3-main.bc67fdb",
23
- "@dxos/invariant": "0.5.3-main.bc67fdb",
24
- "@dxos/log": "0.5.3-main.bc67fdb",
25
- "@dxos/protocols": "0.5.3-main.bc67fdb",
26
- "@dxos/util": "0.5.3-main.bc67fdb",
27
- "@dxos/node-std": "0.5.3-main.bc67fdb"
19
+ "@dxos/async": "0.5.3-main.c3feabc",
20
+ "@dxos/context": "0.5.3-main.c3feabc",
21
+ "@dxos/codec-protobuf": "0.5.3-main.c3feabc",
22
+ "@dxos/debug": "0.5.3-main.c3feabc",
23
+ "@dxos/invariant": "0.5.3-main.c3feabc",
24
+ "@dxos/log": "0.5.3-main.c3feabc",
25
+ "@dxos/protocols": "0.5.3-main.c3feabc",
26
+ "@dxos/util": "0.5.3-main.c3feabc",
27
+ "@dxos/node-std": "0.5.3-main.c3feabc"
28
28
  },
29
29
  "devDependencies": {
30
- "@dxos/test": "0.5.3-main.bc67fdb"
30
+ "@dxos/test": "0.5.3-main.c3feabc"
31
31
  },
32
32
  "publishConfig": {
33
33
  "access": "public"
package/src/api.ts CHANGED
@@ -3,7 +3,6 @@
3
3
  //
4
4
 
5
5
  import { Context } from '@dxos/context';
6
- import { type MaybePromise } from '@dxos/util';
7
6
 
8
7
  import { getTracingContext } from './symbols';
9
8
  import { TRACE_PROCESSOR } from './trace-processor';
@@ -105,36 +104,6 @@ const addLink = (parent: any, child: any, opts: AddLinkOptions = {}) => {
105
104
  TRACE_PROCESSOR.addLink(parent, child, opts);
106
105
  };
107
106
 
108
- export type TraceDiagnosticParams<T> = {
109
- /**
110
- * Unique ID.
111
- */
112
- id: string;
113
-
114
- /**
115
- * Human-readable name.
116
- * @defaults Defaults to `id`
117
- */
118
- name?: string;
119
-
120
- /**
121
- * Function that will be called to fetch the diagnostic data.
122
- */
123
- fetch: () => MaybePromise<T>;
124
- };
125
-
126
- export interface TraceDiagnostic {
127
- id: string;
128
- unregister(): void;
129
- }
130
-
131
- /**
132
- * Register a diagnostic that could be queried.
133
- */
134
- const diagnostic = <T>(params: TraceDiagnosticParams<T>): TraceDiagnostic => {
135
- return TRACE_PROCESSOR.diagnostics.registerDiagnostic(params);
136
- };
137
-
138
107
  export const trace = {
139
108
  resource,
140
109
  info,
@@ -143,6 +112,4 @@ export const trace = {
143
112
  metricsCounter,
144
113
 
145
114
  addLink,
146
-
147
- diagnostic,
148
115
  };
package/src/index.ts CHANGED
@@ -2,23 +2,8 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { trace } from './api';
6
-
7
5
  export * from './api';
8
6
  export * from './symbols';
9
7
  export * from './trace-processor';
10
8
  export * from './trace-sender';
11
9
  export * from './metrics';
12
-
13
- trace.diagnostic({
14
- id: 'process-info',
15
- name: 'Process Info',
16
- fetch: async () => {
17
- return {
18
- platform: globalThis.process?.platform,
19
- arch: globalThis.process?.arch,
20
- versions: globalThis.process?.versions,
21
- href: globalThis.location?.href,
22
- };
23
- },
24
- });
@@ -11,8 +11,6 @@ import { type Metric, type Resource, type Span } from '@dxos/protocols/proto/dxo
11
11
  import { getPrototypeSpecificInstanceId } from '@dxos/util';
12
12
 
13
13
  import type { AddLinkOptions } from './api';
14
- import { DiagnosticsManager } from './diagnostic';
15
- import { DiagnosticsChannel } from './diagnostics-channel';
16
14
  import { type BaseCounter } from './metrics';
17
15
  import { TRACE_SPAN_ATTRIBUTE, getTracingContext } from './symbols';
18
16
  import { TraceSender } from './trace-sender';
@@ -74,9 +72,6 @@ const REFRESH_INTERVAL = 1_000;
74
72
  const MAX_INFO_OBJECT_DEPTH = 8;
75
73
 
76
74
  export class TraceProcessor {
77
- public readonly diagnostics = new DiagnosticsManager();
78
- public readonly diagnosticsChannel = new DiagnosticsChannel();
79
-
80
75
  readonly subscriptions: Set<TraceSubscription> = new Set();
81
76
 
82
77
  readonly resources = new Map<number, ResourceEntry>();
@@ -93,9 +88,6 @@ export class TraceProcessor {
93
88
 
94
89
  const refreshInterval = setInterval(this.refresh.bind(this), REFRESH_INTERVAL);
95
90
  unrefTimeout(refreshInterval);
96
-
97
- this.diagnosticsChannel.serve(this.diagnostics);
98
- this.diagnosticsChannel.unref();
99
91
  }
100
92
 
101
93
  /**
@@ -1,33 +0,0 @@
1
- import { type TraceDiagnosticParams, type TraceDiagnostic } from './api';
2
- export declare const DIAGNOSTICS_TIMEOUT = 10000;
3
- export type DiagnosticMetadata = {
4
- id: string;
5
- instanceId: string;
6
- name: string;
7
- };
8
- export type DiagnosticsRequest = {
9
- id: string;
10
- instanceId: string;
11
- };
12
- export type DiagnosticsData = {
13
- id: string;
14
- instanceId: string;
15
- data: any;
16
- error?: string;
17
- };
18
- export declare class TraceDiagnosticImpl implements TraceDiagnostic {
19
- id: string;
20
- fetch: () => any;
21
- name: string;
22
- private readonly _onUnregister;
23
- constructor(id: string, fetch: () => any, name: string, _onUnregister: () => void);
24
- unregister(): void;
25
- }
26
- export declare class DiagnosticsManager {
27
- readonly instanceId: string;
28
- readonly registry: Map<string, TraceDiagnosticImpl>;
29
- registerDiagnostic(params: TraceDiagnosticParams<any>): TraceDiagnostic;
30
- list(): DiagnosticMetadata[];
31
- fetch(request: DiagnosticsRequest): Promise<DiagnosticsData>;
32
- }
33
- //# sourceMappingURL=diagnostic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diagnostic.d.ts","sourceRoot":"","sources":["../../../src/diagnostic.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,OAAO,CAAC;AAGzE,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,mBAAoB,YAAW,eAAe;IAEhD,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,MAAM,GAAG;IAChB,IAAI,EAAE,MAAM;IACnB,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAHvB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,GAAG,EAChB,IAAI,EAAE,MAAM,EACF,aAAa,EAAE,MAAM,IAAI;IAG5C,UAAU,IAAI,IAAI;CAGnB;AAED,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,UAAU,SAAc;IAEjC,QAAQ,CAAC,QAAQ,mCAA0C;IAE3D,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAAG,eAAe;IAUvE,IAAI,IAAI,kBAAkB,EAAE;IAQtB,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;CAqBnE"}
@@ -1,33 +0,0 @@
1
- import { type DiagnosticMetadata, type DiagnosticsData, type DiagnosticsManager, type DiagnosticsRequest } from './diagnostic';
2
- export type DiagnosticChannelMessage = {
3
- type: 'DIAGNOSTICS_DISCOVER';
4
- } | {
5
- type: 'DIAGNOSTICS_ANNOUNCE';
6
- diagnostics: DiagnosticMetadata[];
7
- } | {
8
- type: 'DIAGNOSTICS_FETCH';
9
- requestId: string;
10
- request: DiagnosticsRequest;
11
- } | {
12
- type: 'DIAGNOSTICS_RESPONSE';
13
- requestId: string;
14
- data: DiagnosticsData;
15
- };
16
- export declare class DiagnosticsChannel {
17
- private readonly _channelName;
18
- private _ctx;
19
- private readonly _serveChannel;
20
- private readonly _clientChannel;
21
- constructor(_channelName?: string);
22
- destroy(): void;
23
- /**
24
- * In node.js, the channel will keep the process alive.
25
- * This method allows the process to exit.
26
- * Noop in the browser.
27
- */
28
- unref(): void;
29
- serve(manager: DiagnosticsManager): void;
30
- discover(): Promise<DiagnosticMetadata[]>;
31
- fetch(request: DiagnosticsRequest): Promise<DiagnosticsData>;
32
- }
33
- //# sourceMappingURL=diagnostics-channel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diagnostics-channel.d.ts","sourceRoot":"","sources":["../../../src/diagnostics-channel.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAOtB,MAAM,MAAM,wBAAwB,GAChC;IACE,IAAI,EAAE,sBAAsB,CAAC;CAC9B,GACD;IACE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC,GACD;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,CAAC;CAC7B,GACD;IACE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC;AAEN,qBAAa,kBAAkB;IAOjB,OAAO,CAAC,QAAQ,CAAC,YAAY;IANzC,OAAO,CAAC,IAAI,CAAiB;IAG7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;gBAErB,YAAY,GAAE,MAA6B;IAKxE,OAAO;IAMP;;;;OAIG;IACH,KAAK;IAOL,KAAK,CAAC,OAAO,EAAE,kBAAkB;IAgC3B,QAAQ,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAgCzC,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;CA2BnE"}
@@ -1,2 +0,0 @@
1
- export declare const createId: () => string;
2
- //# sourceMappingURL=util.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,cAA4C,CAAC"}
package/src/diagnostic.ts DELETED
@@ -1,88 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { asyncTimeout } from '@dxos/async';
6
- import { invariant } from '@dxos/invariant';
7
-
8
- import { type TraceDiagnosticParams, type TraceDiagnostic } from './api';
9
- import { createId } from './util';
10
-
11
- export const DIAGNOSTICS_TIMEOUT = 10_000;
12
-
13
- export type DiagnosticMetadata = {
14
- id: string;
15
- instanceId: string;
16
- name: string;
17
- };
18
-
19
- export type DiagnosticsRequest = {
20
- id: string;
21
- instanceId: string;
22
- };
23
-
24
- export type DiagnosticsData = {
25
- id: string;
26
- instanceId: string;
27
- data: any;
28
- error?: string;
29
- };
30
-
31
- export class TraceDiagnosticImpl implements TraceDiagnostic {
32
- constructor(
33
- public id: string,
34
- public fetch: () => any,
35
- public name: string,
36
- private readonly _onUnregister: () => void,
37
- ) {}
38
-
39
- unregister(): void {
40
- this._onUnregister();
41
- }
42
- }
43
-
44
- export class DiagnosticsManager {
45
- readonly instanceId = createId();
46
-
47
- readonly registry = new Map<string, TraceDiagnosticImpl>();
48
-
49
- registerDiagnostic(params: TraceDiagnosticParams<any>): TraceDiagnostic {
50
- const impl = new TraceDiagnosticImpl(params.id, params.fetch, params.name ?? params.id, () => {
51
- if (this.registry.get(params.id) === impl) {
52
- this.registry.delete(params.id);
53
- }
54
- });
55
- this.registry.set(params.id, impl);
56
- return impl;
57
- }
58
-
59
- list(): DiagnosticMetadata[] {
60
- return Array.from(this.registry.values()).map((diagnostic) => ({
61
- id: diagnostic.id,
62
- instanceId: this.instanceId,
63
- name: diagnostic.name,
64
- }));
65
- }
66
-
67
- async fetch(request: DiagnosticsRequest): Promise<DiagnosticsData> {
68
- invariant(request.instanceId === this.instanceId, 'Invalid instance id');
69
- const { id } = request;
70
- const diagnostic = this.registry.get(id);
71
- invariant(diagnostic, 'Diagnostic not found');
72
- try {
73
- const data = await asyncTimeout(diagnostic.fetch(), DIAGNOSTICS_TIMEOUT);
74
- return {
75
- id,
76
- instanceId: this.instanceId,
77
- data,
78
- };
79
- } catch (err: any) {
80
- return {
81
- id,
82
- instanceId: this.instanceId,
83
- data: null,
84
- error: err.stack,
85
- };
86
- }
87
- }
88
- }
@@ -1,161 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { Trigger, sleep } from '@dxos/async';
6
- import { Context } from '@dxos/context';
7
-
8
- import {
9
- DIAGNOSTICS_TIMEOUT,
10
- type DiagnosticMetadata,
11
- type DiagnosticsData,
12
- type DiagnosticsManager,
13
- type DiagnosticsRequest,
14
- } from './diagnostic';
15
- import { createId } from './util';
16
-
17
- const DEFAULT_CHANNEL_NAME = 'dxos-diagnostics';
18
-
19
- const DISCOVER_TIME = 500;
20
-
21
- export type DiagnosticChannelMessage =
22
- | {
23
- type: 'DIAGNOSTICS_DISCOVER';
24
- }
25
- | {
26
- type: 'DIAGNOSTICS_ANNOUNCE';
27
- diagnostics: DiagnosticMetadata[];
28
- }
29
- | {
30
- type: 'DIAGNOSTICS_FETCH';
31
- requestId: string;
32
- request: DiagnosticsRequest;
33
- }
34
- | {
35
- type: 'DIAGNOSTICS_RESPONSE';
36
- requestId: string;
37
- data: DiagnosticsData;
38
- };
39
-
40
- export class DiagnosticsChannel {
41
- private _ctx = new Context();
42
-
43
- // Separate channels becauase the client and server may be in the same process.
44
- private readonly _serveChannel: BroadcastChannel;
45
- private readonly _clientChannel: BroadcastChannel;
46
-
47
- constructor(private readonly _channelName: string = DEFAULT_CHANNEL_NAME) {
48
- this._serveChannel = new BroadcastChannel(_channelName);
49
- this._clientChannel = new BroadcastChannel(_channelName);
50
- }
51
-
52
- destroy() {
53
- void this._ctx.dispose();
54
- this._serveChannel.close();
55
- this._clientChannel.close();
56
- }
57
-
58
- /**
59
- * In node.js, the channel will keep the process alive.
60
- * This method allows the process to exit.
61
- * Noop in the browser.
62
- */
63
- unref() {
64
- if (typeof (this._serveChannel as any).unref === 'function') {
65
- (this._serveChannel as any).unref();
66
- (this._clientChannel as any).unref();
67
- }
68
- }
69
-
70
- serve(manager: DiagnosticsManager) {
71
- const listener = async (event: MessageEvent) => {
72
- switch (event.data.type) {
73
- case 'DIAGNOSTICS_DISCOVER': {
74
- const diagnostics = manager.list();
75
- this._serveChannel.postMessage({
76
- type: 'DIAGNOSTICS_ANNOUNCE',
77
- diagnostics,
78
- } satisfies DiagnosticChannelMessage);
79
- break;
80
- }
81
- case 'DIAGNOSTICS_FETCH': {
82
- const { requestId, request } = event.data;
83
- if (request.instanceId !== manager.instanceId) {
84
- break;
85
- }
86
-
87
- const data = await manager.fetch(request);
88
- this._serveChannel.postMessage({
89
- type: 'DIAGNOSTICS_RESPONSE',
90
- requestId,
91
- data,
92
- } satisfies DiagnosticChannelMessage);
93
- break;
94
- }
95
- }
96
- };
97
-
98
- this._serveChannel.addEventListener('message', listener);
99
- this._ctx.onDispose(() => this._serveChannel.removeEventListener('message', listener));
100
- }
101
-
102
- async discover(): Promise<DiagnosticMetadata[]> {
103
- const diagnostics: DiagnosticMetadata[] = [];
104
-
105
- const collector = (event: MessageEvent) => {
106
- const data = event.data as DiagnosticChannelMessage;
107
- switch (data.type) {
108
- case 'DIAGNOSTICS_ANNOUNCE':
109
- diagnostics.push(...data.diagnostics);
110
- break;
111
- }
112
- };
113
-
114
- try {
115
- this._clientChannel.addEventListener('message', collector);
116
- this._clientChannel.postMessage({ type: 'DIAGNOSTICS_DISCOVER' } satisfies DiagnosticChannelMessage);
117
-
118
- await sleep(DISCOVER_TIME);
119
-
120
- // Dedup.
121
- const result: DiagnosticMetadata[] = [];
122
- for (const diagnostic of diagnostics) {
123
- if (!result.some((d) => d.id === diagnostic.id && d.instanceId === diagnostic.instanceId)) {
124
- result.push(diagnostic);
125
- }
126
- }
127
-
128
- return diagnostics;
129
- } finally {
130
- this._clientChannel.removeEventListener('message', collector);
131
- }
132
- }
133
-
134
- async fetch(request: DiagnosticsRequest): Promise<DiagnosticsData> {
135
- const requestId = createId();
136
-
137
- const trigger = new Trigger<DiagnosticsData>();
138
- const listener = (event: MessageEvent) => {
139
- const data = event.data as DiagnosticChannelMessage;
140
- if (data.type === 'DIAGNOSTICS_RESPONSE' && data.requestId === requestId) {
141
- trigger.wake(data.data);
142
- }
143
- };
144
-
145
- try {
146
- this._clientChannel.addEventListener('message', listener);
147
- this._clientChannel.postMessage({
148
- type: 'DIAGNOSTICS_FETCH',
149
- requestId,
150
- request,
151
- } satisfies DiagnosticChannelMessage);
152
-
153
- // NOTE: Must have await keyword in this block.
154
- const result = await trigger.wait({ timeout: DIAGNOSTICS_TIMEOUT });
155
-
156
- return result;
157
- } finally {
158
- this._clientChannel.removeEventListener('message', listener);
159
- }
160
- }
161
- }
package/src/util.ts DELETED
@@ -1,6 +0,0 @@
1
- // TODO(dmaretskyi): Use UUID.
2
- //
3
- // Copyright 2024 DXOS.org
4
- //
5
-
6
- export const createId = () => Math.random().toString(36).slice(2);