@wizeworks/lens-hub 0.3.0-alpha.2 → 0.3.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/alerts/api.d.ts +5 -0
- package/dist/alerts/api.d.ts.map +1 -0
- package/dist/alerts/api.js +87 -0
- package/dist/alerts/api.js.map +1 -0
- package/dist/alerts/deliver.d.ts +54 -0
- package/dist/alerts/deliver.d.ts.map +1 -0
- package/dist/alerts/deliver.js +66 -0
- package/dist/alerts/deliver.js.map +1 -0
- package/dist/alerts/evaluate.d.ts +16 -0
- package/dist/alerts/evaluate.d.ts.map +1 -0
- package/dist/alerts/evaluate.js +76 -0
- package/dist/alerts/evaluate.js.map +1 -0
- package/dist/alerts/loop.d.ts +10 -0
- package/dist/alerts/loop.d.ts.map +1 -0
- package/dist/alerts/loop.js +27 -0
- package/dist/alerts/loop.js.map +1 -0
- package/dist/alerts/store.d.ts +32 -0
- package/dist/alerts/store.d.ts.map +1 -0
- package/dist/alerts/store.js +38 -0
- package/dist/alerts/store.js.map +1 -0
- package/dist/alerts/target.d.ts +3 -0
- package/dist/alerts/target.d.ts.map +1 -0
- package/dist/alerts/target.js +23 -0
- package/dist/alerts/target.js.map +1 -0
- package/dist/api.d.ts +5 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +46 -4
- package/dist/api.js.map +1 -1
- package/dist/body.d.ts +2 -2
- package/dist/body.d.ts.map +1 -1
- package/dist/body.js +4 -4
- package/dist/body.js.map +1 -1
- package/dist/changes-api.d.ts +5 -0
- package/dist/changes-api.d.ts.map +1 -0
- package/dist/changes-api.js +21 -0
- package/dist/changes-api.js.map +1 -0
- package/dist/cli-args.d.ts +1 -1
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +32 -1
- package/dist/cli-args.js.map +1 -1
- package/dist/data.js +1 -1
- package/dist/data.js.map +1 -1
- package/dist/hub.d.ts.map +1 -1
- package/dist/hub.js +15 -3
- package/dist/hub.js.map +1 -1
- package/dist/infra-read.d.ts +11 -0
- package/dist/infra-read.d.ts.map +1 -0
- package/dist/infra-read.js +30 -0
- package/dist/infra-read.js.map +1 -0
- package/dist/ingest.d.ts.map +1 -1
- package/dist/ingest.js +14 -3
- package/dist/ingest.js.map +1 -1
- package/dist/issues.d.ts +10 -0
- package/dist/issues.d.ts.map +1 -0
- package/dist/issues.js +34 -0
- package/dist/issues.js.map +1 -0
- package/dist/kit.d.ts +6 -0
- package/dist/kit.d.ts.map +1 -1
- package/dist/kit.js +4 -0
- package/dist/kit.js.map +1 -1
- package/dist/list-search.d.ts +10 -0
- package/dist/list-search.d.ts.map +1 -0
- package/dist/list-search.js +13 -0
- package/dist/list-search.js.map +1 -0
- package/dist/mcp.d.ts +3 -2
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +59 -8
- package/dist/mcp.js.map +1 -1
- package/dist/metrics-read.js +1 -1
- package/dist/metrics-read.js.map +1 -1
- package/dist/models-api.d.ts +11 -1
- package/dist/models-api.d.ts.map +1 -1
- package/dist/models-api.js +41 -15
- package/dist/models-api.js.map +1 -1
- package/dist/options.d.ts +23 -2
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +10 -1
- package/dist/options.js.map +1 -1
- package/dist/otlp/db-params.d.ts +7 -0
- package/dist/otlp/db-params.d.ts.map +1 -0
- package/dist/otlp/db-params.js +74 -0
- package/dist/otlp/db-params.js.map +1 -0
- package/dist/otlp/logs.d.ts +1 -1
- package/dist/otlp/logs.d.ts.map +1 -1
- package/dist/otlp/logs.js +8 -7
- package/dist/otlp/logs.js.map +1 -1
- package/dist/otlp/metrics.d.ts +3 -3
- package/dist/otlp/metrics.d.ts.map +1 -1
- package/dist/otlp/metrics.js +7 -6
- package/dist/otlp/metrics.js.map +1 -1
- package/dist/otlp/nested.d.ts +4 -0
- package/dist/otlp/nested.d.ts.map +1 -0
- package/dist/otlp/nested.js +19 -0
- package/dist/otlp/nested.js.map +1 -0
- package/dist/otlp/semconv.d.ts +17 -0
- package/dist/otlp/semconv.d.ts.map +1 -0
- package/dist/otlp/semconv.js +68 -0
- package/dist/otlp/semconv.js.map +1 -0
- package/dist/otlp/spans.d.ts +3 -3
- package/dist/otlp/spans.d.ts.map +1 -1
- package/dist/otlp/spans.js +15 -7
- package/dist/otlp/spans.js.map +1 -1
- package/dist/otlp/values.d.ts +5 -10
- package/dist/otlp/values.d.ts.map +1 -1
- package/dist/otlp/values.js +32 -24
- package/dist/otlp/values.js.map +1 -1
- package/dist/saved.d.ts +7 -0
- package/dist/saved.d.ts.map +1 -0
- package/dist/saved.js +49 -0
- package/dist/saved.js.map +1 -0
- package/dist/scale-exec.d.ts +2 -2
- package/dist/scale-exec.d.ts.map +1 -1
- package/dist/scale-exec.js +4 -4
- package/dist/scale-exec.js.map +1 -1
- package/dist/schema-fts.d.ts +4 -0
- package/dist/schema-fts.d.ts.map +1 -0
- package/dist/schema-fts.js +20 -0
- package/dist/schema-fts.js.map +1 -0
- package/dist/schema-saved.d.ts +15 -0
- package/dist/schema-saved.d.ts.map +1 -0
- package/dist/schema-saved.js +43 -0
- package/dist/schema-saved.js.map +1 -0
- package/dist/schema-scale.d.ts.map +1 -1
- package/dist/schema-scale.js +27 -2
- package/dist/schema-scale.js.map +1 -1
- package/dist/schema.d.ts +2 -2
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +20 -1
- package/dist/schema.js.map +1 -1
- package/dist/search-api.d.ts +7 -0
- package/dist/search-api.d.ts.map +1 -0
- package/dist/search-api.js +25 -0
- package/dist/search-api.js.map +1 -0
- package/dist/settings-prune.d.ts +12 -0
- package/dist/settings-prune.d.ts.map +1 -0
- package/dist/settings-prune.js +15 -0
- package/dist/settings-prune.js.map +1 -0
- package/dist/settings.d.ts +27 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +64 -0
- package/dist/settings.js.map +1 -0
- package/dist/settle.d.ts +3 -3
- package/dist/settle.d.ts.map +1 -1
- package/dist/settle.js +12 -6
- package/dist/settle.js.map +1 -1
- package/dist/slos.d.ts +14 -0
- package/dist/slos.d.ts.map +1 -0
- package/dist/slos.js +73 -0
- package/dist/slos.js.map +1 -0
- package/dist/sourcemaps-api.d.ts +15 -0
- package/dist/sourcemaps-api.d.ts.map +1 -0
- package/dist/sourcemaps-api.js +55 -0
- package/dist/sourcemaps-api.js.map +1 -0
- package/dist/sourcemaps.d.ts +10 -0
- package/dist/sourcemaps.d.ts.map +1 -0
- package/dist/sourcemaps.js +41 -0
- package/dist/sourcemaps.js.map +1 -0
- package/dist/store-read.d.ts +2 -0
- package/dist/store-read.d.ts.map +1 -1
- package/dist/store-read.js +3 -1
- package/dist/store-read.js.map +1 -1
- package/dist/store.d.ts +13 -3
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +35 -10
- package/dist/store.js.map +1 -1
- package/dist/tags-api.d.ts +5 -0
- package/dist/tags-api.d.ts.map +1 -0
- package/dist/tags-api.js +94 -0
- package/dist/tags-api.js.map +1 -0
- package/dist/tags.d.ts +11 -0
- package/dist/tags.d.ts.map +1 -0
- package/dist/tags.js +31 -0
- package/dist/tags.js.map +1 -0
- package/dist/uptime/api.d.ts +5 -0
- package/dist/uptime/api.d.ts.map +1 -0
- package/dist/uptime/api.js +78 -0
- package/dist/uptime/api.js.map +1 -0
- package/dist/uptime/cert.d.ts +5 -0
- package/dist/uptime/cert.d.ts.map +1 -0
- package/dist/uptime/cert.js +26 -0
- package/dist/uptime/cert.js.map +1 -0
- package/dist/uptime/guard.d.ts +13 -0
- package/dist/uptime/guard.d.ts.map +1 -0
- package/dist/uptime/guard.js +38 -0
- package/dist/uptime/guard.js.map +1 -0
- package/dist/uptime/run.d.ts +11 -0
- package/dist/uptime/run.d.ts.map +1 -0
- package/dist/uptime/run.js +96 -0
- package/dist/uptime/run.js.map +1 -0
- package/dist/uptime/schedule.d.ts +15 -0
- package/dist/uptime/schedule.d.ts.map +1 -0
- package/dist/uptime/schedule.js +26 -0
- package/dist/uptime/schedule.js.map +1 -0
- package/dist/uptime/store.d.ts +25 -0
- package/dist/uptime/store.d.ts.map +1 -0
- package/dist/uptime/store.js +80 -0
- package/dist/uptime/store.js.map +1 -0
- package/package.json +5 -4
package/dist/api.js
CHANGED
|
@@ -1,17 +1,28 @@
|
|
|
1
1
|
import { hostname } from "node:os";
|
|
2
|
-
import { HEADER_HOP } from "@wizeworks/lens-core";
|
|
3
|
-
import {
|
|
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";
|
|
14
|
+
import { streamChanges } from "./changes-api.js";
|
|
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";
|
|
8
19
|
import { countRows, distinctOf, listServices } from "./store-read.js";
|
|
9
20
|
const clamp = (v, min, max) => Math.min(max, Math.max(min, v));
|
|
10
21
|
const num = (p, k) => (p.has(k) && Number.isFinite(Number(p.get(k))) ? Number(p.get(k)) : undefined);
|
|
11
22
|
export function hubInfo(c) {
|
|
12
23
|
return {
|
|
13
24
|
mode: "hub",
|
|
14
|
-
capabilities: ["federation", "environments", "registry", "metrics", "serverMetrics", "serverStats"],
|
|
25
|
+
capabilities: ["federation", "environments", "registry", "metrics", "serverMetrics", "serverStats", "search", "changes", "issues", "alerts", "slos", "infra", "sourcemaps", "saved", "tags", "settings", ...(c.o.uptime ? ["uptime"] : [])],
|
|
15
26
|
service: c.o.name,
|
|
16
27
|
version: c.version,
|
|
17
28
|
runtime: `node ${process.version} · lens-node ${NODE_VERSION}`,
|
|
@@ -19,7 +30,7 @@ export function hubInfo(c) {
|
|
|
19
30
|
host: hostname(),
|
|
20
31
|
startedMs: c.startedMs,
|
|
21
32
|
storage: { kind: "sqlite", maxTraces: c.o.maxTraces, maxAgeMs: c.o.maxAgeMs },
|
|
22
|
-
analysis: { slowQueryMs:
|
|
33
|
+
analysis: { slowQueryMs: c.o.slowQueryMs, nPlusOneThreshold: c.o.nPlusOneThreshold },
|
|
23
34
|
redactKeys: [...c.o.redactKeys],
|
|
24
35
|
};
|
|
25
36
|
}
|
|
@@ -46,6 +57,7 @@ async function ingest(c, req, res) {
|
|
|
46
57
|
const w = parseIngest(parseJson(await readBody(req)), c.o.redactKeys);
|
|
47
58
|
if (!w)
|
|
48
59
|
return sendJson(res, 400, { error: "sender.service is required" });
|
|
60
|
+
await annotateErrorFrames(w.spans, c.maps(w.sender.project ?? ""));
|
|
49
61
|
c.data.write(w);
|
|
50
62
|
res.writeHead(204).end();
|
|
51
63
|
}
|
|
@@ -74,12 +86,42 @@ export async function handleApi(c, sub, req, res, url) {
|
|
|
74
86
|
return sendJson(res, 200, services(c));
|
|
75
87
|
if (sub === "api/ingest" && method === "POST")
|
|
76
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);
|
|
77
95
|
if (sub === "api/traces" && method === "GET") {
|
|
78
96
|
const { q, full } = queryOf(url.searchParams);
|
|
79
97
|
return sendJson(res, 200, full ? c.data.traces(q) : c.data.summaries(q));
|
|
80
98
|
}
|
|
99
|
+
if (sub === "api/search" && method === "GET")
|
|
100
|
+
return sendSearch(c, url.searchParams, res);
|
|
101
|
+
if (sub === "api/changes" && method === "GET")
|
|
102
|
+
return streamChanges(c, req, res);
|
|
103
|
+
if (sub === "api/search/suggest" && method === "GET")
|
|
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;
|
|
81
121
|
if (sub === "api/models/metrics" && method === "GET")
|
|
82
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()));
|
|
83
125
|
if (sub.startsWith("api/models/") && method === "GET")
|
|
84
126
|
return sendPageModel(c, sub.slice("api/models/".length), url.searchParams, res);
|
|
85
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAoB,MAAM,sBAAsB,CAAC;
|
|
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
|
|
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;
|
package/dist/body.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
|
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 >
|
|
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:
|
|
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,
|
|
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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import type { ApiContext } from "./api.js";
|
|
3
|
+
/** Stream until the client goes away. The hub settles every project together, so one event covers all. */
|
|
4
|
+
export declare function streamChanges(c: ApiContext, req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=changes-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changes-api.d.ts","sourceRoot":"","sources":["../src/changes-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAM3C,0GAA0G;AAC1G,wBAAsB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAa3G"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// `api/changes` on the hub: the same server-sent events as the cloud, one `data` event each time settling builds new stats.
|
|
2
|
+
const CHECK_MS = 1_000;
|
|
3
|
+
const HEARTBEAT_MS = 25_000;
|
|
4
|
+
/** Stream until the client goes away. The hub settles every project together, so one event covers all. */
|
|
5
|
+
export async function streamChanges(c, req, res) {
|
|
6
|
+
res.writeHead(200, { "Content-Type": "text/event-stream", "Cache-Control": "no-cache, no-transform", Connection: "keep-alive" });
|
|
7
|
+
res.write("retry: 5000\n\n");
|
|
8
|
+
const store = c.data.store;
|
|
9
|
+
let seen = store.settleGen;
|
|
10
|
+
let quiet = 0;
|
|
11
|
+
const timer = setInterval(() => {
|
|
12
|
+
quiet += CHECK_MS;
|
|
13
|
+
if (store.settleGen !== seen)
|
|
14
|
+
(seen = store.settleGen), (quiet = 0), res.write(`event: data\ndata: ${seen}\n\n`);
|
|
15
|
+
else if (quiet >= HEARTBEAT_MS)
|
|
16
|
+
(quiet = 0), res.write(": beat\n\n");
|
|
17
|
+
}, CHECK_MS);
|
|
18
|
+
await new Promise((resolve) => req.once("close", resolve));
|
|
19
|
+
clearInterval(timer);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=changes-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changes-api.js","sourceRoot":"","sources":["../src/changes-api.ts"],"names":[],"mappings":"AAGA,4HAA4H;AAC5H,MAAM,QAAQ,GAAG,KAAK,CAAC;AACvB,MAAM,YAAY,GAAG,MAAM,CAAC;AAE5B,0GAA0G;AAC1G,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,CAAa,EAAE,GAAoB,EAAE,GAAmB;IAC1F,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,wBAAwB,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;IACjI,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,KAAK,IAAI,QAAQ,CAAC;QAClB,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI;YAAE,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,sBAAsB,IAAI,MAAM,CAAC,CAAC;aAC5G,IAAI,KAAK,IAAI,YAAY;YAAE,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACb,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,aAAa,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|
package/dist/cli-args.d.ts
CHANGED
|
@@ -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. */
|
package/dist/cli-args.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
package/dist/cli-args.js.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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;
|
|
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
|
|
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
|
-
|
|
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":"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,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
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"}
|
package/dist/ingest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EAEX,KAAK,SAAS,
|
|
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",
|
package/dist/ingest.js.map
CHANGED
|
@@ -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":"AAAA,OAAO,EAOL,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC;AAC/B,MAAM,KAAK,GAAG,gBAAgB,CAAC;AAC/B,MAAM,MAAM,GAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAE5F,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,GAAW,EAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACzH,MAAM,IAAI,GAAG,CAAC,CAAU,EAAa,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxF,MAAM,KAAK,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEtH,2EAA2E;AAC3E,SAAS,KAAK,CAAC,GAAY;IACzB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;IACjI,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO;QACL,OAAO;QACP,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;QAC7B,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;QAC7B,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACpC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC;QACvB,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QACxE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;KAC1E,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,GAAY,EAAE,UAA6B;IAC/D,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC3G,OAAO,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,QAAQ,CAAC,GAAY,EAAE,OAAe,EAAE,UAA6B;IACnF,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAA2D,CAAC;IACrF,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACxG,MAAM,MAAM,GAAc;QACxB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/B,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAiB,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,KAAkB,CAAC,CAAC,CAAC,MAAM;QAChF,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,KAAK;QAC1C,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QAC5E,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,OAAO;QAC1C,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QACpF,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;KACrD,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,MAAM,CAAC,GAAG,GAAuD,CAAC;IAClE,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACrG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,OAAO,GAAG,CAAI,CAAW,EAAU,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;AAEvD,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAC,GAAY,EAAE,UAA6B;IACrE,MAAM,IAAI,GAAG,GAAqC,CAAC;IACnD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,KAAK,GAAG,YAAY,CACxB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;SACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;SAC7C,MAAM,CAAC,OAAO,CAAC,EAClB,MAAM,CACP,CAAC;IACF,OAAO;QACL,MAAM;QACN,GAAG,EAAE,OAAO;QACZ,KAAK;QACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;aAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;aACnD,MAAM,CAAC,OAAO,CAAC;QAClB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5D,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;aAC9D,MAAM,CAAC,OAAO,CAAC;KACnB,CAAC;AACJ,CAAC"}
|
package/dist/issues.d.ts
ADDED
|
@@ -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"}
|