hermium 0.1.10 → 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 +56 -0
- package/bin/hermium.mjs +201 -136
- package/dist/api.mjs +3513 -0
- package/dist/{web-server → server}/_chunks/ssr-renderer.mjs +1 -1
- package/dist/{web-server → server}/_libs/base-ui__react.mjs +338 -34
- package/dist/{web-server → server}/_libs/base-ui__utils.mjs +38 -33
- package/dist/server/_libs/comma-separated-tokens.mjs +10 -0
- package/dist/{web-server → server}/_libs/floating-ui__core.mjs +3 -3
- package/dist/{web-server → server}/_libs/floating-ui__dom.mjs +4 -4
- package/dist/{web-server → server}/_libs/floating-ui__react-dom.mjs +3 -3
- package/dist/{web-server → server}/_libs/floating-ui__utils.mjs +38 -38
- package/dist/{web-server → server}/_libs/h3.mjs +3 -3
- package/dist/server/_libs/hast-util-is-element.mjs +75 -0
- package/dist/{web-server → server}/_libs/hast-util-to-jsx-runtime.mjs +2 -2
- package/dist/server/_libs/hast-util-to-text.mjs +305 -0
- package/dist/server/_libs/highlight.js.mjs +14756 -0
- package/dist/server/_libs/lowlight.mjs +262 -0
- package/dist/{web-server → server}/_libs/mdast-util-from-markdown.mjs +1 -1
- package/dist/{web-server → server}/_libs/mdast-util-gfm-autolink-literal+[...].mjs +2 -2
- package/dist/{web-server → server}/_libs/mdast-util-to-hast.mjs +1 -1
- package/dist/{web-server → server}/_libs/micromark-core-commonmark.mjs +24 -24
- package/dist/{web-server → server}/_libs/micromark-extension-gfm-autolink-literal+[...].mjs +1 -1
- package/dist/{web-server → server}/_libs/micromark-extension-gfm-footnote+[...].mjs +2 -2
- package/dist/{web-server → server}/_libs/micromark-extension-gfm-table.mjs +1 -1
- package/dist/{web-server → server}/_libs/micromark-extension-gfm-task-list-item+[...].mjs +1 -1
- package/dist/{web-server → server}/_libs/micromark-factory-destination.mjs +1 -1
- package/dist/{web-server → server}/_libs/micromark-factory-label.mjs +1 -1
- package/dist/{web-server → server}/_libs/micromark-factory-space.mjs +1 -1
- package/dist/{web-server → server}/_libs/micromark-factory-whitespace.mjs +1 -1
- package/dist/{web-server → server}/_libs/micromark-util-character.mjs +12 -12
- package/dist/{web-server → server}/_libs/micromark-util-classify-character+[...].mjs +1 -1
- package/dist/{web-server → server}/_libs/micromark-util-html-tag-name.mjs +2 -2
- package/dist/{web-server → server}/_libs/micromark-util-sanitize-uri.mjs +1 -1
- package/dist/{web-server → server}/_libs/micromark.mjs +3 -3
- package/dist/{web-server → server}/_libs/property-information.mjs +2 -3
- package/dist/{web-server → server}/_libs/react-dom.mjs +1 -1
- package/dist/{web-server → server}/_libs/react.mjs +42 -42
- package/dist/server/_libs/rehype-highlight.mjs +94 -0
- package/dist/server/_libs/space-separated-tokens.mjs +6 -0
- package/dist/server/_libs/tabler__icons-react.mjs +140 -0
- package/dist/server/_libs/tailwind-merge.mjs +3255 -0
- package/dist/server/_libs/tanstack__history.mjs +29 -0
- package/dist/{web-server → server}/_libs/tanstack__react-router.mjs +3 -3
- package/dist/{web-server → server}/_libs/tanstack__router-core.mjs +47 -741
- package/dist/server/_libs/unist-util-find-after.mjs +41 -0
- package/dist/{web-server → server}/_libs/unist-util-position.mjs +2 -2
- package/dist/{web-server → server}/_libs/use-sync-external-store.mjs +1 -1
- package/dist/server/_libs/zustand.mjs +43 -0
- package/dist/server/_ssr/ChatInputBlock-Bu2-iop_.mjs +220 -0
- package/dist/server/_ssr/MarkdownMessage-CNS7OSKN.mjs +68 -0
- package/dist/server/_ssr/chat._sessionId-P02iSfut.mjs +477 -0
- package/dist/{web-server/_ssr/index-CoDfv1vI.mjs → server/_ssr/chat.index-BYB_48NC.mjs} +6 -8
- package/dist/server/_ssr/index-C1mT_2d8.mjs +4890 -0
- package/dist/server/_ssr/index-DFV9_oCk.mjs +43 -0
- package/dist/server/_ssr/memory-CW_fSOG9.mjs +257 -0
- package/dist/{web-server/_ssr/router-CS6Zq3md.mjs → server/_ssr/router-CUAfx91O.mjs} +1009 -1108
- package/dist/server/_ssr/settings-DoXurzvn.mjs +10 -0
- package/dist/server/_ssr/skills-Cs7A5ZwO.mjs +422 -0
- package/dist/server/_ssr/theme-BK4-7E2h.mjs +42 -0
- package/dist/server/_ssr/usage-Bs2-LXGz.mjs +298 -0
- package/dist/server/_tanstack-start-manifest_v-C7Upe2TI.mjs +4 -0
- package/dist/server/index.mjs +502 -240
- package/package.json +4 -3
- package/dist/public/assets/IconAlertCircle-BW147gsG.js +0 -1
- package/dist/public/assets/IconAlertTriangle-DCoTLVSd.js +0 -1
- package/dist/public/assets/IconCheck-DAO7Fpl9.js +0 -1
- package/dist/public/assets/IconCode-BqfTl5wU.js +0 -1
- package/dist/public/assets/IconLoader2-B_pehSXN.js +0 -1
- package/dist/public/assets/IconRefresh-BbMGoMV8.js +0 -1
- package/dist/public/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
- package/dist/public/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
- package/dist/public/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
- package/dist/public/assets/index-BL9a2Xg9.js +0 -1
- package/dist/public/assets/index-BSwXjgjr.js +0 -1
- package/dist/public/assets/index-BWl8tn18.js +0 -1
- package/dist/public/assets/index-CQh8SXb2.js +0 -94
- package/dist/public/assets/index-Cxd-kSUY.js +0 -1
- package/dist/public/assets/index-DA5SH--7.js +0 -2
- package/dist/public/assets/index-DCHbvtBS.js +0 -1
- package/dist/public/assets/index-DCYXJZEe.js +0 -1
- package/dist/public/assets/index-DFDfp0ca.js +0 -1
- package/dist/public/assets/index-GuAAqSCJ.js +0 -14
- package/dist/public/assets/index-WIDirTHx.js +0 -29
- package/dist/public/assets/index-X3XZcAzy.js +0 -1
- package/dist/public/assets/input-7TQEEJq6.js +0 -1
- package/dist/public/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/dist/public/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/dist/public/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/dist/public/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/dist/public/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/dist/public/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/dist/public/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/dist/public/assets/models-BlUb1eaf.js +0 -1
- package/dist/public/assets/styles-PHtUFHUr.css +0 -1
- package/dist/public/assets/switch-B_iYUUM3.js +0 -1
- package/dist/public/assets/syntax-highlighter-DcBYfnEK.js +0 -6
- package/dist/public/assets/textarea-Dm4aaRqS.js +0 -1
- package/dist/public/favicon.ico +0 -0
- package/dist/public/favicon.png +0 -0
- package/dist/public/manifest.json +0 -25
- package/dist/public/nous-logo.png +0 -0
- package/dist/public/robots.txt +0 -3
- package/dist/web-server/_libs/babel__runtime.mjs +0 -237
- package/dist/web-server/_libs/character-entities-legacy.mjs +0 -111
- package/dist/web-server/_libs/character-reference-invalid.mjs +0 -33
- package/dist/web-server/_libs/comma-separated-tokens.mjs +0 -31
- package/dist/web-server/_libs/cookie-es.mjs +0 -44
- package/dist/web-server/_libs/hast-util-parse-selector.mjs +0 -39
- package/dist/web-server/_libs/hastscript.mjs +0 -200
- package/dist/web-server/_libs/is-alphabetical.mjs +0 -7
- package/dist/web-server/_libs/is-alphanumerical.mjs +0 -8
- package/dist/web-server/_libs/is-decimal.mjs +0 -7
- package/dist/web-server/_libs/is-hexadecimal.mjs +0 -7
- package/dist/web-server/_libs/lowlight.mjs +0 -1
- package/dist/web-server/_libs/parse-entities.mjs +0 -245
- package/dist/web-server/_libs/react-syntax-highlighter.mjs +0 -941
- package/dist/web-server/_libs/refractor.mjs +0 -2425
- package/dist/web-server/_libs/seroval-plugins.mjs +0 -58
- package/dist/web-server/_libs/seroval.mjs +0 -1775
- package/dist/web-server/_libs/space-separated-tokens.mjs +0 -11
- package/dist/web-server/_libs/tabler__icons-react.mjs +0 -233
- package/dist/web-server/_libs/tanstack__history.mjs +0 -204
- package/dist/web-server/_libs/tanstack__query-core.mjs +0 -2552
- package/dist/web-server/_libs/tanstack__react-query.mjs +0 -190
- package/dist/web-server/_libs/zod.mjs +0 -3915
- package/dist/web-server/_libs/zustand.mjs +0 -343
- package/dist/web-server/_ssr/index--Bo2_ipW.mjs +0 -277
- package/dist/web-server/_ssr/index-BEvygh5x.mjs +0 -612
- package/dist/web-server/_ssr/index-BFaKxYfN.mjs +0 -40
- package/dist/web-server/_ssr/index-BdrMzRTd.mjs +0 -513
- package/dist/web-server/_ssr/index-Cwp8Gyl1.mjs +0 -1812
- package/dist/web-server/_ssr/index-DQsfKYjV.mjs +0 -449
- package/dist/web-server/_ssr/index-Dbs9k8Ea.mjs +0 -251
- package/dist/web-server/_ssr/index-Dk93oyZD.mjs +0 -213
- package/dist/web-server/_ssr/index-KNJ7huw_.mjs +0 -369
- package/dist/web-server/_ssr/index.mjs +0 -1558
- package/dist/web-server/_ssr/input-BV1DMASc.mjs +0 -20
- package/dist/web-server/_ssr/models-MzrvbL2i.mjs +0 -43
- package/dist/web-server/_ssr/start-HYkvq4Ni.mjs +0 -4
- package/dist/web-server/_ssr/switch-Bd-Sg0HG.mjs +0 -33
- package/dist/web-server/_ssr/syntax-highlighter-5vezNTce.mjs +0 -62
- package/dist/web-server/_ssr/textarea-CB4kQp9w.mjs +0 -18
- package/dist/web-server/_tanstack-start-manifest_v-m5lY48LR.mjs +0 -4
- package/dist/web-server/index.mjs +0 -611
- /package/dist/{web-server → server}/__23tanstack-start-plugin-adapters-Cwee5PKy.mjs +0 -0
- /package/dist/{web-server → server}/_libs/bail.mjs +0 -0
- /package/dist/{web-server → server}/_libs/ccount.mjs +0 -0
- /package/dist/{web-server → server}/_libs/character-entities.mjs +0 -0
- /package/dist/{web-server → server}/_libs/class-variance-authority.mjs +0 -0
- /package/dist/{web-server → server}/_libs/clsx.mjs +0 -0
- /package/dist/{web-server/_libs/croner.mjs → server/_libs/cookie-es.mjs} +0 -0
- /package/dist/{web-server/_libs/crossws.mjs → server/_libs/croner.mjs} +0 -0
- /package/dist/{web-server/_libs/fault.mjs → server/_libs/crossws.mjs} +0 -0
- /package/dist/{web-server → server}/_libs/decode-named-character-reference+[...].mjs +0 -0
- /package/dist/{web-server → server}/_libs/devlop.mjs +0 -0
- /package/dist/{web-server → server}/_libs/escape-string-regexp.mjs +0 -0
- /package/dist/{web-server → server}/_libs/estree-util-is-identifier-name.mjs +0 -0
- /package/dist/{web-server → server}/_libs/extend.mjs +0 -0
- /package/dist/{web-server → server}/_libs/hast-util-whitespace.mjs +0 -0
- /package/dist/{web-server → server}/_libs/hookable.mjs +0 -0
- /package/dist/{web-server → server}/_libs/html-url-attributes.mjs +0 -0
- /package/dist/{web-server → server}/_libs/inline-style-parser.mjs +0 -0
- /package/dist/{web-server → server}/_libs/is-plain-obj.mjs +0 -0
- /package/dist/{web-server → server}/_libs/isbot.mjs +0 -0
- /package/dist/{web-server → server}/_libs/longest-streak.mjs +0 -0
- /package/dist/{web-server → server}/_libs/markdown-table.mjs +0 -0
- /package/dist/{web-server → server}/_libs/mdast-util-find-and-replace.mjs +0 -0
- /package/dist/{web-server → server}/_libs/mdast-util-gfm-footnote.mjs +0 -0
- /package/dist/{web-server → server}/_libs/mdast-util-gfm-strikethrough.mjs +0 -0
- /package/dist/{web-server → server}/_libs/mdast-util-gfm-table.mjs +0 -0
- /package/dist/{web-server → server}/_libs/mdast-util-gfm-task-list-item.mjs +0 -0
- /package/dist/{web-server → server}/_libs/mdast-util-gfm.mjs +0 -0
- /package/dist/{web-server → server}/_libs/mdast-util-phrasing.mjs +0 -0
- /package/dist/{web-server → server}/_libs/mdast-util-to-markdown.mjs +0 -0
- /package/dist/{web-server → server}/_libs/mdast-util-to-string.mjs +0 -0
- /package/dist/{web-server → server}/_libs/micromark-extension-gfm-strikethrough+[...].mjs +0 -0
- /package/dist/{web-server → server}/_libs/micromark-extension-gfm-tagfilter+[...].mjs +0 -0
- /package/dist/{web-server → server}/_libs/micromark-extension-gfm.mjs +0 -0
- /package/dist/{web-server → server}/_libs/micromark-factory-title.mjs +0 -0
- /package/dist/{web-server → server}/_libs/micromark-util-chunked.mjs +0 -0
- /package/dist/{web-server → server}/_libs/micromark-util-combine-extensions+[...].mjs +0 -0
- /package/dist/{web-server → server}/_libs/micromark-util-decode-numeric-character-reference+[...].mjs +0 -0
- /package/dist/{web-server → server}/_libs/micromark-util-decode-string.mjs +0 -0
- /package/dist/{web-server → server}/_libs/micromark-util-encode.mjs +0 -0
- /package/dist/{web-server → server}/_libs/micromark-util-normalize-identifier+[...].mjs +0 -0
- /package/dist/{web-server → server}/_libs/micromark-util-resolve-all.mjs +0 -0
- /package/dist/{web-server → server}/_libs/micromark-util-subtokenize.mjs +0 -0
- /package/dist/{web-server → server}/_libs/ocache.mjs +0 -0
- /package/dist/{web-server → server}/_libs/ohash.mjs +0 -0
- /package/dist/{web-server → server}/_libs/react-markdown.mjs +0 -0
- /package/dist/{web-server → server}/_libs/remark-gfm.mjs +0 -0
- /package/dist/{web-server → server}/_libs/remark-parse.mjs +0 -0
- /package/dist/{web-server → server}/_libs/remark-rehype.mjs +0 -0
- /package/dist/{web-server → server}/_libs/reselect.mjs +0 -0
- /package/dist/{web-server → server}/_libs/rou3.mjs +0 -0
- /package/dist/{web-server/_libs/format.mjs → server/_libs/seroval-plugins.mjs} +0 -0
- /package/dist/{web-server/_libs/highlight.js.mjs → server/_libs/seroval.mjs} +0 -0
- /package/dist/{web-server → server}/_libs/srvx.mjs +0 -0
- /package/dist/{web-server → server}/_libs/style-to-js.mjs +0 -0
- /package/dist/{web-server → server}/_libs/style-to-object.mjs +0 -0
- /package/dist/{web-server → server}/_libs/tanstack__react-store.mjs +0 -0
- /package/dist/{web-server → server}/_libs/tanstack__store.mjs +0 -0
- /package/dist/{web-server → server}/_libs/trim-lines.mjs +0 -0
- /package/dist/{web-server → server}/_libs/trough.mjs +0 -0
- /package/dist/{web-server → server}/_libs/ufo.mjs +0 -0
- /package/dist/{web-server → server}/_libs/unctx.mjs +0 -0
- /package/dist/{web-server → server}/_libs/ungap__structured-clone.mjs +0 -0
- /package/dist/{web-server → server}/_libs/unified.mjs +0 -0
- /package/dist/{web-server → server}/_libs/unist-util-is.mjs +0 -0
- /package/dist/{web-server → server}/_libs/unist-util-stringify-position.mjs +0 -0
- /package/dist/{web-server → server}/_libs/unist-util-visit-parents.mjs +0 -0
- /package/dist/{web-server → server}/_libs/unist-util-visit.mjs +0 -0
- /package/dist/{web-server → server}/_libs/unstorage.mjs +0 -0
- /package/dist/{web-server → server}/_libs/vfile-message.mjs +0 -0
- /package/dist/{web-server → server}/_libs/vfile.mjs +0 -0
- /package/dist/{web-server → server}/_libs/zwitch.mjs +0 -0
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { p as parseHref } from "./tanstack__history.mjs";
|
|
2
|
-
import { s as splitSetCookieString } from "./cookie-es.mjs";
|
|
3
|
-
import { a as ai, r as re, S as Sn, d as dn } from "./seroval.mjs";
|
|
4
|
-
import { p } from "./seroval-plugins.mjs";
|
|
5
2
|
import { ReadableStream as ReadableStream$1 } from "node:stream/web";
|
|
6
3
|
import { Readable } from "node:stream";
|
|
7
4
|
const isServer = true;
|
|
@@ -145,13 +142,13 @@ function decodePath(path) {
|
|
|
145
142
|
path,
|
|
146
143
|
handledProtocolRelativeURL: false
|
|
147
144
|
};
|
|
148
|
-
const
|
|
145
|
+
const re = /%25|%5C/gi;
|
|
149
146
|
let cursor = 0;
|
|
150
147
|
let result = "";
|
|
151
148
|
let match;
|
|
152
|
-
while (null !== (match =
|
|
149
|
+
while (null !== (match = re.exec(path))) {
|
|
153
150
|
result += decodeSegment(path.slice(cursor, match.index)) + match[0];
|
|
154
|
-
cursor =
|
|
151
|
+
cursor = re.lastIndex;
|
|
155
152
|
}
|
|
156
153
|
result = result + decodeSegment(cursor ? path.slice(cursor) : path);
|
|
157
154
|
let handledProtocolRelativeURL = false;
|
|
@@ -448,6 +445,7 @@ function parseSegments(defaultCaseSensitive, data, route, start, node, depth, on
|
|
|
448
445
|
node = indexNode;
|
|
449
446
|
}
|
|
450
447
|
node.parse = parseParams ?? null;
|
|
448
|
+
node.priority = route.options?.params?.priority ?? 0;
|
|
451
449
|
if (isLeaf && !node.route) {
|
|
452
450
|
node.route = route;
|
|
453
451
|
node.fullPath = route.fullPath ?? route.from;
|
|
@@ -458,6 +456,7 @@ function parseSegments(defaultCaseSensitive, data, route, start, node, depth, on
|
|
|
458
456
|
function sortDynamic(a, b) {
|
|
459
457
|
if (a.parse && !b.parse) return -1;
|
|
460
458
|
if (!a.parse && b.parse) return 1;
|
|
459
|
+
if (a.parse && b.parse && (a.priority || b.priority)) return b.priority - a.priority;
|
|
461
460
|
if (a.prefix && b.prefix && a.prefix !== b.prefix) {
|
|
462
461
|
if (a.prefix.startsWith(b.prefix)) return -1;
|
|
463
462
|
if (b.prefix.startsWith(a.prefix)) return 1;
|
|
@@ -505,7 +504,8 @@ function createStaticNode(fullPath) {
|
|
|
505
504
|
route: null,
|
|
506
505
|
fullPath,
|
|
507
506
|
parent: null,
|
|
508
|
-
parse: null
|
|
507
|
+
parse: null,
|
|
508
|
+
priority: 0
|
|
509
509
|
};
|
|
510
510
|
}
|
|
511
511
|
function createDynamicNode(kind, fullPath, caseSensitive, prefix, suffix) {
|
|
@@ -523,6 +523,7 @@ function createDynamicNode(kind, fullPath, caseSensitive, prefix, suffix) {
|
|
|
523
523
|
fullPath,
|
|
524
524
|
parent: null,
|
|
525
525
|
parse: null,
|
|
526
|
+
priority: 0,
|
|
526
527
|
caseSensitive,
|
|
527
528
|
prefix,
|
|
528
529
|
suffix
|
|
@@ -1232,9 +1233,6 @@ function redirect(opts) {
|
|
|
1232
1233
|
function isRedirect(obj) {
|
|
1233
1234
|
return obj instanceof Response && !!obj.options;
|
|
1234
1235
|
}
|
|
1235
|
-
function isResolvedRedirect(obj) {
|
|
1236
|
-
return isRedirect(obj) && !!obj.options.href;
|
|
1237
|
-
}
|
|
1238
1236
|
function composeRewrites(rewrites) {
|
|
1239
1237
|
return {
|
|
1240
1238
|
input: ({ url }) => {
|
|
@@ -2137,7 +2135,7 @@ var RouterCore = class {
|
|
|
2137
2135
|
needsLocationUpdate = true;
|
|
2138
2136
|
}
|
|
2139
2137
|
if (needsLocationUpdate && this.stores) this.stores.location.set(this.latestLocation);
|
|
2140
|
-
if (typeof window !== "undefined" && "CSS" in window && typeof window.CSS?.supports === "function") this.isViewTransitionTypesSupported = window.CSS.supports("selector(:active-view-transition-type(a)");
|
|
2138
|
+
if (typeof window !== "undefined" && "CSS" in window && typeof window.CSS?.supports === "function") this.isViewTransitionTypesSupported = window.CSS.supports("selector(:active-view-transition-type(a))");
|
|
2141
2139
|
};
|
|
2142
2140
|
this.updateLatestLocation = () => {
|
|
2143
2141
|
this.latestLocation = this.parseLocation(this.history.location, this.latestLocation);
|
|
@@ -3159,21 +3157,6 @@ function isInlinableStylesheet(manifest, asset) {
|
|
|
3159
3157
|
const href = getStylesheetHref(asset);
|
|
3160
3158
|
return !!href && manifest?.inlineCss?.styles[href] !== void 0;
|
|
3161
3159
|
}
|
|
3162
|
-
function createInlineCssStyleAsset(css) {
|
|
3163
|
-
return {
|
|
3164
|
-
tag: "style",
|
|
3165
|
-
attrs: { suppressHydrationWarning: true },
|
|
3166
|
-
inlineCss: true,
|
|
3167
|
-
children: css
|
|
3168
|
-
};
|
|
3169
|
-
}
|
|
3170
|
-
function createInlineCssPlaceholderAsset() {
|
|
3171
|
-
return {
|
|
3172
|
-
tag: "style",
|
|
3173
|
-
attrs: { suppressHydrationWarning: true },
|
|
3174
|
-
inlineCss: true
|
|
3175
|
-
};
|
|
3176
|
-
}
|
|
3177
3160
|
var BaseRoute = class {
|
|
3178
3161
|
get to() {
|
|
3179
3162
|
return this._to;
|
|
@@ -3246,672 +3229,28 @@ var BaseRootRoute = class extends BaseRoute {
|
|
|
3246
3229
|
super(options);
|
|
3247
3230
|
}
|
|
3248
3231
|
};
|
|
3249
|
-
const
|
|
3250
|
-
const
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
}
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
return
|
|
3257
|
-
tag: "$TSR/t/" + serializationAdapter.key,
|
|
3258
|
-
test: serializationAdapter.test,
|
|
3259
|
-
parse: { stream(value, ctx, _data) {
|
|
3260
|
-
return { v: ctx.parse(serializationAdapter.toSerializable(value)) };
|
|
3261
|
-
} },
|
|
3262
|
-
serialize(node, ctx, _data) {
|
|
3263
|
-
options.didRun = true;
|
|
3264
|
-
return GLOBAL_TSR + '.t.get("' + serializationAdapter.key + '")(' + ctx.serialize(node.v) + ")";
|
|
3265
|
-
},
|
|
3266
|
-
deserialize: void 0
|
|
3267
|
-
});
|
|
3268
|
-
}
|
|
3269
|
-
// @__NO_SIDE_EFFECTS__
|
|
3270
|
-
function makeSerovalPlugin(serializationAdapter) {
|
|
3271
|
-
return /* @__PURE__ */ ai({
|
|
3272
|
-
tag: "$TSR/t/" + serializationAdapter.key,
|
|
3273
|
-
test: serializationAdapter.test,
|
|
3274
|
-
parse: {
|
|
3275
|
-
sync(value, ctx, _data) {
|
|
3276
|
-
return { v: ctx.parse(serializationAdapter.toSerializable(value)) };
|
|
3277
|
-
},
|
|
3278
|
-
async async(value, ctx, _data) {
|
|
3279
|
-
return { v: await ctx.parse(serializationAdapter.toSerializable(value)) };
|
|
3280
|
-
},
|
|
3281
|
-
stream(value, ctx, _data) {
|
|
3282
|
-
return { v: ctx.parse(serializationAdapter.toSerializable(value)) };
|
|
3283
|
-
}
|
|
3284
|
-
},
|
|
3285
|
-
serialize: void 0,
|
|
3286
|
-
deserialize(node, ctx, _data) {
|
|
3287
|
-
return serializationAdapter.fromSerializable(ctx.deserialize(node.v));
|
|
3288
|
-
}
|
|
3289
|
-
});
|
|
3290
|
-
}
|
|
3291
|
-
var RawStream = class {
|
|
3292
|
-
constructor(stream, options) {
|
|
3293
|
-
this.stream = stream;
|
|
3294
|
-
this.hint = options?.hint ?? "binary";
|
|
3295
|
-
}
|
|
3296
|
-
};
|
|
3297
|
-
const BufferCtor = globalThis.Buffer;
|
|
3298
|
-
const hasNodeBuffer = !!BufferCtor && typeof BufferCtor.from === "function";
|
|
3299
|
-
function uint8ArrayToBase64(bytes) {
|
|
3300
|
-
if (bytes.length === 0) return "";
|
|
3301
|
-
if (hasNodeBuffer) return BufferCtor.from(bytes).toString("base64");
|
|
3302
|
-
const CHUNK_SIZE = 32768;
|
|
3303
|
-
const chunks = [];
|
|
3304
|
-
for (let i = 0; i < bytes.length; i += CHUNK_SIZE) {
|
|
3305
|
-
const chunk = bytes.subarray(i, i + CHUNK_SIZE);
|
|
3306
|
-
chunks.push(String.fromCharCode.apply(null, chunk));
|
|
3307
|
-
}
|
|
3308
|
-
return btoa(chunks.join(""));
|
|
3309
|
-
}
|
|
3310
|
-
function base64ToUint8Array(base64) {
|
|
3311
|
-
if (base64.length === 0) return new Uint8Array(0);
|
|
3312
|
-
if (hasNodeBuffer) {
|
|
3313
|
-
const buf = BufferCtor.from(base64, "base64");
|
|
3314
|
-
return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
|
|
3315
|
-
}
|
|
3316
|
-
const binary = atob(base64);
|
|
3317
|
-
const bytes = new Uint8Array(binary.length);
|
|
3318
|
-
for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);
|
|
3319
|
-
return bytes;
|
|
3320
|
-
}
|
|
3321
|
-
const RAW_STREAM_FACTORY_BINARY = /* @__PURE__ */ Object.create(null);
|
|
3322
|
-
const RAW_STREAM_FACTORY_TEXT = /* @__PURE__ */ Object.create(null);
|
|
3323
|
-
const RAW_STREAM_FACTORY_CONSTRUCTOR_BINARY = (stream) => new ReadableStream({ start(controller) {
|
|
3324
|
-
stream.on({
|
|
3325
|
-
next(base64) {
|
|
3326
|
-
try {
|
|
3327
|
-
controller.enqueue(base64ToUint8Array(base64));
|
|
3328
|
-
} catch {
|
|
3329
|
-
}
|
|
3330
|
-
},
|
|
3331
|
-
throw(error) {
|
|
3332
|
-
controller.error(error);
|
|
3333
|
-
},
|
|
3334
|
-
return() {
|
|
3335
|
-
try {
|
|
3336
|
-
controller.close();
|
|
3337
|
-
} catch {
|
|
3338
|
-
}
|
|
3339
|
-
}
|
|
3340
|
-
});
|
|
3341
|
-
} });
|
|
3342
|
-
const textEncoderForFactory = new TextEncoder();
|
|
3343
|
-
const RAW_STREAM_FACTORY_CONSTRUCTOR_TEXT = (stream) => {
|
|
3344
|
-
return new ReadableStream({ start(controller) {
|
|
3345
|
-
stream.on({
|
|
3346
|
-
next(value) {
|
|
3347
|
-
try {
|
|
3348
|
-
if (typeof value === "string") controller.enqueue(textEncoderForFactory.encode(value));
|
|
3349
|
-
else controller.enqueue(base64ToUint8Array(value.$b64));
|
|
3350
|
-
} catch {
|
|
3351
|
-
}
|
|
3352
|
-
},
|
|
3353
|
-
throw(error) {
|
|
3354
|
-
controller.error(error);
|
|
3355
|
-
},
|
|
3356
|
-
return() {
|
|
3357
|
-
try {
|
|
3358
|
-
controller.close();
|
|
3359
|
-
} catch {
|
|
3360
|
-
}
|
|
3361
|
-
}
|
|
3362
|
-
});
|
|
3363
|
-
} });
|
|
3364
|
-
};
|
|
3365
|
-
const FACTORY_BINARY = `(s=>new ReadableStream({start(c){s.on({next(b){try{const d=atob(b),a=new Uint8Array(d.length);for(let i=0;i<d.length;i++)a[i]=d.charCodeAt(i);c.enqueue(a)}catch(_){}},throw(e){c.error(e)},return(){try{c.close()}catch(_){}}})}}))`;
|
|
3366
|
-
const FACTORY_TEXT = `(s=>{const e=new TextEncoder();return new ReadableStream({start(c){s.on({next(v){try{if(typeof v==='string'){c.enqueue(e.encode(v))}else{const d=atob(v.$b64),a=new Uint8Array(d.length);for(let i=0;i<d.length;i++)a[i]=d.charCodeAt(i);c.enqueue(a)}}catch(_){}},throw(x){c.error(x)},return(){try{c.close()}catch(_){}}})}})})`;
|
|
3367
|
-
function toBinaryStream(readable) {
|
|
3368
|
-
const stream = re();
|
|
3369
|
-
const reader = readable.getReader();
|
|
3370
|
-
(async () => {
|
|
3371
|
-
try {
|
|
3372
|
-
while (true) {
|
|
3373
|
-
const { done, value } = await reader.read();
|
|
3374
|
-
if (done) {
|
|
3375
|
-
stream.return(void 0);
|
|
3376
|
-
break;
|
|
3377
|
-
}
|
|
3378
|
-
stream.next(uint8ArrayToBase64(value));
|
|
3379
|
-
}
|
|
3380
|
-
} catch (error) {
|
|
3381
|
-
stream.throw(error);
|
|
3382
|
-
} finally {
|
|
3383
|
-
reader.releaseLock();
|
|
3384
|
-
}
|
|
3385
|
-
})();
|
|
3386
|
-
return stream;
|
|
3387
|
-
}
|
|
3388
|
-
function toTextStream(readable) {
|
|
3389
|
-
const stream = re();
|
|
3390
|
-
const reader = readable.getReader();
|
|
3391
|
-
const decoder = new TextDecoder("utf-8", { fatal: true });
|
|
3392
|
-
(async () => {
|
|
3393
|
-
try {
|
|
3394
|
-
while (true) {
|
|
3395
|
-
const { done, value } = await reader.read();
|
|
3396
|
-
if (done) {
|
|
3397
|
-
try {
|
|
3398
|
-
const remaining = decoder.decode();
|
|
3399
|
-
if (remaining.length > 0) stream.next(remaining);
|
|
3400
|
-
} catch {
|
|
3401
|
-
}
|
|
3402
|
-
stream.return(void 0);
|
|
3403
|
-
break;
|
|
3404
|
-
}
|
|
3405
|
-
try {
|
|
3406
|
-
const text = decoder.decode(value, { stream: true });
|
|
3407
|
-
if (text.length > 0) stream.next(text);
|
|
3408
|
-
} catch {
|
|
3409
|
-
stream.next({ $b64: uint8ArrayToBase64(value) });
|
|
3410
|
-
}
|
|
3411
|
-
}
|
|
3412
|
-
} catch (error) {
|
|
3413
|
-
stream.throw(error);
|
|
3414
|
-
} finally {
|
|
3415
|
-
reader.releaseLock();
|
|
3416
|
-
}
|
|
3417
|
-
})();
|
|
3418
|
-
return stream;
|
|
3232
|
+
var scroll_restoration_inline_default = 'function(t){let s;try{s=JSON.parse(sessionStorage.getItem(t.storageKey)||"{}")}catch(e){console.error(e);return}const c=t.key||window.history.state?.__TSR_key,r=c?s[c]:void 0;if(t.shouldScrollRestoration&&r&&typeof r=="object"&&Object.keys(r).length>0){for(const e in r){const o=r[e];if(!o||typeof o!="object")continue;const l=o.scrollX,i=o.scrollY;if(!(!Number.isFinite(l)||!Number.isFinite(i))){if(e==="window")window.scrollTo({top:i,left:l,behavior:t.behavior});else if(e){let n;try{n=document.querySelector(e)}catch{continue}n&&(n.scrollLeft=l,n.scrollTop=i)}}}return}const a=window.location.hash.split("#",2)[1];if(a){const e=window.history.state?.__hashScrollIntoViewOptions??!0;if(e){const o=document.getElementById(a);o&&o.scrollIntoView(e)}return}window.scrollTo({top:0,left:0,behavior:t.behavior})}';
|
|
3233
|
+
const defaultInlineScrollRestorationScript = `(${scroll_restoration_inline_default})(${escapeHtml(JSON.stringify({
|
|
3234
|
+
storageKey,
|
|
3235
|
+
shouldScrollRestoration: true
|
|
3236
|
+
}))})`;
|
|
3237
|
+
function getScrollRestorationScript(options) {
|
|
3238
|
+
if (options.storageKey === "tsr-scroll-restoration-v1_3" && options.shouldScrollRestoration === true && options.key === void 0 && options.behavior === void 0) return defaultInlineScrollRestorationScript;
|
|
3239
|
+
return `(${scroll_restoration_inline_default})(${escapeHtml(JSON.stringify(options))})`;
|
|
3419
3240
|
}
|
|
3420
|
-
|
|
3421
|
-
|
|
3422
|
-
|
|
3423
|
-
|
|
3424
|
-
|
|
3425
|
-
|
|
3426
|
-
|
|
3427
|
-
|
|
3428
|
-
|
|
3429
|
-
|
|
3430
|
-
|
|
3431
|
-
async async(_value, _ctx, _data) {
|
|
3432
|
-
return {};
|
|
3433
|
-
},
|
|
3434
|
-
stream(_value, _ctx, _data) {
|
|
3435
|
-
return {};
|
|
3436
|
-
}
|
|
3437
|
-
},
|
|
3438
|
-
serialize(_node, _ctx, _data) {
|
|
3439
|
-
return FACTORY_BINARY;
|
|
3440
|
-
},
|
|
3441
|
-
deserialize(_node, _ctx, _data) {
|
|
3442
|
-
return RAW_STREAM_FACTORY_BINARY;
|
|
3443
|
-
}
|
|
3444
|
-
}), /* @__PURE__ */ ai({
|
|
3445
|
-
tag: "tss/RawStreamFactoryText",
|
|
3446
|
-
test(value) {
|
|
3447
|
-
return value === RAW_STREAM_FACTORY_TEXT;
|
|
3448
|
-
},
|
|
3449
|
-
parse: {
|
|
3450
|
-
sync(_value, _ctx, _data) {
|
|
3451
|
-
return {};
|
|
3452
|
-
},
|
|
3453
|
-
async async(_value, _ctx, _data) {
|
|
3454
|
-
return {};
|
|
3455
|
-
},
|
|
3456
|
-
stream(_value, _ctx, _data) {
|
|
3457
|
-
return {};
|
|
3458
|
-
}
|
|
3459
|
-
},
|
|
3460
|
-
serialize(_node, _ctx, _data) {
|
|
3461
|
-
return FACTORY_TEXT;
|
|
3462
|
-
},
|
|
3463
|
-
deserialize(_node, _ctx, _data) {
|
|
3464
|
-
return RAW_STREAM_FACTORY_TEXT;
|
|
3465
|
-
}
|
|
3466
|
-
})],
|
|
3467
|
-
test(value) {
|
|
3468
|
-
return value instanceof RawStream;
|
|
3469
|
-
},
|
|
3470
|
-
parse: {
|
|
3471
|
-
sync(value, ctx, _data) {
|
|
3472
|
-
const factory = value.hint === "text" ? RAW_STREAM_FACTORY_TEXT : RAW_STREAM_FACTORY_BINARY;
|
|
3473
|
-
return {
|
|
3474
|
-
hint: ctx.parse(value.hint),
|
|
3475
|
-
factory: ctx.parse(factory),
|
|
3476
|
-
stream: ctx.parse(re())
|
|
3477
|
-
};
|
|
3478
|
-
},
|
|
3479
|
-
async async(value, ctx, _data) {
|
|
3480
|
-
const factory = value.hint === "text" ? RAW_STREAM_FACTORY_TEXT : RAW_STREAM_FACTORY_BINARY;
|
|
3481
|
-
const encodedStream = value.hint === "text" ? toTextStream(value.stream) : toBinaryStream(value.stream);
|
|
3482
|
-
return {
|
|
3483
|
-
hint: await ctx.parse(value.hint),
|
|
3484
|
-
factory: await ctx.parse(factory),
|
|
3485
|
-
stream: await ctx.parse(encodedStream)
|
|
3486
|
-
};
|
|
3487
|
-
},
|
|
3488
|
-
stream(value, ctx, _data) {
|
|
3489
|
-
const factory = value.hint === "text" ? RAW_STREAM_FACTORY_TEXT : RAW_STREAM_FACTORY_BINARY;
|
|
3490
|
-
const encodedStream = value.hint === "text" ? toTextStream(value.stream) : toBinaryStream(value.stream);
|
|
3491
|
-
return {
|
|
3492
|
-
hint: ctx.parse(value.hint),
|
|
3493
|
-
factory: ctx.parse(factory),
|
|
3494
|
-
stream: ctx.parse(encodedStream)
|
|
3495
|
-
};
|
|
3496
|
-
}
|
|
3497
|
-
},
|
|
3498
|
-
serialize(node, ctx, _data) {
|
|
3499
|
-
return "(" + ctx.serialize(node.factory) + ")(" + ctx.serialize(node.stream) + ")";
|
|
3500
|
-
},
|
|
3501
|
-
deserialize(node, ctx, _data) {
|
|
3502
|
-
const stream = ctx.deserialize(node.stream);
|
|
3503
|
-
return ctx.deserialize(node.hint) === "text" ? RAW_STREAM_FACTORY_CONSTRUCTOR_TEXT(stream) : RAW_STREAM_FACTORY_CONSTRUCTOR_BINARY(stream);
|
|
3504
|
-
}
|
|
3505
|
-
});
|
|
3506
|
-
// @__NO_SIDE_EFFECTS__
|
|
3507
|
-
function createRawStreamRPCPlugin(onRawStream) {
|
|
3508
|
-
let nextStreamId = 1;
|
|
3509
|
-
return /* @__PURE__ */ ai({
|
|
3510
|
-
tag: "tss/RawStream",
|
|
3511
|
-
test(value) {
|
|
3512
|
-
return value instanceof RawStream;
|
|
3513
|
-
},
|
|
3514
|
-
parse: {
|
|
3515
|
-
async async(value, ctx, _data) {
|
|
3516
|
-
const streamId = nextStreamId++;
|
|
3517
|
-
onRawStream(streamId, value.stream);
|
|
3518
|
-
return { streamId: await ctx.parse(streamId) };
|
|
3519
|
-
},
|
|
3520
|
-
stream(value, ctx, _data) {
|
|
3521
|
-
const streamId = nextStreamId++;
|
|
3522
|
-
onRawStream(streamId, value.stream);
|
|
3523
|
-
return { streamId: ctx.parse(streamId) };
|
|
3524
|
-
}
|
|
3525
|
-
},
|
|
3526
|
-
serialize() {
|
|
3527
|
-
throw new Error("RawStreamRPCPlugin.serialize should not be called. RPC uses JSON serialization, not JS code generation.");
|
|
3528
|
-
},
|
|
3529
|
-
deserialize() {
|
|
3530
|
-
throw new Error("RawStreamRPCPlugin.deserialize should not be called. Use createRawStreamDeserializePlugin on client.");
|
|
3531
|
-
}
|
|
3241
|
+
function getScrollRestorationScriptForRouter(router) {
|
|
3242
|
+
if (typeof router.options.scrollRestoration === "function" && !router.options.scrollRestoration({ location: router.latestLocation })) return null;
|
|
3243
|
+
const getKey = router.options.getScrollRestorationKey;
|
|
3244
|
+
if (!getKey) return defaultInlineScrollRestorationScript;
|
|
3245
|
+
const location = router.latestLocation;
|
|
3246
|
+
const userKey = getKey(location);
|
|
3247
|
+
if (userKey === defaultGetScrollRestorationKey(location)) return defaultInlineScrollRestorationScript;
|
|
3248
|
+
return getScrollRestorationScript({
|
|
3249
|
+
storageKey,
|
|
3250
|
+
shouldScrollRestoration: true,
|
|
3251
|
+
key: userKey
|
|
3532
3252
|
});
|
|
3533
3253
|
}
|
|
3534
|
-
const ShallowErrorPlugin = /* @__PURE__ */ ai({
|
|
3535
|
-
tag: "$TSR/Error",
|
|
3536
|
-
test(value) {
|
|
3537
|
-
return value instanceof Error;
|
|
3538
|
-
},
|
|
3539
|
-
parse: {
|
|
3540
|
-
sync(value, ctx) {
|
|
3541
|
-
return { message: ctx.parse(value.message) };
|
|
3542
|
-
},
|
|
3543
|
-
async async(value, ctx) {
|
|
3544
|
-
return { message: await ctx.parse(value.message) };
|
|
3545
|
-
},
|
|
3546
|
-
stream(value, ctx) {
|
|
3547
|
-
return { message: ctx.parse(value.message) };
|
|
3548
|
-
}
|
|
3549
|
-
},
|
|
3550
|
-
serialize(node, ctx) {
|
|
3551
|
-
return "new Error(" + ctx.serialize(node.message) + ")";
|
|
3552
|
-
},
|
|
3553
|
-
deserialize(node, ctx) {
|
|
3554
|
-
return new Error(ctx.deserialize(node.message));
|
|
3555
|
-
}
|
|
3556
|
-
});
|
|
3557
|
-
const defaultSerovalPlugins = [
|
|
3558
|
-
ShallowErrorPlugin,
|
|
3559
|
-
RawStreamSSRPlugin,
|
|
3560
|
-
p
|
|
3561
|
-
];
|
|
3562
|
-
function toHeadersInstance(init) {
|
|
3563
|
-
if (init instanceof Headers) return init;
|
|
3564
|
-
else if (Array.isArray(init)) return new Headers(init);
|
|
3565
|
-
else if (typeof init === "object") return new Headers(init);
|
|
3566
|
-
else return null;
|
|
3567
|
-
}
|
|
3568
|
-
function mergeHeaders(...headers) {
|
|
3569
|
-
return headers.reduce((acc, header) => {
|
|
3570
|
-
const headersInstance = toHeadersInstance(header);
|
|
3571
|
-
if (!headersInstance) return acc;
|
|
3572
|
-
for (const [key, value] of headersInstance.entries()) if (key === "set-cookie") splitSetCookieString(value).forEach((cookie) => acc.append("set-cookie", cookie));
|
|
3573
|
-
else acc.set(key, value);
|
|
3574
|
-
return acc;
|
|
3575
|
-
}, new Headers());
|
|
3576
|
-
}
|
|
3577
|
-
function dehydrateSsrMatchId(id) {
|
|
3578
|
-
return id.replaceAll("/", "\0");
|
|
3579
|
-
}
|
|
3580
|
-
var tsrScript_default = "self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]}";
|
|
3581
|
-
const SCOPE_ID = "tsr";
|
|
3582
|
-
const TSR_PREFIX = GLOBAL_TSR + ".router=";
|
|
3583
|
-
const P_PREFIX = GLOBAL_TSR + ".p(()=>";
|
|
3584
|
-
const P_SUFFIX = ")";
|
|
3585
|
-
function dehydrateMatch(match) {
|
|
3586
|
-
const dehydratedMatch = {
|
|
3587
|
-
i: dehydrateSsrMatchId(match.id),
|
|
3588
|
-
u: match.updatedAt,
|
|
3589
|
-
s: match.status
|
|
3590
|
-
};
|
|
3591
|
-
for (const [key, shorthand] of [
|
|
3592
|
-
["__beforeLoadContext", "b"],
|
|
3593
|
-
["loaderData", "l"],
|
|
3594
|
-
["error", "e"],
|
|
3595
|
-
["ssr", "ssr"]
|
|
3596
|
-
]) if (match[key] !== void 0) dehydratedMatch[shorthand] = match[key];
|
|
3597
|
-
if (match.globalNotFound) dehydratedMatch.g = true;
|
|
3598
|
-
return dehydratedMatch;
|
|
3599
|
-
}
|
|
3600
|
-
const INITIAL_SCRIPTS = [dn(SCOPE_ID), tsrScript_default];
|
|
3601
|
-
var ScriptBuffer = class {
|
|
3602
|
-
constructor(router) {
|
|
3603
|
-
this._scriptBarrierLifted = false;
|
|
3604
|
-
this._cleanedUp = false;
|
|
3605
|
-
this._pendingMicrotask = false;
|
|
3606
|
-
this.router = router;
|
|
3607
|
-
this._queue = INITIAL_SCRIPTS.slice();
|
|
3608
|
-
}
|
|
3609
|
-
enqueue(script) {
|
|
3610
|
-
if (this._cleanedUp) return;
|
|
3611
|
-
this._queue.push(script);
|
|
3612
|
-
if (this._scriptBarrierLifted && !this._pendingMicrotask) {
|
|
3613
|
-
this._pendingMicrotask = true;
|
|
3614
|
-
queueMicrotask(() => {
|
|
3615
|
-
this._pendingMicrotask = false;
|
|
3616
|
-
this.injectBufferedScripts();
|
|
3617
|
-
});
|
|
3618
|
-
}
|
|
3619
|
-
}
|
|
3620
|
-
liftBarrier() {
|
|
3621
|
-
if (this._scriptBarrierLifted || this._cleanedUp) return;
|
|
3622
|
-
this._scriptBarrierLifted = true;
|
|
3623
|
-
if (this._queue.length > 0 && !this._pendingMicrotask) {
|
|
3624
|
-
this._pendingMicrotask = true;
|
|
3625
|
-
queueMicrotask(() => {
|
|
3626
|
-
this._pendingMicrotask = false;
|
|
3627
|
-
this.injectBufferedScripts();
|
|
3628
|
-
});
|
|
3629
|
-
}
|
|
3630
|
-
}
|
|
3631
|
-
/**
|
|
3632
|
-
* Flushes any pending scripts synchronously.
|
|
3633
|
-
* Call this before emitting onSerializationFinished to ensure all scripts are injected.
|
|
3634
|
-
*
|
|
3635
|
-
* IMPORTANT: Only injects if the barrier has been lifted. Before the barrier is lifted,
|
|
3636
|
-
* scripts should remain in the queue so takeBufferedScripts() can retrieve them
|
|
3637
|
-
*/
|
|
3638
|
-
flush() {
|
|
3639
|
-
if (!this._scriptBarrierLifted) return;
|
|
3640
|
-
if (this._cleanedUp) return;
|
|
3641
|
-
this._pendingMicrotask = false;
|
|
3642
|
-
const scriptsToInject = this.takeAll();
|
|
3643
|
-
if (scriptsToInject && this.router?.serverSsr) this.router.serverSsr.injectScript(scriptsToInject);
|
|
3644
|
-
}
|
|
3645
|
-
takeAll() {
|
|
3646
|
-
const bufferedScripts = this._queue;
|
|
3647
|
-
this._queue = [];
|
|
3648
|
-
if (bufferedScripts.length === 0) return;
|
|
3649
|
-
if (bufferedScripts.length === 1) return bufferedScripts[0] + ";document.currentScript.remove()";
|
|
3650
|
-
return bufferedScripts.join(";") + ";document.currentScript.remove()";
|
|
3651
|
-
}
|
|
3652
|
-
injectBufferedScripts() {
|
|
3653
|
-
if (this._cleanedUp) return;
|
|
3654
|
-
if (this._queue.length === 0) return;
|
|
3655
|
-
const scriptsToInject = this.takeAll();
|
|
3656
|
-
if (scriptsToInject && this.router?.serverSsr) this.router.serverSsr.injectScript(scriptsToInject);
|
|
3657
|
-
}
|
|
3658
|
-
cleanup() {
|
|
3659
|
-
this._cleanedUp = true;
|
|
3660
|
-
this._queue = [];
|
|
3661
|
-
this.router = void 0;
|
|
3662
|
-
}
|
|
3663
|
-
};
|
|
3664
|
-
const MANIFEST_CACHE_SIZE = 100;
|
|
3665
|
-
const manifestCaches = /* @__PURE__ */ new WeakMap();
|
|
3666
|
-
const inlineCssCaches = /* @__PURE__ */ new WeakMap();
|
|
3667
|
-
function getManifestCache(manifest) {
|
|
3668
|
-
const cache = manifestCaches.get(manifest);
|
|
3669
|
-
if (cache) return cache;
|
|
3670
|
-
const newCache = createLRUCache(MANIFEST_CACHE_SIZE);
|
|
3671
|
-
manifestCaches.set(manifest, newCache);
|
|
3672
|
-
return newCache;
|
|
3673
|
-
}
|
|
3674
|
-
function getInlineCssCache(manifest) {
|
|
3675
|
-
const cache = inlineCssCaches.get(manifest);
|
|
3676
|
-
if (cache) return cache;
|
|
3677
|
-
const newCache = createLRUCache(MANIFEST_CACHE_SIZE);
|
|
3678
|
-
inlineCssCaches.set(manifest, newCache);
|
|
3679
|
-
return newCache;
|
|
3680
|
-
}
|
|
3681
|
-
function getInlineCssHrefsForMatches(manifest, matches) {
|
|
3682
|
-
const styles = manifest?.inlineCss?.styles;
|
|
3683
|
-
if (!styles) return [];
|
|
3684
|
-
const seen = /* @__PURE__ */ new Set();
|
|
3685
|
-
const hrefs = [];
|
|
3686
|
-
for (const match of matches) {
|
|
3687
|
-
const assets = manifest?.routes[match.routeId]?.assets ?? [];
|
|
3688
|
-
for (const asset of assets) {
|
|
3689
|
-
const href = getStylesheetHref(asset);
|
|
3690
|
-
if (!href || seen.has(href) || styles[href] === void 0) continue;
|
|
3691
|
-
seen.add(href);
|
|
3692
|
-
hrefs.push(href);
|
|
3693
|
-
}
|
|
3694
|
-
}
|
|
3695
|
-
return hrefs;
|
|
3696
|
-
}
|
|
3697
|
-
function getInlineCssForHrefs(manifest, hrefs) {
|
|
3698
|
-
const styles = manifest.inlineCss?.styles;
|
|
3699
|
-
if (!styles || hrefs.length === 0) return void 0;
|
|
3700
|
-
const cacheKey = hrefs.join("\0");
|
|
3701
|
-
{
|
|
3702
|
-
const cached = getInlineCssCache(manifest).get(cacheKey);
|
|
3703
|
-
if (cached !== void 0) return cached;
|
|
3704
|
-
}
|
|
3705
|
-
const css = hrefs.map((href) => styles[href]).join("");
|
|
3706
|
-
getInlineCssCache(manifest).set(cacheKey, css);
|
|
3707
|
-
return css;
|
|
3708
|
-
}
|
|
3709
|
-
function getInlineCssAssetForMatches(manifest, matches) {
|
|
3710
|
-
if (!manifest?.inlineCss) return void 0;
|
|
3711
|
-
const css = getInlineCssForHrefs(manifest, getInlineCssHrefsForMatches(manifest, matches));
|
|
3712
|
-
return css === void 0 ? void 0 : createInlineCssStyleAsset(css);
|
|
3713
|
-
}
|
|
3714
|
-
function stripInlinedStylesheetAssets(manifest, routes, matches) {
|
|
3715
|
-
if (!manifest.inlineCss) return routes;
|
|
3716
|
-
const nextRoutes = {};
|
|
3717
|
-
for (const [routeId, route] of Object.entries(routes)) {
|
|
3718
|
-
const assets = route.assets?.filter((asset) => !isInlinableStylesheet(manifest, asset));
|
|
3719
|
-
const nextRoute = { ...route };
|
|
3720
|
-
if (assets) if (assets.length > 0) nextRoute.assets = assets;
|
|
3721
|
-
else delete nextRoute.assets;
|
|
3722
|
-
nextRoutes[routeId] = nextRoute;
|
|
3723
|
-
}
|
|
3724
|
-
if (getInlineCssAssetForMatches(manifest, matches)) {
|
|
3725
|
-
const rootRoute = nextRoutes["__root__"] ?? {};
|
|
3726
|
-
nextRoutes[rootRouteId] = {
|
|
3727
|
-
...rootRoute,
|
|
3728
|
-
assets: [createInlineCssPlaceholderAsset(), ...rootRoute.assets ?? []]
|
|
3729
|
-
};
|
|
3730
|
-
}
|
|
3731
|
-
return nextRoutes;
|
|
3732
|
-
}
|
|
3733
|
-
function attachRouterServerSsrUtils({ router, manifest, getRequestAssets, includeUnmatchedRouteAssets = true }) {
|
|
3734
|
-
router.ssr = { get manifest() {
|
|
3735
|
-
const requestAssets = getRequestAssets?.();
|
|
3736
|
-
const inlineCssAsset = getInlineCssAssetForMatches(manifest, router.stores.matches.get());
|
|
3737
|
-
if (!requestAssets?.length && !inlineCssAsset) return manifest;
|
|
3738
|
-
return {
|
|
3739
|
-
...manifest,
|
|
3740
|
-
routes: {
|
|
3741
|
-
...manifest?.routes,
|
|
3742
|
-
[rootRouteId]: {
|
|
3743
|
-
...manifest?.routes?.[rootRouteId],
|
|
3744
|
-
assets: [
|
|
3745
|
-
...requestAssets ?? [],
|
|
3746
|
-
...inlineCssAsset ? [inlineCssAsset] : [],
|
|
3747
|
-
...manifest?.routes?.["__root__"]?.assets ?? []
|
|
3748
|
-
]
|
|
3749
|
-
}
|
|
3750
|
-
}
|
|
3751
|
-
};
|
|
3752
|
-
} };
|
|
3753
|
-
let _dehydrated = false;
|
|
3754
|
-
let _serializationFinished = false;
|
|
3755
|
-
const renderFinishedListeners = [];
|
|
3756
|
-
const serializationFinishedListeners = [];
|
|
3757
|
-
const scriptBuffer = new ScriptBuffer(router);
|
|
3758
|
-
let injectedHtmlBuffer = "";
|
|
3759
|
-
router.serverSsr = {
|
|
3760
|
-
injectHtml: (html) => {
|
|
3761
|
-
if (!html) return;
|
|
3762
|
-
injectedHtmlBuffer += html;
|
|
3763
|
-
router.emit({ type: "onInjectedHtml" });
|
|
3764
|
-
},
|
|
3765
|
-
injectScript: (script) => {
|
|
3766
|
-
if (!script) return;
|
|
3767
|
-
const html = `<script${router.options.ssr?.nonce ? ` nonce='${router.options.ssr.nonce}'` : ""}>${script}<\/script>`;
|
|
3768
|
-
router.serverSsr.injectHtml(html);
|
|
3769
|
-
},
|
|
3770
|
-
dehydrate: async (opts) => {
|
|
3771
|
-
if (_dehydrated) {
|
|
3772
|
-
invariant();
|
|
3773
|
-
}
|
|
3774
|
-
let matchesToDehydrate = router.stores.matches.get();
|
|
3775
|
-
if (router.isShell()) matchesToDehydrate = matchesToDehydrate.slice(0, 1);
|
|
3776
|
-
const matches = matchesToDehydrate.map(dehydrateMatch);
|
|
3777
|
-
let manifestToDehydrate = void 0;
|
|
3778
|
-
if (manifest) {
|
|
3779
|
-
const currentRouteIdsList = matchesToDehydrate.map((m) => m.routeId);
|
|
3780
|
-
const manifestCacheKey = `${currentRouteIdsList.join("\0")}\0includeUnmatchedRouteAssets=${includeUnmatchedRouteAssets}`;
|
|
3781
|
-
let filteredRoutes;
|
|
3782
|
-
filteredRoutes = getManifestCache(manifest).get(manifestCacheKey);
|
|
3783
|
-
if (!filteredRoutes) {
|
|
3784
|
-
const currentRouteIds = new Set(currentRouteIdsList);
|
|
3785
|
-
const nextFilteredRoutes = {};
|
|
3786
|
-
for (const routeId in manifest.routes) {
|
|
3787
|
-
const routeManifest = manifest.routes[routeId];
|
|
3788
|
-
if (currentRouteIds.has(routeId)) nextFilteredRoutes[routeId] = routeManifest;
|
|
3789
|
-
else if (includeUnmatchedRouteAssets && routeManifest.assets && routeManifest.assets.length > 0) nextFilteredRoutes[routeId] = { assets: routeManifest.assets };
|
|
3790
|
-
}
|
|
3791
|
-
filteredRoutes = stripInlinedStylesheetAssets(manifest, nextFilteredRoutes, matchesToDehydrate);
|
|
3792
|
-
getManifestCache(manifest).set(manifestCacheKey, filteredRoutes);
|
|
3793
|
-
}
|
|
3794
|
-
manifestToDehydrate = { routes: { ...filteredRoutes } };
|
|
3795
|
-
if (opts?.requestAssets?.length) {
|
|
3796
|
-
const existingRoot = manifestToDehydrate.routes[rootRouteId];
|
|
3797
|
-
manifestToDehydrate.routes[rootRouteId] = {
|
|
3798
|
-
...existingRoot,
|
|
3799
|
-
assets: [...opts.requestAssets, ...existingRoot?.assets ?? []]
|
|
3800
|
-
};
|
|
3801
|
-
}
|
|
3802
|
-
}
|
|
3803
|
-
const dehydratedRouter = {
|
|
3804
|
-
manifest: manifestToDehydrate,
|
|
3805
|
-
matches
|
|
3806
|
-
};
|
|
3807
|
-
const lastMatchId = matchesToDehydrate[matchesToDehydrate.length - 1]?.id;
|
|
3808
|
-
if (lastMatchId) dehydratedRouter.lastMatchId = dehydrateSsrMatchId(lastMatchId);
|
|
3809
|
-
const dehydratedData = await router.options.dehydrate?.();
|
|
3810
|
-
if (dehydratedData) dehydratedRouter.dehydratedData = dehydratedData;
|
|
3811
|
-
_dehydrated = true;
|
|
3812
|
-
const trackPlugins = { didRun: false };
|
|
3813
|
-
const serializationAdapters = router.options.serializationAdapters;
|
|
3814
|
-
const plugins = serializationAdapters ? serializationAdapters.map((t) => /* @__PURE__ */ makeSsrSerovalPlugin(t, trackPlugins)).concat(defaultSerovalPlugins) : defaultSerovalPlugins;
|
|
3815
|
-
const signalSerializationComplete = () => {
|
|
3816
|
-
_serializationFinished = true;
|
|
3817
|
-
try {
|
|
3818
|
-
serializationFinishedListeners.forEach((l) => l());
|
|
3819
|
-
router.emit({ type: "onSerializationFinished" });
|
|
3820
|
-
} catch (err) {
|
|
3821
|
-
console.error("Serialization listener error:", err);
|
|
3822
|
-
} finally {
|
|
3823
|
-
serializationFinishedListeners.length = 0;
|
|
3824
|
-
renderFinishedListeners.length = 0;
|
|
3825
|
-
}
|
|
3826
|
-
};
|
|
3827
|
-
Sn(dehydratedRouter, {
|
|
3828
|
-
refs: /* @__PURE__ */ new Map(),
|
|
3829
|
-
plugins,
|
|
3830
|
-
onSerialize: (data, initial) => {
|
|
3831
|
-
let serialized = initial ? TSR_PREFIX + data : data;
|
|
3832
|
-
if (trackPlugins.didRun) serialized = P_PREFIX + serialized + P_SUFFIX;
|
|
3833
|
-
scriptBuffer.enqueue(serialized);
|
|
3834
|
-
},
|
|
3835
|
-
onError: (err) => {
|
|
3836
|
-
console.error("Serialization error:", err);
|
|
3837
|
-
if (err && err.stack) console.error(err.stack);
|
|
3838
|
-
signalSerializationComplete();
|
|
3839
|
-
},
|
|
3840
|
-
scopeId: SCOPE_ID,
|
|
3841
|
-
onDone: () => {
|
|
3842
|
-
scriptBuffer.enqueue(GLOBAL_TSR + ".e()");
|
|
3843
|
-
scriptBuffer.flush();
|
|
3844
|
-
signalSerializationComplete();
|
|
3845
|
-
}
|
|
3846
|
-
});
|
|
3847
|
-
},
|
|
3848
|
-
isDehydrated() {
|
|
3849
|
-
return _dehydrated;
|
|
3850
|
-
},
|
|
3851
|
-
isSerializationFinished() {
|
|
3852
|
-
return _serializationFinished;
|
|
3853
|
-
},
|
|
3854
|
-
onRenderFinished: (listener) => renderFinishedListeners.push(listener),
|
|
3855
|
-
onSerializationFinished: (listener) => serializationFinishedListeners.push(listener),
|
|
3856
|
-
setRenderFinished: () => {
|
|
3857
|
-
try {
|
|
3858
|
-
renderFinishedListeners.forEach((l) => l());
|
|
3859
|
-
} catch (err) {
|
|
3860
|
-
console.error("Error in render finished listener:", err);
|
|
3861
|
-
} finally {
|
|
3862
|
-
renderFinishedListeners.length = 0;
|
|
3863
|
-
}
|
|
3864
|
-
scriptBuffer.liftBarrier();
|
|
3865
|
-
},
|
|
3866
|
-
takeBufferedScripts() {
|
|
3867
|
-
const scripts = scriptBuffer.takeAll();
|
|
3868
|
-
return {
|
|
3869
|
-
tag: "script",
|
|
3870
|
-
attrs: {
|
|
3871
|
-
nonce: router.options.ssr?.nonce,
|
|
3872
|
-
className: "$tsr",
|
|
3873
|
-
id: TSR_SCRIPT_BARRIER_ID
|
|
3874
|
-
},
|
|
3875
|
-
children: scripts
|
|
3876
|
-
};
|
|
3877
|
-
},
|
|
3878
|
-
liftScriptBarrier() {
|
|
3879
|
-
scriptBuffer.liftBarrier();
|
|
3880
|
-
},
|
|
3881
|
-
takeBufferedHtml() {
|
|
3882
|
-
if (!injectedHtmlBuffer) return;
|
|
3883
|
-
const buffered = injectedHtmlBuffer;
|
|
3884
|
-
injectedHtmlBuffer = "";
|
|
3885
|
-
return buffered;
|
|
3886
|
-
},
|
|
3887
|
-
cleanup() {
|
|
3888
|
-
if (!router.serverSsr) return;
|
|
3889
|
-
renderFinishedListeners.length = 0;
|
|
3890
|
-
serializationFinishedListeners.length = 0;
|
|
3891
|
-
injectedHtmlBuffer = "";
|
|
3892
|
-
scriptBuffer.cleanup();
|
|
3893
|
-
router.serverSsr = void 0;
|
|
3894
|
-
}
|
|
3895
|
-
};
|
|
3896
|
-
}
|
|
3897
|
-
function getOrigin(request) {
|
|
3898
|
-
try {
|
|
3899
|
-
return new URL(request.url).origin;
|
|
3900
|
-
} catch {
|
|
3901
|
-
}
|
|
3902
|
-
return "http://localhost";
|
|
3903
|
-
}
|
|
3904
|
-
function getNormalizedURL(url, base) {
|
|
3905
|
-
if (typeof url === "string") url = url.replace("\\", "%5C");
|
|
3906
|
-
const rawUrl = new URL(url, base);
|
|
3907
|
-
const { path: decodedPathname, handledProtocolRelativeURL } = decodePath(rawUrl.pathname);
|
|
3908
|
-
const searchParams = new URLSearchParams(rawUrl.search);
|
|
3909
|
-
const normalizedHref = decodedPathname + (searchParams.size > 0 ? "?" : "") + searchParams.toString() + rawUrl.hash;
|
|
3910
|
-
return {
|
|
3911
|
-
url: new URL(normalizedHref, rawUrl.origin),
|
|
3912
|
-
handledProtocolRelativeURL
|
|
3913
|
-
};
|
|
3914
|
-
}
|
|
3915
3254
|
function defineHandlerCallback(handler) {
|
|
3916
3255
|
return handler;
|
|
3917
3256
|
}
|
|
@@ -4226,63 +3565,30 @@ function transformStreamWithRouter(router, appStream, opts) {
|
|
|
4226
3565
|
});
|
|
4227
3566
|
return stream;
|
|
4228
3567
|
}
|
|
4229
|
-
var scroll_restoration_inline_default = 'function(t){let s;try{s=JSON.parse(sessionStorage.getItem(t.storageKey)||"{}")}catch(e){console.error(e);return}const c=t.key||window.history.state?.__TSR_key,r=c?s[c]:void 0;if(t.shouldScrollRestoration&&r&&typeof r=="object"&&Object.keys(r).length>0){for(const e in r){const o=r[e];if(!o||typeof o!="object")continue;const l=o.scrollX,i=o.scrollY;if(!(!Number.isFinite(l)||!Number.isFinite(i))){if(e==="window")window.scrollTo({top:i,left:l,behavior:t.behavior});else if(e){let n;try{n=document.querySelector(e)}catch{continue}n&&(n.scrollLeft=l,n.scrollTop=i)}}}return}const a=window.location.hash.split("#",2)[1];if(a){const e=window.history.state?.__hashScrollIntoViewOptions??!0;if(e){const o=document.getElementById(a);o&&o.scrollIntoView(e)}return}window.scrollTo({top:0,left:0,behavior:t.behavior})}';
|
|
4230
|
-
const defaultInlineScrollRestorationScript = `(${scroll_restoration_inline_default})(${escapeHtml(JSON.stringify({
|
|
4231
|
-
storageKey,
|
|
4232
|
-
shouldScrollRestoration: true
|
|
4233
|
-
}))})`;
|
|
4234
|
-
function getScrollRestorationScript(options) {
|
|
4235
|
-
if (options.storageKey === "tsr-scroll-restoration-v1_3" && options.shouldScrollRestoration === true && options.key === void 0 && options.behavior === void 0) return defaultInlineScrollRestorationScript;
|
|
4236
|
-
return `(${scroll_restoration_inline_default})(${escapeHtml(JSON.stringify(options))})`;
|
|
4237
|
-
}
|
|
4238
|
-
function getScrollRestorationScriptForRouter(router) {
|
|
4239
|
-
if (typeof router.options.scrollRestoration === "function" && !router.options.scrollRestoration({ location: router.latestLocation })) return null;
|
|
4240
|
-
const getKey = router.options.getScrollRestorationKey;
|
|
4241
|
-
if (!getKey) return defaultInlineScrollRestorationScript;
|
|
4242
|
-
const location = router.latestLocation;
|
|
4243
|
-
const userKey = getKey(location);
|
|
4244
|
-
if (userKey === defaultGetScrollRestorationKey(location)) return defaultInlineScrollRestorationScript;
|
|
4245
|
-
return getScrollRestorationScript({
|
|
4246
|
-
storageKey,
|
|
4247
|
-
shouldScrollRestoration: true,
|
|
4248
|
-
key: userKey
|
|
4249
|
-
});
|
|
4250
|
-
}
|
|
4251
3568
|
export {
|
|
4252
|
-
createSerializationAdapter as A,
|
|
4253
3569
|
BaseRootRoute as B,
|
|
4254
|
-
createRawStreamRPCPlugin as C,
|
|
4255
|
-
isResolvedRedirect as D,
|
|
4256
|
-
getStylesheetHref as E,
|
|
4257
|
-
mergeHeaders as F,
|
|
4258
|
-
executeRewriteInput as G,
|
|
4259
|
-
defaultSerovalPlugins as H,
|
|
4260
|
-
makeSerovalPlugin as I,
|
|
4261
3570
|
RouterCore as R,
|
|
4262
|
-
|
|
4263
|
-
|
|
4264
|
-
|
|
3571
|
+
BaseRoute as a,
|
|
3572
|
+
createNonReactiveReadonlyStore as b,
|
|
3573
|
+
createNonReactiveMutableStore as c,
|
|
4265
3574
|
deepEqual as d,
|
|
4266
|
-
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
|
|
3575
|
+
defineHandlerCallback as e,
|
|
3576
|
+
escapeHtml as f,
|
|
3577
|
+
exactPathTest as g,
|
|
3578
|
+
functionalUpdate as h,
|
|
3579
|
+
getAssetCrossOrigin as i,
|
|
4271
3580
|
getScrollRestorationScriptForRouter as j,
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
3581
|
+
hasKeys as k,
|
|
3582
|
+
invariant as l,
|
|
3583
|
+
isDangerousProtocol as m,
|
|
3584
|
+
isInlinableStylesheet as n,
|
|
3585
|
+
isModuleNotFoundError as o,
|
|
3586
|
+
isNotFound as p,
|
|
3587
|
+
isRedirect as q,
|
|
3588
|
+
isServer as r,
|
|
3589
|
+
removeTrailingSlash as s,
|
|
4281
3590
|
resolveManifestAssetLink as t,
|
|
4282
|
-
|
|
3591
|
+
rootRouteId as u,
|
|
4283
3592
|
transformPipeableStreamWithRouter as v,
|
|
4284
|
-
|
|
4285
|
-
getOrigin as x,
|
|
4286
|
-
attachRouterServerSsrUtils as y,
|
|
4287
|
-
defineHandlerCallback as z
|
|
3593
|
+
transformReadableStreamWithRouter as w
|
|
4288
3594
|
};
|