@dxos/tracing 0.8.3 → 0.8.4-main.1068cf700f
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/dist/lib/browser/index.mjs +125 -103
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +125 -103
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/api.d.ts +4 -4
- package/dist/types/src/api.d.ts.map +1 -1
- package/dist/types/src/diagnostic.d.ts +2 -2
- package/dist/types/src/diagnostic.d.ts.map +1 -1
- package/dist/types/src/trace-processor.d.ts +4 -4
- package/dist/types/src/trace-processor.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +15 -11
- package/src/api.ts +4 -4
- package/src/diagnostic.ts +2 -2
- package/src/trace-processor.ts +7 -7
- package/dist/lib/node/index.cjs +0 -1111
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
|
|
3
|
-
//
|
|
3
|
+
// src/api.ts
|
|
4
4
|
import { Context as Context2 } from "@dxos/context";
|
|
5
5
|
|
|
6
|
-
//
|
|
6
|
+
// src/symbols.ts
|
|
7
7
|
var symbolTracingContext = Symbol("dxos.tracing.context");
|
|
8
8
|
var getTracingContext = (target) => {
|
|
9
9
|
return target[symbolTracingContext] ??= {
|
|
@@ -13,22 +13,26 @@ var getTracingContext = (target) => {
|
|
|
13
13
|
};
|
|
14
14
|
var TRACE_SPAN_ATTRIBUTE = "dxos.trace-span";
|
|
15
15
|
|
|
16
|
-
//
|
|
16
|
+
// src/trace-processor.ts
|
|
17
17
|
import { unrefTimeout } from "@dxos/async";
|
|
18
18
|
import { LogLevel, getContextFromEntry, log } from "@dxos/log";
|
|
19
19
|
import { getPrototypeSpecificInstanceId } from "@dxos/util";
|
|
20
20
|
|
|
21
|
-
//
|
|
21
|
+
// src/diagnostic.ts
|
|
22
22
|
import { asyncTimeout } from "@dxos/async";
|
|
23
23
|
import { invariant } from "@dxos/invariant";
|
|
24
24
|
|
|
25
|
-
//
|
|
25
|
+
// src/util.ts
|
|
26
26
|
var createId = () => Math.random().toString(36).slice(2);
|
|
27
27
|
|
|
28
|
-
//
|
|
29
|
-
var __dxlog_file = "/
|
|
28
|
+
// src/diagnostic.ts
|
|
29
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/common/tracing/src/diagnostic.ts";
|
|
30
30
|
var DIAGNOSTICS_TIMEOUT = 1e4;
|
|
31
31
|
var TraceDiagnosticImpl = class {
|
|
32
|
+
id;
|
|
33
|
+
fetch;
|
|
34
|
+
name;
|
|
35
|
+
_onUnregister;
|
|
32
36
|
constructor(id, fetch, name, _onUnregister) {
|
|
33
37
|
this.id = id;
|
|
34
38
|
this.fetch = fetch;
|
|
@@ -40,11 +44,9 @@ var TraceDiagnosticImpl = class {
|
|
|
40
44
|
}
|
|
41
45
|
};
|
|
42
46
|
var DiagnosticsManager = class {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
this._instanceTag = null;
|
|
47
|
-
}
|
|
47
|
+
instanceId = createId();
|
|
48
|
+
registry = /* @__PURE__ */ new Map();
|
|
49
|
+
_instanceTag = null;
|
|
48
50
|
get instanceTag() {
|
|
49
51
|
return this._instanceTag;
|
|
50
52
|
}
|
|
@@ -109,25 +111,27 @@ var DiagnosticsManager = class {
|
|
|
109
111
|
}
|
|
110
112
|
};
|
|
111
113
|
|
|
112
|
-
//
|
|
114
|
+
// src/diagnostics-channel.ts
|
|
113
115
|
import { Trigger, sleep } from "@dxos/async";
|
|
114
116
|
import { Context } from "@dxos/context";
|
|
115
117
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
116
|
-
var __dxlog_file2 = "/
|
|
118
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/common/tracing/src/diagnostics-channel.ts";
|
|
117
119
|
var DEFAULT_CHANNEL_NAME = "dxos-diagnostics";
|
|
118
120
|
var DISCOVER_TIME = 500;
|
|
119
121
|
var DiagnosticsChannel = class _DiagnosticsChannel {
|
|
122
|
+
_channelName;
|
|
120
123
|
static get supported() {
|
|
121
124
|
return globalThis.BroadcastChannel != null;
|
|
122
125
|
}
|
|
126
|
+
_ctx = new Context(void 0, {
|
|
127
|
+
F: __dxlog_file2,
|
|
128
|
+
L: 46
|
|
129
|
+
});
|
|
130
|
+
// Separate channels becauase the client and server may be in the same process.
|
|
131
|
+
_serveChannel = void 0;
|
|
132
|
+
_clientChannel = void 0;
|
|
123
133
|
constructor(_channelName = DEFAULT_CHANNEL_NAME) {
|
|
124
134
|
this._channelName = _channelName;
|
|
125
|
-
this._ctx = new Context(void 0, {
|
|
126
|
-
F: __dxlog_file2,
|
|
127
|
-
L: 46
|
|
128
|
-
});
|
|
129
|
-
this._serveChannel = void 0;
|
|
130
|
-
this._clientChannel = void 0;
|
|
131
135
|
if (_DiagnosticsChannel.supported) {
|
|
132
136
|
this._serveChannel = new BroadcastChannel(_channelName);
|
|
133
137
|
this._clientChannel = new BroadcastChannel(_channelName);
|
|
@@ -260,11 +264,9 @@ var DiagnosticsChannel = class _DiagnosticsChannel {
|
|
|
260
264
|
}
|
|
261
265
|
};
|
|
262
266
|
|
|
263
|
-
//
|
|
267
|
+
// src/remote/metrics.ts
|
|
264
268
|
var RemoteMetrics = class {
|
|
265
|
-
|
|
266
|
-
this._metrics = /* @__PURE__ */ new Set();
|
|
267
|
-
}
|
|
269
|
+
_metrics = /* @__PURE__ */ new Set();
|
|
268
270
|
registerProcessor(processor) {
|
|
269
271
|
this._metrics.add(processor);
|
|
270
272
|
}
|
|
@@ -282,11 +284,10 @@ var RemoteMetrics = class {
|
|
|
282
284
|
}
|
|
283
285
|
};
|
|
284
286
|
|
|
285
|
-
//
|
|
287
|
+
// src/remote/tracing.ts
|
|
286
288
|
var RemoteTracing = class {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
}
|
|
289
|
+
_tracing;
|
|
290
|
+
_spanMap = /* @__PURE__ */ new Map();
|
|
290
291
|
registerProcessor(processor) {
|
|
291
292
|
this._tracing = processor;
|
|
292
293
|
}
|
|
@@ -311,9 +312,10 @@ var RemoteTracing = class {
|
|
|
311
312
|
}
|
|
312
313
|
};
|
|
313
314
|
|
|
314
|
-
//
|
|
315
|
+
// src/trace-sender.ts
|
|
315
316
|
import { Stream } from "@dxos/codec-protobuf/stream";
|
|
316
317
|
var TraceSender = class {
|
|
318
|
+
_traceProcessor;
|
|
317
319
|
constructor(_traceProcessor) {
|
|
318
320
|
this._traceProcessor = _traceProcessor;
|
|
319
321
|
}
|
|
@@ -400,7 +402,7 @@ var TraceSender = class {
|
|
|
400
402
|
}
|
|
401
403
|
};
|
|
402
404
|
|
|
403
|
-
//
|
|
405
|
+
// src/weak-ref.ts
|
|
404
406
|
var WeakRefMock = class {
|
|
405
407
|
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
|
|
406
408
|
constructor(target) {
|
|
@@ -411,9 +413,18 @@ var WeakRefMock = class {
|
|
|
411
413
|
};
|
|
412
414
|
var WeakRef = globalThis.WeakRef ?? WeakRefMock;
|
|
413
415
|
|
|
414
|
-
//
|
|
415
|
-
var __dxlog_file3 = "/
|
|
416
|
+
// src/trace-processor.ts
|
|
417
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/common/tracing/src/trace-processor.ts";
|
|
416
418
|
var ResourceEntry = class {
|
|
419
|
+
data;
|
|
420
|
+
instance;
|
|
421
|
+
annotation;
|
|
422
|
+
/**
|
|
423
|
+
* Sometimes bundlers mangle class names: WebFile -> WebFile2.
|
|
424
|
+
*
|
|
425
|
+
* We use a heuristic to remove the suffix.
|
|
426
|
+
*/
|
|
427
|
+
sanitizedClassName;
|
|
417
428
|
constructor(data, instance, annotation) {
|
|
418
429
|
this.data = data;
|
|
419
430
|
this.instance = instance;
|
|
@@ -431,50 +442,19 @@ var REFRESH_INTERVAL = 1e3;
|
|
|
431
442
|
var MAX_INFO_OBJECT_DEPTH = 8;
|
|
432
443
|
var IS_CLOUDFLARE_WORKERS = !!globalThis?.navigator?.userAgent?.includes("Cloudflare-Workers");
|
|
433
444
|
var TraceProcessor = class {
|
|
445
|
+
diagnostics = new DiagnosticsManager();
|
|
446
|
+
diagnosticsChannel = new DiagnosticsChannel();
|
|
447
|
+
remoteMetrics = new RemoteMetrics();
|
|
448
|
+
remoteTracing = new RemoteTracing();
|
|
449
|
+
subscriptions = /* @__PURE__ */ new Set();
|
|
450
|
+
resources = /* @__PURE__ */ new Map();
|
|
451
|
+
resourceInstanceIndex = /* @__PURE__ */ new WeakMap();
|
|
452
|
+
resourceIdList = [];
|
|
453
|
+
spans = /* @__PURE__ */ new Map();
|
|
454
|
+
spanIdList = [];
|
|
455
|
+
logs = [];
|
|
456
|
+
_instanceTag = null;
|
|
434
457
|
constructor() {
|
|
435
|
-
this.diagnostics = new DiagnosticsManager();
|
|
436
|
-
this.diagnosticsChannel = new DiagnosticsChannel();
|
|
437
|
-
this.remoteMetrics = new RemoteMetrics();
|
|
438
|
-
this.remoteTracing = new RemoteTracing();
|
|
439
|
-
this.subscriptions = /* @__PURE__ */ new Set();
|
|
440
|
-
this.resources = /* @__PURE__ */ new Map();
|
|
441
|
-
this.resourceInstanceIndex = /* @__PURE__ */ new WeakMap();
|
|
442
|
-
this.resourceIdList = [];
|
|
443
|
-
this.spans = /* @__PURE__ */ new Map();
|
|
444
|
-
this.spanIdList = [];
|
|
445
|
-
this.logs = [];
|
|
446
|
-
this._instanceTag = null;
|
|
447
|
-
this._logProcessor = (config, entry) => {
|
|
448
|
-
switch (entry.level) {
|
|
449
|
-
case LogLevel.ERROR:
|
|
450
|
-
case LogLevel.WARN:
|
|
451
|
-
case LogLevel.TRACE: {
|
|
452
|
-
const scope = entry.meta?.S;
|
|
453
|
-
const resource2 = this.resourceInstanceIndex.get(scope);
|
|
454
|
-
if (!resource2) {
|
|
455
|
-
return;
|
|
456
|
-
}
|
|
457
|
-
const context = getContextFromEntry(entry) ?? {};
|
|
458
|
-
for (const key of Object.keys(context)) {
|
|
459
|
-
context[key] = sanitizeValue(context[key], 0, this);
|
|
460
|
-
}
|
|
461
|
-
const entryToPush = {
|
|
462
|
-
level: entry.level,
|
|
463
|
-
message: entry.message,
|
|
464
|
-
context,
|
|
465
|
-
timestamp: /* @__PURE__ */ new Date(),
|
|
466
|
-
meta: {
|
|
467
|
-
file: entry.meta?.F ?? "",
|
|
468
|
-
line: entry.meta?.L ?? 0,
|
|
469
|
-
resourceId: resource2.data.id
|
|
470
|
-
}
|
|
471
|
-
};
|
|
472
|
-
this._pushLog(entryToPush);
|
|
473
|
-
break;
|
|
474
|
-
}
|
|
475
|
-
default:
|
|
476
|
-
}
|
|
477
|
-
};
|
|
478
458
|
log.addProcessor(this._logProcessor.bind(this), void 0, {
|
|
479
459
|
F: __dxlog_file3,
|
|
480
460
|
L: 103,
|
|
@@ -658,18 +638,54 @@ var TraceProcessor = class {
|
|
|
658
638
|
subscription.newLogs.push(log2);
|
|
659
639
|
}
|
|
660
640
|
}
|
|
641
|
+
_logProcessor = (config, entry) => {
|
|
642
|
+
switch (entry.level) {
|
|
643
|
+
case LogLevel.ERROR:
|
|
644
|
+
case LogLevel.WARN:
|
|
645
|
+
case LogLevel.TRACE: {
|
|
646
|
+
const scope = entry.meta?.S;
|
|
647
|
+
const resource2 = this.resourceInstanceIndex.get(scope);
|
|
648
|
+
if (!resource2) {
|
|
649
|
+
return;
|
|
650
|
+
}
|
|
651
|
+
const context = getContextFromEntry(entry) ?? {};
|
|
652
|
+
for (const key of Object.keys(context)) {
|
|
653
|
+
context[key] = sanitizeValue(context[key], 0, this);
|
|
654
|
+
}
|
|
655
|
+
const entryToPush = {
|
|
656
|
+
level: entry.level,
|
|
657
|
+
message: entry.message ?? (entry.error ? entry.error.message ?? String(entry.error) : ""),
|
|
658
|
+
context,
|
|
659
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
660
|
+
meta: {
|
|
661
|
+
file: entry.meta?.F ?? "",
|
|
662
|
+
line: entry.meta?.L ?? 0,
|
|
663
|
+
resourceId: resource2.data.id
|
|
664
|
+
}
|
|
665
|
+
};
|
|
666
|
+
this._pushLog(entryToPush);
|
|
667
|
+
break;
|
|
668
|
+
}
|
|
669
|
+
default:
|
|
670
|
+
}
|
|
671
|
+
};
|
|
661
672
|
};
|
|
662
673
|
var TracingSpan = class _TracingSpan {
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
674
|
+
_traceProcessor;
|
|
675
|
+
static nextId = 0;
|
|
676
|
+
id;
|
|
677
|
+
parentId = null;
|
|
678
|
+
methodName;
|
|
679
|
+
resourceId = null;
|
|
680
|
+
op;
|
|
681
|
+
attributes;
|
|
682
|
+
startTs;
|
|
683
|
+
endTs = null;
|
|
684
|
+
error = null;
|
|
685
|
+
_showInBrowserTimeline;
|
|
686
|
+
_ctx = null;
|
|
666
687
|
constructor(_traceProcessor, params) {
|
|
667
688
|
this._traceProcessor = _traceProcessor;
|
|
668
|
-
this.parentId = null;
|
|
669
|
-
this.resourceId = null;
|
|
670
|
-
this.endTs = null;
|
|
671
|
-
this.error = null;
|
|
672
|
-
this._ctx = null;
|
|
673
689
|
this.id = _TracingSpan.nextId++;
|
|
674
690
|
this.methodName = params.methodName;
|
|
675
691
|
this.resourceId = _traceProcessor.getResourceId(params.instance);
|
|
@@ -813,7 +829,7 @@ var sanitizeClassName = (className) => {
|
|
|
813
829
|
var isSetLike = (value) => value instanceof Set || typeof value === "object" && value !== null && Object.getPrototypeOf(value).constructor.name === "ComplexSet";
|
|
814
830
|
var isMapLike = (value) => value instanceof Map || typeof value === "object" && value !== null && Object.getPrototypeOf(value).constructor.name === "ComplexMap";
|
|
815
831
|
|
|
816
|
-
//
|
|
832
|
+
// src/api.ts
|
|
817
833
|
var resource = (options) => (constructor) => {
|
|
818
834
|
const klass = /* @__PURE__ */ (() => class extends constructor {
|
|
819
835
|
constructor(...rest) {
|
|
@@ -901,8 +917,13 @@ var trace = {
|
|
|
901
917
|
metrics: TRACE_PROCESSOR.remoteMetrics
|
|
902
918
|
};
|
|
903
919
|
|
|
904
|
-
//
|
|
920
|
+
// src/metrics/base.ts
|
|
905
921
|
var BaseCounter = class {
|
|
922
|
+
/**
|
|
923
|
+
* @internal
|
|
924
|
+
*/
|
|
925
|
+
_instance;
|
|
926
|
+
name;
|
|
906
927
|
/**
|
|
907
928
|
* @internal
|
|
908
929
|
*/
|
|
@@ -914,11 +935,12 @@ var BaseCounter = class {
|
|
|
914
935
|
}
|
|
915
936
|
};
|
|
916
937
|
|
|
917
|
-
//
|
|
938
|
+
// src/metrics/unary-counter.ts
|
|
918
939
|
var UnaryCounter = class extends BaseCounter {
|
|
940
|
+
value = 0;
|
|
941
|
+
units;
|
|
919
942
|
constructor({ units } = {}) {
|
|
920
943
|
super();
|
|
921
|
-
this.value = 0;
|
|
922
944
|
this.units = units;
|
|
923
945
|
}
|
|
924
946
|
inc(by = 1) {
|
|
@@ -935,14 +957,15 @@ var UnaryCounter = class extends BaseCounter {
|
|
|
935
957
|
}
|
|
936
958
|
};
|
|
937
959
|
|
|
938
|
-
//
|
|
960
|
+
// src/metrics/time-series-counter.ts
|
|
939
961
|
var MAX_BUCKETS = 60;
|
|
940
962
|
var TimeSeriesCounter = class extends BaseCounter {
|
|
963
|
+
_currentValue = 0;
|
|
964
|
+
_totalValue = 0;
|
|
965
|
+
_buckets = [];
|
|
966
|
+
units;
|
|
941
967
|
constructor({ units } = {}) {
|
|
942
968
|
super();
|
|
943
|
-
this._currentValue = 0;
|
|
944
|
-
this._totalValue = 0;
|
|
945
|
-
this._buckets = [];
|
|
946
969
|
this.units = units;
|
|
947
970
|
}
|
|
948
971
|
inc(by = 1) {
|
|
@@ -975,16 +998,13 @@ var TimeSeriesCounter = class extends BaseCounter {
|
|
|
975
998
|
}
|
|
976
999
|
};
|
|
977
1000
|
|
|
978
|
-
//
|
|
1001
|
+
// src/metrics/time-usage-counter.ts
|
|
979
1002
|
var MAX_BUCKETS2 = 60;
|
|
980
1003
|
var TimeUsageCounter = class extends BaseCounter {
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
this._buckets = [];
|
|
986
|
-
this._lastTickTime = performance.now();
|
|
987
|
-
}
|
|
1004
|
+
_currentValue = 0;
|
|
1005
|
+
_totalValue = 0;
|
|
1006
|
+
_buckets = [];
|
|
1007
|
+
_lastTickTime = performance.now();
|
|
988
1008
|
record(time) {
|
|
989
1009
|
this._currentValue += time;
|
|
990
1010
|
this._totalValue += time;
|
|
@@ -1027,11 +1047,12 @@ var TimeUsageCounter = class extends BaseCounter {
|
|
|
1027
1047
|
}
|
|
1028
1048
|
};
|
|
1029
1049
|
|
|
1030
|
-
//
|
|
1050
|
+
// src/metrics/map-counter.ts
|
|
1031
1051
|
var MapCounter = class extends BaseCounter {
|
|
1052
|
+
values = /* @__PURE__ */ new Map();
|
|
1053
|
+
units;
|
|
1032
1054
|
constructor({ units } = {}) {
|
|
1033
1055
|
super();
|
|
1034
|
-
this.values = /* @__PURE__ */ new Map();
|
|
1035
1056
|
this.units = units;
|
|
1036
1057
|
}
|
|
1037
1058
|
inc(key, by = 1) {
|
|
@@ -1052,8 +1073,9 @@ var MapCounter = class extends BaseCounter {
|
|
|
1052
1073
|
}
|
|
1053
1074
|
};
|
|
1054
1075
|
|
|
1055
|
-
//
|
|
1076
|
+
// src/metrics/custom-counter.ts
|
|
1056
1077
|
var CustomCounter = class extends BaseCounter {
|
|
1078
|
+
_getData;
|
|
1057
1079
|
constructor(_getData) {
|
|
1058
1080
|
super(), this._getData = _getData;
|
|
1059
1081
|
}
|
|
@@ -1067,7 +1089,7 @@ var CustomCounter = class extends BaseCounter {
|
|
|
1067
1089
|
}
|
|
1068
1090
|
};
|
|
1069
1091
|
|
|
1070
|
-
//
|
|
1092
|
+
// src/index.ts
|
|
1071
1093
|
trace.diagnostic({
|
|
1072
1094
|
id: "process-info",
|
|
1073
1095
|
name: "Process Info",
|