reroute-js 1.0.0-alpha.11 → 1.0.0-alpha.13
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 +342 -274
- package/cli/bin.js.map +9 -8
- package/cli/index.d.ts +1 -1
- package/cli/index.js +4 -4
- package/cli/index.js.map +3 -3
- 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/gen.d.ts.map +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/terminal-ui.d.ts +1 -1
- package/cli/src/commands/lib/theme.d.ts +2 -2
- package/cli/src/commands/lib/theme.d.ts.map +1 -1
- package/cli/src/commands/lib/version.d.ts +1 -1
- package/cli/src/commands/lib/watch.d.ts +26 -0
- package/cli/src/commands/lib/watch.d.ts.map +1 -0
- 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 +34 -31
- package/core/index.js.map +5 -5
- package/core/src/bundler/hash.d.ts +1 -1
- package/core/src/bundler/index.d.ts +1 -1
- package/core/src/config.d.ts +6 -5
- package/core/src/config.d.ts.map +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/i18n/catalog.d.ts +1 -1
- package/core/src/i18n/discover.d.ts +1 -1
- package/core/src/i18n/index.d.ts +1 -1
- package/core/src/i18n/messages.d.ts +1 -1
- package/core/src/i18n/negotiate.d.ts +1 -1
- package/core/src/i18n/pathname.d.ts +1 -1
- package/core/src/i18n/resolve.d.ts +1 -1
- package/core/src/i18n/types.d.ts +1 -1
- package/core/src/index.d.ts +1 -1
- package/core/src/llms/discovery.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 +1 -1
- 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/content-path.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 +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/route-match.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/styles.d.ts +7 -4
- package/core/src/ssr/lib/styles.d.ts.map +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/elysia/index.d.ts +1 -1
- package/elysia/index.js +114 -60
- package/elysia/index.js.map +12 -11
- package/elysia/src/index.d.ts +1 -1
- package/elysia/src/libs/assets.d.ts +1 -1
- package/elysia/src/libs/cache.d.ts +6 -1
- package/elysia/src/libs/cache.d.ts.map +1 -1
- package/elysia/src/libs/caching.d.ts +1 -1
- package/elysia/src/libs/http.d.ts +1 -1
- package/elysia/src/libs/i18n.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/plugin.d.ts.map +1 -1
- package/elysia/src/routes/artifacts.d.ts +1 -1
- package/elysia/src/routes/artifacts.d.ts.map +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/internal.d.ts.map +1 -1
- package/elysia/src/routes/liveReloadClient.d.ts +16 -0
- package/elysia/src/routes/liveReloadClient.d.ts.map +1 -0
- 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/ssr.d.ts.map +1 -1
- package/elysia/src/routes/static.d.ts +1 -1
- package/elysia/src/routes/themeCssRefresh.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/i18n/LocaleProvider.d.ts +1 -1
- package/react/src/i18n/helpers.d.ts +1 -1
- package/react/src/i18n/index.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 -2
- package/telemetry/server.js.map +4 -4
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/ssr/lib/styles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/ssr/lib/styles.ts"],"names":[],"mappings":"AAuCA;;;;;;GAMG;AACH,wBAAsB,cAAc,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,UAAQ,GACjB,OAAO,CAAC,MAAM,CAAC,CAajB"}
|
package/core/src/ssr/render.d.ts
CHANGED
package/core/src/ssr/stream.d.ts
CHANGED
package/elysia/index.d.ts
CHANGED
package/elysia/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* reroute-js v1.0.0-alpha.
|
|
2
|
+
* reroute-js v1.0.0-alpha.13
|
|
3
3
|
*
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 stewones <hi@stewan.io>
|
|
@@ -3496,42 +3496,45 @@ var init_scripts = __esm(() => {
|
|
|
3496
3496
|
});
|
|
3497
3497
|
|
|
3498
3498
|
// packages/core/src/ssr/lib/styles.ts
|
|
3499
|
-
|
|
3499
|
+
import { createHash } from "node:crypto";
|
|
3500
|
+
function themeLink(query) {
|
|
3501
|
+
return `<link rel="stylesheet" href="${THEME_CSS_HREF}?${query}" data-reroute="theme">`;
|
|
3502
|
+
}
|
|
3503
|
+
function hashCss(css) {
|
|
3504
|
+
return createHash("sha1").update(css).digest("hex").slice(0, 12);
|
|
3505
|
+
}
|
|
3506
|
+
async function readThemeCssFromDisk(clientDir) {
|
|
3507
|
+
const candidates = [
|
|
3508
|
+
join(clientDir, "..", ".reroute", "index.css"),
|
|
3509
|
+
join(clientDir, "..", "..", ".reroute", "index.css"),
|
|
3510
|
+
join(clientDir, "..", "..", "..", ".reroute", "index.css"),
|
|
3511
|
+
join(clientDir, "..", "..", "..", "..", ".reroute", "index.css")
|
|
3512
|
+
];
|
|
3513
|
+
for (const cssPath of candidates) {
|
|
3514
|
+
if (await Bun.file(cssPath).exists()) {
|
|
3515
|
+
const { readFileSync } = await import("node:fs");
|
|
3516
|
+
return readFileSync(cssPath, "utf-8");
|
|
3517
|
+
}
|
|
3518
|
+
}
|
|
3519
|
+
return "";
|
|
3520
|
+
}
|
|
3521
|
+
function bundledThemeCss() {
|
|
3522
|
+
return globalThis.__REROUTE_THEME_CSS__ || "";
|
|
3523
|
+
}
|
|
3524
|
+
async function inlineThemeCSS(clientDir, isWatchMode = false) {
|
|
3500
3525
|
try {
|
|
3501
3526
|
if (isWatchMode) {
|
|
3502
|
-
|
|
3503
|
-
return `<link rel="stylesheet" href="/.reroute/index.css?t=${timestamp}" data-reroute="theme">`;
|
|
3504
|
-
}
|
|
3505
|
-
const bundledCss = globalThis.__REROUTE_THEME_CSS__;
|
|
3506
|
-
if (bundledCss) {
|
|
3507
|
-
const css2 = minify ? minifyCSS(bundledCss) : bundledCss;
|
|
3508
|
-
return `<style data-reroute="theme">${css2}</style>`;
|
|
3509
|
-
}
|
|
3510
|
-
const candidates = [
|
|
3511
|
-
join(clientDir, "..", ".reroute", "index.css"),
|
|
3512
|
-
join(clientDir, "..", "..", ".reroute", "index.css"),
|
|
3513
|
-
join(clientDir, "..", "..", "..", ".reroute", "index.css"),
|
|
3514
|
-
join(clientDir, "..", "..", "..", "..", ".reroute", "index.css")
|
|
3515
|
-
];
|
|
3516
|
-
let cssPath = "";
|
|
3517
|
-
for (const p of candidates) {
|
|
3518
|
-
if (await Bun.file(p).exists()) {
|
|
3519
|
-
cssPath = p;
|
|
3520
|
-
break;
|
|
3521
|
-
}
|
|
3527
|
+
return themeLink(`t=${Date.now()}`);
|
|
3522
3528
|
}
|
|
3523
|
-
|
|
3529
|
+
const css = bundledThemeCss() || await readThemeCssFromDisk(clientDir);
|
|
3530
|
+
if (!css)
|
|
3524
3531
|
return "";
|
|
3525
|
-
|
|
3526
|
-
const css = readFileSync(cssPath, "utf-8");
|
|
3527
|
-
return `<style data-reroute="theme">${minifyCSS(css)}</style>`;
|
|
3532
|
+
return themeLink(`v=${hashCss(css)}`);
|
|
3528
3533
|
} catch {
|
|
3529
3534
|
return "";
|
|
3530
3535
|
}
|
|
3531
3536
|
}
|
|
3532
|
-
|
|
3533
|
-
return css.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\s+/g, " ").replace(/\s*([{}:;,>+~])\s*/g, "$1").replace(/;}/g, "}").trim();
|
|
3534
|
-
}
|
|
3537
|
+
var THEME_CSS_HREF = "/.reroute/index.css";
|
|
3535
3538
|
var init_styles = () => {};
|
|
3536
3539
|
|
|
3537
3540
|
// packages/core/src/ssr/lib/setup.ts
|
|
@@ -3638,7 +3641,7 @@ async function performSSRSetupInternal(options, streaming, timeoutState) {
|
|
|
3638
3641
|
setGlobalCollections(byCollectionForSSR);
|
|
3639
3642
|
const usingCachedCSS = !!options.cachedThemeCSS;
|
|
3640
3643
|
const inlineStyleTag = await withSpan("ssr.inline.css", async (span) => {
|
|
3641
|
-
const css = options.cachedThemeCSS ? options.cachedThemeCSS : await inlineThemeCSS(clientDir,
|
|
3644
|
+
const css = options.cachedThemeCSS ? options.cachedThemeCSS : await inlineThemeCSS(clientDir, isWatchMode);
|
|
3642
3645
|
span.setAttributes({
|
|
3643
3646
|
"reroute.cached": usingCachedCSS,
|
|
3644
3647
|
"reroute.css.size": css.length
|
|
@@ -6698,6 +6701,16 @@ import { existsSync as existsSync3 } from "node:fs";
|
|
|
6698
6701
|
import { pathToFileURL as pathToFileURL8 } from "node:url";
|
|
6699
6702
|
import { createElement as createElement2 } from "react";
|
|
6700
6703
|
|
|
6704
|
+
// packages/elysia/src/libs/cache.ts
|
|
6705
|
+
function resolveServerDataMaxAge(cacheEnabled, maxAgeSeconds) {
|
|
6706
|
+
if (!cacheEnabled || maxAgeSeconds <= 0)
|
|
6707
|
+
return 0;
|
|
6708
|
+
return maxAgeSeconds;
|
|
6709
|
+
}
|
|
6710
|
+
function getEncoding(acceptEncoding) {
|
|
6711
|
+
return /\bbr\b/i.test(acceptEncoding) ? "br" : /gzip/i.test(acceptEncoding) ? "gz" : "raw";
|
|
6712
|
+
}
|
|
6713
|
+
|
|
6701
6714
|
// packages/elysia/src/libs/image.ts
|
|
6702
6715
|
import { existsSync } from "node:fs";
|
|
6703
6716
|
import { join as join4 } from "node:path";
|
|
@@ -6876,11 +6889,6 @@ import { NotFoundError as NotFoundError2 } from "elysia";
|
|
|
6876
6889
|
init_core();
|
|
6877
6890
|
import { NotFoundError } from "elysia";
|
|
6878
6891
|
|
|
6879
|
-
// packages/elysia/src/libs/cache.ts
|
|
6880
|
-
function getEncoding(acceptEncoding) {
|
|
6881
|
-
return /\bbr\b/i.test(acceptEncoding) ? "br" : /gzip/i.test(acceptEncoding) ? "gz" : "raw";
|
|
6882
|
-
}
|
|
6883
|
-
|
|
6884
6892
|
// packages/elysia/src/libs/response.ts
|
|
6885
6893
|
var CONTENT_TYPES = {
|
|
6886
6894
|
xml: "application/xml; charset=utf-8",
|
|
@@ -7042,14 +7050,25 @@ function getAssetCacheControl(filePath, contentType, maxAge, directive, isWatchM
|
|
|
7042
7050
|
}
|
|
7043
7051
|
|
|
7044
7052
|
// packages/elysia/src/routes/artifacts.ts
|
|
7053
|
+
function bundledThemeCssResponse(cacheControl) {
|
|
7054
|
+
const bundled = globalThis.__REROUTE_THEME_CSS__;
|
|
7055
|
+
if (!bundled)
|
|
7056
|
+
throw new NotFoundError2;
|
|
7057
|
+
return new Response(bundled, {
|
|
7058
|
+
headers: {
|
|
7059
|
+
"Content-Type": "text/css; charset=utf-8",
|
|
7060
|
+
"Cache-Control": cacheControl
|
|
7061
|
+
}
|
|
7062
|
+
});
|
|
7063
|
+
}
|
|
7045
7064
|
function registerArtifactsRoutes(app, cwd, fileCache, options) {
|
|
7046
7065
|
const { bundleMaxAge, directive, isWatchMode = false } = options;
|
|
7047
7066
|
app.get("/.reroute/index.css", async ({ headers: headers2 }) => {
|
|
7048
7067
|
const filePath = join(cwd, ".reroute", "index.css");
|
|
7049
7068
|
const acceptEncoding = headers2["accept-encoding"] ?? "";
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
|
|
7069
|
+
const cacheControl = isWatchMode ? "no-cache, no-store, must-revalidate" : `${directive}, max-age=${bundleMaxAge}`;
|
|
7070
|
+
if (isWatchMode) {
|
|
7071
|
+
try {
|
|
7053
7072
|
const { readFileSync } = await import("node:fs");
|
|
7054
7073
|
const content2 = readFileSync(filePath);
|
|
7055
7074
|
return new Response(content2, {
|
|
@@ -7058,11 +7077,20 @@ function registerArtifactsRoutes(app, cwd, fileCache, options) {
|
|
|
7058
7077
|
"Cache-Control": cacheControl
|
|
7059
7078
|
}
|
|
7060
7079
|
});
|
|
7080
|
+
} catch {
|
|
7081
|
+
return bundledThemeCssResponse(cacheControl);
|
|
7061
7082
|
}
|
|
7083
|
+
}
|
|
7084
|
+
try {
|
|
7062
7085
|
return await serveFile(filePath, acceptEncoding, fileCache, {
|
|
7063
7086
|
cacheControl
|
|
7064
7087
|
});
|
|
7065
|
-
} catch {
|
|
7088
|
+
} catch (error) {
|
|
7089
|
+
if (error instanceof NotFoundError2) {
|
|
7090
|
+
return bundledThemeCssResponse(cacheControl);
|
|
7091
|
+
}
|
|
7092
|
+
throw error;
|
|
7093
|
+
}
|
|
7066
7094
|
});
|
|
7067
7095
|
app.get("/bundles/*", async ({ params, headers: headers2 }) => {
|
|
7068
7096
|
const fileName = String(params["*"] ?? "").replace(/^\/+/, "");
|
|
@@ -7388,6 +7416,18 @@ function jsonError(message, status = 500) {
|
|
|
7388
7416
|
});
|
|
7389
7417
|
}
|
|
7390
7418
|
|
|
7419
|
+
// packages/elysia/src/routes/liveReloadClient.ts
|
|
7420
|
+
function parseConnectedBootId(data) {
|
|
7421
|
+
if (data === "connected")
|
|
7422
|
+
return "";
|
|
7423
|
+
if (data.startsWith("connected:"))
|
|
7424
|
+
return data.slice("connected:".length);
|
|
7425
|
+
return null;
|
|
7426
|
+
}
|
|
7427
|
+
function shouldReloadOnReconnect(previousBootId, nextBootId) {
|
|
7428
|
+
return Boolean(previousBootId && nextBootId && previousBootId !== nextBootId);
|
|
7429
|
+
}
|
|
7430
|
+
|
|
7391
7431
|
// packages/elysia/src/routes/themeCssRefresh.ts
|
|
7392
7432
|
function refreshThemeCss() {
|
|
7393
7433
|
const href = `/.reroute/index.css?t=${Date.now()}`;
|
|
@@ -7465,13 +7505,13 @@ function registerInternalRoutes(app, opts) {
|
|
|
7465
7505
|
async function handleKeyRequest(pathname, dataKey, headers2) {
|
|
7466
7506
|
const { computeSSRData: computeSSRData2 } = await Promise.resolve().then(() => (init_core(), exports_core));
|
|
7467
7507
|
const cacheKey = `${pathname}:promises`;
|
|
7468
|
-
let promiseData = isWatchMode ? undefined : dataCache?.get(cacheKey);
|
|
7508
|
+
let promiseData = isWatchMode || maxAge <= 0 ? undefined : dataCache?.get(cacheKey);
|
|
7469
7509
|
const promiseDataCached = promiseData !== undefined;
|
|
7470
7510
|
if (!promiseData) {
|
|
7471
7511
|
const sp = extractSearchParams(pathname);
|
|
7472
7512
|
const { data } = await computeSSRData2(pathname, clientDir, cwd, isWatchMode, { streaming: true, maxAge }, sp);
|
|
7473
7513
|
promiseData = data;
|
|
7474
|
-
if (!isWatchMode) {
|
|
7514
|
+
if (!isWatchMode && maxAge > 0) {
|
|
7475
7515
|
dataCache?.set(cacheKey, promiseData);
|
|
7476
7516
|
}
|
|
7477
7517
|
}
|
|
@@ -7480,7 +7520,7 @@ function registerInternalRoutes(app, opts) {
|
|
|
7480
7520
|
if (value instanceof Promise) {
|
|
7481
7521
|
const resolved = await value;
|
|
7482
7522
|
const resolvedCacheKey = `${pathname}:${dataKey}:resolved`;
|
|
7483
|
-
if (!isWatchMode) {
|
|
7523
|
+
if (!isWatchMode && maxAge > 0) {
|
|
7484
7524
|
dataCache?.set(resolvedCacheKey, resolved);
|
|
7485
7525
|
}
|
|
7486
7526
|
return jsonWithCache({ data: resolved }, dataCacheControl || "no-cache", headers2, promiseDataCached ? "HIT" : "MISS");
|
|
@@ -7494,7 +7534,7 @@ function registerInternalRoutes(app, opts) {
|
|
|
7494
7534
|
async function handleFullDataRequest(pathname) {
|
|
7495
7535
|
const { computeSSRData: computeSSRData2 } = await Promise.resolve().then(() => (init_core(), exports_core));
|
|
7496
7536
|
const cacheKey = `${pathname}:streaming`;
|
|
7497
|
-
let data = isWatchMode ? undefined : dataCache?.get(cacheKey);
|
|
7537
|
+
let data = isWatchMode || maxAge <= 0 ? undefined : dataCache?.get(cacheKey);
|
|
7498
7538
|
const cacheHit = data !== undefined;
|
|
7499
7539
|
if (data === undefined) {
|
|
7500
7540
|
const sp = extractSearchParams(pathname);
|
|
@@ -7505,7 +7545,7 @@ function registerInternalRoutes(app, opts) {
|
|
|
7505
7545
|
console.error("[__reroute_data] Error computing data:", error);
|
|
7506
7546
|
data = null;
|
|
7507
7547
|
}
|
|
7508
|
-
if (!isWatchMode) {
|
|
7548
|
+
if (!isWatchMode && maxAge > 0) {
|
|
7509
7549
|
dataCache?.set(cacheKey, data);
|
|
7510
7550
|
}
|
|
7511
7551
|
}
|
|
@@ -7559,6 +7599,7 @@ var LIVE_RELOAD_CLIENT_CODE = `// Reroute live reload client
|
|
|
7559
7599
|
let eventSource = null;
|
|
7560
7600
|
let hasConnected = false;
|
|
7561
7601
|
let wasDisconnected = false;
|
|
7602
|
+
let lastBootId = null;
|
|
7562
7603
|
let reloadTriggered = false;
|
|
7563
7604
|
let rebuildNotice = null;
|
|
7564
7605
|
let reconnectAttempts = 0;
|
|
@@ -7611,6 +7652,8 @@ function triggerFullReload(reason) {
|
|
|
7611
7652
|
window.location.reload();
|
|
7612
7653
|
}
|
|
7613
7654
|
|
|
7655
|
+
FUNCTION_PARSE_CONNECTED_BOOT_ID
|
|
7656
|
+
FUNCTION_SHOULD_RELOAD_ON_RECONNECT
|
|
7614
7657
|
FUNCTION_REFRESH_THEME_CSS
|
|
7615
7658
|
|
|
7616
7659
|
function showRebuildNotice() {
|
|
@@ -7732,12 +7775,22 @@ function connect() {
|
|
|
7732
7775
|
eventSource = new EventSource('/__reroute_watch');
|
|
7733
7776
|
|
|
7734
7777
|
eventSource.addEventListener('message', (e) => {
|
|
7735
|
-
|
|
7736
|
-
|
|
7778
|
+
const bootId = parseConnectedBootId(e.data);
|
|
7779
|
+
if (bootId !== null) {
|
|
7780
|
+
reconnectAttempts = 0;
|
|
7781
|
+
if (bootId) lastBootId = lastBootId ?? bootId;
|
|
7737
7782
|
if (hasConnected && wasDisconnected && !reloadTriggered) {
|
|
7738
|
-
|
|
7783
|
+
if (shouldReloadOnReconnect(lastBootId, bootId)) {
|
|
7784
|
+
triggerFullReload('Server restarted, reloading...');
|
|
7785
|
+
return;
|
|
7786
|
+
}
|
|
7787
|
+
lastBootId = bootId || lastBootId;
|
|
7788
|
+
wasDisconnected = false;
|
|
7789
|
+
hideRebuildNotice();
|
|
7790
|
+
console.log('[reroute] ✓ Live reload reconnected');
|
|
7739
7791
|
return;
|
|
7740
7792
|
}
|
|
7793
|
+
if (bootId) lastBootId = bootId;
|
|
7741
7794
|
hasConnected = true;
|
|
7742
7795
|
wasDisconnected = false;
|
|
7743
7796
|
console.log('[reroute] ✓ Live reload connected');
|
|
@@ -7758,9 +7811,7 @@ function connect() {
|
|
|
7758
7811
|
wasDisconnected = true;
|
|
7759
7812
|
eventSource?.close();
|
|
7760
7813
|
if (hasConnected && reconnectAttempts === 0) {
|
|
7761
|
-
|
|
7762
|
-
console.log('[reroute] \uD83D\uDD04 Server restarting...');
|
|
7763
|
-
showRebuildNotice();
|
|
7814
|
+
console.log('[reroute] \uD83D\uDD04 Live reload disconnected, reconnecting...');
|
|
7764
7815
|
}
|
|
7765
7816
|
scheduleReconnect();
|
|
7766
7817
|
});
|
|
@@ -7768,8 +7819,9 @@ function connect() {
|
|
|
7768
7819
|
|
|
7769
7820
|
restoreScrollPosition();
|
|
7770
7821
|
connect();
|
|
7771
|
-
`.replace("FUNCTION_REFRESH_THEME_CSS", refreshThemeCss.toString());
|
|
7822
|
+
`.replace("FUNCTION_PARSE_CONNECTED_BOOT_ID", parseConnectedBootId.toString()).replace("FUNCTION_SHOULD_RELOAD_ON_RECONNECT", shouldReloadOnReconnect.toString()).replace("FUNCTION_REFRESH_THEME_CSS", refreshThemeCss.toString());
|
|
7772
7823
|
function registerLiveReloadRoutes(app, state) {
|
|
7824
|
+
const bootId = crypto.randomUUID();
|
|
7773
7825
|
console.log("[reroute] Registering SSE endpoint at /__reroute_watch");
|
|
7774
7826
|
app.get("/__reroute_watch", () => {
|
|
7775
7827
|
const encoder = new TextEncoder;
|
|
@@ -7780,9 +7832,9 @@ function registerLiveReloadRoutes(app, state) {
|
|
|
7780
7832
|
currentController = controller;
|
|
7781
7833
|
state.clients.add(controller);
|
|
7782
7834
|
console.log("[reroute] Browser connected for live reload");
|
|
7783
|
-
controller.enqueue(encoder.encode(`retry:
|
|
7835
|
+
controller.enqueue(encoder.encode(`retry: 2147483647
|
|
7784
7836
|
`));
|
|
7785
|
-
controller.enqueue(encoder.encode(`data: connected
|
|
7837
|
+
controller.enqueue(encoder.encode(`data: connected:${bootId}
|
|
7786
7838
|
|
|
7787
7839
|
`));
|
|
7788
7840
|
if (state.pendingReload) {
|
|
@@ -9378,6 +9430,7 @@ function registerSSRRoutes(app, options) {
|
|
|
9378
9430
|
applyLlmsDiscoveryHeaders(headers2, pathname, options.llmsConfig, status);
|
|
9379
9431
|
};
|
|
9380
9432
|
const SSR_HTML_TTL_MS = serverCacheEnabled && serverMaxAge > 0 ? serverMaxAge * 1000 : 0;
|
|
9433
|
+
const ssrDataMaxAge = isWatchMode ? 0 : resolveServerDataMaxAge(serverCacheEnabled, serverMaxAge);
|
|
9381
9434
|
const htmlCache = new LRUCache(200);
|
|
9382
9435
|
const makeKey = (pathname, searchParams, acceptEncoding) => {
|
|
9383
9436
|
const queryString = searchParams?.toString();
|
|
@@ -9512,7 +9565,7 @@ function registerSSRRoutes(app, options) {
|
|
|
9512
9565
|
head,
|
|
9513
9566
|
lang: i18n2.effectiveLang,
|
|
9514
9567
|
appId,
|
|
9515
|
-
maxAge:
|
|
9568
|
+
maxAge: ssrDataMaxAge,
|
|
9516
9569
|
searchParams,
|
|
9517
9570
|
ogConfig: options.ogConfig,
|
|
9518
9571
|
ogMetaConfig: options.ogMetaConfig,
|
|
@@ -9691,7 +9744,7 @@ function registerSSRRoutes(app, options) {
|
|
|
9691
9744
|
head,
|
|
9692
9745
|
lang: i18n2.effectiveLang,
|
|
9693
9746
|
appId,
|
|
9694
|
-
maxAge:
|
|
9747
|
+
maxAge: ssrDataMaxAge,
|
|
9695
9748
|
searchParams,
|
|
9696
9749
|
ogConfig: options.ogConfig,
|
|
9697
9750
|
ogMetaConfig: options.ogMetaConfig,
|
|
@@ -9948,6 +10001,7 @@ var reroute = () => async (app) => {
|
|
|
9948
10001
|
const server2 = globalConfig.server;
|
|
9949
10002
|
const serverCacheEnabled = server2?.cache ?? true;
|
|
9950
10003
|
const serverMaxAge = server2?.maxAge ?? 3600;
|
|
10004
|
+
const serverDataMaxAge = resolveServerDataMaxAge(serverCacheEnabled, serverMaxAge);
|
|
9951
10005
|
const browser = globalConfig.browser;
|
|
9952
10006
|
const browserCacheEnabled = browser?.cache ?? true;
|
|
9953
10007
|
const browserMaxAge = browser?.maxAge ?? 300;
|
|
@@ -10091,7 +10145,7 @@ var reroute = () => async (app) => {
|
|
|
10091
10145
|
const getBundleUrl = isWatchMode ? readBundleUrl : async () => initialBundleUrl;
|
|
10092
10146
|
const { loadCollections: loadCollections2, inlineThemeCSS: inlineThemeCSS2, loadIndexHtml: loadIndexHtml2 } = await Promise.resolve().then(() => (init_core(), exports_core));
|
|
10093
10147
|
const startupCollections = await loadCollections2(cwd, isWatchMode);
|
|
10094
|
-
const startupThemeCSS = await inlineThemeCSS2(clientDir,
|
|
10148
|
+
const startupThemeCSS = await inlineThemeCSS2(clientDir, isWatchMode);
|
|
10095
10149
|
const startupIndexHtml = await loadIndexHtml2(clientDir);
|
|
10096
10150
|
const collectionsTtlMs = serverMaxAge * 1000;
|
|
10097
10151
|
let collectionsCache = serverCacheEnabled ? { data: startupCollections, exp: Date.now() + collectionsTtlMs } : null;
|
|
@@ -10109,7 +10163,7 @@ var reroute = () => async (app) => {
|
|
|
10109
10163
|
};
|
|
10110
10164
|
return fresh;
|
|
10111
10165
|
};
|
|
10112
|
-
const getThemeCSS = isWatchMode ? () => inlineThemeCSS2(clientDir,
|
|
10166
|
+
const getThemeCSS = isWatchMode ? () => inlineThemeCSS2(clientDir, isWatchMode) : async () => startupThemeCSS;
|
|
10113
10167
|
const getIndexHtml = isWatchMode ? () => loadIndexHtml2(clientDir) : async () => startupIndexHtml;
|
|
10114
10168
|
if (globalConfig.redirects && globalConfig.redirects.length > 0) {
|
|
10115
10169
|
registerRedirectRoutes(app, globalConfig.redirects);
|
|
@@ -10123,9 +10177,9 @@ var reroute = () => async (app) => {
|
|
|
10123
10177
|
clientDir,
|
|
10124
10178
|
cwd,
|
|
10125
10179
|
dataCacheControl,
|
|
10126
|
-
dataCache,
|
|
10180
|
+
dataCache: serverDataMaxAge > 0 ? dataCache : undefined,
|
|
10127
10181
|
isWatchMode,
|
|
10128
|
-
maxAge:
|
|
10182
|
+
maxAge: serverDataMaxAge
|
|
10129
10183
|
});
|
|
10130
10184
|
registerArtifactsRoutes(app, cwd, fileCache, {
|
|
10131
10185
|
bundleMaxAge,
|
|
@@ -10306,4 +10360,4 @@ export {
|
|
|
10306
10360
|
reroute
|
|
10307
10361
|
};
|
|
10308
10362
|
|
|
10309
|
-
//# debugId=
|
|
10363
|
+
//# debugId=78024E3217BF060B64756E2164756E21
|