@wizeworks/lens-hub 0.0.0-stage → 0.3.0-alpha.2

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 (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +60 -2
  3. package/dist/api.d.ts +20 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +90 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/auth.d.ts +9 -0
  8. package/dist/auth.d.ts.map +1 -0
  9. package/dist/auth.js +55 -0
  10. package/dist/auth.js.map +1 -0
  11. package/dist/body.d.ts +9 -0
  12. package/dist/body.d.ts.map +1 -0
  13. package/dist/body.js +25 -0
  14. package/dist/body.js.map +1 -0
  15. package/dist/cli-args.d.ts +10 -0
  16. package/dist/cli-args.d.ts.map +1 -0
  17. package/dist/cli-args.js +63 -0
  18. package/dist/cli-args.js.map +1 -0
  19. package/dist/cli.d.ts +3 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +35 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/data.d.ts +17 -0
  24. package/dist/data.d.ts.map +1 -0
  25. package/dist/data.js +39 -0
  26. package/dist/data.js.map +1 -0
  27. package/dist/hub.d.ts +14 -0
  28. package/dist/hub.d.ts.map +1 -0
  29. package/dist/hub.js +89 -0
  30. package/dist/hub.js.map +1 -0
  31. package/dist/import.d.ts +4 -0
  32. package/dist/import.d.ts.map +1 -0
  33. package/dist/import.js +41 -0
  34. package/dist/import.js.map +1 -0
  35. package/dist/index.d.ts +7 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +3 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/ingest.d.ts +9 -0
  40. package/dist/ingest.d.ts.map +1 -0
  41. package/dist/ingest.js +83 -0
  42. package/dist/ingest.js.map +1 -0
  43. package/dist/kit.d.ts +10 -0
  44. package/dist/kit.d.ts.map +1 -0
  45. package/dist/kit.js +8 -0
  46. package/dist/kit.js.map +1 -0
  47. package/dist/mcp.d.ts +4 -0
  48. package/dist/mcp.d.ts.map +1 -0
  49. package/dist/mcp.js +18 -0
  50. package/dist/mcp.js.map +1 -0
  51. package/dist/metrics-read.d.ts +12 -0
  52. package/dist/metrics-read.d.ts.map +1 -0
  53. package/dist/metrics-read.js +18 -0
  54. package/dist/metrics-read.js.map +1 -0
  55. package/dist/metrics-write.d.ts +12 -0
  56. package/dist/metrics-write.d.ts.map +1 -0
  57. package/dist/metrics-write.js +107 -0
  58. package/dist/metrics-write.js.map +1 -0
  59. package/dist/models-api.d.ts +5 -0
  60. package/dist/models-api.d.ts.map +1 -0
  61. package/dist/models-api.js +36 -0
  62. package/dist/models-api.js.map +1 -0
  63. package/dist/options.d.ts +36 -0
  64. package/dist/options.d.ts.map +1 -0
  65. package/dist/options.js +22 -0
  66. package/dist/options.js.map +1 -0
  67. package/dist/otlp/index.d.ts +8 -0
  68. package/dist/otlp/index.d.ts.map +1 -0
  69. package/dist/otlp/index.js +41 -0
  70. package/dist/otlp/index.js.map +1 -0
  71. package/dist/otlp/logs.d.ts +24 -0
  72. package/dist/otlp/logs.d.ts.map +1 -0
  73. package/dist/otlp/logs.js +44 -0
  74. package/dist/otlp/logs.js.map +1 -0
  75. package/dist/otlp/metrics.d.ts +59 -0
  76. package/dist/otlp/metrics.d.ts.map +1 -0
  77. package/dist/otlp/metrics.js +73 -0
  78. package/dist/otlp/metrics.js.map +1 -0
  79. package/dist/otlp/proto.d.ts +14 -0
  80. package/dist/otlp/proto.d.ts.map +1 -0
  81. package/dist/otlp/proto.js +132 -0
  82. package/dist/otlp/proto.js.map +1 -0
  83. package/dist/otlp/spans.d.ts +33 -0
  84. package/dist/otlp/spans.d.ts.map +1 -0
  85. package/dist/otlp/spans.js +80 -0
  86. package/dist/otlp/spans.js.map +1 -0
  87. package/dist/otlp/values.d.ts +40 -0
  88. package/dist/otlp/values.d.ts.map +1 -0
  89. package/dist/otlp/values.js +78 -0
  90. package/dist/otlp/values.js.map +1 -0
  91. package/dist/scale-exec.d.ts +10 -0
  92. package/dist/scale-exec.d.ts.map +1 -0
  93. package/dist/scale-exec.js +22 -0
  94. package/dist/scale-exec.js.map +1 -0
  95. package/dist/schema-scale.d.ts +7 -0
  96. package/dist/schema-scale.d.ts.map +1 -0
  97. package/dist/schema-scale.js +99 -0
  98. package/dist/schema-scale.js.map +1 -0
  99. package/dist/schema.d.ts +13 -0
  100. package/dist/schema.d.ts.map +1 -0
  101. package/dist/schema.js +49 -0
  102. package/dist/schema.js.map +1 -0
  103. package/dist/settle.d.ts +28 -0
  104. package/dist/settle.d.ts.map +1 -0
  105. package/dist/settle.js +103 -0
  106. package/dist/settle.js.map +1 -0
  107. package/dist/store-read.d.ts +27 -0
  108. package/dist/store-read.d.ts.map +1 -0
  109. package/dist/store-read.js +74 -0
  110. package/dist/store-read.js.map +1 -0
  111. package/dist/store.d.ts +42 -0
  112. package/dist/store.d.ts.map +1 -0
  113. package/dist/store.js +118 -0
  114. package/dist/store.js.map +1 -0
  115. package/package.json +64 -3
@@ -0,0 +1,36 @@
1
+ export interface HubOptions {
2
+ /** Port to listen on. Default 5960. 0 picks a free port. */
3
+ port?: number;
4
+ /** Address to listen on. Default "127.0.0.1" (this machine only). Use "0.0.0.0" for the network, with a token. */
5
+ host?: string;
6
+ /** Where the hub file lives, or "memory". Default `~/.wizelens/hub/hub.db`. */
7
+ storagePath?: string;
8
+ /** When set, every call needs it: `Authorization: Bearer <token>`, or a one-time `?token=` in the browser. */
9
+ token?: string;
10
+ /** Most traces kept. Default 50000. */
11
+ maxTraces?: number;
12
+ /** Oldest trace (and metric point) kept, in ms. Default 7 days. */
13
+ maxAgeMs?: number;
14
+ /** Most metric points kept. Default 2,000,000. */
15
+ maxMetricPoints?: number;
16
+ /** Expose the read-only MCP endpoint at `/_wizelens/mcp`. Default false. */
17
+ enableMcp?: boolean;
18
+ /** Key fragments to redact. Default: the contract list. */
19
+ redactKeys?: string[];
20
+ /** Override where the dashboard build lives. */
21
+ uiDir?: string;
22
+ /** Name shown in the dashboard. Default "wizelens-hub". */
23
+ name?: string;
24
+ /** Where MCP audit lines go. Default console.info. */
25
+ audit?: (line: string) => void;
26
+ now?: () => number;
27
+ }
28
+ export interface ResolvedHubOptions extends Required<Omit<HubOptions, "token" | "uiDir" | "audit" | "now">> {
29
+ token: string | undefined;
30
+ uiDir: string | undefined;
31
+ audit: (line: string) => void;
32
+ now: () => number;
33
+ }
34
+ export declare const DEFAULT_STORAGE_PATH: string;
35
+ export declare function resolveHubOptions(o?: HubOptions): ResolvedHubOptions;
36
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kHAAkH;IAClH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8GAA8G;IAC9G,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC;IACzG,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,oBAAoB,QAAgD,CAAC;AAElF,wBAAgB,iBAAiB,CAAC,CAAC,GAAE,UAAe,GAAG,kBAAkB,CAgBxE"}
@@ -0,0 +1,22 @@
1
+ import { homedir } from "node:os";
2
+ import { join } from "node:path";
3
+ import { DEFAULT_REDACT_KEYS, HUB_DEFAULT_PORT } from "@wizeworks/lens-core";
4
+ export const DEFAULT_STORAGE_PATH = join(homedir(), ".wizelens", "hub", "hub.db");
5
+ export function resolveHubOptions(o = {}) {
6
+ return {
7
+ port: o.port ?? HUB_DEFAULT_PORT,
8
+ host: o.host ?? "127.0.0.1",
9
+ storagePath: o.storagePath ?? DEFAULT_STORAGE_PATH,
10
+ token: o.token || undefined,
11
+ maxTraces: o.maxTraces ?? 50_000,
12
+ maxAgeMs: o.maxAgeMs ?? 7 * 24 * 60 * 60_000,
13
+ maxMetricPoints: o.maxMetricPoints ?? 2_000_000,
14
+ enableMcp: o.enableMcp ?? false,
15
+ redactKeys: o.redactKeys ?? [...DEFAULT_REDACT_KEYS],
16
+ uiDir: o.uiDir,
17
+ name: o.name ?? "wizelens-hub",
18
+ audit: o.audit ?? ((line) => console.info(line)),
19
+ now: o.now ?? Date.now,
20
+ };
21
+ }
22
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAqC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAElF,MAAM,UAAU,iBAAiB,CAAC,CAAC,GAAe,EAAE;IAClD,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,gBAAgB;QAChC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,WAAW;QAC3B,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,oBAAoB;QAClD,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS;QAC3B,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,MAAM;QAChC,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM;QAC5C,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,SAAS;QAC/C,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,KAAK;QAC/B,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,GAAG,mBAAmB,CAAC;QACpD,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,cAAc;QAC9B,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { HubWrite } from "../store.js";
3
+ export type OtlpSignal = "traces" | "logs" | "metrics";
4
+ /** The OTLP/HTTP paths the hub answers: the standard ones, so OTEL_EXPORTER_OTLP_ENDPOINT can point at the hub. */
5
+ export declare function otlpSignalOf(path: string): OtlpSignal | null;
6
+ /** Take one OTLP export. Answers in the format it was sent in, with an empty (full success) response. */
7
+ export declare function handleOtlp(signal: OtlpSignal, req: IncomingMessage, res: ServerResponse, save: (w: HubWrite) => void | Promise<void>, redactKeys: readonly string[]): Promise<void>;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/otlp/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAM5C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvD,mHAAmH;AACnH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAG5D;AAgBD,yGAAyG;AACzG,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWzL"}
@@ -0,0 +1,41 @@
1
+ import { isProtobuf, parseJson, readBody } from "../body.js";
2
+ import { writesFromLogs } from "./logs.js";
3
+ import { writesFromMetrics } from "./metrics.js";
4
+ import { decodeLogs, decodeMetrics, decodeTraces } from "./proto.js";
5
+ import { writesFromSpans } from "./spans.js";
6
+ /** The OTLP/HTTP paths the hub answers: the standard ones, so OTEL_EXPORTER_OTLP_ENDPOINT can point at the hub. */
7
+ export function otlpSignalOf(path) {
8
+ const m = /^(?:\/_wizelens)?\/v1\/(traces|logs|metrics)$/.exec(path);
9
+ return m ? m[1] : null;
10
+ }
11
+ async function writesOf(signal, req, redactKeys) {
12
+ const body = await readBody(req);
13
+ if (signal === "traces") {
14
+ const list = isProtobuf(req) ? decodeTraces(body) : (parseJson(body)?.resourceSpans ?? []);
15
+ return writesFromSpans(list, redactKeys);
16
+ }
17
+ if (signal === "metrics") {
18
+ const list = isProtobuf(req) ? decodeMetrics(body) : (parseJson(body)?.resourceMetrics ?? []);
19
+ return writesFromMetrics(list, redactKeys);
20
+ }
21
+ const list = isProtobuf(req) ? decodeLogs(body) : (parseJson(body)?.resourceLogs ?? []);
22
+ return writesFromLogs(list, redactKeys);
23
+ }
24
+ /** Take one OTLP export. Answers in the format it was sent in, with an empty (full success) response. */
25
+ export async function handleOtlp(signal, req, res, save, redactKeys) {
26
+ const proto = isProtobuf(req);
27
+ try {
28
+ for (const w of await writesOf(signal, req, redactKeys))
29
+ await save(w);
30
+ }
31
+ catch (err) {
32
+ res.writeHead(400, { "Content-Type": "application/json" });
33
+ res.end(JSON.stringify({ code: 3, message: err instanceof Error ? err.message : "invalid body" }));
34
+ return;
35
+ }
36
+ if (proto)
37
+ res.writeHead(200, { "Content-Type": "application/x-protobuf" }).end();
38
+ else
39
+ res.writeHead(200, { "Content-Type": "application/json" }).end("{}");
40
+ }
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/otlp/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,EAAyB,cAAc,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAA4B,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAA0B,eAAe,EAAE,MAAM,YAAY,CAAC;AAIrE,mHAAmH;AACnH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,CAAC,GAAG,+CAA+C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,MAAkB,EAAE,GAAoB,EAAE,UAA6B;IAC7F,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,SAAS,CAAC,IAAI,CAA6C,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;QACxI,OAAO,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,SAAS,CAAC,IAAI,CAAiD,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC;QAC/I,OAAO,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,SAAS,CAAC,IAAI,CAA2C,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC;IACnI,OAAO,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC1C,CAAC;AAED,yGAAyG;AACzG,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAkB,EAAE,GAAoB,EAAE,GAAmB,EAAE,IAA2C,EAAE,UAA6B;IACxK,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC;YAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACnG,OAAO;IACT,CAAC;IACD,IAAI,KAAK;QAAE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,wBAAwB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;;QAC7E,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { HubWrite } from "../store.js";
2
+ import { type OtlpAnyValue, type OtlpKeyValue, type OtlpResource } from "./values.js";
3
+ export interface OtlpLogRecord {
4
+ timeUnixNano?: string | number;
5
+ observedTimeUnixNano?: string | number;
6
+ severityNumber?: number | string;
7
+ severityText?: string;
8
+ body?: OtlpAnyValue;
9
+ attributes?: OtlpKeyValue[];
10
+ traceId?: string;
11
+ spanId?: string;
12
+ }
13
+ export interface OtlpResourceLogs {
14
+ resource?: OtlpResource;
15
+ scopeLogs?: {
16
+ scope?: {
17
+ name?: string;
18
+ };
19
+ logRecords?: OtlpLogRecord[];
20
+ }[];
21
+ }
22
+ /** Logs that belong to a trace. WizeLens shows logs per trace, so others are skipped. */
23
+ export declare function writesFromLogs(list: readonly OtlpResourceLogs[], redactKeys: readonly string[]): HubWrite[];
24
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/otlp/logs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAkC,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAqB,MAAM,aAAa,CAAC;AAEzI,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,SAAS,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,UAAU,CAAC,EAAE,aAAa,EAAE,CAAA;KAAE,EAAE,CAAC;CAC3E;AAcD,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,gBAAgB,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,EAAE,CAyB3G"}
@@ -0,0 +1,44 @@
1
+ import { redactAttributes } from "@wizeworks/lens-core";
2
+ import { attributesOf, hexId, nanosToMs, senderOf, valueOf } from "./values.js";
3
+ const LEVELS = ["trace", "debug", "info", "warn", "error", "critical"];
4
+ /** Severity 1-4 is trace, 5-8 debug, ... 21-24 critical. Text wins when the number is missing. */
5
+ function levelOf(r) {
6
+ const n = Number(r.severityNumber);
7
+ if (n >= 1 && n <= 24)
8
+ return LEVELS[Math.floor((n - 1) / 4)];
9
+ const t = r.severityText?.toLowerCase() ?? "";
10
+ if (t.startsWith("warn"))
11
+ return "warn";
12
+ if (t.startsWith("fatal") || t.startsWith("crit"))
13
+ return "critical";
14
+ return LEVELS.find((l) => t.startsWith(l)) ?? "info";
15
+ }
16
+ /** Logs that belong to a trace. WizeLens shows logs per trace, so others are skipped. */
17
+ export function writesFromLogs(list, redactKeys) {
18
+ return list.map((rl) => {
19
+ const sender = senderOf(rl.resource);
20
+ const logs = [];
21
+ for (const sl of rl.scopeLogs ?? []) {
22
+ for (const r of sl.logRecords ?? []) {
23
+ const traceId = hexId(r.traceId, 32);
24
+ if (!traceId)
25
+ continue;
26
+ const body = valueOf(r.body);
27
+ logs.push({
28
+ traceId,
29
+ log: {
30
+ timeMs: nanosToMs(r.timeUnixNano) || nanosToMs(r.observedTimeUnixNano),
31
+ level: levelOf(r),
32
+ category: sl.scope?.name || "otlp",
33
+ message: body === null ? "" : String(body).slice(0, 10_000),
34
+ service: sender.service,
35
+ spanId: hexId(r.spanId, 16) ?? null,
36
+ attributes: redactAttributes(attributesOf(r.attributes), redactKeys),
37
+ },
38
+ });
39
+ }
40
+ }
41
+ return { sender, via: "otlp", spans: [], logs, remotes: [] };
42
+ });
43
+ }
44
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/otlp/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEpF,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAA2D,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAkBzI,MAAM,MAAM,GAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAEnF,kGAAkG;AAClG,SAAS,OAAO,CAAC,CAAgB;IAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;IAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,UAAU,CAAC;IACrE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AACvD,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,cAAc,CAAC,IAAiC,EAAE,UAA6B;IAC7F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YACpC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACrC,IAAI,CAAC,OAAO;oBAAE,SAAS;gBACvB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7B,IAAI,CAAC,IAAI,CAAC;oBACR,OAAO;oBACP,GAAG,EAAE;wBACH,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC;wBACtE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;wBACjB,QAAQ,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,IAAI,MAAM;wBAClC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;wBAC3D,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI;wBACnC,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;qBACrE;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAe,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { type MetricHistogram, type MetricPoint } from "@wizeworks/lens-core";
2
+ import type { HubWrite } from "../store.js";
3
+ import { type OtlpKeyValue, type OtlpResource } from "./values.js";
4
+ type Num = string | number | undefined;
5
+ interface OtlpDataPoint {
6
+ attributes?: OtlpKeyValue[];
7
+ startTimeUnixNano?: Num;
8
+ timeUnixNano?: Num;
9
+ asDouble?: number;
10
+ asInt?: Num;
11
+ count?: Num;
12
+ sum?: number;
13
+ min?: number;
14
+ max?: number;
15
+ bucketCounts?: Num[];
16
+ explicitBounds?: number[];
17
+ scale?: number;
18
+ zeroCount?: Num;
19
+ positive?: {
20
+ offset?: number;
21
+ bucketCounts?: Num[];
22
+ };
23
+ negative?: {
24
+ offset?: number;
25
+ bucketCounts?: Num[];
26
+ };
27
+ }
28
+ interface OtlpData {
29
+ dataPoints?: OtlpDataPoint[];
30
+ aggregationTemporality?: number | string;
31
+ isMonotonic?: boolean;
32
+ }
33
+ export interface OtlpMetric {
34
+ name?: string;
35
+ description?: string;
36
+ unit?: string;
37
+ gauge?: OtlpData;
38
+ sum?: OtlpData;
39
+ histogram?: OtlpData;
40
+ exponentialHistogram?: OtlpData;
41
+ summary?: OtlpData;
42
+ }
43
+ export interface OtlpResourceMetrics {
44
+ resource?: OtlpResource;
45
+ scopeMetrics?: {
46
+ scope?: {
47
+ name?: string;
48
+ };
49
+ metrics?: OtlpMetric[];
50
+ }[];
51
+ }
52
+ /** An exponential histogram as explicit buckets. Zero and negative values go to the first bucket. */
53
+ export declare function fromExponential(dp: OtlpDataPoint): MetricHistogram;
54
+ /** The points of one OTLP metric. Points that do not pass the core checks are skipped. */
55
+ export declare function pointsOf(m: OtlpMetric, service: string, redactKeys: readonly string[]): MetricPoint[];
56
+ /** One write per resource: each resource is one sender. */
57
+ export declare function writesFromMetrics(list: readonly OtlpResourceMetrics[], redactKeys: readonly string[]): HubWrite[];
58
+ export {};
59
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/otlp/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAmB,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AACpH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAA2B,KAAK,YAAY,EAAE,KAAK,YAAY,EAAY,MAAM,aAAa,CAAC;AAEtG,KAAK,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvC,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IACrD,QAAQ,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;CACtD;AAED,UAAU,QAAQ;IAChB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,oBAAoB,CAAC,EAAE,QAAQ,CAAC;IAChC,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,YAAY,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE,EAAE,CAAC;CACxE;AAaD,qGAAqG;AACrG,wBAAgB,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,eAAe,CAUlE;AAoBD,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,EAAE,CAsBrG;AAED,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,mBAAmB,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,EAAE,CAMjH"}
@@ -0,0 +1,73 @@
1
+ import { sanitizeMetricPoint } from "@wizeworks/lens-core";
2
+ import { attributesOf, nanosToMs, senderOf } from "./values.js";
3
+ const num = (v) => (v === undefined || v === "" ? 0 : Number(v));
4
+ const temporalityOf = (t) => (t === 1 || t === "AGGREGATION_TEMPORALITY_DELTA" ? "delta" : "cumulative");
5
+ /** An explicit-bucket histogram as sent. Counts that do not fit the bounds keep count and sum only. */
6
+ function explicit(dp) {
7
+ const bounds = (dp.explicitBounds ?? []).map(Number);
8
+ const counts = (dp.bucketCounts ?? []).map(num);
9
+ const fits = counts.length === bounds.length + 1;
10
+ return { count: num(dp.count), sum: dp.sum ?? 0, min: dp.min ?? null, max: dp.max ?? null, bounds: fits ? bounds : [], counts: fits ? counts : [] };
11
+ }
12
+ /** An exponential histogram as explicit buckets. Zero and negative values go to the first bucket. */
13
+ export function fromExponential(dp) {
14
+ // Upper bound of index i is base^(i+1) with base = 2^(2^-scale); computed as one power of 2 to keep it exact.
15
+ const bound = (index) => 2 ** (index * 2 ** -(dp.scale ?? 0));
16
+ const offset = dp.positive?.offset ?? 0;
17
+ const positive = (dp.positive?.bucketCounts ?? []).map(num);
18
+ const low = num(dp.zeroCount) + (dp.negative?.bucketCounts ?? []).map(num).reduce((t, c) => t + c, 0);
19
+ const head = { count: num(dp.count), sum: dp.sum ?? 0, min: dp.min ?? null, max: dp.max ?? null };
20
+ if (positive.length === 0)
21
+ return { ...head, bounds: [], counts: [] };
22
+ const bounds = [bound(offset), ...positive.map((_, i) => bound(offset + i + 1))];
23
+ return { ...head, bounds, counts: [low, ...positive, 0] };
24
+ }
25
+ /** A summary keeps its count and sum. */
26
+ const fromSummary = (dp) => ({ count: num(dp.count), sum: dp.sum ?? 0, bounds: [], counts: [] });
27
+ function shapeOf(m) {
28
+ if (m.gauge)
29
+ return { kind: "gauge", data: m.gauge };
30
+ if (m.sum)
31
+ return { kind: "sum", data: m.sum };
32
+ if (m.histogram)
33
+ return { kind: "histogram", data: m.histogram, histogram: explicit };
34
+ if (m.exponentialHistogram)
35
+ return { kind: "histogram", data: m.exponentialHistogram, histogram: fromExponential };
36
+ if (m.summary)
37
+ return { kind: "histogram", data: m.summary, histogram: fromSummary };
38
+ return null;
39
+ }
40
+ /** The points of one OTLP metric. Points that do not pass the core checks are skipped. */
41
+ export function pointsOf(m, service, redactKeys) {
42
+ const shape = shapeOf(m);
43
+ if (!shape || !m.name)
44
+ return [];
45
+ const temporality = temporalityOf(shape.data.aggregationTemporality);
46
+ return (shape.data.dataPoints ?? []).flatMap((dp) => {
47
+ const startMs = nanosToMs(dp.startTimeUnixNano);
48
+ const raw = {
49
+ name: m.name,
50
+ kind: shape.kind,
51
+ unit: m.unit ?? "",
52
+ description: m.description,
53
+ attributes: attributesOf(dp.attributes),
54
+ timeMs: nanosToMs(dp.timeUnixNano),
55
+ startMs: startMs || undefined,
56
+ monotonic: shape.data.isMonotonic === true,
57
+ temporality: shape.kind === "gauge" ? undefined : m.summary ? "cumulative" : temporality,
58
+ value: dp.asDouble ?? (dp.asInt !== undefined ? num(dp.asInt) : undefined),
59
+ histogram: shape.histogram?.(dp),
60
+ };
61
+ const p = sanitizeMetricPoint(raw, redactKeys, service);
62
+ return p ? [p] : [];
63
+ });
64
+ }
65
+ /** One write per resource: each resource is one sender. */
66
+ export function writesFromMetrics(list, redactKeys) {
67
+ return list.map((rm) => {
68
+ const sender = senderOf(rm.resource);
69
+ const metrics = (rm.scopeMetrics ?? []).flatMap((sm) => (sm.metrics ?? []).flatMap((m) => pointsOf(m, sender.service, redactKeys)));
70
+ return { sender, via: "otlp", spans: [], logs: [], remotes: [], metrics };
71
+ });
72
+ }
73
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/otlp/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { OtlpResourceLogs } from "./logs.js";
2
+ import type { OtlpResourceMetrics } from "./metrics.js";
3
+ import type { OtlpResourceSpans } from "./spans.js";
4
+ export declare const decodeTraces: (body: Uint8Array) => OtlpResourceSpans[];
5
+ export declare const decodeLogs: (body: Uint8Array) => OtlpResourceLogs[];
6
+ export declare const decodeMetrics: (body: Uint8Array) => OtlpResourceMetrics[];
7
+ /** Encode a request, for tests and for tools that send protobuf. */
8
+ export declare const encodeTraces: (request: {
9
+ resourceSpans: unknown[];
10
+ }) => Uint8Array;
11
+ export declare const encodeMetrics: (request: {
12
+ resourceMetrics: unknown[];
13
+ }) => Uint8Array;
14
+ //# sourceMappingURL=proto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proto.d.ts","sourceRoot":"","sources":["../../src/otlp/proto.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAoIpD,eAAO,MAAM,YAAY,SAAU,UAAU,KAAG,iBAAiB,EACmC,CAAC;AAErG,eAAO,MAAM,UAAU,SAAU,UAAU,KAAG,gBAAgB,EACmC,CAAC;AAElG,eAAO,MAAM,aAAa,SAAU,UAAU,KAAG,mBAAmB,EACsC,CAAC;AAO3G,oEAAoE;AACpE,eAAO,MAAM,YAAY,YAAa;IAAE,aAAa,EAAE,OAAO,EAAE,CAAA;CAAE,KAAG,UAA0D,CAAC;AAEhI,eAAO,MAAM,aAAa,YAAa;IAAE,eAAe,EAAE,OAAO,EAAE,CAAA;CAAE,KAAG,UAA4D,CAAC"}
@@ -0,0 +1,132 @@
1
+ import protobuf from "protobufjs";
2
+ const msg = (fields, oneof) => ({
3
+ fields: Object.fromEntries(Object.entries(fields).map(([k, [type, id, rule]]) => [k, rule ? { type, id, rule } : { type, id }])),
4
+ ...(oneof ? { oneofs: { value: { oneof } } } : {}),
5
+ });
6
+ const VALUE_FIELDS = ["stringValue", "boolValue", "intValue", "doubleValue", "arrayValue", "kvlistValue", "bytesValue"];
7
+ const POINT_TIMES = { startTimeUnixNano: ["fixed64", 2], timeUnixNano: ["fixed64", 3] };
8
+ // metrics.proto: Gauge, Sum, Histogram, ExponentialHistogram, and Summary. Exemplars are not read.
9
+ const METRICS = {
10
+ NumberDataPoint: msg({ ...POINT_TIMES, attributes: ["KeyValue", 7, "repeated"], asDouble: ["double", 4], asInt: ["sfixed64", 6] }),
11
+ HistogramDataPoint: msg({
12
+ ...POINT_TIMES,
13
+ attributes: ["KeyValue", 9, "repeated"],
14
+ count: ["fixed64", 4],
15
+ sum: ["double", 5],
16
+ bucketCounts: ["fixed64", 6, "repeated"],
17
+ explicitBounds: ["double", 7, "repeated"],
18
+ min: ["double", 11],
19
+ max: ["double", 12],
20
+ }),
21
+ Buckets: msg({ offset: ["sint32", 1], bucketCounts: ["uint64", 2, "repeated"] }),
22
+ ExponentialHistogramDataPoint: msg({
23
+ ...POINT_TIMES,
24
+ attributes: ["KeyValue", 1, "repeated"],
25
+ count: ["fixed64", 4],
26
+ sum: ["double", 5],
27
+ scale: ["sint32", 6],
28
+ zeroCount: ["fixed64", 7],
29
+ positive: ["Buckets", 8],
30
+ negative: ["Buckets", 9],
31
+ min: ["double", 12],
32
+ max: ["double", 13],
33
+ }),
34
+ ValueAtQuantile: msg({ quantile: ["double", 1], value: ["double", 2] }),
35
+ SummaryDataPoint: msg({ ...POINT_TIMES, attributes: ["KeyValue", 7, "repeated"], count: ["fixed64", 4], sum: ["double", 5], quantileValues: ["ValueAtQuantile", 6, "repeated"] }),
36
+ Gauge: msg({ dataPoints: ["NumberDataPoint", 1, "repeated"] }),
37
+ Sum: msg({ dataPoints: ["NumberDataPoint", 1, "repeated"], aggregationTemporality: ["int32", 2], isMonotonic: ["bool", 3] }),
38
+ Histogram: msg({ dataPoints: ["HistogramDataPoint", 1, "repeated"], aggregationTemporality: ["int32", 2] }),
39
+ ExponentialHistogram: msg({ dataPoints: ["ExponentialHistogramDataPoint", 1, "repeated"], aggregationTemporality: ["int32", 2] }),
40
+ Summary: msg({ dataPoints: ["SummaryDataPoint", 1, "repeated"] }),
41
+ Metric: msg({
42
+ name: ["string", 1],
43
+ description: ["string", 2],
44
+ unit: ["string", 3],
45
+ gauge: ["Gauge", 5],
46
+ sum: ["Sum", 7],
47
+ histogram: ["Histogram", 9],
48
+ exponentialHistogram: ["ExponentialHistogram", 10],
49
+ summary: ["Summary", 11],
50
+ }),
51
+ ScopeMetrics: msg({ scope: ["Scope", 1], metrics: ["Metric", 2, "repeated"] }),
52
+ ResourceMetrics: msg({ resource: ["Resource", 1], scopeMetrics: ["ScopeMetrics", 2, "repeated"] }),
53
+ ExportMetricsServiceRequest: msg({ resourceMetrics: ["ResourceMetrics", 1, "repeated"] }),
54
+ };
55
+ const DESCRIPTOR = {
56
+ nested: {
57
+ AnyValue: msg({
58
+ stringValue: ["string", 1],
59
+ boolValue: ["bool", 2],
60
+ intValue: ["int64", 3],
61
+ doubleValue: ["double", 4],
62
+ arrayValue: ["ArrayValue", 5],
63
+ kvlistValue: ["KeyValueList", 6],
64
+ bytesValue: ["bytes", 7],
65
+ }, VALUE_FIELDS),
66
+ ArrayValue: msg({ values: ["AnyValue", 1, "repeated"] }),
67
+ KeyValueList: msg({ values: ["KeyValue", 1, "repeated"] }),
68
+ KeyValue: msg({ key: ["string", 1], value: ["AnyValue", 2] }),
69
+ Scope: msg({ name: ["string", 1], version: ["string", 2] }),
70
+ Resource: msg({ attributes: ["KeyValue", 1, "repeated"] }),
71
+ Event: msg({ timeUnixNano: ["fixed64", 1], name: ["string", 2], attributes: ["KeyValue", 3, "repeated"] }),
72
+ Status: msg({ message: ["string", 2], code: ["int32", 3] }),
73
+ Span: msg({
74
+ traceId: ["bytes", 1],
75
+ spanId: ["bytes", 2],
76
+ parentSpanId: ["bytes", 4],
77
+ name: ["string", 5],
78
+ kind: ["int32", 6],
79
+ startTimeUnixNano: ["fixed64", 7],
80
+ endTimeUnixNano: ["fixed64", 8],
81
+ attributes: ["KeyValue", 9, "repeated"],
82
+ events: ["Event", 11, "repeated"],
83
+ status: ["Status", 15],
84
+ }),
85
+ ScopeSpans: msg({ scope: ["Scope", 1], spans: ["Span", 2, "repeated"] }),
86
+ ResourceSpans: msg({ resource: ["Resource", 1], scopeSpans: ["ScopeSpans", 2, "repeated"] }),
87
+ ExportTraceServiceRequest: msg({ resourceSpans: ["ResourceSpans", 1, "repeated"] }),
88
+ LogRecord: msg({
89
+ timeUnixNano: ["fixed64", 1],
90
+ severityNumber: ["int32", 2],
91
+ severityText: ["string", 3],
92
+ body: ["AnyValue", 5],
93
+ attributes: ["KeyValue", 6, "repeated"],
94
+ traceId: ["bytes", 9],
95
+ spanId: ["bytes", 10],
96
+ observedTimeUnixNano: ["fixed64", 11],
97
+ }),
98
+ ScopeLogs: msg({ scope: ["Scope", 1], logRecords: ["LogRecord", 2, "repeated"] }),
99
+ ResourceLogs: msg({ resource: ["Resource", 1], scopeLogs: ["ScopeLogs", 2, "repeated"] }),
100
+ ExportLogsServiceRequest: msg({ resourceLogs: ["ResourceLogs", 1, "repeated"] }),
101
+ ...METRICS,
102
+ },
103
+ };
104
+ const root = protobuf.Root.fromJSON(DESCRIPTOR);
105
+ const TO_OBJECT = { longs: String, bytes: String, defaults: false, oneofs: false };
106
+ const ID_KEYS = new Set(["traceId", "spanId", "parentSpanId"]);
107
+ /** protobufjs gives bytes as base64. OTLP/JSON uses hex for ids, so convert them the same way. */
108
+ function hexIds(value) {
109
+ if (Array.isArray(value))
110
+ return value.map(hexIds);
111
+ if (!value || typeof value !== "object")
112
+ return value;
113
+ const out = {};
114
+ for (const [k, v] of Object.entries(value))
115
+ out[k] = ID_KEYS.has(k) && typeof v === "string" ? Buffer.from(v, "base64").toString("hex") : hexIds(v);
116
+ return out;
117
+ }
118
+ function decode(type, body) {
119
+ const t = root.lookupType(type);
120
+ return hexIds(t.toObject(t.decode(body), TO_OBJECT));
121
+ }
122
+ export const decodeTraces = (body) => decode("ExportTraceServiceRequest", body).resourceSpans ?? [];
123
+ export const decodeLogs = (body) => decode("ExportLogsServiceRequest", body).resourceLogs ?? [];
124
+ export const decodeMetrics = (body) => decode("ExportMetricsServiceRequest", body).resourceMetrics ?? [];
125
+ function encode(type, request) {
126
+ const t = root.lookupType(type);
127
+ return t.encode(t.fromObject(request)).finish();
128
+ }
129
+ /** Encode a request, for tests and for tools that send protobuf. */
130
+ export const encodeTraces = (request) => encode("ExportTraceServiceRequest", request);
131
+ export const encodeMetrics = (request) => encode("ExportMetricsServiceRequest", request);
132
+ //# sourceMappingURL=proto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proto.js","sourceRoot":"","sources":["../../src/otlp/proto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type Span } from "@wizeworks/lens-core";
2
+ import type { HubWrite } from "../store.js";
3
+ import { type OtlpKeyValue, type OtlpResource } from "./values.js";
4
+ export interface OtlpSpan {
5
+ traceId?: string;
6
+ spanId?: string;
7
+ parentSpanId?: string;
8
+ name?: string;
9
+ kind?: number | string;
10
+ startTimeUnixNano?: string | number;
11
+ endTimeUnixNano?: string | number;
12
+ attributes?: OtlpKeyValue[];
13
+ events?: {
14
+ timeUnixNano?: string | number;
15
+ name?: string;
16
+ attributes?: OtlpKeyValue[];
17
+ }[];
18
+ status?: {
19
+ code?: number | string;
20
+ message?: string;
21
+ };
22
+ }
23
+ export interface OtlpResourceSpans {
24
+ resource?: OtlpResource;
25
+ scopeSpans?: {
26
+ spans?: OtlpSpan[];
27
+ }[];
28
+ }
29
+ /** One OTLP span as a contract span. Null when its ids are not valid. */
30
+ export declare function toSpan(s: OtlpSpan, service: string, redactKeys: readonly string[]): Span | null;
31
+ /** One write per resource: each resource is one sender. */
32
+ export declare function writesFromSpans(list: readonly OtlpResourceSpans[], redactKeys: readonly string[]): HubWrite[];
33
+ //# sourceMappingURL=spans.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../../src/otlp/spans.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,KAAK,IAAI,EAAoC,MAAM,sBAAsB,CAAC;AAChI,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAkC,KAAK,YAAY,EAAE,KAAK,YAAY,EAAY,MAAM,aAAa,CAAC;AAE7G,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAA;KAAE,EAAE,CAAC;IAC1F,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;KAAE,EAAE,CAAC;CACvC;AAqCD,yEAAyE;AACzE,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CA4B/F;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,iBAAiB,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,EAAE,CAO7G"}