@wizeworks/lens-node 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/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 +25 -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 +108 -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 +4 -4
- 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/client-spans.d.ts +6 -4
- package/dist/client-spans.d.ts.map +1 -1
- package/dist/client-spans.js +20 -9
- package/dist/client-spans.js.map +1 -1
- package/dist/db.js +1 -1
- package/dist/db.js.map +1 -1
- package/dist/frameworks/fastify.d.ts.map +1 -1
- package/dist/frameworks/fastify.js +4 -2
- package/dist/frameworks/fastify.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 +4 -4
- 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 +4 -4
- 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 +73 -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 +5 -3
- package/dist/frameworks/node-server.js.map +1 -1
- 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 +11 -0
- package/dist/graphql/index.d.ts.map +1 -0
- package/dist/graphql/index.js +83 -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 +2 -2
- package/dist/mcp-find.d.ts.map +1 -1
- package/dist/mcp-find.js +68 -26
- 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-metrics.d.ts +2 -2
- package/dist/mcp-metrics.d.ts.map +1 -1
- package/dist/mcp-metrics.js +11 -9
- package/dist/mcp-metrics.js.map +1 -1
- 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 +11 -0
- package/dist/mcp-projects.d.ts.map +1 -0
- package/dist/mcp-projects.js +54 -0
- package/dist/mcp-projects.js.map +1 -0
- package/dist/mcp-search.d.ts +5 -0
- package/dist/mcp-search.d.ts.map +1 -0
- package/dist/mcp-search.js +53 -0
- package/dist/mcp-search.js.map +1 -0
- package/dist/mcp-shared.d.ts +83 -4
- 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 +27 -0
- package/dist/mcp-store.d.ts.map +1 -0
- package/dist/mcp-store.js +56 -0
- package/dist/mcp-store.js.map +1 -0
- 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-traces.d.ts +2 -2
- package/dist/mcp-traces.d.ts.map +1 -1
- package/dist/mcp-traces.js +37 -25
- package/dist/mcp-traces.js.map +1 -1
- 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 +7 -4
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +27 -8
- 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/request-capture.d.ts +7 -1
- package/dist/request-capture.d.ts.map +1 -1
- package/dist/request-capture.js +14 -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 +8 -0
- package/dist/search-api.d.ts.map +1 -0
- package/dist/search-api.js +21 -0
- package/dist/search-api.js.map +1 -0
- 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/tracing.d.ts +6 -0
- package/dist/tracing.d.ts.map +1 -1
- package/dist/tracing.js +11 -7
- 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 +29 -13
- package/dist/wizelens.js.map +1 -1
- package/package.json +14 -4
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { ATTR_DB_FINGERPRINT } from "@wizeworks/lens-core";
|
|
2
|
+
import { clip, fingerprint, isIdLike, serverAttributes } from "./nosql.js";
|
|
3
|
+
const words = (list) => new Set(list.split(/\s+/).filter(Boolean));
|
|
4
|
+
// Commands with no key: their arguments (a password, a script, a config value) are never shown.
|
|
5
|
+
const NO_KEYS = words(`AUTH HELLO PING ECHO INFO SELECT QUIT FLUSHDB FLUSHALL DBSIZE CONFIG CLIENT CLUSTER COMMAND TIME MULTI EXEC DISCARD
|
|
6
|
+
SCRIPT SCAN RANDOMKEY SAVE BGSAVE BGREWRITEAOF LASTSAVE ROLE SLOWLOG MEMORY MODULE ACL FUNCTION SWAPDB WAIT READONLY READWRITE RESET
|
|
7
|
+
UNWATCH LATENCY MONITOR DEBUG SHUTDOWN REPLICAOF SLAVEOF`);
|
|
8
|
+
const ALL_KEYS = words("MGET DEL UNLINK EXISTS TOUCH WATCH SINTER SUNION SDIFF PFCOUNT PFMERGE SINTERSTORE SUNIONSTORE SDIFFSTORE");
|
|
9
|
+
const PAIRS = words("MSET MSETNX");
|
|
10
|
+
const TWO_KEYS = words("RENAME RENAMENX RPOPLPUSH SMOVE LMOVE BLMOVE BRPOPLPUSH COPY");
|
|
11
|
+
const BLOCKING = words("BLPOP BRPOP BZPOPMIN BZPOPMAX");
|
|
12
|
+
const SCRIPTS = words("EVAL EVALSHA EVAL_RO EVALSHA_RO FCALL FCALL_RO");
|
|
13
|
+
const MAX_KEYS = 5;
|
|
14
|
+
const MAX_COMMANDS = 10;
|
|
15
|
+
/** The key arguments of a command. Every other argument is a value and is dropped. */
|
|
16
|
+
export function keysOf(name, args) {
|
|
17
|
+
if (NO_KEYS.has(name))
|
|
18
|
+
return [];
|
|
19
|
+
if (ALL_KEYS.has(name))
|
|
20
|
+
return [...args];
|
|
21
|
+
if (PAIRS.has(name))
|
|
22
|
+
return args.filter((_, i) => i % 2 === 0);
|
|
23
|
+
if (TWO_KEYS.has(name))
|
|
24
|
+
return args.slice(0, 2);
|
|
25
|
+
if (BLOCKING.has(name))
|
|
26
|
+
return args.slice(0, -1);
|
|
27
|
+
if (SCRIPTS.has(name))
|
|
28
|
+
return args.slice(2, 2 + (Number(args[1]) || 0));
|
|
29
|
+
return args.slice(0, 1);
|
|
30
|
+
}
|
|
31
|
+
const SEPARATORS = /([:/|#,={}\s]+)/;
|
|
32
|
+
/** A key with its ids, emails, and tokens as `?`: "user:123:cart" is "user:?:cart". */
|
|
33
|
+
export function keyShape(key) {
|
|
34
|
+
if (typeof key !== "string")
|
|
35
|
+
return "?";
|
|
36
|
+
const parts = key.split(SEPARATORS).map((part, i) => (i % 2 === 1 || !isIdLike(part) ? part : "?"));
|
|
37
|
+
return clip(parts.join(""), 200);
|
|
38
|
+
}
|
|
39
|
+
/** `GET user:?`: the command and the shapes of its keys, never the values. */
|
|
40
|
+
export function commandText(name, args) {
|
|
41
|
+
const upper = name.toUpperCase();
|
|
42
|
+
const shapes = [...new Set(keysOf(upper, args).map(keyShape))];
|
|
43
|
+
const keys = shapes.length > MAX_KEYS ? [...shapes.slice(0, MAX_KEYS), "…"] : shapes;
|
|
44
|
+
return [upper, ...keys].join(" ");
|
|
45
|
+
}
|
|
46
|
+
const infoOf = (adapter, operation, conn, extra) => ({
|
|
47
|
+
system: "redis",
|
|
48
|
+
adapter,
|
|
49
|
+
operation,
|
|
50
|
+
namespace: conn.namespace,
|
|
51
|
+
requireParent: true,
|
|
52
|
+
attributes: { ...serverAttributes(conn.host, conn.port), ...extra },
|
|
53
|
+
});
|
|
54
|
+
/** The span facts and query text of one command. */
|
|
55
|
+
export function commandCall(adapter, cmd, conn) {
|
|
56
|
+
const name = cmd.name.toUpperCase();
|
|
57
|
+
const info = infoOf(adapter, name, conn, { [ATTR_DB_FINGERPRINT]: fingerprint([name, ...cmd.args]) });
|
|
58
|
+
return { info, text: commandText(name, cmd.args) };
|
|
59
|
+
}
|
|
60
|
+
/** The span facts of a pipeline or MULTI: one span, the command count, and each distinct command shape. */
|
|
61
|
+
export function batchCall(adapter, kind, cmds, conn) {
|
|
62
|
+
const shapes = [...new Set(cmds.map((c) => commandText(c.name, c.args)))];
|
|
63
|
+
const listed = shapes.length > MAX_COMMANDS ? [...shapes.slice(0, MAX_COMMANDS), "…"] : shapes;
|
|
64
|
+
const values = cmds.flatMap((c) => [c.name.toUpperCase(), ...c.args]);
|
|
65
|
+
const extra = { "db.operation.batch.size": cmds.length, [ATTR_DB_FINGERPRINT]: fingerprint(values) };
|
|
66
|
+
return { info: { ...infoOf(adapter, kind, conn, extra), rowsOf: () => undefined }, text: clip(`${kind} ${listed.join("; ")}`) };
|
|
67
|
+
}
|
|
68
|
+
/** The first failed reply of a pipeline: ioredis gives [err, value] pairs, node-redis gives the error itself. */
|
|
69
|
+
export function replyError(result) {
|
|
70
|
+
if (!Array.isArray(result))
|
|
71
|
+
return undefined;
|
|
72
|
+
for (const reply of result) {
|
|
73
|
+
if (reply instanceof Error)
|
|
74
|
+
return reply;
|
|
75
|
+
if (Array.isArray(reply) && reply[0] instanceof Error)
|
|
76
|
+
return reply[0];
|
|
77
|
+
}
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=redis-shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-shape.js","sourceRoot":"","sources":["../../src/adapters/redis-shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WizeLens } from "../types.js";
|
|
2
|
+
/** Trace every node-redis (v4+) command, MULTI, and pipeline. Pass the `redis` or `@redis/client` module, or a client. Returns false when nothing was patched. */
|
|
3
|
+
export declare function instrumentRedis(wizelens: WizeLens, target: unknown): boolean;
|
|
4
|
+
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/adapters/redis.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmG5C,kKAAkK;AAClK,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAM5E"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { runTraced } from "../db.js";
|
|
2
|
+
import { ownerOf, runChecked } from "./nosql.js";
|
|
3
|
+
import { batchCall, commandCall, replyError } from "./redis-shape.js";
|
|
4
|
+
import { dbSpansOf, patchMethod } from "./registry.js";
|
|
5
|
+
function urlParts(url) {
|
|
6
|
+
if (!url)
|
|
7
|
+
return {};
|
|
8
|
+
try {
|
|
9
|
+
const u = new URL(url);
|
|
10
|
+
return { host: u.hostname || undefined, port: u.port ? Number(u.port) : undefined, db: u.pathname.slice(1) || undefined };
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return {};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function connOf(client) {
|
|
17
|
+
const o = client.options ?? {};
|
|
18
|
+
const url = urlParts(o.url);
|
|
19
|
+
if (o.socket?.path)
|
|
20
|
+
return { namespace: String(o.database ?? url.db ?? 0) };
|
|
21
|
+
return { namespace: String(o.database ?? url.db ?? 0), host: o.socket?.host ?? url.host ?? "localhost", port: o.socket?.port ?? url.port ?? 6379 };
|
|
22
|
+
}
|
|
23
|
+
const toCommand = (raw) => ({ name: String(raw[0] ?? ""), args: raw.slice(1) });
|
|
24
|
+
// v4 typed commands may start with commandOptions(), an object keyed by a symbol.
|
|
25
|
+
const isOptions = (v) => typeof v === "object" && v !== null && !Array.isArray(v) && Object.getOwnPropertySymbols(v).length > 0;
|
|
26
|
+
/** The raw arguments ("GET", key) of a v4 typed command, built the way the client builds them. */
|
|
27
|
+
function rawOf(command, args) {
|
|
28
|
+
if (typeof command?.transformArguments !== "function" || !Array.isArray(args))
|
|
29
|
+
return null;
|
|
30
|
+
try {
|
|
31
|
+
const out = command.transformArguments(...(isOptions(args[0]) ? args.slice(1) : args));
|
|
32
|
+
return Array.isArray(out) && out.length > 0 ? out : null;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Wrap a method whose call is one command, given its raw arguments. */
|
|
39
|
+
function oneCommand(start, rawArgs) {
|
|
40
|
+
return (original) => function (...args) {
|
|
41
|
+
const raw = rawArgs(args);
|
|
42
|
+
if (!raw)
|
|
43
|
+
return original.apply(this, args);
|
|
44
|
+
const { info, text } = commandCall("redis", toCommand(raw), connOf(this));
|
|
45
|
+
return runTraced(start(info, text, undefined), [], () => original.apply(this, args));
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** Wrap a method that runs queued commands as one MULTI or pipeline. */
|
|
49
|
+
function batch(start, kindOf) {
|
|
50
|
+
return (original) => function (...args) {
|
|
51
|
+
const queue = args[0];
|
|
52
|
+
if (!Array.isArray(queue) || queue.length === 0)
|
|
53
|
+
return original.apply(this, args);
|
|
54
|
+
const cmds = queue.map((c) => toCommand(Array.isArray(c?.args) ? c.args : []));
|
|
55
|
+
const { info, text } = batchCall("redis", kindOf(args), cmds, connOf(this));
|
|
56
|
+
return runChecked(start(info, text, undefined), [], () => original.apply(this, args), replyError);
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const scriptRaw = (args) => {
|
|
60
|
+
const script = args[0];
|
|
61
|
+
return script?.SHA1 && Array.isArray(args[1]) ? ["EVALSHA", script.SHA1, script.NUMBER_OF_KEYS ?? 0, ...args[1]] : null;
|
|
62
|
+
};
|
|
63
|
+
function patchClient(proto, start) {
|
|
64
|
+
patchMethod(proto, "sendCommand", oneCommand(start, (a) => (Array.isArray(a[0]) && a[0].length > 0 ? a[0] : null)));
|
|
65
|
+
patchMethod(proto, "commandsExecutor", oneCommand(start, (a) => rawOf(a[0], a[1])));
|
|
66
|
+
patchMethod(proto, "executeScript", oneCommand(start, scriptRaw));
|
|
67
|
+
patchMethod(proto, "multiExecutor", batch(start, (a) => (a[2] === undefined ? "PIPELINE" : "MULTI")));
|
|
68
|
+
patchMethod(proto, "_executeMulti", batch(start, () => "MULTI"));
|
|
69
|
+
patchMethod(proto, "_executePipeline", batch(start, () => "PIPELINE"));
|
|
70
|
+
}
|
|
71
|
+
/** The client prototype: from the RedisClient class, its module, a client, or a client made (not connected) by createClient. */
|
|
72
|
+
function prototypeOf(target) {
|
|
73
|
+
const t = target;
|
|
74
|
+
if (typeof target === "function")
|
|
75
|
+
return typeof t?.prototype?.sendCommand === "function" ? t.prototype : null;
|
|
76
|
+
if (t && typeof t.sendCommand === "function")
|
|
77
|
+
return ownerOf(t, "sendCommand");
|
|
78
|
+
if (t?.default)
|
|
79
|
+
return prototypeOf(t.default);
|
|
80
|
+
if (typeof t?.createClient === "function")
|
|
81
|
+
return prototypeOf(t.createClient());
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
/** Trace every node-redis (v4+) command, MULTI, and pipeline. Pass the `redis` or `@redis/client` module, or a client. Returns false when nothing was patched. */
|
|
85
|
+
export function instrumentRedis(wizelens, target) {
|
|
86
|
+
const start = dbSpansOf(wizelens);
|
|
87
|
+
const proto = prototypeOf(target);
|
|
88
|
+
if (!start || !proto)
|
|
89
|
+
return false;
|
|
90
|
+
patchClient(proto, start);
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=redis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/adapters/redis.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,8 @@ export declare function addCleanup(wizelens: WizeLens, fn: () => void): void;
|
|
|
20
20
|
export declare function runCleanups(wizelens: WizeLens): void;
|
|
21
21
|
/** Called once by createWizeLens. A disabled instance is never registered, so adapters do nothing. */
|
|
22
22
|
export declare function registerParts(wizelens: WizeLens, p: AdapterParts): void;
|
|
23
|
+
/** Everything an enabled instance gives its adapters, or null. */
|
|
24
|
+
export declare const partsOf: (wizelens: WizeLens) => AdapterParts | null;
|
|
23
25
|
/** The database span factory of an enabled instance, or null. */
|
|
24
26
|
export declare const dbSpansOf: (wizelens: WizeLens) => StartDbSpan | null;
|
|
25
27
|
/** Tracer provider of an enabled instance, or null. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,iCAAiC;IACjC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAKD,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAInE;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAGpD;AAED,sGAAsG;AACtG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,CAEvE;AAED,iEAAiE;AACjE,eAAO,MAAM,SAAS,aAAc,QAAQ,KAAG,WAAW,GAAG,IAA4C,CAAC;AAE1G,uDAAuD;AACvD,eAAO,MAAM,UAAU,aAAc,QAAQ,KAAG,cAAc,GAAG,IAA6C,CAAC;AAE/G,uDAAuD;AACvD,eAAO,MAAM,SAAS,aAAc,QAAQ,KAAG,WAAW,GAAG,IAA4C,CAAC;AAE1G,wEAAwE;AACxE,eAAO,MAAM,SAAS,aAAc,QAAQ,KAAG,WAAW,GAAG,IAA4C,CAAC;AAE1G,oDAAoD;AACpD,eAAO,MAAM,SAAS,aAAc,QAAQ,KAAG,OAAO,GAAG,IAAyC,CAAC;AAEnG,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE9C,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,EAAE,IAAI,SAAW,GAAG,OAAO,CASnI"}
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,iCAAiC;IACjC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAKD,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAInE;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAGpD;AAED,sGAAsG;AACtG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,CAEvE;AAED,kEAAkE;AAClE,eAAO,MAAM,OAAO,aAAc,QAAQ,KAAG,YAAY,GAAG,IAAmC,CAAC;AAEhG,iEAAiE;AACjE,eAAO,MAAM,SAAS,aAAc,QAAQ,KAAG,WAAW,GAAG,IAA4C,CAAC;AAE1G,uDAAuD;AACvD,eAAO,MAAM,UAAU,aAAc,QAAQ,KAAG,cAAc,GAAG,IAA6C,CAAC;AAE/G,uDAAuD;AACvD,eAAO,MAAM,SAAS,aAAc,QAAQ,KAAG,WAAW,GAAG,IAA4C,CAAC;AAE1G,wEAAwE;AACxE,eAAO,MAAM,SAAS,aAAc,QAAQ,KAAG,WAAW,GAAG,IAA4C,CAAC;AAE1G,oDAAoD;AACpD,eAAO,MAAM,SAAS,aAAc,QAAQ,KAAG,OAAO,GAAG,IAAyC,CAAC;AAEnG,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE9C,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,EAAE,IAAI,SAAW,GAAG,OAAO,CASnI"}
|
|
@@ -16,6 +16,8 @@ export function runCleanups(wizelens) {
|
|
|
16
16
|
export function registerParts(wizelens, p) {
|
|
17
17
|
parts.set(wizelens, p);
|
|
18
18
|
}
|
|
19
|
+
/** Everything an enabled instance gives its adapters, or null. */
|
|
20
|
+
export const partsOf = (wizelens) => parts.get(wizelens) ?? null;
|
|
19
21
|
/** The database span factory of an enabled instance, or null. */
|
|
20
22
|
export const dbSpansOf = (wizelens) => parts.get(wizelens)?.dbSpans ?? null;
|
|
21
23
|
/** Tracer provider of an enabled instance, or null. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AAkBA,MAAM,KAAK,GAAG,IAAI,OAAO,EAA0B,CAAC;AACpD,MAAM,QAAQ,GAAG,IAAI,OAAO,EAA4B,CAAC;AAEzD,6EAA6E;AAC7E,MAAM,UAAU,UAAU,CAAC,QAAkB,EAAE,EAAc;IAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,CAAC;IACpD,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,CAAe;IAC/D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAsB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;AAE1G,uDAAuD;AACvD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAkB,EAAyB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC;AAE/G,uDAAuD;AACvD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAsB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;AAE1G,wEAAwE;AACxE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAsB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;AAE1G,oDAAoD;AACpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAkB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;AAInG,yFAAyF;AACzF,MAAM,UAAU,WAAW,CAAmB,MAAS,EAAE,IAAY,EAAE,IAAkC,EAAE,IAAI,GAAG,QAAQ;IACxH,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAA0C,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAK,QAA+C,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7G,MAAM,OAAO,GAAG,IAAI,CAAC,QAAkB,CAAC,CAAC;IACzC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AAkBA,MAAM,KAAK,GAAG,IAAI,OAAO,EAA0B,CAAC;AACpD,MAAM,QAAQ,GAAG,IAAI,OAAO,EAA4B,CAAC;AAEzD,6EAA6E;AAC7E,MAAM,UAAU,UAAU,CAAC,QAAkB,EAAE,EAAc;IAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,CAAC;IACpD,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,CAAe;IAC/D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,QAAkB,EAAuB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;AAEhG,iEAAiE;AACjE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAsB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;AAE1G,uDAAuD;AACvD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAkB,EAAyB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC;AAE/G,uDAAuD;AACvD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAsB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;AAE1G,wEAAwE;AACxE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAsB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;AAE1G,oDAAoD;AACpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAkB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;AAInG,yFAAyF;AACzF,MAAM,UAAU,WAAW,CAAmB,MAAS,EAAE,IAAY,EAAE,IAAkC,EAAE,IAAI,GAAG,QAAQ;IACxH,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAA0C,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAK,QAA+C,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7G,MAAM,OAAO,GAAG,IAAI,CAAC,QAAkB,CAAC,CAAC;IACzC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/api.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
-
import { type ServiceInfo, type Trace, type TraceSummary } from "@wizeworks/lens-core";
|
|
2
|
+
import { type MapLoader, type ServiceInfo, type TagRule, type Trace, type TraceSummary } from "@wizeworks/lens-core";
|
|
3
3
|
import { type McpDataSource } from "./mcp.js";
|
|
4
4
|
import type { MetricStore } from "./metrics/store.js";
|
|
5
5
|
import type { TraceStore } from "./store.js";
|
|
@@ -18,6 +18,10 @@ export interface ApiDeps {
|
|
|
18
18
|
selfEndpoints: ReadonlySet<string>;
|
|
19
19
|
/** False is send-only: only the browser span intake answers. */
|
|
20
20
|
dashboard: boolean;
|
|
21
|
+
/** Build folders and dev servers to read source maps from; null when off. */
|
|
22
|
+
sourceMaps?: MapLoader | null;
|
|
23
|
+
/** The `tags` option's rules and the built-ins (docs/TAGS-PLAN.md). */
|
|
24
|
+
tags: readonly TagRule[];
|
|
21
25
|
}
|
|
22
26
|
/** `api/traces`: summaries by default, full local traces with `full=true` (and `since`). */
|
|
23
27
|
export declare function listTraces(store: TraceStore, params: URLSearchParams): TraceSummary[] | Trace[];
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAkD,KAAK,SAAS,EAAE,KAAK,WAAW,EAAsC,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzM,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQ7C,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,MAAM,WAAW,CAAC;IACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IAC1F,iCAAiC;IACjC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,sEAAsE;IACtE,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9B,uEAAuE;IACvE,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;CAC1B;AAMD,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE,CAS/F;AA+DD,wJAAwJ;AACxJ,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,SACH,eAAe,OAAO,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC,CAyB3F"}
|
package/dist/api.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { HEADER_HOP } from "@wizeworks/lens-core";
|
|
2
|
-
import { remoteOf, sanitizeClientLog, sanitizeClientSpan } from "./client-spans.js";
|
|
1
|
+
import { annotateErrorFrames, answerResolve, HEADER_HOP, SOURCEMAPS_RESOLVE_PATH } from "@wizeworks/lens-core";
|
|
2
|
+
import { browserClockOffset, remoteOf, sanitizeClientLog, sanitizeClientSpan } from "./client-spans.js";
|
|
3
3
|
import { firstHeader, readJson, sendJson, setCors } from "./http-util.js";
|
|
4
4
|
import { handleMcp } from "./mcp.js";
|
|
5
|
+
import { sendSearch, sendSuggest } from "./search-api.js";
|
|
6
|
+
import { sendTagMatch, sendTags } from "./tags-api.js";
|
|
5
7
|
import { serveUi } from "./ui.js";
|
|
6
8
|
const MAX_CLIENT_SPANS = 500;
|
|
7
9
|
const MAX_CLIENT_LOGS = 100;
|
|
@@ -30,12 +32,14 @@ async function sendTrace(d, traceId, req, res, url) {
|
|
|
30
32
|
async function receiveClientSpans(d, req, res) {
|
|
31
33
|
try {
|
|
32
34
|
const body = (await readJson(req));
|
|
35
|
+
const shiftMs = browserClockOffset(body?.sentAt, Date.now());
|
|
33
36
|
const spans = Array.isArray(body?.spans) ? body.spans.slice(0, MAX_CLIENT_SPANS) : [];
|
|
34
37
|
const origin = firstHeader(req.headers.origin);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
const clean = spans.map((raw) => sanitizeClientSpan(raw, d.redactKeys, shiftMs)).filter((s) => s !== null);
|
|
39
|
+
// Browser errors group by their original frame: add it now, while the maps are at hand.
|
|
40
|
+
if (d.sourceMaps)
|
|
41
|
+
await annotateErrorFrames(clean, d.sourceMaps);
|
|
42
|
+
for (const span of clean) {
|
|
39
43
|
d.store.addSpan(span);
|
|
40
44
|
const remote = remoteOf(span, origin);
|
|
41
45
|
if (remote && !d.selfEndpoints.has(remote))
|
|
@@ -43,7 +47,7 @@ async function receiveClientSpans(d, req, res) {
|
|
|
43
47
|
}
|
|
44
48
|
const logs = Array.isArray(body?.logs) ? body.logs.slice(0, MAX_CLIENT_LOGS) : [];
|
|
45
49
|
for (const raw of logs) {
|
|
46
|
-
const entry = sanitizeClientLog(raw, d.redactKeys);
|
|
50
|
+
const entry = sanitizeClientLog(raw, d.redactKeys, shiftMs);
|
|
47
51
|
if (entry)
|
|
48
52
|
d.store.addLog(entry.traceId, entry.log);
|
|
49
53
|
}
|
|
@@ -53,6 +57,10 @@ async function receiveClientSpans(d, req, res) {
|
|
|
53
57
|
sendJson(res, 400, { error: "invalid body" });
|
|
54
58
|
}
|
|
55
59
|
}
|
|
60
|
+
async function sendResolve(load, req, res) {
|
|
61
|
+
const answer = await answerResolve(await readJson(req).catch(() => undefined), load);
|
|
62
|
+
sendJson(res, answer.status, answer.body);
|
|
63
|
+
}
|
|
56
64
|
async function handleApi(d, sub, method, req, res, url) {
|
|
57
65
|
if (sub === "api/info" && method === "GET")
|
|
58
66
|
return sendJson(res, 200, d.info());
|
|
@@ -63,6 +71,16 @@ async function handleApi(d, sub, method, req, res, url) {
|
|
|
63
71
|
return sendTrace(d, traceMatch[1], req, res, url);
|
|
64
72
|
if (sub === CLIENT_SPANS && method === "POST")
|
|
65
73
|
return receiveClientSpans(d, req, res);
|
|
74
|
+
if (sub === SOURCEMAPS_RESOLVE_PATH && method === "POST" && d.sourceMaps)
|
|
75
|
+
return sendResolve(d.sourceMaps, req, res);
|
|
76
|
+
if (sub === "api/search" && method === "GET")
|
|
77
|
+
return sendSearch(d.store, d.tags, url.searchParams, res, d.info().environment);
|
|
78
|
+
if (sub === "api/search/suggest" && method === "GET")
|
|
79
|
+
return sendSuggest(d.store, d.tags, url.searchParams, res, d.info().environment);
|
|
80
|
+
if (sub === "api/tags" && method === "GET")
|
|
81
|
+
return sendTags(d.tags, res);
|
|
82
|
+
if (sub === "api/tags/match" && method === "POST")
|
|
83
|
+
return sendTagMatch(d.store, d.tags, req, res, d.info().environment);
|
|
66
84
|
if (sub === "api/metrics/points" && method === "GET" && d.metrics) {
|
|
67
85
|
const since = Number(url.searchParams.get("since"));
|
|
68
86
|
return sendJson(res, 200, { points: d.metrics.since(Number.isFinite(since) ? since : 0) });
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { WizeLensOptions } from "../types.js";
|
|
2
|
+
type Env = Record<string, string | undefined>;
|
|
3
|
+
/** Comma list of auto hooks to leave off, for example "prisma,pino". */
|
|
4
|
+
export declare const SKIP_ENV = "WIZELENS_AUTO_SKIP";
|
|
5
|
+
/** The `name` of the first package.json at or above `dir`, skipping packages inside node_modules. */
|
|
6
|
+
export declare function packageNameAbove(dir: string): string | undefined;
|
|
7
|
+
/** The service name: OTEL_SERVICE_NAME, then OTEL_RESOURCE_ATTRIBUTES, then the app's package.json name (no npm scope). */
|
|
8
|
+
export declare function autoServiceName(env?: Env, cwd?: string, main?: string | undefined): string;
|
|
9
|
+
/** The auto install's options. Everything else comes from the variables createWizeLens already reads. */
|
|
10
|
+
export declare function autoOptions(env?: Env): WizeLensOptions;
|
|
11
|
+
/** True when `name` is listed in WIZELENS_AUTO_SKIP. */
|
|
12
|
+
export declare function skipped(name: string, env?: Env): boolean;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/auto/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE9C,wEAAwE;AACxE,eAAO,MAAM,QAAQ,uBAAuB,CAAC;AAE7C,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQhE;AAoBD,2HAA2H;AAC3H,wBAAgB,eAAe,CAAC,GAAG,GAAE,GAAiB,EAAE,GAAG,SAAgB,EAAE,IAAI,qBAAkB,GAAG,MAAM,CAK3G;AAED,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,GAAG,GAAE,GAAiB,GAAG,eAAe,CAEnE;AAED,wDAAwD;AACxD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,GAAiB,GAAG,OAAO,CAErE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
/** Comma list of auto hooks to leave off, for example "prisma,pino". */
|
|
4
|
+
export const SKIP_ENV = "WIZELENS_AUTO_SKIP";
|
|
5
|
+
/** The `name` of the first package.json at or above `dir`, skipping packages inside node_modules. */
|
|
6
|
+
export function packageNameAbove(dir) {
|
|
7
|
+
for (let d = dir;; d = dirname(d)) {
|
|
8
|
+
if (!/[\\/]node_modules([\\/]|$)/.test(d)) {
|
|
9
|
+
const name = readName(join(d, "package.json"));
|
|
10
|
+
if (name)
|
|
11
|
+
return name;
|
|
12
|
+
}
|
|
13
|
+
if (dirname(d) === d)
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function readName(file) {
|
|
18
|
+
try {
|
|
19
|
+
const name = JSON.parse(readFileSync(file, "utf8")).name;
|
|
20
|
+
return typeof name === "string" && name.trim() ? name.trim() : undefined;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** `service.name` from OTEL_RESOURCE_ATTRIBUTES ("service.name=orders,team=shop"). */
|
|
27
|
+
function resourceServiceName(env) {
|
|
28
|
+
for (const pair of (env.OTEL_RESOURCE_ATTRIBUTES ?? "").split(",")) {
|
|
29
|
+
const [key, ...rest] = pair.split("=");
|
|
30
|
+
if (key?.trim() === "service.name" && rest.join("=").trim())
|
|
31
|
+
return decodeURIComponent(rest.join("=").trim());
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
/** The service name: OTEL_SERVICE_NAME, then OTEL_RESOURCE_ATTRIBUTES, then the app's package.json name (no npm scope). */
|
|
36
|
+
export function autoServiceName(env = process.env, cwd = process.cwd(), main = process.argv[1]) {
|
|
37
|
+
const named = env.OTEL_SERVICE_NAME?.trim() || resourceServiceName(env);
|
|
38
|
+
if (named)
|
|
39
|
+
return named;
|
|
40
|
+
const pkg = packageNameAbove(cwd) ?? (main ? packageNameAbove(dirname(main)) : undefined);
|
|
41
|
+
return pkg?.replace(/^@[^/]+\//, "") ?? "node-app";
|
|
42
|
+
}
|
|
43
|
+
/** The auto install's options. Everything else comes from the variables createWizeLens already reads. */
|
|
44
|
+
export function autoOptions(env = process.env) {
|
|
45
|
+
return { serviceName: autoServiceName(env) };
|
|
46
|
+
}
|
|
47
|
+
/** True when `name` is listed in WIZELENS_AUTO_SKIP. */
|
|
48
|
+
export function skipped(name, env = process.env) {
|
|
49
|
+
return (env[SKIP_ENV] ?? "").split(",").some((s) => s.trim().toLowerCase() === name);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/auto/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type EsmPatch } from "./esm-source.js";
|
|
2
|
+
interface LoadResult {
|
|
3
|
+
format?: string | null;
|
|
4
|
+
source?: unknown;
|
|
5
|
+
}
|
|
6
|
+
type NextLoad = (url: string, context: unknown) => Promise<LoadResult>;
|
|
7
|
+
export declare function initialize(data: EsmPatch[] | undefined): void;
|
|
8
|
+
export declare function load(url: string, context: unknown, next: NextLoad): Promise<LoadResult>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=esm-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esm-loader.d.ts","sourceRoot":"","sources":["../../src/auto/esm-loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAmB,MAAM,iBAAiB,CAAC;AAEjE,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AACD,KAAK,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAIvE,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAS,GAAG,IAAI,CAE7D;AAED,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAE7F"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Loader hooks for Node versions without module.registerHooks. They run on the loader thread and only edit source.
|
|
2
|
+
import { transformSource } from "./esm-source.js";
|
|
3
|
+
let patches = [];
|
|
4
|
+
export function initialize(data) {
|
|
5
|
+
patches = data ?? [];
|
|
6
|
+
}
|
|
7
|
+
export async function load(url, context, next) {
|
|
8
|
+
return transformSource(url, await next(url, context), patches);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=esm-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esm-loader.js","sourceRoot":"","sources":["../../src/auto/esm-loader.ts"],"names":[],"mappings":"AAAA,mHAAmH;AACnH,OAAO,EAAiB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAQjE,IAAI,OAAO,GAAe,EAAE,CAAC;AAE7B,MAAM,UAAU,UAAU,CAAC,IAA4B;IACrD,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,OAAgB,EAAE,IAAc;IACtE,OAAO,eAAe,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** A line added to the end of matching ES modules. It runs inside the module, so it can read and replace its bindings. */
|
|
2
|
+
export interface EsmPatch {
|
|
3
|
+
pattern: RegExp;
|
|
4
|
+
code: string;
|
|
5
|
+
}
|
|
6
|
+
interface LoadResult {
|
|
7
|
+
format?: string | null;
|
|
8
|
+
source?: unknown;
|
|
9
|
+
}
|
|
10
|
+
/** The load result with every matching patch added to an ES module's source. */
|
|
11
|
+
export declare function transformSource<T extends LoadResult>(url: string, result: T, patches: readonly EsmPatch[]): T;
|
|
12
|
+
/** A patch that hands the module's `binding` to the auto hook `id`. With `replace`, a returned value takes its place. */
|
|
13
|
+
export declare function esmPatch(pattern: RegExp, id: string, binding: string, replace?: boolean): EsmPatch;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=esm-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esm-source.d.ts","sourceRoot":"","sources":["../../src/auto/esm-source.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAC1H,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAQD,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,QAAQ,EAAE,GAAG,CAAC,CAK7G;AAED,yHAAyH;AACzH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,QAAQ,CAKhG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
function text(source) {
|
|
2
|
+
if (typeof source === "string")
|
|
3
|
+
return source;
|
|
4
|
+
if (source instanceof Uint8Array)
|
|
5
|
+
return new TextDecoder().decode(source);
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
/** The load result with every matching patch added to an ES module's source. */
|
|
9
|
+
export function transformSource(url, result, patches) {
|
|
10
|
+
if (result.format !== "module" || patches.length === 0)
|
|
11
|
+
return result;
|
|
12
|
+
const lines = patches.filter((p) => p.pattern.test(url)).map((p) => p.code);
|
|
13
|
+
const source = lines.length > 0 ? text(result.source) : null;
|
|
14
|
+
return source === null ? result : { ...result, source: `${source}\n;${lines.join("\n;")}\n` };
|
|
15
|
+
}
|
|
16
|
+
/** A patch that hands the module's `binding` to the auto hook `id`. With `replace`, a returned value takes its place. */
|
|
17
|
+
export function esmPatch(pattern, id, binding, replace = false) {
|
|
18
|
+
const value = `typeof ${binding} === "undefined" ? undefined : ${binding}`;
|
|
19
|
+
const call = `globalThis[Symbol.for("wizeworks.wizelens.auto.esm")]?.(${JSON.stringify(id)}, ${value})`;
|
|
20
|
+
// The try keeps the module running when a new version renamed the binding.
|
|
21
|
+
return { pattern, code: `try { ${replace ? `${binding} = ${call} ?? ${binding}` : call}; } catch {}` };
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=esm-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esm-source.js","sourceRoot":"","sources":["../../src/auto/esm-source.ts"],"names":[],"mappings":"AAWA,SAAS,IAAI,CAAC,MAAe;IAC3B,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,MAAM,YAAY,UAAU;QAAE,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAuB,GAAW,EAAE,MAAS,EAAE,OAA4B;IACxG,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACtE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAChG,CAAC;AAED,yHAAyH;AACzH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,EAAU,EAAE,OAAe,EAAE,OAAO,GAAG,KAAK;IACpF,MAAM,KAAK,GAAG,UAAU,OAAO,kCAAkC,OAAO,EAAE,CAAC;IAC3E,MAAM,IAAI,GAAG,2DAA2D,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC;IACxG,2EAA2E;IAC3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM,IAAI,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC;AACzG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameworks.d.ts","sourceRoot":"","sources":["../../src/auto/frameworks.ts"],"names":[],"mappings":"AAiIA,8FAA8F;AAC9F,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
|