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