@dxos/tracing 0.1.56-next.a63ce79 → 0.1.56
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 +292 -20
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +296 -20
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/types/src/api.d.ts +1 -0
- package/dist/types/src/api.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/metrics/base.d.ts +7 -0
- package/dist/types/src/metrics/base.d.ts.map +1 -0
- package/dist/types/src/metrics/index.d.ts +5 -0
- package/dist/types/src/metrics/index.d.ts.map +1 -0
- package/dist/types/src/metrics/time-series-counter.d.ts +15 -0
- package/dist/types/src/metrics/time-series-counter.d.ts.map +1 -0
- package/dist/types/src/metrics/time-usage-counter.d.ts +15 -0
- package/dist/types/src/metrics/time-usage-counter.d.ts.map +1 -0
- package/dist/types/src/metrics/unary-counter.d.ts +12 -0
- package/dist/types/src/metrics/unary-counter.d.ts.map +1 -0
- package/dist/types/src/symbols.d.ts +1 -0
- package/dist/types/src/symbols.d.ts.map +1 -1
- package/dist/types/src/trace-processor.d.ts +10 -1
- package/dist/types/src/trace-processor.d.ts.map +1 -1
- package/dist/types/src/trace-sender.d.ts.map +1 -1
- package/package.json +10 -9
- package/src/api.ts +14 -0
- package/src/index.ts +1 -0
- package/src/metrics/base.ts +26 -0
- package/src/metrics/index.ts +8 -0
- package/src/metrics/time-series-counter.ts +52 -0
- package/src/metrics/time-usage-counter.ts +62 -0
- package/src/metrics/unary-counter.ts +31 -0
- package/src/symbols.ts +4 -2
- package/src/trace-processor.ts +158 -2
- package/src/trace-sender.ts +28 -18
package/dist/lib/node/index.cjs
CHANGED
|
@@ -20,11 +20,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// packages/common/tracing/src/index.ts
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
|
+
BaseCounter: () => BaseCounter,
|
|
23
24
|
TRACE_PROCESSOR: () => TRACE_PROCESSOR,
|
|
24
25
|
TRACE_SPAN_ATTRIBUTE: () => TRACE_SPAN_ATTRIBUTE,
|
|
26
|
+
TimeSeriesCounter: () => TimeSeriesCounter,
|
|
27
|
+
TimeUsageCounter: () => TimeUsageCounter,
|
|
25
28
|
TraceProcessor: () => TraceProcessor,
|
|
26
29
|
TraceSender: () => TraceSender,
|
|
27
30
|
TracingSpan: () => TracingSpan,
|
|
31
|
+
UnaryCounter: () => UnaryCounter,
|
|
28
32
|
getTracingContext: () => getTracingContext,
|
|
29
33
|
symbolTracingContext: () => symbolTracingContext,
|
|
30
34
|
trace: () => trace
|
|
@@ -35,39 +39,34 @@ module.exports = __toCommonJS(src_exports);
|
|
|
35
39
|
var import_context = require("@dxos/context");
|
|
36
40
|
|
|
37
41
|
// packages/common/tracing/src/symbols.ts
|
|
38
|
-
var symbolTracingContext = Symbol("dxos.tracing
|
|
42
|
+
var symbolTracingContext = Symbol("dxos.tracing.context");
|
|
39
43
|
var getTracingContext = (target) => {
|
|
40
44
|
return target[symbolTracingContext] ??= {
|
|
41
|
-
infoProperties: {}
|
|
45
|
+
infoProperties: {},
|
|
46
|
+
metricsProperties: {}
|
|
42
47
|
};
|
|
43
48
|
};
|
|
44
49
|
var TRACE_SPAN_ATTRIBUTE = "dxos.trace-span";
|
|
45
50
|
|
|
46
51
|
// packages/common/tracing/src/trace-processor.ts
|
|
52
|
+
var import_async = require("@dxos/async");
|
|
53
|
+
var import_log = require("@dxos/log");
|
|
47
54
|
var import_util = require("@dxos/util");
|
|
48
55
|
|
|
49
56
|
// packages/common/tracing/src/trace-sender.ts
|
|
50
57
|
var import_codec_protobuf = require("@dxos/codec-protobuf");
|
|
51
|
-
var FLUSH_INTERVAL = 1e3;
|
|
52
58
|
var TraceSender = class {
|
|
53
59
|
constructor(_traceProcessor) {
|
|
54
60
|
this._traceProcessor = _traceProcessor;
|
|
55
61
|
}
|
|
56
62
|
streamTrace(request) {
|
|
57
63
|
return new import_codec_protobuf.Stream(({ ctx, next }) => {
|
|
58
|
-
const
|
|
59
|
-
dirtyResources: /* @__PURE__ */ new Set(),
|
|
60
|
-
dirtySpans: /* @__PURE__ */ new Set()
|
|
61
|
-
};
|
|
62
|
-
this._traceProcessor.subscriptions.add(subscription);
|
|
63
|
-
ctx.onDispose(() => {
|
|
64
|
-
this._traceProcessor.subscriptions.delete(subscription);
|
|
65
|
-
});
|
|
66
|
-
const flushEvents = (resources, spans) => {
|
|
64
|
+
const flushEvents = (resources, spans, logs) => {
|
|
67
65
|
const event = {
|
|
68
66
|
resourceAdded: [],
|
|
69
67
|
resourceRemoved: [],
|
|
70
|
-
spanAdded: []
|
|
68
|
+
spanAdded: [],
|
|
69
|
+
logAdded: []
|
|
71
70
|
};
|
|
72
71
|
if (resources) {
|
|
73
72
|
for (const id of resources) {
|
|
@@ -105,26 +104,50 @@ var TraceSender = class {
|
|
|
105
104
|
});
|
|
106
105
|
}
|
|
107
106
|
}
|
|
107
|
+
if (logs) {
|
|
108
|
+
for (const log2 of logs) {
|
|
109
|
+
event.logAdded.push({
|
|
110
|
+
log: log2
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
} else {
|
|
114
|
+
for (const log2 of this._traceProcessor.logs) {
|
|
115
|
+
event.logAdded.push({
|
|
116
|
+
log: log2
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
108
120
|
if (event.resourceAdded.length > 0 || event.resourceRemoved.length > 0 || event.spanAdded.length > 0) {
|
|
109
121
|
next(event);
|
|
110
122
|
}
|
|
111
123
|
};
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
flushEvents(subscription.dirtyResources, subscription.dirtySpans);
|
|
124
|
+
const flush = () => {
|
|
125
|
+
flushEvents(subscription.dirtyResources, subscription.dirtySpans, subscription.newLogs);
|
|
115
126
|
subscription.dirtyResources.clear();
|
|
116
127
|
subscription.dirtySpans.clear();
|
|
117
|
-
|
|
128
|
+
subscription.newLogs.length = 0;
|
|
129
|
+
};
|
|
130
|
+
const subscription = {
|
|
131
|
+
flush,
|
|
132
|
+
dirtyResources: /* @__PURE__ */ new Set(),
|
|
133
|
+
dirtySpans: /* @__PURE__ */ new Set(),
|
|
134
|
+
newLogs: []
|
|
135
|
+
};
|
|
136
|
+
this._traceProcessor.subscriptions.add(subscription);
|
|
118
137
|
ctx.onDispose(() => {
|
|
119
|
-
|
|
138
|
+
this._traceProcessor.subscriptions.delete(subscription);
|
|
120
139
|
});
|
|
140
|
+
flushEvents(null, null, null);
|
|
121
141
|
});
|
|
122
142
|
}
|
|
123
143
|
};
|
|
124
144
|
|
|
125
145
|
// packages/common/tracing/src/trace-processor.ts
|
|
146
|
+
var __dxlog_file = "/mnt/ramdisk/work/packages/common/tracing/src/trace-processor.ts";
|
|
126
147
|
var MAX_RESOURCE_RECORDS = 500;
|
|
127
148
|
var MAX_SPAN_RECORDS = 1e3;
|
|
149
|
+
var MAX_LOG_RECORDS = 1e3;
|
|
150
|
+
var REFRESH_INTERVAL = 1e3;
|
|
128
151
|
var TraceProcessor = class {
|
|
129
152
|
constructor() {
|
|
130
153
|
this.resources = /* @__PURE__ */ new Map();
|
|
@@ -132,17 +155,62 @@ var TraceProcessor = class {
|
|
|
132
155
|
this.resourceIdList = [];
|
|
133
156
|
this.spans = /* @__PURE__ */ new Map();
|
|
134
157
|
this.spanIdList = [];
|
|
158
|
+
this.logs = [];
|
|
135
159
|
this.subscriptions = /* @__PURE__ */ new Set();
|
|
160
|
+
this._logProcessor = (config, entry) => {
|
|
161
|
+
switch (entry.level) {
|
|
162
|
+
case import_log.LogLevel.ERROR:
|
|
163
|
+
case import_log.LogLevel.WARN:
|
|
164
|
+
case import_log.LogLevel.TRACE: {
|
|
165
|
+
const scope = entry.meta?.S;
|
|
166
|
+
const resource2 = this.resourceInstanceIndex.get(scope);
|
|
167
|
+
if (!resource2) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const context = (0, import_log.getContextFromEntry)(entry) ?? {};
|
|
171
|
+
for (const key of Object.keys(context)) {
|
|
172
|
+
context[key] = sanitizeValue(context[key]);
|
|
173
|
+
}
|
|
174
|
+
const entryToPush = {
|
|
175
|
+
level: entry.level,
|
|
176
|
+
message: entry.message,
|
|
177
|
+
context,
|
|
178
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
179
|
+
meta: {
|
|
180
|
+
file: entry.meta?.F ?? "",
|
|
181
|
+
line: entry.meta?.L ?? 0,
|
|
182
|
+
resourceId: resource2.data.id
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
this._pushLog(entryToPush);
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
default:
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
import_log.log.addProcessor(this._logProcessor.bind(this), void 0, {
|
|
192
|
+
F: __dxlog_file,
|
|
193
|
+
L: 61,
|
|
194
|
+
S: this,
|
|
195
|
+
C: (f, a) => f(...a)
|
|
196
|
+
});
|
|
197
|
+
const refreshInterval = setInterval(this.refresh.bind(this), REFRESH_INTERVAL);
|
|
198
|
+
(0, import_async.unrefTimeout)(refreshInterval);
|
|
136
199
|
}
|
|
137
200
|
traceResourceConstructor(params) {
|
|
138
201
|
const id = this.resources.size;
|
|
202
|
+
const tracingContext = getTracingContext(Object.getPrototypeOf(params.instance));
|
|
203
|
+
for (const key of Object.keys(tracingContext.metricsProperties)) {
|
|
204
|
+
params.instance[key]._assign(params.instance, key);
|
|
205
|
+
}
|
|
139
206
|
const entry = {
|
|
140
207
|
data: {
|
|
141
208
|
id,
|
|
142
209
|
className: params.constructor.name,
|
|
143
210
|
instanceId: (0, import_util.getPrototypeSpecificInstanceId)(params.instance),
|
|
144
211
|
info: this.getResourceInfo(params.instance),
|
|
145
|
-
links: []
|
|
212
|
+
links: [],
|
|
213
|
+
metrics: this.getResourceMetrics(params.instance)
|
|
146
214
|
},
|
|
147
215
|
instance: new WeakRef(params.instance)
|
|
148
216
|
};
|
|
@@ -159,13 +227,21 @@ var TraceProcessor = class {
|
|
|
159
227
|
const tracingContext = getTracingContext(Object.getPrototypeOf(instance));
|
|
160
228
|
for (const [key, _opts] of Object.entries(tracingContext.infoProperties)) {
|
|
161
229
|
try {
|
|
162
|
-
res[key] = typeof instance[key] === "function" ? instance[key]() : instance[key];
|
|
230
|
+
res[key] = sanitizeValue(typeof instance[key] === "function" ? instance[key]() : instance[key]);
|
|
163
231
|
} catch (err) {
|
|
164
232
|
res[key] = err.message;
|
|
165
233
|
}
|
|
166
234
|
}
|
|
167
235
|
return res;
|
|
168
236
|
}
|
|
237
|
+
getResourceMetrics(instance) {
|
|
238
|
+
const res = [];
|
|
239
|
+
const tracingContext = getTracingContext(Object.getPrototypeOf(instance));
|
|
240
|
+
for (const [key, _opts] of Object.entries(tracingContext.metricsProperties)) {
|
|
241
|
+
res.push(instance[key].getData());
|
|
242
|
+
}
|
|
243
|
+
return res;
|
|
244
|
+
}
|
|
169
245
|
traceSpan(params) {
|
|
170
246
|
const span2 = new TracingSpan(this, params);
|
|
171
247
|
this._flushSpan(span2);
|
|
@@ -180,6 +256,30 @@ var TraceProcessor = class {
|
|
|
180
256
|
createTraceSender() {
|
|
181
257
|
return new TraceSender(this);
|
|
182
258
|
}
|
|
259
|
+
refresh() {
|
|
260
|
+
for (const resource2 of this.resources.values()) {
|
|
261
|
+
const instance = resource2.instance.deref();
|
|
262
|
+
if (!instance) {
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
const tracingContext = getTracingContext(Object.getPrototypeOf(instance));
|
|
266
|
+
const time = performance.now();
|
|
267
|
+
for (const key of Object.keys(tracingContext.metricsProperties)) {
|
|
268
|
+
instance[key]._tick?.(time);
|
|
269
|
+
}
|
|
270
|
+
let _changed = false;
|
|
271
|
+
const oldInfo = resource2.data.info;
|
|
272
|
+
resource2.data.info = this.getResourceInfo(instance);
|
|
273
|
+
_changed ||= !areEqualShallow(oldInfo, resource2.data.info);
|
|
274
|
+
const oldMetrics = resource2.data.metrics;
|
|
275
|
+
resource2.data.metrics = this.getResourceMetrics(instance);
|
|
276
|
+
_changed ||= !areEqualShallow(oldMetrics, resource2.data.metrics);
|
|
277
|
+
this._markResourceDirty(resource2.data.id);
|
|
278
|
+
}
|
|
279
|
+
for (const subscription of this.subscriptions) {
|
|
280
|
+
subscription.flush();
|
|
281
|
+
}
|
|
282
|
+
}
|
|
183
283
|
/**
|
|
184
284
|
* @internal
|
|
185
285
|
*/
|
|
@@ -214,6 +314,15 @@ var TraceProcessor = class {
|
|
|
214
314
|
this.spans.delete(id);
|
|
215
315
|
}
|
|
216
316
|
}
|
|
317
|
+
_pushLog(log1) {
|
|
318
|
+
this.logs.push(log1);
|
|
319
|
+
if (this.logs.length > MAX_LOG_RECORDS) {
|
|
320
|
+
this.logs.shift();
|
|
321
|
+
}
|
|
322
|
+
for (const subscription of this.subscriptions) {
|
|
323
|
+
subscription.newLogs.push(log1);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
217
326
|
};
|
|
218
327
|
var TracingSpan = class _TracingSpan {
|
|
219
328
|
static {
|
|
@@ -278,6 +387,39 @@ var serializeError = (err) => {
|
|
|
278
387
|
};
|
|
279
388
|
};
|
|
280
389
|
var TRACE_PROCESSOR = globalThis.TRACE_PROCESSOR ??= new TraceProcessor();
|
|
390
|
+
var sanitizeValue = (value) => {
|
|
391
|
+
switch (typeof value) {
|
|
392
|
+
case "string":
|
|
393
|
+
case "number":
|
|
394
|
+
case "boolean":
|
|
395
|
+
case "undefined":
|
|
396
|
+
return value;
|
|
397
|
+
break;
|
|
398
|
+
case "object":
|
|
399
|
+
case "function":
|
|
400
|
+
if (value === null) {
|
|
401
|
+
return value;
|
|
402
|
+
break;
|
|
403
|
+
}
|
|
404
|
+
if (typeof value.truncate === "function") {
|
|
405
|
+
return value.truncate();
|
|
406
|
+
}
|
|
407
|
+
return value.toString();
|
|
408
|
+
}
|
|
409
|
+
};
|
|
410
|
+
var areEqualShallow = (a, b) => {
|
|
411
|
+
for (const key in a) {
|
|
412
|
+
if (!(key in b) || a[key] !== b[key]) {
|
|
413
|
+
return false;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
for (const key in b) {
|
|
417
|
+
if (!(key in a) || a[key] !== b[key]) {
|
|
418
|
+
return false;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
return true;
|
|
422
|
+
};
|
|
281
423
|
|
|
282
424
|
// packages/common/tracing/src/api.ts
|
|
283
425
|
var resource = () => (constructor) => {
|
|
@@ -321,6 +463,9 @@ var span = () => (target, propertyKey, descriptor) => {
|
|
|
321
463
|
}
|
|
322
464
|
};
|
|
323
465
|
};
|
|
466
|
+
var metricsCounter = () => (target, propertyKey, descriptor) => {
|
|
467
|
+
getTracingContext(target).metricsProperties[propertyKey] = {};
|
|
468
|
+
};
|
|
324
469
|
var addLink = (parent, child, opts = {}) => {
|
|
325
470
|
TRACE_PROCESSOR.addLink(parent, child, opts);
|
|
326
471
|
};
|
|
@@ -328,15 +473,146 @@ var trace = {
|
|
|
328
473
|
resource,
|
|
329
474
|
info,
|
|
330
475
|
span,
|
|
476
|
+
metricsCounter,
|
|
331
477
|
addLink
|
|
332
478
|
};
|
|
479
|
+
|
|
480
|
+
// packages/common/tracing/src/metrics/base.ts
|
|
481
|
+
var BaseCounter = class {
|
|
482
|
+
/**
|
|
483
|
+
* @internal
|
|
484
|
+
*/
|
|
485
|
+
_assign(instance, name) {
|
|
486
|
+
this._instance = instance;
|
|
487
|
+
this.name = name;
|
|
488
|
+
}
|
|
489
|
+
_tick(time) {
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
|
|
493
|
+
// packages/common/tracing/src/metrics/unary-counter.ts
|
|
494
|
+
var UnaryCounter = class extends BaseCounter {
|
|
495
|
+
constructor({ units } = {}) {
|
|
496
|
+
super();
|
|
497
|
+
this.value = 0;
|
|
498
|
+
this.units = units;
|
|
499
|
+
}
|
|
500
|
+
inc(by = 1) {
|
|
501
|
+
this.value += by;
|
|
502
|
+
}
|
|
503
|
+
getData() {
|
|
504
|
+
return {
|
|
505
|
+
name: this.name,
|
|
506
|
+
counter: {
|
|
507
|
+
value: this.value,
|
|
508
|
+
units: this.units
|
|
509
|
+
}
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
};
|
|
513
|
+
|
|
514
|
+
// packages/common/tracing/src/metrics/time-series-counter.ts
|
|
515
|
+
var MAX_BUCKETS = 60;
|
|
516
|
+
var TimeSeriesCounter = class extends BaseCounter {
|
|
517
|
+
constructor({ units } = {}) {
|
|
518
|
+
super();
|
|
519
|
+
this._currentValue = 0;
|
|
520
|
+
this._totalValue = 0;
|
|
521
|
+
this._buckets = [];
|
|
522
|
+
this.units = units;
|
|
523
|
+
}
|
|
524
|
+
inc(by = 1) {
|
|
525
|
+
this._currentValue += by;
|
|
526
|
+
this._totalValue += by;
|
|
527
|
+
}
|
|
528
|
+
_tick(time) {
|
|
529
|
+
this._buckets.push(this._currentValue);
|
|
530
|
+
if (this._buckets.length > MAX_BUCKETS) {
|
|
531
|
+
this._buckets.shift();
|
|
532
|
+
}
|
|
533
|
+
this._currentValue = 0;
|
|
534
|
+
}
|
|
535
|
+
getData() {
|
|
536
|
+
return {
|
|
537
|
+
name: this.name,
|
|
538
|
+
timeSeries: {
|
|
539
|
+
tracks: [
|
|
540
|
+
{
|
|
541
|
+
name: this.name,
|
|
542
|
+
units: this.units,
|
|
543
|
+
points: this._buckets.map((value, index) => ({
|
|
544
|
+
value
|
|
545
|
+
})),
|
|
546
|
+
total: this._totalValue
|
|
547
|
+
}
|
|
548
|
+
]
|
|
549
|
+
}
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
};
|
|
553
|
+
|
|
554
|
+
// packages/common/tracing/src/metrics/time-usage-counter.ts
|
|
555
|
+
var MAX_BUCKETS2 = 60;
|
|
556
|
+
var TimeUsageCounter = class extends BaseCounter {
|
|
557
|
+
constructor() {
|
|
558
|
+
super(...arguments);
|
|
559
|
+
this._currentValue = 0;
|
|
560
|
+
this._totalValue = 0;
|
|
561
|
+
this._buckets = [];
|
|
562
|
+
this._lastTickTime = performance.now();
|
|
563
|
+
}
|
|
564
|
+
record(time) {
|
|
565
|
+
this._currentValue += time;
|
|
566
|
+
this._totalValue += time;
|
|
567
|
+
}
|
|
568
|
+
beginRecording() {
|
|
569
|
+
const start = performance.now();
|
|
570
|
+
return {
|
|
571
|
+
end: () => {
|
|
572
|
+
const end = performance.now();
|
|
573
|
+
this.record(end - start);
|
|
574
|
+
}
|
|
575
|
+
};
|
|
576
|
+
}
|
|
577
|
+
_tick(time) {
|
|
578
|
+
const delta = time - this._lastTickTime;
|
|
579
|
+
this._lastTickTime = time;
|
|
580
|
+
const percentage = this._currentValue / delta * 100;
|
|
581
|
+
this._buckets.push(percentage);
|
|
582
|
+
if (this._buckets.length > MAX_BUCKETS2) {
|
|
583
|
+
this._buckets.shift();
|
|
584
|
+
}
|
|
585
|
+
this._currentValue = 0;
|
|
586
|
+
}
|
|
587
|
+
getData() {
|
|
588
|
+
return {
|
|
589
|
+
name: this.name,
|
|
590
|
+
timeSeries: {
|
|
591
|
+
tracks: [
|
|
592
|
+
{
|
|
593
|
+
name: this.name,
|
|
594
|
+
units: "%",
|
|
595
|
+
points: this._buckets.map((value, index) => ({
|
|
596
|
+
value
|
|
597
|
+
})),
|
|
598
|
+
total: this._totalValue
|
|
599
|
+
}
|
|
600
|
+
]
|
|
601
|
+
}
|
|
602
|
+
};
|
|
603
|
+
}
|
|
604
|
+
};
|
|
333
605
|
// Annotate the CommonJS export names for ESM import in node:
|
|
334
606
|
0 && (module.exports = {
|
|
607
|
+
BaseCounter,
|
|
335
608
|
TRACE_PROCESSOR,
|
|
336
609
|
TRACE_SPAN_ATTRIBUTE,
|
|
610
|
+
TimeSeriesCounter,
|
|
611
|
+
TimeUsageCounter,
|
|
337
612
|
TraceProcessor,
|
|
338
613
|
TraceSender,
|
|
339
614
|
TracingSpan,
|
|
615
|
+
UnaryCounter,
|
|
340
616
|
getTracingContext,
|
|
341
617
|
symbolTracingContext,
|
|
342
618
|
trace
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/index.ts", "../../../src/api.ts", "../../../src/symbols.ts", "../../../src/trace-processor.ts", "../../../src/trace-sender.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport * from './api';\nexport * from './symbols';\nexport * from './trace-processor';\nexport * from './trace-sender';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Context } from '@dxos/context';\n\nimport { getTracingContext } from './symbols';\nimport { TRACE_PROCESSOR } from './trace-processor';\n\nconst resource =\n () =>\n <T extends { new (...args: any[]): {} }>(constructor: T) => {\n const klass = class extends constructor {\n constructor(...rest: any[]) {\n super(...rest);\n TRACE_PROCESSOR.traceResourceConstructor({ constructor, instance: this });\n }\n };\n Object.defineProperty(klass, 'name', { value: constructor.name });\n return klass;\n };\n\nconst info = () => (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => {\n getTracingContext(target).infoProperties[propertyKey] = {};\n};\n\nconst span = () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<(...args: any) => any>) => {\n const method = descriptor.value!;\n\n descriptor.value = async function (this: any, ...args: any) {\n const parentCtx = args[0] instanceof Context ? args[0] : null;\n const span = TRACE_PROCESSOR.traceSpan({ parentCtx, methodName: propertyKey, instance: this });\n\n const callArgs = span.ctx ? [span.ctx, ...args.slice(1)] : args;\n try {\n return await method.apply(this, callArgs);\n } catch (err) {\n span.markError(err);\n throw err;\n } finally {\n span.markSuccess();\n }\n };\n};\n\nexport type AddLinkOptions = {};\n\nconst addLink = (parent: any, child: any, opts: AddLinkOptions = {}) => {\n TRACE_PROCESSOR.addLink(parent, child, opts);\n};\n\nexport const trace = {\n resource,\n info,\n span,\n\n addLink,\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const symbolTracingContext = Symbol('dxos.tracing-context');\n\nexport type TracingContext = {\n infoProperties: Record<string, {}>;\n};\n\nexport const getTracingContext = (target: any): TracingContext => {\n return (target[symbolTracingContext] ??= {\n infoProperties: {},\n });\n};\n\nexport const TRACE_SPAN_ATTRIBUTE = 'dxos.trace-span';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Context } from '@dxos/context';\nimport { Error as SerializedError } from '@dxos/protocols/proto/dxos/error';\nimport { Resource, Span } from '@dxos/protocols/proto/dxos/tracing';\nimport { getPrototypeSpecificInstanceId } from '@dxos/util';\n\nimport type { AddLinkOptions } from './api';\nimport { TRACE_SPAN_ATTRIBUTE, getTracingContext } from './symbols';\nimport { TraceSender } from './trace-sender';\n\nexport type TraceResourceConstructorParams = {\n constructor: { new (...args: any[]): {} };\n instance: any;\n};\n\nexport type TraceSpanParams = {\n instance: any;\n methodName: string;\n parentCtx: Context | null;\n};\n\nexport type ResourceEntry = {\n data: Resource;\n instance: WeakRef<any>;\n};\n\nexport type TraceSubscription = {\n dirtyResources: Set<number>;\n dirtySpans: Set<number>;\n};\n\nconst MAX_RESOURCE_RECORDS = 500;\nconst MAX_SPAN_RECORDS = 1_000;\n\nexport class TraceProcessor {\n resources = new Map<number, ResourceEntry>();\n resourceInstanceIndex = new WeakMap<any, ResourceEntry>();\n resourceIdList: number[] = [];\n\n spans = new Map<number, Span>();\n spanIdList: number[] = [];\n\n subscriptions: Set<TraceSubscription> = new Set();\n\n traceResourceConstructor(params: TraceResourceConstructorParams) {\n const id = this.resources.size;\n const entry: ResourceEntry = {\n data: {\n id,\n className: params.constructor.name,\n instanceId: getPrototypeSpecificInstanceId(params.instance),\n info: this.getResourceInfo(params.instance),\n links: [],\n },\n instance: new WeakRef(params.instance),\n };\n this.resources.set(id, entry);\n this.resourceInstanceIndex.set(params.instance, entry);\n this.resourceIdList.push(id);\n if (this.resourceIdList.length > MAX_RESOURCE_RECORDS) {\n this._clearResources();\n }\n this._markResourceDirty(id);\n }\n\n getResourceInfo(instance: any): Record<string, any> {\n const res: Record<string, any> = {};\n const tracingContext = getTracingContext(Object.getPrototypeOf(instance));\n\n for (const [key, _opts] of Object.entries(tracingContext.infoProperties)) {\n try {\n res[key] = typeof instance[key] === 'function' ? instance[key]() : instance[key];\n } catch (err: any) {\n res[key] = err.message;\n }\n }\n\n return res;\n }\n\n traceSpan(params: TraceSpanParams): TracingSpan {\n const span = new TracingSpan(this, params);\n this._flushSpan(span);\n return span;\n }\n\n addLink(parent: any, child: any, opts: AddLinkOptions) {}\n\n getResourceId(instance: any): number | null {\n const entry = this.resourceInstanceIndex.get(instance);\n return entry ? entry.data.id : null;\n }\n\n createTraceSender() {\n return new TraceSender(this);\n }\n\n /**\n * @internal\n */\n _flushSpan(runtimeSpan: TracingSpan) {\n const span = runtimeSpan.serialize();\n this.spans.set(span.id, span);\n this.spanIdList.push(span.id);\n if (this.spanIdList.length > MAX_SPAN_RECORDS) {\n this._clearSpans();\n }\n this._markSpanDirty(span.id);\n }\n\n private _markResourceDirty(id: number) {\n for (const subscription of this.subscriptions) {\n subscription.dirtyResources.add(id);\n }\n }\n\n private _markSpanDirty(id: number) {\n for (const subscription of this.subscriptions) {\n subscription.dirtySpans.add(id);\n }\n }\n\n private _clearResources() {\n // TODO(dmaretskyi): Use FinalizationRegistry to delete finalized resources first.\n while (this.resourceIdList.length > MAX_RESOURCE_RECORDS) {\n const id = this.resourceIdList.shift()!;\n this.resources.delete(id);\n }\n }\n\n private _clearSpans() {\n while (this.spanIdList.length > MAX_SPAN_RECORDS) {\n const id = this.spanIdList.shift()!;\n this.spans.delete(id);\n }\n }\n}\n\nexport class TracingSpan {\n static nextId = 0;\n\n readonly id: number;\n readonly parentId: number | null = null;\n readonly methodName: string;\n readonly resourceId: number | null = null;\n startTs: number;\n endTs: number | null = null;\n error: SerializedError | null = null;\n\n private readonly _ctx: Context | null = null;\n\n constructor(private _traceProcessor: TraceProcessor, params: TraceSpanParams) {\n this.id = TracingSpan.nextId++;\n this.methodName = params.methodName;\n this.resourceId = _traceProcessor.getResourceId(params.instance);\n this.startTs = performance.now();\n\n if (params.parentCtx) {\n this._ctx = params.parentCtx.derive({\n attributes: {\n [TRACE_SPAN_ATTRIBUTE]: this.id,\n },\n });\n const parentId = params.parentCtx.getAttribute(TRACE_SPAN_ATTRIBUTE);\n if (typeof parentId === 'number') {\n this.parentId = parentId;\n }\n }\n }\n\n get ctx(): Context | null {\n return this._ctx;\n }\n\n markSuccess() {\n this.endTs = performance.now();\n this._traceProcessor._flushSpan(this);\n }\n\n markError(err: unknown) {\n this.endTs = performance.now();\n this.error = serializeError(err);\n this._traceProcessor._flushSpan(this);\n }\n\n serialize(): Span {\n return {\n id: this.id,\n resourceId: this.resourceId ?? undefined,\n methodName: this.methodName,\n parentId: this.parentId ?? undefined,\n startTs: this.startTs.toFixed(3),\n endTs: this.endTs?.toFixed(3) ?? undefined,\n error: this.error ?? undefined,\n };\n }\n}\n\nconst serializeError = (err: unknown): SerializedError => {\n if (err instanceof Error) {\n return {\n name: err.name,\n message: err.message,\n };\n }\n\n return {\n message: String(err),\n };\n};\n\nexport const TRACE_PROCESSOR: TraceProcessor = ((globalThis as any).TRACE_PROCESSOR ??= new TraceProcessor());\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Stream } from '@dxos/codec-protobuf';\nimport { StreamTraceEvent, TracingService } from '@dxos/protocols/proto/dxos/tracing';\n\nimport { TraceProcessor, TraceSubscription } from './trace-processor';\n\nconst FLUSH_INTERVAL = 1_000;\n\nexport class TraceSender implements TracingService {\n constructor(private _traceProcessor: TraceProcessor) {}\n\n streamTrace(request: void): Stream<StreamTraceEvent> {\n return new Stream(({ ctx, next }) => {\n const subscription: TraceSubscription = {\n dirtyResources: new Set(),\n dirtySpans: new Set(),\n };\n this._traceProcessor.subscriptions.add(subscription);\n ctx.onDispose(() => {\n this._traceProcessor.subscriptions.delete(subscription);\n });\n\n const flushEvents = (resources: Set<number> | null, spans: Set<number> | null) => {\n const event: StreamTraceEvent = {\n resourceAdded: [],\n resourceRemoved: [],\n spanAdded: [],\n };\n\n if (resources) {\n for (const id of resources) {\n const entry = this._traceProcessor.resources.get(id);\n if (entry) {\n event.resourceAdded!.push({ resource: entry.data });\n } else {\n event.resourceRemoved!.push({ id });\n }\n }\n } else {\n for (const entry of this._traceProcessor.resources.values()) {\n event.resourceAdded!.push({ resource: entry.data });\n }\n }\n\n if (spans) {\n for (const id of spans) {\n const span = this._traceProcessor.spans.get(id);\n if (span) {\n event.spanAdded!.push({ span });\n }\n }\n } else {\n for (const span of this._traceProcessor.spans.values()) {\n event.spanAdded!.push({ span });\n }\n }\n\n if (event.resourceAdded!.length > 0 || event.resourceRemoved!.length > 0 || event.spanAdded!.length > 0) {\n next(event);\n }\n };\n\n flushEvents(null, null);\n\n const timer = setInterval(() => {\n flushEvents(subscription.dirtyResources, subscription.dirtySpans);\n subscription.dirtyResources.clear();\n subscription.dirtySpans.clear();\n }, FLUSH_INTERVAL);\n ctx.onDispose(() => {\n clearInterval(timer);\n });\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["symbolTracingContext", "Symbol", "getTracingContext", "target", "infoProperties", "
|
|
3
|
+
"sources": ["../../../src/index.ts", "../../../src/api.ts", "../../../src/symbols.ts", "../../../src/trace-processor.ts", "../../../src/trace-sender.ts", "../../../src/metrics/base.ts", "../../../src/metrics/unary-counter.ts", "../../../src/metrics/time-series-counter.ts", "../../../src/metrics/time-usage-counter.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport * from './api';\nexport * from './symbols';\nexport * from './trace-processor';\nexport * from './trace-sender';\nexport * from './metrics';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Context } from '@dxos/context';\n\nimport { getTracingContext } from './symbols';\nimport { TRACE_PROCESSOR } from './trace-processor';\n\n/**\n * Annotates a class as a tracked resource.\n */\nconst resource =\n () =>\n <T extends { new (...args: any[]): {} }>(constructor: T) => {\n const klass = class extends constructor {\n constructor(...rest: any[]) {\n super(...rest);\n TRACE_PROCESSOR.traceResourceConstructor({ constructor, instance: this });\n }\n };\n Object.defineProperty(klass, 'name', { value: constructor.name });\n return klass;\n };\n\n/**\n * Marks a property or a method to be included in the resource info section.\n */\nconst info = () => (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => {\n getTracingContext(target).infoProperties[propertyKey] = {};\n};\n\nconst span = () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<(...args: any) => any>) => {\n const method = descriptor.value!;\n\n descriptor.value = async function (this: any, ...args: any) {\n const parentCtx = args[0] instanceof Context ? args[0] : null;\n const span = TRACE_PROCESSOR.traceSpan({ parentCtx, methodName: propertyKey, instance: this });\n\n const callArgs = span.ctx ? [span.ctx, ...args.slice(1)] : args;\n try {\n return await method.apply(this, callArgs);\n } catch (err) {\n span.markError(err);\n throw err;\n } finally {\n span.markSuccess();\n }\n };\n};\n\n/**\n * Attaches metrics counter to the resource.\n */\nconst metricsCounter = () => (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => {\n getTracingContext(target).metricsProperties[propertyKey] = {};\n};\n\nexport type AddLinkOptions = {};\n\nconst addLink = (parent: any, child: any, opts: AddLinkOptions = {}) => {\n TRACE_PROCESSOR.addLink(parent, child, opts);\n};\n\nexport const trace = {\n resource,\n info,\n span,\n metricsCounter,\n\n addLink,\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const symbolTracingContext = Symbol('dxos.tracing.context');\n\nexport type TracingContext = {\n infoProperties: Record<string, {}>;\n metricsProperties: Record<string, {}>;\n};\n\nexport const getTracingContext = (target: any): TracingContext => {\n return ((target[symbolTracingContext] as TracingContext | undefined) ??= {\n infoProperties: {},\n metricsProperties: {},\n });\n};\n\nexport const TRACE_SPAN_ATTRIBUTE = 'dxos.trace-span';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { unrefTimeout } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { LogLevel, LogProcessor, getContextFromEntry, log } from '@dxos/log';\nimport { LogEntry } from '@dxos/protocols/proto/dxos/client/services';\nimport { Error as SerializedError } from '@dxos/protocols/proto/dxos/error';\nimport { Metric, Resource, Span } from '@dxos/protocols/proto/dxos/tracing';\nimport { getPrototypeSpecificInstanceId } from '@dxos/util';\n\nimport type { AddLinkOptions } from './api';\nimport { BaseCounter } from './metrics';\nimport { TRACE_SPAN_ATTRIBUTE, getTracingContext } from './symbols';\nimport { TraceSender } from './trace-sender';\n\nexport type TraceResourceConstructorParams = {\n constructor: { new (...args: any[]): {} };\n instance: any;\n};\n\nexport type TraceSpanParams = {\n instance: any;\n methodName: string;\n parentCtx: Context | null;\n};\n\nexport type ResourceEntry = {\n data: Resource;\n instance: WeakRef<any>;\n};\n\nexport type TraceSubscription = {\n flush: () => void;\n\n dirtyResources: Set<number>;\n dirtySpans: Set<number>;\n newLogs: LogEntry[];\n};\n\nconst MAX_RESOURCE_RECORDS = 500;\nconst MAX_SPAN_RECORDS = 1_000;\nconst MAX_LOG_RECORDS = 1_000;\n\nconst REFRESH_INTERVAL = 1_000;\n\nexport class TraceProcessor {\n resources = new Map<number, ResourceEntry>();\n resourceInstanceIndex = new WeakMap<any, ResourceEntry>();\n resourceIdList: number[] = [];\n\n spans = new Map<number, Span>();\n spanIdList: number[] = [];\n\n logs: LogEntry[] = [];\n\n subscriptions: Set<TraceSubscription> = new Set();\n\n constructor() {\n log.addProcessor(this._logProcessor.bind(this));\n\n const refreshInterval = setInterval(this.refresh.bind(this), REFRESH_INTERVAL);\n unrefTimeout(refreshInterval);\n }\n\n traceResourceConstructor(params: TraceResourceConstructorParams) {\n const id = this.resources.size;\n\n // init metrics counters.\n const tracingContext = getTracingContext(Object.getPrototypeOf(params.instance));\n for (const key of Object.keys(tracingContext.metricsProperties)) {\n (params.instance[key] as BaseCounter)._assign(params.instance, key);\n }\n\n const entry: ResourceEntry = {\n data: {\n id,\n className: params.constructor.name,\n instanceId: getPrototypeSpecificInstanceId(params.instance),\n info: this.getResourceInfo(params.instance),\n links: [],\n metrics: this.getResourceMetrics(params.instance),\n },\n instance: new WeakRef(params.instance),\n };\n this.resources.set(id, entry);\n this.resourceInstanceIndex.set(params.instance, entry);\n this.resourceIdList.push(id);\n if (this.resourceIdList.length > MAX_RESOURCE_RECORDS) {\n this._clearResources();\n }\n this._markResourceDirty(id);\n }\n\n getResourceInfo(instance: any): Record<string, any> {\n const res: Record<string, any> = {};\n const tracingContext = getTracingContext(Object.getPrototypeOf(instance));\n\n for (const [key, _opts] of Object.entries(tracingContext.infoProperties)) {\n try {\n res[key] = sanitizeValue(typeof instance[key] === 'function' ? instance[key]() : instance[key]);\n } catch (err: any) {\n res[key] = err.message;\n }\n }\n\n return res;\n }\n\n getResourceMetrics(instance: any): Metric[] {\n const res: Metric[] = [];\n const tracingContext = getTracingContext(Object.getPrototypeOf(instance));\n\n for (const [key, _opts] of Object.entries(tracingContext.metricsProperties)) {\n res.push(instance[key].getData());\n }\n\n return res;\n }\n\n traceSpan(params: TraceSpanParams): TracingSpan {\n const span = new TracingSpan(this, params);\n this._flushSpan(span);\n return span;\n }\n\n addLink(parent: any, child: any, opts: AddLinkOptions) {}\n\n getResourceId(instance: any): number | null {\n const entry = this.resourceInstanceIndex.get(instance);\n return entry ? entry.data.id : null;\n }\n\n createTraceSender() {\n return new TraceSender(this);\n }\n\n refresh() {\n for (const resource of this.resources.values()) {\n const instance = resource.instance.deref();\n if (!instance) {\n continue;\n }\n\n const tracingContext = getTracingContext(Object.getPrototypeOf(instance));\n const time = performance.now();\n for (const key of Object.keys(tracingContext.metricsProperties)) {\n (instance[key] as BaseCounter)._tick?.(time);\n }\n\n let _changed = false;\n\n const oldInfo = resource.data.info;\n resource.data.info = this.getResourceInfo(instance);\n _changed ||= !areEqualShallow(oldInfo, resource.data.info);\n\n const oldMetrics = resource.data.metrics;\n resource.data.metrics = this.getResourceMetrics(instance);\n _changed ||= !areEqualShallow(oldMetrics, resource.data.metrics);\n\n // TODO(dmaretskyi): Test if works and enable.\n // if (changed) {\n this._markResourceDirty(resource.data.id);\n // }\n }\n\n for (const subscription of this.subscriptions) {\n subscription.flush();\n }\n }\n\n /**\n * @internal\n */\n _flushSpan(runtimeSpan: TracingSpan) {\n const span = runtimeSpan.serialize();\n this.spans.set(span.id, span);\n this.spanIdList.push(span.id);\n if (this.spanIdList.length > MAX_SPAN_RECORDS) {\n this._clearSpans();\n }\n this._markSpanDirty(span.id);\n }\n\n private _markResourceDirty(id: number) {\n for (const subscription of this.subscriptions) {\n subscription.dirtyResources.add(id);\n }\n }\n\n private _markSpanDirty(id: number) {\n for (const subscription of this.subscriptions) {\n subscription.dirtySpans.add(id);\n }\n }\n\n private _clearResources() {\n // TODO(dmaretskyi): Use FinalizationRegistry to delete finalized resources first.\n while (this.resourceIdList.length > MAX_RESOURCE_RECORDS) {\n const id = this.resourceIdList.shift()!;\n this.resources.delete(id);\n }\n }\n\n private _clearSpans() {\n while (this.spanIdList.length > MAX_SPAN_RECORDS) {\n const id = this.spanIdList.shift()!;\n this.spans.delete(id);\n }\n }\n\n private _pushLog(log: LogEntry) {\n this.logs.push(log);\n if (this.logs.length > MAX_LOG_RECORDS) {\n this.logs.shift();\n }\n\n for (const subscription of this.subscriptions) {\n subscription.newLogs.push(log);\n }\n }\n\n private _logProcessor: LogProcessor = (config, entry) => {\n switch (entry.level) {\n case LogLevel.ERROR:\n case LogLevel.WARN:\n case LogLevel.TRACE: {\n const scope = entry.meta?.S;\n const resource = this.resourceInstanceIndex.get(scope);\n if (!resource) {\n return;\n }\n\n const context = getContextFromEntry(entry) ?? {};\n\n for (const key of Object.keys(context)) {\n context[key] = sanitizeValue(context[key]);\n }\n\n const entryToPush: LogEntry = {\n level: entry.level,\n message: entry.message,\n context,\n timestamp: new Date(),\n meta: {\n file: entry.meta?.F ?? '',\n line: entry.meta?.L ?? 0,\n resourceId: resource.data.id,\n },\n };\n this._pushLog(entryToPush);\n break;\n }\n default:\n }\n };\n}\n\nexport class TracingSpan {\n static nextId = 0;\n\n readonly id: number;\n readonly parentId: number | null = null;\n readonly methodName: string;\n readonly resourceId: number | null = null;\n startTs: number;\n endTs: number | null = null;\n error: SerializedError | null = null;\n\n private readonly _ctx: Context | null = null;\n\n constructor(private _traceProcessor: TraceProcessor, params: TraceSpanParams) {\n this.id = TracingSpan.nextId++;\n this.methodName = params.methodName;\n this.resourceId = _traceProcessor.getResourceId(params.instance);\n this.startTs = performance.now();\n\n if (params.parentCtx) {\n this._ctx = params.parentCtx.derive({\n attributes: {\n [TRACE_SPAN_ATTRIBUTE]: this.id,\n },\n });\n const parentId = params.parentCtx.getAttribute(TRACE_SPAN_ATTRIBUTE);\n if (typeof parentId === 'number') {\n this.parentId = parentId;\n }\n }\n }\n\n get ctx(): Context | null {\n return this._ctx;\n }\n\n markSuccess() {\n this.endTs = performance.now();\n this._traceProcessor._flushSpan(this);\n }\n\n markError(err: unknown) {\n this.endTs = performance.now();\n this.error = serializeError(err);\n this._traceProcessor._flushSpan(this);\n }\n\n serialize(): Span {\n return {\n id: this.id,\n resourceId: this.resourceId ?? undefined,\n methodName: this.methodName,\n parentId: this.parentId ?? undefined,\n startTs: this.startTs.toFixed(3),\n endTs: this.endTs?.toFixed(3) ?? undefined,\n error: this.error ?? undefined,\n };\n }\n}\n\nconst serializeError = (err: unknown): SerializedError => {\n if (err instanceof Error) {\n return {\n name: err.name,\n message: err.message,\n };\n }\n\n return {\n message: String(err),\n };\n};\n\nexport const TRACE_PROCESSOR: TraceProcessor = ((globalThis as any).TRACE_PROCESSOR ??= new TraceProcessor());\n\nconst sanitizeValue = (value: any) => {\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean':\n case 'undefined':\n return value;\n break;\n case 'object':\n case 'function':\n if (value === null) {\n return value;\n break;\n }\n\n // TODO(dmaretskyi): Expose trait.\n if (typeof value.truncate === 'function') {\n return value.truncate();\n }\n\n return value.toString();\n }\n};\n\nconst areEqualShallow = (a: any, b: any) => {\n for (const key in a) {\n if (!(key in b) || a[key] !== b[key]) {\n return false;\n }\n }\n for (const key in b) {\n if (!(key in a) || a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Stream } from '@dxos/codec-protobuf';\nimport { LogEntry } from '@dxos/protocols/proto/dxos/client/services';\nimport { StreamTraceEvent, TracingService } from '@dxos/protocols/proto/dxos/tracing';\n\nimport { TraceProcessor, TraceSubscription } from './trace-processor';\n\nexport class TraceSender implements TracingService {\n constructor(private _traceProcessor: TraceProcessor) {}\n\n streamTrace(request: void): Stream<StreamTraceEvent> {\n return new Stream(({ ctx, next }) => {\n const flushEvents = (resources: Set<number> | null, spans: Set<number> | null, logs: LogEntry[] | null) => {\n const event: StreamTraceEvent = {\n resourceAdded: [],\n resourceRemoved: [],\n spanAdded: [],\n logAdded: [],\n };\n\n if (resources) {\n for (const id of resources) {\n const entry = this._traceProcessor.resources.get(id);\n if (entry) {\n event.resourceAdded!.push({ resource: entry.data });\n } else {\n event.resourceRemoved!.push({ id });\n }\n }\n } else {\n for (const entry of this._traceProcessor.resources.values()) {\n event.resourceAdded!.push({ resource: entry.data });\n }\n }\n\n if (spans) {\n for (const id of spans) {\n const span = this._traceProcessor.spans.get(id);\n if (span) {\n event.spanAdded!.push({ span });\n }\n }\n } else {\n for (const span of this._traceProcessor.spans.values()) {\n event.spanAdded!.push({ span });\n }\n }\n\n if (logs) {\n for (const log of logs) {\n event.logAdded!.push({ log });\n }\n } else {\n for (const log of this._traceProcessor.logs) {\n event.logAdded!.push({ log });\n }\n }\n\n if (event.resourceAdded!.length > 0 || event.resourceRemoved!.length > 0 || event.spanAdded!.length > 0) {\n next(event);\n }\n };\n\n const flush = () => {\n flushEvents(subscription.dirtyResources, subscription.dirtySpans, subscription.newLogs);\n subscription.dirtyResources.clear();\n subscription.dirtySpans.clear();\n subscription.newLogs.length = 0;\n };\n\n const subscription: TraceSubscription = {\n flush,\n dirtyResources: new Set(),\n dirtySpans: new Set(),\n newLogs: [],\n };\n this._traceProcessor.subscriptions.add(subscription);\n ctx.onDispose(() => {\n this._traceProcessor.subscriptions.delete(subscription);\n });\n\n flushEvents(null, null, null);\n });\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Metric } from '@dxos/protocols/proto/dxos/tracing';\n\nexport abstract class BaseCounter {\n /**\n * @internal\n */\n _instance: any;\n\n name?: string;\n\n /**\n * @internal\n */\n _assign(instance: any, name: string) {\n this._instance = instance;\n this.name = name;\n }\n\n abstract getData(): Metric;\n\n _tick(time: number): void {}\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Metric } from '@dxos/protocols/proto/dxos/tracing';\n\nimport { BaseCounter } from './base';\n\nexport class UnaryCounter extends BaseCounter {\n value = 0;\n units?: string;\n\n constructor({ units }: { units?: string } = {}) {\n super();\n this.units = units;\n }\n\n inc(by = 1) {\n this.value += by;\n }\n\n getData(): Metric {\n return {\n name: this.name!,\n counter: {\n value: this.value,\n units: this.units,\n },\n };\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Metric } from '@dxos/protocols/proto/dxos/tracing';\n\nimport { BaseCounter } from './base';\n\nconst MAX_BUCKETS = 60;\n\nexport class TimeSeriesCounter extends BaseCounter {\n private _currentValue = 0;\n private _totalValue = 0;\n private _buckets: number[] = [];\n units?: string;\n\n constructor({ units }: { units?: string } = {}) {\n super();\n this.units = units;\n }\n\n inc(by = 1) {\n this._currentValue += by;\n this._totalValue += by;\n }\n\n override _tick(time: number): void {\n this._buckets.push(this._currentValue);\n if (this._buckets.length > MAX_BUCKETS) {\n this._buckets.shift();\n }\n this._currentValue = 0;\n }\n\n override getData(): Metric {\n return {\n name: this.name!,\n timeSeries: {\n tracks: [\n {\n name: this.name!,\n units: this.units,\n points: this._buckets.map((value, index) => ({\n value,\n })),\n total: this._totalValue,\n },\n ],\n },\n };\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Metric } from '@dxos/protocols/proto/dxos/tracing';\n\nimport { BaseCounter } from './base';\n\nconst MAX_BUCKETS = 60;\n\nexport class TimeUsageCounter extends BaseCounter {\n private _currentValue = 0;\n private _totalValue = 0;\n private _buckets: number[] = [];\n\n private _lastTickTime = performance.now();\n\n record(time: number) {\n this._currentValue += time;\n this._totalValue += time;\n }\n\n beginRecording(): { end: () => void } {\n const start = performance.now();\n return {\n end: () => {\n const end = performance.now();\n this.record(end - start);\n },\n };\n }\n\n override _tick(time: number): void {\n const delta = time - this._lastTickTime;\n this._lastTickTime = time;\n\n const percentage = (this._currentValue / delta) * 100;\n this._buckets.push(percentage);\n if (this._buckets.length > MAX_BUCKETS) {\n this._buckets.shift();\n }\n this._currentValue = 0;\n }\n\n override getData(): Metric {\n return {\n name: this.name!,\n timeSeries: {\n tracks: [\n {\n name: this.name!,\n units: '%',\n points: this._buckets.map((value, index) => ({\n value,\n })),\n total: this._totalValue,\n },\n ],\n },\n };\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;ACIA,qBAAwB;;;ACAjB,IAAMA,uBAAuBC,OAAO,sBAAA;AAOpC,IAAMC,oBAAoB,CAACC,WAAAA;AAChC,SAASA,OAAOH,oBAAAA,MAAyD;IACvEI,gBAAgB,CAAC;IACjBC,mBAAmB,CAAC;EACtB;AACF;AAEO,IAAMC,uBAAuB;;;ACdpC,mBAA6B;AAE7B,iBAAiE;AAIjE,kBAA+C;;;ACN/C,4BAAuB;AAMhB,IAAMC,cAAN,MAAMA;EACXC,YAAoBC,iBAAiC;2BAAjCA;EAAkC;EAEtDC,YAAYC,SAAyC;AACnD,WAAO,IAAIC,6BAAO,CAAC,EAAEC,KAAKC,KAAI,MAAE;AAC9B,YAAMC,cAAc,CAACC,WAA+BC,OAA2BC,SAAAA;AAC7E,cAAMC,QAA0B;UAC9BC,eAAe,CAAA;UACfC,iBAAiB,CAAA;UACjBC,WAAW,CAAA;UACXC,UAAU,CAAA;QACZ;AAEA,YAAIP,WAAW;AACb,qBAAWQ,MAAMR,WAAW;AAC1B,kBAAMS,QAAQ,KAAKhB,gBAAgBO,UAAUU,IAAIF,EAAAA;AACjD,gBAAIC,OAAO;AACTN,oBAAMC,cAAeO,KAAK;gBAAEC,UAAUH,MAAMI;cAAK,CAAA;YACnD,OAAO;AACLV,oBAAME,gBAAiBM,KAAK;gBAAEH;cAAG,CAAA;YACnC;UACF;QACF,OAAO;AACL,qBAAWC,SAAS,KAAKhB,gBAAgBO,UAAUc,OAAM,GAAI;AAC3DX,kBAAMC,cAAeO,KAAK;cAAEC,UAAUH,MAAMI;YAAK,CAAA;UACnD;QACF;AAEA,YAAIZ,OAAO;AACT,qBAAWO,MAAMP,OAAO;AACtB,kBAAMc,QAAO,KAAKtB,gBAAgBQ,MAAMS,IAAIF,EAAAA;AAC5C,gBAAIO,OAAM;AACRZ,oBAAMG,UAAWK,KAAK;gBAAEI,MAAAA;cAAK,CAAA;YAC/B;UACF;QACF,OAAO;AACL,qBAAWA,SAAQ,KAAKtB,gBAAgBQ,MAAMa,OAAM,GAAI;AACtDX,kBAAMG,UAAWK,KAAK;cAAEI,MAAAA;YAAK,CAAA;UAC/B;QACF;AAEA,YAAIb,MAAM;AACR,qBAAWc,QAAOd,MAAM;AACtBC,kBAAMI,SAAUI,KAAK;cAAEK,KAAAA;YAAI,CAAA;UAC7B;QACF,OAAO;AACL,qBAAWA,QAAO,KAAKvB,gBAAgBS,MAAM;AAC3CC,kBAAMI,SAAUI,KAAK;cAAEK,KAAAA;YAAI,CAAA;UAC7B;QACF;AAEA,YAAIb,MAAMC,cAAea,SAAS,KAAKd,MAAME,gBAAiBY,SAAS,KAAKd,MAAMG,UAAWW,SAAS,GAAG;AACvGnB,eAAKK,KAAAA;QACP;MACF;AAEA,YAAMe,QAAQ,MAAA;AACZnB,oBAAYoB,aAAaC,gBAAgBD,aAAaE,YAAYF,aAAaG,OAAO;AACtFH,qBAAaC,eAAeG,MAAK;AACjCJ,qBAAaE,WAAWE,MAAK;AAC7BJ,qBAAaG,QAAQL,SAAS;MAChC;AAEA,YAAME,eAAkC;QACtCD;QACAE,gBAAgB,oBAAII,IAAAA;QACpBH,YAAY,oBAAIG,IAAAA;QAChBF,SAAS,CAAA;MACX;AACA,WAAK7B,gBAAgBgC,cAAcC,IAAIP,YAAAA;AACvCtB,UAAI8B,UAAU,MAAA;AACZ,aAAKlC,gBAAgBgC,cAAcG,OAAOT,YAAAA;MAC5C,CAAA;AAEApB,kBAAY,MAAM,MAAM,IAAA;IAC1B,CAAA;EACF;AACF;;;;AD9CA,IAAM8B,uBAAuB;AAC7B,IAAMC,mBAAmB;AACzB,IAAMC,kBAAkB;AAExB,IAAMC,mBAAmB;AAElB,IAAMC,iBAAN,MAAMA;EAYXC,cAAc;AAXdC,qBAAY,oBAAIC,IAAAA;AAChBC,iCAAwB,oBAAIC,QAAAA;AAC5BC,0BAA2B,CAAA;AAE3BC,iBAAQ,oBAAIJ,IAAAA;AACZK,sBAAuB,CAAA;AAEvBC,gBAAmB,CAAA;AAEnBC,yBAAwC,oBAAIC,IAAAA;AAsKpCC,yBAA8B,CAACC,QAAQC,UAAAA;AAC7C,cAAQA,MAAMC,OAAK;QACjB,KAAKC,oBAASC;QACd,KAAKD,oBAASE;QACd,KAAKF,oBAASG,OAAO;AACnB,gBAAMC,QAAQN,MAAMO,MAAMC;AAC1B,gBAAMC,YAAW,KAAKnB,sBAAsBoB,IAAIJ,KAAAA;AAChD,cAAI,CAACG,WAAU;AACb;UACF;AAEA,gBAAME,cAAUC,gCAAoBZ,KAAAA,KAAU,CAAC;AAE/C,qBAAWa,OAAOC,OAAOC,KAAKJ,OAAAA,GAAU;AACtCA,oBAAQE,GAAAA,IAAOG,cAAcL,QAAQE,GAAAA,CAAI;UAC3C;AAEA,gBAAMI,cAAwB;YAC5BhB,OAAOD,MAAMC;YACbiB,SAASlB,MAAMkB;YACfP;YACAQ,WAAW,oBAAIC,KAAAA;YACfb,MAAM;cACJc,MAAMrB,MAAMO,MAAMe,KAAK;cACvBC,MAAMvB,MAAMO,MAAMiB,KAAK;cACvBC,YAAYhB,UAASiB,KAAKC;YAC5B;UACF;AACA,eAAKC,SAASX,WAAAA;AACd;QACF;QACA;MACF;IACF;AApMEY,mBAAIC,aAAa,KAAKhC,cAAciC,KAAK,IAAI,GAAA,QAAA;;;;;;AAE7C,UAAMC,kBAAkBC,YAAY,KAAKC,QAAQH,KAAK,IAAI,GAAG9C,gBAAAA;AAC7DkD,mCAAaH,eAAAA;EACf;EAEAI,yBAAyBC,QAAwC;AAC/D,UAAMV,KAAK,KAAKvC,UAAUkD;AAG1B,UAAMC,iBAAiBC,kBAAkB1B,OAAO2B,eAAeJ,OAAOK,QAAQ,CAAA;AAC9E,eAAW7B,OAAOC,OAAOC,KAAKwB,eAAeI,iBAAiB,GAAG;AAC9DN,aAAOK,SAAS7B,GAAAA,EAAqB+B,QAAQP,OAAOK,UAAU7B,GAAAA;IACjE;AAEA,UAAMb,QAAuB;MAC3B0B,MAAM;QACJC;QACAkB,WAAWR,OAAOlD,YAAY2D;QAC9BC,gBAAYC,4CAA+BX,OAAOK,QAAQ;QAC1DO,MAAM,KAAKC,gBAAgBb,OAAOK,QAAQ;QAC1CS,OAAO,CAAA;QACPC,SAAS,KAAKC,mBAAmBhB,OAAOK,QAAQ;MAClD;MACAA,UAAU,IAAIY,QAAQjB,OAAOK,QAAQ;IACvC;AACA,SAAKtD,UAAUmE,IAAI5B,IAAI3B,KAAAA;AACvB,SAAKV,sBAAsBiE,IAAIlB,OAAOK,UAAU1C,KAAAA;AAChD,SAAKR,eAAegE,KAAK7B,EAAAA;AACzB,QAAI,KAAKnC,eAAeiE,SAAS3E,sBAAsB;AACrD,WAAK4E,gBAAe;IACtB;AACA,SAAKC,mBAAmBhC,EAAAA;EAC1B;EAEAuB,gBAAgBR,UAAoC;AAClD,UAAMkB,MAA2B,CAAC;AAClC,UAAMrB,iBAAiBC,kBAAkB1B,OAAO2B,eAAeC,QAAAA,CAAAA;AAE/D,eAAW,CAAC7B,KAAKgD,KAAAA,KAAU/C,OAAOgD,QAAQvB,eAAewB,cAAc,GAAG;AACxE,UAAI;AACFH,YAAI/C,GAAAA,IAAOG,cAAc,OAAO0B,SAAS7B,GAAAA,MAAS,aAAa6B,SAAS7B,GAAAA,EAAI,IAAK6B,SAAS7B,GAAAA,CAAI;MAChG,SAASmD,KAAU;AACjBJ,YAAI/C,GAAAA,IAAOmD,IAAI9C;MACjB;IACF;AAEA,WAAO0C;EACT;EAEAP,mBAAmBX,UAAyB;AAC1C,UAAMkB,MAAgB,CAAA;AACtB,UAAMrB,iBAAiBC,kBAAkB1B,OAAO2B,eAAeC,QAAAA,CAAAA;AAE/D,eAAW,CAAC7B,KAAKgD,KAAAA,KAAU/C,OAAOgD,QAAQvB,eAAeI,iBAAiB,GAAG;AAC3EiB,UAAIJ,KAAKd,SAAS7B,GAAAA,EAAKoD,QAAO,CAAA;IAChC;AAEA,WAAOL;EACT;EAEAM,UAAU7B,QAAsC;AAC9C,UAAM8B,QAAO,IAAIC,YAAY,MAAM/B,MAAAA;AACnC,SAAKgC,WAAWF,KAAAA;AAChB,WAAOA;EACT;EAEAG,QAAQC,QAAaC,OAAYC,MAAsB;EAAC;EAExDC,cAAchC,UAA8B;AAC1C,UAAM1C,QAAQ,KAAKV,sBAAsBoB,IAAIgC,QAAAA;AAC7C,WAAO1C,QAAQA,MAAM0B,KAAKC,KAAK;EACjC;EAEAgD,oBAAoB;AAClB,WAAO,IAAIC,YAAY,IAAI;EAC7B;EAEA1C,UAAU;AACR,eAAWzB,aAAY,KAAKrB,UAAUyF,OAAM,GAAI;AAC9C,YAAMnC,WAAWjC,UAASiC,SAASoC,MAAK;AACxC,UAAI,CAACpC,UAAU;AACb;MACF;AAEA,YAAMH,iBAAiBC,kBAAkB1B,OAAO2B,eAAeC,QAAAA,CAAAA;AAC/D,YAAMqC,OAAOC,YAAYC,IAAG;AAC5B,iBAAWpE,OAAOC,OAAOC,KAAKwB,eAAeI,iBAAiB,GAAG;AAC9DD,iBAAS7B,GAAAA,EAAqBqE,QAAQH,IAAAA;MACzC;AAEA,UAAII,WAAW;AAEf,YAAMC,UAAU3E,UAASiB,KAAKuB;AAC9BxC,MAAAA,UAASiB,KAAKuB,OAAO,KAAKC,gBAAgBR,QAAAA;AAC1CyC,mBAAa,CAACE,gBAAgBD,SAAS3E,UAASiB,KAAKuB,IAAI;AAEzD,YAAMqC,aAAa7E,UAASiB,KAAK0B;AACjC3C,MAAAA,UAASiB,KAAK0B,UAAU,KAAKC,mBAAmBX,QAAAA;AAChDyC,mBAAa,CAACE,gBAAgBC,YAAY7E,UAASiB,KAAK0B,OAAO;AAI/D,WAAKO,mBAAmBlD,UAASiB,KAAKC,EAAE;IAE1C;AAEA,eAAW4D,gBAAgB,KAAK3F,eAAe;AAC7C2F,mBAAaC,MAAK;IACpB;EACF;;;;EAKAnB,WAAWoB,aAA0B;AACnC,UAAMtB,QAAOsB,YAAYC,UAAS;AAClC,SAAKjG,MAAM8D,IAAIY,MAAKxC,IAAIwC,KAAAA;AACxB,SAAKzE,WAAW8D,KAAKW,MAAKxC,EAAE;AAC5B,QAAI,KAAKjC,WAAW+D,SAAS1E,kBAAkB;AAC7C,WAAK4G,YAAW;IAClB;AACA,SAAKC,eAAezB,MAAKxC,EAAE;EAC7B;EAEQgC,mBAAmBhC,IAAY;AACrC,eAAW4D,gBAAgB,KAAK3F,eAAe;AAC7C2F,mBAAaM,eAAeC,IAAInE,EAAAA;IAClC;EACF;EAEQiE,eAAejE,IAAY;AACjC,eAAW4D,gBAAgB,KAAK3F,eAAe;AAC7C2F,mBAAaQ,WAAWD,IAAInE,EAAAA;IAC9B;EACF;EAEQ+B,kBAAkB;AAExB,WAAO,KAAKlE,eAAeiE,SAAS3E,sBAAsB;AACxD,YAAM6C,KAAK,KAAKnC,eAAewG,MAAK;AACpC,WAAK5G,UAAU6G,OAAOtE,EAAAA;IACxB;EACF;EAEQgE,cAAc;AACpB,WAAO,KAAKjG,WAAW+D,SAAS1E,kBAAkB;AAChD,YAAM4C,KAAK,KAAKjC,WAAWsG,MAAK;AAChC,WAAKvG,MAAMwG,OAAOtE,EAAAA;IACpB;EACF;EAEQC,SAASC,MAAe;AAC9B,SAAKlC,KAAK6D,KAAK3B,IAAAA;AACf,QAAI,KAAKlC,KAAK8D,SAASzE,iBAAiB;AACtC,WAAKW,KAAKqG,MAAK;IACjB;AAEA,eAAWT,gBAAgB,KAAK3F,eAAe;AAC7C2F,mBAAaW,QAAQ1C,KAAK3B,IAAAA;IAC5B;EACF;AAoCF;AAEO,IAAMuC,cAAN,MAAMA,aAAAA;EACX;SAAO+B,SAAS;;EAYhBhH,YAAoBiH,iBAAiC/D,QAAyB;2BAA1D+D;SATXC,WAA0B;SAE1B5E,aAA4B;SAErC6E,QAAuB;SACvBC,QAAgC;SAEfC,OAAuB;AAGtC,SAAK7E,KAAKyC,aAAY+B;AACtB,SAAKM,aAAapE,OAAOoE;AACzB,SAAKhF,aAAa2E,gBAAgB1B,cAAcrC,OAAOK,QAAQ;AAC/D,SAAKgE,UAAU1B,YAAYC,IAAG;AAE9B,QAAI5C,OAAOsE,WAAW;AACpB,WAAKH,OAAOnE,OAAOsE,UAAUC,OAAO;QAClCC,YAAY;UACV,CAACC,oBAAAA,GAAuB,KAAKnF;QAC/B;MACF,CAAA;AACA,YAAM0E,WAAWhE,OAAOsE,UAAUI,aAAaD,oBAAAA;AAC/C,UAAI,OAAOT,aAAa,UAAU;AAChC,aAAKA,WAAWA;MAClB;IACF;EACF;EAEA,IAAIW,MAAsB;AACxB,WAAO,KAAKR;EACd;EAEAS,cAAc;AACZ,SAAKX,QAAQtB,YAAYC,IAAG;AAC5B,SAAKmB,gBAAgB/B,WAAW,IAAI;EACtC;EAEA6C,UAAUlD,KAAc;AACtB,SAAKsC,QAAQtB,YAAYC,IAAG;AAC5B,SAAKsB,QAAQY,eAAenD,GAAAA;AAC5B,SAAKoC,gBAAgB/B,WAAW,IAAI;EACtC;EAEAqB,YAAkB;AAChB,WAAO;MACL/D,IAAI,KAAKA;MACTF,YAAY,KAAKA,cAAc2F;MAC/BX,YAAY,KAAKA;MACjBJ,UAAU,KAAKA,YAAYe;MAC3BV,SAAS,KAAKA,QAAQW,QAAQ,CAAA;MAC9Bf,OAAO,KAAKA,OAAOe,QAAQ,CAAA,KAAMD;MACjCb,OAAO,KAAKA,SAASa;IACvB;EACF;AACF;AAEA,IAAMD,iBAAiB,CAACnD,QAAAA;AACtB,MAAIA,eAAesD,OAAO;AACxB,WAAO;MACLxE,MAAMkB,IAAIlB;MACV5B,SAAS8C,IAAI9C;IACf;EACF;AAEA,SAAO;IACLA,SAASqG,OAAOvD,GAAAA;EAClB;AACF;AAEO,IAAMwD,kBAAoCC,WAAmBD,oBAAoB,IAAItI,eAAAA;AAE5F,IAAM8B,gBAAgB,CAAC0G,UAAAA;AACrB,UAAQ,OAAOA,OAAAA;IACb,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;AACH,aAAOA;AACP;IACF,KAAK;IACL,KAAK;AACH,UAAIA,UAAU,MAAM;AAClB,eAAOA;AACP;MACF;AAGA,UAAI,OAAOA,MAAMC,aAAa,YAAY;AACxC,eAAOD,MAAMC,SAAQ;MACvB;AAEA,aAAOD,MAAME,SAAQ;EACzB;AACF;AAEA,IAAMvC,kBAAkB,CAACwC,GAAQC,MAAAA;AAC/B,aAAWjH,OAAOgH,GAAG;AACnB,QAAI,EAAEhH,OAAOiH,MAAMD,EAAEhH,GAAAA,MAASiH,EAAEjH,GAAAA,GAAM;AACpC,aAAO;IACT;EACF;AACA,aAAWA,OAAOiH,GAAG;AACnB,QAAI,EAAEjH,OAAOgH,MAAMA,EAAEhH,GAAAA,MAASiH,EAAEjH,GAAAA,GAAM;AACpC,aAAO;IACT;EACF;AACA,SAAO;AACT;;;AFtWA,IAAMkH,WACJ,MACA,CAAyCC,gBAAAA;AACvC,QAAMC,QAAQ,cAAcD,YAAAA;IAC1BA,eAAeE,MAAa;AAC1B,YAAK,GAAIA,IAAAA;AACTC,sBAAgBC,yBAAyB;QAAEJ;QAAaK,UAAU;MAAK,CAAA;IACzE;EACF;AACAC,SAAOC,eAAeN,OAAO,QAAQ;IAAEO,OAAOR,YAAYS;EAAK,CAAA;AAC/D,SAAOR;AACT;AAKF,IAAMS,OAAO,MAAM,CAACC,QAAaC,aAAqBC,eAAAA;AACpDC,oBAAkBH,MAAAA,EAAQI,eAAeH,WAAAA,IAAe,CAAC;AAC3D;AAEA,IAAMI,OAAO,MAAM,CAACL,QAAaC,aAAqBC,eAAAA;AACpD,QAAMI,SAASJ,WAAWL;AAE1BK,aAAWL,QAAQ,kBAA8BU,MAAS;AACxD,UAAMC,YAAYD,KAAK,CAAA,aAAcE,yBAAUF,KAAK,CAAA,IAAK;AACzD,UAAMF,QAAOb,gBAAgBkB,UAAU;MAAEF;MAAWG,YAAYV;MAAaP,UAAU;IAAK,CAAA;AAE5F,UAAMkB,WAAWP,MAAKQ,MAAM;MAACR,MAAKQ;SAAQN,KAAKO,MAAM,CAAA;QAAMP;AAC3D,QAAI;AACF,aAAO,MAAMD,OAAOS,MAAM,MAAMH,QAAAA;IAClC,SAASI,KAAK;AACZX,MAAAA,MAAKY,UAAUD,GAAAA;AACf,YAAMA;IACR,UAAA;AACEX,MAAAA,MAAKa,YAAW;IAClB;EACF;AACF;AAKA,IAAMC,iBAAiB,MAAM,CAACnB,QAAaC,aAAqBC,eAAAA;AAC9DC,oBAAkBH,MAAAA,EAAQoB,kBAAkBnB,WAAAA,IAAe,CAAC;AAC9D;AAIA,IAAMoB,UAAU,CAACC,QAAaC,OAAYC,OAAuB,CAAC,MAAC;AACjEhC,kBAAgB6B,QAAQC,QAAQC,OAAOC,IAAAA;AACzC;AAEO,IAAMC,QAAQ;EACnBrC;EACAW;EACAM;EACAc;EAEAE;AACF;;;AIjEO,IAAeK,cAAf,MAAeA;;;;EAWpBC,QAAQC,UAAeC,MAAc;AACnC,SAAKC,YAAYF;AACjB,SAAKC,OAAOA;EACd;EAIAE,MAAMC,MAAoB;EAAC;AAC7B;;;ACjBO,IAAMC,eAAN,cAA2BC,YAAAA;EAIhCC,YAAY,EAAEC,MAAK,IAAyB,CAAC,GAAG;AAC9C,UAAK;AAJPC,iBAAQ;AAKN,SAAKD,QAAQA;EACf;EAEAE,IAAIC,KAAK,GAAG;AACV,SAAKF,SAASE;EAChB;EAEAC,UAAkB;AAChB,WAAO;MACLC,MAAM,KAAKA;MACXC,SAAS;QACPL,OAAO,KAAKA;QACZD,OAAO,KAAKA;MACd;IACF;EACF;AACF;;;ACtBA,IAAMO,cAAc;AAEb,IAAMC,oBAAN,cAAgCC,YAAAA;EAMrCC,YAAY,EAAEC,MAAK,IAAyB,CAAC,GAAG;AAC9C,UAAK;AANCC,yBAAgB;AAChBC,uBAAc;AACdC,oBAAqB,CAAA;AAK3B,SAAKH,QAAQA;EACf;EAEAI,IAAIC,KAAK,GAAG;AACV,SAAKJ,iBAAiBI;AACtB,SAAKH,eAAeG;EACtB;EAESC,MAAMC,MAAoB;AACjC,SAAKJ,SAASK,KAAK,KAAKP,aAAa;AACrC,QAAI,KAAKE,SAASM,SAASb,aAAa;AACtC,WAAKO,SAASO,MAAK;IACrB;AACA,SAAKT,gBAAgB;EACvB;EAESU,UAAkB;AACzB,WAAO;MACLC,MAAM,KAAKA;MACXC,YAAY;QACVC,QAAQ;UACN;YACEF,MAAM,KAAKA;YACXZ,OAAO,KAAKA;YACZe,QAAQ,KAAKZ,SAASa,IAAI,CAACC,OAAOC,WAAW;cAC3CD;YACF,EAAA;YACAE,OAAO,KAAKjB;UACd;;MAEJ;IACF;EACF;AACF;;;AC3CA,IAAMkB,eAAc;AAEb,IAAMC,mBAAN,cAA+BC,YAAAA;EAA/B;;AACGC,yBAAgB;AAChBC,uBAAc;AACdC,oBAAqB,CAAA;AAErBC,yBAAgBC,YAAYC,IAAG;;EAEvCC,OAAOC,MAAc;AACnB,SAAKP,iBAAiBO;AACtB,SAAKN,eAAeM;EACtB;EAEAC,iBAAsC;AACpC,UAAMC,QAAQL,YAAYC,IAAG;AAC7B,WAAO;MACLK,KAAK,MAAA;AACH,cAAMA,MAAMN,YAAYC,IAAG;AAC3B,aAAKC,OAAOI,MAAMD,KAAAA;MACpB;IACF;EACF;EAESE,MAAMJ,MAAoB;AACjC,UAAMK,QAAQL,OAAO,KAAKJ;AAC1B,SAAKA,gBAAgBI;AAErB,UAAMM,aAAc,KAAKb,gBAAgBY,QAAS;AAClD,SAAKV,SAASY,KAAKD,UAAAA;AACnB,QAAI,KAAKX,SAASa,SAASlB,cAAa;AACtC,WAAKK,SAASc,MAAK;IACrB;AACA,SAAKhB,gBAAgB;EACvB;EAESiB,UAAkB;AACzB,WAAO;MACLC,MAAM,KAAKA;MACXC,YAAY;QACVC,QAAQ;UACN;YACEF,MAAM,KAAKA;YACXG,OAAO;YACPC,QAAQ,KAAKpB,SAASqB,IAAI,CAACC,OAAOC,WAAW;cAC3CD;YACF,EAAA;YACAE,OAAO,KAAKzB;UACd;;MAEJ;IACF;EACF;AACF;",
|
|
6
|
+
"names": ["symbolTracingContext", "Symbol", "getTracingContext", "target", "infoProperties", "metricsProperties", "TRACE_SPAN_ATTRIBUTE", "TraceSender", "constructor", "_traceProcessor", "streamTrace", "request", "Stream", "ctx", "next", "flushEvents", "resources", "spans", "logs", "event", "resourceAdded", "resourceRemoved", "spanAdded", "logAdded", "id", "entry", "get", "push", "resource", "data", "values", "span", "log", "length", "flush", "subscription", "dirtyResources", "dirtySpans", "newLogs", "clear", "Set", "subscriptions", "add", "onDispose", "delete", "MAX_RESOURCE_RECORDS", "MAX_SPAN_RECORDS", "MAX_LOG_RECORDS", "REFRESH_INTERVAL", "TraceProcessor", "constructor", "resources", "Map", "resourceInstanceIndex", "WeakMap", "resourceIdList", "spans", "spanIdList", "logs", "subscriptions", "Set", "_logProcessor", "config", "entry", "level", "LogLevel", "ERROR", "WARN", "TRACE", "scope", "meta", "S", "resource", "get", "context", "getContextFromEntry", "key", "Object", "keys", "sanitizeValue", "entryToPush", "message", "timestamp", "Date", "file", "F", "line", "L", "resourceId", "data", "id", "_pushLog", "log", "addProcessor", "bind", "refreshInterval", "setInterval", "refresh", "unrefTimeout", "traceResourceConstructor", "params", "size", "tracingContext", "getTracingContext", "getPrototypeOf", "instance", "metricsProperties", "_assign", "className", "name", "instanceId", "getPrototypeSpecificInstanceId", "info", "getResourceInfo", "links", "metrics", "getResourceMetrics", "WeakRef", "set", "push", "length", "_clearResources", "_markResourceDirty", "res", "_opts", "entries", "infoProperties", "err", "getData", "traceSpan", "span", "TracingSpan", "_flushSpan", "addLink", "parent", "child", "opts", "getResourceId", "createTraceSender", "TraceSender", "values", "deref", "time", "performance", "now", "_tick", "_changed", "oldInfo", "areEqualShallow", "oldMetrics", "subscription", "flush", "runtimeSpan", "serialize", "_clearSpans", "_markSpanDirty", "dirtyResources", "add", "dirtySpans", "shift", "delete", "newLogs", "nextId", "_traceProcessor", "parentId", "endTs", "error", "_ctx", "methodName", "startTs", "parentCtx", "derive", "attributes", "TRACE_SPAN_ATTRIBUTE", "getAttribute", "ctx", "markSuccess", "markError", "serializeError", "undefined", "toFixed", "Error", "String", "TRACE_PROCESSOR", "globalThis", "value", "truncate", "toString", "a", "b", "resource", "constructor", "klass", "rest", "TRACE_PROCESSOR", "traceResourceConstructor", "instance", "Object", "defineProperty", "value", "name", "info", "target", "propertyKey", "descriptor", "getTracingContext", "infoProperties", "span", "method", "args", "parentCtx", "Context", "traceSpan", "methodName", "callArgs", "ctx", "slice", "apply", "err", "markError", "markSuccess", "metricsCounter", "metricsProperties", "addLink", "parent", "child", "opts", "trace", "BaseCounter", "_assign", "instance", "name", "_instance", "_tick", "time", "UnaryCounter", "BaseCounter", "constructor", "units", "value", "inc", "by", "getData", "name", "counter", "MAX_BUCKETS", "TimeSeriesCounter", "BaseCounter", "constructor", "units", "_currentValue", "_totalValue", "_buckets", "inc", "by", "_tick", "time", "push", "length", "shift", "getData", "name", "timeSeries", "tracks", "points", "map", "value", "index", "total", "MAX_BUCKETS", "TimeUsageCounter", "BaseCounter", "_currentValue", "_totalValue", "_buckets", "_lastTickTime", "performance", "now", "record", "time", "beginRecording", "start", "end", "_tick", "delta", "percentage", "push", "length", "shift", "getData", "name", "timeSeries", "tracks", "units", "points", "map", "value", "index", "total"]
|
|
7
7
|
}
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/common/tracing/src/symbols.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/common/tracing/src/symbols.ts":{"bytes":1673,"imports":[],"format":"esm"},"packages/common/tracing/src/trace-sender.ts":{"bytes":10336,"imports":[{"path":"@dxos/codec-protobuf","kind":"import-statement","external":true}],"format":"esm"},"packages/common/tracing/src/trace-processor.ts":{"bytes":35505,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/common/tracing/src/symbols.ts","kind":"import-statement","original":"./symbols"},{"path":"packages/common/tracing/src/trace-sender.ts","kind":"import-statement","original":"./trace-sender"}],"format":"esm"},"packages/common/tracing/src/api.ts":{"bytes":7240,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"packages/common/tracing/src/symbols.ts","kind":"import-statement","original":"./symbols"},{"path":"packages/common/tracing/src/trace-processor.ts","kind":"import-statement","original":"./trace-processor"}],"format":"esm"},"packages/common/tracing/src/metrics/base.ts":{"bytes":1432,"imports":[],"format":"esm"},"packages/common/tracing/src/metrics/unary-counter.ts":{"bytes":2110,"imports":[{"path":"packages/common/tracing/src/metrics/base.ts","kind":"import-statement","original":"./base"}],"format":"esm"},"packages/common/tracing/src/metrics/time-series-counter.ts":{"bytes":4254,"imports":[{"path":"packages/common/tracing/src/metrics/base.ts","kind":"import-statement","original":"./base"}],"format":"esm"},"packages/common/tracing/src/metrics/time-usage-counter.ts":{"bytes":5235,"imports":[{"path":"packages/common/tracing/src/metrics/base.ts","kind":"import-statement","original":"./base"}],"format":"esm"},"packages/common/tracing/src/metrics/index.ts":{"bytes":787,"imports":[{"path":"packages/common/tracing/src/metrics/base.ts","kind":"import-statement","original":"./base"},{"path":"packages/common/tracing/src/metrics/unary-counter.ts","kind":"import-statement","original":"./unary-counter"},{"path":"packages/common/tracing/src/metrics/time-series-counter.ts","kind":"import-statement","original":"./time-series-counter"},{"path":"packages/common/tracing/src/metrics/time-usage-counter.ts","kind":"import-statement","original":"./time-usage-counter"}],"format":"esm"},"packages/common/tracing/src/index.ts":{"bytes":821,"imports":[{"path":"packages/common/tracing/src/api.ts","kind":"import-statement","original":"./api"},{"path":"packages/common/tracing/src/symbols.ts","kind":"import-statement","original":"./symbols"},{"path":"packages/common/tracing/src/trace-processor.ts","kind":"import-statement","original":"./trace-processor"},{"path":"packages/common/tracing/src/trace-sender.ts","kind":"import-statement","original":"./trace-sender"},{"path":"packages/common/tracing/src/metrics/index.ts","kind":"import-statement","original":"./metrics"}],"format":"esm"}},"outputs":{"packages/common/tracing/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":33817},"packages/common/tracing/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/context","kind":"require-call","external":true},{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/util","kind":"require-call","external":true},{"path":"@dxos/codec-protobuf","kind":"require-call","external":true}],"exports":[],"entryPoint":"packages/common/tracing/src/index.ts","inputs":{"packages/common/tracing/src/index.ts":{"bytesInOutput":575},"packages/common/tracing/src/api.ts":{"bytesInOutput":1426},"packages/common/tracing/src/symbols.ts":{"bytesInOutput":245},"packages/common/tracing/src/trace-processor.ts":{"bytesInOutput":8272},"packages/common/tracing/src/trace-sender.ts":{"bytesInOutput":2591},"packages/common/tracing/src/metrics/base.ts":{"bytesInOutput":159},"packages/common/tracing/src/metrics/index.ts":{"bytesInOutput":0},"packages/common/tracing/src/metrics/unary-counter.ts":{"bytesInOutput":324},"packages/common/tracing/src/metrics/time-series-counter.ts":{"bytesInOutput":812},"packages/common/tracing/src/metrics/time-usage-counter.ts":{"bytesInOutput":1136}},"bytes":17223}}}
|
package/dist/types/src/api.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare const trace: {
|
|
|
5
5
|
} & T;
|
|
6
6
|
info: () => (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => void;
|
|
7
7
|
span: () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<(...args: any) => any>) => void;
|
|
8
|
+
metricsCounter: () => (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => void;
|
|
8
9
|
addLink: (parent: any, child: any, opts?: AddLinkOptions) => void;
|
|
9
10
|
};
|
|
10
11
|
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/api.ts"],"names":[],"mappings":"AA0DA,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC;AAMhC,eAAO,MAAM,KAAK;6CAlDW,GAAG,EAAE,KAAG,EAAE;sBAEZ,GAAG,EAAE;;yBAYJ,GAAG,eAAe,MAAM,eAAe,kBAAkB;yBAIzD,GAAG,eAAe,MAAM,gDAAgD,GAAG,KAAK,GAAG;mCAsBzE,GAAG,eAAe,MAAM,eAAe,kBAAkB;sBAMtE,GAAG,SAAS,GAAG,SAAQ,cAAc;CAW7D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/metrics/base.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,8BAAsB,WAAW;IAM/B,IAAI,CAAC,EAAE,MAAM,CAAC;IAUd,QAAQ,CAAC,OAAO,IAAI,MAAM;IAE1B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAC1B"}
|