@tracepanel/js 0.0.0-stage → 0.3.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/LICENSE +21 -0
- package/README.md +271 -2
- package/dist/agent.d.ts +42 -0
- package/dist/agent.js +298 -0
- package/dist/agent.js.map +1 -0
- package/dist/api.d.ts +11 -0
- package/dist/api.js +34 -0
- package/dist/api.js.map +1 -0
- package/dist/browser.d.ts +25 -0
- package/dist/browser.js +438 -0
- package/dist/browser.js.map +1 -0
- package/dist/bullmq.d.ts +7 -0
- package/dist/bullmq.js +86 -0
- package/dist/bullmq.js.map +1 -0
- package/dist/bun.d.ts +15 -0
- package/dist/bun.js +114 -0
- package/dist/bun.js.map +1 -0
- package/dist/calls.d.ts +20 -0
- package/dist/calls.js +145 -0
- package/dist/calls.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +39 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +29 -0
- package/dist/config.js +48 -0
- package/dist/config.js.map +1 -0
- package/dist/console.d.ts +6 -0
- package/dist/console.js +44 -0
- package/dist/console.js.map +1 -0
- package/dist/explain.d.ts +25 -0
- package/dist/explain.js +145 -0
- package/dist/explain.js.map +1 -0
- package/dist/express.d.ts +2 -0
- package/dist/express.js +77 -0
- package/dist/express.js.map +1 -0
- package/dist/frameworks.d.ts +2 -0
- package/dist/frameworks.js +39 -0
- package/dist/frameworks.js.map +1 -0
- package/dist/headers.d.ts +2 -0
- package/dist/headers.js +42 -0
- package/dist/headers.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/logs.d.ts +8 -0
- package/dist/logs.js +54 -0
- package/dist/logs.js.map +1 -0
- package/dist/model.d.ts +68 -0
- package/dist/model.js +41 -0
- package/dist/model.js.map +1 -0
- package/dist/next-widget.d.ts +3 -0
- package/dist/next-widget.js +17 -0
- package/dist/next-widget.js.map +1 -0
- package/dist/next.d.ts +2 -0
- package/dist/next.js +16 -0
- package/dist/next.js.map +1 -0
- package/dist/nuxt-plugin.d.ts +24 -0
- package/dist/nuxt-plugin.js +39 -0
- package/dist/nuxt-plugin.js.map +1 -0
- package/dist/nuxt.d.ts +10 -0
- package/dist/nuxt.js +16 -0
- package/dist/nuxt.js.map +1 -0
- package/dist/processor.d.ts +105 -0
- package/dist/processor.js +491 -0
- package/dist/processor.js.map +1 -0
- package/dist/register.d.ts +1 -0
- package/dist/register.js +5 -0
- package/dist/register.js.map +1 -0
- package/dist/runtime.d.ts +17 -0
- package/dist/runtime.js +27 -0
- package/dist/runtime.js.map +1 -0
- package/dist/setup.d.ts +10 -0
- package/dist/setup.js +102 -0
- package/dist/setup.js.map +1 -0
- package/dist/sql.d.ts +3 -0
- package/dist/sql.js +18 -0
- package/dist/sql.js.map +1 -0
- package/dist/stack.d.ts +13 -0
- package/dist/stack.js +66 -0
- package/dist/stack.js.map +1 -0
- package/dist/vite.d.ts +36 -0
- package/dist/vite.js +139 -0
- package/dist/vite.js.map +1 -0
- package/dist/widget.d.ts +26 -0
- package/dist/widget.js +70 -0
- package/dist/widget.js.map +1 -0
- package/package.json +125 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../src/processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/register.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// `node --import @tracepanel/js/register app.js`: OpenTelemetry for the app, with Tracepanel's span processor. Loaded
|
|
2
|
+
// before the app, it can instrument both CommonJS and ES modules (the ESM loader hook goes in first).
|
|
3
|
+
import { start } from "./setup.js";
|
|
4
|
+
start();
|
|
5
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA,sHAAsH;AACtH,sGAAsG;AAEtG,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ConsoleUrl, Starter } from "./agent.js";
|
|
2
|
+
import { type Config } from "./config.js";
|
|
3
|
+
import { TracepanelProcessor } from "./processor.js";
|
|
4
|
+
import { type Badge, type BadgeRequest } from "./widget.js";
|
|
5
|
+
export interface Runtime {
|
|
6
|
+
config: Config;
|
|
7
|
+
processor: TracepanelProcessor;
|
|
8
|
+
starter: Starter;
|
|
9
|
+
console: ConsoleUrl;
|
|
10
|
+
/**
|
|
11
|
+
* The active request's headers and script tag. On the shared object so that code bundled apart from the SDK's
|
|
12
|
+
* OpenTelemetry (a Next.js layout) can read it without importing any of it.
|
|
13
|
+
*/
|
|
14
|
+
badge(request: BadgeRequest): Badge | undefined;
|
|
15
|
+
}
|
|
16
|
+
/** The process's Tracepanel, made on first use; undefined outside development. */
|
|
17
|
+
export declare function runtime(): Runtime | undefined;
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// The one Tracepanel of the process: register.ts sets it up, the framework modules use it.
|
|
2
|
+
import { ConsoleUrl, Sender, Starter } from "./agent.js";
|
|
3
|
+
import { loadConfig } from "./config.js";
|
|
4
|
+
import { TracepanelProcessor } from "./processor.js";
|
|
5
|
+
import { badge } from "./widget.js";
|
|
6
|
+
const KEY = Symbol.for("tracepanel.runtime");
|
|
7
|
+
/** The process's Tracepanel, made on first use; undefined outside development. */
|
|
8
|
+
export function runtime() {
|
|
9
|
+
const holder = globalThis;
|
|
10
|
+
if (holder[KEY])
|
|
11
|
+
return holder[KEY];
|
|
12
|
+
const config = loadConfig();
|
|
13
|
+
if (!config.enabled)
|
|
14
|
+
return undefined;
|
|
15
|
+
const starter = new Starter(config.storeDir);
|
|
16
|
+
const processor = new TracepanelProcessor(config, new Sender(config, starter));
|
|
17
|
+
const made = {
|
|
18
|
+
config,
|
|
19
|
+
processor,
|
|
20
|
+
starter,
|
|
21
|
+
console: new ConsoleUrl(config.storeDir),
|
|
22
|
+
badge: (request) => badge(made, request),
|
|
23
|
+
};
|
|
24
|
+
holder[KEY] = made;
|
|
25
|
+
return made;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +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;AACzD,OAAO,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAiC,KAAK,EAAE,MAAM,aAAa,CAAC;AAcnE,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"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Runtime } from "./runtime.js";
|
|
2
|
+
export interface Options {
|
|
3
|
+
/**
|
|
4
|
+
* Node's HTTP server spans, the request's root. Off where the framework makes its own root span (Next.js), which
|
|
5
|
+
* would otherwise sit under another.
|
|
6
|
+
*/
|
|
7
|
+
httpServer?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/** Sets up tracing once per process; undefined when Tracepanel is off (production). */
|
|
10
|
+
export declare function start(options?: Options): Runtime | undefined;
|
package/dist/setup.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// OpenTelemetry for the app, with Tracepanel's span processor: what `@tracepanel/js/register` sets up before the app,
|
|
2
|
+
// and what a framework that starts its own server (Next.js) sets up from its instrumentation hook.
|
|
3
|
+
import nodeModule, { createRequire, register } from "node:module";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { isMainThread } from "node:worker_threads";
|
|
6
|
+
import { registerInstrumentations } from "@opentelemetry/instrumentation";
|
|
7
|
+
import { ExpressInstrumentation } from "@opentelemetry/instrumentation-express";
|
|
8
|
+
import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
|
|
9
|
+
import { IORedisInstrumentation } from "@opentelemetry/instrumentation-ioredis";
|
|
10
|
+
import { MongoDBInstrumentation } from "@opentelemetry/instrumentation-mongodb";
|
|
11
|
+
import { MySQL2Instrumentation } from "@opentelemetry/instrumentation-mysql2";
|
|
12
|
+
import { NestInstrumentation } from "@opentelemetry/instrumentation-nestjs-core";
|
|
13
|
+
import { PgInstrumentation } from "@opentelemetry/instrumentation-pg";
|
|
14
|
+
import { RedisInstrumentation } from "@opentelemetry/instrumentation-redis";
|
|
15
|
+
import { UndiciInstrumentation } from "@opentelemetry/instrumentation-undici";
|
|
16
|
+
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
|
17
|
+
import { PrismaInstrumentation } from "@prisma/instrumentation";
|
|
18
|
+
import { register as registerSyncHooks, supportsSyncHooks } from "import-in-the-middle/register-hooks.mjs";
|
|
19
|
+
import { BullMQInstrumentation } from "./bullmq.js";
|
|
20
|
+
import { captureConsole } from "./console.js";
|
|
21
|
+
import { DatabasesInstrumentation } from "./explain.js";
|
|
22
|
+
import { NestLogs } from "./logs.js";
|
|
23
|
+
import { runtime } from "./runtime.js";
|
|
24
|
+
const STARTED = Symbol.for("tracepanel.started");
|
|
25
|
+
/**
|
|
26
|
+
* Nest 12 is ESM: the loader hook patches its files as they load. The instrumentation also requires them, from its
|
|
27
|
+
* own place and the main module's; with the SDK linked from elsewhere, or no CommonJS main module, that misses the
|
|
28
|
+
* project's @nestjs/core and throws as Nest loads. Here it looks from the project's directory too, and a miss is fine.
|
|
29
|
+
*/
|
|
30
|
+
function nest() {
|
|
31
|
+
const instrumentation = new NestInstrumentation();
|
|
32
|
+
const target = instrumentation;
|
|
33
|
+
const loadPatchedFiles = target.loadPatchedFiles.bind(instrumentation);
|
|
34
|
+
target.loadPatchedFiles = (moduleVersion) => {
|
|
35
|
+
try {
|
|
36
|
+
loadPatchedFiles(moduleVersion);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
try {
|
|
40
|
+
const fromProject = createRequire(join(process.cwd(), "package.json"));
|
|
41
|
+
for (const file of ["@nestjs/core/nest-factory.js", "@nestjs/core/router/router-execution-context.js"]) {
|
|
42
|
+
fromProject(file);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// The ESM loader hook has patched them already.
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
return instrumentation;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* `nuxt dev`'s main thread: it only builds and proxies each request to Nitro's worker thread, which serves it (and
|
|
54
|
+
* gets the same --import). Tracing it would make a second, empty trace of every request.
|
|
55
|
+
*/
|
|
56
|
+
function nuxtDevProxy() {
|
|
57
|
+
const script = process.argv[1] ?? "";
|
|
58
|
+
return isMainThread && /[\\/]nuxi?(\.m?js)?$|[\\/]nuxt[\\/]bin[\\/]/.test(script) && process.argv.includes("dev");
|
|
59
|
+
}
|
|
60
|
+
/** Sets up tracing once per process; undefined when Tracepanel is off (production). */
|
|
61
|
+
export function start(options = {}) {
|
|
62
|
+
const tracepanel = runtime();
|
|
63
|
+
const holder = globalThis;
|
|
64
|
+
if (!tracepanel || holder[STARTED] || nuxtDevProxy())
|
|
65
|
+
return tracepanel;
|
|
66
|
+
holder[STARTED] = true;
|
|
67
|
+
// The ESM loader hook, in the app's thread where Node can (module.register() is deprecated from Node 26). Bun 1.4
|
|
68
|
+
// says it is Node 26 but has no registerHooks(): supportsSyncHooks() goes by the version only.
|
|
69
|
+
if (supportsSyncHooks() && typeof nodeModule.registerHooks === "function")
|
|
70
|
+
registerSyncHooks();
|
|
71
|
+
else
|
|
72
|
+
register("@opentelemetry/instrumentation/hook.mjs", import.meta.url);
|
|
73
|
+
new NodeTracerProvider({ spanProcessors: [tracepanel.processor] }).register();
|
|
74
|
+
const instrumentations = [
|
|
75
|
+
new ExpressInstrumentation(),
|
|
76
|
+
// A Nest app runs on Express: Nest's spans name the controller and method that handled the request.
|
|
77
|
+
nest(),
|
|
78
|
+
new NestLogs(tracepanel.processor),
|
|
79
|
+
new PgInstrumentation({ enhancedDatabaseReporting: true }),
|
|
80
|
+
new MySQL2Instrumentation(),
|
|
81
|
+
new IORedisInstrumentation(),
|
|
82
|
+
new RedisInstrumentation(),
|
|
83
|
+
// The command with its values: Tracepanel keeps their shape and a hash, which tells duplicates from an N+1.
|
|
84
|
+
new MongoDBInstrumentation({ enhancedDatabaseReporting: true }),
|
|
85
|
+
new PrismaInstrumentation(),
|
|
86
|
+
new BullMQInstrumentation(),
|
|
87
|
+
// The databases the app queries, for the console's EXPLAIN.
|
|
88
|
+
new DatabasesInstrumentation(),
|
|
89
|
+
// fetch(): Node's own, through undici.
|
|
90
|
+
new UndiciInstrumentation(),
|
|
91
|
+
// Outgoing calls through node:http (axios, got) always; the server's requests unless the framework traces them.
|
|
92
|
+
new HttpInstrumentation({
|
|
93
|
+
// A CORS preflight (the browser asking before a call with a traceparent) is the browser's, not the app's work.
|
|
94
|
+
ignoreIncomingRequestHook: (request) => options.httpServer === false ||
|
|
95
|
+
(request.method === "OPTIONS" && request.headers["access-control-request-method"] !== undefined),
|
|
96
|
+
}),
|
|
97
|
+
];
|
|
98
|
+
registerInstrumentations({ instrumentations });
|
|
99
|
+
captureConsole(tracepanel.processor);
|
|
100
|
+
return tracepanel;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/sql.d.ts
ADDED
package/dist/sql.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// A statement's span name, its one-line form, and its fingerprint, which the agent groups queries (and finds N+1
|
|
2
|
+
// queries) by: the same rules in every Tracepanel SDK.
|
|
3
|
+
const WHITESPACE = /\s+/g;
|
|
4
|
+
const IN_LIST = /\bIN \((?:%s|\?|\$\d+)(?:, ?(?:%s|\?|\$\d+))*\)/gi;
|
|
5
|
+
const TABLE = /\b(?:FROM|INTO|UPDATE|JOIN)\s+[`"[]?([\w.]+)/i;
|
|
6
|
+
const COUNT = /^\s*SELECT\s+COUNT\(/i;
|
|
7
|
+
export function statement(sql) {
|
|
8
|
+
return sql.replace(WHITESPACE, " ").trim();
|
|
9
|
+
}
|
|
10
|
+
export function fingerprint(sql) {
|
|
11
|
+
return statement(sql).replace(IN_LIST, "IN (...)");
|
|
12
|
+
}
|
|
13
|
+
export function spanName(sql) {
|
|
14
|
+
const verb = COUNT.test(sql) ? "SELECT COUNT" : (sql.trim().split(/\s+/)[0] ?? "SQL").toUpperCase() || "SQL";
|
|
15
|
+
const table = TABLE.exec(sql)?.[1];
|
|
16
|
+
return table ? `${verb} ${table}` : verb;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=sql.js.map
|
package/dist/sql.js.map
ADDED
|
@@ -0,0 +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,+CAA+C,CAAC;AAC9D,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,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,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC"}
|
package/dist/stack.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Frame } from "./model.js";
|
|
2
|
+
export interface StackFrame {
|
|
3
|
+
function: string;
|
|
4
|
+
file: string;
|
|
5
|
+
line: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function parseStack(stack: string | undefined): StackFrame[];
|
|
8
|
+
/** The project's own code: under the root, not a dependency, not Node's, not Tracepanel's. */
|
|
9
|
+
export declare function inApp(file: string, root: string): boolean;
|
|
10
|
+
/** `file:line in function` of the innermost frame of the app's own code on the current stack, or null. */
|
|
11
|
+
export declare function origin(root: string): string | null;
|
|
12
|
+
/** An error's frames, outermost first as the console shows every SDK's, with the source of the app's own. */
|
|
13
|
+
export declare function frames(stack: string | undefined, root: string): Frame[];
|
package/dist/stack.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// The app's own code in a V8 stack: where a query was made (code.origin), and an error's frames with their source.
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { relative, sep } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
const CONTEXT_LINES = 5;
|
|
6
|
+
// " at fn (file:line:col)", " at file:line:col", " at async fn (file:line:col)".
|
|
7
|
+
const FRAME = /^\s*at (?:async )?(?:(.+?) \()?(.+?):(\d+):(\d+)\)?$/;
|
|
8
|
+
// This package's own files are never the app's.
|
|
9
|
+
const OWN = fileURLToPath(new URL(".", import.meta.url));
|
|
10
|
+
export function parseStack(stack) {
|
|
11
|
+
const frames = [];
|
|
12
|
+
for (const line of (stack ?? "").split("\n").slice(1)) {
|
|
13
|
+
const match = FRAME.exec(line);
|
|
14
|
+
if (!match)
|
|
15
|
+
continue;
|
|
16
|
+
const [, fn, location, lineno] = match;
|
|
17
|
+
const file = location?.startsWith("file://") ? fileURLToPath(location) : (location ?? "");
|
|
18
|
+
frames.push({ function: fn ?? "<anonymous>", file, line: Number(lineno) });
|
|
19
|
+
}
|
|
20
|
+
return frames;
|
|
21
|
+
}
|
|
22
|
+
/** The project's own code: under the root, not a dependency, not Node's, not Tracepanel's. */
|
|
23
|
+
export function inApp(file, root) {
|
|
24
|
+
return (file.startsWith(root + sep) &&
|
|
25
|
+
!file.includes(`${sep}node_modules${sep}`) &&
|
|
26
|
+
!file.startsWith(OWN) &&
|
|
27
|
+
!file.startsWith("node:"));
|
|
28
|
+
}
|
|
29
|
+
/** `file:line in function` of the innermost frame of the app's own code on the current stack, or null. */
|
|
30
|
+
export function origin(root) {
|
|
31
|
+
const frame = parseStack(new Error().stack).find((candidate) => inApp(candidate.file, root));
|
|
32
|
+
return frame ? `${relative(root, frame.file)}:${frame.line} in ${shortName(frame.function)}` : null;
|
|
33
|
+
}
|
|
34
|
+
function shortName(fn) {
|
|
35
|
+
return fn.replace(/^Object\.|^Module\./, "");
|
|
36
|
+
}
|
|
37
|
+
function sourceAround(file, line) {
|
|
38
|
+
try {
|
|
39
|
+
const lines = readFileSync(file, "utf8").split("\n");
|
|
40
|
+
const start = Math.max(line - CONTEXT_LINES, 1);
|
|
41
|
+
return { start, context: lines.slice(start - 1, Math.min(line + CONTEXT_LINES, lines.length)) };
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return { start: null, context: [] };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** An error's frames, outermost first as the console shows every SDK's, with the source of the app's own. */
|
|
48
|
+
export function frames(stack, root) {
|
|
49
|
+
return parseStack(stack)
|
|
50
|
+
.map((frame) => {
|
|
51
|
+
const own = inApp(frame.file, root);
|
|
52
|
+
const { start, context } = own ? sourceAround(frame.file, frame.line) : { start: null, context: [] };
|
|
53
|
+
return {
|
|
54
|
+
filename: own ? relative(root, frame.file) : frame.file,
|
|
55
|
+
module: "",
|
|
56
|
+
function: shortName(frame.function),
|
|
57
|
+
lineno: frame.line,
|
|
58
|
+
in_app: own,
|
|
59
|
+
context_start: start,
|
|
60
|
+
context,
|
|
61
|
+
locals: {},
|
|
62
|
+
};
|
|
63
|
+
})
|
|
64
|
+
.reverse();
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../src/stack.ts"],"names":[],"mappings":"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"}
|
package/dist/vite.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type IncomingMessage, type ServerResponse } from "node:http";
|
|
2
|
+
export interface TracepanelViteOptions {
|
|
3
|
+
/** The backend project's directory, where its .tracepanel/ is. By default Vite's root and the folders above it. */
|
|
4
|
+
dir?: string;
|
|
5
|
+
/** The console's address itself, such as http://127.0.0.1:8765/ (`tracepanel dev`). TRACEPANEL_CONSOLE too. */
|
|
6
|
+
console?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Record the pages in the browser too (@tracepanel/js/browser): each view, its calls with a traceparent to the
|
|
9
|
+
* backend's traces, its errors and its console. On unless false; `{ service, propagateTo }` sets its options.
|
|
10
|
+
*/
|
|
11
|
+
browser?: false | {
|
|
12
|
+
service?: string;
|
|
13
|
+
propagateTo?: string[];
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
interface ViteServer {
|
|
17
|
+
config: {
|
|
18
|
+
root: string;
|
|
19
|
+
};
|
|
20
|
+
middlewares: {
|
|
21
|
+
use(path: string, handler: (req: IncomingMessage, res: ServerResponse, next: () => void) => void): void;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
interface Plugin {
|
|
25
|
+
name: string;
|
|
26
|
+
apply: "serve";
|
|
27
|
+
configureServer(server: ViteServer): void;
|
|
28
|
+
transformIndexHtml(): {
|
|
29
|
+
tag: string;
|
|
30
|
+
attrs: Record<string, string | boolean>;
|
|
31
|
+
children?: string;
|
|
32
|
+
injectTo: "head-prepend";
|
|
33
|
+
}[];
|
|
34
|
+
}
|
|
35
|
+
export declare function tracepanel(options?: TracepanelViteOptions): Plugin;
|
|
36
|
+
export {};
|
package/dist/vite.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// An SPA on Vite's dev server gets the widget, whatever serves its API (Express, Nest, Django, FastAPI):
|
|
2
|
+
//
|
|
3
|
+
// // vite.config.ts
|
|
4
|
+
// import { tracepanel } from "@tracepanel/js/vite";
|
|
5
|
+
// export default { plugins: [tracepanel({ dir: "../backend" })] };
|
|
6
|
+
//
|
|
7
|
+
// index.html gets widget.min.js, and /__tracepanel__/ on Vite's own origin goes to the console of the backend
|
|
8
|
+
// project's agent, so the widget and its console share the page's origin. The API's responses carry their trace's
|
|
9
|
+
// id; across origins they expose it to the page (the SDKs do that for CORS responses).
|
|
10
|
+
//
|
|
11
|
+
// Only this machine reaches the console here, whatever address Vite listens on (`vite --host` for a phone): the
|
|
12
|
+
// backend sees the proxy's own address, so its own local-only checks (switching the user) would let anyone through.
|
|
13
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
14
|
+
import { request } from "node:http";
|
|
15
|
+
import { dirname, join, resolve } from "node:path";
|
|
16
|
+
import { fileURLToPath } from "node:url";
|
|
17
|
+
import { Starter } from "./agent.js";
|
|
18
|
+
const PREFIX = "/__tracepanel__/";
|
|
19
|
+
// The browser recording, served from this package by the plugin itself: the console doesn't have it.
|
|
20
|
+
const BROWSER = fileURLToPath(new URL("./browser.js", import.meta.url));
|
|
21
|
+
/** The console's address: given, or what the project's agent wrote in .tracepanel/console.addr. */
|
|
22
|
+
function consoleAddress(options, root) {
|
|
23
|
+
const given = options.console ?? process.env.TRACEPANEL_CONSOLE;
|
|
24
|
+
if (given)
|
|
25
|
+
return given;
|
|
26
|
+
const starts = options.dir ? [resolve(root, options.dir)] : [root];
|
|
27
|
+
for (const start of starts) {
|
|
28
|
+
let folder = start;
|
|
29
|
+
for (;;) {
|
|
30
|
+
const file = join(folder, process.env.TRACEPANEL_DIR ?? ".tracepanel", "console.addr");
|
|
31
|
+
if (existsSync(file))
|
|
32
|
+
return readFileSync(file, "utf8").trim() || undefined;
|
|
33
|
+
const parent = dirname(folder);
|
|
34
|
+
if (parent === folder)
|
|
35
|
+
break;
|
|
36
|
+
folder = parent;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
/** A client on this machine: the console's traces, and what it lets a local caller do, are for its developer only. */
|
|
42
|
+
function isLocal(req) {
|
|
43
|
+
const address = req.socket.remoteAddress ?? "";
|
|
44
|
+
return address === "::1" || address.startsWith("127.") || address.startsWith("::ffff:127.");
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Where the backend project keeps its store, for an agent the plugin starts itself: its `dir`, else Vite's root. None
|
|
48
|
+
* when the console is given (a backend that serves its own, as Django does, starts its agent itself).
|
|
49
|
+
*/
|
|
50
|
+
function storeDir(options, root) {
|
|
51
|
+
if (options.console ?? process.env.TRACEPANEL_CONSOLE)
|
|
52
|
+
return undefined;
|
|
53
|
+
return resolve(root, options.dir ?? ".", process.env.TRACEPANEL_DIR ?? ".tracepanel");
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The request, sent on to the console as it came, and its answer back. A GET the agent doesn't answer (its address
|
|
57
|
+
* left over from one that exited) goes once more to what `restart` gives: a new agent's console.
|
|
58
|
+
*/
|
|
59
|
+
function forward(target, req, res, restart) {
|
|
60
|
+
const upstream = request({
|
|
61
|
+
host: target.hostname,
|
|
62
|
+
port: target.port,
|
|
63
|
+
method: req.method,
|
|
64
|
+
path: `${target.pathname.replace(/\/$/, "")}${req.url ?? "/"}`,
|
|
65
|
+
headers: { ...req.headers, host: target.host },
|
|
66
|
+
}, (answer) => {
|
|
67
|
+
res.writeHead(answer.statusCode ?? 502, answer.headers);
|
|
68
|
+
answer.pipe(res);
|
|
69
|
+
});
|
|
70
|
+
upstream.on("error", () => {
|
|
71
|
+
const again = req.method === "GET" ? restart?.() : undefined;
|
|
72
|
+
if (again) {
|
|
73
|
+
forward(new URL(again), req, res);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
res.writeHead(502, { "Content-Type": "text/plain" });
|
|
77
|
+
res.end("Tracepanel's agent doesn't answer: is the backend running in development?");
|
|
78
|
+
});
|
|
79
|
+
req.pipe(upstream);
|
|
80
|
+
}
|
|
81
|
+
// Scripts Vite serves for itself: its client and env (/@vite/), React's refresh runtime (/@react-refresh).
|
|
82
|
+
const VITE_SOURCES = ["/@vite/", "/@react-refresh"];
|
|
83
|
+
export function tracepanel(options = {}) {
|
|
84
|
+
let starter;
|
|
85
|
+
/** The project's agent, started as the SDKs start it (`gone`: the one at its address didn't answer); its console. */
|
|
86
|
+
const started = (root, gone) => {
|
|
87
|
+
const store = storeDir(options, root);
|
|
88
|
+
if (!store)
|
|
89
|
+
return undefined;
|
|
90
|
+
starter ??= new Starter(store);
|
|
91
|
+
return starter.ensure(gone) ? consoleAddress(options, root) : undefined;
|
|
92
|
+
};
|
|
93
|
+
return {
|
|
94
|
+
name: "tracepanel",
|
|
95
|
+
apply: "serve",
|
|
96
|
+
configureServer(server) {
|
|
97
|
+
server.middlewares.use(PREFIX, (req, res) => {
|
|
98
|
+
if (!isLocal(req)) {
|
|
99
|
+
res.writeHead(403, { "Content-Type": "text/plain" });
|
|
100
|
+
res.end("The Tracepanel console answers on this machine only.");
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (req.url === "/browser.js") {
|
|
104
|
+
res.writeHead(200, { "Content-Type": "text/javascript", "Cache-Control": "no-store" });
|
|
105
|
+
res.end(readFileSync(BROWSER));
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const root = server.config.root;
|
|
109
|
+
// No agent yet (the backend starts it on its first request): the page's first load starts it here instead.
|
|
110
|
+
const address = consoleAddress(options, root) ?? started(root, false);
|
|
111
|
+
if (!address) {
|
|
112
|
+
res.writeHead(503, { "Content-Type": "text/plain" });
|
|
113
|
+
res.end("No Tracepanel console yet: start the backend in development, or set the plugin's console.");
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
forward(new URL(address), req, res, () => started(root, true));
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
transformIndexHtml() {
|
|
120
|
+
const widget = {
|
|
121
|
+
tag: "script",
|
|
122
|
+
attrs: { src: `${PREFIX}widget.min.js`, "data-tracepanel-api": PREFIX, defer: true },
|
|
123
|
+
injectTo: "head-prepend",
|
|
124
|
+
};
|
|
125
|
+
if (options.browser === false)
|
|
126
|
+
return [widget];
|
|
127
|
+
// The dev server's own client logs (HMR, its connection) aren't the page's: by where they come from.
|
|
128
|
+
const settings = JSON.stringify({ api: PREFIX, ignoreSources: VITE_SOURCES, ...options.browser });
|
|
129
|
+
const recording = {
|
|
130
|
+
tag: "script",
|
|
131
|
+
attrs: { type: "module" },
|
|
132
|
+
children: `import { record } from "${PREFIX}browser.js"; record(${settings});`,
|
|
133
|
+
injectTo: "head-prepend",
|
|
134
|
+
};
|
|
135
|
+
return [recording, widget];
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=vite.js.map
|
package/dist/vite.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
|
package/dist/widget.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Runtime } from "./runtime.js";
|
|
2
|
+
export interface Badge {
|
|
3
|
+
headers: Record<string, string>;
|
|
4
|
+
/** The script tag for an HTML page, or undefined when there is no console to open. */
|
|
5
|
+
script: string | undefined;
|
|
6
|
+
/** The same tag's attributes, for a framework that renders the tag itself (a React component). */
|
|
7
|
+
scriptAttrs: Record<string, string> | undefined;
|
|
8
|
+
}
|
|
9
|
+
export interface BadgeRequest {
|
|
10
|
+
/** The request's URL: finds its trace when the response goes out outside the request's context. */
|
|
11
|
+
url?: string;
|
|
12
|
+
method: string;
|
|
13
|
+
status: number;
|
|
14
|
+
startedMs: number;
|
|
15
|
+
page: boolean;
|
|
16
|
+
framework: string;
|
|
17
|
+
}
|
|
18
|
+
/** The headers and the script tag for the active request, or undefined outside one. */
|
|
19
|
+
export declare function badge(tracepanel: Runtime, request: BadgeRequest): Badge | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Access-Control-Expose-Headers with Tracepanel's added, for a CORS response (one with Access-Control-Allow-Origin):
|
|
22
|
+
* a page on another origin, an SPA on Vite's dev server, can read the trace's id then. Undefined for other responses.
|
|
23
|
+
*/
|
|
24
|
+
export declare function exposedHeaders(allowOrigin: unknown, existing: unknown): string | undefined;
|
|
25
|
+
/** The tag first in <head>, so the widget wraps fetch before the page's scripts keep a reference to it. */
|
|
26
|
+
export declare function inject(page: string, tag: string): string;
|