@rangojs/router 0.0.0-experimental.24 → 0.0.0-experimental.25
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/dist/vite/index.js +1 -1
- package/package.json +1 -1
- package/src/router/middleware.ts +3 -3
- package/src/router/router-interfaces.ts +6 -0
- package/src/router.ts +3 -0
- package/src/rsc/handler.ts +5 -0
package/dist/vite/index.js
CHANGED
|
@@ -1745,7 +1745,7 @@ import { resolve } from "node:path";
|
|
|
1745
1745
|
// package.json
|
|
1746
1746
|
var package_default = {
|
|
1747
1747
|
name: "@rangojs/router",
|
|
1748
|
-
version: "0.0.0-experimental.
|
|
1748
|
+
version: "0.0.0-experimental.25",
|
|
1749
1749
|
description: "Django-inspired RSC router with composable URL patterns",
|
|
1750
1750
|
keywords: [
|
|
1751
1751
|
"react",
|
package/package.json
CHANGED
package/src/router/middleware.ts
CHANGED
|
@@ -20,7 +20,7 @@ import type {
|
|
|
20
20
|
} from "./middleware-types.js";
|
|
21
21
|
import { _getRequestContext } from "../server/request-context.js";
|
|
22
22
|
import { isAutoGeneratedRouteName } from "../route-name.js";
|
|
23
|
-
import { appendMetric } from "./metrics.js";
|
|
23
|
+
import { appendMetric, createMetricsStore } from "./metrics.js";
|
|
24
24
|
|
|
25
25
|
// Re-export types and cookie utilities for backward compatibility
|
|
26
26
|
export type {
|
|
@@ -256,6 +256,7 @@ export function createMiddlewareContext<TEnv>(
|
|
|
256
256
|
const reqCtx = _getRequestContext();
|
|
257
257
|
if (reqCtx) {
|
|
258
258
|
reqCtx._debugPerformance = true;
|
|
259
|
+
reqCtx._metricsStore ??= createMetricsStore(true);
|
|
259
260
|
}
|
|
260
261
|
},
|
|
261
262
|
};
|
|
@@ -380,14 +381,13 @@ export async function executeMiddleware<TEnv>(
|
|
|
380
381
|
responseHolder,
|
|
381
382
|
reverse,
|
|
382
383
|
);
|
|
383
|
-
const metricsStore = _getRequestContext()?._metricsStore;
|
|
384
384
|
const metricStart = performance.now();
|
|
385
385
|
let middlewareFinished = false;
|
|
386
386
|
const finishMiddleware = () => {
|
|
387
387
|
if (!middlewareFinished) {
|
|
388
388
|
middlewareFinished = true;
|
|
389
389
|
appendMetric(
|
|
390
|
-
|
|
390
|
+
_getRequestContext()?._metricsStore,
|
|
391
391
|
getMiddlewareMetricLabel(entry, middlewareOrdinal),
|
|
392
392
|
metricStart,
|
|
393
393
|
performance.now() - metricStart,
|
|
@@ -269,6 +269,12 @@ export interface RSCRouterInternal<
|
|
|
269
269
|
*/
|
|
270
270
|
readonly warmupEnabled: boolean;
|
|
271
271
|
|
|
272
|
+
/**
|
|
273
|
+
* Whether router-wide performance debugging is enabled.
|
|
274
|
+
* Used by the request handler to create metrics before middleware runs.
|
|
275
|
+
*/
|
|
276
|
+
readonly debugPerformance?: boolean;
|
|
277
|
+
|
|
272
278
|
/**
|
|
273
279
|
* Whether ?__debug_manifest is allowed in production.
|
|
274
280
|
* Always enabled in development.
|
package/src/router.ts
CHANGED
|
@@ -885,6 +885,9 @@ export function createRouter<TEnv = any>(
|
|
|
885
885
|
// Expose warmup enabled flag for handler and client
|
|
886
886
|
warmupEnabled,
|
|
887
887
|
|
|
888
|
+
// Expose router-wide performance debugging for request-level metrics setup
|
|
889
|
+
debugPerformance,
|
|
890
|
+
|
|
888
891
|
// Expose debug manifest flag for handler
|
|
889
892
|
allowDebugManifest: allowDebugManifestOption,
|
|
890
893
|
|
package/src/rsc/handler.ts
CHANGED
|
@@ -66,6 +66,7 @@ import {
|
|
|
66
66
|
createDefaultTimeoutResponse,
|
|
67
67
|
type TimeoutPhase,
|
|
68
68
|
} from "../router/timeout.js";
|
|
69
|
+
import { createMetricsStore } from "../router/metrics.js";
|
|
69
70
|
|
|
70
71
|
/**
|
|
71
72
|
* Create an RSC request handler.
|
|
@@ -381,6 +382,10 @@ export function createRSCHandler<
|
|
|
381
382
|
executionContext: executionCtx,
|
|
382
383
|
themeConfig: router.themeConfig,
|
|
383
384
|
});
|
|
385
|
+
if (router.debugPerformance) {
|
|
386
|
+
requestContext._debugPerformance = true;
|
|
387
|
+
requestContext._metricsStore ??= createMetricsStore(true);
|
|
388
|
+
}
|
|
384
389
|
// Wire background error reporting so "use cache" and other subsystems
|
|
385
390
|
// can surface non-fatal errors through the router's onError callback.
|
|
386
391
|
requestContext._reportBackgroundError = (
|