@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/bun.js
CHANGED
|
@@ -12,9 +12,8 @@
|
|
|
12
12
|
import { propagation, ROOT_CONTEXT, SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
13
13
|
import { tapRequest } from "./body.js";
|
|
14
14
|
import { ATTRIBUTE as PROFILE, requested } from "./profile.js";
|
|
15
|
-
import {
|
|
15
|
+
import { MARKED, marked } from "./respond.js";
|
|
16
16
|
import { start } from "./setup.js";
|
|
17
|
-
import { exposedHeaders, inject, Stream, streamablePage } from "./widget.js";
|
|
18
17
|
const tracer = trace.getTracer("tracepanel-bun");
|
|
19
18
|
/** What Bun answers an error with when the app has no `error` handler of its own. */
|
|
20
19
|
function internalError(error) {
|
|
@@ -32,12 +31,13 @@ export function withTracepanel(handler, route, onError) {
|
|
|
32
31
|
return handler;
|
|
33
32
|
const traced = (request, server) => {
|
|
34
33
|
const url = new URL(request.url);
|
|
34
|
+
const asked = requested(Object.fromEntries(request.headers));
|
|
35
35
|
const attributes = {
|
|
36
36
|
"http.request.method": request.method,
|
|
37
37
|
"url.path": url.pathname,
|
|
38
38
|
"http.target": url.pathname + url.search,
|
|
39
39
|
...(route ? { "http.route": route } : {}),
|
|
40
|
-
...(
|
|
40
|
+
...(asked ? { [PROFILE]: asked } : {}),
|
|
41
41
|
};
|
|
42
42
|
const startedMs = performance.now();
|
|
43
43
|
// The caller's traceparent, as Node's http instrumentation reads it: the agent links the caller's trace to this.
|
|
@@ -47,6 +47,8 @@ export function withTracepanel(handler, route, onError) {
|
|
|
47
47
|
});
|
|
48
48
|
const options = { kind: SpanKind.SERVER, attributes };
|
|
49
49
|
const body = tracepanel.config.captureRequest ? tapRequest(request) : undefined;
|
|
50
|
+
// Its response is marked here: Hono's middleware under this leaves it.
|
|
51
|
+
request[MARKED] = true;
|
|
50
52
|
return tracer.startActiveSpan(`${request.method}`, options, caller, async (span) => {
|
|
51
53
|
tracepanel.processor.setFramework("Bun.serve");
|
|
52
54
|
// A page streamed through the widget's script: its request ends with the body.
|
|
@@ -64,7 +66,7 @@ export function withTracepanel(handler, route, onError) {
|
|
|
64
66
|
span.setAttribute("http.response.status_code", response.status);
|
|
65
67
|
if (response.status >= 500)
|
|
66
68
|
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
67
|
-
const answer = await marked(tracepanel, request, response, startedMs, body);
|
|
69
|
+
const answer = await marked(tracepanel, request, response, startedMs, "Bun.serve", body);
|
|
68
70
|
streamed = answer.ended;
|
|
69
71
|
return answer.response;
|
|
70
72
|
}
|
|
@@ -78,84 +80,6 @@ export function withTracepanel(handler, route, onError) {
|
|
|
78
80
|
};
|
|
79
81
|
return traced;
|
|
80
82
|
}
|
|
81
|
-
/**
|
|
82
|
-
* The trace's headers on the response, and the widget in an HTML page: put into its body as it streams when its size
|
|
83
|
-
* isn't declared, with `ended` settled once that body has gone out.
|
|
84
|
-
*/
|
|
85
|
-
async function marked(tracepanel, request, response, startedMs, body) {
|
|
86
|
-
if (tracepanel.config.captureRequest) {
|
|
87
|
-
tracepanel.processor.setTraceAttrs({
|
|
88
|
-
...requestAttrs(Object.fromEntries(request.headers), new URL(request.url).search),
|
|
89
|
-
...body?.attrs(),
|
|
90
|
-
...responseHeaders(response.headers.entries()),
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
const html = (response.headers.get("content-type") ?? "").includes("text/html");
|
|
94
|
-
const page = html && !response.headers.has("content-encoding");
|
|
95
|
-
const marks = tracepanel.badge({
|
|
96
|
-
method: request.method,
|
|
97
|
-
status: response.status,
|
|
98
|
-
startedMs,
|
|
99
|
-
page,
|
|
100
|
-
framework: tracepanel.processor.framework() ?? "Bun.serve",
|
|
101
|
-
});
|
|
102
|
-
if (!marks)
|
|
103
|
-
return { response };
|
|
104
|
-
const headers = new Headers(response.headers);
|
|
105
|
-
for (const [name, value] of Object.entries(marks.headers))
|
|
106
|
-
headers.set(name, value);
|
|
107
|
-
const redirect = redirectCookie(marks.headers["Tracepanel-Id"] ?? "", response.status, Object.fromEntries(request.headers));
|
|
108
|
-
if (redirect)
|
|
109
|
-
headers.append("Set-Cookie", redirect);
|
|
110
|
-
const expose = exposedHeaders(headers.get("access-control-allow-origin") ?? undefined, headers.get("access-control-expose-headers"));
|
|
111
|
-
if (expose)
|
|
112
|
-
headers.set("Access-Control-Expose-Headers", expose);
|
|
113
|
-
const init = { status: response.status, statusText: response.statusText, headers };
|
|
114
|
-
if (!marks.script || !response.body)
|
|
115
|
-
return { response: new Response(response.body, init) };
|
|
116
|
-
if (streamablePage((name) => headers.get(name))) {
|
|
117
|
-
let ended = () => { };
|
|
118
|
-
const done = new Promise((resolve) => (ended = resolve));
|
|
119
|
-
return { response: new Response(through(response.body, new Stream(marks.script), ended), init), ended: done };
|
|
120
|
-
}
|
|
121
|
-
headers.delete("content-length");
|
|
122
|
-
return { response: new Response(inject(await response.text(), marks.script), init) };
|
|
123
|
-
}
|
|
124
|
-
/** A body through the widget's script, piece by piece as the client reads it; `ended` once it is over. */
|
|
125
|
-
function through(body, script, ended) {
|
|
126
|
-
const reader = body.getReader();
|
|
127
|
-
return new ReadableStream({
|
|
128
|
-
async pull(controller) {
|
|
129
|
-
try {
|
|
130
|
-
// Until something goes out: a pull that enqueues nothing is not called again.
|
|
131
|
-
for (;;) {
|
|
132
|
-
const { done, value } = await reader.read();
|
|
133
|
-
if (done) {
|
|
134
|
-
const rest = script.end();
|
|
135
|
-
if (rest.length > 0)
|
|
136
|
-
controller.enqueue(rest);
|
|
137
|
-
controller.close();
|
|
138
|
-
ended();
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
const piece = script.feed(value);
|
|
142
|
-
if (piece.length > 0) {
|
|
143
|
-
controller.enqueue(piece);
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
catch (error) {
|
|
149
|
-
controller.error(error);
|
|
150
|
-
ended();
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
async cancel(reason) {
|
|
154
|
-
ended();
|
|
155
|
-
await reader.cancel(reason);
|
|
156
|
-
},
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
83
|
/** Bun.serve's routes, each handler traced under its pattern: `/api/books/:id`. */
|
|
160
84
|
function tracedRoutes(routes, onError) {
|
|
161
85
|
const traced = {};
|
package/dist/bun.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bun.js","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"AAAA,oHAAoH;AACpH,uGAAuG;AACvG,EAAE;AACF,gDAAgD;AAChD,gFAAgF;AAChF,EAAE;AACF,qHAAqH;AACrH,EAAE;AACF,sHAAsH;AACtH,mHAAmH;AACnH,wDAAwD;AAExD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,
|
|
1
|
+
{"version":3,"file":"bun.js","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"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"}
|
package/dist/calls.d.ts
CHANGED
|
@@ -12,6 +12,11 @@ export declare function redisCall(attrs: Attrs, spanName: string): {
|
|
|
12
12
|
name: string;
|
|
13
13
|
attrs: Attrs;
|
|
14
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* A MongoDB command as its span's statement: JSON, with the Maps the driver makes of what the app wrote as objects
|
|
17
|
+
* (a find's sort, `{ asked: -1 }`, is a Map by then: JSON.stringify alone makes it `{}`).
|
|
18
|
+
*/
|
|
19
|
+
export declare function mongoStatement(command: unknown): string;
|
|
15
20
|
export declare function isMongo(attrs: Attrs): boolean;
|
|
16
21
|
/** A MongoDB command: `find users`, its shape with the values as "?", and a hash of the values (duplicates). */
|
|
17
22
|
export declare function mongoCall(attrs: Attrs, spanName: string): {
|
package/dist/calls.js
CHANGED
|
@@ -80,6 +80,13 @@ export function redisCall(attrs, spanName) {
|
|
|
80
80
|
},
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* A MongoDB command as its span's statement: JSON, with the Maps the driver makes of what the app wrote as objects
|
|
85
|
+
* (a find's sort, `{ asked: -1 }`, is a Map by then: JSON.stringify alone makes it `{}`).
|
|
86
|
+
*/
|
|
87
|
+
export function mongoStatement(command) {
|
|
88
|
+
return JSON.stringify(command, (_key, value) => (value instanceof Map ? Object.fromEntries(value) : value));
|
|
89
|
+
}
|
|
83
90
|
export function isMongo(attrs) {
|
|
84
91
|
return first(attrs, "db.system.name", "db.system") === "mongodb";
|
|
85
92
|
}
|
package/dist/calls.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calls.js","sourceRoot":"","sources":["../src/calls.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"calls.js","sourceRoot":"","sources":["../src/calls.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -26,6 +26,13 @@ export interface Config {
|
|
|
26
26
|
* way.
|
|
27
27
|
*/
|
|
28
28
|
profile: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Tell every profiled trace's memory too (V8's sampling heap profiler), not only a request's that asks with
|
|
31
|
+
* "memory" in the header or cookie: TRACEPANEL_PROFILE_MEMORY=1.
|
|
32
|
+
*/
|
|
33
|
+
profileMemory: boolean;
|
|
34
|
+
/** Put widget.min.js into the app's HTML pages: TRACEPANEL_WIDGET=0 leaves them as they are (the tests' pages). */
|
|
35
|
+
widget: boolean;
|
|
29
36
|
/** Whether profiling is possible at all: TRACEPANEL_PROFILE_ENABLED=0, and nothing profiles. */
|
|
30
37
|
profileEnabled: boolean;
|
|
31
38
|
/** How often a profiled trace is sampled: TRACEPANEL_PROFILE_INTERVAL_MS, each millisecond by default. */
|
package/dist/config.js
CHANGED
|
@@ -53,7 +53,9 @@ export function loadConfig(env = process.env) {
|
|
|
53
53
|
thresholds: thresholds(env),
|
|
54
54
|
captureRequest: on(env.TRACEPANEL_CAPTURE_REQUEST),
|
|
55
55
|
captureLocals: on(env.TRACEPANEL_CAPTURE_LOCALS),
|
|
56
|
+
widget: on(env.TRACEPANEL_WIDGET),
|
|
56
57
|
profile: onlyIf(env.TRACEPANEL_PROFILE),
|
|
58
|
+
profileMemory: onlyIf(env.TRACEPANEL_PROFILE_MEMORY),
|
|
57
59
|
profileEnabled: on(env.TRACEPANEL_PROFILE_ENABLED),
|
|
58
60
|
profileIntervalMs: Math.max(Math.floor(Number(env.TRACEPANEL_PROFILE_INTERVAL_MS)) || 1, 1),
|
|
59
61
|
};
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/explain.d.ts
CHANGED
|
@@ -12,6 +12,11 @@ export interface ExplainAnswer {
|
|
|
12
12
|
columns: string[];
|
|
13
13
|
rows: unknown[][];
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* A SQLite connection that queried (better-sqlite3's, node:sqlite's, libsql's), by its file's name (`file`, none in
|
|
17
|
+
* memory). Held weakly: a connection the app lets go of is gone for EXPLAIN too.
|
|
18
|
+
*/
|
|
19
|
+
export declare function rememberSqlite(db: object, file: string | null): void;
|
|
15
20
|
export declare function explain(request: ExplainRequest): Promise<ExplainAnswer>;
|
|
16
21
|
/** Records pg's and mysql2's connections as they query: where they are, and their settings. */
|
|
17
22
|
export declare class DatabasesInstrumentation extends InstrumentationBase {
|
package/dist/explain.js
CHANGED
|
@@ -3,22 +3,69 @@
|
|
|
3
3
|
//
|
|
4
4
|
// The app's databases are the ones its queries ran on: each pg or mysql2 connection that queries is remembered by
|
|
5
5
|
// its settings (the password among them), and EXPLAIN opens one of its own with them, so it never runs inside the
|
|
6
|
-
// app's transaction. Whatever EXPLAIN ANALYZE does is rolled back.
|
|
6
|
+
// app's transaction. Whatever EXPLAIN ANALYZE does is rolled back. A SQLite database (sqlite.ts) is explained on the
|
|
7
|
+
// app's own connection, the last one that queried that file: EXPLAIN QUERY PLAN only plans, and the connection is
|
|
8
|
+
// the app's thread's, between its statements.
|
|
7
9
|
import { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile, } from "@opentelemetry/instrumentation";
|
|
8
10
|
import { commonJs } from "./transactions.js";
|
|
9
11
|
const DATABASES = new Map();
|
|
10
|
-
|
|
12
|
+
/** The first connection to a database is remembered; a SQLite one's last, as the app may have closed the others. */
|
|
13
|
+
function remember(database, latest = false) {
|
|
11
14
|
const key = `${database.vendor} ${database.server}:${database.port}/${database.database}`;
|
|
12
|
-
if (!DATABASES.has(key))
|
|
15
|
+
if (latest || !DATABASES.has(key))
|
|
13
16
|
DATABASES.set(key, database);
|
|
14
17
|
}
|
|
15
|
-
|
|
18
|
+
// biome-ignore lint/suspicious/noExplicitAny: the drivers' own types are the app's, not this package's.
|
|
19
|
+
const SQLITE = new WeakMap();
|
|
20
|
+
/**
|
|
21
|
+
* A SQLite connection that queried (better-sqlite3's, node:sqlite's, libsql's), by its file's name (`file`, none in
|
|
22
|
+
* memory). Held weakly: a connection the app lets go of is gone for EXPLAIN too.
|
|
23
|
+
*/
|
|
24
|
+
export function rememberSqlite(db, file) {
|
|
25
|
+
const known = SQLITE.get(db);
|
|
26
|
+
if (known) {
|
|
27
|
+
if (DATABASES.get(`sqlite :0/${file ?? ""}`) !== known)
|
|
28
|
+
remember(known, true);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const connection = new WeakRef(db);
|
|
32
|
+
const database = {
|
|
33
|
+
vendor: "sqlite",
|
|
34
|
+
server: "",
|
|
35
|
+
port: 0,
|
|
36
|
+
database: file ?? "",
|
|
37
|
+
inPlace: true,
|
|
38
|
+
async open() {
|
|
39
|
+
// biome-ignore lint/suspicious/noExplicitAny: the driver's own type.
|
|
40
|
+
const db = connection.deref();
|
|
41
|
+
if (!db || db.open === false || db.isOpen === false)
|
|
42
|
+
throw new Error("The app's SQLite connection is closed.");
|
|
43
|
+
return {
|
|
44
|
+
async run(sql, values) {
|
|
45
|
+
const rows = db.prepare(sql).all(...values);
|
|
46
|
+
return {
|
|
47
|
+
columns: Object.keys(rows[0] ?? {}),
|
|
48
|
+
rows: rows.map((row) => Object.values(row)),
|
|
49
|
+
};
|
|
50
|
+
},
|
|
51
|
+
async close() { },
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
SQLITE.set(db, database);
|
|
56
|
+
remember(database, true);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The database a span's query ran on: by vendor, server, port and name; the only one of that vendor otherwise. A
|
|
60
|
+
* SQLite database by its file's name, or the one in memory when the span names none.
|
|
61
|
+
*/
|
|
16
62
|
function databaseFor(request) {
|
|
17
63
|
const vendor = request.vendor === "mariadb" ? "mysql" : request.vendor;
|
|
18
64
|
const candidates = [...DATABASES.values()].filter((database) => database.vendor === vendor);
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
(request.
|
|
65
|
+
const named = vendor === "sqlite" ? (request.database ?? "") : request.database;
|
|
66
|
+
const exact = candidates.find((database) => (request.server == null || vendor === "sqlite" || database.server === request.server) &&
|
|
67
|
+
(request.port == null || vendor === "sqlite" || database.port === Number(request.port)) &&
|
|
68
|
+
(named == null || database.database === named));
|
|
22
69
|
return exact ?? (candidates.length === 1 ? candidates[0] : undefined);
|
|
23
70
|
}
|
|
24
71
|
export async function explain(request) {
|
|
@@ -26,6 +73,8 @@ export async function explain(request) {
|
|
|
26
73
|
if (!database)
|
|
27
74
|
throw new Error(`The app has queried no ${request.vendor} database it can run EXPLAIN on.`);
|
|
28
75
|
const session = await database.open();
|
|
76
|
+
if (database.inPlace)
|
|
77
|
+
return session.run(request.sql, request.params);
|
|
29
78
|
try {
|
|
30
79
|
await session.run("BEGIN", []);
|
|
31
80
|
return await session.run(request.sql, request.params);
|
package/dist/explain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explain.js","sourceRoot":"","sources":["../src/explain.ts"],"names":[],"mappings":"AAAA,oHAAoH;AACpH,6GAA6G;AAC7G,EAAE;AACF,kHAAkH;AAClH,kHAAkH;AAClH,
|
|
1
|
+
{"version":3,"file":"explain.js","sourceRoot":"","sources":["../src/explain.ts"],"names":[],"mappings":"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"}
|
package/dist/express.js
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
// pieces without a Content-Length is a stream, and goes out as it comes, an HTML page with the script put in as it
|
|
4
4
|
// passes. What the request carried goes into its trace as the response goes out: its headers, query, cookies, the
|
|
5
5
|
// body a body parser read (`req.body`, an upload's files), the session (`req.session`), and the response's headers. A redirect that answers a
|
|
6
|
-
// page's navigation (a form's POST) sets the cookie that shows it in the next page's panel.
|
|
6
|
+
// page's navigation (a form's POST) sets the cookie that shows it in the next page's panel. A handler that reads the
|
|
7
|
+
// body from the stream itself (GraphQL Yoga) has it recorded as it read it. One that writes its headers itself with
|
|
8
|
+
// `res.writeHead()` before its body (Yoga, a Node handler under `app.use()`) gets the badge's headers then, and its
|
|
9
|
+
// HTML page no script.
|
|
10
|
+
import { tapIncoming, tapOf } from "./body.js";
|
|
7
11
|
import { hasBody, parsedBody, redirectCookie, requestAttrs, responseHeaders, searchOf } from "./request.js";
|
|
8
12
|
import { runtime } from "./runtime.js";
|
|
9
13
|
import { expressSession } from "./session.js";
|
|
@@ -21,14 +25,16 @@ function toBuffer(chunk, encoding) {
|
|
|
21
25
|
*/
|
|
22
26
|
function carried(req, res) {
|
|
23
27
|
const upload = req;
|
|
24
|
-
const
|
|
28
|
+
const parsed = req.body !== undefined || upload.file !== undefined || upload.files !== undefined
|
|
25
29
|
? parsedBody({
|
|
26
30
|
contentType: req.headers["content-type"] ?? "",
|
|
27
31
|
body: req.body,
|
|
28
32
|
file: upload.file,
|
|
29
33
|
files: upload.files,
|
|
30
34
|
})
|
|
31
|
-
:
|
|
35
|
+
: undefined;
|
|
36
|
+
// No body parser read it: as far as the handler read it from the stream.
|
|
37
|
+
const body = hasBody(req.headers) ? (parsed ?? tapOf(req)?.attrs() ?? {}) : {};
|
|
32
38
|
return {
|
|
33
39
|
...requestAttrs(req.headers, searchOf(req.originalUrl ?? req.url)),
|
|
34
40
|
...body,
|
|
@@ -36,6 +42,12 @@ function carried(req, res) {
|
|
|
36
42
|
...responseHeaders(Object.entries(res.getHeaders())),
|
|
37
43
|
};
|
|
38
44
|
}
|
|
45
|
+
function pairsOf(flat) {
|
|
46
|
+
const pairs = [];
|
|
47
|
+
for (let at = 0; at + 1 < flat.length; at += 2)
|
|
48
|
+
pairs.push([String(flat[at]), String(flat[at + 1])]);
|
|
49
|
+
return pairs;
|
|
50
|
+
}
|
|
39
51
|
export function tracepanel() {
|
|
40
52
|
const tp = runtime();
|
|
41
53
|
return function tracepanelMiddleware(req, res, next) {
|
|
@@ -44,6 +56,9 @@ export function tracepanel() {
|
|
|
44
56
|
return;
|
|
45
57
|
}
|
|
46
58
|
tp.processor.setFramework("Express");
|
|
59
|
+
// A handler may read the body from the stream itself: its pieces pass the tap on their way.
|
|
60
|
+
if (tp.config.captureRequest && hasBody(req.headers) && !req.readableEnded && !tapOf(req))
|
|
61
|
+
tapIncoming(req);
|
|
47
62
|
const startedMs = performance.now();
|
|
48
63
|
const chunks = [];
|
|
49
64
|
const write = res.write.bind(res);
|
|
@@ -55,7 +70,9 @@ export function tracepanel() {
|
|
|
55
70
|
if (chunks.length > 0)
|
|
56
71
|
write(Buffer.concat(chunks.splice(0)));
|
|
57
72
|
};
|
|
73
|
+
const writeHead = res.writeHead.bind(res);
|
|
58
74
|
let recorded = false;
|
|
75
|
+
let marked = false;
|
|
59
76
|
/** What the request carried, into its trace once, before the badge's headers join the response's. */
|
|
60
77
|
const record = () => {
|
|
61
78
|
if (recorded || !tp.config.captureRequest)
|
|
@@ -66,6 +83,7 @@ export function tracepanel() {
|
|
|
66
83
|
/** The badge's headers on the response; its script tag when it is a page that gets one. */
|
|
67
84
|
const mark = (page) => {
|
|
68
85
|
record();
|
|
86
|
+
marked = true;
|
|
69
87
|
const framework = tp.processor.framework() ?? "Express";
|
|
70
88
|
const marks = badge(tp, { method: req.method, status: res.statusCode, startedMs, page, framework });
|
|
71
89
|
if (!marks)
|
|
@@ -92,6 +110,28 @@ export function tracepanel() {
|
|
|
92
110
|
if (page && tag)
|
|
93
111
|
script = new Stream(tag);
|
|
94
112
|
};
|
|
113
|
+
// A handler that writes its headers itself, before its body: the badge's go with them. Headers passed here join
|
|
114
|
+
// the response's own first, so a CORS one among them exposes the badge's.
|
|
115
|
+
res.writeHead = ((status, ...rest) => {
|
|
116
|
+
if (marked || res.headersSent)
|
|
117
|
+
return writeHead(status, ...rest);
|
|
118
|
+
const message = typeof rest[0] === "string" ? rest[0] : undefined;
|
|
119
|
+
const given = (message === undefined ? rest[0] : rest[1]);
|
|
120
|
+
res.statusCode = status;
|
|
121
|
+
if (Array.isArray(given)) {
|
|
122
|
+
// Raw headers: [name, value, ...] or [[name, value], ...].
|
|
123
|
+
const pairs = Array.isArray(given[0]) ? given : pairsOf(given);
|
|
124
|
+
for (const [name, value] of pairs)
|
|
125
|
+
res.appendHeader(name, value);
|
|
126
|
+
}
|
|
127
|
+
else if (given) {
|
|
128
|
+
for (const [name, value] of Object.entries(given))
|
|
129
|
+
if (value !== undefined)
|
|
130
|
+
res.setHeader(name, value);
|
|
131
|
+
}
|
|
132
|
+
mark(false);
|
|
133
|
+
return message === undefined ? writeHead(status) : writeHead(status, message);
|
|
134
|
+
});
|
|
95
135
|
res.write = ((chunk, encoding, callback) => {
|
|
96
136
|
// Its size declared, a body in pieces is held whole like a page ended at once; without one it is a stream.
|
|
97
137
|
if (!streaming && res.getHeader("content-length") === undefined)
|
package/dist/express.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AAAA,mHAAmH;AACnH,oHAAoH;AACpH,mHAAmH;AACnH,kHAAkH;AAClH,8IAA8I;AAC9I,
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"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"}
|