@tracepanel/js 0.12.0 → 0.13.1

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.
@@ -0,0 +1,66 @@
1
+ import type { ServerResponse } from "node:http";
2
+ import type { Span } from "@opentelemetry/api";
3
+ import type { Attrs } from "./model.js";
4
+ import type { Runtime } from "./runtime.js";
5
+ /** A response's JSON or form larger than this isn't parsed to mask its secrets, so isn't kept: its size is. */
6
+ export declare const MAX_PARSED: number;
7
+ /** What a response's headers say of its body, as it went out. */
8
+ export interface Sent {
9
+ contentType: string;
10
+ encoding: string;
11
+ /**
12
+ * A body in pieces is a whole all the same: its size was declared (Content-Length), or its pieces don't tell (a
13
+ * fetch Response's).
14
+ */
15
+ whole: boolean;
16
+ }
17
+ /** Whether responses' bodies are recorded: with the request's details, unless bodies aren't. */
18
+ export declare function capturesResponse(tracepanel: Runtime): boolean;
19
+ /** The body of a response, its start kept as it passed, its size counted. */
20
+ export declare class ResponseTap {
21
+ private readonly sent;
22
+ private readonly kept;
23
+ private keptSize;
24
+ private size;
25
+ private pieces;
26
+ /** Bytes put into the body on its way out (the widget's script in a page): not the app's. */
27
+ private added;
28
+ private ended;
29
+ /** How many bytes are kept: decided at the first piece, from what the headers say then. */
30
+ private keep;
31
+ /** `sent`: the response's headers as they are when asked. */
32
+ constructor(sent: () => Sent);
33
+ /** A piece of the body on its way to the client. */
34
+ feed(chunk: unknown, encoding?: BufferEncoding): void;
35
+ /** Bytes the SDK put into the body (the widget's script in a page): its size is the app's without them. */
36
+ addedBy(bytes: number): void;
37
+ /** The body went out to its end. */
38
+ end(): void;
39
+ /**
40
+ * http.response.body of a body sent whole, and http.response.body.size in bytes (as far as it went by then). A
41
+ * stream, a compressed body, a page and its assets, binary content and JSON too large to mask: their size only.
42
+ */
43
+ attrs(): Attrs;
44
+ }
45
+ /**
46
+ * A Node response whose body pieces pass the tap on their way out: what the app (or its framework) writes with
47
+ * `write()` and `end()`, `pipe()` too. Headers passed to `writeHead()` itself count, as Node keeps none of them.
48
+ */
49
+ export declare function tapResponse(res: ServerResponse): ResponseTap;
50
+ /** Bytes the SDK put into a Node response's body (the widget's script in a page): not counted in its size. */
51
+ export declare function addedToResponse(res: ServerResponse, bytes: number): void;
52
+ /**
53
+ * Node's HTTP server instrumentation's hook, as each request starts with its response: the response's body is
54
+ * tapped, and its trace reads it as it ends.
55
+ */
56
+ export declare function responseHook(tracepanel: Runtime): (span: Span, response: unknown) => void;
57
+ /**
58
+ * A fetch Response's body through the tap, piece by piece as the client reads it: nothing read ahead of it. `ended`
59
+ * settles once the body has gone out, or the client went away.
60
+ */
61
+ export declare function tapFetchBody(body: ReadableStream<Uint8Array>, tap: ResponseTap): {
62
+ body: ReadableStream<Uint8Array>;
63
+ ended: Promise<void>;
64
+ };
65
+ /** A tap on a fetch Response's body, its headers as they are. */
66
+ export declare function fetchTap(headers: Headers): ResponseTap;
@@ -0,0 +1,269 @@
1
+ // A response's body, as the app sent it: http.response.body and http.response.body.size in its trace, as the Python
2
+ // SDK records them. A tap sees each piece on its way to the client and keeps a copy of the start: the response goes
3
+ // out as it would have, at its own pace, nothing held or changed. A Node server's response (`res.write()`,
4
+ // `res.end()`: Express, Fastify, Koa, Next.js, Hono's Node server, GraphQL Yoga's and Apollo's answers) is tapped as
5
+ // the server hands it over; a fetch handler's (Bun.serve, Hono) as its body is read.
6
+ //
7
+ // A body sent whole is recorded as a request's is (request.ts): JSON and forms with secrets masked, text as it is, cut
8
+ // at bodyLimit() characters. A stream (Server-Sent Events, NDJSON, a Node body written in pieces without a
9
+ // Content-Length), a compressed body, a page and its assets, binary content and JSON past MAX_PARSED are recorded by
10
+ // their size only: none of it is kept past what tells that. A fetch Response's pieces don't tell a stream (Bun hands
11
+ // a string's body over in several): only its type does. TRACEPANEL_CAPTURE_BODY=0 records neither. A page's size is
12
+ // the app's own: the widget's script, put in after the app sent the page (Express, Fastify, Koa), isn't counted.
13
+ import { bodyLimit, cut, headerValue, isJson, kindOf, readable } from "./request.js";
14
+ /** A response's JSON or form larger than this isn't parsed to mask its secrets, so isn't kept: its size is. */
15
+ export const MAX_PARSED = 4 << 20;
16
+ /** What a response's body shows elsewhere (a page, its assets): kept by its size only. */
17
+ const SHOWN_ELSEWHERE = new Set(["text/html", "text/css", "text/javascript", "application/javascript"]);
18
+ /** Bodies that are streams whatever their pieces: events, lines of JSON, parts sent as they are ready. */
19
+ const STREAMED = new Set([
20
+ "text/event-stream",
21
+ "application/x-ndjson",
22
+ "application/jsonl",
23
+ "application/stream+json",
24
+ "multipart/mixed",
25
+ "multipart/x-mixed-replace",
26
+ ]);
27
+ const TAP = Symbol.for("tracepanel.response");
28
+ /** Whether responses' bodies are recorded: with the request's details, unless bodies aren't. */
29
+ export function capturesResponse(tracepanel) {
30
+ return tracepanel.config.captureRequest && bodyLimit() > 0;
31
+ }
32
+ /** The body of a response, its start kept as it passed, its size counted. */
33
+ export class ResponseTap {
34
+ sent;
35
+ kept = [];
36
+ keptSize = 0;
37
+ size = 0;
38
+ pieces = 0;
39
+ /** Bytes put into the body on its way out (the widget's script in a page): not the app's. */
40
+ added = 0;
41
+ ended = false;
42
+ /** How many bytes are kept: decided at the first piece, from what the headers say then. */
43
+ keep;
44
+ /** `sent`: the response's headers as they are when asked. */
45
+ constructor(sent) {
46
+ this.sent = sent;
47
+ }
48
+ /** A piece of the body on its way to the client. */
49
+ feed(chunk, encoding) {
50
+ if (this.ended)
51
+ return;
52
+ const size = byteLength(chunk, encoding);
53
+ if (size === 0)
54
+ return;
55
+ this.pieces += 1;
56
+ this.size += size;
57
+ this.keep ??= keeping(this.sent());
58
+ const room = this.keep - this.keptSize;
59
+ if (room <= 0)
60
+ return;
61
+ const piece = toBuffer(chunk, encoding);
62
+ if (!piece)
63
+ return;
64
+ // A copy: the piece is the app's, and it may reuse its memory.
65
+ const copy = Buffer.from(piece.subarray(0, room));
66
+ this.kept.push(copy);
67
+ this.keptSize += copy.length;
68
+ }
69
+ /** Bytes the SDK put into the body (the widget's script in a page): its size is the app's without them. */
70
+ addedBy(bytes) {
71
+ this.added += bytes;
72
+ }
73
+ /** The body went out to its end. */
74
+ end() {
75
+ this.ended = true;
76
+ }
77
+ /**
78
+ * http.response.body of a body sent whole, and http.response.body.size in bytes (as far as it went by then). A
79
+ * stream, a compressed body, a page and its assets, binary content and JSON too large to mask: their size only.
80
+ */
81
+ attrs() {
82
+ if (bodyLimit() === 0)
83
+ return {};
84
+ const sent = this.sent();
85
+ const found = { "http.response.body.size": Math.max(0, this.size - this.added) };
86
+ const kind = kindOf(sent.contentType);
87
+ if (this.size === 0 || !this.ended || !wholeKind(sent))
88
+ return found;
89
+ // In pieces without a declared size: a stream, written as it was made.
90
+ if (this.pieces > 1 && !sent.whole)
91
+ return found;
92
+ const structured = isJson(kind) || kind === "application/x-www-form-urlencoded";
93
+ if (structured && this.size > MAX_PARSED)
94
+ return found;
95
+ const data = Buffer.concat(this.kept);
96
+ const text = readable(sent.contentType, data.toString("utf8"));
97
+ if (text === undefined)
98
+ return found;
99
+ const body = cut(text, "http.response.body");
100
+ // Its start only was kept: the rest is cut.
101
+ if (this.size > data.length && "http.response.body" in body)
102
+ body["http.response.body.truncated"] = true;
103
+ return { ...body, ...found };
104
+ }
105
+ }
106
+ /** Whether a body of this kind may be recorded, sent whole: text, not a page's, not compressed, not a stream. */
107
+ function wholeKind(sent) {
108
+ const kind = kindOf(sent.contentType);
109
+ const encoding = sent.encoding.trim().toLowerCase();
110
+ if (encoding !== "" && encoding !== "identity")
111
+ return false;
112
+ if (SHOWN_ELSEWHERE.has(kind) || STREAMED.has(kind) || kind.startsWith("multipart/"))
113
+ return false;
114
+ return readable(sent.contentType, "") !== undefined;
115
+ }
116
+ /** How much of a body is kept: a structure whole (up to MAX_PARSED and a byte), text up to the limit; else none. */
117
+ function keeping(sent) {
118
+ if (!wholeKind(sent))
119
+ return 0;
120
+ const kind = kindOf(sent.contentType);
121
+ if (isJson(kind) || kind === "application/x-www-form-urlencoded")
122
+ return MAX_PARSED + 1;
123
+ // The limit is in characters: up to four bytes each, and a byte past them to know the text was cut.
124
+ return bodyLimit() * 4 + 1;
125
+ }
126
+ function byteLength(chunk, encoding) {
127
+ if (typeof chunk === "string")
128
+ return Buffer.byteLength(chunk, encoding);
129
+ if (chunk instanceof Uint8Array)
130
+ return chunk.byteLength;
131
+ return 0;
132
+ }
133
+ function toBuffer(chunk, encoding) {
134
+ if (Buffer.isBuffer(chunk))
135
+ return chunk;
136
+ if (chunk instanceof Uint8Array)
137
+ return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
138
+ if (typeof chunk === "string")
139
+ return Buffer.from(chunk, encoding);
140
+ return undefined;
141
+ }
142
+ /** A header's value among those passed to writeHead() (an object, or raw pairs), by its lower-case name. */
143
+ function passedHeader(passed, name) {
144
+ if (Array.isArray(passed)) {
145
+ const pairs = Array.isArray(passed[0])
146
+ ? passed
147
+ : Array.from({ length: Math.floor(passed.length / 2) }, (_, at) => [passed[2 * at], passed[2 * at + 1]]);
148
+ const found = pairs.find(([key]) => String(key).toLowerCase() === name);
149
+ return found ? headerValue(found[1]) : undefined;
150
+ }
151
+ if (passed !== null && typeof passed === "object") {
152
+ const found = Object.entries(passed).find(([key]) => key.toLowerCase() === name);
153
+ return found ? headerValue(found[1]) : undefined;
154
+ }
155
+ return undefined;
156
+ }
157
+ /**
158
+ * A Node response whose body pieces pass the tap on their way out: what the app (or its framework) writes with
159
+ * `write()` and `end()`, `pipe()` too. Headers passed to `writeHead()` itself count, as Node keeps none of them.
160
+ */
161
+ export function tapResponse(res) {
162
+ const before = res[TAP];
163
+ if (before)
164
+ return before;
165
+ let passed;
166
+ const header = (name) => headerValue(res.getHeader(name)) ?? passedHeader(passed, name);
167
+ const tap = new ResponseTap(() => ({
168
+ contentType: header("content-type") ?? "",
169
+ encoding: header("content-encoding") ?? "",
170
+ whole: header("content-length") !== undefined,
171
+ }));
172
+ const writeHead = res.writeHead;
173
+ const write = res.write;
174
+ const end = res.end;
175
+ res.writeHead = function (...args) {
176
+ const given = args.find((arg) => arg !== null && typeof arg === "object");
177
+ if (given !== undefined)
178
+ passed = given;
179
+ return writeHead.apply(this, args);
180
+ };
181
+ res.write = function (...args) {
182
+ try {
183
+ tap.feed(args[0], typeof args[1] === "string" ? args[1] : undefined);
184
+ }
185
+ catch {
186
+ // The response goes out whatever the tap makes of it.
187
+ }
188
+ return write.apply(this, args);
189
+ };
190
+ res.end = function (...args) {
191
+ try {
192
+ if (typeof args[0] !== "function") {
193
+ tap.feed(args[0], typeof args[1] === "string" ? args[1] : undefined);
194
+ }
195
+ tap.end();
196
+ }
197
+ catch {
198
+ // The response goes out whatever the tap makes of it.
199
+ }
200
+ return end.apply(this, args);
201
+ };
202
+ res[TAP] = tap;
203
+ return tap;
204
+ }
205
+ /** Bytes the SDK put into a Node response's body (the widget's script in a page): not counted in its size. */
206
+ export function addedToResponse(res, bytes) {
207
+ if (bytes > 0)
208
+ res[TAP]?.addedBy(bytes);
209
+ }
210
+ /**
211
+ * Node's HTTP server instrumentation's hook, as each request starts with its response: the response's body is
212
+ * tapped, and its trace reads it as it ends.
213
+ */
214
+ export function responseHook(tracepanel) {
215
+ return (span, response) => {
216
+ // A server's response has writeHead(); an outgoing call's response (an IncomingMessage) has none.
217
+ if (!capturesResponse(tracepanel) || typeof response.writeHead !== "function")
218
+ return;
219
+ const tap = tapResponse(response);
220
+ tracepanel.processor.readResponse(() => tap.attrs(), span.spanContext().spanId);
221
+ };
222
+ }
223
+ /**
224
+ * A fetch Response's body through the tap, piece by piece as the client reads it: nothing read ahead of it. `ended`
225
+ * settles once the body has gone out, or the client went away.
226
+ */
227
+ export function tapFetchBody(body, tap) {
228
+ let ended = () => { };
229
+ const done = new Promise((resolve) => (ended = resolve));
230
+ const reader = body.getReader();
231
+ const through = new ReadableStream({
232
+ async pull(controller) {
233
+ try {
234
+ const { done: over, value } = await reader.read();
235
+ if (over) {
236
+ tap.end();
237
+ controller.close();
238
+ ended();
239
+ return;
240
+ }
241
+ try {
242
+ tap.feed(value);
243
+ }
244
+ catch {
245
+ // The response goes out whatever the tap makes of it.
246
+ }
247
+ controller.enqueue(value);
248
+ }
249
+ catch (error) {
250
+ controller.error(error);
251
+ ended();
252
+ }
253
+ },
254
+ async cancel(reason) {
255
+ ended();
256
+ await reader.cancel(reason);
257
+ },
258
+ }, { highWaterMark: 0 });
259
+ return { body: through, ended: done };
260
+ }
261
+ /** A tap on a fetch Response's body, its headers as they are. */
262
+ export function fetchTap(headers) {
263
+ return new ResponseTap(() => ({
264
+ contentType: headers.get("content-type") ?? "",
265
+ encoding: headers.get("content-encoding") ?? "",
266
+ whole: true,
267
+ }));
268
+ }
269
+ //# sourceMappingURL=response-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-body.js","sourceRoot":"","sources":["../src/response-body.ts"],"names":[],"mappings":"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"}
package/dist/runtime.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import { ConsoleUrl, Sender, Starter } from "./agent.js";
3
3
  import { loadConfig } from "./config.js";
4
4
  import { TracepanelProcessor } from "./processor.js";
5
+ import { limitBodies } from "./request.js";
5
6
  import { badge } from "./widget.js";
6
7
  const KEY = Symbol.for("tracepanel.runtime");
7
8
  /** The process's Tracepanel, made on first use; undefined outside development. */
@@ -12,6 +13,7 @@ export function runtime() {
12
13
  const config = loadConfig();
13
14
  if (!config.enabled)
14
15
  return undefined;
16
+ limitBodies(config);
15
17
  const starter = new Starter(config.storeDir);
16
18
  const processor = new TracepanelProcessor(config, new Sender(config, starter));
17
19
  const made = {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAE3F,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAiC,KAAK,EAAE,MAAM,aAAa,CAAC;AAmBnE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAG7C,kFAAkF;AAClF,MAAM,UAAU,OAAO;IACrB,MAAM,MAAM,GAAG,UAAoB,CAAC;IACpC,IAAI,MAAM,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAY;QACpB,MAAM;QACN,SAAS;QACT,OAAO;QACP,OAAO,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;KACzC,CAAC;IACF,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAE3F,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAiC,KAAK,EAAE,MAAM,aAAa,CAAC;AAmBnE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAG7C,kFAAkF;AAClF,MAAM,UAAU,OAAO;IACrB,MAAM,MAAM,GAAG,UAAoB,CAAC;IACpC,IAAI,MAAM,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACtC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAY;QACpB,MAAM;QACN,SAAS;QACT,OAAO;QACP,OAAO,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;KACzC,CAAC;IACF,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/setup.js CHANGED
@@ -30,6 +30,7 @@ import { traceBunCalls } from "./outgoing.js";
30
30
  import { askAttributes, asks } from "./profile.js";
31
31
  import { profilePropagator } from "./propagation.js";
32
32
  import { traceBunQueries } from "./queries.js";
33
+ import { responseHook } from "./response-body.js";
33
34
  import { runtime } from "./runtime.js";
34
35
  import { SqliteInstrumentation } from "./sqlite.js";
35
36
  import { keepErrorSites } from "./stack.js";
@@ -127,6 +128,8 @@ export function start(options = {}) {
127
128
  (request.method === "OPTIONS" && request.headers["access-control-request-method"] !== undefined),
128
129
  // A GraphQL request's operation, whatever the answer: one before the operation ran too (a 503).
129
130
  requestHook: operationHook(tracepanel),
131
+ // The response's body as it goes out, tapped as the request starts: its trace reads it as it ends.
132
+ responseHook: responseHook(tracepanel),
130
133
  // What a request asks to be profiled for says so on its span, as it starts.
131
134
  startIncomingSpanHook: (request) => {
132
135
  return askAttributes(tracepanel.config.profileEnabled && "headers" in request ? asks(request.headers) : undefined);
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/widget.d.ts CHANGED
@@ -52,15 +52,20 @@ export declare const STREAM_LOOKAHEAD = 65536;
52
52
  * is in.
53
53
  */
54
54
  export declare class Stream {
55
+ private readonly put?;
55
56
  private readonly tag;
56
57
  private held;
57
58
  private seen;
58
59
  private done;
59
- constructor(tag: string);
60
+ /** `put`: told the script's size once it is in. */
61
+ constructor(tag: string, put?: ((bytes: number) => void) | undefined);
60
62
  /** What goes out now, of the piece and what was held. */
61
63
  feed(piece: Uint8Array): Buffer;
62
64
  /** What was held, once the body ends. */
63
65
  end(): Buffer;
64
66
  }
65
- /** A Node stream with the script put into the page as it passes (a Fastify or Koa page streamed). */
66
- export declare function streamWith(source: Readable, tag: string): Transform;
67
+ /**
68
+ * A Node stream with the script put into the page as it passes (a Fastify or Koa page streamed). `put`: told the
69
+ * script's size once it is in.
70
+ */
71
+ export declare function streamWith(source: Readable, tag: string, put?: (bytes: number) => void): Transform;
package/dist/widget.js CHANGED
@@ -114,11 +114,14 @@ export const STREAM_LOOKAHEAD = 65_536;
114
114
  * is in.
115
115
  */
116
116
  export class Stream {
117
+ put;
117
118
  tag;
118
119
  held = Buffer.alloc(0);
119
120
  seen = 0;
120
121
  done = false;
121
- constructor(tag) {
122
+ /** `put`: told the script's size once it is in. */
123
+ constructor(tag, put) {
124
+ this.put = put;
122
125
  this.tag = Buffer.from(tag);
123
126
  }
124
127
  /** What goes out now, of the piece and what was held. */
@@ -134,6 +137,7 @@ export class Stream {
134
137
  if (found) {
135
138
  this.done = true;
136
139
  const at = found.index + found[0].length;
140
+ this.put?.(this.tag.length);
137
141
  return Buffer.concat([data.subarray(0, at), this.tag, data.subarray(at)]);
138
142
  }
139
143
  this.seen += chunk.length;
@@ -156,9 +160,12 @@ export class Stream {
156
160
  return rest;
157
161
  }
158
162
  }
159
- /** A Node stream with the script put into the page as it passes (a Fastify or Koa page streamed). */
160
- export function streamWith(source, tag) {
161
- const script = new Stream(tag);
163
+ /**
164
+ * A Node stream with the script put into the page as it passes (a Fastify or Koa page streamed). `put`: told the
165
+ * script's size once it is in.
166
+ */
167
+ export function streamWith(source, tag, put) {
168
+ const script = new Stream(tag, put);
162
169
  const piped = new Transform({
163
170
  transform(chunk, _encoding, done) {
164
171
  done(null, script.feed(typeof chunk === "string" ? Buffer.from(chunk) : chunk));
@@ -1 +1 @@
1
- {"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAE7G,OAAO,EAAE,QAAQ,EAAiB,SAAS,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAuB,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnE,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC;AAoBD,uFAAuF;AACvF,MAAM,UAAU,KAAK,CAAC,UAAmB,EAAE,OAAqB;IAC9D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CACxC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CACrF,CAAC;IACF,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1C,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACvD,oGAAoG;QACpG,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,CAAC;IACD,kHAAkH;IAClH,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,MAAM,OAAO,GAA2B;QACtC,eAAe,EAAE,MAAM,CAAC,EAAE;QAC1B,6FAA6F;QAC7F,eAAe,EAAE,UAAU,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,OAAO,IAAI,IAAI,cAAc,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC;KAClN,CAAC;IACF,IAAI,UAAU;QAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,GAAG,UAAU,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC;IAC5E,oFAAoF;IACpF,IAAI,MAAM,CAAC,IAAI;QAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvE,+GAA+G;IAC/G,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,IAAI,UAAU,CAAC;IACtD,MAAM,WAAW,GACf,IAAI,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM;QAC5C,CAAC,CAAC;YACE,GAAG,EAAE,GAAG,GAAG,eAAe;YAC1B,qBAAqB,EAAE,GAAG;YAC1B,oBAAoB,EAAE,MAAM,CAAC,EAAE;YAC/B,wBAAwB,EAAE,MAAM;YAChC,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC;YACxC,uBAAuB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,yBAAyB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YACjD,wBAAwB,EAAE,SAAS;YACnC,yBAAyB,EAAE,YAAY,CAAC,SAAS,CAAC;SACnD;QACH,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,MAAM,GAAG,WAAW;QACxB,CAAC,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;aACxD,IAAI,CAAC,GAAG,CAAC,YAAY;QAC1B,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC;AAED,oHAAoH;AACpH,6BAA6B;AAC7B,MAAM,KAAK,GAAG,+BAA+B,CAAC;AAE9C,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAExF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,WAAoB,EAAE,QAAiB;IACpE,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;SACjC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC;AAUD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,UAAmB,EACnB,OAAqB,EACrB,SAAyB,EACzB,MAAiC;IAEjC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,6BAA6B,CAAC,EAAE,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC9G,IAAI,MAAM;QAAE,OAAO,CAAC,+BAA+B,CAAC,GAAG,MAAM,CAAC;IAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACnD,CAAC;AAED,2GAA2G;AAC3G,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,GAAW;IAC9C,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5G,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAiC;IAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxE,OAAO,IAAI,IAAI,MAAM,CAAC,kBAAkB,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;AACxF,CAAC;AAED,kGAAkG;AAClG,MAAM,OAAO,GAAG,8BAA8B,CAAC;AAC/C,4GAA4G;AAC5G,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,OAAO,MAAM;IACA,GAAG,CAAS;IACrB,IAAI,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,GAAG,CAAC,CAAC;IACT,IAAI,GAAG,KAAK,CAAC;IAErB,YAAY,GAAW;QACrB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,yDAAyD;IACzD,IAAI,CAAC,KAAiB;QACpB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,0EAA0E;QAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACzC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,GAAG,gBAAgB,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,mEAAmE;QACnE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,yCAAyC;IACzC,GAAG;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,qGAAqG;AACrG,MAAM,UAAU,UAAU,CAAC,MAAgB,EAAE,GAAW;IACtD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC;QAC1B,SAAS,CAAC,KAAsB,EAAE,SAAS,EAAE,IAAI;YAC/C,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,CAAC;QACD,KAAK,CAAC,IAAI;YACR,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;KACF,CAAC,CAAC;IACH,uDAAuD;IACvD,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tracepanel/js",
3
- "version": "0.12.0",
3
+ "version": "0.13.1",
4
4
  "description": "Traces and logs for Node.js and Bun apps (Express, Fastify, Koa, Hono, NestJS, Next.js, Nuxt, Bun.serve, GraphQL Yoga, Apollo Server): every request with its SQL, logs and errors, N+1 queries found",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -98,7 +98,7 @@
98
98
  "@opentelemetry/sdk-trace-base": "^2.12.0",
99
99
  "@opentelemetry/sdk-trace-node": "^2.12.0",
100
100
  "@prisma/instrumentation": "^7.10.0",
101
- "@tracepanel/agent": "~0.12.0",
101
+ "@tracepanel/agent": "~0.13.1",
102
102
  "import-in-the-middle": "^3.5.2"
103
103
  },
104
104
  "peerDependencies": {