@dxos/tracing 0.1.56-main.c19b7cd → 0.1.56-main.c277f68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/lib/browser/index.mjs +307 -33
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node/index.cjs +311 -33
  5. package/dist/lib/node/index.cjs.map +4 -4
  6. package/dist/lib/node/meta.json +1 -1
  7. package/dist/types/src/api.d.ts +1 -0
  8. package/dist/types/src/api.d.ts.map +1 -1
  9. package/dist/types/src/index.d.ts +1 -0
  10. package/dist/types/src/index.d.ts.map +1 -1
  11. package/dist/types/src/metrics/base.d.ts +7 -0
  12. package/dist/types/src/metrics/base.d.ts.map +1 -0
  13. package/dist/types/src/metrics/index.d.ts +5 -0
  14. package/dist/types/src/metrics/index.d.ts.map +1 -0
  15. package/dist/types/src/metrics/time-series-counter.d.ts +15 -0
  16. package/dist/types/src/metrics/time-series-counter.d.ts.map +1 -0
  17. package/dist/types/src/metrics/time-usage-counter.d.ts +15 -0
  18. package/dist/types/src/metrics/time-usage-counter.d.ts.map +1 -0
  19. package/dist/types/src/metrics/unary-counter.d.ts +12 -0
  20. package/dist/types/src/metrics/unary-counter.d.ts.map +1 -0
  21. package/dist/types/src/symbols.d.ts +1 -0
  22. package/dist/types/src/symbols.d.ts.map +1 -1
  23. package/dist/types/src/trace-processor.d.ts +10 -1
  24. package/dist/types/src/trace-processor.d.ts.map +1 -1
  25. package/dist/types/src/trace-sender.d.ts.map +1 -1
  26. package/package.json +10 -9
  27. package/src/api.ts +17 -1
  28. package/src/index.ts +1 -0
  29. package/src/metrics/base.ts +26 -0
  30. package/src/metrics/index.ts +8 -0
  31. package/src/metrics/time-series-counter.ts +52 -0
  32. package/src/metrics/time-usage-counter.ts +62 -0
  33. package/src/metrics/unary-counter.ts +31 -0
  34. package/src/symbols.ts +4 -2
  35. package/src/trace-processor.ts +158 -2
  36. package/src/trace-sender.ts +28 -18
@@ -1 +1 @@
1
- {"inputs":{"packages/common/tracing/src/symbols.ts":{"bytes":1464,"imports":[]},"packages/common/tracing/src/trace-sender.ts":{"bytes":9080,"imports":[{"path":"@dxos/codec-protobuf","kind":"import-statement","external":true}]},"packages/common/tracing/src/trace-processor.ts":{"bytes":20068,"imports":[{"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"}]},"packages/common/tracing/src/api.ts":{"bytes":5722,"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"}]},"packages/common/tracing/src/index.ts":{"bytes":744,"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"}]}},"outputs":{"packages/common/tracing/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":18611},"packages/common/tracing/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/context","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":415},"packages/common/tracing/src/api.ts":{"bytesInOutput":1176},"packages/common/tracing/src/symbols.ts":{"bytesInOutput":280},"packages/common/tracing/src/trace-processor.ts":{"bytesInOutput":4527},"packages/common/tracing/src/trace-sender.ts":{"bytesInOutput":2265}},"bytes":10044}}}
1
+ {"inputs":{"packages/common/tracing/src/symbols.ts":{"bytes":1683,"imports":[],"format":"esm"},"packages/common/tracing/src/trace-sender.ts":{"bytes":10346,"imports":[{"path":"@dxos/codec-protobuf","kind":"import-statement","external":true}],"format":"esm"},"packages/common/tracing/src/trace-processor.ts":{"bytes":35515,"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":7250,"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":1442,"imports":[],"format":"esm"},"packages/common/tracing/src/metrics/unary-counter.ts":{"bytes":2120,"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":4264,"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":5245,"imports":[{"path":"packages/common/tracing/src/metrics/base.ts","kind":"import-statement","original":"./base"}],"format":"esm"},"packages/common/tracing/src/metrics/index.ts":{"bytes":797,"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":831,"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":8282},"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":17233}}}
@@ -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":"AA2CA,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC;AAMhC,eAAO,MAAM,KAAK;6CAtCW,GAAG,EAAE,KAAG,EAAE;sBAEZ,GAAG,EAAE;;yBAOJ,GAAG,eAAe,MAAM,eAAe,kBAAkB;yBAIzD,GAAG,eAAe,MAAM,gDAAgD,GAAG,KAAK,GAAG;sBAqBtF,GAAG,SAAS,GAAG,SAAQ,cAAc;CAU7D,CAAC"}
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"}
@@ -2,4 +2,5 @@ export * from './api';
2
2
  export * from './symbols';
3
3
  export * from './trace-processor';
4
4
  export * from './trace-sender';
5
+ export * from './metrics';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -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,7 @@
1
+ import { Metric } from '@dxos/protocols/proto/dxos/tracing';
2
+ export declare abstract class BaseCounter {
3
+ name?: string;
4
+ abstract getData(): Metric;
5
+ _tick(time: number): void;
6
+ }
7
+ //# sourceMappingURL=base.d.ts.map
@@ -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"}
@@ -0,0 +1,5 @@
1
+ export * from './base';
2
+ export * from './unary-counter';
3
+ export * from './time-series-counter';
4
+ export * from './time-usage-counter';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/metrics/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Metric } from '@dxos/protocols/proto/dxos/tracing';
2
+ import { BaseCounter } from './base';
3
+ export declare class TimeSeriesCounter extends BaseCounter {
4
+ private _currentValue;
5
+ private _totalValue;
6
+ private _buckets;
7
+ units?: string;
8
+ constructor({ units }?: {
9
+ units?: string;
10
+ });
11
+ inc(by?: number): void;
12
+ _tick(time: number): void;
13
+ getData(): Metric;
14
+ }
15
+ //# sourceMappingURL=time-series-counter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-series-counter.d.ts","sourceRoot":"","sources":["../../../../src/metrics/time-series-counter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAIrC,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAgB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEH,EAAE,KAAK,EAAE,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;IAK9C,GAAG,CAAC,EAAE,SAAI;IAKD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQzB,OAAO,IAAI,MAAM;CAiB3B"}
@@ -0,0 +1,15 @@
1
+ import { Metric } from '@dxos/protocols/proto/dxos/tracing';
2
+ import { BaseCounter } from './base';
3
+ export declare class TimeUsageCounter extends BaseCounter {
4
+ private _currentValue;
5
+ private _totalValue;
6
+ private _buckets;
7
+ private _lastTickTime;
8
+ record(time: number): void;
9
+ beginRecording(): {
10
+ end: () => void;
11
+ };
12
+ _tick(time: number): void;
13
+ getData(): Metric;
14
+ }
15
+ //# sourceMappingURL=time-usage-counter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-usage-counter.d.ts","sourceRoot":"","sources":["../../../../src/metrics/time-usage-counter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAIrC,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAgB;IAEhC,OAAO,CAAC,aAAa,CAAqB;IAE1C,MAAM,CAAC,IAAI,EAAE,MAAM;IAKnB,cAAc,IAAI;QAAE,GAAG,EAAE,MAAM,IAAI,CAAA;KAAE;IAU5B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAYzB,OAAO,IAAI,MAAM;CAiB3B"}
@@ -0,0 +1,12 @@
1
+ import { Metric } from '@dxos/protocols/proto/dxos/tracing';
2
+ import { BaseCounter } from './base';
3
+ export declare class UnaryCounter extends BaseCounter {
4
+ value: number;
5
+ units?: string;
6
+ constructor({ units }?: {
7
+ units?: string;
8
+ });
9
+ inc(by?: number): void;
10
+ getData(): Metric;
11
+ }
12
+ //# sourceMappingURL=unary-counter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unary-counter.d.ts","sourceRoot":"","sources":["../../../../src/metrics/unary-counter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,qBAAa,YAAa,SAAQ,WAAW;IAC3C,KAAK,SAAK;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEH,EAAE,KAAK,EAAE,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;IAK9C,GAAG,CAAC,EAAE,SAAI;IAIV,OAAO,IAAI,MAAM;CASlB"}
@@ -1,6 +1,7 @@
1
1
  export declare const symbolTracingContext: unique symbol;
2
2
  export type TracingContext = {
3
3
  infoProperties: Record<string, {}>;
4
+ metricsProperties: Record<string, {}>;
4
5
  };
5
6
  export declare const getTracingContext: (target: any) => TracingContext;
6
7
  export declare const TRACE_SPAN_ATTRIBUTE = "dxos.trace-span";
@@ -1 +1 @@
1
- {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../../src/symbols.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAAY,GAAG,KAAG,cAI/C,CAAC;AAEF,eAAO,MAAM,oBAAoB,oBAAoB,CAAC"}
1
+ {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../../src/symbols.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CACvC,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAAY,GAAG,KAAG,cAK/C,CAAC;AAEF,eAAO,MAAM,oBAAoB,oBAAoB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { Context } from '@dxos/context';
2
+ import { LogEntry } from '@dxos/protocols/proto/dxos/client/services';
2
3
  import { Error as SerializedError } from '@dxos/protocols/proto/dxos/error';
3
- import { Resource, Span } from '@dxos/protocols/proto/dxos/tracing';
4
+ import { Metric, Resource, Span } from '@dxos/protocols/proto/dxos/tracing';
4
5
  import type { AddLinkOptions } from './api';
5
6
  import { TraceSender } from './trace-sender';
6
7
  export type TraceResourceConstructorParams = {
@@ -19,8 +20,10 @@ export type ResourceEntry = {
19
20
  instance: WeakRef<any>;
20
21
  };
21
22
  export type TraceSubscription = {
23
+ flush: () => void;
22
24
  dirtyResources: Set<number>;
23
25
  dirtySpans: Set<number>;
26
+ newLogs: LogEntry[];
24
27
  };
25
28
  export declare class TraceProcessor {
26
29
  resources: Map<number, ResourceEntry>;
@@ -28,17 +31,23 @@ export declare class TraceProcessor {
28
31
  resourceIdList: number[];
29
32
  spans: Map<number, Span>;
30
33
  spanIdList: number[];
34
+ logs: LogEntry[];
31
35
  subscriptions: Set<TraceSubscription>;
36
+ constructor();
32
37
  traceResourceConstructor(params: TraceResourceConstructorParams): void;
33
38
  getResourceInfo(instance: any): Record<string, any>;
39
+ getResourceMetrics(instance: any): Metric[];
34
40
  traceSpan(params: TraceSpanParams): TracingSpan;
35
41
  addLink(parent: any, child: any, opts: AddLinkOptions): void;
36
42
  getResourceId(instance: any): number | null;
37
43
  createTraceSender(): TraceSender;
44
+ refresh(): void;
38
45
  private _markResourceDirty;
39
46
  private _markSpanDirty;
40
47
  private _clearResources;
41
48
  private _clearSpans;
49
+ private _pushLog;
50
+ private _logProcessor;
42
51
  }
43
52
  export declare class TracingSpan {
44
53
  private _traceProcessor;
@@ -1 +1 @@
1
- {"version":3,"file":"trace-processor.d.ts","sourceRoot":"","sources":["../../../src/trace-processor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,8BAA8B,GAAG;IAC3C,WAAW,EAAE;QAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAC1C,QAAQ,EAAE,GAAG,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,GAAG,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB,CAAC;AAKF,qBAAa,cAAc;IACzB,SAAS,6BAAoC;IAC7C,qBAAqB,8BAAqC;IAC1D,cAAc,EAAE,MAAM,EAAE,CAAM;IAE9B,KAAK,oBAA2B;IAChC,UAAU,EAAE,MAAM,EAAE,CAAM;IAE1B,aAAa,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAa;IAElD,wBAAwB,CAAC,MAAM,EAAE,8BAA8B;IAqB/D,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAenD,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW;IAM/C,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc;IAErD,aAAa,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI;IAK3C,iBAAiB;IAiBjB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,WAAW;CAMpB;AAED,qBAAa,WAAW;IAaV,OAAO,CAAC,eAAe;IAZnC,MAAM,CAAC,MAAM,SAAK;IAElB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5B,KAAK,EAAE,eAAe,GAAG,IAAI,CAAQ;IAErC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;gBAEzB,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe;IAmB5E,IAAI,GAAG,IAAI,OAAO,GAAG,IAAI,CAExB;IAED,WAAW;IAKX,SAAS,CAAC,GAAG,EAAE,OAAO;IAMtB,SAAS,IAAI,IAAI;CAWlB;AAeD,eAAO,MAAM,eAAe,EAAE,cAA+E,CAAC"}
1
+ {"version":3,"file":"trace-processor.d.ts","sourceRoot":"","sources":["../../../src/trace-processor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"trace-sender.d.ts","sourceRoot":"","sources":["../../../src/trace-sender.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEtF,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAC;AAItE,qBAAa,WAAY,YAAW,cAAc;IACpC,OAAO,CAAC,eAAe;gBAAf,eAAe,EAAE,cAAc;IAEnD,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;CA+DrD"}
1
+ {"version":3,"file":"trace-sender.d.ts","sourceRoot":"","sources":["../../../src/trace-sender.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEtF,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAC;AAEtE,qBAAa,WAAY,YAAW,cAAc;IACpC,OAAO,CAAC,eAAe;gBAAf,eAAe,EAAE,cAAc;IAEnD,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;CA0ErD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/tracing",
3
- "version": "0.1.56-main.c19b7cd",
3
+ "version": "0.1.56-main.c277f68",
4
4
  "description": "Async utilities.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -16,14 +16,15 @@
16
16
  "src"
17
17
  ],
18
18
  "dependencies": {
19
- "@dxos/codec-protobuf": "0.1.56-main.c19b7cd",
20
- "@dxos/context": "0.1.56-main.c19b7cd",
21
- "@dxos/debug": "0.1.56-main.c19b7cd",
22
- "@dxos/invariant": "0.1.56-main.c19b7cd",
23
- "@dxos/log": "0.1.56-main.c19b7cd",
24
- "@dxos/node-std": "0.1.56-main.c19b7cd",
25
- "@dxos/protocols": "0.1.56-main.c19b7cd",
26
- "@dxos/util": "0.1.56-main.c19b7cd"
19
+ "@dxos/async": "0.1.56-main.c277f68",
20
+ "@dxos/codec-protobuf": "0.1.56-main.c277f68",
21
+ "@dxos/context": "0.1.56-main.c277f68",
22
+ "@dxos/debug": "0.1.56-main.c277f68",
23
+ "@dxos/invariant": "0.1.56-main.c277f68",
24
+ "@dxos/log": "0.1.56-main.c277f68",
25
+ "@dxos/node-std": "0.1.56-main.c277f68",
26
+ "@dxos/protocols": "0.1.56-main.c277f68",
27
+ "@dxos/util": "0.1.56-main.c277f68"
27
28
  },
28
29
  "devDependencies": {},
29
30
  "publishConfig": {
package/src/api.ts CHANGED
@@ -7,17 +7,25 @@ import { Context } from '@dxos/context';
7
7
  import { getTracingContext } from './symbols';
8
8
  import { TRACE_PROCESSOR } from './trace-processor';
9
9
 
10
+ /**
11
+ * Annotates a class as a tracked resource.
12
+ */
10
13
  const resource =
11
14
  () =>
12
15
  <T extends { new (...args: any[]): {} }>(constructor: T) => {
13
- return class extends constructor {
16
+ const klass = class extends constructor {
14
17
  constructor(...rest: any[]) {
15
18
  super(...rest);
16
19
  TRACE_PROCESSOR.traceResourceConstructor({ constructor, instance: this });
17
20
  }
18
21
  };
22
+ Object.defineProperty(klass, 'name', { value: constructor.name });
23
+ return klass;
19
24
  };
20
25
 
26
+ /**
27
+ * Marks a property or a method to be included in the resource info section.
28
+ */
21
29
  const info = () => (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => {
22
30
  getTracingContext(target).infoProperties[propertyKey] = {};
23
31
  };
@@ -41,6 +49,13 @@ const span = () => (target: any, propertyKey: string, descriptor: TypedPropertyD
41
49
  };
42
50
  };
43
51
 
52
+ /**
53
+ * Attaches metrics counter to the resource.
54
+ */
55
+ const metricsCounter = () => (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => {
56
+ getTracingContext(target).metricsProperties[propertyKey] = {};
57
+ };
58
+
44
59
  export type AddLinkOptions = {};
45
60
 
46
61
  const addLink = (parent: any, child: any, opts: AddLinkOptions = {}) => {
@@ -51,6 +66,7 @@ export const trace = {
51
66
  resource,
52
67
  info,
53
68
  span,
69
+ metricsCounter,
54
70
 
55
71
  addLink,
56
72
  };
package/src/index.ts CHANGED
@@ -6,3 +6,4 @@ export * from './api';
6
6
  export * from './symbols';
7
7
  export * from './trace-processor';
8
8
  export * from './trace-sender';
9
+ export * from './metrics';
@@ -0,0 +1,26 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { Metric } from '@dxos/protocols/proto/dxos/tracing';
6
+
7
+ export abstract class BaseCounter {
8
+ /**
9
+ * @internal
10
+ */
11
+ _instance: any;
12
+
13
+ name?: string;
14
+
15
+ /**
16
+ * @internal
17
+ */
18
+ _assign(instance: any, name: string) {
19
+ this._instance = instance;
20
+ this.name = name;
21
+ }
22
+
23
+ abstract getData(): Metric;
24
+
25
+ _tick(time: number): void {}
26
+ }
@@ -0,0 +1,8 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ export * from './base';
6
+ export * from './unary-counter';
7
+ export * from './time-series-counter';
8
+ export * from './time-usage-counter';
@@ -0,0 +1,52 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { Metric } from '@dxos/protocols/proto/dxos/tracing';
6
+
7
+ import { BaseCounter } from './base';
8
+
9
+ const MAX_BUCKETS = 60;
10
+
11
+ export class TimeSeriesCounter extends BaseCounter {
12
+ private _currentValue = 0;
13
+ private _totalValue = 0;
14
+ private _buckets: number[] = [];
15
+ units?: string;
16
+
17
+ constructor({ units }: { units?: string } = {}) {
18
+ super();
19
+ this.units = units;
20
+ }
21
+
22
+ inc(by = 1) {
23
+ this._currentValue += by;
24
+ this._totalValue += by;
25
+ }
26
+
27
+ override _tick(time: number): void {
28
+ this._buckets.push(this._currentValue);
29
+ if (this._buckets.length > MAX_BUCKETS) {
30
+ this._buckets.shift();
31
+ }
32
+ this._currentValue = 0;
33
+ }
34
+
35
+ override getData(): Metric {
36
+ return {
37
+ name: this.name!,
38
+ timeSeries: {
39
+ tracks: [
40
+ {
41
+ name: this.name!,
42
+ units: this.units,
43
+ points: this._buckets.map((value, index) => ({
44
+ value,
45
+ })),
46
+ total: this._totalValue,
47
+ },
48
+ ],
49
+ },
50
+ };
51
+ }
52
+ }
@@ -0,0 +1,62 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { Metric } from '@dxos/protocols/proto/dxos/tracing';
6
+
7
+ import { BaseCounter } from './base';
8
+
9
+ const MAX_BUCKETS = 60;
10
+
11
+ export class TimeUsageCounter extends BaseCounter {
12
+ private _currentValue = 0;
13
+ private _totalValue = 0;
14
+ private _buckets: number[] = [];
15
+
16
+ private _lastTickTime = performance.now();
17
+
18
+ record(time: number) {
19
+ this._currentValue += time;
20
+ this._totalValue += time;
21
+ }
22
+
23
+ beginRecording(): { end: () => void } {
24
+ const start = performance.now();
25
+ return {
26
+ end: () => {
27
+ const end = performance.now();
28
+ this.record(end - start);
29
+ },
30
+ };
31
+ }
32
+
33
+ override _tick(time: number): void {
34
+ const delta = time - this._lastTickTime;
35
+ this._lastTickTime = time;
36
+
37
+ const percentage = (this._currentValue / delta) * 100;
38
+ this._buckets.push(percentage);
39
+ if (this._buckets.length > MAX_BUCKETS) {
40
+ this._buckets.shift();
41
+ }
42
+ this._currentValue = 0;
43
+ }
44
+
45
+ override getData(): Metric {
46
+ return {
47
+ name: this.name!,
48
+ timeSeries: {
49
+ tracks: [
50
+ {
51
+ name: this.name!,
52
+ units: '%',
53
+ points: this._buckets.map((value, index) => ({
54
+ value,
55
+ })),
56
+ total: this._totalValue,
57
+ },
58
+ ],
59
+ },
60
+ };
61
+ }
62
+ }
@@ -0,0 +1,31 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { Metric } from '@dxos/protocols/proto/dxos/tracing';
6
+
7
+ import { BaseCounter } from './base';
8
+
9
+ export class UnaryCounter extends BaseCounter {
10
+ value = 0;
11
+ units?: string;
12
+
13
+ constructor({ units }: { units?: string } = {}) {
14
+ super();
15
+ this.units = units;
16
+ }
17
+
18
+ inc(by = 1) {
19
+ this.value += by;
20
+ }
21
+
22
+ getData(): Metric {
23
+ return {
24
+ name: this.name!,
25
+ counter: {
26
+ value: this.value,
27
+ units: this.units,
28
+ },
29
+ };
30
+ }
31
+ }
package/src/symbols.ts CHANGED
@@ -2,15 +2,17 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export const symbolTracingContext = Symbol('dxos.tracing-context');
5
+ export const symbolTracingContext = Symbol('dxos.tracing.context');
6
6
 
7
7
  export type TracingContext = {
8
8
  infoProperties: Record<string, {}>;
9
+ metricsProperties: Record<string, {}>;
9
10
  };
10
11
 
11
12
  export const getTracingContext = (target: any): TracingContext => {
12
- return (target[symbolTracingContext] ??= {
13
+ return ((target[symbolTracingContext] as TracingContext | undefined) ??= {
13
14
  infoProperties: {},
15
+ metricsProperties: {},
14
16
  });
15
17
  };
16
18