@wizeworks/lens-node 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.
- package/dist/adapters/elasticsearch.d.ts +21 -0
- package/dist/adapters/elasticsearch.d.ts.map +1 -0
- package/dist/adapters/elasticsearch.js +93 -0
- package/dist/adapters/elasticsearch.js.map +1 -0
- package/dist/adapters/ioredis.d.ts +4 -0
- package/dist/adapters/ioredis.d.ts.map +1 -0
- package/dist/adapters/ioredis.js +60 -0
- package/dist/adapters/ioredis.js.map +1 -0
- package/dist/adapters/mongodb-shape.d.ts +16 -0
- package/dist/adapters/mongodb-shape.d.ts.map +1 -0
- package/dist/adapters/mongodb-shape.js +81 -0
- package/dist/adapters/mongodb-shape.js.map +1 -0
- package/dist/adapters/mongodb.d.ts +4 -0
- package/dist/adapters/mongodb.d.ts.map +1 -0
- package/dist/adapters/mongodb.js +95 -0
- package/dist/adapters/mongodb.js.map +1 -0
- package/dist/adapters/nosql.d.ts +14 -0
- package/dist/adapters/nosql.d.ts.map +1 -0
- package/dist/adapters/nosql.js +61 -0
- package/dist/adapters/nosql.js.map +1 -0
- package/dist/adapters/redis-shape.d.ts +31 -0
- package/dist/adapters/redis-shape.d.ts.map +1 -0
- package/dist/adapters/redis-shape.js +80 -0
- package/dist/adapters/redis-shape.js.map +1 -0
- package/dist/adapters/redis.d.ts +4 -0
- package/dist/adapters/redis.d.ts.map +1 -0
- package/dist/adapters/redis.js +93 -0
- package/dist/adapters/redis.js.map +1 -0
- package/dist/adapters/registry.d.ts +2 -0
- package/dist/adapters/registry.d.ts.map +1 -1
- package/dist/adapters/registry.js +2 -0
- package/dist/adapters/registry.js.map +1 -1
- package/dist/api.d.ts +5 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +19 -7
- package/dist/api.js.map +1 -1
- package/dist/auto/config.d.ts +14 -0
- package/dist/auto/config.d.ts.map +1 -0
- package/dist/auto/config.js +51 -0
- package/dist/auto/config.js.map +1 -0
- package/dist/auto/esm-loader.d.ts +10 -0
- package/dist/auto/esm-loader.d.ts.map +1 -0
- package/dist/auto/esm-loader.js +10 -0
- package/dist/auto/esm-loader.js.map +1 -0
- package/dist/auto/esm-source.d.ts +15 -0
- package/dist/auto/esm-source.d.ts.map +1 -0
- package/dist/auto/esm-source.js +23 -0
- package/dist/auto/esm-source.js.map +1 -0
- package/dist/auto/frameworks.d.ts +3 -0
- package/dist/auto/frameworks.d.ts.map +1 -0
- package/dist/auto/frameworks.js +112 -0
- package/dist/auto/frameworks.js.map +1 -0
- package/dist/auto/handle.d.ts +7 -0
- package/dist/auto/handle.d.ts.map +1 -0
- package/dist/auto/handle.js +47 -0
- package/dist/auto/handle.js.map +1 -0
- package/dist/auto/hono.d.ts +3 -0
- package/dist/auto/hono.d.ts.map +1 -0
- package/dist/auto/hono.js +43 -0
- package/dist/auto/hono.js.map +1 -0
- package/dist/auto/http.d.ts +18 -0
- package/dist/auto/http.d.ts.map +1 -0
- package/dist/auto/http.js +77 -0
- package/dist/auto/http.js.map +1 -0
- package/dist/auto/install.d.ts +5 -0
- package/dist/auto/install.d.ts.map +1 -0
- package/dist/auto/install.js +26 -0
- package/dist/auto/install.js.map +1 -0
- package/dist/auto/libraries.d.ts +3 -0
- package/dist/auto/libraries.d.ts.map +1 -0
- package/dist/auto/libraries.js +118 -0
- package/dist/auto/libraries.js.map +1 -0
- package/dist/auto/module-hooks.d.ts +14 -0
- package/dist/auto/module-hooks.d.ts.map +1 -0
- package/dist/auto/module-hooks.js +90 -0
- package/dist/auto/module-hooks.js.map +1 -0
- package/dist/auto/nest.d.ts +7 -0
- package/dist/auto/nest.d.ts.map +1 -0
- package/dist/auto/nest.js +26 -0
- package/dist/auto/nest.js.map +1 -0
- package/dist/auto/owner.d.ts +19 -0
- package/dist/auto/owner.d.ts.map +1 -0
- package/dist/auto/owner.js +52 -0
- package/dist/auto/owner.js.map +1 -0
- package/dist/auto/prisma.d.ts +3 -0
- package/dist/auto/prisma.d.ts.map +1 -0
- package/dist/auto/prisma.js +55 -0
- package/dist/auto/prisma.js.map +1 -0
- package/dist/auto/sqlite.d.ts +3 -0
- package/dist/auto/sqlite.d.ts.map +1 -0
- package/dist/auto/sqlite.js +31 -0
- package/dist/auto/sqlite.js.map +1 -0
- package/dist/auto/state.d.ts +14 -0
- package/dist/auto/state.d.ts.map +1 -0
- package/dist/auto/state.js +16 -0
- package/dist/auto/state.js.map +1 -0
- package/dist/auto.d.ts +2 -0
- package/dist/auto.d.ts.map +1 -0
- package/dist/auto.js +4 -0
- package/dist/auto.js.map +1 -0
- package/dist/capture.d.ts +3 -1
- package/dist/capture.d.ts.map +1 -1
- package/dist/capture.js +1 -1
- package/dist/capture.js.map +1 -1
- package/dist/client-attributes.d.ts +19 -0
- package/dist/client-attributes.d.ts.map +1 -0
- package/dist/client-attributes.js +56 -0
- package/dist/client-attributes.js.map +1 -0
- package/dist/db.js +1 -1
- package/dist/db.js.map +1 -1
- package/dist/frameworks/hono.d.ts +16 -0
- package/dist/frameworks/hono.d.ts.map +1 -1
- package/dist/frameworks/hono.js +1 -1
- package/dist/frameworks/hono.js.map +1 -1
- package/dist/frameworks/koa.d.ts +2 -0
- package/dist/frameworks/koa.d.ts.map +1 -1
- package/dist/frameworks/koa.js +1 -1
- package/dist/frameworks/koa.js.map +1 -1
- package/dist/frameworks/nest-errors.d.ts +10 -0
- package/dist/frameworks/nest-errors.d.ts.map +1 -0
- package/dist/frameworks/nest-errors.js +75 -0
- package/dist/frameworks/nest-errors.js.map +1 -0
- package/dist/frameworks/nest-route.d.ts +31 -0
- package/dist/frameworks/nest-route.d.ts.map +1 -0
- package/dist/frameworks/nest-route.js +58 -0
- package/dist/frameworks/nest-route.js.map +1 -0
- package/dist/frameworks/nest.d.ts +16 -0
- package/dist/frameworks/nest.d.ts.map +1 -0
- package/dist/frameworks/nest.js +74 -0
- package/dist/frameworks/nest.js.map +1 -0
- package/dist/frameworks/node-server.d.ts +3 -0
- package/dist/frameworks/node-server.d.ts.map +1 -1
- package/dist/frameworks/node-server.js +1 -1
- package/dist/frameworks/node-server.js.map +1 -1
- package/dist/graphql/channels.d.ts +5 -0
- package/dist/graphql/channels.d.ts.map +1 -0
- package/dist/graphql/channels.js +56 -0
- package/dist/graphql/channels.js.map +1 -0
- package/dist/graphql/document.d.ts +13 -0
- package/dist/graphql/document.d.ts.map +1 -0
- package/dist/graphql/document.js +62 -0
- package/dist/graphql/document.js.map +1 -0
- package/dist/graphql/index.d.ts +13 -0
- package/dist/graphql/index.d.ts.map +1 -0
- package/dist/graphql/index.js +92 -0
- package/dist/graphql/index.js.map +1 -0
- package/dist/graphql/operation.d.ts +37 -0
- package/dist/graphql/operation.d.ts.map +1 -0
- package/dist/graphql/operation.js +58 -0
- package/dist/graphql/operation.js.map +1 -0
- package/dist/graphql/resolvers.d.ts +5 -0
- package/dist/graphql/resolvers.d.ts.map +1 -0
- package/dist/graphql/resolvers.js +79 -0
- package/dist/graphql/resolvers.js.map +1 -0
- package/dist/graphql/shared.d.ts +14 -0
- package/dist/graphql/shared.d.ts.map +1 -0
- package/dist/graphql/shared.js +21 -0
- package/dist/graphql/shared.js.map +1 -0
- package/dist/http-client.d.ts +8 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +132 -0
- package/dist/http-client.js.map +1 -0
- package/dist/hub-connect.d.ts +2 -0
- package/dist/hub-connect.d.ts.map +1 -1
- package/dist/hub-connect.js +3 -1
- package/dist/hub-connect.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/info.d.ts +2 -0
- package/dist/info.d.ts.map +1 -1
- package/dist/info.js +1 -1
- package/dist/info.js.map +1 -1
- package/dist/kit.d.ts +3 -1
- package/dist/kit.d.ts.map +1 -1
- package/dist/kit.js +1 -0
- package/dist/kit.js.map +1 -1
- package/dist/logger.d.ts +4 -4
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +11 -7
- package/dist/logger.js.map +1 -1
- package/dist/logs/bunyan.d.ts +1 -1
- package/dist/logs/bunyan.d.ts.map +1 -1
- package/dist/logs/bunyan.js +2 -3
- package/dist/logs/bunyan.js.map +1 -1
- package/dist/logs/consola.d.ts +1 -1
- package/dist/logs/consola.d.ts.map +1 -1
- package/dist/logs/consola.js +1 -1
- package/dist/logs/consola.js.map +1 -1
- package/dist/logs/console.d.ts +1 -1
- package/dist/logs/console.d.ts.map +1 -1
- package/dist/logs/console.js +5 -3
- package/dist/logs/console.js.map +1 -1
- package/dist/logs/otel.d.ts.map +1 -1
- package/dist/logs/otel.js +1 -3
- package/dist/logs/otel.js.map +1 -1
- package/dist/logs/pino.d.ts +1 -1
- package/dist/logs/pino.d.ts.map +1 -1
- package/dist/logs/pino.js +2 -3
- package/dist/logs/pino.js.map +1 -1
- package/dist/logs/winston.d.ts +1 -1
- package/dist/logs/winston.d.ts.map +1 -1
- package/dist/logs/winston.js +2 -3
- package/dist/logs/winston.js.map +1 -1
- package/dist/loose-logs.d.ts +13 -0
- package/dist/loose-logs.d.ts.map +1 -0
- package/dist/loose-logs.js +21 -0
- package/dist/loose-logs.js.map +1 -0
- package/dist/mcp-find.d.ts.map +1 -1
- package/dist/mcp-find.js +40 -8
- package/dist/mcp-find.js.map +1 -1
- package/dist/mcp-memory.d.ts +7 -0
- package/dist/mcp-memory.d.ts.map +1 -0
- package/dist/mcp-memory.js +10 -0
- package/dist/mcp-memory.js.map +1 -0
- package/dist/mcp-overview.d.ts +5 -0
- package/dist/mcp-overview.d.ts.map +1 -0
- package/dist/mcp-overview.js +71 -0
- package/dist/mcp-overview.js.map +1 -0
- package/dist/mcp-page.d.ts +28 -0
- package/dist/mcp-page.d.ts.map +1 -0
- package/dist/mcp-page.js +77 -0
- package/dist/mcp-page.js.map +1 -0
- package/dist/mcp-problems.d.ts +5 -0
- package/dist/mcp-problems.d.ts.map +1 -0
- package/dist/mcp-problems.js +56 -0
- package/dist/mcp-problems.js.map +1 -0
- package/dist/mcp-projects.d.ts.map +1 -1
- package/dist/mcp-projects.js +7 -2
- package/dist/mcp-projects.js.map +1 -1
- package/dist/mcp-search.d.ts.map +1 -1
- package/dist/mcp-search.js +9 -5
- package/dist/mcp-search.js.map +1 -1
- package/dist/mcp-shared.d.ts +37 -1
- package/dist/mcp-shared.d.ts.map +1 -1
- package/dist/mcp-shared.js +3 -0
- package/dist/mcp-shared.js.map +1 -1
- package/dist/mcp-store.d.ts +2 -2
- package/dist/mcp-store.d.ts.map +1 -1
- package/dist/mcp-store.js +6 -5
- package/dist/mcp-store.js.map +1 -1
- package/dist/mcp-tags.d.ts +8 -0
- package/dist/mcp-tags.d.ts.map +1 -0
- package/dist/mcp-tags.js +22 -0
- package/dist/mcp-tags.js.map +1 -0
- package/dist/mcp-traffic.d.ts +5 -0
- package/dist/mcp-traffic.d.ts.map +1 -0
- package/dist/mcp-traffic.js +87 -0
- package/dist/mcp-traffic.js.map +1 -0
- package/dist/mcp.d.ts +4 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +14 -3
- package/dist/mcp.js.map +1 -1
- package/dist/messaging/bullmq.d.ts +4 -0
- package/dist/messaging/bullmq.d.ts.map +1 -0
- package/dist/messaging/bullmq.js +137 -0
- package/dist/messaging/bullmq.js.map +1 -0
- package/dist/messaging/shared.d.ts +10 -4
- package/dist/messaging/shared.d.ts.map +1 -1
- package/dist/messaging/shared.js +13 -4
- package/dist/messaging/shared.js.map +1 -1
- package/dist/messaging/sqs-message.d.ts +35 -0
- package/dist/messaging/sqs-message.d.ts.map +1 -0
- package/dist/messaging/sqs-message.js +66 -0
- package/dist/messaging/sqs-message.js.map +1 -0
- package/dist/messaging/sqs.d.ts +4 -0
- package/dist/messaging/sqs.d.ts.map +1 -0
- package/dist/messaging/sqs.js +104 -0
- package/dist/messaging/sqs.js.map +1 -0
- package/dist/processor.d.ts +2 -1
- package/dist/processor.d.ts.map +1 -1
- package/dist/processor.js +8 -3
- package/dist/processor.js.map +1 -1
- package/dist/real/real.d.ts +20 -0
- package/dist/real/real.d.ts.map +1 -0
- package/dist/real/real.js +42 -0
- package/dist/real/real.js.map +1 -0
- package/dist/request-capture.d.ts.map +1 -1
- package/dist/request-capture.js +2 -1
- package/dist/request-capture.js.map +1 -1
- package/dist/request-naming.d.ts +8 -0
- package/dist/request-naming.d.ts.map +1 -0
- package/dist/request-naming.js +29 -0
- package/dist/request-naming.js.map +1 -0
- package/dist/sampling.d.ts.map +1 -1
- package/dist/sampling.js +2 -2
- package/dist/sampling.js.map +1 -1
- package/dist/search-api.d.ts +4 -3
- package/dist/search-api.d.ts.map +1 -1
- package/dist/search-api.js +8 -7
- package/dist/search-api.js.map +1 -1
- package/dist/sourcemaps.d.ts +15 -0
- package/dist/sourcemaps.d.ts.map +1 -0
- package/dist/sourcemaps.js +68 -0
- package/dist/sourcemaps.js.map +1 -0
- package/dist/spans.d.ts +3 -0
- package/dist/spans.d.ts.map +1 -1
- package/dist/spans.js +9 -1
- package/dist/spans.js.map +1 -1
- package/dist/store-entries.d.ts +34 -0
- package/dist/store-entries.d.ts.map +1 -0
- package/dist/store-entries.js +70 -0
- package/dist/store-entries.js.map +1 -0
- package/dist/store.d.ts +4 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +19 -22
- package/dist/store.js.map +1 -1
- package/dist/tags-api.d.ts +9 -0
- package/dist/tags-api.d.ts.map +1 -0
- package/dist/tags-api.js +16 -0
- package/dist/tags-api.js.map +1 -0
- package/dist/test/helpers.d.ts +15 -0
- package/dist/test/helpers.d.ts.map +1 -0
- package/dist/test/helpers.js +56 -0
- package/dist/test/helpers.js.map +1 -0
- package/dist/tracing.d.ts +10 -1
- package/dist/tracing.d.ts.map +1 -1
- package/dist/tracing.js +17 -8
- package/dist/tracing.js.map +1 -1
- package/dist/types.d.ts +16 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +3 -2
- package/dist/ui.js.map +1 -1
- package/dist/wizelens.d.ts +3 -1
- package/dist/wizelens.d.ts.map +1 -1
- package/dist/wizelens.js +28 -12
- package/dist/wizelens.js.map +1 -1
- package/package.json +26 -4
package/dist/sampling.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sampling.js","sourceRoot":"","sources":["../src/sampling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgD,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sampling.js","sourceRoot":"","sources":["../src/sampling.ts"],"names":[],"mappings":"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"}
|
package/dist/search-api.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ServerResponse } from "node:http";
|
|
2
|
+
import { type TagRule } from "@wizeworks/lens-core";
|
|
2
3
|
import type { TraceStore } from "./store.js";
|
|
3
|
-
/** `GET api/search?q=&kind=&range=&limit=&cursor=`. A bad search answers 400 with the error's position. */
|
|
4
|
-
export declare function sendSearch(store: TraceStore, p: URLSearchParams, res: ServerResponse, env?: string): void;
|
|
4
|
+
/** `GET api/search?q=&kind=&range=&limit=&cursor=`. A bad search answers 400 with the error's position; `tag:` reads the `tags` option. */
|
|
5
|
+
export declare function sendSearch(store: TraceStore, tags: readonly TagRule[], p: URLSearchParams, res: ServerResponse, env?: string): void;
|
|
5
6
|
/** `GET api/search/suggest?field=&prefix=&range=&limit=`. */
|
|
6
|
-
export declare function sendSuggest(store: TraceStore, p: URLSearchParams, res: ServerResponse, env?: string): void;
|
|
7
|
+
export declare function sendSuggest(store: TraceStore, tags: readonly TagRule[], p: URLSearchParams, res: ServerResponse, env?: string): void;
|
|
7
8
|
//# sourceMappingURL=search-api.d.ts.map
|
package/dist/search-api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-api.d.ts","sourceRoot":"","sources":["../src/search-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"search-api.d.ts","sourceRoot":"","sources":["../src/search-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAwG,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE1J,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,2IAA2I;AAC3I,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAOnI;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAIpI"}
|
package/dist/search-api.js
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import { searchMemory, searchRequestOf, suggestMemory, suggestRequestOf } from "@wizeworks/lens-core";
|
|
1
|
+
import { activeTags, expandQuery, searchMemory, searchRequestOf, suggestMemory, suggestRequestOf, suggestTags } from "@wizeworks/lens-core";
|
|
2
2
|
import { sendJson } from "./http-util.js";
|
|
3
3
|
// The in-app search API (docs/SEARCH-PLAN.md), over this service's own traces in memory. `env` is the service's environment.
|
|
4
|
-
/** `GET api/search?q=&kind=&range=&limit=&cursor=`. A bad search answers 400 with the error's position. */
|
|
5
|
-
export function sendSearch(store, p, res, env) {
|
|
4
|
+
/** `GET api/search?q=&kind=&range=&limit=&cursor=`. A bad search answers 400 with the error's position; `tag:` reads the `tags` option. */
|
|
5
|
+
export function sendSearch(store, tags, p, res, env) {
|
|
6
6
|
const r = searchRequestOf(p, Date.now(), store.maxAgeMs);
|
|
7
7
|
if (!r.ok)
|
|
8
8
|
return sendJson(res, 400, r);
|
|
9
9
|
const t0 = performance.now();
|
|
10
|
-
const
|
|
11
|
-
|
|
10
|
+
const { query, unknownTags } = expandQuery({ ...r.query, env }, activeTags(tags));
|
|
11
|
+
const page = searchMemory(store.all(), query);
|
|
12
|
+
sendJson(res, 200, { ...page, tookMs: Math.round(performance.now() - t0), settling: null, unknownTags });
|
|
12
13
|
}
|
|
13
14
|
/** `GET api/search/suggest?field=&prefix=&range=&limit=`. */
|
|
14
|
-
export function sendSuggest(store, p, res, env) {
|
|
15
|
+
export function sendSuggest(store, tags, p, res, env) {
|
|
15
16
|
const r = suggestRequestOf(p, Date.now(), store.maxAgeMs);
|
|
16
17
|
if (!r.ok)
|
|
17
18
|
return sendJson(res, 400, r);
|
|
18
|
-
sendJson(res, 200, { items: suggestMemory(store.all(), { ...r.request, env }) });
|
|
19
|
+
sendJson(res, 200, { items: suggestTags(r.request, tags) ?? suggestMemory(store.all(), { ...r.request, env }) });
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=search-api.js.map
|
package/dist/search-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-api.js","sourceRoot":"","sources":["../src/search-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"search-api.js","sourceRoot":"","sources":["../src/search-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AAC1J,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,6HAA6H;AAE7H,2IAA2I;AAC3I,MAAM,UAAU,UAAU,CAAC,KAAiB,EAAE,IAAwB,EAAE,CAAkB,EAAE,GAAmB,EAAE,GAAY;IAC3H,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IAC9C,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AAC3G,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,WAAW,CAAC,KAAiB,EAAE,IAAwB,EAAE,CAAkB,EAAE,GAAmB,EAAE,GAAY;IAC5H,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACnH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type MapLoader } from "@wizeworks/lens-core";
|
|
2
|
+
/** Where an add-on or the hub reads source maps from, with no upload. */
|
|
3
|
+
export interface SourceMapOptions {
|
|
4
|
+
/** Build folders to read maps from, for example "./dist". */
|
|
5
|
+
dirs?: string[];
|
|
6
|
+
/** Fetch scripts and their maps from dev servers on this machine (localhost). Default true. */
|
|
7
|
+
fetch?: boolean;
|
|
8
|
+
/** More origins scripts may be fetched from, for example a dev domain: "https://app.local.test". */
|
|
9
|
+
origins?: string[];
|
|
10
|
+
}
|
|
11
|
+
/** Read maps from build folders: the script URL's path, or its tail, is looked up below each folder. */
|
|
12
|
+
export declare function dirMapLoader(dirs: readonly string[]): MapLoader;
|
|
13
|
+
/** Build folders first, then dev servers on this machine and the origins named. Null when `options` is false. `extra` goes first (uploads). */
|
|
14
|
+
export declare function localMapLoader(options: SourceMapOptions | false | undefined, extra?: MapLoader[]): MapLoader | null;
|
|
15
|
+
//# sourceMappingURL=sourcemaps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sourcemaps.d.ts","sourceRoot":"","sources":["../src/sourcemaps.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,SAAS,EAMf,MAAM,sBAAsB,CAAC;AAE9B,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,+FAA+F;IAC/F,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AA6BD,wGAAwG;AACxG,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAW/D;AAWD,+IAA+I;AAC/I,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,KAAK,GAAG,SAAS,EAAE,KAAK,GAAE,SAAS,EAAO,GAAG,SAAS,GAAG,IAAI,CAUvH"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { readFile, stat } from "node:fs/promises";
|
|
2
|
+
import { dirname, resolve, sep } from "node:path";
|
|
3
|
+
import { cachedLoader, chainLoaders, decodeDataUrl, fetchMapLoader, isLoopbackUrl, mapFileCandidates, mapUrlOf, MAX_SOURCEMAP_BYTES, parseSourceMap, } from "@wizeworks/lens-core";
|
|
4
|
+
const inside = (dir, path) => path === dir || path.startsWith(dir + sep);
|
|
5
|
+
async function readSmall(path) {
|
|
6
|
+
try {
|
|
7
|
+
const s = await stat(path);
|
|
8
|
+
return s.isFile() && s.size <= MAX_SOURCEMAP_BYTES ? await readFile(path, "utf8") : null;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
// One file of a build folder: the map its sourceMappingURL names (Turbopack names maps apart from scripts), else its `.map`.
|
|
15
|
+
async function mapInDir(dir, file) {
|
|
16
|
+
const path = resolve(dir, file);
|
|
17
|
+
if (!inside(dir, path))
|
|
18
|
+
return null;
|
|
19
|
+
const code = await readSmall(path);
|
|
20
|
+
const ref = code ? mapUrlOf(code) : null;
|
|
21
|
+
if (!ref) {
|
|
22
|
+
const next = await readSmall(`${path}.map`);
|
|
23
|
+
return next ? parseSourceMap(next) : null;
|
|
24
|
+
}
|
|
25
|
+
if (ref.startsWith("data:"))
|
|
26
|
+
return parseSourceMap(decodeDataUrl(ref) ?? "");
|
|
27
|
+
const mapPath = resolve(dirname(path), decodeURIComponent(ref.replace(/[?#].*$/, "")));
|
|
28
|
+
const text = inside(dir, mapPath) ? await readSmall(mapPath) : null;
|
|
29
|
+
return text ? parseSourceMap(text) : null;
|
|
30
|
+
}
|
|
31
|
+
/** Read maps from build folders: the script URL's path, or its tail, is looked up below each folder. */
|
|
32
|
+
export function dirMapLoader(dirs) {
|
|
33
|
+
const roots = dirs.map((d) => resolve(d));
|
|
34
|
+
return async (url) => {
|
|
35
|
+
for (const dir of roots) {
|
|
36
|
+
for (const file of mapFileCandidates(url)) {
|
|
37
|
+
const map = await mapInDir(dir, file);
|
|
38
|
+
if (map)
|
|
39
|
+
return map;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const originOf = (url) => {
|
|
46
|
+
try {
|
|
47
|
+
const u = new URL(url);
|
|
48
|
+
return /^https?:$/.test(u.protocol) ? u.origin : null;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
/** Build folders first, then dev servers on this machine and the origins named. Null when `options` is false. `extra` goes first (uploads). */
|
|
55
|
+
export function localMapLoader(options, extra = []) {
|
|
56
|
+
if (options === false)
|
|
57
|
+
return null;
|
|
58
|
+
const loaders = [...extra];
|
|
59
|
+
if (options?.dirs?.length)
|
|
60
|
+
loaders.push(cachedLoader(dirMapLoader(options.dirs), { hitMs: 10_000, missMs: 10_000 }));
|
|
61
|
+
if (options?.fetch !== false) {
|
|
62
|
+
const origins = new Set((options?.origins ?? []).map(originOf).filter((o) => !!o));
|
|
63
|
+
const allow = (u) => isLoopbackUrl(u) || origins.has(u.origin);
|
|
64
|
+
loaders.push(cachedLoader(fetchMapLoader({ allow }), { hitMs: 10_000, missMs: 10_000 }));
|
|
65
|
+
}
|
|
66
|
+
return chainLoaders(...loaders);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=sourcemaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sourcemaps.js","sourceRoot":"","sources":["../src/sourcemaps.ts"],"names":[],"mappings":"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"}
|
package/dist/spans.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { type Span as OtelSpan } from "@opentelemetry/api";
|
|
2
2
|
/** Context key that holds the server span of the current request. */
|
|
3
3
|
export declare const SERVER_SPAN: symbol;
|
|
4
|
+
/** An HTTP error with a 4xx `statusCode` or `status` (not found, bad request): the caller's, so not a failure. */
|
|
5
|
+
export declare function isClientError(err: unknown): boolean;
|
|
6
|
+
/** Records the exception; the span fails unless the error is a 4xx (OpenTelemetry's rule for server spans). */
|
|
4
7
|
export declare function recordOn(span: OtelSpan, err: unknown): void;
|
|
5
8
|
/** The server span of the request that is running now, if any. */
|
|
6
9
|
export declare function currentServerSpan(): OtelSpan | undefined;
|
package/dist/spans.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../src/spans.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,IAAI,IAAI,QAAQ,EAAyB,MAAM,oBAAoB,CAAC;AAE7G,qEAAqE;AACrE,eAAO,MAAM,WAAW,QAAqD,CAAC;AAE9E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAI3D;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,IAAI,QAAQ,GAAG,SAAS,CAExD;AAED,yCAAyC;AACzC,wBAAgB,UAAU,IAAI,QAAQ,GAAG,SAAS,CAEjD"}
|
|
1
|
+
{"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../src/spans.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,IAAI,IAAI,QAAQ,EAAyB,MAAM,oBAAoB,CAAC;AAE7G,qEAAqE;AACrE,eAAO,MAAM,WAAW,QAAqD,CAAC;AAE9E,kHAAkH;AAClH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAInD;AAED,+GAA+G;AAC/G,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAI3D;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,IAAI,QAAQ,GAAG,SAAS,CAExD;AAED,yCAAyC;AACzC,wBAAgB,UAAU,IAAI,QAAQ,GAAG,SAAS,CAEjD"}
|
package/dist/spans.js
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { context, createContextKey, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
2
2
|
/** Context key that holds the server span of the current request. */
|
|
3
3
|
export const SERVER_SPAN = createContextKey("wizeworks.wizelens.server-span");
|
|
4
|
+
/** An HTTP error with a 4xx `statusCode` or `status` (not found, bad request): the caller's, so not a failure. */
|
|
5
|
+
export function isClientError(err) {
|
|
6
|
+
const e = err;
|
|
7
|
+
const code = Number(e?.statusCode ?? e?.status);
|
|
8
|
+
return code >= 400 && code < 500;
|
|
9
|
+
}
|
|
10
|
+
/** Records the exception; the span fails unless the error is a 4xx (OpenTelemetry's rule for server spans). */
|
|
4
11
|
export function recordOn(span, err) {
|
|
5
12
|
const error = err instanceof Error ? err : new Error(String(err));
|
|
6
13
|
span.recordException(error);
|
|
7
|
-
|
|
14
|
+
if (!isClientError(err))
|
|
15
|
+
span.setStatus({ code: SpanStatusCode.ERROR, message: error.message });
|
|
8
16
|
}
|
|
9
17
|
/** The server span of the request that is running now, if any. */
|
|
10
18
|
export function currentServerSpan() {
|
package/dist/spans.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spans.js","sourceRoot":"","sources":["../src/spans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAyB,cAAc,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE7G,qEAAqE;AACrE,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC,gCAAgC,CAAC,CAAC;AAE9E,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,GAAY;IACnD,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"spans.js","sourceRoot":"","sources":["../src/spans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAyB,cAAc,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE7G,qEAAqE;AACrE,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC,gCAAgC,CAAC,CAAC;AAE9E,kHAAkH;AAClH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,MAAM,CAAC,GAAG,GAAwD,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC;AACnC,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,GAAY;IACnD,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAClG,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAyB,CAAC;AACxE,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,UAAU;IACxB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type LogRecord, type Span } from "@wizeworks/lens-core";
|
|
2
|
+
export interface Entry {
|
|
3
|
+
traceId: string;
|
|
4
|
+
spans: Map<string, Span>;
|
|
5
|
+
logs: LogRecord[];
|
|
6
|
+
remotes: Set<string>;
|
|
7
|
+
sessions: Set<string>;
|
|
8
|
+
/** Earliest span start or log time. Used for age eviction. */
|
|
9
|
+
startMs: number;
|
|
10
|
+
}
|
|
11
|
+
/** Traces and loose batches (lines outside a request), each with its own cap, so neither pushes the other out. Oldest first. */
|
|
12
|
+
export declare class EntryMap {
|
|
13
|
+
#private;
|
|
14
|
+
private readonly maxTraces;
|
|
15
|
+
private readonly maxLoose;
|
|
16
|
+
constructor(maxTraces: number, maxLoose: number);
|
|
17
|
+
/** Request traces only, as the dashboard counts them. */
|
|
18
|
+
get size(): number;
|
|
19
|
+
get(traceId: string): Entry | undefined;
|
|
20
|
+
/** The entry, made when missing; the oldest of its kind goes when its kind is over its cap. */
|
|
21
|
+
touch(traceId: string, startMs: number): Entry;
|
|
22
|
+
delete(traceId: string): void;
|
|
23
|
+
/** Every entry: traces, then loose batches. */
|
|
24
|
+
values(): IterableIterator<Entry>;
|
|
25
|
+
clear(): void;
|
|
26
|
+
}
|
|
27
|
+
/** Picks the loose trace id for the next line outside a request: a new batch per 5-minute window, or when the batch is full. */
|
|
28
|
+
export declare class LooseBatcher {
|
|
29
|
+
#private;
|
|
30
|
+
private readonly maxLines;
|
|
31
|
+
constructor(maxLines: number);
|
|
32
|
+
idFor(timeMs: number): string;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=store-entries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-entries.d.ts","sourceRoot":"","sources":["../src/store-entries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAoC,KAAK,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEnH,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,gIAAgI;AAChI,qBAAa,QAAQ;;IAKjB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAF3B,YACmB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAC/B;IAEJ,yDAAyD;IACzD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAMD,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEtC;IAED,+FAA+F;IAC/F,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAS7C;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE5B;IAED,+CAA+C;IAC9C,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAGjC;IAED,KAAK,IAAI,IAAI,CAGZ;CACF;AAED,gIAAgI;AAChI,qBAAa,YAAY;;IAKX,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,MAAM,EAAI;IAEjD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAS5B;CACF"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { isLooseTraceId, newLooseTraceId, LOOSE_WINDOW_MS } from "@wizeworks/lens-core";
|
|
2
|
+
const newEntry = (traceId, startMs) => ({ traceId, spans: new Map(), logs: [], remotes: new Set(), sessions: new Set(), startMs });
|
|
3
|
+
/** Traces and loose batches (lines outside a request), each with its own cap, so neither pushes the other out. Oldest first. */
|
|
4
|
+
export class EntryMap {
|
|
5
|
+
maxTraces;
|
|
6
|
+
maxLoose;
|
|
7
|
+
#traces = new Map();
|
|
8
|
+
#loose = new Map();
|
|
9
|
+
constructor(maxTraces, maxLoose) {
|
|
10
|
+
this.maxTraces = maxTraces;
|
|
11
|
+
this.maxLoose = maxLoose;
|
|
12
|
+
}
|
|
13
|
+
/** Request traces only, as the dashboard counts them. */
|
|
14
|
+
get size() {
|
|
15
|
+
return this.#traces.size;
|
|
16
|
+
}
|
|
17
|
+
#mapOf(traceId) {
|
|
18
|
+
return isLooseTraceId(traceId) ? this.#loose : this.#traces;
|
|
19
|
+
}
|
|
20
|
+
get(traceId) {
|
|
21
|
+
return this.#mapOf(traceId).get(traceId);
|
|
22
|
+
}
|
|
23
|
+
/** The entry, made when missing; the oldest of its kind goes when its kind is over its cap. */
|
|
24
|
+
touch(traceId, startMs) {
|
|
25
|
+
const map = this.#mapOf(traceId);
|
|
26
|
+
let entry = map.get(traceId);
|
|
27
|
+
if (!entry) {
|
|
28
|
+
map.set(traceId, (entry = newEntry(traceId, startMs)));
|
|
29
|
+
const cap = map === this.#loose ? this.maxLoose : this.maxTraces;
|
|
30
|
+
while (map.size > cap)
|
|
31
|
+
map.delete(map.keys().next().value);
|
|
32
|
+
}
|
|
33
|
+
else if (startMs < entry.startMs)
|
|
34
|
+
entry.startMs = startMs;
|
|
35
|
+
return entry;
|
|
36
|
+
}
|
|
37
|
+
delete(traceId) {
|
|
38
|
+
this.#mapOf(traceId).delete(traceId);
|
|
39
|
+
}
|
|
40
|
+
/** Every entry: traces, then loose batches. */
|
|
41
|
+
*values() {
|
|
42
|
+
yield* this.#traces.values();
|
|
43
|
+
yield* this.#loose.values();
|
|
44
|
+
}
|
|
45
|
+
clear() {
|
|
46
|
+
this.#traces.clear();
|
|
47
|
+
this.#loose.clear();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** Picks the loose trace id for the next line outside a request: a new batch per 5-minute window, or when the batch is full. */
|
|
51
|
+
export class LooseBatcher {
|
|
52
|
+
maxLines;
|
|
53
|
+
#id = "";
|
|
54
|
+
#window = -1;
|
|
55
|
+
#count = 0;
|
|
56
|
+
constructor(maxLines) {
|
|
57
|
+
this.maxLines = maxLines;
|
|
58
|
+
}
|
|
59
|
+
idFor(timeMs) {
|
|
60
|
+
const window = Math.floor(timeMs / LOOSE_WINDOW_MS);
|
|
61
|
+
if (!this.#id || window !== this.#window || this.#count >= this.maxLines) {
|
|
62
|
+
this.#id = newLooseTraceId();
|
|
63
|
+
this.#window = window;
|
|
64
|
+
this.#count = 0;
|
|
65
|
+
}
|
|
66
|
+
this.#count++;
|
|
67
|
+
return this.#id;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=store-entries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-entries.js","sourceRoot":"","sources":["../src/store-entries.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
CHANGED
|
@@ -43,6 +43,8 @@ export declare class TraceStore {
|
|
|
43
43
|
/** `root`: the span starts this service's part of the trace. Sampling decides when a root ends. */
|
|
44
44
|
addSpan(span: Span, root?: boolean): void;
|
|
45
45
|
addLog(traceId: string, log: LogRecord): void;
|
|
46
|
+
/** A line written outside a request: into the current loose batch, never sampled with traces. Returns its trace id. */
|
|
47
|
+
addLooseLog(log: LogRecord): string;
|
|
46
48
|
addRemote(traceId: string, endpoint: string): void;
|
|
47
49
|
/** Load traces from disk, oldest first. Does not mark them dirty. */
|
|
48
50
|
load(traces: Iterable<StoredTrace>): void;
|
|
@@ -51,8 +53,9 @@ export declare class TraceStore {
|
|
|
51
53
|
/** Drop traces older than maxAgeMs. Returns how many were dropped. */
|
|
52
54
|
pruneByAge(): number;
|
|
53
55
|
get(traceId: string): Trace | undefined;
|
|
54
|
-
/** All traces, newest first. With `session`, only traces that have a browser span from that tab. */
|
|
56
|
+
/** All traces and loose batches (lines outside a request), newest first. With `session`, only traces that have a browser span from that tab. */
|
|
55
57
|
all(session?: string): Trace[];
|
|
58
|
+
/** Trace summaries, newest first; loose batches are not traces, so they are left out. */
|
|
56
59
|
list(limit?: number, session?: string): TraceSummary[];
|
|
57
60
|
clear(): void;
|
|
58
61
|
}
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoD,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,EAAa,MAAM,sBAAsB,CAAC;AAChL,OAAO,KAAK,EAAQ,YAAY,EAAW,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIlE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,kDAAkD;IAClD,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAQ1D,wFAAwF;AACxF,qBAAa,UAAU;;IAYrB,YAAY,OAAO,GAAE,iBAAsB,EAS1C;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,qCAAqC;IACrC,IAAI,QAAQ,IAAI,YAAY,GAAG,IAAI,CAElC;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAMD,8EAA8E;IAC9E,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAGvD;IAgBD,mGAAmG;IACnG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,UAA6B,GAAG,IAAI,CAE3D;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAE5C;IAED,uHAAuH;IACvH,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAIlC;IAED,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEjD;IAyCD,qEAAqE;IACrE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAWxC;IAED,4CAA4C;IAC5C,YAAY,IAAI,YAAY,EAAE,CAe7B;IAED,sEAAsE;IACtE,UAAU,IAAI,MAAM,CAWnB;IAED,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAGtC;IAED,gJAAgJ;IAChJ,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAS7B;IAED,yFAAyF;IACzF,IAAI,CAAC,KAAK,SAAK,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAEjD;IAED,KAAK,IAAI,IAAI,CAGZ;CACF"}
|
package/dist/store.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { ATTR_BROWSER_SESSION, buildTrace, toSummary } from "@wizeworks/lens-core";
|
|
1
|
+
import { ATTR_BROWSER_SESSION, buildTrace, isLooseTraceId, toSummary } from "@wizeworks/lens-core";
|
|
2
|
+
import { EntryMap, LooseBatcher } from "./store-entries.js";
|
|
2
3
|
/** In-memory ring buffer of traces, keyed by trace id. This is always the read path. */
|
|
3
4
|
export class TraceStore {
|
|
4
|
-
#entries
|
|
5
|
+
#entries;
|
|
6
|
+
#loose;
|
|
5
7
|
#dirty = new Map();
|
|
6
8
|
#maxTraces;
|
|
7
9
|
#maxAgeMs;
|
|
@@ -17,6 +19,8 @@ export class TraceStore {
|
|
|
17
19
|
this.#maxLogs = options.maxLogsPerTrace ?? 1000;
|
|
18
20
|
this.#now = options.now ?? Date.now;
|
|
19
21
|
this.#sampler = options.sampler;
|
|
22
|
+
this.#entries = new EntryMap(this.#maxTraces, Math.max(10, Math.floor(this.#maxTraces / 4)));
|
|
23
|
+
this.#loose = new LooseBatcher(this.#maxLogs);
|
|
20
24
|
}
|
|
21
25
|
get size() {
|
|
22
26
|
return this.#entries.size;
|
|
@@ -32,21 +36,7 @@ export class TraceStore {
|
|
|
32
36
|
return this.#maxAgeMs;
|
|
33
37
|
}
|
|
34
38
|
#entry(traceId, startMs) {
|
|
35
|
-
|
|
36
|
-
if (!entry) {
|
|
37
|
-
entry = { traceId, spans: new Map(), logs: [], remotes: new Set(), sessions: new Set(), startMs };
|
|
38
|
-
this.#entries.set(traceId, entry);
|
|
39
|
-
while (this.#entries.size > this.#maxTraces) {
|
|
40
|
-
const oldest = this.#entries.keys().next().value;
|
|
41
|
-
if (oldest === undefined)
|
|
42
|
-
break;
|
|
43
|
-
this.#entries.delete(oldest);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
else if (startMs < entry.startMs) {
|
|
47
|
-
entry.startMs = startMs;
|
|
48
|
-
}
|
|
49
|
-
return entry;
|
|
39
|
+
return this.#entries.touch(traceId, startMs);
|
|
50
40
|
}
|
|
51
41
|
/** Hear every new span, log, and remote. Returns the unsubscribe function. */
|
|
52
42
|
subscribe(listener) {
|
|
@@ -73,6 +63,12 @@ export class TraceStore {
|
|
|
73
63
|
addLog(traceId, log) {
|
|
74
64
|
this.#gate(traceId, this.#sampler?.log(traceId, log), () => this.#putLog(traceId, log));
|
|
75
65
|
}
|
|
66
|
+
/** A line written outside a request: into the current loose batch, never sampled with traces. Returns its trace id. */
|
|
67
|
+
addLooseLog(log) {
|
|
68
|
+
const traceId = this.#loose.idFor(log.timeMs);
|
|
69
|
+
this.#putLog(traceId, log);
|
|
70
|
+
return traceId;
|
|
71
|
+
}
|
|
76
72
|
addRemote(traceId, endpoint) {
|
|
77
73
|
this.#gate(traceId, this.#sampler?.remote(traceId, endpoint), () => this.#putRemote(traceId, endpoint));
|
|
78
74
|
}
|
|
@@ -157,10 +153,10 @@ export class TraceStore {
|
|
|
157
153
|
pruneByAge() {
|
|
158
154
|
const cutoff = this.#now() - this.#maxAgeMs;
|
|
159
155
|
let dropped = 0;
|
|
160
|
-
for (const
|
|
156
|
+
for (const entry of [...this.#entries.values()]) {
|
|
161
157
|
if (entry.startMs < cutoff) {
|
|
162
|
-
this.#entries.delete(
|
|
163
|
-
this.#dirty.delete(
|
|
158
|
+
this.#entries.delete(entry.traceId);
|
|
159
|
+
this.#dirty.delete(entry.traceId);
|
|
164
160
|
dropped++;
|
|
165
161
|
}
|
|
166
162
|
}
|
|
@@ -170,7 +166,7 @@ export class TraceStore {
|
|
|
170
166
|
const entry = this.#entries.get(traceId);
|
|
171
167
|
return entry ? buildTrace(entry.traceId, [...entry.spans.values()], entry.logs, entry.remotes) : undefined;
|
|
172
168
|
}
|
|
173
|
-
/** All traces, newest first. With `session`, only traces that have a browser span from that tab. */
|
|
169
|
+
/** All traces and loose batches (lines outside a request), newest first. With `session`, only traces that have a browser span from that tab. */
|
|
174
170
|
all(session) {
|
|
175
171
|
this.pruneByAge();
|
|
176
172
|
const traces = [];
|
|
@@ -183,8 +179,9 @@ export class TraceStore {
|
|
|
183
179
|
}
|
|
184
180
|
return traces.sort((a, b) => b.startMs - a.startMs);
|
|
185
181
|
}
|
|
182
|
+
/** Trace summaries, newest first; loose batches are not traces, so they are left out. */
|
|
186
183
|
list(limit = 50, session) {
|
|
187
|
-
return this.all(session).slice(0, Math.max(0, limit)).map(toSummary);
|
|
184
|
+
return this.all(session).filter((t) => !isLooseTraceId(t.traceId)).slice(0, Math.max(0, limit)).map(toSummary);
|
|
188
185
|
}
|
|
189
186
|
clear() {
|
|
190
187
|
this.#entries.clear();
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAA+E,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ServerResponse } from "node:http";
|
|
2
|
+
import { type TagRule } from "@wizeworks/lens-core";
|
|
3
|
+
import type { TraceStore } from "./store.js";
|
|
4
|
+
import type { Req } from "./types.js";
|
|
5
|
+
/** `GET api/tags`. Rules live in code here, so the dashboard shows them without edit controls. */
|
|
6
|
+
export declare function sendTags(tags: readonly TagRule[], res: ServerResponse): void;
|
|
7
|
+
/** `POST api/tags/match` with `{ kind, items }`: each enabled rule runs as a search over these traces in memory. */
|
|
8
|
+
export declare function sendTagMatch(store: TraceStore, tags: readonly TagRule[], req: Req, res: ServerResponse, env?: string): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=tags-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags-api.d.ts","sourceRoot":"","sources":["../src/tags-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAsE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAExH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAItC,kGAAkG;AAClG,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAE5E;AAED,oHAAoH;AACpH,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1I"}
|
package/dist/tags-api.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { activeTags, matchTags, searchMemory, TAG_LIMITS, tagMatchRequestOf } from "@wizeworks/lens-core";
|
|
2
|
+
import { readJson, sendJson } from "./http-util.js";
|
|
3
|
+
// The in-app tags API (docs/TAGS-PLAN.md): the rules from the `tags` option, read-only, and which of them match a page of rows.
|
|
4
|
+
/** `GET api/tags`. Rules live in code here, so the dashboard shows them without edit controls. */
|
|
5
|
+
export function sendTags(tags, res) {
|
|
6
|
+
sendJson(res, 200, { tags, editable: false, max: TAG_LIMITS.rules });
|
|
7
|
+
}
|
|
8
|
+
/** `POST api/tags/match` with `{ kind, items }`: each enabled rule runs as a search over these traces in memory. */
|
|
9
|
+
export async function sendTagMatch(store, tags, req, res, env) {
|
|
10
|
+
const r = tagMatchRequestOf(await readJson(req).catch(() => null));
|
|
11
|
+
if (!r.ok)
|
|
12
|
+
return sendJson(res, 400, r);
|
|
13
|
+
const traces = store.all();
|
|
14
|
+
sendJson(res, 200, { matches: await matchTags((q) => searchMemory(traces, q), r.kind, r.items, activeTags(tags), env) });
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=tags-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags-api.js","sourceRoot":"","sources":["../src/tags-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAgB,MAAM,sBAAsB,CAAC;AACxH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAIpD,gIAAgI;AAEhI,kGAAkG;AAClG,MAAM,UAAU,QAAQ,CAAC,IAAwB,EAAE,GAAmB;IACpE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,oHAAoH;AACpH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAiB,EAAE,IAAwB,EAAE,GAAQ,EAAE,GAAmB,EAAE,GAAY;IACzH,MAAM,CAAC,GAAG,iBAAiB,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3H,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Express } from "express";
|
|
2
|
+
import { type Span } from "@wizeworks/lens-core";
|
|
3
|
+
import type { WizeLens } from "../types.js";
|
|
4
|
+
export interface Running {
|
|
5
|
+
base: string;
|
|
6
|
+
close(): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare function fakeSpan(traceId: string, startMs: number, attributes?: Span["attributes"]): Span;
|
|
9
|
+
/** An Express app with WizeLens mounted first and its error middleware last. */
|
|
10
|
+
export declare function startApp(wizelens: WizeLens, routes: (app: Express) => void): Promise<Running>;
|
|
11
|
+
/** A fake downstream service: says it has WizeLens data and serves one span for any trace. */
|
|
12
|
+
export declare function startRemote(): Promise<Running>;
|
|
13
|
+
export declare function getJson<T>(url: string): Promise<T>;
|
|
14
|
+
export declare const settle: () => Promise<unknown>;
|
|
15
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/test/helpers.ts"],"names":[],"mappings":"AAEA,OAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,IAAI,CAAC,YAAY,CAAM,GAAG,IAAI,CAgBpG;AAQD,gFAAgF;AAChF,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAMnG;AAED,8FAA8F;AAC9F,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAgBpD;AAED,wBAAsB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAExD;AAED,eAAO,MAAM,MAAM,wBAA8C,CAAC"}
|