@nextscope/next 0.2.0 → 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/README.md +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.js +89 -11
- package/dist/config.js.map +1 -1
- package/dist/inspector/colors.d.ts +2 -0
- package/dist/inspector/colors.js +21 -0
- package/dist/inspector/colors.js.map +1 -0
- package/dist/inspector/model/index.d.ts +24 -3
- package/dist/inspector/model/index.js +229 -5
- package/dist/inspector/model/index.js.map +1 -1
- package/dist/inspector/model/types.d.ts +8 -0
- package/dist/inspector/preferences.d.ts +11 -0
- package/dist/inspector/preferences.js +49 -0
- package/dist/inspector/preferences.js.map +1 -0
- package/dist/inspector/spans.d.ts +7 -0
- package/dist/inspector/spans.js +75 -0
- package/dist/inspector/spans.js.map +1 -0
- package/dist/inspector/zoom.d.ts +35 -0
- package/dist/inspector/zoom.js +86 -0
- package/dist/inspector/zoom.js.map +1 -0
- package/dist/inspector-assets.d.ts +2 -2
- package/dist/inspector-assets.js +2 -2
- package/dist/inspector-assets.js.map +1 -1
- package/dist/mcp.js +19 -0
- package/dist/mcp.js.map +1 -1
- package/dist/next-types.d.ts +1 -0
- package/dist/pids.d.ts +13 -0
- package/dist/pids.js +123 -0
- package/dist/pids.js.map +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +40 -7
- package/dist/server.js.map +1 -1
- package/dist/store.d.ts +9 -0
- package/dist/store.js +80 -4
- package/dist/store.js.map +1 -1
- package/dist/suppression.js +1 -1
- package/dist/suppression.js.map +1 -1
- package/dist/ui.d.ts +2 -0
- package/dist/ui.js +29 -0
- package/dist/ui.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
package/dist/config.d.ts
CHANGED
|
@@ -30,6 +30,7 @@ export declare function mergeRewrites(existing: Rewrites | undefined, nextScopeR
|
|
|
30
30
|
};
|
|
31
31
|
export declare function ensureServer(options: NextScopeServerOptions): Promise<NextScopeServer | undefined>;
|
|
32
32
|
export declare function configureTelemetryEnv(nextScopeEndpoint: string): void;
|
|
33
|
+
export declare function browserTraceEndpoint(route: string): string;
|
|
33
34
|
export declare function snapshotTraceExporterEnv(): {
|
|
34
35
|
endpoint: string | undefined;
|
|
35
36
|
protocol: string | undefined;
|
package/dist/config.js
CHANGED
|
@@ -8,18 +8,20 @@ exports.resolveRewrites = resolveRewrites;
|
|
|
8
8
|
exports.mergeRewrites = mergeRewrites;
|
|
9
9
|
exports.ensureServer = ensureServer;
|
|
10
10
|
exports.configureTelemetryEnv = configureTelemetryEnv;
|
|
11
|
+
exports.browserTraceEndpoint = browserTraceEndpoint;
|
|
11
12
|
exports.snapshotTraceExporterEnv = snapshotTraceExporterEnv;
|
|
12
13
|
exports.isSupportedHttpJson = isSupportedHttpJson;
|
|
14
|
+
const pids_1 = require("./pids");
|
|
13
15
|
const server_1 = require("./server");
|
|
14
16
|
let singletonServer;
|
|
17
|
+
let singletonOwnerClaim;
|
|
15
18
|
let warnedUnsupportedExporter = false;
|
|
16
19
|
let warnedStartupFailure = false;
|
|
17
|
-
let
|
|
20
|
+
let didShowStartupMessage = false;
|
|
18
21
|
const DEFAULT_ROUTE = '/_nextscope';
|
|
19
22
|
const DEFAULT_MAX_TRACES = 200;
|
|
20
23
|
const DEFAULT_DEV_HOST = 'localhost';
|
|
21
24
|
const DEFAULT_DEV_PORT = '3000';
|
|
22
|
-
const STARTUP_REPORTED_ENV = 'NEXTSCOPE_STARTUP_REPORTED';
|
|
23
25
|
const ANSI = {
|
|
24
26
|
bold: '\u001B[1m',
|
|
25
27
|
cyan: '\u001B[36m',
|
|
@@ -34,21 +36,33 @@ function withNextScope(nextConfig = {}, options = {}) {
|
|
|
34
36
|
? await nextConfig(phase, context)
|
|
35
37
|
: nextConfig;
|
|
36
38
|
const runtime = inferRuntime(phase, context);
|
|
37
|
-
if (!
|
|
39
|
+
if (!shouldStartNextScope(runtime, options)) {
|
|
38
40
|
return resolvedConfig;
|
|
39
41
|
}
|
|
40
42
|
const server = await ensureServer({
|
|
41
43
|
route: normalizeRoute(options.route ?? DEFAULT_ROUTE),
|
|
42
44
|
maxTraces: options.maxTraces ?? DEFAULT_MAX_TRACES,
|
|
43
45
|
persistence: options.persistence ?? true,
|
|
46
|
+
devOrigin: formatDevOrigin(),
|
|
44
47
|
});
|
|
45
48
|
if (!server) {
|
|
46
49
|
return resolvedConfig;
|
|
47
50
|
}
|
|
48
51
|
configureTelemetryEnv(server.url);
|
|
49
|
-
|
|
52
|
+
showStartupMessage(server.route);
|
|
50
53
|
return {
|
|
51
54
|
...resolvedConfig,
|
|
55
|
+
// Inline the browser trace endpoint via Next's `env` config so it reaches
|
|
56
|
+
// the client bundle. Mutating process.env in the config callback happens
|
|
57
|
+
// too late for Next's automatic NEXT_PUBLIC_ inlining and never reaches
|
|
58
|
+
// the dev compiler workers, so the browser SDK would otherwise find no
|
|
59
|
+
// endpoint and stay disabled. An app-provided value still wins.
|
|
60
|
+
env: {
|
|
61
|
+
...resolvedConfig.env,
|
|
62
|
+
NEXT_PUBLIC_NEXTSCOPE_TRACE_ENDPOINT: resolvedConfig.env?.NEXT_PUBLIC_NEXTSCOPE_TRACE_ENDPOINT ??
|
|
63
|
+
process.env.NEXT_PUBLIC_NEXTSCOPE_TRACE_ENDPOINT ??
|
|
64
|
+
browserTraceEndpoint(server.route),
|
|
65
|
+
},
|
|
52
66
|
rewrites: async () => {
|
|
53
67
|
const existing = await resolveRewrites(resolvedConfig.rewrites);
|
|
54
68
|
return mergeRewrites(existing, {
|
|
@@ -62,11 +76,12 @@ function withNextScope(nextConfig = {}, options = {}) {
|
|
|
62
76
|
return wrapped;
|
|
63
77
|
}
|
|
64
78
|
function resetNextScopeForTests() {
|
|
79
|
+
singletonOwnerClaim?.release();
|
|
65
80
|
singletonServer = undefined;
|
|
81
|
+
singletonOwnerClaim = undefined;
|
|
66
82
|
warnedUnsupportedExporter = false;
|
|
67
83
|
warnedStartupFailure = false;
|
|
68
|
-
|
|
69
|
-
delete process.env[STARTUP_REPORTED_ENV];
|
|
84
|
+
didShowStartupMessage = false;
|
|
70
85
|
}
|
|
71
86
|
function shouldEnable(runtime, options = {}) {
|
|
72
87
|
if (options.enabled === false) {
|
|
@@ -77,6 +92,36 @@ function shouldEnable(runtime, options = {}) {
|
|
|
77
92
|
}
|
|
78
93
|
return runtime.dev === true || runtime.command === 'dev';
|
|
79
94
|
}
|
|
95
|
+
function shouldStartNextScope(runtime, options = {}, processInfo = currentProcessInfo()) {
|
|
96
|
+
if (options.enabled === false) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
if (isNextTelemetryDetachedFlush(processInfo.argv)) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
if (hasInheritedNextWorkerEnvWithoutIpc(processInfo)) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
if (isStandardNextDevServerWorker(processInfo)) {
|
|
106
|
+
return shouldEnable(runtime, options);
|
|
107
|
+
}
|
|
108
|
+
if (options.enabled === true) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
function isNextTelemetryDetachedFlush(argv) {
|
|
114
|
+
return argv.some((arg) => normalizeProcessArg(arg).endsWith('/next/dist/telemetry/detached-flush.js'));
|
|
115
|
+
}
|
|
116
|
+
function hasInheritedNextWorkerEnvWithoutIpc(processInfo) {
|
|
117
|
+
return hasNextWorkerEnv(processInfo.env) && !processInfo.hasIpc;
|
|
118
|
+
}
|
|
119
|
+
function isStandardNextDevServerWorker(processInfo) {
|
|
120
|
+
return (processInfo.env.__NEXT_DEV_SERVER === '1' &&
|
|
121
|
+
processInfo.env.NEXT_PRIVATE_WORKER === '1' &&
|
|
122
|
+
processInfo.hasIpc &&
|
|
123
|
+
processInfo.argv.some((arg) => normalizeProcessArg(arg).endsWith('/next/dist/server/lib/start-server.js')));
|
|
124
|
+
}
|
|
80
125
|
function normalizeRoute(route) {
|
|
81
126
|
const trimmed = route.trim();
|
|
82
127
|
const withSlash = trimmed.startsWith('/') ? trimmed : `/${trimmed}`;
|
|
@@ -104,11 +149,28 @@ async function ensureServer(options) {
|
|
|
104
149
|
if (singletonServer) {
|
|
105
150
|
return singletonServer;
|
|
106
151
|
}
|
|
152
|
+
const ownerClaim = (0, pids_1.claimSidecarOwner)();
|
|
153
|
+
if (!ownerClaim) {
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
107
156
|
try {
|
|
108
157
|
singletonServer = await (0, server_1.startNextScopeServer)(options);
|
|
158
|
+
singletonOwnerClaim = ownerClaim;
|
|
159
|
+
const closeServer = singletonServer.close;
|
|
160
|
+
singletonServer.close = async () => {
|
|
161
|
+
try {
|
|
162
|
+
await closeServer();
|
|
163
|
+
}
|
|
164
|
+
finally {
|
|
165
|
+
singletonOwnerClaim?.release();
|
|
166
|
+
singletonOwnerClaim = undefined;
|
|
167
|
+
singletonServer = undefined;
|
|
168
|
+
}
|
|
169
|
+
};
|
|
109
170
|
return singletonServer;
|
|
110
171
|
}
|
|
111
172
|
catch (error) {
|
|
173
|
+
ownerClaim.release();
|
|
112
174
|
if (!warnedStartupFailure) {
|
|
113
175
|
warnedStartupFailure = true;
|
|
114
176
|
console.warn(`[nextscope] Failed to start local trace inspector: ${formatError(error)}`);
|
|
@@ -130,6 +192,9 @@ function configureTelemetryEnv(nextScopeEndpoint) {
|
|
|
130
192
|
process.env.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL = 'http/json';
|
|
131
193
|
process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = nextScopeTraceEndpoint;
|
|
132
194
|
}
|
|
195
|
+
function browserTraceEndpoint(route) {
|
|
196
|
+
return `${normalizeRoute(route)}/v1/traces`;
|
|
197
|
+
}
|
|
133
198
|
function snapshotTraceExporterEnv() {
|
|
134
199
|
return {
|
|
135
200
|
endpoint: process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT ??
|
|
@@ -158,6 +223,19 @@ function inferRuntime(phase, context) {
|
|
|
158
223
|
: phase === 'phase-development-server',
|
|
159
224
|
};
|
|
160
225
|
}
|
|
226
|
+
function currentProcessInfo() {
|
|
227
|
+
return {
|
|
228
|
+
argv: process.argv,
|
|
229
|
+
env: process.env,
|
|
230
|
+
hasIpc: typeof process.send === 'function',
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
function hasNextWorkerEnv(env) {
|
|
234
|
+
return env.__NEXT_DEV_SERVER === '1' || env.NEXT_PRIVATE_WORKER === '1';
|
|
235
|
+
}
|
|
236
|
+
function normalizeProcessArg(arg) {
|
|
237
|
+
return arg.replace(/\\/g, '/');
|
|
238
|
+
}
|
|
161
239
|
function warnUnsupportedExporter(protocol) {
|
|
162
240
|
if (warnedUnsupportedExporter) {
|
|
163
241
|
return;
|
|
@@ -165,12 +243,12 @@ function warnUnsupportedExporter(protocol) {
|
|
|
165
243
|
warnedUnsupportedExporter = true;
|
|
166
244
|
console.warn(`[nextscope] Existing OTLP trace exporter uses unsupported protocol "${protocol ?? 'unset'}"; capturing locally but forwarding is disabled.`);
|
|
167
245
|
}
|
|
168
|
-
function
|
|
169
|
-
if (
|
|
246
|
+
function showStartupMessage(route) {
|
|
247
|
+
if (didShowStartupMessage ||
|
|
248
|
+
(process.env.__NEXT_DEV_SERVER && !(0, pids_1.claimDevServerPidfile)())) {
|
|
170
249
|
return;
|
|
171
250
|
}
|
|
172
|
-
|
|
173
|
-
process.env[STARTUP_REPORTED_ENV] = '1';
|
|
251
|
+
didShowStartupMessage = true;
|
|
174
252
|
console.info(formatStartupMessage(formatInspectorUrl(route)));
|
|
175
253
|
}
|
|
176
254
|
function formatStartupMessage(inspectorUrl) {
|
|
@@ -178,7 +256,7 @@ function formatStartupMessage(inspectorUrl) {
|
|
|
178
256
|
`${ansi('View traces at', ANSI.green)}\n` +
|
|
179
257
|
`${ansi(' -> ', ANSI.bold)}${ansi(inspectorUrl, ANSI.bold, ANSI.underline)}\n\n` +
|
|
180
258
|
`${ansi('Connect your agent:', ANSI.green)}\n` +
|
|
181
|
-
`${ansi(' $ ', ANSI.bold)}${ansi('npx add-mcp @nextscope/mcp@latest', ANSI.yellow)}\n`);
|
|
259
|
+
`${ansi(' $ ', ANSI.bold)}${ansi('npx add-mcp @nextscope/mcp@latest -n nextscope', ANSI.yellow)}\n`);
|
|
182
260
|
}
|
|
183
261
|
function ansi(text, ...styles) {
|
|
184
262
|
return `${styles.join('')}${text}${ANSI.reset}`;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SERVICE_COLORS = void 0;
|
|
4
|
+
exports.serviceColorMap = serviceColorMap;
|
|
5
|
+
exports.SERVICE_COLORS = [
|
|
6
|
+
'#5da9ff',
|
|
7
|
+
'#77d68d',
|
|
8
|
+
'#ffbf66',
|
|
9
|
+
'#d89cff',
|
|
10
|
+
'#ff7e8a',
|
|
11
|
+
'#65d4d4',
|
|
12
|
+
'#d0dc68',
|
|
13
|
+
];
|
|
14
|
+
function serviceColorMap(services) {
|
|
15
|
+
const map = new Map();
|
|
16
|
+
const names = services.length ? services : ['unknown'];
|
|
17
|
+
names.forEach((service, index) => map.set(service, exports.SERVICE_COLORS[index % exports.SERVICE_COLORS.length]));
|
|
18
|
+
map.set('unknown', exports.SERVICE_COLORS[0]);
|
|
19
|
+
return map;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/inspector/colors.ts"],"names":[],"mappings":";;;AAUA,0CAMC;AAhBY,QAAA,cAAc,GAAG;IAC5B,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACV,CAAA;AAED,SAAgB,eAAe,CAAC,QAAkB;IAChD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAA;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACtD,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAc,CAAC,KAAK,GAAG,sBAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAClG,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,sBAAc,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { FlatSpanRow, InspectorDiagnosticSpan, InspectorSpan, InspectorSpanEvent, InspectorTrace, InspectorTraceSummary } from './types';
|
|
2
|
-
export type { FlatSpanRow, InspectorDiagnosticSpan, InspectorRequestSegment, InspectorSpan, InspectorSpanEvent, InspectorStatus, InspectorTrace, InspectorTraceSummary } from './types';
|
|
1
|
+
import type { FlatSpanRow, InspectorDiagnosticSpan, InspectorErrorSummary, InspectorSpan, InspectorSpanEvent, InspectorTrace, InspectorTraceSummary } from './types';
|
|
2
|
+
export type { BrowserEventKind, FlatSpanRow, InspectorDiagnosticSpan, InspectorErrorSummary, InspectorRequestSegment, InspectorSpan, InspectorSpanEvent, InspectorStatus, InspectorTrace, InspectorTraceSummary } from './types';
|
|
3
3
|
export interface SpanSearchResult {
|
|
4
4
|
matches: Set<string>;
|
|
5
5
|
visible: Set<string>;
|
|
@@ -34,6 +34,8 @@ export interface ParsedTraceFilter {
|
|
|
34
34
|
text: string;
|
|
35
35
|
route: string[];
|
|
36
36
|
service: string[];
|
|
37
|
+
method: string[];
|
|
38
|
+
status: string[];
|
|
37
39
|
duration: DurationFilter[];
|
|
38
40
|
errors?: boolean;
|
|
39
41
|
}
|
|
@@ -41,6 +43,9 @@ export interface DurationFilter {
|
|
|
41
43
|
operator: '>' | '>=' | '<' | '<=' | '=';
|
|
42
44
|
valueMs: number;
|
|
43
45
|
}
|
|
46
|
+
export type InspectorTraceWithErrors = InspectorTrace & {
|
|
47
|
+
errors: InspectorErrorSummary[];
|
|
48
|
+
};
|
|
44
49
|
export interface RouteTraceGroup {
|
|
45
50
|
route: string;
|
|
46
51
|
traces: InspectorTraceSummary[];
|
|
@@ -54,10 +59,19 @@ export interface RouteStats {
|
|
|
54
59
|
p95Ms: number;
|
|
55
60
|
errorRate: number;
|
|
56
61
|
}
|
|
62
|
+
export type TraceOrigin = 'server' | 'browser';
|
|
63
|
+
export interface OriginTraceSection {
|
|
64
|
+
origin: TraceOrigin;
|
|
65
|
+
label: string;
|
|
66
|
+
traces: InspectorTraceSummary[];
|
|
67
|
+
}
|
|
57
68
|
export declare function traceSelectionKey(trace: Pick<InspectorTraceSummary, 'traceId' | 'requestSegmentId'>): string;
|
|
69
|
+
export declare const BROWSER_SERVICE_NAME = "nextscope-browser";
|
|
70
|
+
export declare function isBrowserTrace(trace: Pick<InspectorTraceSummary, 'serviceNames'> & Partial<Pick<InspectorTraceSummary, 'browserKind' | 'traceKind'>>): boolean;
|
|
58
71
|
export declare function selectVisibleTraceKey(current: string | null, traces: Pick<InspectorTraceSummary, 'traceId' | 'requestSegmentId'>[]): string | null;
|
|
59
|
-
export declare function focusTraceOnSegment(trace: InspectorTrace, requestSegmentId: string):
|
|
72
|
+
export declare function focusTraceOnSegment(trace: InspectorTrace, requestSegmentId: string): InspectorTraceWithErrors;
|
|
60
73
|
export declare function errorSpanIds(roots: InspectorSpan[]): string[];
|
|
74
|
+
export declare function traceErrors(roots: InspectorSpan[]): InspectorErrorSummary[];
|
|
61
75
|
export declare function diagnosticSpanIds(spans: InspectorDiagnosticSpan[]): string[];
|
|
62
76
|
export declare function flattenVisibleSpans(roots: InspectorSpan[], collapsedIds: ReadonlySet<string>, search?: SpanSearchResult, matchesOnly?: boolean): FlatSpanRow[];
|
|
63
77
|
export declare function deriveSpanSearch(roots: InspectorSpan[], query: string): SpanSearchResult;
|
|
@@ -66,6 +80,10 @@ export declare function searchableTraceText(trace: InspectorTraceSummary): strin
|
|
|
66
80
|
export declare function matchesSearchText(text: string, query: string): boolean;
|
|
67
81
|
export declare function parseTraceFilterQuery(query: string): ParsedTraceFilter;
|
|
68
82
|
export declare function traceMatchesFilter(trace: InspectorTraceSummary, filter: ParsedTraceFilter): boolean;
|
|
83
|
+
export declare function traceDisplayTitle(trace: InspectorTraceSummary): string;
|
|
84
|
+
export declare function browserOriginPage(trace: InspectorTraceSummary): string | undefined;
|
|
85
|
+
export declare function spanDisplayName(span: Pick<InspectorSpan, 'name' | 'attributes'>): string;
|
|
86
|
+
export declare function partitionTracesByOrigin(traces: InspectorTraceSummary[]): OriginTraceSection[];
|
|
69
87
|
export declare function routeTraceGroups(traces: InspectorTraceSummary[]): RouteTraceGroup[];
|
|
70
88
|
export declare function routeStats(traces: InspectorTraceSummary[]): RouteStats;
|
|
71
89
|
export declare function calculateTimelineBar(span: Pick<InspectorSpan, 'offsetMs' | 'durationMs'>, range: ZoomRange, minWidthPct?: number): TimelineBar;
|
|
@@ -77,3 +95,6 @@ export declare function zoomAt(range: ZoomRange, fullDurationMs: number, anchorP
|
|
|
77
95
|
export declare function formatDuration(value: number): string;
|
|
78
96
|
export declare function formatOffset(value: number): string;
|
|
79
97
|
export declare function formatTimestamp(value: string | number | Date): string;
|
|
98
|
+
export declare function formatTimestampLocal(value: string | number | Date): string;
|
|
99
|
+
export declare function formatTimestampUTC(value: string | number | Date): string;
|
|
100
|
+
export declare function formatRelativeTime(value: string | number | Date): string;
|