@alignable/bifrost 0.1.2 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-4W4KH2A5.js +50 -0
- package/dist/chunk-4W4KH2A5.js.map +1 -0
- package/dist/{chunk-X3MUHPJ3.js → chunk-NS2C4D24.js} +59 -177
- package/dist/chunk-NS2C4D24.js.map +1 -0
- package/dist/controller-af32e731.d.ts +9 -0
- package/dist/index.d.ts +1 -15
- package/dist/index.js +1 -13
- package/dist/index.js.map +1 -1
- package/dist/renderer/+config.js +2 -46
- package/dist/renderer/Head.d.ts +5 -0
- package/dist/renderer/Head.js +25 -0
- package/dist/renderer/Head.js.map +1 -0
- package/dist/renderer/bifrost/onAfterRenderClient.d.ts +5 -0
- package/dist/renderer/bifrost/onAfterRenderClient.js +14 -0
- package/dist/renderer/bifrost/onAfterRenderClient.js.map +1 -0
- package/dist/renderer/bifrost/onBeforeRenderClient.d.ts +5 -0
- package/dist/renderer/bifrost/onBeforeRenderClient.js +15 -0
- package/dist/renderer/bifrost/onBeforeRenderClient.js.map +1 -0
- package/dist/renderer/config.d.ts +51 -70
- package/dist/renderer/config.js.map +1 -1
- package/dist/renderer/headHtmlEnd.d.ts +7 -0
- package/dist/renderer/headHtmlEnd.js +8 -0
- package/dist/renderer/headHtmlEnd.js.map +1 -0
- package/dist/renderer/onBeforeRoute.d.ts +3 -6
- package/dist/renderer/onBeforeRoute.js +9 -3
- package/dist/renderer/onBeforeRoute.js.map +1 -1
- package/dist/renderer/wrapped/Page.d.ts +9 -0
- package/dist/renderer/wrapped/Page.js +25 -0
- package/dist/renderer/wrapped/Page.js.map +1 -0
- package/dist/renderer/wrapped/onAfterRenderClient.d.ts +7 -0
- package/dist/renderer/wrapped/onAfterRenderClient.js +30 -0
- package/dist/renderer/wrapped/onAfterRenderClient.js.map +1 -0
- package/dist/renderer/wrapped/onBeforeRender.client.d.ts +7 -0
- package/dist/renderer/wrapped/onBeforeRender.client.js +40 -0
- package/dist/renderer/wrapped/onBeforeRender.client.js.map +1 -0
- package/dist/renderer/wrapped/onBeforeRenderClient.d.ts +7 -0
- package/dist/renderer/wrapped/onBeforeRenderClient.js +172 -0
- package/dist/renderer/wrapped/onBeforeRenderClient.js.map +1 -0
- package/dist/renderer/wrapped/onBeforeRenderHtml.d.ts +5 -0
- package/dist/renderer/wrapped/onBeforeRenderHtml.js +14 -0
- package/dist/renderer/wrapped/onBeforeRenderHtml.js.map +1 -0
- package/dist/type-82702ff4.d.ts +27 -0
- package/package.json +14 -24
- package/dist/chunk-2DSY3VFP.js +0 -118
- package/dist/chunk-2DSY3VFP.js.map +0 -1
- package/dist/chunk-5SP2QGEH.js +0 -76
- package/dist/chunk-5SP2QGEH.js.map +0 -1
- package/dist/chunk-ABLEI4J7.js +0 -30
- package/dist/chunk-ABLEI4J7.js.map +0 -1
- package/dist/chunk-EYYCKU6F.js +0 -11
- package/dist/chunk-EYYCKU6F.js.map +0 -1
- package/dist/chunk-IYGONC4I.js +0 -31
- package/dist/chunk-IYGONC4I.js.map +0 -1
- package/dist/chunk-JHLK62FM.js +0 -20
- package/dist/chunk-JHLK62FM.js.map +0 -1
- package/dist/chunk-K4H777XA.js +0 -9
- package/dist/chunk-K4H777XA.js.map +0 -1
- package/dist/chunk-OXCN6F2S.js +0 -10
- package/dist/chunk-OXCN6F2S.js.map +0 -1
- package/dist/chunk-PESUYCE4.js +0 -33
- package/dist/chunk-PESUYCE4.js.map +0 -1
- package/dist/chunk-RQ34EW7E.js +0 -13
- package/dist/chunk-RQ34EW7E.js.map +0 -1
- package/dist/chunk-RSVASTEA.js +0 -63
- package/dist/chunk-RSVASTEA.js.map +0 -1
- package/dist/chunk-VYXAWOXV.js +0 -22
- package/dist/chunk-VYXAWOXV.js.map +0 -1
- package/dist/chunk-X2R7ODLQ.js +0 -14
- package/dist/chunk-X2R7ODLQ.js.map +0 -1
- package/dist/chunk-X3MUHPJ3.js.map +0 -1
- package/dist/chunk-XMNZZA6S.js +0 -75
- package/dist/chunk-XMNZZA6S.js.map +0 -1
- package/dist/internal-837e7a40.d.ts +0 -128
- package/dist/renderer/_error/Page.d.ts +0 -8
- package/dist/renderer/_error/Page.js +0 -14
- package/dist/renderer/_error/Page.js.map +0 -1
- package/dist/renderer/bifrost/onRenderClient.d.ts +0 -9
- package/dist/renderer/bifrost/onRenderClient.js +0 -15
- package/dist/renderer/bifrost/onRenderClient.js.map +0 -1
- package/dist/renderer/bifrost/onRenderHtml.d.ts +0 -20
- package/dist/renderer/bifrost/onRenderHtml.js +0 -13
- package/dist/renderer/bifrost/onRenderHtml.js.map +0 -1
- package/dist/renderer/configs/bifrost.d.ts +0 -50
- package/dist/renderer/configs/bifrost.js +0 -7
- package/dist/renderer/configs/bifrost.js.map +0 -1
- package/dist/renderer/configs/wrapped.d.ts +0 -25
- package/dist/renderer/configs/wrapped.js +0 -7
- package/dist/renderer/configs/wrapped.js.map +0 -1
- package/dist/renderer/onRenderClient.d.ts +0 -9
- package/dist/renderer/onRenderClient.js +0 -35
- package/dist/renderer/onRenderClient.js.map +0 -1
- package/dist/renderer/onRenderHtml.d.ts +0 -37
- package/dist/renderer/onRenderHtml.js +0 -32
- package/dist/renderer/onRenderHtml.js.map +0 -1
- package/dist/renderer/useNavigation.d.ts +0 -13
- package/dist/renderer/useNavigation.js +0 -12
- package/dist/renderer/useNavigation.js.map +0 -1
- package/dist/renderer/usePageContext.d.ts +0 -14
- package/dist/renderer/usePageContext.js +0 -10
- package/dist/renderer/usePageContext.js.map +0 -1
- package/dist/renderer/utils/PassthruLayout.d.ts +0 -5
- package/dist/renderer/utils/PassthruLayout.js +0 -7
- package/dist/renderer/utils/PassthruLayout.js.map +0 -1
- package/dist/renderer/utils/buildHead.d.ts +0 -9
- package/dist/renderer/utils/buildHead.js +0 -7
- package/dist/renderer/utils/buildHead.js.map +0 -1
- package/dist/renderer/utils/getConfigOrPageContext.d.ts +0 -13
- package/dist/renderer/utils/getConfigOrPageContext.js +0 -7
- package/dist/renderer/utils/getConfigOrPageContext.js.map +0 -1
- package/dist/renderer/utils/getGlobalObject.d.ts +0 -6
- package/dist/renderer/utils/getGlobalObject.js +0 -7
- package/dist/renderer/utils/getGlobalObject.js.map +0 -1
- package/dist/renderer/wrapped/onRenderClient.d.ts +0 -9
- package/dist/renderer/wrapped/onRenderClient.js +0 -13
- package/dist/renderer/wrapped/onRenderClient.js.map +0 -1
- package/dist/renderer/wrapped/onRenderHtml.d.ts +0 -27
- package/dist/renderer/wrapped/onRenderHtml.js +0 -12
- package/dist/renderer/wrapped/onRenderHtml.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../renderer/bifrost/onRenderClient.tsx"],"sourcesContent":["import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { PageShell } from \"../../lib/PageShell\";\nimport { renderReact } from \"../../lib/renderReact\";\nimport { Turbolinks } from \"../../lib/turbolinks\";\nimport { PageContextNoProxyClient } from \"../../types/internal\";\nimport { PassThruLayout } from \"../utils/PassthruLayout\";\nimport { documentPropsToReact } from \"../utils/buildHead\";\nimport { getPageContextOrConfig } from \"../utils/getConfigOrPageContext\";\n\nexport async function bifrostOnRenderClient(\n pageContext: PageContextNoProxyClient\n) {\n // Back button leading to 404 means we hit a page bifrost can't handle in the browser history.\n // Reload allows us to revert to passthru proxy and/or let ALB handle\n if (pageContext.isBackwardNavigation && pageContext.is404) {\n Turbolinks.controller.viewInvalidated();\n return;\n }\n\n const { Page, pageProps } = pageContext;\n const { Layout = PassThruLayout } = pageContext.config;\n const layoutProps = getPageContextOrConfig(pageContext, \"layoutProps\") || {};\n const bodyAttrs = getPageContextOrConfig(pageContext, \"bodyAttrs\") || [];\n\n if (!Page)\n throw new Error(\"Client-side render() hook expects Page to be exported\");\n\n const page = (\n <PageShell pageContext={pageContext}>\n <Layout {...layoutProps}>\n <Page {...pageProps} />\n </Layout>\n </PageShell>\n );\n if (pageContext.isHydration) {\n // During hydration of initial ssr, body is in dom, not page props (to avoid double-send)\n await pageContext.config.onClientInit?.();\n renderReact(page, pageContext.isHydration);\n } else {\n const head = document.createElement(\"head\");\n createRoot(head).render(\n documentPropsToReact(\n getPageContextOrConfig(pageContext, \"documentProps\") || {}\n )\n );\n (pageContext.config.scripts || []).forEach((sarr) => {\n sarr.forEach((s) => {\n head.insertAdjacentHTML(\"beforeend\", s);\n });\n });\n\n requestAnimationFrame(() => {\n Turbolinks._vpsOnRenderClient(head, false, false, () => {\n // clear anything on body\n document.body\n .getAttributeNames()\n .forEach((n) => document.body.removeAttribute(n));\n // add set bodyAttrs\n bodyAttrs.forEach(({ name, value }) =>\n document.body.setAttribute(name, value)\n );\n renderReact(page, pageContext.isHydration);\n });\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AAClB,SAAS,kBAAkB;AAS3B,eAAsB,sBACpB,aACA;AAGA,MAAI,YAAY,wBAAwB,YAAY,OAAO;AACzD,eAAW,WAAW,gBAAgB;AACtC;AAAA,EACF;AAEA,QAAM,EAAE,MAAM,UAAU,IAAI;AAC5B,QAAM,EAAE,SAAS,eAAe,IAAI,YAAY;AAChD,QAAM,cAAc,uBAAuB,aAAa,aAAa,KAAK,CAAC;AAC3E,QAAM,YAAY,uBAAuB,aAAa,WAAW,KAAK,CAAC;AAEvE,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,uDAAuD;AAEzE,QAAM,OACJ,oCAAC,aAAU,eACT,oCAAC,UAAQ,GAAG,eACV,oCAAC,QAAM,GAAG,WAAW,CACvB,CACF;AAEF,MAAI,YAAY,aAAa;AAE3B,UAAM,YAAY,OAAO,eAAe;AACxC,gBAAY,MAAM,YAAY,WAAW;AAAA,EAC3C,OAAO;AACL,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,eAAW,IAAI,EAAE;AAAA,MACf;AAAA,QACE,uBAAuB,aAAa,eAAe,KAAK,CAAC;AAAA,MAC3D;AAAA,IACF;AACA,KAAC,YAAY,OAAO,WAAW,CAAC,GAAG,QAAQ,CAAC,SAAS;AACnD,WAAK,QAAQ,CAAC,MAAM;AAClB,aAAK,mBAAmB,aAAa,CAAC;AAAA,MACxC,CAAC;AAAA,IACH,CAAC;AAED,0BAAsB,MAAM;AAC1B,iBAAW,mBAAmB,MAAM,OAAO,OAAO,MAAM;AAEtD,iBAAS,KACN,kBAAkB,EAClB,QAAQ,CAAC,MAAM,SAAS,KAAK,gBAAgB,CAAC,CAAC;AAElD,kBAAU;AAAA,UAAQ,CAAC,EAAE,MAAM,MAAM,MAC/B,SAAS,KAAK,aAAa,MAAM,KAAK;AAAA,QACxC;AACA,oBAAY,MAAM,YAAY,WAAW;AAAA,MAC3C,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;","names":[]}
|
package/dist/chunk-VYXAWOXV.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// renderer/utils/buildHead.tsx
|
|
2
|
-
import React from "react";
|
|
3
|
-
function documentPropsToReact({
|
|
4
|
-
title = "",
|
|
5
|
-
description = "",
|
|
6
|
-
viewport = {},
|
|
7
|
-
metaTags = [],
|
|
8
|
-
alternates = {}
|
|
9
|
-
}) {
|
|
10
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("title", null, title), /* @__PURE__ */ React.createElement("meta", { name: "title", property: "og:title", content: title }), /* @__PURE__ */ React.createElement("meta", { name: "description", content: description }), /* @__PURE__ */ React.createElement(
|
|
11
|
-
"meta",
|
|
12
|
-
{
|
|
13
|
-
name: "viewport",
|
|
14
|
-
content: Object.entries(viewport).map((e) => e.join("=")).join(", ")
|
|
15
|
-
}
|
|
16
|
-
), metaTags.map(({ name, property, content }) => /* @__PURE__ */ React.createElement("meta", { name, property, content })), alternates.canonical && /* @__PURE__ */ React.createElement("link", { rel: "canonical", href: alternates.canonical }));
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export {
|
|
20
|
-
documentPropsToReact
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=chunk-VYXAWOXV.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../renderer/utils/buildHead.tsx"],"sourcesContent":["import React from \"react\";\nimport { DocumentProps } from \"../../types/internal.js\";\n\nexport function documentPropsToReact({\n title = \"\",\n description = \"\",\n viewport = {},\n metaTags = [],\n alternates = {},\n}: DocumentProps): React.ReactElement {\n return (\n <>\n <title>{title}</title>\n <meta name=\"title\" property=\"og:title\" content={title} />\n <meta name=\"description\" content={description} />\n <meta\n name=\"viewport\"\n content={Object.entries(viewport)\n .map((e) => e.join(\"=\"))\n .join(\", \")}\n />\n {metaTags.map(({ name, property, content }) => (\n <meta name={name} property={property} content={content} />\n ))}\n { alternates.canonical && <link rel=\"canonical\" href={alternates.canonical} /> }\n </>\n );\n}\n"],"mappings":";AAAA,OAAO,WAAW;AAGX,SAAS,qBAAqB;AAAA,EACnC,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,WAAW,CAAC;AAAA,EACZ,WAAW,CAAC;AAAA,EACZ,aAAa,CAAC;AAChB,GAAsC;AACpC,SACE,0DACE,oCAAC,eAAO,KAAM,GACd,oCAAC,UAAK,MAAK,SAAQ,UAAS,YAAW,SAAS,OAAO,GACvD,oCAAC,UAAK,MAAK,eAAc,SAAS,aAAa,GAC/C;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,OAAO,QAAQ,QAAQ,EAC7B,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EACtB,KAAK,IAAI;AAAA;AAAA,EACd,GACC,SAAS,IAAI,CAAC,EAAE,MAAM,UAAU,QAAQ,MACvC,oCAAC,UAAK,MAAY,UAAoB,SAAkB,CACzD,GACC,WAAW,aAAa,oCAAC,UAAK,KAAI,aAAY,MAAM,WAAW,WAAW,CAC9E;AAEJ;","names":[]}
|
package/dist/chunk-X2R7ODLQ.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// renderer/configs/wrapped.ts
|
|
2
|
-
var wrappedConfig = {
|
|
3
|
-
passToClient: ["layout", "layoutProps", "redirectTo"],
|
|
4
|
-
meta: {
|
|
5
|
-
layoutMap: { env: { server: true, client: true } },
|
|
6
|
-
getLayout: { env: { server: true, client: true } },
|
|
7
|
-
proxyHeaders: { env: { server: true, client: true } }
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export {
|
|
12
|
-
wrappedConfig
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=chunk-X2R7ODLQ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../renderer/configs/wrapped.ts"],"sourcesContent":["import { Config } from \"vike/types\";\n\nexport const wrappedConfig = {\n passToClient: [\"layout\", \"layoutProps\", \"redirectTo\"],\n meta: {\n layoutMap: { env: { server: true, client: true } },\n getLayout: { env: { server: true, client: true } },\n proxyHeaders: { env: { server: true, client: true } },\n },\n} satisfies Config;\n"],"mappings":";AAEO,IAAM,gBAAgB;AAAA,EAC3B,cAAc,CAAC,UAAU,eAAe,YAAY;AAAA,EACpD,MAAM;AAAA,IACJ,WAAW,EAAE,KAAK,EAAE,QAAQ,MAAM,QAAQ,KAAK,EAAE;AAAA,IACjD,WAAW,EAAE,KAAK,EAAE,QAAQ,MAAM,QAAQ,KAAK,EAAE;AAAA,IACjD,cAAc,EAAE,KAAK,EAAE,QAAQ,MAAM,QAAQ,KAAK,EAAE;AAAA,EACtD;AACF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/turbolinks/util.ts","../lib/turbolinks/mergeHead.ts","../lib/turbolinks/lruCache.ts","../lib/turbolinks/progress_bar.ts","../lib/turbolinks/browser_adapter.ts","../lib/turbolinks/location.ts","../lib/turbolinks/types.ts","../lib/turbolinks/visit.ts","../lib/turbolinks/controller.ts","../lib/turbolinks/index.ts","../lib/renderReact.ts"],"sourcesContent":["export function array<T>(values: ArrayLike<T>): T[] {\n return Array.prototype.slice.call(values);\n}\n\nexport const closest = (() => {\n const html = document.documentElement;\n\n type MatchesSelector = (this: Element, selector: string) => boolean;\n const match: MatchesSelector =\n html.matches ||\n (html as any).webkitMatchesSelector ||\n (html as any).msMatchesSelector ||\n (html as any).mozMatchesSelector;\n\n type Closest = (this: Element, selector: string) => Element | null;\n const closest: Closest =\n html.closest ||\n function (selector: string) {\n let element: Element | null = this;\n while (element) {\n if (match.call(element, selector)) {\n return element;\n } else {\n element = element.parentElement;\n }\n }\n };\n\n return function (element: Element, selector: string) {\n return closest.call(element, selector);\n };\n})();\n\nexport function defer(callback: () => any) {\n setTimeout(callback, 1);\n}\n\nexport type DispatchOptions = {\n target: EventTarget;\n cancelable: boolean;\n data: any;\n};\n\nexport function dispatch(\n eventName: string,\n { target, cancelable, data }: Partial<DispatchOptions> = {}\n) {\n const event = document.createEvent(\"Events\") as Event & { data: any };\n event.initEvent(eventName, true, cancelable == true);\n event.data = data || {};\n\n // Fix setting `defaultPrevented` when `preventDefault()` is called\n // http://stackoverflow.com/questions/23349191/event-preventdefault-is-not-working-in-ie-11-for-custom-events\n if (event.cancelable && !preventDefaultSupported) {\n const { preventDefault } = event;\n event.preventDefault = function () {\n if (!this.defaultPrevented) {\n Object.defineProperty(this, \"defaultPrevented\", { get: () => true });\n }\n preventDefault.call(this);\n };\n }\n\n (target || document).dispatchEvent(event);\n return event;\n}\n\nconst preventDefaultSupported = (() => {\n const event = document.createEvent(\"Events\");\n event.initEvent(\"test\", true, true);\n event.preventDefault();\n return event.defaultPrevented;\n})();\n\nexport function unindent(\n strings: TemplateStringsArray,\n ...values: any[]\n): string {\n const lines = trimLeft(interpolate(strings, values)).split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\n\nfunction trimLeft(string: string) {\n return string.replace(/^\\n/, \"\");\n}\n\nfunction interpolate(strings: TemplateStringsArray, values: any[]) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value;\n }, \"\");\n}\n\nexport function uuid() {\n return Array.apply(null, { length: 36 } as any)\n .map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\";\n } else if (i == 14) {\n return \"4\";\n } else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16);\n } else {\n return Math.floor(Math.random() * 15).toString(16);\n }\n })\n .join(\"\");\n}\n\nexport function createScriptElement(element: Element, cb?: () => void) {\n if (element.getAttribute(\"data-turbolinks-eval\") == \"false\") {\n return element;\n } else {\n const createdScriptElement = document.createElement(\"script\");\n createdScriptElement.textContent = element.textContent;\n // async false makes scripts run in-order. it wont block js execution (thankfully)\n // https://github.com/turbolinks/turbolinks/issues/282#issuecomment-355731712\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n if (cb) {\n createdScriptElement.addEventListener(\"load\", cb);\n }\n return createdScriptElement;\n }\n}\n\nexport function copyElementAttributes(\n destinationElement: Element,\n sourceElement: Element\n) {\n for (const { name, value } of array(sourceElement.attributes)) {\n destinationElement.setAttribute(name, value);\n }\n}\n\nfunction replaceElementWithElement(fromElement: Element, toElement: Element) {\n const parentElement = fromElement.parentElement;\n if (parentElement) {\n return parentElement.replaceChild(toElement, fromElement);\n }\n}\nexport function activateNewBodyScriptElements(\n newScriptElements: HTMLScriptElement[]\n) {\n for (const inertScriptElement of newScriptElements) {\n const activatedScriptElement = createScriptElement(inertScriptElement);\n replaceElementWithElement(inertScriptElement, activatedScriptElement);\n }\n}\n\nexport function focusFirstAutofocusableElement() {\n const element = document.body.querySelector(\"[autofocus]\");\n if (element && \"focus\" in element && typeof element.focus === \"function\") {\n element.focus();\n }\n}\n","import { createScriptElement } from \"./util\";\n\ninterface ElementDetails {\n tracked: boolean;\n}\nconst allHeadScriptsEverRun: { [outerHTML: string]: ElementDetails } = {};\nlet firstLoad = true;\nlet lastTrackedScriptSignature: string;\n\nexport async function mergeHead(\n head: HTMLHeadElement,\n trackScripts: boolean,\n reload: () => void\n) {\n const newHead = categorizeHead(head);\n const oldHead = categorizeHead(document.head);\n\n if (\n head\n .querySelector('meta[name=\"turbolinks-visit-control\"]')\n ?.getAttribute(\"content\") === \"reload\"\n ) {\n reload();\n }\n if (trackScripts) {\n lastTrackedScriptSignature =\n lastTrackedScriptSignature ||\n trackedElementSignature([...oldHead.scripts, ...oldHead.stylesheets]);\n if (\n lastTrackedScriptSignature !==\n trackedElementSignature([...newHead.scripts, ...newHead.stylesheets])\n ) {\n reload();\n }\n }\n\n if (firstLoad) {\n // TODO: messy code\n for (const element of oldHead.scripts) {\n allHeadScriptsEverRun[element.outerHTML] = {\n tracked: elementIsTracked(element),\n };\n }\n firstLoad = false;\n }\n\n copyNewHeadStylesheetElements(newHead.stylesheets, oldHead.stylesheets);\n removeCurrentHeadProvisionalElements(oldHead.provisional);\n copyNewHeadProvisionalElements(newHead.provisional);\n\n return new Promise<void>((resolve) => {\n copyNewHeadScriptElements(newHead.scripts, resolve);\n });\n}\n\nfunction trackedElementSignature(scripts: Element[]) {\n return scripts\n .filter(elementIsTracked)\n .map((s) => s.outerHTML)\n .join();\n}\n\nfunction copyNewHeadStylesheetElements(next: Element[], prev: Element[]) {\n const existing = prev.map((s) => s.outerHTML);\n for (const element of next) {\n if (!existing.includes(element.outerHTML)) {\n document.head.appendChild(element);\n }\n }\n}\n\nfunction copyNewHeadScriptElements(\n next: Element[],\n onScriptsLoaded: () => void\n) {\n let blockingLoaded: boolean[] = [];\n function dispatch() {\n onScriptsLoaded();\n }\n for (const element of next as HTMLScriptElement[]) {\n const runBefore = element.outerHTML in allHeadScriptsEverRun;\n if (!runBefore) {\n let cb;\n if (!element.defer && element.src) {\n const idx = blockingLoaded.length;\n cb = () => {\n blockingLoaded[idx] = true;\n if (blockingLoaded.every((v) => v)) {\n dispatch();\n }\n };\n blockingLoaded.push(false);\n }\n document.head.appendChild(createScriptElement(element, cb));\n allHeadScriptsEverRun[element.outerHTML] = {\n tracked: elementIsTracked(element),\n };\n }\n }\n if (blockingLoaded.length === 0) {\n // raf waits for react to finish\n requestAnimationFrame(dispatch);\n }\n}\n\nfunction removeCurrentHeadProvisionalElements(prev: Element[]) {\n for (const element of prev) {\n document.head.removeChild(element);\n }\n}\n\nfunction copyNewHeadProvisionalElements(next: Element[]) {\n for (const element of next) {\n document.head.appendChild(element);\n }\n}\n\nfunction elementIsTracked(element: Element) {\n return element.getAttribute(\"data-turbolinks-track\") == \"reload\";\n}\n\nfunction elementIsScript(element: Element) {\n const tagName = element.tagName.toLowerCase();\n return tagName == \"script\";\n}\n\nfunction elementIsStylesheet(element: Element) {\n const tagName = element.tagName.toLowerCase();\n return (\n tagName == \"style\" ||\n (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\")\n );\n}\n\nfunction elementIsFavicon(element: Element) {\n const tagName = element.tagName.toLowerCase();\n\n return tagName == \"link\" && element.getAttribute(\"rel\") == \"icon\";\n}\n\nfunction categorizeHead(head: ParentNode) {\n const scripts = [];\n const stylesheets = [];\n const provisional = [];\n for (const element of head.children) {\n // we want to keep the same favicon on page transitions\n if (elementIsFavicon(element)) {\n continue;\n }\n\n if (elementIsScript(element)) {\n scripts.push(element);\n } else if (elementIsStylesheet(element)) {\n stylesheets.push(element);\n } else {\n provisional.push(element);\n }\n }\n return { scripts, stylesheets, provisional };\n}\n","export class LruCache<T> {\n private values: Map<string, T> = new Map<string, T>();\n private maxEntries;\n\n constructor(maxEntries: number) {\n this.maxEntries = maxEntries;\n }\n\n public get(key: string): T | undefined {\n const hasKey = this.values.has(key);\n let entry: T | undefined;\n if (hasKey) {\n // peek the entry, re-insert for LRU strategy\n entry = this.values.get(key)!;\n this.values.delete(key);\n this.values.set(key, entry);\n }\n\n return entry;\n }\n\n public put(key: string, value: T) {\n if (this.values.size >= this.maxEntries) {\n // least-recently used cache eviction strategy\n const keyToDelete = this.values.keys().next().value;\n\n this.values.delete(keyToDelete);\n }\n\n this.values.set(key, value);\n }\n}\n","import { unindent } from \"./util\";\n\nexport class ProgressBar {\n static animationDuration = 300; /*ms*/\n\n static get defaultCSS() {\n return unindent`\n .turbolinks-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 9999;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${\n ProgressBar.animationDuration / 2\n }ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `;\n }\n\n readonly stylesheetElement = this.createStylesheetElement();\n readonly progressElement = this.createProgressElement();\n\n hiding = false;\n trickleInterval?: number;\n value = 0;\n visible = false;\n\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installStylesheetElement();\n this.installProgressElement();\n this.startTrickling();\n }\n }\n\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n\n setValue(value: number) {\n this.value = value;\n this.refresh();\n }\n\n // Private\n\n installStylesheetElement() {\n document.head.insertBefore(\n this.stylesheetElement,\n document.head.firstChild\n );\n }\n\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n\n fadeProgressElement(callback: () => void) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(\n this.trickle,\n ProgressBar.animationDuration\n );\n }\n }\n\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n\n trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n };\n\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\n }\n\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n return element;\n }\n\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbolinks-progress-bar\";\n return element;\n }\n}\n","import { Adapter } from \"./adapter\";\nimport { Controller } from \"./controller\";\nimport { Locatable } from \"./location\";\nimport { ProgressBar } from \"./progress_bar\";\nimport { Action } from \"./types\";\nimport { Visit } from \"./visit\";\n\nexport class BrowserAdapter implements Adapter {\n readonly controller: Controller;\n readonly progressBar = new ProgressBar();\n\n progressBarTimeout?: number;\n\n constructor(controller: Controller) {\n this.controller = controller;\n }\n\n visitProposedToLocationWithAction(location: Locatable, action: Action) {\n this.controller.startVisitToLocationWithAction(\n location,\n action,\n );\n }\n\n visitStarted(visit: Visit) {\n visit.issueRequest();\n visit.changeHistory();\n visit.loadCachedSnapshot();\n }\n\n visitRequestStarted(visit: Visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showProgressBarAfterDelay();\n } else {\n this.showProgressBar();\n }\n }\n\n visitRequestProgressed(visit: Visit) {\n this.progressBar.setValue(visit.progress);\n }\n\n visitRequestCompleted(visit: Visit) {\n visit.loadResponse();\n }\n\n visitRequestFailedWithStatusCode(visit: Visit, statusCode: number) {\n switch (statusCode) {\n // TODO\n // case SystemStatusCode.networkFailure:\n // case SystemStatusCode.timeoutFailure:\n // case SystemStatusCode.contentTypeMismatch:\n // return this.reload()\n default:\n return visit.loadResponse();\n }\n }\n\n visitRequestFinished(visit: Visit) {\n this.hideProgressBar();\n }\n\n visitCompleted(visit: Visit) {\n }\n\n pageInvalidated() {\n this.reload();\n }\n\n visitFailed(visit: Visit) {}\n\n visitRendered(visit: Visit) {}\n\n // Private\n\n showProgressBarAfterDelay() {\n this.progressBarTimeout = window.setTimeout(\n this.showProgressBar,\n this.controller.progressBarDelay\n );\n }\n\n showProgressBar = () => {\n this.progressBar.show();\n };\n\n hideProgressBar() {\n this.progressBar.hide();\n if (this.progressBarTimeout != null) {\n window.clearTimeout(this.progressBarTimeout);\n delete this.progressBarTimeout;\n }\n }\n\n reload() {\n window.location.reload();\n }\n}\n","export type Locatable = Location | string;\n\nexport class Location {\n static get currentLocation() {\n return this.wrap(window.location.toString());\n }\n\n static wrap(locatable: Locatable): Location;\n static wrap(locatable?: Locatable | null): Location | undefined;\n static wrap(locatable: Locatable) {\n if (typeof locatable == \"string\") {\n return new this(locatable);\n } else if (locatable != null) {\n return locatable;\n }\n }\n\n readonly absoluteURL: string;\n readonly requestURL: string;\n readonly anchor?: string;\n\n constructor(url: string) {\n const linkWithAnchor = document.createElement(\"a\");\n linkWithAnchor.href = url;\n\n this.absoluteURL = linkWithAnchor.href;\n\n const anchorLength = linkWithAnchor.hash.length;\n if (anchorLength < 2) {\n this.requestURL = this.absoluteURL;\n } else {\n this.requestURL = this.absoluteURL.slice(0, -anchorLength);\n this.anchor = linkWithAnchor.hash.slice(1);\n }\n }\n\n getOrigin() {\n return this.absoluteURL.split(\"/\", 3).join(\"/\");\n }\n\n getPath() {\n return (this.requestURL.match(/\\/\\/[^/]*(\\/[^?;]*)/) || [])[1] || \"/\";\n }\n\n getPathComponents() {\n return this.getPath().split(\"/\").slice(1);\n }\n\n getLastPathComponent() {\n return this.getPathComponents().slice(-1)[0];\n }\n\n getExtension() {\n return (this.getLastPathComponent().match(/\\.[^.]*$/) || [])[0] || \"\";\n }\n\n isHTML() {\n return this.getExtension().match(/^(?:|\\.(?:htm|html|xhtml))$/);\n }\n\n isPrefixedBy(location: Location): boolean {\n const prefixURL = getPrefixURL(location);\n return (\n this.isEqualTo(location) || stringStartsWith(this.absoluteURL, prefixURL)\n );\n }\n\n isEqualTo(location?: Location) {\n return location && this.absoluteURL === location.absoluteURL;\n }\n\n toCacheKey() {\n return this.requestURL;\n }\n\n toJSON() {\n return this.absoluteURL;\n }\n\n toString() {\n return this.absoluteURL;\n }\n\n valueOf() {\n return this.absoluteURL;\n }\n}\n\nfunction getPrefixURL(location: Location) {\n return addTrailingSlash(location.getOrigin() + location.getPath());\n}\n\nfunction addTrailingSlash(url: string) {\n return stringEndsWith(url, \"/\") ? url : url + \"/\";\n}\n\nfunction stringStartsWith(string: string, prefix: string) {\n return string.slice(0, prefix.length) === prefix;\n}\n\nfunction stringEndsWith(string: string, suffix: string) {\n return string.slice(-suffix.length) === suffix;\n}\n","export type Action = \"advance\" | \"replace\" | \"restore\";\n\nexport function isAction(action: any): action is Action {\n return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\n\nexport type Position = { x: number; y: number };\n","import { navigate } from \"vike/client/router\";\nimport { Adapter } from \"./adapter\";\nimport { Controller } from \"./controller.js\";\nimport { Location } from \"./location\";\nimport { Action } from \"./types\";\nimport { uuid } from \"./util\";\n\nexport enum TimingMetric {\n visitStart = \"visitStart\",\n requestStart = \"requestStart\",\n requestEnd = \"requestEnd\",\n visitEnd = \"visitEnd\",\n}\n\nexport type TimingMetrics = Partial<{ [metric in TimingMetric]: any }>;\n\nexport enum VisitState {\n initialized = \"initialized\",\n started = \"started\",\n canceled = \"canceled\",\n failed = \"failed\",\n completed = \"completed\",\n}\n\nexport class Visit {\n readonly controller: Controller;\n readonly action: Action;\n readonly adapter: Adapter;\n readonly identifier = uuid();\n readonly restorationIdentifier: string;\n readonly timingMetrics: TimingMetrics = {};\n\n frame?: number;\n location: Location;\n progress = 0;\n referrer?: Location;\n redirectedToLocation?: Location;\n snapshotCached = false;\n state = VisitState.initialized;\n\n requestInFlight = false;\n renderFn?: () => Promise<void>;\n\n constructor(\n controller: Controller,\n location: Location,\n action: Action,\n restorationIdentifier: string = uuid()\n ) {\n this.controller = controller;\n this.location = location;\n this.action = action;\n this.adapter = controller.adapter;\n this.restorationIdentifier = restorationIdentifier;\n }\n\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n }\n }\n\n cancel() {\n if (this.state == VisitState.started) {\n this.requestInFlight = false;\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.state = VisitState.completed;\n this.adapter.visitCompleted(this);\n this.controller.visitCompleted(this);\n }\n }\n\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n }\n }\n\n changeHistory() {\n // no-op since issueRequest calls navigate which handles all of this already\n return;\n }\n\n issueRequest() {\n if (!this.requestInFlight) {\n if (this.shouldIssueRequest()) {\n const url = new URL(\n this.location.toString(),\n this.location.getOrigin()\n );\n navigate(url.pathname + url.hash + url.search, {\n overwriteLastHistoryEntry: this.action === \"replace\",\n }).catch(console.error);\n this.progress = 0;\n this.requestInFlight = true;\n }\n }\n }\n\n getCachedSnapshot() {\n const snapshot = this.controller.getCachedSnapshotForLocation(\n this.location\n );\n if (snapshot) {\n if (this.action == \"restore\") {\n return snapshot;\n }\n }\n }\n\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null;\n }\n\n loadCachedSnapshot() {\n // no-op since issueRequest calls navigate which handles all of this already\n return;\n }\n\n loadResponse() {\n this.render(async () => {\n if (!this.renderFn)\n throw new Error(\"Render details not set before rendering\");\n this.cacheSnapshot();\n await this.renderFn();\n this.complete();\n });\n }\n\n // HTTP request delegate\n\n /*\n requestStarted() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n\n requestProgressed(progress: number) {\n this.progress = progress;\n if (this.adapter.visitRequestProgressed) {\n this.adapter.visitRequestProgressed(this);\n }\n }\n\n requestCompletedWithResponse(\n response: string,\n redirectedToLocation?: Location\n ) {\n this.response = response;\n this.redirectedToLocation = redirectedToLocation;\n this.adapter.visitRequestCompleted(this);\n }\n\n requestFailedWithStatusCode(statusCode: number, response?: string) {\n this.response = response;\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n\n requestFinished() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n */\n\n // Instrumentation\n\n recordTimingMetric(metric: TimingMetric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n\n getTimingMetrics(): TimingMetrics {\n return { ...this.timingMetrics };\n }\n\n // Private\n\n shouldIssueRequest() {\n return this.action == \"restore\" ? !this.hasCachedSnapshot() : true;\n }\n\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.controller.cacheSnapshot();\n this.snapshotCached = true;\n }\n }\n\n render(callback: () => Promise<void>) {\n this.cancelRender();\n this.frame = requestAnimationFrame(() => {\n delete this.frame;\n callback.call(this);\n });\n }\n\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\n","import { LruCache } from \"./lruCache\";\nimport { Adapter } from \"./adapter\";\nimport { BrowserAdapter } from \"./browser_adapter\";\nimport { Location, Locatable } from \"./location\";\nimport { Action, isAction } from \"./types\";\nimport { closest, defer, dispatch, uuid } from \"./util\";\nimport { Visit } from \"./visit\";\nimport { setNavigation } from \"../../renderer/useNavigation\";\nimport { PageContextProxyClientHydration } from \"../../types/internal\";\n\nexport type TimingData = {};\nexport type VisitOptions = { action: Action };\n\nexport interface Snapshot {\n bodyEl: Element;\n headEl: HTMLHeadElement;\n pageContext: PageContextProxyClientHydration;\n}\n\nexport class Controller {\n adapter: Adapter = new BrowserAdapter(this);\n\n cache = new LruCache<Snapshot>(10);\n currentVisit?: Visit;\n enabled = true;\n lastRenderedLocation?: Location;\n location!: Location;\n progressBarDelay = 500;\n restorationIdentifier!: string; // This only exists for compatibility with iOS\n started = false;\n pageContext: any;\n\n start() {\n if (!this.started) {\n addEventListener(\"click\", this.clickCaptured, true);\n this.location = Location.currentLocation;\n this.restorationIdentifier = uuid();\n this.lastRenderedLocation = this.location;\n this.started = true;\n this.enabled = true;\n }\n }\n\n disable() {\n this.enabled = false;\n }\n\n stop() {\n if (this.started) {\n removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n\n clearCache() {\n this.cache = new LruCache(10);\n }\n\n visit(location: Locatable, options: Partial<VisitOptions> = {}) {\n location = Location.wrap(location);\n if (this.applicationAllowsVisitingLocation(location)) {\n if (this.locationIsVisitable(location)) {\n const action = options.action || \"advance\";\n this.adapter.visitProposedToLocationWithAction(location, action);\n } else {\n window.location.href = location.toString();\n }\n }\n }\n\n startVisitToLocationWithAction(\n location: Locatable,\n action: Action,\n restorationIdentifier?: string\n ) {\n this.startVisit(Location.wrap(location), action);\n }\n\n setProgressBarDelay(delay: number) {\n this.progressBarDelay = delay;\n }\n\n // History delegate\n\n historyPoppedToLocationWithRestorationIdentifier(\n location: Locatable,\n restorationIdentifier: string\n ) {\n if (this.enabled) {\n this.location = Location.wrap(location);\n this.restorationIdentifier = restorationIdentifier;\n this.startVisit(this.location, \"restore\");\n } else {\n this.adapter.pageInvalidated();\n }\n }\n\n // Snapshot cache\n\n getCachedSnapshotForLocation(location: Locatable) {\n return this.cache.get(Location.wrap(location).toCacheKey());\n }\n\n shouldCacheSnapshot() {\n return (\n document.querySelector(\"#proxied-body\") &&\n document.head\n .querySelector(\"meta[name='turbolinks-no-cache']\")\n ?.getAttribute(\"content\") != \"no-cache\"\n );\n }\n\n cacheSnapshot() {\n if (this.shouldCacheSnapshot()) {\n this.notifyApplicationBeforeCachingSnapshot();\n const snapshot = {\n bodyEl: document.body.cloneNode(true),\n headEl: document.head.cloneNode(true),\n pageContext: this.pageContext,\n };\n const location = this.lastRenderedLocation || Location.currentLocation;\n defer(() => this.cache.put(location.toCacheKey(), snapshot));\n }\n }\n\n // View\n viewInvalidated() {\n this.adapter.pageInvalidated();\n }\n\n viewWillRender() {\n this.notifyApplicationBeforeRender();\n }\n\n viewRendered() {\n this.lastRenderedLocation = this.currentVisit!.location;\n this.notifyApplicationAfterRender();\n }\n\n // Event handlers\n\n clickCaptured = () => {\n removeEventListener(\"click\", this.clickBubbled, false);\n addEventListener(\"click\", this.clickBubbled, false);\n };\n\n clickBubbled = (event: MouseEvent) => {\n if (this.enabled && this.clickEventIsSignificant(event)) {\n const link = this.getVisitableLinkForTarget(event.target);\n if (link) {\n const location = this.getVisitableLocationForLink(link);\n if (\n location &&\n this.applicationAllowsFollowingLinkToLocation(link, location)\n ) {\n event.preventDefault();\n event.stopPropagation();\n const action = this.getActionForLink(link);\n this.visit(location, { action });\n }\n }\n }\n };\n\n // Application events\n\n applicationAllowsFollowingLinkToLocation(link: Element, location: Location) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(\n link,\n location\n );\n return !event.defaultPrevented;\n }\n\n applicationAllowsVisitingLocation(location: Location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented;\n }\n\n notifyApplicationAfterClickingLinkToLocation(\n link: Element,\n location: Location\n ) {\n return dispatch(\"turbolinks:click\", {\n target: link,\n data: { url: location.absoluteURL },\n cancelable: true,\n });\n }\n\n notifyApplicationBeforeVisitingLocation(location: Location) {\n setNavigation({ state: \"loading\" });\n return dispatch(\"turbolinks:before-visit\", {\n data: { url: location.absoluteURL },\n cancelable: true,\n });\n }\n\n notifyApplicationAfterVisitingLocation(location: Location) {\n return dispatch(\"turbolinks:visit\", {\n data: { url: location.absoluteURL },\n });\n }\n\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbolinks:before-cache\");\n }\n\n notifyApplicationBeforeRender() {\n setNavigation({ state: \"idle\" });\n return dispatch(\"turbolinks:before-render\");\n }\n\n notifyApplicationAfterRender() {\n return dispatch(\"turbolinks:render\");\n }\n\n notifyApplicationAfterPageLoad(timing: TimingData = {}) {\n return dispatch(\"turbolinks:load\", {\n data: { url: this.location.absoluteURL, timing },\n });\n }\n\n // Private\n\n startVisit(location: Location, action: Action) {\n if (this.currentVisit) {\n this.currentVisit.cancel();\n }\n this.currentVisit = this.createVisit(location, action);\n this.currentVisit.start();\n this.notifyApplicationAfterVisitingLocation(location);\n }\n\n createVisit(location: Location, action: Action): Visit {\n const visit = new Visit(this, location, action);\n visit.referrer = this.location;\n if (action === \"restore\") {\n // dont issue navigate() because VPS already did.\n visit.requestInFlight = true;\n }\n return visit;\n }\n\n visitCompleted(visit: Visit) {\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n\n clickEventIsSignificant(event: MouseEvent) {\n return !(\n (event.target && (event.target as any).isContentEditable) ||\n event.defaultPrevented ||\n event.which > 1 ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey\n );\n }\n\n getVisitableLinkForTarget(target: EventTarget | null) {\n if (target instanceof Element && this.elementIsVisitable(target)) {\n return closest(target, \"a[href]:not([target]):not([download])\");\n }\n }\n\n getVisitableLocationForLink(link: Element) {\n const location = new Location(link.getAttribute(\"href\") || \"\");\n if (this.locationIsVisitable(location)) {\n return location;\n }\n }\n\n getActionForLink(link: Element): Action {\n const action = link.getAttribute(\"data-turbolinks-action\");\n return isAction(action) ? action : \"advance\";\n }\n\n elementIsVisitable(element: Element) {\n const container = closest(element, \"[data-turbolinks]\");\n if (container) {\n return container.getAttribute(\"data-turbolinks\") != \"false\";\n } else {\n return true;\n }\n }\n\n locationIsVisitable(location: Location) {\n return location.isPrefixedBy(new Location(\"/\")) && location.isHTML();\n }\n}\n","import { mergeHead } from \"./mergeHead\";\nimport { Controller, VisitOptions } from \"./controller\";\nimport { Locatable } from \"./location\";\nimport {\n activateNewBodyScriptElements,\n focusFirstAutofocusableElement,\n} from \"./util\";\n\nconst controller = new Controller();\n\nexport const Turbolinks = {\n get supported() {\n return true;\n },\n\n controller,\n\n visit(location: Locatable, options?: Partial<VisitOptions>) {\n controller.visit(location, options);\n },\n\n clearCache() {\n controller.clearCache();\n },\n\n setProgressBarDelay(delay: number) {\n controller.setProgressBarDelay(delay);\n },\n\n start() {\n // because this runs after ios hooks, we have to recover. See onRenderHtml\n if (\n window.Turbolinks !== Turbolinks &&\n window.Turbolinks.controller.adapter\n ) {\n (window.Turbolinks.controller.adapter as any).controller = controller;\n controller.adapter = window.Turbolinks.controller.adapter;\n }\n // Tells vike not to do link interception\n (window as any)._disableAutomaticLinkInterception = true;\n window.Turbolinks = Turbolinks;\n controller.start();\n },\n\n _vpsCachePageContext(pageContext: any) {\n controller.pageContext = pageContext;\n },\n\n _vpsOnRenderClient(\n newHead: HTMLHeadElement,\n trackScripts: boolean,\n executeBodyScripts: boolean,\n renderBody: () => void\n ) {\n if (controller.currentVisit) {\n const { currentVisit } = controller;\n // TODO: move to controller?\n currentVisit.renderFn = async () => {\n const scriptsLoaded = mergeHead(newHead, trackScripts, () =>\n controller.viewInvalidated()\n );\n\n controller.viewWillRender();\n renderBody();\n await scriptsLoaded;\n\n if (executeBodyScripts) {\n activateNewBodyScriptElements(\n Array.from(document.body.querySelectorAll(\"script\"))\n );\n }\n focusFirstAutofocusableElement();\n\n controller.viewRendered();\n controller.adapter.visitRendered(currentVisit);\n };\n\n controller.adapter.visitRequestCompleted(controller.currentVisit);\n controller.adapter.visitRequestFinished(controller.currentVisit);\n } else {\n console.error(\n \"controller.currentVisit should exist when onRenderClient fires\"\n );\n }\n },\n};\n\nexport type Turbolinks = typeof Turbolinks;\n","import { ReactNode } from \"react\";\nimport { Root, createRoot, hydrateRoot } from \"react-dom/client\";\n\nlet root: Root;\n\nexport function renderReact(page: ReactNode, isHydration: boolean) {\n const container = document.getElementById(\"page-view\")!;\n if (isHydration) {\n root = hydrateRoot(container, page);\n } else {\n if (!root) {\n root = createRoot(container);\n }\n root.render(page);\n }\n}\n"],"mappings":"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","names":["closest","dispatch","controller","controller"]}
|
package/dist/chunk-XMNZZA6S.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getElementAttributes
|
|
3
|
-
} from "./chunk-RQ34EW7E.js";
|
|
4
|
-
import {
|
|
5
|
-
PageShell
|
|
6
|
-
} from "./chunk-JHLK62FM.js";
|
|
7
|
-
|
|
8
|
-
// renderer/wrapped/onRenderHtml.tsx
|
|
9
|
-
import React from "react";
|
|
10
|
-
import ReactDOMServer from "react-dom/server";
|
|
11
|
-
import { dangerouslySkipEscape, escapeInject } from "vike/server";
|
|
12
|
-
import jsdom from "jsdom";
|
|
13
|
-
async function wrappedOnRenderHtml(pageContext) {
|
|
14
|
-
if (pageContext.wrappedServerOnly) {
|
|
15
|
-
const { html, layoutProps, layout } = pageContext.wrappedServerOnly;
|
|
16
|
-
const { layoutMap } = pageContext.config;
|
|
17
|
-
if (!layoutMap) {
|
|
18
|
-
throw new Error("layoutMap needs to be defined in config");
|
|
19
|
-
}
|
|
20
|
-
const Layout = layoutMap[layout];
|
|
21
|
-
if (!Layout) {
|
|
22
|
-
return { documentHtml: html, pageContext: {} };
|
|
23
|
-
}
|
|
24
|
-
const dom = new jsdom.JSDOM(html);
|
|
25
|
-
const doc = dom.window.document;
|
|
26
|
-
const bodyEl = doc.querySelector("body");
|
|
27
|
-
const head = doc.querySelector("head");
|
|
28
|
-
if (!bodyEl || !head) {
|
|
29
|
-
throw new Error("Proxy failed");
|
|
30
|
-
}
|
|
31
|
-
const pageHtml = ReactDOMServer.renderToString(
|
|
32
|
-
/* @__PURE__ */ React.createElement(PageShell, { pageContext }, /* @__PURE__ */ React.createElement(Layout, { ...layoutProps }, /* @__PURE__ */ React.createElement(
|
|
33
|
-
"div",
|
|
34
|
-
{
|
|
35
|
-
id: "proxied-body",
|
|
36
|
-
dangerouslySetInnerHTML: { __html: bodyEl.innerHTML }
|
|
37
|
-
}
|
|
38
|
-
)))
|
|
39
|
-
);
|
|
40
|
-
const documentHtml = escapeInject`
|
|
41
|
-
<!DOCTYPE html>
|
|
42
|
-
<html>
|
|
43
|
-
<head>
|
|
44
|
-
${// We need to fire turbolinks:load exactly on DCL, so it must be a blocking head script to catch DCL event.
|
|
45
|
-
// Vite loads scripts with type="module" so the rest of our code will show up too late.
|
|
46
|
-
// TODO: figure out how to bundle this better. at least read from a .js file
|
|
47
|
-
dangerouslySkipEscape(`<script>
|
|
48
|
-
window.Turbolinks = {controller:{restorationIdentifier: ''},supported:true};
|
|
49
|
-
addEventListener("DOMContentLoaded", () => {
|
|
50
|
-
const event = new Event("turbolinks:load", { bubbles: true, cancelable: true });
|
|
51
|
-
event.data = {url: window.location.href};
|
|
52
|
-
document.dispatchEvent(event);
|
|
53
|
-
})
|
|
54
|
-
</script>`)}
|
|
55
|
-
${dangerouslySkipEscape(head.innerHTML)}
|
|
56
|
-
</head>
|
|
57
|
-
<body ${dangerouslySkipEscape(
|
|
58
|
-
Object.entries(getElementAttributes(bodyEl)).map(([name, value]) => `${name}="${value}"`).join(" ")
|
|
59
|
-
)}>
|
|
60
|
-
<div id="page-view">${dangerouslySkipEscape(pageHtml)}</div>
|
|
61
|
-
</body>
|
|
62
|
-
</html>`;
|
|
63
|
-
return {
|
|
64
|
-
documentHtml,
|
|
65
|
-
pageContext: { layout, layoutProps }
|
|
66
|
-
};
|
|
67
|
-
} else {
|
|
68
|
-
return { documentHtml: dangerouslySkipEscape("") };
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export {
|
|
73
|
-
wrappedOnRenderHtml
|
|
74
|
-
};
|
|
75
|
-
//# sourceMappingURL=chunk-XMNZZA6S.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../renderer/wrapped/onRenderHtml.tsx"],"sourcesContent":["import React from \"react\";\nimport ReactDOMServer from \"react-dom/server\";\nimport { dangerouslySkipEscape, escapeInject } from \"vike/server\";\nimport { PageContextProxyServer } from \"../../types/internal.js\";\nimport { PageShell } from \"../../lib/PageShell.js\";\nimport jsdom from \"jsdom\";\nimport { getElementAttributes } from \"../../lib/getElementAttributes.js\";\n\nexport async function wrappedOnRenderHtml(pageContext: PageContextProxyServer) {\n if (pageContext.wrappedServerOnly) {\n const { html, layoutProps, layout } = pageContext.wrappedServerOnly;\n\n const { layoutMap } = pageContext.config;\n if (!layoutMap) {\n throw new Error(\"layoutMap needs to be defined in config\");\n }\n const Layout = layoutMap[layout];\n if (!Layout) {\n // passthru\n return { documentHtml: html, pageContext: {} };\n }\n\n const dom = new jsdom.JSDOM(html);\n const doc = dom.window.document;\n const bodyEl = doc.querySelector(\"body\");\n const head = doc.querySelector(\"head\");\n if (!bodyEl || !head) {\n throw new Error(\"Proxy failed\");\n }\n\n const pageHtml = ReactDOMServer.renderToString(\n <PageShell pageContext={pageContext}>\n <Layout {...layoutProps}>\n <div\n id=\"proxied-body\"\n dangerouslySetInnerHTML={{ __html: bodyEl.innerHTML }}\n />\n </Layout>\n </PageShell>\n );\n\n const documentHtml = escapeInject`\n <!DOCTYPE html>\n <html>\n <head>\n ${\n // We need to fire turbolinks:load exactly on DCL, so it must be a blocking head script to catch DCL event.\n // Vite loads scripts with type=\"module\" so the rest of our code will show up too late.\n // TODO: figure out how to bundle this better. at least read from a .js file\n dangerouslySkipEscape(`<script>\n window.Turbolinks = {controller:{restorationIdentifier: ''},supported:true};\n addEventListener(\"DOMContentLoaded\", () => {\n const event = new Event(\"turbolinks:load\", { bubbles: true, cancelable: true });\n event.data = {url: window.location.href};\n document.dispatchEvent(event); \n })\n </script>`)\n }\n ${dangerouslySkipEscape(head.innerHTML)}\n </head>\n <body ${dangerouslySkipEscape(\n Object.entries(getElementAttributes(bodyEl))\n .map(([name, value]) => `${name}=\"${value}\"`)\n .join(\" \")\n )}>\n <div id=\"page-view\">${dangerouslySkipEscape(pageHtml)}</div>\n </body>\n </html>`;\n\n return {\n documentHtml,\n pageContext: { layout, layoutProps },\n };\n } else {\n // do nothing: Just exists to signal fastify server that no routes matched and we should proxy\n return { documentHtml: dangerouslySkipEscape(\"\") };\n }\n}\n"],"mappings":";;;;;;;;AAAA,OAAO,WAAW;AAClB,OAAO,oBAAoB;AAC3B,SAAS,uBAAuB,oBAAoB;AAGpD,OAAO,WAAW;AAGlB,eAAsB,oBAAoB,aAAqC;AAC7E,MAAI,YAAY,mBAAmB;AACjC,UAAM,EAAE,MAAM,aAAa,OAAO,IAAI,YAAY;AAElD,UAAM,EAAE,UAAU,IAAI,YAAY;AAClC,QAAI,CAAC,WAAW;AACd,YAAM,IAAI,MAAM,yCAAyC;AAAA,IAC3D;AACA,UAAM,SAAS,UAAU,MAAM;AAC/B,QAAI,CAAC,QAAQ;AAEX,aAAO,EAAE,cAAc,MAAM,aAAa,CAAC,EAAE;AAAA,IAC/C;AAEA,UAAM,MAAM,IAAI,MAAM,MAAM,IAAI;AAChC,UAAM,MAAM,IAAI,OAAO;AACvB,UAAM,SAAS,IAAI,cAAc,MAAM;AACvC,UAAM,OAAO,IAAI,cAAc,MAAM;AACrC,QAAI,CAAC,UAAU,CAAC,MAAM;AACpB,YAAM,IAAI,MAAM,cAAc;AAAA,IAChC;AAEA,UAAM,WAAW,eAAe;AAAA,MAC9B,oCAAC,aAAU,eACT,oCAAC,UAAQ,GAAG,eACV;AAAA,QAAC;AAAA;AAAA,UACC,IAAG;AAAA,UACH,yBAAyB,EAAE,QAAQ,OAAO,UAAU;AAAA;AAAA,MACtD,CACF,CACF;AAAA,IACF;AAEA,UAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQb,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAOd,CACV;AAAA,YACE,sBAAsB,KAAK,SAAS,CAAC;AAAA;AAAA,gBAEjC;AAAA,MACN,OAAO,QAAQ,qBAAqB,MAAM,CAAC,EACxC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,GAAG,IAAI,KAAK,KAAK,GAAG,EAC3C,KAAK,GAAG;AAAA,IACb,CAAC;AAAA,gCACuB,sBAAsB,QAAQ,CAAC;AAAA;AAAA;AAI3D,WAAO;AAAA,MACL;AAAA,MACA,aAAa,EAAE,QAAQ,YAAY;AAAA,IACrC;AAAA,EACF,OAAO;AAEL,WAAO,EAAE,cAAc,sBAAsB,EAAE,EAAE;AAAA,EACnD;AACF;","names":[]}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { PropsWithChildren } from 'react';
|
|
2
|
-
import { Config, PageContextServer, PageContextClient } from 'vike/types';
|
|
3
|
-
import { bifrostConfig } from './renderer/configs/bifrost.js';
|
|
4
|
-
import { wrappedConfig } from './renderer/configs/wrapped.js';
|
|
5
|
-
|
|
6
|
-
interface Snapshot {
|
|
7
|
-
bodyEl: Element;
|
|
8
|
-
headEl: HTMLHeadElement;
|
|
9
|
-
pageContext: PageContextProxyClientHydration;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
declare namespace AugmentMe {
|
|
13
|
-
interface PageContextInit {
|
|
14
|
-
}
|
|
15
|
-
interface LayoutProps {
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
type ConfigConstructor<LibConfig extends Config, T extends {
|
|
19
|
-
[K in keyof LibConfig["meta"]]: any;
|
|
20
|
-
}> = Omit<Config, "extends"> & {
|
|
21
|
-
extends?: Config;
|
|
22
|
-
} & Partial<T>;
|
|
23
|
-
interface DocumentProps {
|
|
24
|
-
title?: string;
|
|
25
|
-
description?: string;
|
|
26
|
-
alternates?: Alternates;
|
|
27
|
-
viewport?: {
|
|
28
|
-
[key: string]: string;
|
|
29
|
-
};
|
|
30
|
-
metaTags?: MetaTag[];
|
|
31
|
-
}
|
|
32
|
-
type BodyAttrs = {
|
|
33
|
-
name: string;
|
|
34
|
-
value: string;
|
|
35
|
-
}[];
|
|
36
|
-
type MetaTag = {
|
|
37
|
-
name?: string;
|
|
38
|
-
property?: string;
|
|
39
|
-
content: string;
|
|
40
|
-
};
|
|
41
|
-
type Alternates = {
|
|
42
|
-
canonical?: string;
|
|
43
|
-
};
|
|
44
|
-
type OnClientInit = () => Promise<void>;
|
|
45
|
-
type LayoutComponent = React.ComponentType<PropsWithChildren<AugmentMe.LayoutProps>>;
|
|
46
|
-
type LayoutMap = Record<string, LayoutComponent>;
|
|
47
|
-
type GetLayout = (headers: Record<string, number | string | string[] | undefined>) => {
|
|
48
|
-
layout: string;
|
|
49
|
-
layoutProps: AugmentMe.LayoutProps;
|
|
50
|
-
};
|
|
51
|
-
type ProxyMode = "wrapped" | "passthru" | false;
|
|
52
|
-
type ProxyConfig = ConfigConstructor<typeof wrappedConfig, {
|
|
53
|
-
layoutMap: LayoutMap;
|
|
54
|
-
getLayout: GetLayout;
|
|
55
|
-
proxyHeaders: Record<string, string>;
|
|
56
|
-
proxyMode: ProxyMode;
|
|
57
|
-
onClientInit: OnClientInit;
|
|
58
|
-
}>;
|
|
59
|
-
type PageContextProxyCommon = {
|
|
60
|
-
config: ProxyConfig;
|
|
61
|
-
};
|
|
62
|
-
type PageContextProxyPassedToClient = {
|
|
63
|
-
layout: string;
|
|
64
|
-
layoutProps: AugmentMe.LayoutProps;
|
|
65
|
-
redirectTo?: string;
|
|
66
|
-
};
|
|
67
|
-
type PageContextProxyServer = PageContextServer & PageContextProxyCommon & PageContextProxyPassedToClient & {
|
|
68
|
-
wrappedServerOnly?: {
|
|
69
|
-
layout: string;
|
|
70
|
-
layoutProps: AugmentMe.LayoutProps;
|
|
71
|
-
html: string;
|
|
72
|
-
};
|
|
73
|
-
};
|
|
74
|
-
type PageContextProxyClientHydration = PageContextClient & PageContextProxyCommon & PageContextProxyPassedToClient & {
|
|
75
|
-
isHydration: true;
|
|
76
|
-
};
|
|
77
|
-
type PageContextProxyClientNavigation = PageContextClient & PageContextProxyCommon & {
|
|
78
|
-
isHydration: false;
|
|
79
|
-
};
|
|
80
|
-
type PageContextProxyClientRestorationVisit = PageContextClient & PageContextProxyCommon & {
|
|
81
|
-
snapshot: Snapshot;
|
|
82
|
-
};
|
|
83
|
-
type PageContextProxyClient = PageContextProxyClientHydration | PageContextProxyClientNavigation | PageContextProxyClientRestorationVisit;
|
|
84
|
-
type PageContextProxy = PageContextProxyClient | PageContextProxyServer;
|
|
85
|
-
type Scripts = string[];
|
|
86
|
-
type DynamicScript = (pageContext: AugmentMe.PageContextInit) => string;
|
|
87
|
-
type DynamicScripts = DynamicScript[];
|
|
88
|
-
type NoProxyConfig = ConfigConstructor<typeof bifrostConfig, {
|
|
89
|
-
Layout: LayoutComponent;
|
|
90
|
-
layoutProps: AugmentMe.LayoutProps;
|
|
91
|
-
bodyAttrs: BodyAttrs;
|
|
92
|
-
documentProps: DocumentProps;
|
|
93
|
-
scripts: Scripts;
|
|
94
|
-
dynamicScripts: DynamicScripts;
|
|
95
|
-
favicon: string;
|
|
96
|
-
onClientInit: OnClientInit;
|
|
97
|
-
proxyMode: false;
|
|
98
|
-
}>;
|
|
99
|
-
type NoProxyCumulativeConfigs = "scripts";
|
|
100
|
-
type NoProxyConfigResolved = {
|
|
101
|
-
[K in keyof NoProxyConfig]: K extends NoProxyCumulativeConfigs ? NonNullable<NoProxyConfig[K]>[] | undefined : NoProxyConfig[K];
|
|
102
|
-
};
|
|
103
|
-
type PageProps = Record<string, unknown>;
|
|
104
|
-
interface ApplicationFacingPageContext {
|
|
105
|
-
pageProps: PageProps;
|
|
106
|
-
bodyAttrs?: BodyAttrs;
|
|
107
|
-
documentProps?: DocumentProps;
|
|
108
|
-
layoutProps: AugmentMe.LayoutProps;
|
|
109
|
-
redirectTo?: string;
|
|
110
|
-
}
|
|
111
|
-
interface PageContextNoProxyCommon extends ApplicationFacingPageContext {
|
|
112
|
-
config: NoProxyConfigResolved;
|
|
113
|
-
}
|
|
114
|
-
type PageContextNoProxyServer = PageContextServer & PageContextNoProxyCommon;
|
|
115
|
-
type PageContextNoProxyClient = PageContextClient & PageContextNoProxyCommon;
|
|
116
|
-
type PageContextNoProxy = PageContextNoProxyServer | PageContextNoProxyClient;
|
|
117
|
-
type PageContext = PageContextNoProxy | PageContextProxy;
|
|
118
|
-
declare global {
|
|
119
|
-
namespace Vike {
|
|
120
|
-
interface PageContext {
|
|
121
|
-
Page?: React.ComponentType;
|
|
122
|
-
}
|
|
123
|
-
interface Config {
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
export { ApplicationFacingPageContext as A, DocumentProps as D, GetLayout as G, LayoutMap as L, NoProxyConfig as N, ProxyConfig as P, Scripts as S, AugmentMe as a, LayoutComponent as b, PageContext as c, DynamicScripts as d, Snapshot as e, PageContextNoProxyClient as f, PageContextProxyClient as g, PageContextNoProxyServer as h, PageContextProxyServer as i, PageContextNoProxy as j };
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// renderer/_error/Page.tsx
|
|
2
|
-
import React from "react";
|
|
3
|
-
var Page_default = Page;
|
|
4
|
-
function Page({ is404, errorInfo }) {
|
|
5
|
-
if (is404) {
|
|
6
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("h1", null, "404 Page Not Found"), /* @__PURE__ */ React.createElement("p", null, "This page could not be found."), /* @__PURE__ */ React.createElement("p", null, errorInfo));
|
|
7
|
-
} else {
|
|
8
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("h1", null, "500 Internal Server Error"), /* @__PURE__ */ React.createElement("p", null, "Something went wrong."));
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
export {
|
|
12
|
-
Page_default as default
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=Page.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../renderer/_error/Page.tsx"],"sourcesContent":["export default Page;\n\nimport React from \"react\";\n\nfunction Page({ is404, errorInfo }: { is404: boolean; errorInfo?: string }) {\n if (is404) {\n return (\n <>\n <h1>404 Page Not Found</h1>\n <p>This page could not be found.</p>\n <p>{errorInfo}</p>\n </>\n );\n } else {\n return (\n <>\n <h1>500 Internal Server Error</h1>\n <p>Something went wrong.</p>\n </>\n );\n }\n}\n"],"mappings":";AAEA,OAAO,WAAW;AAFlB,IAAO,eAAQ;AAIf,SAAS,KAAK,EAAE,OAAO,UAAU,GAA2C;AAC1E,MAAI,OAAO;AACT,WACE,0DACE,oCAAC,YAAG,oBAAkB,GACtB,oCAAC,WAAE,+BAA6B,GAChC,oCAAC,WAAG,SAAU,CAChB;AAAA,EAEJ,OAAO;AACL,WACE,0DACE,oCAAC,YAAG,2BAAyB,GAC7B,oCAAC,WAAE,uBAAqB,CAC1B;AAAA,EAEJ;AACF;","names":[]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { f as PageContextNoProxyClient } from '../../internal-837e7a40.js';
|
|
2
|
-
import 'react';
|
|
3
|
-
import 'vike/types';
|
|
4
|
-
import '../configs/bifrost.js';
|
|
5
|
-
import '../configs/wrapped.js';
|
|
6
|
-
|
|
7
|
-
declare function bifrostOnRenderClient(pageContext: PageContextNoProxyClient): Promise<void>;
|
|
8
|
-
|
|
9
|
-
export { bifrostOnRenderClient };
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
bifrostOnRenderClient
|
|
3
|
-
} from "../../chunk-RSVASTEA.js";
|
|
4
|
-
import "../../chunk-X3MUHPJ3.js";
|
|
5
|
-
import "../../chunk-OXCN6F2S.js";
|
|
6
|
-
import "../../chunk-JHLK62FM.js";
|
|
7
|
-
import "../../chunk-VYXAWOXV.js";
|
|
8
|
-
import "../../chunk-K4H777XA.js";
|
|
9
|
-
import "../../chunk-PESUYCE4.js";
|
|
10
|
-
import "../../chunk-IYGONC4I.js";
|
|
11
|
-
import "../../chunk-EYYCKU6F.js";
|
|
12
|
-
export {
|
|
13
|
-
bifrostOnRenderClient
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=onRenderClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import * as vike_dist_esm_node_runtime_renderPage_html_renderHtml from 'vike/dist/esm/node/runtime/renderPage/html/renderHtml';
|
|
2
|
-
import { h as PageContextNoProxyServer } from '../../internal-837e7a40.js';
|
|
3
|
-
import 'react';
|
|
4
|
-
import 'vike/types';
|
|
5
|
-
import '../configs/bifrost.js';
|
|
6
|
-
import '../configs/wrapped.js';
|
|
7
|
-
|
|
8
|
-
declare function bifrostOnRenderHtml(pageContext: PageContextNoProxyServer): Promise<{
|
|
9
|
-
pageContext: {
|
|
10
|
-
redirectTo: string;
|
|
11
|
-
};
|
|
12
|
-
documentHtml?: undefined;
|
|
13
|
-
} | {
|
|
14
|
-
documentHtml: vike_dist_esm_node_runtime_renderPage_html_renderHtml.TemplateWrapped;
|
|
15
|
-
pageContext: {
|
|
16
|
-
redirectTo?: undefined;
|
|
17
|
-
};
|
|
18
|
-
}>;
|
|
19
|
-
|
|
20
|
-
export { bifrostOnRenderHtml };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
bifrostOnRenderHtml
|
|
3
|
-
} from "../../chunk-5SP2QGEH.js";
|
|
4
|
-
import "../../chunk-JHLK62FM.js";
|
|
5
|
-
import "../../chunk-VYXAWOXV.js";
|
|
6
|
-
import "../../chunk-K4H777XA.js";
|
|
7
|
-
import "../../chunk-PESUYCE4.js";
|
|
8
|
-
import "../../chunk-IYGONC4I.js";
|
|
9
|
-
import "../../chunk-EYYCKU6F.js";
|
|
10
|
-
export {
|
|
11
|
-
bifrostOnRenderHtml
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=onRenderHtml.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
declare const bifrostConfig: {
|
|
2
|
-
passToClient: string[];
|
|
3
|
-
meta: {
|
|
4
|
-
Layout: {
|
|
5
|
-
env: {
|
|
6
|
-
server: true;
|
|
7
|
-
client: true;
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
layoutProps: {
|
|
11
|
-
env: {
|
|
12
|
-
server: true;
|
|
13
|
-
client: true;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
documentProps: {
|
|
17
|
-
env: {
|
|
18
|
-
server: true;
|
|
19
|
-
client: true;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
bodyAttrs: {
|
|
23
|
-
env: {
|
|
24
|
-
server: true;
|
|
25
|
-
client: true;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
scripts: {
|
|
29
|
-
env: {
|
|
30
|
-
server: true;
|
|
31
|
-
client: true;
|
|
32
|
-
};
|
|
33
|
-
cumulative: true;
|
|
34
|
-
};
|
|
35
|
-
dynamicScripts: {
|
|
36
|
-
env: {
|
|
37
|
-
server: true;
|
|
38
|
-
client: false;
|
|
39
|
-
};
|
|
40
|
-
global: true;
|
|
41
|
-
};
|
|
42
|
-
favicon: {
|
|
43
|
-
env: {
|
|
44
|
-
server: true;
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export { bifrostConfig };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
declare const wrappedConfig: {
|
|
2
|
-
passToClient: string[];
|
|
3
|
-
meta: {
|
|
4
|
-
layoutMap: {
|
|
5
|
-
env: {
|
|
6
|
-
server: true;
|
|
7
|
-
client: true;
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
getLayout: {
|
|
11
|
-
env: {
|
|
12
|
-
server: true;
|
|
13
|
-
client: true;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
proxyHeaders: {
|
|
17
|
-
env: {
|
|
18
|
-
server: true;
|
|
19
|
-
client: true;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
export { wrappedConfig };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { f as PageContextNoProxyClient, g as PageContextProxyClient } from '../internal-837e7a40.js';
|
|
2
|
-
import 'react';
|
|
3
|
-
import 'vike/types';
|
|
4
|
-
import './configs/bifrost.js';
|
|
5
|
-
import './configs/wrapped.js';
|
|
6
|
-
|
|
7
|
-
declare function onRenderClient(pageContext: PageContextNoProxyClient | PageContextProxyClient): Promise<void>;
|
|
8
|
-
|
|
9
|
-
export { onRenderClient as default };
|