@wizeworks/lens-hub 0.3.0-alpha.3 → 0.3.0-alpha.5

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 (190) hide show
  1. package/dist/alerts/api.d.ts +5 -0
  2. package/dist/alerts/api.d.ts.map +1 -0
  3. package/dist/alerts/api.js +87 -0
  4. package/dist/alerts/api.js.map +1 -0
  5. package/dist/alerts/deliver.d.ts +54 -0
  6. package/dist/alerts/deliver.d.ts.map +1 -0
  7. package/dist/alerts/deliver.js +66 -0
  8. package/dist/alerts/deliver.js.map +1 -0
  9. package/dist/alerts/evaluate.d.ts +16 -0
  10. package/dist/alerts/evaluate.d.ts.map +1 -0
  11. package/dist/alerts/evaluate.js +76 -0
  12. package/dist/alerts/evaluate.js.map +1 -0
  13. package/dist/alerts/loop.d.ts +10 -0
  14. package/dist/alerts/loop.d.ts.map +1 -0
  15. package/dist/alerts/loop.js +27 -0
  16. package/dist/alerts/loop.js.map +1 -0
  17. package/dist/alerts/store.d.ts +32 -0
  18. package/dist/alerts/store.d.ts.map +1 -0
  19. package/dist/alerts/store.js +38 -0
  20. package/dist/alerts/store.js.map +1 -0
  21. package/dist/alerts/target.d.ts +3 -0
  22. package/dist/alerts/target.d.ts.map +1 -0
  23. package/dist/alerts/target.js +23 -0
  24. package/dist/alerts/target.js.map +1 -0
  25. package/dist/api.d.ts +5 -0
  26. package/dist/api.d.ts.map +1 -1
  27. package/dist/api.js +38 -4
  28. package/dist/api.js.map +1 -1
  29. package/dist/body.d.ts +2 -2
  30. package/dist/body.d.ts.map +1 -1
  31. package/dist/body.js +4 -4
  32. package/dist/body.js.map +1 -1
  33. package/dist/cli-args.d.ts +1 -1
  34. package/dist/cli-args.d.ts.map +1 -1
  35. package/dist/cli-args.js +32 -1
  36. package/dist/cli-args.js.map +1 -1
  37. package/dist/data.js +1 -1
  38. package/dist/data.js.map +1 -1
  39. package/dist/hub.d.ts.map +1 -1
  40. package/dist/hub.js +15 -3
  41. package/dist/hub.js.map +1 -1
  42. package/dist/infra-read.d.ts +11 -0
  43. package/dist/infra-read.d.ts.map +1 -0
  44. package/dist/infra-read.js +30 -0
  45. package/dist/infra-read.js.map +1 -0
  46. package/dist/ingest.d.ts.map +1 -1
  47. package/dist/ingest.js +14 -3
  48. package/dist/ingest.js.map +1 -1
  49. package/dist/issues.d.ts +10 -0
  50. package/dist/issues.d.ts.map +1 -0
  51. package/dist/issues.js +34 -0
  52. package/dist/issues.js.map +1 -0
  53. package/dist/kit.d.ts +6 -0
  54. package/dist/kit.d.ts.map +1 -1
  55. package/dist/kit.js +4 -0
  56. package/dist/kit.js.map +1 -1
  57. package/dist/list-search.d.ts +10 -0
  58. package/dist/list-search.d.ts.map +1 -0
  59. package/dist/list-search.js +13 -0
  60. package/dist/list-search.js.map +1 -0
  61. package/dist/mcp.d.ts +3 -2
  62. package/dist/mcp.d.ts.map +1 -1
  63. package/dist/mcp.js +57 -11
  64. package/dist/mcp.js.map +1 -1
  65. package/dist/metrics-read.js +1 -1
  66. package/dist/metrics-read.js.map +1 -1
  67. package/dist/models-api.d.ts +11 -1
  68. package/dist/models-api.d.ts.map +1 -1
  69. package/dist/models-api.js +41 -15
  70. package/dist/models-api.js.map +1 -1
  71. package/dist/options.d.ts +23 -2
  72. package/dist/options.d.ts.map +1 -1
  73. package/dist/options.js +10 -1
  74. package/dist/options.js.map +1 -1
  75. package/dist/otlp/db-params.d.ts +7 -0
  76. package/dist/otlp/db-params.d.ts.map +1 -0
  77. package/dist/otlp/db-params.js +74 -0
  78. package/dist/otlp/db-params.js.map +1 -0
  79. package/dist/otlp/logs.d.ts +1 -1
  80. package/dist/otlp/logs.d.ts.map +1 -1
  81. package/dist/otlp/logs.js +8 -7
  82. package/dist/otlp/logs.js.map +1 -1
  83. package/dist/otlp/metrics.d.ts +3 -3
  84. package/dist/otlp/metrics.d.ts.map +1 -1
  85. package/dist/otlp/metrics.js +7 -6
  86. package/dist/otlp/metrics.js.map +1 -1
  87. package/dist/otlp/nested.d.ts +4 -0
  88. package/dist/otlp/nested.d.ts.map +1 -0
  89. package/dist/otlp/nested.js +19 -0
  90. package/dist/otlp/nested.js.map +1 -0
  91. package/dist/otlp/semconv.d.ts +17 -0
  92. package/dist/otlp/semconv.d.ts.map +1 -0
  93. package/dist/otlp/semconv.js +68 -0
  94. package/dist/otlp/semconv.js.map +1 -0
  95. package/dist/otlp/spans.d.ts +3 -3
  96. package/dist/otlp/spans.d.ts.map +1 -1
  97. package/dist/otlp/spans.js +15 -7
  98. package/dist/otlp/spans.js.map +1 -1
  99. package/dist/otlp/values.d.ts +5 -10
  100. package/dist/otlp/values.d.ts.map +1 -1
  101. package/dist/otlp/values.js +32 -24
  102. package/dist/otlp/values.js.map +1 -1
  103. package/dist/saved.d.ts +7 -0
  104. package/dist/saved.d.ts.map +1 -0
  105. package/dist/saved.js +49 -0
  106. package/dist/saved.js.map +1 -0
  107. package/dist/scale-exec.d.ts +2 -2
  108. package/dist/scale-exec.d.ts.map +1 -1
  109. package/dist/scale-exec.js +4 -4
  110. package/dist/scale-exec.js.map +1 -1
  111. package/dist/schema-saved.d.ts +15 -0
  112. package/dist/schema-saved.d.ts.map +1 -0
  113. package/dist/schema-saved.js +43 -0
  114. package/dist/schema-saved.js.map +1 -0
  115. package/dist/schema-scale.d.ts.map +1 -1
  116. package/dist/schema-scale.js +11 -1
  117. package/dist/schema-scale.js.map +1 -1
  118. package/dist/schema.d.ts +2 -2
  119. package/dist/schema.d.ts.map +1 -1
  120. package/dist/schema.js +20 -1
  121. package/dist/schema.js.map +1 -1
  122. package/dist/search-api.d.ts +1 -1
  123. package/dist/search-api.d.ts.map +1 -1
  124. package/dist/search-api.js +7 -5
  125. package/dist/search-api.js.map +1 -1
  126. package/dist/settings-prune.d.ts +12 -0
  127. package/dist/settings-prune.d.ts.map +1 -0
  128. package/dist/settings-prune.js +15 -0
  129. package/dist/settings-prune.js.map +1 -0
  130. package/dist/settings.d.ts +27 -0
  131. package/dist/settings.d.ts.map +1 -0
  132. package/dist/settings.js +64 -0
  133. package/dist/settings.js.map +1 -0
  134. package/dist/settle.d.ts +3 -3
  135. package/dist/settle.d.ts.map +1 -1
  136. package/dist/settle.js +12 -6
  137. package/dist/settle.js.map +1 -1
  138. package/dist/slos.d.ts +14 -0
  139. package/dist/slos.d.ts.map +1 -0
  140. package/dist/slos.js +73 -0
  141. package/dist/slos.js.map +1 -0
  142. package/dist/sourcemaps-api.d.ts +15 -0
  143. package/dist/sourcemaps-api.d.ts.map +1 -0
  144. package/dist/sourcemaps-api.js +55 -0
  145. package/dist/sourcemaps-api.js.map +1 -0
  146. package/dist/sourcemaps.d.ts +10 -0
  147. package/dist/sourcemaps.d.ts.map +1 -0
  148. package/dist/sourcemaps.js +41 -0
  149. package/dist/sourcemaps.js.map +1 -0
  150. package/dist/store-read.d.ts +2 -0
  151. package/dist/store-read.d.ts.map +1 -1
  152. package/dist/store-read.js +3 -1
  153. package/dist/store-read.js.map +1 -1
  154. package/dist/store.d.ts +13 -3
  155. package/dist/store.d.ts.map +1 -1
  156. package/dist/store.js +35 -10
  157. package/dist/store.js.map +1 -1
  158. package/dist/tags-api.d.ts +5 -0
  159. package/dist/tags-api.d.ts.map +1 -0
  160. package/dist/tags-api.js +94 -0
  161. package/dist/tags-api.js.map +1 -0
  162. package/dist/tags.d.ts +11 -0
  163. package/dist/tags.d.ts.map +1 -0
  164. package/dist/tags.js +31 -0
  165. package/dist/tags.js.map +1 -0
  166. package/dist/uptime/api.d.ts +5 -0
  167. package/dist/uptime/api.d.ts.map +1 -0
  168. package/dist/uptime/api.js +78 -0
  169. package/dist/uptime/api.js.map +1 -0
  170. package/dist/uptime/cert.d.ts +5 -0
  171. package/dist/uptime/cert.d.ts.map +1 -0
  172. package/dist/uptime/cert.js +26 -0
  173. package/dist/uptime/cert.js.map +1 -0
  174. package/dist/uptime/guard.d.ts +13 -0
  175. package/dist/uptime/guard.d.ts.map +1 -0
  176. package/dist/uptime/guard.js +38 -0
  177. package/dist/uptime/guard.js.map +1 -0
  178. package/dist/uptime/run.d.ts +11 -0
  179. package/dist/uptime/run.d.ts.map +1 -0
  180. package/dist/uptime/run.js +96 -0
  181. package/dist/uptime/run.js.map +1 -0
  182. package/dist/uptime/schedule.d.ts +15 -0
  183. package/dist/uptime/schedule.d.ts.map +1 -0
  184. package/dist/uptime/schedule.js +26 -0
  185. package/dist/uptime/schedule.js.map +1 -0
  186. package/dist/uptime/store.d.ts +25 -0
  187. package/dist/uptime/store.d.ts.map +1 -0
  188. package/dist/uptime/store.js +80 -0
  189. package/dist/uptime/store.js.map +1 -0
  190. package/package.json +4 -4
package/dist/api.js CHANGED
@@ -1,19 +1,28 @@
1
1
  import { hostname } from "node:os";
2
- import { HEADER_HOP } from "@wizeworks/lens-core";
3
- import { DEFAULT_N_PLUS_ONE, DEFAULT_SLOW_QUERY_MS, firstHeader, sendJson, VERSION as NODE_VERSION } from "@wizeworks/lens-node/kit";
2
+ import { annotateErrorFrames, HEADER_HOP, SOURCEMAPS_PATH, SOURCEMAPS_RESOLVE_PATH } from "@wizeworks/lens-core";
3
+ import { firstHeader, sendJson, VERSION as NODE_VERSION } from "@wizeworks/lens-node/kit";
4
4
  import { parseJson, readBody } from "./body.js";
5
+ import { handleAlerts } from "./alerts/api.js";
6
+ import { handleIssues } from "./issues.js";
7
+ import { handleSaved } from "./saved.js";
8
+ import { handleSettings } from "./settings.js";
9
+ import { handleApdex, handleSlos } from "./slos.js";
5
10
  import { parseIngest } from "./ingest.js";
11
+ import { infraPage } from "./infra-read.js";
6
12
  import { metricParams, metricsPage, rangeOf } from "./metrics-read.js";
7
13
  import { sendPageModel } from "./models-api.js";
8
14
  import { streamChanges } from "./changes-api.js";
9
15
  import { sendSearch, sendSuggest } from "./search-api.js";
16
+ import { handleUptime } from "./uptime/api.js";
17
+ import { listMaps, resolveMaps, uploadSourceMap } from "./sourcemaps-api.js";
18
+ import { handleTags } from "./tags-api.js";
10
19
  import { countRows, distinctOf, listServices } from "./store-read.js";
11
20
  const clamp = (v, min, max) => Math.min(max, Math.max(min, v));
12
21
  const num = (p, k) => (p.has(k) && Number.isFinite(Number(p.get(k))) ? Number(p.get(k)) : undefined);
13
22
  export function hubInfo(c) {
14
23
  return {
15
24
  mode: "hub",
16
- capabilities: ["federation", "environments", "registry", "metrics", "serverMetrics", "serverStats", "search", "changes"],
25
+ capabilities: ["federation", "environments", "registry", "metrics", "serverMetrics", "serverStats", "search", "changes", "issues", "alerts", "slos", "infra", "sourcemaps", "saved", "tags", "settings", ...(c.o.uptime ? ["uptime"] : [])],
17
26
  service: c.o.name,
18
27
  version: c.version,
19
28
  runtime: `node ${process.version} · lens-node ${NODE_VERSION}`,
@@ -21,7 +30,7 @@ export function hubInfo(c) {
21
30
  host: hostname(),
22
31
  startedMs: c.startedMs,
23
32
  storage: { kind: "sqlite", maxTraces: c.o.maxTraces, maxAgeMs: c.o.maxAgeMs },
24
- analysis: { slowQueryMs: DEFAULT_SLOW_QUERY_MS, nPlusOneThreshold: DEFAULT_N_PLUS_ONE },
33
+ analysis: { slowQueryMs: c.o.slowQueryMs, nPlusOneThreshold: c.o.nPlusOneThreshold },
25
34
  redactKeys: [...c.o.redactKeys],
26
35
  };
27
36
  }
@@ -48,6 +57,7 @@ async function ingest(c, req, res) {
48
57
  const w = parseIngest(parseJson(await readBody(req)), c.o.redactKeys);
49
58
  if (!w)
50
59
  return sendJson(res, 400, { error: "sender.service is required" });
60
+ await annotateErrorFrames(w.spans, c.maps(w.sender.project ?? ""));
51
61
  c.data.write(w);
52
62
  res.writeHead(204).end();
53
63
  }
@@ -76,6 +86,12 @@ export async function handleApi(c, sub, req, res, url) {
76
86
  return sendJson(res, 200, services(c));
77
87
  if (sub === "api/ingest" && method === "POST")
78
88
  return ingest(c, req, res);
89
+ if (sub === SOURCEMAPS_PATH && method === "POST")
90
+ return uploadSourceMap(c.data.store.db, c.o.now(), req, res, url);
91
+ if (sub === SOURCEMAPS_PATH && method === "GET")
92
+ return listMaps(c.data.store.db, res, url);
93
+ if (sub === SOURCEMAPS_RESOLVE_PATH && method === "POST")
94
+ return resolveMaps(c.maps, c.data.store.db, req, res, url);
79
95
  if (sub === "api/traces" && method === "GET") {
80
96
  const { q, full } = queryOf(url.searchParams);
81
97
  return sendJson(res, 200, full ? c.data.traces(q) : c.data.summaries(q));
@@ -86,8 +102,26 @@ export async function handleApi(c, sub, req, res, url) {
86
102
  return streamChanges(c, req, res);
87
103
  if (sub === "api/search/suggest" && method === "GET")
88
104
  return sendSuggest(c, url.searchParams, res);
105
+ if (sub === "api/issues" && (method === "GET" || method === "POST"))
106
+ return handleIssues(c.data.store.db, method, url.searchParams.get("project") ?? "", req, res, c.o.now());
107
+ if (sub === "api/uptime" || sub.startsWith("api/uptime/"))
108
+ return handleUptime(c, sub, req, res, url);
109
+ if (sub === "api/saved" || sub.startsWith("api/saved/"))
110
+ return handleSaved(c.data.store.db, sub, req, res, url, c.o.now());
111
+ if (sub === "api/slos" || sub.startsWith("api/slos/"))
112
+ return handleSlos(c.data.store, sub, req, res, url, c.o.now());
113
+ if (sub === "api/settings")
114
+ return handleSettings(c.data.store, method, url.searchParams.get("project") ?? "", req, res);
115
+ if (sub === "api/apdex")
116
+ return handleApdex(c.data.store.db, method, url.searchParams.get("project") ?? "", req, res);
117
+ if (sub === "api/alerts" || sub.startsWith("api/alerts/"))
118
+ return handleAlerts(c.alerts, c.o.now(), sub, req, res, url);
119
+ if (await handleTags(c, sub, req, res, url))
120
+ return;
89
121
  if (sub === "api/models/metrics" && method === "GET")
90
122
  return sendJson(res, 200, metrics(c, url.searchParams));
123
+ if ((sub === "api/models/hosts" || sub === "api/models/kubernetes") && method === "GET")
124
+ return sendJson(res, 200, infraPage(c.data.store.db, sub === "api/models/hosts" ? "hosts" : "kubernetes", url.searchParams, c.o.now()));
91
125
  if (sub.startsWith("api/models/") && method === "GET")
92
126
  return sendPageModel(c, sub.slice("api/models/".length), url.searchParams, res);
93
127
  const m = /^api\/traces\/([0-9a-f]{32})$/.exec(sub);
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/body.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import type { IncomingMessage } from "node:http";
2
2
  /** Most bytes one request body may hold, after unzip. */
3
3
  export declare const MAX_BODY: number;
4
- /** Read the raw body, and unzip it when it is gzip. Throws when it is too large. */
5
- export declare function readBody(req: IncomingMessage): Promise<Buffer>;
4
+ /** Read the raw body, and unzip it when it is gzip. Throws when it is larger than `max`. */
5
+ export declare function readBody(req: IncomingMessage, max?: number): Promise<Buffer>;
6
6
  export declare const isProtobuf: (req: IncomingMessage) => boolean;
7
7
  /** Parse a JSON body. Undefined when it is empty. */
8
8
  export declare function parseJson(body: Buffer): unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../src/body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,yDAAyD;AACzD,eAAO,MAAM,QAAQ,QAAmB,CAAC;AAEzC,oFAAoF;AACpF,wBAAsB,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAYpE;AAED,eAAO,MAAM,UAAU,QAAS,eAAe,YAAmE,CAAC;AAEnH,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG/C"}
1
+ {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../src/body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,yDAAyD;AACzD,eAAO,MAAM,QAAQ,QAAmB,CAAC;AAEzC,4FAA4F;AAC5F,wBAAsB,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,SAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAYpF;AAED,eAAO,MAAM,UAAU,QAAS,eAAe,YAAmE,CAAC;AAEnH,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG/C"}
package/dist/body.js CHANGED
@@ -1,20 +1,20 @@
1
1
  import { gunzipSync } from "node:zlib";
2
2
  /** Most bytes one request body may hold, after unzip. */
3
3
  export const MAX_BODY = 16 * 1024 * 1024;
4
- /** Read the raw body, and unzip it when it is gzip. Throws when it is too large. */
5
- export async function readBody(req) {
4
+ /** Read the raw body, and unzip it when it is gzip. Throws when it is larger than `max`. */
5
+ export async function readBody(req, max = MAX_BODY) {
6
6
  const chunks = [];
7
7
  let size = 0;
8
8
  for await (const chunk of req) {
9
9
  const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
10
10
  size += buf.length;
11
- if (size > MAX_BODY)
11
+ if (size > max)
12
12
  throw new Error("body too large");
13
13
  chunks.push(buf);
14
14
  }
15
15
  const raw = Buffer.concat(chunks);
16
16
  const gzip = String(req.headers["content-encoding"] ?? "").toLowerCase() === "gzip";
17
- return gzip ? gunzipSync(raw, { maxOutputLength: MAX_BODY }) : raw;
17
+ return gzip ? gunzipSync(raw, { maxOutputLength: max }) : raw;
18
18
  }
19
19
  export const isProtobuf = (req) => String(req.headers["content-type"] ?? "").includes("protobuf");
20
20
  /** Parse a JSON body. Undefined when it is empty. */
package/dist/body.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"body.js","sourceRoot":"","sources":["../src/body.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,yDAAyD;AACzD,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzC,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAoB;IACjD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QAC1E,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC;QACnB,IAAI,IAAI,GAAG,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IACpF,OAAO,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAoB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAEnH,qDAAqD;AACrD,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"body.js","sourceRoot":"","sources":["../src/body.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,yDAAyD;AACzD,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzC,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAoB,EAAE,GAAG,GAAG,QAAQ;IACjE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QAC1E,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC;QACnB,IAAI,IAAI,GAAG,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IACpF,OAAO,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAoB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAEnH,qDAAqD;AACrD,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { HubOptions } from "./options.js";
2
- export declare const USAGE = "wizelens-hub: one place for the traces of every service.\n\nUsage: wizelens-hub [options]\n\n --port <n> Port. Default 5960. (WIZELENS_HUB_PORT)\n --host <addr> Address. Default 127.0.0.1. Use 0.0.0.0\n for the network, with --token. (WIZELENS_HUB_HOST)\n --data <file> Hub file, or \"memory\".\n Default ~/.wizelens/hub/hub.db. (WIZELENS_HUB_DATA)\n --token <text> Require this token on every call. (WIZELENS_HUB_TOKEN)\n --retention <time> Keep traces this long: 30m, 24h, 7d.\n Default 7d. (WIZELENS_HUB_RETENTION)\n --max-traces <n> Keep at most this many. Default 50000. (WIZELENS_HUB_MAX_TRACES)\n --max-metric-points <n>\n Keep at most this many metric points.\n Default 2000000. (WIZELENS_HUB_MAX_METRIC_POINTS)\n --mcp Turn on the read-only MCP endpoint. (WIZELENS_HUB_MCP=1)\n --import <file> Copy an add-on's .wizelens/traces.db into\n the hub at start. Can repeat.\n --help Show this help.\n";
2
+ export declare const USAGE = "wizelens-hub: one place for the traces of every service.\n\nUsage: wizelens-hub [options]\n\n --port <n> Port. Default 5960. (WIZELENS_HUB_PORT)\n --host <addr> Address. Default 127.0.0.1. Use 0.0.0.0\n for the network, with --token. (WIZELENS_HUB_HOST)\n --data <file> Hub file, or \"memory\".\n Default ~/.wizelens/hub/hub.db. (WIZELENS_HUB_DATA)\n --token <text> Require this token on every call. (WIZELENS_HUB_TOKEN)\n --retention <time> Keep traces this long: 30m, 24h, 7d.\n Default 7d. (WIZELENS_HUB_RETENTION)\n --log-retention <time>\n Keep log lines this long. Lines in a\n request go with their trace when that\n is sooner. Default: --retention. (WIZELENS_HUB_LOG_RETENTION)\n --max-traces <n> Keep at most this many. Default 50000. (WIZELENS_HUB_MAX_TRACES)\n --max-metric-points <n>\n Keep at most this many metric points.\n Default 2000000. (WIZELENS_HUB_MAX_METRIC_POINTS)\n --slow-query-ms <n> A database call this slow (ms) is slow.\n Default 100. Projects can set their own. (WIZELENS_HUB_SLOW_QUERY_MS)\n --n-plus-one <n> This many similar calls in a request is\n an N+1. Default 5. (WIZELENS_HUB_N_PLUS_ONE)\n --redact-keys <a,b> Hide values of keys that contain these,\n on top of the built-in list. (WIZELENS_HUB_REDACT_KEYS)\n --mcp Turn on the read-only MCP endpoint. (WIZELENS_HUB_MCP=1)\n --no-uptime Do not run uptime checks. (WIZELENS_HUB_UPTIME=0)\n --import <file> Copy an add-on's .wizelens/traces.db into\n the hub at start. Can repeat.\n --sourcemaps <dir> Read browser source maps from this build\n folder. Can repeat. Dev servers on this\n machine need no option. (WIZELENS_HUB_SOURCEMAPS=a,b)\n --help Show this help.\n";
3
3
  /** "30m", "24h", "7d", or plain ms. Undefined when it is not valid. */
4
4
  export declare function parseDuration(v: string | undefined): number | undefined;
5
5
  /** Options from the command line, then from the environment. */
@@ -1 +1 @@
1
- {"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,KAAK,4rCAoBjB,CAAC;AAIF,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIvE;AAID,gEAAgE;AAChE,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE5D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,GAAG,MAAM,CA4B3F"}
1
+ {"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,KAAK,grEAkCjB,CAAC;AAIF,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIvE;AAUD,gEAAgE;AAChE,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE5D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,GAAG,MAAM,CAwC3F"}
package/dist/cli-args.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { parseArgs } from "node:util";
2
- import { HUB_TOKEN_ENV } from "@wizeworks/lens-core";
2
+ import { DEFAULT_REDACT_KEYS, HUB_TOKEN_ENV } from "@wizeworks/lens-core";
3
3
  export const USAGE = `wizelens-hub: one place for the traces of every service.
4
4
 
5
5
  Usage: wizelens-hub [options]
@@ -12,13 +12,27 @@ Usage: wizelens-hub [options]
12
12
  --token <text> Require this token on every call. (WIZELENS_HUB_TOKEN)
13
13
  --retention <time> Keep traces this long: 30m, 24h, 7d.
14
14
  Default 7d. (WIZELENS_HUB_RETENTION)
15
+ --log-retention <time>
16
+ Keep log lines this long. Lines in a
17
+ request go with their trace when that
18
+ is sooner. Default: --retention. (WIZELENS_HUB_LOG_RETENTION)
15
19
  --max-traces <n> Keep at most this many. Default 50000. (WIZELENS_HUB_MAX_TRACES)
16
20
  --max-metric-points <n>
17
21
  Keep at most this many metric points.
18
22
  Default 2000000. (WIZELENS_HUB_MAX_METRIC_POINTS)
23
+ --slow-query-ms <n> A database call this slow (ms) is slow.
24
+ Default 100. Projects can set their own. (WIZELENS_HUB_SLOW_QUERY_MS)
25
+ --n-plus-one <n> This many similar calls in a request is
26
+ an N+1. Default 5. (WIZELENS_HUB_N_PLUS_ONE)
27
+ --redact-keys <a,b> Hide values of keys that contain these,
28
+ on top of the built-in list. (WIZELENS_HUB_REDACT_KEYS)
19
29
  --mcp Turn on the read-only MCP endpoint. (WIZELENS_HUB_MCP=1)
30
+ --no-uptime Do not run uptime checks. (WIZELENS_HUB_UPTIME=0)
20
31
  --import <file> Copy an add-on's .wizelens/traces.db into
21
32
  the hub at start. Can repeat.
33
+ --sourcemaps <dir> Read browser source maps from this build
34
+ folder. Can repeat. Dev servers on this
35
+ machine need no option. (WIZELENS_HUB_SOURCEMAPS=a,b)
22
36
  --help Show this help.
23
37
  `;
24
38
  const UNITS = { s: 1000, m: 60_000, h: 3_600_000, d: 86_400_000 };
@@ -30,6 +44,11 @@ export function parseDuration(v) {
30
44
  return Number(m[1]) * (m[2] ? UNITS[m[2].toLowerCase()] : 1);
31
45
  }
32
46
  const int = (v) => (v && /^\d+$/.test(v) ? Number(v) : undefined);
47
+ /** The built-in redacted keys plus a comma list; undefined when none are given. */
48
+ function keyList(v) {
49
+ const extra = (v ?? "").split(",").map((k) => k.trim().toLowerCase()).filter(Boolean);
50
+ return extra.length ? [...new Set([...DEFAULT_REDACT_KEYS, ...extra])] : undefined;
51
+ }
33
52
  export function optionsFromArgs(argv, env) {
34
53
  const { values: a } = parseArgs({
35
54
  args: argv,
@@ -39,10 +58,16 @@ export function optionsFromArgs(argv, env) {
39
58
  data: { type: "string" },
40
59
  token: { type: "string" },
41
60
  retention: { type: "string" },
61
+ "log-retention": { type: "string" },
42
62
  "max-traces": { type: "string" },
43
63
  "max-metric-points": { type: "string" },
64
+ "slow-query-ms": { type: "string" },
65
+ "n-plus-one": { type: "string" },
66
+ "redact-keys": { type: "string" },
44
67
  mcp: { type: "boolean" },
68
+ "no-uptime": { type: "boolean" },
45
69
  import: { type: "string", multiple: true },
70
+ sourcemaps: { type: "string", multiple: true },
46
71
  help: { type: "boolean", short: "h" },
47
72
  },
48
73
  });
@@ -54,10 +79,16 @@ export function optionsFromArgs(argv, env) {
54
79
  storagePath: a.data ?? env.WIZELENS_HUB_DATA,
55
80
  token: a.token ?? env[HUB_TOKEN_ENV],
56
81
  maxAgeMs: parseDuration(a.retention ?? env.WIZELENS_HUB_RETENTION),
82
+ logMaxAgeMs: parseDuration(a["log-retention"] ?? env.WIZELENS_HUB_LOG_RETENTION),
57
83
  maxTraces: int(a["max-traces"] ?? env.WIZELENS_HUB_MAX_TRACES),
58
84
  maxMetricPoints: int(a["max-metric-points"] ?? env.WIZELENS_HUB_MAX_METRIC_POINTS),
85
+ slowQueryMs: int(a["slow-query-ms"] ?? env.WIZELENS_HUB_SLOW_QUERY_MS),
86
+ nPlusOneThreshold: int(a["n-plus-one"] ?? env.WIZELENS_HUB_N_PLUS_ONE),
87
+ redactKeys: keyList(a["redact-keys"] ?? env.WIZELENS_HUB_REDACT_KEYS),
59
88
  enableMcp: a.mcp ?? env.WIZELENS_HUB_MCP === "1",
89
+ uptime: !(a["no-uptime"] ?? env.WIZELENS_HUB_UPTIME === "0"),
60
90
  imports: a.import ?? [],
91
+ sourceMaps: { dirs: a.sourcemaps ?? (env.WIZELENS_HUB_SOURCEMAPS ?? "").split(",").map((d) => d.trim()).filter(Boolean) },
61
92
  };
62
93
  }
63
94
  //# sourceMappingURL=cli-args.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;CAoBpB,CAAC;AAEF,MAAM,KAAK,GAA2B,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;AAE1F,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,CAAqB;IACjD,MAAM,CAAC,GAAG,gCAAgC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAKtF,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,GAAsB;IACpE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC;QAC9B,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC7B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAChC,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;SACtC;KACF,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IAC1B,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,iBAAiB,CAAC;QAC1C,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,iBAAiB;QACrC,WAAW,EAAE,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,iBAAiB;QAC5C,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,aAAa,CAAC;QACpC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,sBAAsB,CAAC;QAClE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,uBAAuB,CAAC;QAC9D,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,8BAA8B,CAAC;QAClF,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,KAAK,GAAG;QAChD,OAAO,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;KACxB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"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"}
package/dist/data.js CHANGED
@@ -24,7 +24,7 @@ export class HubData {
24
24
  return loadTraces(this.store.db, findTraceIds(this.store.db, q), this.keepRemote);
25
25
  }
26
26
  summaries(q) {
27
- return this.traces(q).map(toSummary);
27
+ return this.traces({ ...q, noLoose: true }).map(toSummary);
28
28
  }
29
29
  /** One trace, plus the parts held by add-ons that do not send here. */
30
30
  async getTrace(traceId, federate = true, hop = 0) {
package/dist/data.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAiC,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAClH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAC;AAG1G,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEvD,4FAA4F;AAC5F,MAAM,OAAO,OAAO;IACT,KAAK,CAAW;IACzB,wFAAwF;IAC/E,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,YAAY,KAAe;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAAE,IAAI,CAAC,CAAC,QAAQ;gBAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClH,CAAC;IAED,KAAK,CAAC,CAAW;QACf,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ;YAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,wEAAwE;IAC/D,UAAU,GAAG,CAAC,QAAgB,EAAW,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/F,MAAM,CAAC,CAAa;QAClB,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpF,CAAC;IAED,SAAS,CAAC,CAAa;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;QACtD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,IAAI,GAAG,GAAG,CAAC,GAAG,mBAAmB;YAAE,OAAO,KAAK,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACjG,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAc,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACvF,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,CAAC;CACF"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAiC,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAClH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAC;AAG1G,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEvD,4FAA4F;AAC5F,MAAM,OAAO,OAAO;IACT,KAAK,CAAW;IACzB,wFAAwF;IAC/E,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,YAAY,KAAe;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAAE,IAAI,CAAC,CAAC,QAAQ;gBAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClH,CAAC;IAED,KAAK,CAAC,CAAW;QACf,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ;YAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,wEAAwE;IAC/D,UAAU,GAAG,CAAC,QAAgB,EAAW,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/F,MAAM,CAAC,CAAa;QAClB,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpF,CAAC;IAED,SAAS,CAAC,CAAa;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;QACtD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,IAAI,GAAG,GAAG,CAAC,GAAG,mBAAmB;YAAE,OAAO,KAAK,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACjG,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAc,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACvF,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,CAAC;CACF"}
package/dist/hub.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hub.d.ts","sourceRoot":"","sources":["../src/hub.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAMjG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,cAAc,CAAC;AAMlE,eAAO,MAAM,WAAW,EAAE,MAAoE,CAAC;AAK/F,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,uDAAuD;IACvD,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAmCD,mHAAmH;AACnH,wBAAgB,SAAS,CAAC,OAAO,GAAE,UAAe,GAAG,GAAG,CAiCvD"}
1
+ {"version":3,"file":"hub.d.ts","sourceRoot":"","sources":["../src/hub.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAMjG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,cAAc,CAAC;AASlE,eAAO,MAAM,WAAW,EAAE,MAAoE,CAAC;AAM/F,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,uDAAuD;IACvD,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAmCD,mHAAmH;AACnH,wBAAgB,SAAS,CAAC,OAAO,GAAE,UAAe,GAAG,GAAG,CAyCvD"}
package/dist/hub.js CHANGED
@@ -8,13 +8,17 @@ import { HubData } from "./data.js";
8
8
  import { hubMcpSource } from "./mcp.js";
9
9
  import { resolveHubOptions } from "./options.js";
10
10
  import { handleOtlp, otlpSignalOf } from "./otlp/index.js";
11
+ import { hubAlertDeps, startAlertLoop } from "./alerts/loop.js";
11
12
  import { settleQuietly } from "./settle.js";
13
+ import { hubMaps } from "./sourcemaps-api.js";
12
14
  import { HubStore } from "./store.js";
15
+ import { runDueChecks } from "./uptime/schedule.js";
13
16
  const require = createRequire(import.meta.url);
14
17
  export const HUB_VERSION = require("../package.json").version;
15
18
  const BASE = "/_wizelens";
16
19
  const PRUNE_MS = 60_000;
17
20
  const SETTLE_MS = 2_000;
21
+ const UPTIME_MS = 15_000;
18
22
  async function routeBase(c, sub, req, res, url) {
19
23
  const method = req.method ?? "GET";
20
24
  if (sub.startsWith("api/"))
@@ -56,9 +60,11 @@ async function route(c, req, res) {
56
60
  /** Create the local hub: one place for the traces of every service, with the dashboard, the API, OTLP, and MCP. */
57
61
  export function createHub(options = {}) {
58
62
  const o = resolveHubOptions(options);
59
- const store = new HubStore({ path: o.storagePath === "memory" ? ":memory:" : o.storagePath, maxTraces: o.maxTraces, maxAgeMs: o.maxAgeMs, maxMetricPoints: o.maxMetricPoints, now: o.now });
63
+ const store = new HubStore({ path: o.storagePath === "memory" ? ":memory:" : o.storagePath, maxTraces: o.maxTraces, maxAgeMs: o.maxAgeMs, logMaxAgeMs: o.logMaxAgeMs, maxMetricPoints: o.maxMetricPoints, slowQueryMs: o.slowQueryMs, nPlusOneThreshold: o.nPlusOneThreshold, redactKeys: o.redactKeys, now: o.now });
60
64
  const data = new HubData(store);
61
- const c = { data, o, version: HUB_VERSION, startedMs: o.now(), uiDir: resolveUiDir(o.uiDir) };
65
+ const base = { url: `http://localhost:${o.port}` };
66
+ const alerts = hubAlertDeps(store, o, base);
67
+ const c = { data, alerts, o, version: HUB_VERSION, startedMs: o.now(), uiDir: resolveUiDir(o.uiDir), maps: hubMaps(store.db, o.sourceMaps) };
62
68
  const server = createServer((req, res) => {
63
69
  route(c, req, res).catch(() => !res.headersSent && sendJson(res, 500, { error: "internal error" }));
64
70
  });
@@ -67,6 +73,9 @@ export function createHub(options = {}) {
67
73
  timer.unref();
68
74
  const settler = setInterval(() => settleQuietly(store), SETTLE_MS);
69
75
  settler.unref();
76
+ const uptime = setInterval(() => o.uptime && void runDueChecks(data, { allowPrivate: true, now: o.now }).catch(() => undefined), UPTIME_MS);
77
+ uptime.unref();
78
+ const stopAlerts = startAlertLoop(alerts, o);
70
79
  return {
71
80
  server,
72
81
  data,
@@ -75,12 +84,15 @@ export function createHub(options = {}) {
75
84
  server.listen(o.port, o.host, () => {
76
85
  const { port } = server.address();
77
86
  const local = ["0.0.0.0", "::", "127.0.0.1", "::1"].includes(o.host);
78
- resolve(`http://${local ? "localhost" : o.host}:${port}`);
87
+ base.url = `http://${local ? "localhost" : o.host}:${port}`;
88
+ resolve(base.url);
79
89
  });
80
90
  }),
81
91
  close: () => new Promise((resolve) => {
82
92
  clearInterval(timer);
83
93
  clearInterval(settler);
94
+ clearInterval(uptime);
95
+ stopAlerts();
84
96
  server.closeAllConnections?.();
85
97
  server.close(() => (store.close(), resolve()));
86
98
  }),
package/dist/hub.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hub.js","sourceRoot":"","sources":["../src/hub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hub.js","sourceRoot":"","sources":["../src/hub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;AAEjG,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAmB,SAAS,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAmB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAY,OAAO,CAAC,iBAAiB,CAAyB,CAAC,OAAO,CAAC;AAC/F,MAAM,IAAI,GAAG,YAAY,CAAC;AAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC;AACxB,MAAM,SAAS,GAAG,KAAK,CAAC;AACxB,MAAM,SAAS,GAAG,MAAM,CAAC;AAczB,KAAK,UAAU,SAAS,CAAC,CAAM,EAAE,GAAW,EAAE,GAAoB,EAAE,GAAmB,EAAE,GAAQ;IAC/F,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;IACnC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpE,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC,CAAC;QAClG,MAAM,IAAI,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAChF,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC;QAAE,OAAO;IACjD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7D,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,CAAM,EAAE,GAAoB,EAAE,GAAmB;IACpE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,CAAC;IACb,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACnE,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/G,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC;IACvG,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACrE,IAAI,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACjH,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACjG,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,mHAAmH;AACnH,MAAM,UAAU,SAAS,CAAC,OAAO,GAAe,EAAE;IAChD,MAAM,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACtT,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;IAClJ,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACvC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACtG,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;IACzD,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;IACnE,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;IAC5I,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7C,OAAO;QACL,MAAM;QACN,IAAI;QACJ,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE;gBACjC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAC;gBACjD,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,CAAC,GAAG,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;gBAC5D,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACJ,KAAK,EAAE,GAAG,EAAE,CACV,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACtB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,aAAa,CAAC,MAAM,CAAC,CAAC;YACtB,UAAU,EAAE,CAAC;YACb,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC;KACL,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { DatabaseSync } from "node:sqlite";
2
+ import { type HostsModel, type KubeModel, type MetricData, type TimeRange } from "@wizeworks/lens-core";
3
+ import { type MetricScope } from "./metrics-read.js";
4
+ export type InfraPage = "hosts" | "kubernetes";
5
+ /** Parameters the infrastructure models read; the range and scope are taken out. */
6
+ export declare function infraParams(p: URLSearchParams): Record<string, string>;
7
+ /** Host and Kubernetes series for a scope and range, from the metric rollup tiers. */
8
+ export declare function infraData(db: DatabaseSync, range: TimeRange, scope: MetricScope, params: Record<string, string>, now: number): MetricData;
9
+ /** `api/models/hosts` and `api/models/kubernetes`. */
10
+ export declare function infraPage(db: DatabaseSync, page: InfraPage, p: URLSearchParams, now: number): HostsModel | KubeModel;
11
+ //# sourceMappingURL=infra-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infra-read.d.ts","sourceRoot":"","sources":["../src/infra-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAY,KAAK,UAAU,EAA0C,KAAK,SAAS,EAAe,KAAK,UAAU,EAAkC,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvM,OAAO,EAAE,KAAK,WAAW,EAAW,MAAM,mBAAmB,CAAC;AAG9D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;AAE/C,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOtE;AAED,sFAAsF;AACtF,wBAAgB,SAAS,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAGzI;AAOD,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAKpH"}
@@ -0,0 +1,30 @@
1
+ import { alignNow, hostsModelOf, INFRA_PARAMS, infraSteps, kubeModelOf, runMetricSync } from "@wizeworks/lens-core";
2
+ import { rangeOf } from "./metrics-read.js";
3
+ import { listServices } from "./store-read.js";
4
+ /** Parameters the infrastructure models read; the range and scope are taken out. */
5
+ export function infraParams(p) {
6
+ const out = {};
7
+ for (const k of INFRA_PARAMS) {
8
+ const v = p.get(k);
9
+ if (v)
10
+ out[k] = v.slice(0, 300);
11
+ }
12
+ return out;
13
+ }
14
+ /** Host and Kubernetes series for a scope and range, from the metric rollup tiers. */
15
+ export function infraData(db, range, scope, params, now) {
16
+ const steps = infraSteps("sqlite", { project: scope.project || undefined, env: scope.env || undefined }, range, alignNow(now), params);
17
+ return runMetricSync(steps, (q) => db.prepare(q.sql).all(...q.args));
18
+ }
19
+ /** The service registry of a scope. */
20
+ function registryOf(db, scope, now) {
21
+ return listServices(db, now).filter((s) => (!scope.project || (s.project ?? "") === scope.project) && (!scope.env || (s.environment ?? "") === scope.env));
22
+ }
23
+ /** `api/models/hosts` and `api/models/kubernetes`. */
24
+ export function infraPage(db, page, p, now) {
25
+ const scope = { project: p.get("project") || undefined, env: p.get("env") || undefined };
26
+ const data = infraData(db, rangeOf(p.get("range")), scope, infraParams(p), now);
27
+ const registry = registryOf(db, scope, now);
28
+ return page === "hosts" ? hostsModelOf(data, registry) : kubeModelOf(data, registry);
29
+ }
30
+ //# sourceMappingURL=infra-read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infra-read.js","sourceRoot":"","sources":["../src/infra-read.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAmB,YAAY,EAAE,YAAY,EAAE,UAAU,EAAkB,WAAW,EAAoC,aAAa,EAAkB,MAAM,sBAAsB,CAAC;AACvM,OAAO,EAAoB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,oFAAoF;AACpF,MAAM,UAAU,WAAW,CAAC,CAAkB;IAC5C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,SAAS,CAAC,EAAgB,EAAE,KAAgB,EAAE,KAAkB,EAAE,MAA8B,EAAE,GAAW;IAC3H,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACvI,OAAO,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAI,CAAC,CAAC,IAAwB,CAAe,CAAC,CAAC;AAC1G,CAAC;AAED,uCAAuC;AACvC,SAAS,UAAU,CAAC,EAAgB,EAAE,KAAkB,EAAE,GAAW;IACnE,OAAO,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7J,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,SAAS,CAAC,EAAgB,EAAE,IAAe,EAAE,CAAkB,EAAE,GAAW;IAC1F,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;IACzF,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EAEX,KAAK,SAAS,EAMf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAW3C,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAe1D;AAQD,4DAA4D;AAC5D,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAcpG;AAUD,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,GAAG,IAAI,CAmBxF"}
1
+ {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EAEX,KAAK,SAAS,EAOf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAoB3C,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAiB1D;AAQD,4DAA4D;AAC5D,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAcpG;AAUD,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,GAAG,IAAI,CAsBxF"}
package/dist/ingest.js CHANGED
@@ -1,4 +1,4 @@
1
- import { redactAttributes, sanitizeMetricPoint, toAttributeValue, } from "@wizeworks/lens-core";
1
+ import { redactAttributes, sanitizeMetricPoint, stampVersion, toAttributeValue, } from "@wizeworks/lens-core";
2
2
  import { sanitizeClientSpan } from "@wizeworks/lens-node/kit";
3
3
  const MAX_ITEMS = 5000;
4
4
  const HEX32 = /^[0-9a-f]{32}$/;
@@ -7,6 +7,15 @@ const LEVELS = ["trace", "debug", "info", "warn", "error", "critical"];
7
7
  const text = (v, max) => (typeof v === "string" && v ? v.slice(0, max) : undefined);
8
8
  const list = (v) => (Array.isArray(v) ? v.slice(0, MAX_ITEMS) : []);
9
9
  const isUrl = (v) => typeof v === "string" && v.length <= 500 && /^https?:\/\/[^\s]+$/i.test(v);
10
+ /** A sender's Kubernetes block: text fields only, undefined when empty. */
11
+ function k8sOf(raw) {
12
+ if (!raw || typeof raw !== "object")
13
+ return undefined;
14
+ const r = raw;
15
+ const all = { cluster: text(r.cluster, 100), namespace: text(r.namespace, 100), pod: text(r.pod, 100), node: text(r.node, 100) };
16
+ const k8s = Object.fromEntries(Object.entries(all).filter(([, v]) => v));
17
+ return Object.keys(k8s).length > 0 ? k8s : undefined;
18
+ }
10
19
  /** The sender block of a batch. Null without a service name. */
11
20
  export function parseSender(raw) {
12
21
  if (!raw || typeof raw !== "object")
@@ -19,9 +28,11 @@ export function parseSender(raw) {
19
28
  service,
20
29
  project: text(s.project, 100),
21
30
  version: text(s.version, 50),
31
+ release: text(s.release, 50),
22
32
  runtime: text(s.runtime, 100),
23
33
  environment: text(s.environment, 50),
24
34
  host: text(s.host, 100),
35
+ k8s: k8sOf(s.k8s),
25
36
  endpoint: isUrl(s.endpoint) ? s.endpoint.replace(/\/+$/, "") : undefined,
26
37
  startedMs: Number.isFinite(s.startedMs) ? Number(s.startedMs) : undefined,
27
38
  };
@@ -64,9 +75,9 @@ export function parseIngest(raw, redactKeys) {
64
75
  const sender = parseSender(body?.sender);
65
76
  if (!body || !sender)
66
77
  return null;
67
- const spans = list(body.spans)
78
+ const spans = stampVersion(list(body.spans)
68
79
  .map((s) => sanitizeClientSpan(s, redactKeys))
69
- .filter(notNull);
80
+ .filter(notNull), sender);
70
81
  return {
71
82
  sender,
72
83
  via: "addon",
@@ -1 +1 @@
1
- {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { DatabaseSync } from "node:sqlite";
2
+ import type { IncomingMessage, ServerResponse } from "node:http";
3
+ import { type IssueState, type IssueStates } from "@wizeworks/lens-core";
4
+ export declare const issuesVersion: () => number;
5
+ export declare function listIssues(db: DatabaseSync, project: string): IssueState[];
6
+ /** States as page models take them. */
7
+ export declare const issueStates: (db: DatabaseSync, project: string) => IssueStates;
8
+ /** `GET api/issues?project=`: the project's states. `POST api/issues?project=`: resolve, ignore, or reopen one (the hub has no members to assign to). */
9
+ export declare function handleIssues(db: DatabaseSync, method: string, project: string, req: IncomingMessage, res: ServerResponse, now: number): Promise<void>;
10
+ //# sourceMappingURL=issues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../src/issues.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAoC,KAAK,UAAU,EAAiB,KAAK,WAAW,EAAoB,MAAM,sBAAsB,CAAC;AAgB5I,eAAO,MAAM,aAAa,QAAO,MAAiB,CAAC;AAInD,wBAAgB,UAAU,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAE1E;AAED,uCAAuC;AACvC,eAAO,MAAM,WAAW,OAAQ,YAAY,WAAW,MAAM,KAAG,WAAqD,CAAC;AAUtH,yJAAyJ;AACzJ,wBAAsB,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU3J"}
package/dist/issues.js ADDED
@@ -0,0 +1,34 @@
1
+ import { applyIssueChange, issueStatesOf, parseIssueChange } from "@wizeworks/lens-core";
2
+ import { sendJson } from "@wizeworks/lens-node/kit";
3
+ import { parseJson, readBody } from "./body.js";
4
+ /** Bumps on every change, so cached page models that read states are not reused. */
5
+ let version = 0;
6
+ export const issuesVersion = () => version;
7
+ const stateOf = (r) => ({ kind: r.kind, key: r.key, status: r.status, untilMs: r.until_ms, resolvedMs: r.resolved_ms, assignee: r.assignee, updatedMs: r.updated_ms });
8
+ export function listIssues(db, project) {
9
+ return db.prepare("SELECT kind, key, status, until_ms, resolved_ms, assignee, updated_ms FROM issues WHERE project = ?").all(project).map(stateOf);
10
+ }
11
+ /** States as page models take them. */
12
+ export const issueStates = (db, project) => issueStatesOf(listIssues(db, project));
13
+ function save(db, project, kind, key, s) {
14
+ if (!s)
15
+ return void db.prepare("DELETE FROM issues WHERE project = ? AND kind = ? AND key = ?").run(project, kind, key);
16
+ db.prepare(`INSERT INTO issues (project, kind, key, status, until_ms, resolved_ms, assignee, updated_ms) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
17
+ ON CONFLICT (project, kind, key) DO UPDATE SET status = excluded.status, until_ms = excluded.until_ms, resolved_ms = excluded.resolved_ms, assignee = excluded.assignee, updated_ms = excluded.updated_ms`).run(project, kind, key, s.status, s.untilMs, s.resolvedMs, s.assignee, s.updatedMs);
18
+ }
19
+ /** `GET api/issues?project=`: the project's states. `POST api/issues?project=`: resolve, ignore, or reopen one (the hub has no members to assign to). */
20
+ export async function handleIssues(db, method, project, req, res, now) {
21
+ if (method === "GET")
22
+ return sendJson(res, 200, { issues: listIssues(db, project), members: [] });
23
+ const c = parseIssueChange(parseJson(await readBody(req)));
24
+ if (typeof c === "string")
25
+ return sendJson(res, 400, { error: c });
26
+ if (c.action === "assign")
27
+ return sendJson(res, 400, { error: "The hub has no members to assign to." });
28
+ const prev = listIssues(db, project).find((s) => s.kind === c.kind && s.key === c.key);
29
+ const next = applyIssueChange(prev, c, now);
30
+ save(db, project, c.kind, c.key, next);
31
+ version++;
32
+ sendJson(res, 200, { issue: next });
33
+ }
34
+ //# sourceMappingURL=issues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues.js","sourceRoot":"","sources":["../src/issues.ts"],"names":[],"mappings":"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"}