reroute-js 0.45.8 → 0.45.9
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/cli/bin.d.ts +1 -1
- package/cli/bin.js +75 -20
- package/cli/bin.js.map +7 -6
- package/cli/index.d.ts +1 -1
- package/cli/index.js +4 -4
- package/cli/index.js.map +1 -1
- package/cli/src/cli.d.ts +1 -1
- package/cli/src/commands/analyze.d.ts +1 -1
- package/cli/src/commands/build.d.ts +1 -1
- package/cli/src/commands/dev.d.ts +1 -1
- package/cli/src/commands/gen.d.ts +1 -1
- package/cli/src/commands/index.d.ts +1 -1
- package/cli/src/commands/init.d.ts +1 -1
- package/cli/src/commands/lib/assets.d.ts +1 -1
- package/cli/src/commands/lib/bundler.d.ts +1 -1
- package/cli/src/commands/lib/command.d.ts +1 -1
- package/cli/src/commands/lib/env.d.ts +1 -1
- package/cli/src/commands/lib/index.d.ts +1 -1
- package/cli/src/commands/lib/log.d.ts +1 -1
- package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
- package/cli/src/commands/lib/markdown/index.d.ts +1 -1
- package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
- package/cli/src/commands/lib/production.d.ts +1 -1
- package/cli/src/commands/lib/server.d.ts +1 -1
- package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
- package/cli/src/commands/lib/streaming/suspense.d.ts +1 -1
- package/cli/src/commands/lib/tailwind.d.ts +1 -1
- package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
- package/cli/src/commands/lib/version.d.ts +1 -1
- package/cli/src/commands/og.d.ts +1 -1
- package/cli/src/commands/start.d.ts +1 -1
- package/cli/src/index.d.ts +1 -1
- package/core/index.d.ts +1 -1
- package/core/index.js +63 -8
- package/core/index.js.map +7 -6
- package/core/src/bundler/hash.d.ts +1 -1
- package/core/src/bundler/index.d.ts +1 -1
- package/core/src/config.d.ts +1 -1
- package/core/src/content/discovery.d.ts +1 -1
- package/core/src/content/index.d.ts +1 -1
- package/core/src/content/metadata.d.ts +1 -1
- package/core/src/index.d.ts +1 -1
- package/core/src/llms/extractor.d.ts +1 -1
- package/core/src/llms/formatter.d.ts +1 -1
- package/core/src/llms/full-generator.d.ts +1 -1
- package/core/src/llms/index-generator.d.ts +1 -1
- package/core/src/llms/index.d.ts +1 -1
- package/core/src/og/discovery.d.ts +1 -1
- package/core/src/og/index.d.ts +1 -1
- package/core/src/og/meta.d.ts +1 -1
- package/core/src/og/render.d.ts +1 -1
- package/core/src/og/types.d.ts +1 -1
- package/core/src/robots/discovery.d.ts +1 -1
- package/core/src/robots/generator.d.ts +1 -1
- package/core/src/robots/index.d.ts +1 -1
- package/core/src/robots/policies.d.ts +1 -1
- package/core/src/rss/discovery.d.ts +1 -1
- package/core/src/rss/generator.d.ts +1 -1
- package/core/src/rss/index.d.ts +1 -1
- package/core/src/sitemap/discovery.d.ts +1 -1
- package/core/src/sitemap/generator.d.ts +1 -1
- package/core/src/sitemap/index.d.ts +1 -1
- package/core/src/ssr/index.d.ts +1 -1
- package/core/src/ssr/lib/cache.d.ts +1 -1
- package/core/src/ssr/lib/cleanup.d.ts +15 -0
- package/core/src/ssr/lib/cleanup.d.ts.map +1 -0
- package/core/src/ssr/lib/collections.d.ts +1 -1
- package/core/src/ssr/lib/compression.d.ts +1 -1
- package/core/src/ssr/lib/compute/content.d.ts +1 -1
- package/core/src/ssr/lib/compute/index.d.ts +1 -1
- package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
- package/core/src/ssr/lib/compute/routes.d.ts +1 -1
- package/core/src/ssr/lib/data.d.ts +1 -1
- package/core/src/ssr/lib/html.d.ts +1 -1
- package/core/src/ssr/lib/imports.d.ts +1 -1
- package/core/src/ssr/lib/index.d.ts +2 -1
- package/core/src/ssr/lib/index.d.ts.map +1 -1
- package/core/src/ssr/lib/layouts.d.ts +1 -1
- package/core/src/ssr/lib/metadata.d.ts +1 -1
- package/core/src/ssr/lib/mime.d.ts +1 -1
- package/core/src/ssr/lib/modules.d.ts +1 -1
- package/core/src/ssr/lib/path.d.ts +1 -1
- package/core/src/ssr/lib/preload.d.ts +1 -1
- package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
- package/core/src/ssr/lib/scripts/data.d.ts +1 -1
- package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
- package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
- package/core/src/ssr/lib/scripts/index.d.ts +1 -1
- package/core/src/ssr/lib/seed.d.ts +1 -1
- package/core/src/ssr/lib/serialize.d.ts +1 -1
- package/core/src/ssr/lib/setup.d.ts +1 -1
- package/core/src/ssr/lib/setup.d.ts.map +1 -1
- package/core/src/ssr/lib/styles.d.ts +1 -1
- package/core/src/ssr/lib/template.d.ts +1 -1
- package/core/src/ssr/lib/types.d.ts +1 -1
- package/core/src/ssr/render.d.ts +1 -1
- package/core/src/ssr/stream.d.ts +1 -1
- package/core/src/ssr/stream.d.ts.map +1 -1
- package/elysia/index.d.ts +1 -1
- package/elysia/index.js +63 -8
- package/elysia/index.js.map +7 -6
- package/elysia/src/index.d.ts +1 -1
- package/elysia/src/libs/assets.d.ts +1 -1
- package/elysia/src/libs/cache.d.ts +1 -1
- package/elysia/src/libs/caching.d.ts +1 -1
- package/elysia/src/libs/http.d.ts +1 -1
- package/elysia/src/libs/image.d.ts +1 -1
- package/elysia/src/libs/index.d.ts +1 -1
- package/elysia/src/libs/llms.d.ts +1 -1
- package/elysia/src/libs/response.d.ts +1 -1
- package/elysia/src/libs/serving.d.ts +1 -1
- package/elysia/src/plugin.d.ts +1 -1
- package/elysia/src/routes/artifacts.d.ts +1 -1
- package/elysia/src/routes/content.d.ts +1 -1
- package/elysia/src/routes/image.d.ts +1 -1
- package/elysia/src/routes/index.d.ts +1 -1
- package/elysia/src/routes/internal.d.ts +1 -1
- package/elysia/src/routes/llms.d.ts +1 -1
- package/elysia/src/routes/og.d.ts +1 -1
- package/elysia/src/routes/redirects.d.ts +1 -1
- package/elysia/src/routes/robots.d.ts +1 -1
- package/elysia/src/routes/rss.d.ts +1 -1
- package/elysia/src/routes/search.d.ts +1 -1
- package/elysia/src/routes/sitemap.d.ts +1 -1
- package/elysia/src/routes/ssr.d.ts +1 -1
- package/elysia/src/routes/static.d.ts +1 -1
- package/elysia/src/types.d.ts +1 -1
- package/package.json +1 -1
- package/react/index.d.ts +1 -1
- package/react/index.js +2 -2
- package/react/index.js.map +1 -1
- package/react/src/components/ClientOnly.d.ts +1 -1
- package/react/src/components/ContentRoute.d.ts +1 -1
- package/react/src/components/Image.d.ts +1 -1
- package/react/src/components/LazyRoute.d.ts +1 -1
- package/react/src/components/Link.d.ts +1 -1
- package/react/src/components/Markdown.d.ts +1 -1
- package/react/src/components/Outlet.d.ts +1 -1
- package/react/src/components/index.d.ts +1 -1
- package/react/src/hooks/index.d.ts +1 -1
- package/react/src/hooks/useContent.d.ts +1 -1
- package/react/src/hooks/useData.d.ts +1 -1
- package/react/src/hooks/useFeed.d.ts +1 -1
- package/react/src/hooks/useLayoutData.d.ts +1 -1
- package/react/src/hooks/useLlms.d.ts +1 -1
- package/react/src/hooks/useNavigate.d.ts +1 -1
- package/react/src/hooks/useParams.d.ts +1 -1
- package/react/src/hooks/useRouter.d.ts +1 -1
- package/react/src/hooks/useSearch.d.ts +1 -1
- package/react/src/hooks/useSearchParams.d.ts +1 -1
- package/react/src/hooks/useToc.d.ts +1 -1
- package/react/src/index.d.ts +1 -1
- package/react/src/lib/collection.d.ts +1 -1
- package/react/src/lib/content.d.ts +1 -1
- package/react/src/lib/head.d.ts +1 -1
- package/react/src/lib/index.d.ts +1 -1
- package/react/src/lib/lazy-route.d.ts +1 -1
- package/react/src/lib/route-loader.d.ts +1 -1
- package/react/src/providers/ContentProvider.d.ts +1 -1
- package/react/src/providers/RerouteProvider.d.ts +1 -1
- package/react/src/providers/RouterProvider.d.ts +1 -1
- package/react/src/providers/index.d.ts +1 -1
- package/react/src/types/any.d.ts +1 -1
- package/react/src/types/index.d.ts +1 -1
- package/react/src/types/router.d.ts +1 -1
- package/telemetry/react.d.ts +1 -1
- package/telemetry/react.js +2 -2
- package/telemetry/react.js.map +1 -1
- package/telemetry/server.d.ts +1 -1
- package/telemetry/server.js +2 -3
- package/telemetry/server.js.map +5 -5
- package/telemetry/src/react/api.d.ts +1 -1
- package/telemetry/src/react/context.d.ts +1 -1
- package/telemetry/src/react/index.d.ts +1 -1
- package/telemetry/src/react/telemetry.d.ts +1 -1
- package/telemetry/src/server/context.d.ts +1 -1
- package/telemetry/src/server/headers/extractor.d.ts +1 -1
- package/telemetry/src/server/headers/index.d.ts +1 -1
- package/telemetry/src/server/headers/presets.d.ts +1 -1
- package/telemetry/src/server/index.d.ts +1 -1
- package/telemetry/src/server/instrumentation.d.ts +1 -1
- package/telemetry/src/server/plugin.d.ts +1 -1
- package/telemetry/src/server/sourcemap.d.ts +1 -1
package/elysia/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* reroute-js v0.45.
|
|
2
|
+
* reroute-js v0.45.9
|
|
3
3
|
*
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 stewones <hi@stewan.io>
|
|
@@ -660,6 +660,32 @@ var init_cache = __esm(() => {
|
|
|
660
660
|
statusCache = getGlobalStatusCache();
|
|
661
661
|
});
|
|
662
662
|
|
|
663
|
+
// packages/core/src/ssr/lib/cleanup.ts
|
|
664
|
+
function removePathVariants(store, pathname) {
|
|
665
|
+
if (pathname in store) {
|
|
666
|
+
delete store[pathname];
|
|
667
|
+
}
|
|
668
|
+
const pathnameWithoutQuery = pathname.split("?")[0];
|
|
669
|
+
if (pathnameWithoutQuery && pathnameWithoutQuery !== pathname && pathnameWithoutQuery in store) {
|
|
670
|
+
delete store[pathnameWithoutQuery];
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
function cleanupPathScopedSSRData(pathname) {
|
|
674
|
+
if (!pathname)
|
|
675
|
+
return;
|
|
676
|
+
try {
|
|
677
|
+
const g = globalThis;
|
|
678
|
+
const dataStore = g.__REROUTE_DATA__;
|
|
679
|
+
if (!dataStore || typeof dataStore !== "object") {
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
682
|
+
removePathVariants(dataStore, pathname);
|
|
683
|
+
if (Object.keys(dataStore).length === 0) {
|
|
684
|
+
delete g.__REROUTE_DATA__;
|
|
685
|
+
}
|
|
686
|
+
} catch {}
|
|
687
|
+
}
|
|
688
|
+
|
|
663
689
|
// packages/core/src/ssr/lib/imports.ts
|
|
664
690
|
import { pathToFileURL as pathToFileURL3 } from "node:url";
|
|
665
691
|
async function dynamicImport(absolutePath, isWatchMode) {
|
|
@@ -2867,18 +2893,22 @@ var init_styles = () => {};
|
|
|
2867
2893
|
// packages/core/src/ssr/lib/setup.ts
|
|
2868
2894
|
async function performSSRSetup(options, streaming = false) {
|
|
2869
2895
|
const { pathname } = options;
|
|
2896
|
+
const timeoutState = { timedOut: false };
|
|
2870
2897
|
const setupTimeout = streaming ? 1e4 : 30000;
|
|
2898
|
+
let timeoutId = null;
|
|
2871
2899
|
const timeoutPromise = new Promise((_, reject) => {
|
|
2872
|
-
setTimeout(() => {
|
|
2900
|
+
timeoutId = setTimeout(() => {
|
|
2901
|
+
timeoutState.timedOut = true;
|
|
2873
2902
|
reject(new Error(`[reroute] SSR setup timeout after ${setupTimeout}ms for ${pathname}`));
|
|
2874
2903
|
}, setupTimeout);
|
|
2875
2904
|
});
|
|
2876
2905
|
try {
|
|
2877
2906
|
return await Promise.race([
|
|
2878
|
-
withParentSpan(options.parentSpan, () => performSSRSetupInternal(options, streaming)),
|
|
2907
|
+
withParentSpan(options.parentSpan, () => performSSRSetupInternal(options, streaming, timeoutState)),
|
|
2879
2908
|
timeoutPromise
|
|
2880
2909
|
]);
|
|
2881
2910
|
} catch (error) {
|
|
2911
|
+
cleanupPathScopedSSRData(pathname);
|
|
2882
2912
|
console.error("[reroute] SSR setup error:", error);
|
|
2883
2913
|
return {
|
|
2884
2914
|
ssrData: {},
|
|
@@ -2891,9 +2921,13 @@ async function performSSRSetup(options, streaming = false) {
|
|
|
2891
2921
|
inlineStyleTag: "",
|
|
2892
2922
|
metadataResult: { perPageHead: "" }
|
|
2893
2923
|
};
|
|
2924
|
+
} finally {
|
|
2925
|
+
if (timeoutId) {
|
|
2926
|
+
clearTimeout(timeoutId);
|
|
2927
|
+
}
|
|
2894
2928
|
}
|
|
2895
2929
|
}
|
|
2896
|
-
async function performSSRSetupInternal(options, streaming) {
|
|
2930
|
+
async function performSSRSetupInternal(options, streaming, timeoutState) {
|
|
2897
2931
|
const debug = options.debug ?? false;
|
|
2898
2932
|
const t0 = debug ? performance.now() : 0;
|
|
2899
2933
|
const {
|
|
@@ -2906,6 +2940,11 @@ async function performSSRSetupInternal(options, streaming) {
|
|
|
2906
2940
|
searchParams,
|
|
2907
2941
|
ogConfig
|
|
2908
2942
|
} = options;
|
|
2943
|
+
const assertNotTimedOut = () => {
|
|
2944
|
+
if (timeoutState.timedOut) {
|
|
2945
|
+
throw new Error(`[reroute] SSR setup cancelled for ${pathname}`);
|
|
2946
|
+
}
|
|
2947
|
+
};
|
|
2909
2948
|
await withSpan("ssr.seed", async (span) => {
|
|
2910
2949
|
span.setAttribute("pathname", pathname);
|
|
2911
2950
|
span.setAttribute("streaming", streaming);
|
|
@@ -2913,6 +2952,7 @@ async function performSSRSetupInternal(options, streaming) {
|
|
|
2913
2952
|
if (debug)
|
|
2914
2953
|
console.log(`[Setup] ${pathname} - seedModule: ${(performance.now() - t0).toFixed(2)}ms`);
|
|
2915
2954
|
});
|
|
2955
|
+
assertNotTimedOut();
|
|
2916
2956
|
resetSSRAccessTracking();
|
|
2917
2957
|
const bundlePreload = createBundlePreload(bundleUrl);
|
|
2918
2958
|
const preloadResult = await withSpan("ssr.preload", async (span) => {
|
|
@@ -2923,6 +2963,7 @@ async function performSSRSetupInternal(options, streaming) {
|
|
|
2923
2963
|
console.log(`[Setup] ${pathname} - preloadContent: ${(performance.now() - t0).toFixed(2)}ms`);
|
|
2924
2964
|
return result;
|
|
2925
2965
|
});
|
|
2966
|
+
assertNotTimedOut();
|
|
2926
2967
|
const computeResult = await withSpan("ssr.compute.data", async (span) => {
|
|
2927
2968
|
span.setAttribute("pathname", pathname);
|
|
2928
2969
|
span.setAttribute("streaming", streaming);
|
|
@@ -2933,6 +2974,7 @@ async function performSSRSetupInternal(options, streaming) {
|
|
|
2933
2974
|
console.log(`[Setup] ${pathname} - computeSSRData: ${(performance.now() - t0).toFixed(2)}ms`);
|
|
2934
2975
|
return result;
|
|
2935
2976
|
});
|
|
2977
|
+
assertNotTimedOut();
|
|
2936
2978
|
setGlobalSSRData(computeResult.data);
|
|
2937
2979
|
const usingCachedCollections = !!options.cachedCollections;
|
|
2938
2980
|
const byCollectionForSSR = await withSpan("ssr.load.collections", async (span) => {
|
|
@@ -2944,6 +2986,7 @@ async function performSSRSetupInternal(options, streaming) {
|
|
|
2944
2986
|
console.log(`[Setup] ${pathname} - loadCollections (cached: ${usingCachedCollections}): ${(performance.now() - t0).toFixed(2)}ms`);
|
|
2945
2987
|
return collections;
|
|
2946
2988
|
});
|
|
2989
|
+
assertNotTimedOut();
|
|
2947
2990
|
setGlobalCollections(byCollectionForSSR);
|
|
2948
2991
|
const usingCachedCSS = !!options.cachedTailwindCSS;
|
|
2949
2992
|
const inlineStyleTag = await withSpan("ssr.inline.css", async (span) => {
|
|
@@ -2956,6 +2999,7 @@ async function performSSRSetupInternal(options, streaming) {
|
|
|
2956
2999
|
console.log(`[Setup] ${pathname} - inlineTailwindCSS (cached: ${usingCachedCSS}): ${(performance.now() - t0).toFixed(2)}ms`);
|
|
2957
3000
|
return css;
|
|
2958
3001
|
});
|
|
3002
|
+
assertNotTimedOut();
|
|
2959
3003
|
let statusOverride = preloadResult.statusOverride;
|
|
2960
3004
|
if (computeResult.statusContainer.value !== undefined) {
|
|
2961
3005
|
statusOverride = computeResult.statusContainer.value;
|
|
@@ -2970,6 +3014,7 @@ async function performSSRSetupInternal(options, streaming) {
|
|
|
2970
3014
|
console.log(`[Setup] ${pathname} - extractMetadata: ${(performance.now() - t0).toFixed(2)}ms`);
|
|
2971
3015
|
return result;
|
|
2972
3016
|
});
|
|
3017
|
+
assertNotTimedOut();
|
|
2973
3018
|
return {
|
|
2974
3019
|
ssrData: computeResult.data,
|
|
2975
3020
|
ssrError: computeResult.error,
|
|
@@ -5286,7 +5331,7 @@ async function streamSSRContent(writer, encoder, ctx) {
|
|
|
5286
5331
|
const STREAM_TIMEOUT_MS = ctx.timeout ?? 120000;
|
|
5287
5332
|
let streamTimedOut = false;
|
|
5288
5333
|
let timeoutId = null;
|
|
5289
|
-
const
|
|
5334
|
+
const cleanup2 = () => {
|
|
5290
5335
|
if (timeoutId) {
|
|
5291
5336
|
clearTimeout(timeoutId);
|
|
5292
5337
|
timeoutId = null;
|
|
@@ -5336,6 +5381,11 @@ async function streamSSRContent(writer, encoder, ctx) {
|
|
|
5336
5381
|
streamTimeoutPromise
|
|
5337
5382
|
]);
|
|
5338
5383
|
if (result.done || streamTimedOut) {
|
|
5384
|
+
if (streamTimedOut) {
|
|
5385
|
+
try {
|
|
5386
|
+
await reader.cancel(`[reroute] stream timeout for ${ctx.pathname}`);
|
|
5387
|
+
} catch {}
|
|
5388
|
+
}
|
|
5339
5389
|
try {
|
|
5340
5390
|
reader.releaseLock();
|
|
5341
5391
|
} catch {}
|
|
@@ -5346,12 +5396,15 @@ async function streamSSRContent(writer, encoder, ctx) {
|
|
|
5346
5396
|
chunkCount++;
|
|
5347
5397
|
}
|
|
5348
5398
|
}
|
|
5349
|
-
|
|
5399
|
+
cleanup2();
|
|
5350
5400
|
span.setAttributes({
|
|
5351
5401
|
"reroute.stream.chunks": chunkCount,
|
|
5352
5402
|
"reroute.stream.timedOut": streamTimedOut
|
|
5353
5403
|
});
|
|
5354
5404
|
});
|
|
5405
|
+
if (streamTimedOut) {
|
|
5406
|
+
cleanupPathScopedSSRData(ctx.pathname);
|
|
5407
|
+
}
|
|
5355
5408
|
await writer.write(encoder.encode(ctx.rootEnd));
|
|
5356
5409
|
const allScripts = await withSpan("ssr.generate.scripts", async (span) => {
|
|
5357
5410
|
const scripts2 = buildStreamingScripts(ctx);
|
|
@@ -5361,7 +5414,8 @@ async function streamSSRContent(writer, encoder, ctx) {
|
|
|
5361
5414
|
await writer.write(encoder.encode(allScripts + ctx.htmlTail));
|
|
5362
5415
|
await writer.close();
|
|
5363
5416
|
} catch (error) {
|
|
5364
|
-
|
|
5417
|
+
cleanup2();
|
|
5418
|
+
cleanupPathScopedSSRData(ctx.pathname);
|
|
5365
5419
|
console.error("[reroute] Stream error:", error);
|
|
5366
5420
|
try {
|
|
5367
5421
|
await writer.abort(error);
|
|
@@ -5611,6 +5665,7 @@ __export(exports_core, {
|
|
|
5611
5665
|
computeLayoutData: () => computeLayoutData,
|
|
5612
5666
|
computeContentData: () => computeContentData,
|
|
5613
5667
|
compressStreamIfAccepted: () => compressStreamIfAccepted,
|
|
5668
|
+
cleanupPathScopedSSRData: () => cleanupPathScopedSSRData,
|
|
5614
5669
|
buildHeadFromMeta: () => buildHeadFromMeta,
|
|
5615
5670
|
blockSearchCrawlers: () => blockSearchCrawlers,
|
|
5616
5671
|
blockAITrainingCrawlers: () => blockAITrainingCrawlers,
|
|
@@ -8952,4 +9007,4 @@ export {
|
|
|
8952
9007
|
reroute
|
|
8953
9008
|
};
|
|
8954
9009
|
|
|
8955
|
-
//# debugId=
|
|
9010
|
+
//# debugId=D7E0FB3EC3ACE34264756E2164756E21
|