@tracepanel/js 0.5.0 → 0.7.0
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/README.md +265 -14
- package/dist/agent.d.ts +5 -1
- package/dist/agent.js +12 -3
- package/dist/agent.js.map +1 -1
- package/dist/aws.d.ts +27 -0
- package/dist/aws.js +368 -0
- package/dist/aws.js.map +1 -0
- package/dist/browser.d.ts +4 -1
- package/dist/browser.js +33 -3
- package/dist/browser.js.map +1 -1
- package/dist/bun.js +6 -82
- package/dist/bun.js.map +1 -1
- package/dist/calls.d.ts +5 -0
- package/dist/calls.js +7 -0
- package/dist/calls.js.map +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/explain.d.ts +5 -0
- package/dist/explain.js +56 -7
- package/dist/explain.js.map +1 -1
- package/dist/express.js +43 -3
- package/dist/express.js.map +1 -1
- package/dist/fastify.d.ts +2 -0
- package/dist/fastify.js +100 -0
- package/dist/fastify.js.map +1 -0
- package/dist/frameworks.js +3 -0
- package/dist/frameworks.js.map +1 -1
- package/dist/graphql.d.ts +39 -0
- package/dist/graphql.js +337 -0
- package/dist/graphql.js.map +1 -0
- package/dist/hono.d.ts +2 -0
- package/dist/hono.js +63 -0
- package/dist/hono.js.map +1 -0
- package/dist/koa.d.ts +2 -0
- package/dist/koa.js +119 -0
- package/dist/koa.js.map +1 -0
- package/dist/llm.d.ts +20 -0
- package/dist/llm.js +632 -0
- package/dist/llm.js.map +1 -0
- package/dist/memory.d.ts +69 -0
- package/dist/memory.js +203 -0
- package/dist/memory.js.map +1 -0
- package/dist/model.d.ts +22 -1
- package/dist/model.js.map +1 -1
- package/dist/next.js +4 -4
- package/dist/next.js.map +1 -1
- package/dist/processor.d.ts +50 -5
- package/dist/processor.js +193 -30
- package/dist/processor.js.map +1 -1
- package/dist/profile.d.ts +34 -8
- package/dist/profile.js +98 -13
- package/dist/profile.js.map +1 -1
- package/dist/propagation.d.ts +12 -0
- package/dist/propagation.js +48 -0
- package/dist/propagation.js.map +1 -0
- package/dist/queries.d.ts +20 -0
- package/dist/queries.js +75 -0
- package/dist/queries.js.map +1 -0
- package/dist/respond.d.ts +12 -0
- package/dist/respond.js +85 -0
- package/dist/respond.js.map +1 -0
- package/dist/setup.js +27 -6
- package/dist/setup.js.map +1 -1
- package/dist/sql.d.ts +1 -0
- package/dist/sql.js +11 -2
- package/dist/sql.js.map +1 -1
- package/dist/sqlite.d.ts +13 -0
- package/dist/sqlite.js +291 -0
- package/dist/sqlite.js.map +1 -0
- package/dist/stack.d.ts +3 -1
- package/dist/stack.js +30 -6
- package/dist/stack.js.map +1 -1
- package/dist/testing.d.ts +128 -0
- package/dist/testing.js +362 -0
- package/dist/testing.js.map +1 -0
- package/dist/transactions.d.ts +11 -1
- package/dist/transactions.js +70 -34
- package/dist/transactions.js.map +1 -1
- package/dist/view.d.ts +17 -0
- package/dist/view.js +71 -0
- package/dist/view.js.map +1 -0
- package/dist/vitest-setup.d.ts +1 -0
- package/dist/vitest-setup.js +63 -0
- package/dist/vitest-setup.js.map +1 -0
- package/dist/vitest.d.ts +57 -0
- package/dist/vitest.js +130 -0
- package/dist/vitest.js.map +1 -0
- package/dist/widget.d.ts +16 -0
- package/dist/widget.js +42 -1
- package/dist/widget.js.map +1 -1
- package/package.json +81 -4
package/dist/setup.js
CHANGED
|
@@ -16,15 +16,21 @@ import { UndiciInstrumentation } from "@opentelemetry/instrumentation-undici";
|
|
|
16
16
|
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
|
17
17
|
import { PrismaInstrumentation } from "@prisma/instrumentation";
|
|
18
18
|
import { register as registerSyncHooks, supportsSyncHooks } from "import-in-the-middle/register-hooks.mjs";
|
|
19
|
+
import { awsInstrumentation } from "./aws.js";
|
|
19
20
|
import { BullMQInstrumentation } from "./bullmq.js";
|
|
21
|
+
import { mongoStatement } from "./calls.js";
|
|
20
22
|
import { captureConsole } from "./console.js";
|
|
21
23
|
import { DatabasesInstrumentation } from "./explain.js";
|
|
22
24
|
import { traceFetch } from "./fetch.js";
|
|
25
|
+
import { LlmInstrumentation, traceLlmFetch } from "./llm.js";
|
|
23
26
|
import { PinoLogs, WinstonLogs } from "./loggers.js";
|
|
24
27
|
import { NestLogs } from "./logs.js";
|
|
25
28
|
import { traceBunCalls } from "./outgoing.js";
|
|
26
29
|
import { ATTRIBUTE as PROFILE, requested } from "./profile.js";
|
|
30
|
+
import { profilePropagator } from "./propagation.js";
|
|
31
|
+
import { traceBunQueries } from "./queries.js";
|
|
27
32
|
import { runtime } from "./runtime.js";
|
|
33
|
+
import { SqliteInstrumentation } from "./sqlite.js";
|
|
28
34
|
import { TransactionsInstrumentation } from "./transactions.js";
|
|
29
35
|
const STARTED = Symbol.for("tracepanel.started");
|
|
30
36
|
/**
|
|
@@ -75,7 +81,10 @@ export function start(options = {}) {
|
|
|
75
81
|
registerSyncHooks();
|
|
76
82
|
else
|
|
77
83
|
register("@opentelemetry/instrumentation/hook.mjs", import.meta.url);
|
|
78
|
-
|
|
84
|
+
// OpenTelemetry's propagators, with the profile's ask: a profiled request's calls ask the next app the same.
|
|
85
|
+
new NodeTracerProvider({ spanProcessors: [tracepanel.processor] }).register({
|
|
86
|
+
propagator: profilePropagator((spanId) => tracepanel.processor.askedBy(spanId)),
|
|
87
|
+
});
|
|
79
88
|
const bun = process.versions.bun !== undefined;
|
|
80
89
|
const instrumentations = [
|
|
81
90
|
new ExpressInstrumentation(),
|
|
@@ -89,14 +98,20 @@ export function start(options = {}) {
|
|
|
89
98
|
new IORedisInstrumentation(),
|
|
90
99
|
new RedisInstrumentation(),
|
|
91
100
|
// The command with its values: Tracepanel keeps their shape and a hash, which tells duplicates from an N+1.
|
|
92
|
-
new MongoDBInstrumentation({ enhancedDatabaseReporting: true }),
|
|
101
|
+
new MongoDBInstrumentation({ enhancedDatabaseReporting: true, dbStatementSerializer: mongoStatement }),
|
|
93
102
|
new PrismaInstrumentation(),
|
|
94
103
|
// BEGIN … COMMIT on a connection as a transaction span: after pg's and mysql2's, so its statements are inside.
|
|
95
104
|
new TransactionsInstrumentation(),
|
|
105
|
+
// SQLite: better-sqlite3, node:sqlite and libsql, their transactions too.
|
|
106
|
+
new SqliteInstrumentation(),
|
|
96
107
|
// Its jobs' task events too, for the console's Live list.
|
|
97
108
|
new BullMQInstrumentation(tracepanel.processor),
|
|
98
109
|
// The databases the app queries, for the console's EXPLAIN.
|
|
99
110
|
new DatabasesInstrumentation(),
|
|
111
|
+
// The AWS SDK's clients: each command a call to AWS (S3 a storage call, DynamoDB a datastore's).
|
|
112
|
+
awsInstrumentation(),
|
|
113
|
+
// OpenAI's and Anthropic's clients: each call to a model an LLM call.
|
|
114
|
+
new LlmInstrumentation(),
|
|
100
115
|
// fetch(): Node's own, through undici (Bun's: traceBunCalls() below).
|
|
101
116
|
...(bun ? [] : [new UndiciInstrumentation()]),
|
|
102
117
|
// Outgoing calls through node:http (axios, got) always; the server's requests unless the framework traces them.
|
|
@@ -106,10 +121,11 @@ export function start(options = {}) {
|
|
|
106
121
|
// A CORS preflight (the browser asking before a call with a traceparent) is the browser's, not the app's work.
|
|
107
122
|
ignoreIncomingRequestHook: (request) => options.httpServer === false ||
|
|
108
123
|
(request.method === "OPTIONS" && request.headers["access-control-request-method"] !== undefined),
|
|
109
|
-
//
|
|
110
|
-
startIncomingSpanHook: (request) =>
|
|
111
|
-
?
|
|
112
|
-
: {}
|
|
124
|
+
// What a request asks to be profiled for says so on its span, as it starts.
|
|
125
|
+
startIncomingSpanHook: (request) => {
|
|
126
|
+
const asked = tracepanel.config.profileEnabled && "headers" in request ? requested(request.headers) : undefined;
|
|
127
|
+
return asked ? { [PROFILE]: asked } : {};
|
|
128
|
+
},
|
|
113
129
|
}),
|
|
114
130
|
];
|
|
115
131
|
registerInstrumentations({ instrumentations });
|
|
@@ -119,6 +135,11 @@ export function start(options = {}) {
|
|
|
119
135
|
traceBunCalls();
|
|
120
136
|
else
|
|
121
137
|
traceFetch(tracepanel.config.root);
|
|
138
|
+
// Calls to a model's API through fetch() (the AI SDK's providers): around the call's own span.
|
|
139
|
+
traceLlmFetch();
|
|
140
|
+
// Bun's stacks have no async frames: an ORM's query takes the app's line as the app calls the ORM.
|
|
141
|
+
if (bun)
|
|
142
|
+
traceBunQueries(tracepanel.config.root);
|
|
122
143
|
captureConsole(tracepanel.processor);
|
|
123
144
|
return tracepanel;
|
|
124
145
|
}
|
package/dist/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/sql.d.ts
CHANGED
package/dist/sql.js
CHANGED
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
// queries) by: the same rules in every Tracepanel SDK.
|
|
3
3
|
const WHITESPACE = /\s+/g;
|
|
4
4
|
const IN_LIST = /\bIN \((?:%s|\?|\$\d+)(?:, ?(?:%s|\?|\$\d+))*\)/gi;
|
|
5
|
-
|
|
5
|
+
// One part of a table's name, bare or quoted: "standard SQL", `MySQL`, [SQL Server].
|
|
6
|
+
const PART = String.raw `(?:"[^"]+"|\`[^\`]+\`|\[[^\]]+\]|[\w$]+)`;
|
|
7
|
+
// The table a statement reads or writes, with its schema (Prisma's "public"."category", MySQL's `shop`.`book`).
|
|
8
|
+
const TABLE = new RegExp(String.raw `\b(?:FROM|INTO|UPDATE|JOIN)\s+(${PART}(?:\s*\.\s*${PART})*)`, "i");
|
|
9
|
+
const PARTS = new RegExp(PART, "g");
|
|
6
10
|
const COUNT = /^\s*SELECT\s+COUNT\(/i;
|
|
7
11
|
export function statement(sql) {
|
|
8
12
|
return sql.replace(WHITESPACE, " ").trim();
|
|
@@ -10,9 +14,14 @@ export function statement(sql) {
|
|
|
10
14
|
export function fingerprint(sql) {
|
|
11
15
|
return statement(sql).replace(IN_LIST, "IN (...)");
|
|
12
16
|
}
|
|
17
|
+
/** `SELECT category`: the verb and the table, its schema and quotes left out. */
|
|
13
18
|
export function spanName(sql) {
|
|
14
19
|
const verb = COUNT.test(sql) ? "SELECT COUNT" : (sql.trim().split(/\s+/)[0] ?? "SQL").toUpperCase() || "SQL";
|
|
15
|
-
const
|
|
20
|
+
const name = TABLE.exec(sql)?.[1];
|
|
21
|
+
const table = name
|
|
22
|
+
?.match(PARTS)
|
|
23
|
+
?.at(-1)
|
|
24
|
+
?.replace(/^["`[]|["`\]]$/g, "");
|
|
16
25
|
return table ? `${verb} ${table}` : verb;
|
|
17
26
|
}
|
|
18
27
|
//# sourceMappingURL=sql.js.map
|
package/dist/sql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAAA,iHAAiH;AACjH,uDAAuD;AAEvD,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,OAAO,GAAG,mDAAmD,CAAC;AACpE,MAAM,KAAK,GAAG
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAAA,iHAAiH;AACjH,uDAAuD;AAEvD,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,OAAO,GAAG,mDAAmD,CAAC;AACpE,qFAAqF;AACrF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA,0CAA0C,CAAC;AAClE,gHAAgH;AAChH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,kCAAkC,IAAI,cAAc,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;AACvG,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,MAAM,KAAK,GAAG,uBAAuB,CAAC;AAEtC,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACrD,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC;IAC7G,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI;QAChB,EAAE,KAAK,CAAC,KAAK,CAAC;QACd,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACR,EAAE,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC"}
|
package/dist/sqlite.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { InstrumentationBase, InstrumentationNodeModuleDefinition } from "@opentelemetry/instrumentation";
|
|
2
|
+
type Any = any;
|
|
3
|
+
/** Patches better-sqlite3's Database class: its statements, exec and db.transaction(). */
|
|
4
|
+
export declare function traceBetterSqlite3(Database: Any): void;
|
|
5
|
+
/** Patches libsql's Database class (better-sqlite3's API; its transactions run BEGIN and COMMIT through exec). */
|
|
6
|
+
export declare function traceLibsql(Database: Any): void;
|
|
7
|
+
/** Patches node:sqlite's classes: Database and Statement (DatabaseSync and StatementSync before Node 25.7). */
|
|
8
|
+
export declare function traceNodeSqlite(exports: Any): Any;
|
|
9
|
+
export declare class SqliteInstrumentation extends InstrumentationBase {
|
|
10
|
+
constructor();
|
|
11
|
+
protected init(): InstrumentationNodeModuleDefinition[];
|
|
12
|
+
}
|
|
13
|
+
export {};
|
package/dist/sqlite.js
ADDED
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
// SQLite's statements as steps, as the Python SDK records sqlite3's: better-sqlite3, Node's own node:sqlite and libsql
|
|
2
|
+
// (better-sqlite3's API). They run synchronously, in the app's call: a statement's span is the call, made where the
|
|
3
|
+
// app's line is on the stack. Each one keeps its SQL and the values it was run with (their hash tells a duplicate
|
|
4
|
+
// from an N+1), the database file's name, and the rows a read returned.
|
|
5
|
+
//
|
|
6
|
+
// The database each one ran on is remembered for the console's EXPLAIN QUERY PLAN, which runs on that same
|
|
7
|
+
// connection: it only plans, so it changes nothing, and an in-memory database can be explained too (explain.ts).
|
|
8
|
+
// better-sqlite3's db.transaction() is a transaction span (a savepoint inside another), as BEGIN … COMMIT is on any
|
|
9
|
+
// of them (transactions.ts).
|
|
10
|
+
import { basename } from "node:path";
|
|
11
|
+
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
12
|
+
import { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile, } from "@opentelemetry/instrumentation";
|
|
13
|
+
import { rememberSqlite } from "./explain.js";
|
|
14
|
+
import { commonJs, statementIn, within } from "./transactions.js";
|
|
15
|
+
const PREPARED = new WeakMap();
|
|
16
|
+
/** A statement runs: the driver's own calls inside it (libsql's all() iterates) are part of it. */
|
|
17
|
+
let running = false;
|
|
18
|
+
const MARK = Symbol.for("tracepanel.sqlite");
|
|
19
|
+
const tracer = trace.getTracer("tracepanel-sqlite");
|
|
20
|
+
/** The methods that run a prepared statement, and how many rows each one's result is. */
|
|
21
|
+
const RUNS = {
|
|
22
|
+
run: null,
|
|
23
|
+
get: (row) => (row === undefined ? 0 : 1),
|
|
24
|
+
all: (rows) => (Array.isArray(rows) ? rows.length : 0),
|
|
25
|
+
// Rows as the app reads them: counted as they come, the span ends with the last.
|
|
26
|
+
iterate: null,
|
|
27
|
+
};
|
|
28
|
+
const BETTER_SQLITE3 = { client: "better-sqlite3", system: "sqlite" };
|
|
29
|
+
const NODE_SQLITE = { client: "node:sqlite", system: "sqlite" };
|
|
30
|
+
const LIBSQL = { client: "libsql", system: "sqlite" };
|
|
31
|
+
/** The database's file, as the span names it: its name only; none for one in memory. */
|
|
32
|
+
function fileOf(db, driver) {
|
|
33
|
+
try {
|
|
34
|
+
let path;
|
|
35
|
+
if (driver === NODE_SQLITE)
|
|
36
|
+
path = typeof db.location === "function" ? db.location() : null;
|
|
37
|
+
else
|
|
38
|
+
path = db.memory ? null : db.name;
|
|
39
|
+
return typeof path === "string" && path !== "" && path !== ":memory:" ? basename(path) : null;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** A value as JSON keeps it, to be bound again for EXPLAIN: a bigint as a number or text, bytes as nothing. */
|
|
46
|
+
function jsonable(value) {
|
|
47
|
+
if (typeof value === "bigint")
|
|
48
|
+
return Number.isSafeInteger(Number(value)) ? Number(value) : String(value);
|
|
49
|
+
if (value instanceof Uint8Array || value instanceof ArrayBuffer || value instanceof DataView)
|
|
50
|
+
return null;
|
|
51
|
+
if (Array.isArray(value))
|
|
52
|
+
return value.map(jsonable);
|
|
53
|
+
if (value && typeof value === "object") {
|
|
54
|
+
return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, jsonable(item)]));
|
|
55
|
+
}
|
|
56
|
+
return value === undefined ? null : value;
|
|
57
|
+
}
|
|
58
|
+
/** A statement's span, under the app's current one; none outside a trace. */
|
|
59
|
+
function startSpan(sql, prepared, params) {
|
|
60
|
+
if (!trace.getActiveSpan())
|
|
61
|
+
return undefined;
|
|
62
|
+
const file = fileOf(prepared.db, prepared.driver);
|
|
63
|
+
try {
|
|
64
|
+
rememberSqlite(prepared.db, file);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// EXPLAIN is a convenience.
|
|
68
|
+
}
|
|
69
|
+
let values;
|
|
70
|
+
try {
|
|
71
|
+
values = params ? JSON.stringify(jsonable(params)) : undefined;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
values = undefined;
|
|
75
|
+
}
|
|
76
|
+
return tracer.startSpan("sqlite", {
|
|
77
|
+
kind: SpanKind.CLIENT,
|
|
78
|
+
attributes: {
|
|
79
|
+
"db.system.name": "sqlite",
|
|
80
|
+
"db.query.text": sql,
|
|
81
|
+
"tracepanel.db.client": prepared.driver.client,
|
|
82
|
+
...(values !== undefined ? { "tracepanel.db.params": values } : {}),
|
|
83
|
+
...(file ? { "db.namespace": file } : {}),
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function failed(span, error) {
|
|
88
|
+
if (!span)
|
|
89
|
+
return;
|
|
90
|
+
span.recordException(error instanceof Error ? error : String(error));
|
|
91
|
+
span.setStatus({ code: SpanStatusCode.ERROR, message: error instanceof Error ? error.message : String(error) });
|
|
92
|
+
span.end();
|
|
93
|
+
}
|
|
94
|
+
/** Runs a statement in its span; BEGIN, COMMIT and the like open and close the connection's transaction span. */
|
|
95
|
+
function traced(sql, prepared, params, call, rows) {
|
|
96
|
+
if (!trace.getActiveSpan())
|
|
97
|
+
return call();
|
|
98
|
+
return statementIn(prepared.db, prepared.driver, sql, () => {
|
|
99
|
+
const span = startSpan(sql, prepared, params);
|
|
100
|
+
let result;
|
|
101
|
+
running = true;
|
|
102
|
+
try {
|
|
103
|
+
result = call();
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
failed(span, error);
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
running = false;
|
|
111
|
+
}
|
|
112
|
+
if (span && rows)
|
|
113
|
+
span.setAttribute("db.response.returned_rows", rows(result));
|
|
114
|
+
span?.end();
|
|
115
|
+
return result;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/** An iterator's rows, counted as the app reads them: the span ends with the last, or when the app stops. */
|
|
119
|
+
function counted(span, iterator) {
|
|
120
|
+
if (!span || !iterator || typeof iterator.next !== "function") {
|
|
121
|
+
span?.end();
|
|
122
|
+
return iterator;
|
|
123
|
+
}
|
|
124
|
+
let count = 0;
|
|
125
|
+
let open = true;
|
|
126
|
+
const done = () => {
|
|
127
|
+
if (!open)
|
|
128
|
+
return;
|
|
129
|
+
open = false;
|
|
130
|
+
span.setAttribute("db.response.returned_rows", count);
|
|
131
|
+
span.end();
|
|
132
|
+
};
|
|
133
|
+
const next = iterator.next.bind(iterator);
|
|
134
|
+
const stop = typeof iterator.return === "function" ? iterator.return.bind(iterator) : undefined;
|
|
135
|
+
iterator.next = (...args) => {
|
|
136
|
+
try {
|
|
137
|
+
const step = next(...args);
|
|
138
|
+
if (step?.done)
|
|
139
|
+
done();
|
|
140
|
+
else
|
|
141
|
+
count += 1;
|
|
142
|
+
return step;
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
if (open) {
|
|
146
|
+
open = false;
|
|
147
|
+
failed(span, error);
|
|
148
|
+
}
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
iterator.return = (...args) => {
|
|
153
|
+
done();
|
|
154
|
+
return stop ? stop(...args) : { done: true, value: undefined };
|
|
155
|
+
};
|
|
156
|
+
return iterator;
|
|
157
|
+
}
|
|
158
|
+
/** Wraps run, get, all and iterate on a statement class, once. */
|
|
159
|
+
function wrapStatements(proto) {
|
|
160
|
+
if (!proto || proto[MARK])
|
|
161
|
+
return;
|
|
162
|
+
Object.defineProperty(proto, MARK, { value: true });
|
|
163
|
+
for (const [method, rows] of Object.entries(RUNS)) {
|
|
164
|
+
const original = proto[method];
|
|
165
|
+
if (typeof original !== "function")
|
|
166
|
+
continue;
|
|
167
|
+
proto[method] = function (...params) {
|
|
168
|
+
const prepared = PREPARED.get(this);
|
|
169
|
+
if (!prepared || running || !trace.getActiveSpan())
|
|
170
|
+
return original.apply(this, params);
|
|
171
|
+
if (method !== "iterate")
|
|
172
|
+
return traced(prepared.sql, prepared, params, () => original.apply(this, params), rows);
|
|
173
|
+
return statementIn(prepared.db, prepared.driver, prepared.sql, () => {
|
|
174
|
+
const span = startSpan(prepared.sql, prepared, params);
|
|
175
|
+
try {
|
|
176
|
+
return counted(span, original.apply(this, params));
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
failed(span, error);
|
|
180
|
+
throw error;
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/** Wraps prepare (each statement remembers its SQL) and exec (a script, run as one step) on a database class. */
|
|
187
|
+
function wrapDatabase(proto, driver) {
|
|
188
|
+
if (!proto || Object.hasOwn(proto, MARK))
|
|
189
|
+
return;
|
|
190
|
+
Object.defineProperty(proto, MARK, { value: true });
|
|
191
|
+
const prepare = proto.prepare;
|
|
192
|
+
if (typeof prepare === "function") {
|
|
193
|
+
proto.prepare = function (...args) {
|
|
194
|
+
const statement = prepare.apply(this, args);
|
|
195
|
+
try {
|
|
196
|
+
if (statement && typeof args[0] === "string") {
|
|
197
|
+
PREPARED.set(statement, { sql: args[0], db: this, driver });
|
|
198
|
+
wrapStatements(Object.getPrototypeOf(statement));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// Never in the way of the app's statement.
|
|
203
|
+
}
|
|
204
|
+
return statement;
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
const exec = proto.exec;
|
|
208
|
+
if (typeof exec === "function") {
|
|
209
|
+
proto.exec = function (...args) {
|
|
210
|
+
const sql = args[0];
|
|
211
|
+
if (typeof sql !== "string")
|
|
212
|
+
return exec.apply(this, args);
|
|
213
|
+
return traced(sql, { db: this, driver }, undefined, () => exec.apply(this, args), null);
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/** better-sqlite3's db.transaction(fn): each of the function's modes runs fn in a transaction span. */
|
|
218
|
+
function wrapTransaction(proto) {
|
|
219
|
+
const transaction = proto?.transaction;
|
|
220
|
+
if (typeof transaction !== "function" || transaction[MARK])
|
|
221
|
+
return;
|
|
222
|
+
const wrapped = function (...args) {
|
|
223
|
+
const made = transaction.apply(this, args);
|
|
224
|
+
const db = this;
|
|
225
|
+
try {
|
|
226
|
+
const modes = ["default", "deferred", "immediate", "exclusive"];
|
|
227
|
+
const traced = Object.fromEntries(modes.map((mode) => {
|
|
228
|
+
const run = made[mode] ?? made;
|
|
229
|
+
return [
|
|
230
|
+
mode,
|
|
231
|
+
function (...params) {
|
|
232
|
+
return within(db, BETTER_SQLITE3, () => run.apply(this, params));
|
|
233
|
+
},
|
|
234
|
+
];
|
|
235
|
+
}));
|
|
236
|
+
const properties = {
|
|
237
|
+
...Object.fromEntries(modes.map((mode) => [mode, { value: traced[mode] }])),
|
|
238
|
+
database: { value: db, enumerable: true },
|
|
239
|
+
};
|
|
240
|
+
for (const mode of modes)
|
|
241
|
+
Object.defineProperties(traced[mode], properties);
|
|
242
|
+
return traced.default;
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
return made;
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
Object.defineProperty(wrapped, MARK, { value: true });
|
|
249
|
+
proto.transaction = wrapped;
|
|
250
|
+
}
|
|
251
|
+
/** Nothing to undo: the wrappers stay, and do nothing once no span is active. */
|
|
252
|
+
const keep = (exports) => exports;
|
|
253
|
+
/** Patches better-sqlite3's Database class: its statements, exec and db.transaction(). */
|
|
254
|
+
export function traceBetterSqlite3(Database) {
|
|
255
|
+
wrapDatabase(Database?.prototype, BETTER_SQLITE3);
|
|
256
|
+
wrapTransaction(Database?.prototype);
|
|
257
|
+
}
|
|
258
|
+
/** Patches libsql's Database class (better-sqlite3's API; its transactions run BEGIN and COMMIT through exec). */
|
|
259
|
+
export function traceLibsql(Database) {
|
|
260
|
+
wrapDatabase(Database?.prototype, LIBSQL);
|
|
261
|
+
}
|
|
262
|
+
/** Patches node:sqlite's classes: Database and Statement (DatabaseSync and StatementSync before Node 25.7). */
|
|
263
|
+
export function traceNodeSqlite(exports) {
|
|
264
|
+
const sqlite = commonJs(exports) ?? exports;
|
|
265
|
+
for (const name of ["Database", "DatabaseSync"])
|
|
266
|
+
wrapDatabase(sqlite?.[name]?.prototype, NODE_SQLITE);
|
|
267
|
+
for (const name of ["Statement", "StatementSync"])
|
|
268
|
+
wrapStatements(sqlite?.[name]?.prototype);
|
|
269
|
+
return exports;
|
|
270
|
+
}
|
|
271
|
+
export class SqliteInstrumentation extends InstrumentationBase {
|
|
272
|
+
constructor() {
|
|
273
|
+
super("tracepanel-sqlite", "1.0.0", {});
|
|
274
|
+
}
|
|
275
|
+
init() {
|
|
276
|
+
return [
|
|
277
|
+
new InstrumentationNodeModuleDefinition("better-sqlite3", [">=9"], keep, keep, [
|
|
278
|
+
new InstrumentationNodeModuleFile("better-sqlite3/lib/database.js", [">=9"], (exports) => {
|
|
279
|
+
traceBetterSqlite3(commonJs(exports));
|
|
280
|
+
return exports;
|
|
281
|
+
}, keep),
|
|
282
|
+
]),
|
|
283
|
+
new InstrumentationNodeModuleDefinition("libsql", [">=0.4"], (exports) => {
|
|
284
|
+
traceLibsql(commonJs(exports));
|
|
285
|
+
return exports;
|
|
286
|
+
}),
|
|
287
|
+
new InstrumentationNodeModuleDefinition("node:sqlite", ["*"], traceNodeSqlite, keep),
|
|
288
|
+
];
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"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"}
|
package/dist/stack.d.ts
CHANGED
|
@@ -22,11 +22,13 @@ export declare function origin(root: string): string | null;
|
|
|
22
22
|
/**
|
|
23
23
|
* Where the call being made now was made. `origin`: `file:line in function` of the innermost frame of the app's own
|
|
24
24
|
* code. Without one, `caller`: the library code that asked for it, the first frame past the driver, its ORM and
|
|
25
|
-
* Tracepanel (`connect-pg-simple/index.js:… in PGStore.get`), as the Python SDK's code.caller names it.
|
|
25
|
+
* Tracepanel (`connect-pg-simple/index.js:… in PGStore.get`), as the Python SDK's code.caller names it. `orm`: the ORM
|
|
26
|
+
* the call went through (`prisma`, `drizzle`), its innermost frame's, or null for a driver called directly.
|
|
26
27
|
*/
|
|
27
28
|
export declare function madeAt(root: string): {
|
|
28
29
|
origin: string | null;
|
|
29
30
|
caller: string | null;
|
|
31
|
+
orm: string | null;
|
|
30
32
|
};
|
|
31
33
|
/**
|
|
32
34
|
* An error's frames, outermost first as the console shows every SDK's, with the source of the app's own. `locals`:
|
package/dist/stack.js
CHANGED
|
@@ -7,11 +7,13 @@ import { fileURLToPath } from "node:url";
|
|
|
7
7
|
const CONTEXT_LINES = 5;
|
|
8
8
|
// " at fn (file:line:col)", " at file:line:col", " at async fn (file:line:col)".
|
|
9
9
|
const FRAME = /^\s*at (?:async )?(?:(.+?) \()?(.+?):(\d+):(\d+)\)?$/;
|
|
10
|
-
// This package's own files are never the app's
|
|
10
|
+
// This package's own files are never the app's: its build, and its sources, where a runtime maps the build's frames
|
|
11
|
+
// back through its source maps (Bun does).
|
|
11
12
|
const OWN = fileURLToPath(new URL(".", import.meta.url));
|
|
13
|
+
const OWN_SOURCES = resolve(OWN, "..", "src") + sep;
|
|
12
14
|
/** Whether a file is this package's own. */
|
|
13
15
|
export function ownFile(file) {
|
|
14
|
-
return file.startsWith(OWN);
|
|
16
|
+
return file.startsWith(OWN) || file.startsWith(OWN_SOURCES);
|
|
15
17
|
}
|
|
16
18
|
/**
|
|
17
19
|
* The frames of a V8 stack, innermost first. `mapped`: a bundle's frames as the app's sources, through its source
|
|
@@ -126,7 +128,7 @@ export function inApp(file, root) {
|
|
|
126
128
|
return (file.startsWith(root + sep) &&
|
|
127
129
|
!file.includes(`${sep}node_modules${sep}`) &&
|
|
128
130
|
!BUNDLES.some((dir) => file.startsWith(root + dir)) &&
|
|
129
|
-
!file
|
|
131
|
+
!ownFile(file) &&
|
|
130
132
|
!file.startsWith("node:"));
|
|
131
133
|
}
|
|
132
134
|
// How deep origin() looks: a driver's span starts under a dozen frames of its own, the instrumentation's and
|
|
@@ -155,6 +157,7 @@ const CALL_LAYERS = new Set([
|
|
|
155
157
|
"@prisma",
|
|
156
158
|
"@mikro-orm",
|
|
157
159
|
"@redis",
|
|
160
|
+
"@sequelize",
|
|
158
161
|
"@tracepanel",
|
|
159
162
|
"drizzle-orm",
|
|
160
163
|
"generic-pool",
|
|
@@ -180,6 +183,17 @@ const CALL_LAYERS = new Set([
|
|
|
180
183
|
"tslib",
|
|
181
184
|
"typeorm",
|
|
182
185
|
]);
|
|
186
|
+
// The ORMs and query builders a query goes through, by their package: what db.client names, as the Python SDK names
|
|
187
|
+
// Django's and SQLAlchemy's. The agent's N+1 hint is the ORM's own way to load the related rows.
|
|
188
|
+
const ORMS = {
|
|
189
|
+
"@prisma": "prisma",
|
|
190
|
+
"@sequelize": "sequelize",
|
|
191
|
+
"drizzle-orm": "drizzle",
|
|
192
|
+
knex: "knex",
|
|
193
|
+
mongoose: "mongoose",
|
|
194
|
+
sequelize: "sequelize",
|
|
195
|
+
typeorm: "typeorm",
|
|
196
|
+
};
|
|
183
197
|
/** The installed package a file is in (pg, @prisma/client's scope @prisma), or null for a file in none. */
|
|
184
198
|
function packageOf(file) {
|
|
185
199
|
const at = file.lastIndexOf(`${sep}node_modules${sep}`);
|
|
@@ -200,19 +214,29 @@ function asks(file, root) {
|
|
|
200
214
|
/**
|
|
201
215
|
* Where the call being made now was made. `origin`: `file:line in function` of the innermost frame of the app's own
|
|
202
216
|
* code. Without one, `caller`: the library code that asked for it, the first frame past the driver, its ORM and
|
|
203
|
-
* Tracepanel (`connect-pg-simple/index.js:… in PGStore.get`), as the Python SDK's code.caller names it.
|
|
217
|
+
* Tracepanel (`connect-pg-simple/index.js:… in PGStore.get`), as the Python SDK's code.caller names it. `orm`: the ORM
|
|
218
|
+
* the call went through (`prisma`, `drizzle`), its innermost frame's, or null for a driver called directly.
|
|
204
219
|
*/
|
|
205
220
|
export function madeAt(root) {
|
|
206
221
|
const stack = parseStack(deepStack());
|
|
222
|
+
const ormFrame = stack.find((frame) => ormOf(frame.file) !== null);
|
|
223
|
+
const orm = ormFrame ? ormOf(ormFrame.file) : null;
|
|
207
224
|
const own = stack.find((frame) => inApp(frame.file, root));
|
|
208
|
-
if (own)
|
|
209
|
-
return { origin: `${relative(root, own.file)}:${own.line} in ${shortName(own.function)}`, caller: null };
|
|
225
|
+
if (own) {
|
|
226
|
+
return { origin: `${relative(root, own.file)}:${own.line} in ${shortName(own.function)}`, caller: null, orm };
|
|
227
|
+
}
|
|
210
228
|
const asked = stack.find((frame) => asks(frame.file, root));
|
|
211
229
|
return {
|
|
212
230
|
origin: null,
|
|
213
231
|
caller: asked ? `${libraryPath(asked.file)}:${asked.line} in ${shortName(asked.function)}` : null,
|
|
232
|
+
orm,
|
|
214
233
|
};
|
|
215
234
|
}
|
|
235
|
+
/** The ORM whose package a file is in, as db.client names it, or null. */
|
|
236
|
+
function ormOf(file) {
|
|
237
|
+
const name = packageOf(file);
|
|
238
|
+
return name !== null && Object.hasOwn(ORMS, name) ? (ORMS[name] ?? null) : null;
|
|
239
|
+
}
|
|
216
240
|
function shortName(fn) {
|
|
217
241
|
return fn.replace(/^Object\.|^Module\./, "");
|
|
218
242
|
}
|
package/dist/stack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../src/stack.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../src/stack.ts"],"names":[],"mappings":"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"}
|