@xylabs/telemetry-exporter 6.0.2 → 6.0.4

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.
@@ -1,6 +1,7 @@
1
1
  import type { ReadableSpan } from '@opentelemetry/sdk-trace-base';
2
2
  import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base';
3
3
  import type { Logger } from '@xylabs/logger';
4
+ type LogColor = (value: string) => string;
4
5
  /**
5
6
  * Calculates the duration of a span in milliseconds from its high-resolution time tuple.
6
7
  * @param span - The span to measure.
@@ -15,7 +16,7 @@ export declare class XyConsoleSpanExporter extends ConsoleSpanExporter {
15
16
  /** Duration thresholds (in ms) that map to increasing log levels. */
16
17
  static readonly durationToLogLevel: number[];
17
18
  /** Chalk color functions corresponding to each log level. */
18
- static readonly logLevelToChalkColor: import("chalk").ChalkInstance[];
19
+ static readonly logLevelToChalkColor: LogColor[];
19
20
  logger: Logger;
20
21
  private _logLevel;
21
22
  constructor(logLevel?: number, logger?: Logger);
@@ -27,7 +28,7 @@ export declare class XyConsoleSpanExporter extends ConsoleSpanExporter {
27
28
  * @param level - The log level index.
28
29
  * @returns A chalk color function.
29
30
  */
30
- logColor(level: number): import("chalk").ChalkInstance;
31
+ logColor(level: number): LogColor;
31
32
  /**
32
33
  * Determines the log level of a span based on its duration.
33
34
  * @param span - The span to evaluate.
@@ -35,4 +36,5 @@ export declare class XyConsoleSpanExporter extends ConsoleSpanExporter {
35
36
  */
36
37
  spanLevel(span: ReadableSpan): number;
37
38
  }
39
+ export {};
38
40
  //# sourceMappingURL=XyConsoleSpanExporter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"XyConsoleSpanExporter.d.ts","sourceRoot":"","sources":["../../src/XyConsoleSpanExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAG5C;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,UAEtD;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,mBAAmB;IAC5D,qEAAqE;IACrE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAMjC;IAED,6DAA6D;IAC7D,MAAM,CAAC,QAAQ,CAAC,oBAAoB,kCAMnC;IAED,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,SAAS,CAAQ;gBAEb,QAAQ,SAAI,EAAE,MAAM,GAAE,MAAgB;IAMlD,gEAAgE;IAChE,IAAI,QAAQ,WAEX;IAEQ,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;IAe5C;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,YAAY;CAW7B"}
1
+ {"version":3,"file":"XyConsoleSpanExporter.d.ts","sourceRoot":"","sources":["../../src/XyConsoleSpanExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;AAezC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,UAEtD;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,mBAAmB;IAC5D,qEAAqE;IACrE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAMjC;IAED,6DAA6D;IAC7D,MAAM,CAAC,QAAQ,CAAC,oBAAoB,aAMnC;IAED,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,SAAS,CAAQ;gBAEb,QAAQ,SAAI,EAAE,MAAM,GAAE,MAAgB;IAMlD,gEAAgE;IAChE,IAAI,QAAQ,WAEX;IAEQ,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;IAe5C;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,YAAY;CAW7B"}
@@ -1,6 +1,16 @@
1
1
  // src/XyConsoleSpanExporter.ts
2
2
  import { ConsoleSpanExporter } from "@opentelemetry/sdk-trace-base";
3
- import chalk from "chalk";
3
+ var color = (open, close = 39) => {
4
+ return (value) => `\x1B[${open}m${value}\x1B[${close}m`;
5
+ };
6
+ var logColors = {
7
+ green: color(32),
8
+ grey: color(90),
9
+ magenta: color(35),
10
+ red: color(31),
11
+ white: color(37),
12
+ yellow: color(33)
13
+ };
4
14
  function spanDurationInMillis(span) {
5
15
  return span.duration[0] * 1e3 + span.duration[1] / 1e6;
6
16
  }
@@ -15,11 +25,11 @@ var XyConsoleSpanExporter = class _XyConsoleSpanExporter extends ConsoleSpanExpo
15
25
  ];
16
26
  /** Chalk color functions corresponding to each log level. */
17
27
  static logLevelToChalkColor = [
18
- chalk.grey,
19
- chalk.white,
20
- chalk.green,
21
- chalk.yellow,
22
- chalk.red
28
+ logColors.grey,
29
+ logColors.white,
30
+ logColors.green,
31
+ logColors.yellow,
32
+ logColors.red
23
33
  ];
24
34
  logger;
25
35
  _logLevel;
@@ -39,7 +49,7 @@ var XyConsoleSpanExporter = class _XyConsoleSpanExporter extends ConsoleSpanExpo
39
49
  continue;
40
50
  }
41
51
  const duration = spanDurationInMillis(span);
42
- this.logger.log(chalk.grey([
52
+ this.logger.log(logColors.grey([
43
53
  `Span [${span.name}]`,
44
54
  this.logColor(spanLevel)(`${duration}ms`),
45
55
  `TraceId: ${span.spanContext().traceId}`
@@ -52,7 +62,7 @@ var XyConsoleSpanExporter = class _XyConsoleSpanExporter extends ConsoleSpanExpo
52
62
  * @returns A chalk color function.
53
63
  */
54
64
  logColor(level) {
55
- return _XyConsoleSpanExporter.logLevelToChalkColor[level] ?? chalk.magenta;
65
+ return _XyConsoleSpanExporter.logLevelToChalkColor[level] ?? logColors.magenta;
56
66
  }
57
67
  /**
58
68
  * Determines the log level of a span based on its duration.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/XyConsoleSpanExporter.ts"],
4
- "sourcesContent": ["import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'\nimport { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base'\nimport type { Logger } from '@xylabs/logger'\nimport chalk from 'chalk'\n\n/**\n * Calculates the duration of a span in milliseconds from its high-resolution time tuple.\n * @param span - The span to measure.\n * @returns The span duration in milliseconds.\n */\nexport function spanDurationInMillis(span: ReadableSpan) {\n return span.duration[0] * 1000 + span.duration[1] / 1e6\n}\n\n/**\n * A console span exporter that formats spans with color-coded durations using chalk.\n * Spans are filtered by a configurable log level based on their duration.\n */\nexport class XyConsoleSpanExporter extends ConsoleSpanExporter {\n /** Duration thresholds (in ms) that map to increasing log levels. */\n static readonly durationToLogLevel = [\n 0,\n 1,\n 10,\n 100,\n 1000,\n ]\n\n /** Chalk color functions corresponding to each log level. */\n static readonly logLevelToChalkColor = [\n chalk.grey,\n chalk.white,\n chalk.green,\n chalk.yellow,\n chalk.red,\n ]\n\n logger: Logger\n private _logLevel: number\n\n constructor(logLevel = 0, logger: Logger = console) {\n super()\n this._logLevel = logLevel\n this.logger = logger\n }\n\n /** The minimum log level required for a span to be exported. */\n get logLevel() {\n return this._logLevel\n }\n\n override export(spans: ReadableSpan[]): void {\n for (const span of spans) {\n const spanLevel = this.spanLevel(span)\n if (spanLevel < this.logLevel) {\n continue\n }\n const duration = spanDurationInMillis(span)\n this.logger.log(chalk.grey([\n `Span [${span.name}]`,\n this.logColor(spanLevel)(`${duration}ms`),\n `TraceId: ${span.spanContext().traceId}`,\n ].join(', ')))\n }\n }\n\n /**\n * Returns the chalk color function for the given log level.\n * @param level - The log level index.\n * @returns A chalk color function.\n */\n logColor(level: number) {\n return XyConsoleSpanExporter.logLevelToChalkColor[level] ?? chalk.magenta\n }\n\n /**\n * Determines the log level of a span based on its duration.\n * @param span - The span to evaluate.\n * @returns The numeric log level (index into durationToLogLevel).\n */\n spanLevel(span: ReadableSpan) {\n let logLevel = 0\n const duration = spanDurationInMillis(span)\n for (let x = XyConsoleSpanExporter.durationToLogLevel.length - 1; x >= 0; x--) {\n if (duration > XyConsoleSpanExporter.durationToLogLevel[x]) {\n logLevel = x\n break\n }\n }\n return logLevel\n }\n}\n"],
5
- "mappings": ";AACA,SAAS,2BAA2B;AAEpC,OAAO,WAAW;AAOX,SAAS,qBAAqB,MAAoB;AACvD,SAAO,KAAK,SAAS,CAAC,IAAI,MAAO,KAAK,SAAS,CAAC,IAAI;AACtD;AAMO,IAAM,wBAAN,MAAM,+BAA8B,oBAAoB;AAAA;AAAA,EAE7D,OAAgB,qBAAqB;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAAA,EAGA,OAAgB,uBAAuB;AAAA,IACrC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EAEA;AAAA,EACQ;AAAA,EAER,YAAY,WAAW,GAAG,SAAiB,SAAS;AAClD,UAAM;AACN,SAAK,YAAY;AACjB,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA,EAGA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EAES,OAAO,OAA6B;AAC3C,eAAW,QAAQ,OAAO;AACxB,YAAM,YAAY,KAAK,UAAU,IAAI;AACrC,UAAI,YAAY,KAAK,UAAU;AAC7B;AAAA,MACF;AACA,YAAM,WAAW,qBAAqB,IAAI;AAC1C,WAAK,OAAO,IAAI,MAAM,KAAK;AAAA,QACzB,SAAS,KAAK,IAAI;AAAA,QAClB,KAAK,SAAS,SAAS,EAAE,GAAG,QAAQ,IAAI;AAAA,QACxC,YAAY,KAAK,YAAY,EAAE,OAAO;AAAA,MACxC,EAAE,KAAK,IAAI,CAAC,CAAC;AAAA,IACf;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,OAAe;AACtB,WAAO,uBAAsB,qBAAqB,KAAK,KAAK,MAAM;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,MAAoB;AAC5B,QAAI,WAAW;AACf,UAAM,WAAW,qBAAqB,IAAI;AAC1C,aAAS,IAAI,uBAAsB,mBAAmB,SAAS,GAAG,KAAK,GAAG,KAAK;AAC7E,UAAI,WAAW,uBAAsB,mBAAmB,CAAC,GAAG;AAC1D,mBAAW;AACX;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;",
4
+ "sourcesContent": ["import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'\nimport { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base'\nimport type { Logger } from '@xylabs/logger'\n\ntype LogColor = (value: string) => string\n\nconst color = (open: number, close = 39): LogColor => {\n return (value: string) => `\\u001B[${open}m${value}\\u001B[${close}m`\n}\n\nconst logColors = {\n green: color(32),\n grey: color(90),\n magenta: color(35),\n red: color(31),\n white: color(37),\n yellow: color(33),\n}\n\n/**\n * Calculates the duration of a span in milliseconds from its high-resolution time tuple.\n * @param span - The span to measure.\n * @returns The span duration in milliseconds.\n */\nexport function spanDurationInMillis(span: ReadableSpan) {\n return span.duration[0] * 1000 + span.duration[1] / 1e6\n}\n\n/**\n * A console span exporter that formats spans with color-coded durations using chalk.\n * Spans are filtered by a configurable log level based on their duration.\n */\nexport class XyConsoleSpanExporter extends ConsoleSpanExporter {\n /** Duration thresholds (in ms) that map to increasing log levels. */\n static readonly durationToLogLevel = [\n 0,\n 1,\n 10,\n 100,\n 1000,\n ]\n\n /** Chalk color functions corresponding to each log level. */\n static readonly logLevelToChalkColor = [\n logColors.grey,\n logColors.white,\n logColors.green,\n logColors.yellow,\n logColors.red,\n ]\n\n logger: Logger\n private _logLevel: number\n\n constructor(logLevel = 0, logger: Logger = console) {\n super()\n this._logLevel = logLevel\n this.logger = logger\n }\n\n /** The minimum log level required for a span to be exported. */\n get logLevel() {\n return this._logLevel\n }\n\n override export(spans: ReadableSpan[]): void {\n for (const span of spans) {\n const spanLevel = this.spanLevel(span)\n if (spanLevel < this.logLevel) {\n continue\n }\n const duration = spanDurationInMillis(span)\n this.logger.log(logColors.grey([\n `Span [${span.name}]`,\n this.logColor(spanLevel)(`${duration}ms`),\n `TraceId: ${span.spanContext().traceId}`,\n ].join(', ')))\n }\n }\n\n /**\n * Returns the chalk color function for the given log level.\n * @param level - The log level index.\n * @returns A chalk color function.\n */\n logColor(level: number) {\n return XyConsoleSpanExporter.logLevelToChalkColor[level] ?? logColors.magenta\n }\n\n /**\n * Determines the log level of a span based on its duration.\n * @param span - The span to evaluate.\n * @returns The numeric log level (index into durationToLogLevel).\n */\n spanLevel(span: ReadableSpan) {\n let logLevel = 0\n const duration = spanDurationInMillis(span)\n for (let x = XyConsoleSpanExporter.durationToLogLevel.length - 1; x >= 0; x--) {\n if (duration > XyConsoleSpanExporter.durationToLogLevel[x]) {\n logLevel = x\n break\n }\n }\n return logLevel\n }\n}\n"],
5
+ "mappings": ";AACA,SAAS,2BAA2B;AAKpC,IAAM,QAAQ,CAAC,MAAc,QAAQ,OAAiB;AACpD,SAAO,CAAC,UAAkB,QAAU,IAAI,IAAI,KAAK,QAAU,KAAK;AAClE;AAEA,IAAM,YAAY;AAAA,EAChB,OAAO,MAAM,EAAE;AAAA,EACf,MAAM,MAAM,EAAE;AAAA,EACd,SAAS,MAAM,EAAE;AAAA,EACjB,KAAK,MAAM,EAAE;AAAA,EACb,OAAO,MAAM,EAAE;AAAA,EACf,QAAQ,MAAM,EAAE;AAClB;AAOO,SAAS,qBAAqB,MAAoB;AACvD,SAAO,KAAK,SAAS,CAAC,IAAI,MAAO,KAAK,SAAS,CAAC,IAAI;AACtD;AAMO,IAAM,wBAAN,MAAM,+BAA8B,oBAAoB;AAAA;AAAA,EAE7D,OAAgB,qBAAqB;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAAA,EAGA,OAAgB,uBAAuB;AAAA,IACrC,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AAAA,EAEA;AAAA,EACQ;AAAA,EAER,YAAY,WAAW,GAAG,SAAiB,SAAS;AAClD,UAAM;AACN,SAAK,YAAY;AACjB,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA,EAGA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EAES,OAAO,OAA6B;AAC3C,eAAW,QAAQ,OAAO;AACxB,YAAM,YAAY,KAAK,UAAU,IAAI;AACrC,UAAI,YAAY,KAAK,UAAU;AAC7B;AAAA,MACF;AACA,YAAM,WAAW,qBAAqB,IAAI;AAC1C,WAAK,OAAO,IAAI,UAAU,KAAK;AAAA,QAC7B,SAAS,KAAK,IAAI;AAAA,QAClB,KAAK,SAAS,SAAS,EAAE,GAAG,QAAQ,IAAI;AAAA,QACxC,YAAY,KAAK,YAAY,EAAE,OAAO;AAAA,MACxC,EAAE,KAAK,IAAI,CAAC,CAAC;AAAA,IACf;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,OAAe;AACtB,WAAO,uBAAsB,qBAAqB,KAAK,KAAK,UAAU;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,MAAoB;AAC5B,QAAI,WAAW;AACf,UAAM,WAAW,qBAAqB,IAAI;AAC1C,aAAS,IAAI,uBAAsB,mBAAmB,SAAS,GAAG,KAAK,GAAG,KAAK;AAC7E,UAAI,WAAW,uBAAsB,mBAAmB,CAAC,GAAG;AAC1D,mBAAW;AACX;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/telemetry-exporter",
3
- "version": "6.0.2",
3
+ "version": "6.0.4",
4
4
  "description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries",
5
5
  "keywords": [
6
6
  "hex",
@@ -41,24 +41,22 @@
41
41
  "README.md"
42
42
  ],
43
43
  "dependencies": {
44
- "@xylabs/logger": "~6.0.2"
44
+ "@xylabs/logger": "~6.0.4"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@opentelemetry/api": "^1.9.1",
48
48
  "@opentelemetry/sdk-trace-base": "^2.7.1",
49
49
  "@types/node": "^25.9.1",
50
- "@xylabs/toolchain": "^8.1.1",
51
- "@xylabs/tsconfig": "^8.1.1",
52
- "chalk": "^5.6.2",
50
+ "@xylabs/toolchain": "^8.1.5",
51
+ "@xylabs/tsconfig": "^8.1.5",
53
52
  "eslint": "^10.4.0",
54
53
  "typescript": "^6.0.3",
55
- "vite": "^8.0.13",
54
+ "vite": "^8.0.14",
56
55
  "vitest": "^4.1.7"
57
56
  },
58
57
  "peerDependencies": {
59
58
  "@opentelemetry/api": "^1.9",
60
- "@opentelemetry/sdk-trace-base": "^2.7",
61
- "chalk": "^5.6"
59
+ "@opentelemetry/sdk-trace-base": "^2.7"
62
60
  },
63
61
  "engines": {
64
62
  "node": ">=18"