@alignable/bifrost 0.0.28 → 0.0.30
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-HZZHKVWB.js +15 -0
- package/dist/chunk-HZZHKVWB.js.map +1 -0
- package/dist/index.d.ts +12 -8
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/{internal-33c471ec.d.ts → internal-b4ad8d6b.d.ts} +13 -8
- package/dist/proxy/pages/+config.d.ts +3 -0
- package/dist/proxy/pages/+config.js +2 -1
- package/dist/proxy/pages/+config.js.map +1 -1
- package/dist/proxy/pages/onBeforeRender.d.ts +1 -1
- package/dist/proxy/pages/onRenderClient.d.ts +1 -1
- package/dist/proxy/pages/onRenderClient.js +4 -0
- package/dist/proxy/pages/onRenderClient.js.map +1 -1
- package/dist/proxy/pages/onRenderHtml.d.ts +1 -1
- package/dist/proxy/pages/restorationVisit/onRenderClient.d.ts +1 -1
- package/dist/renderer/+config.d.ts +3 -0
- package/dist/renderer/+config.js +4 -2
- package/dist/renderer/+config.js.map +1 -1
- package/dist/renderer/getConfigOrPageContext.d.ts +1 -1
- package/dist/renderer/onBeforeRoute.d.ts +15 -2
- package/dist/renderer/onBeforeRoute.js +29 -23
- package/dist/renderer/onBeforeRoute.js.map +1 -1
- package/dist/renderer/onRenderClient.d.ts +1 -1
- package/dist/renderer/onRenderClient.js +8 -0
- package/dist/renderer/onRenderClient.js.map +1 -1
- package/dist/renderer/onRenderHtml.d.ts +1 -1
- package/dist/renderer/usePageContext.d.ts +1 -1
- package/dist/renderer/utils/buildHead.d.ts +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// lib/runClientInit.ts
|
|
2
|
+
async function runClientInit(configEntries) {
|
|
3
|
+
const onClientInitConfig = configEntries["onClientInit"]?.[0];
|
|
4
|
+
if (onClientInitConfig && !onClientInitConfig?.configDefinedByFile?.startsWith("/renderer/")) {
|
|
5
|
+
throw new Error(
|
|
6
|
+
`${onClientInitConfig.configDefinedAt} must be defined globally in /renderer and there cannot be multiple`
|
|
7
|
+
);
|
|
8
|
+
}
|
|
9
|
+
await onClientInitConfig?.configValue?.();
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export {
|
|
13
|
+
runClientInit
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=chunk-HZZHKVWB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../lib/runClientInit.ts"],"sourcesContent":["import { ConfigEntries } from \"vike/types\";\nimport { OnClientInit } from \"../types/internal\";\n\nexport async function runClientInit(configEntries: ConfigEntries) {\n const onClientInitConfig = configEntries[\"onClientInit\"]?.[0];\n if (\n onClientInitConfig &&\n !onClientInitConfig?.configDefinedByFile?.startsWith(\"/renderer/\")\n ) {\n throw new Error(\n `${onClientInitConfig.configDefinedAt} must be defined globally in /renderer and there cannot be multiple`\n );\n }\n await (onClientInitConfig?.configValue as OnClientInit)?.();\n}\n"],"mappings":";AAGA,eAAsB,cAAc,eAA8B;AAChE,QAAM,qBAAqB,cAAc,cAAc,IAAI,CAAC;AAC5D,MACE,sBACA,CAAC,oBAAoB,qBAAqB,WAAW,YAAY,GACjE;AACA,UAAM,IAAI;AAAA,MACR,GAAG,mBAAmB,eAAe;AAAA,IACvC;AAAA,EACF;AACA,QAAO,oBAAoB,cAA+B;AAC5D;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
export { Config, GuardAsync, GuardSync, Meta, OnBeforePrerenderStartAsync, OnBeforePrerenderStartSync, OnBeforeRenderAsync, OnBeforeRenderSync, OnBeforeRouteAsync, OnBeforeRouteSync, OnHydrationEndAsync, OnHydrationEndSync, OnPageTransitionEndAsync, OnPageTransitionEndSync, OnPageTransitionStartAsync, OnPageTransitionStartSync, OnPrerenderStartAsync, OnPrerenderStartSync, OnRenderClientAsync, OnRenderClientSync, OnRenderHtmlAsync, OnRenderHtmlSync, RouteAsync, RouteSync } from 'vike/types';
|
|
2
|
+
import { navigate as navigate$1 } from 'vike/client/router';
|
|
3
|
+
import { A as ApplicationFacingPageContext, a as AugmentMe } from './internal-b4ad8d6b.js';
|
|
4
|
+
export { N as BifrostConfig, P as BifrostProxyConfig, D as DocumentProps, b as LayoutComponent, L as LayoutMap, c as PageContext } from './internal-b4ad8d6b.js';
|
|
4
5
|
export { PageContextProvider, usePageContext } from './renderer/usePageContext.js';
|
|
5
6
|
import 'react';
|
|
6
7
|
import './proxy/pages/_config.js';
|
|
7
8
|
import './renderer/_config.js';
|
|
8
9
|
import './controller-16e58bbd.js';
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
declare const navigate: typeof navigate$1;
|
|
12
|
+
declare global {
|
|
13
|
+
namespace Vike {
|
|
14
|
+
interface PageContext extends ApplicationFacingPageContext, AugmentMe.PageContextInit {
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
14
18
|
|
|
15
|
-
export { AugmentMe,
|
|
19
|
+
export { AugmentMe, navigate };
|
package/dist/index.js
CHANGED
|
@@ -3,8 +3,16 @@ import {
|
|
|
3
3
|
usePageContext
|
|
4
4
|
} from "./chunk-IYGONC4I.js";
|
|
5
5
|
import "./chunk-EYYCKU6F.js";
|
|
6
|
+
|
|
7
|
+
// index.ts
|
|
8
|
+
var navigate = async (url, opts) => {
|
|
9
|
+
window.Turbolinks.visit(url, {
|
|
10
|
+
action: opts?.overwriteLastHistoryEntry ? "replace" : "advance"
|
|
11
|
+
});
|
|
12
|
+
};
|
|
6
13
|
export {
|
|
7
14
|
PageContextProvider,
|
|
15
|
+
navigate,
|
|
8
16
|
usePageContext
|
|
9
17
|
};
|
|
10
18
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
1
|
+
{"version":3,"sources":["../index.ts"],"sourcesContent":["export type {\n Config,\n Meta,\n GuardAsync,\n GuardSync,\n OnBeforePrerenderStartAsync,\n OnBeforePrerenderStartSync,\n OnBeforeRenderAsync,\n OnBeforeRenderSync,\n OnBeforeRouteAsync,\n OnBeforeRouteSync,\n OnHydrationEndAsync,\n OnHydrationEndSync,\n OnPageTransitionEndAsync,\n OnPageTransitionEndSync,\n OnPageTransitionStartAsync,\n OnPageTransitionStartSync,\n OnPrerenderStartAsync,\n OnPrerenderStartSync,\n OnRenderClientAsync,\n OnRenderClientSync,\n OnRenderHtmlAsync,\n OnRenderHtmlSync,\n RouteAsync,\n RouteSync,\n} from \"vike/types\";\nimport { navigate as vikeNavigate } from \"vike/client/router\";\nimport { ApplicationFacingPageContext, AugmentMe } from \"./types/internal.js\";\n\nexport type {\n DocumentProps,\n LayoutMap,\n NoProxyConfig as BifrostConfig,\n ProxyConfig as BifrostProxyConfig,\n LayoutComponent,\n AugmentMe,\n PageContext,\n} from \"./types/internal\";\nexport {\n usePageContext,\n PageContextProvider,\n} from \"./renderer/usePageContext.js\";\n\nexport const navigate: typeof vikeNavigate = async (url, opts) => {\n window.Turbolinks.visit(url, {\n action: opts?.overwriteLastHistoryEntry ? \"replace\" : \"advance\",\n });\n};\n\ndeclare global {\n namespace Vike {\n interface PageContext\n extends ApplicationFacingPageContext,\n AugmentMe.PageContextInit {}\n }\n}\n"],"mappings":";;;;;;;AA2CO,IAAM,WAAgC,OAAO,KAAK,SAAS;AAChE,SAAO,WAAW,MAAM,KAAK;AAAA,IAC3B,QAAQ,MAAM,4BAA4B,YAAY;AAAA,EACxD,CAAC;AACH;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PropsWithChildren } from 'react';
|
|
2
|
-
import { Config,
|
|
2
|
+
import { Config, PageContextBuiltInServer, PageContextBuiltInClientWithClientRouting } from 'vike/types';
|
|
3
3
|
import _default from './proxy/pages/_config.js';
|
|
4
4
|
import _default$1 from './renderer/_config.js';
|
|
5
5
|
import { S as Snapshot } from './controller-16e58bbd.js';
|
|
@@ -32,10 +32,12 @@ type MetaTag = {
|
|
|
32
32
|
type Alternates = {
|
|
33
33
|
canonical?: string;
|
|
34
34
|
};
|
|
35
|
+
type OnClientInit = () => Promise<void>;
|
|
35
36
|
type LayoutComponent = React.ComponentType<PropsWithChildren<AugmentMe.LayoutProps>>;
|
|
36
37
|
type LayoutMap = Record<string, LayoutComponent>;
|
|
37
38
|
type ProxyConfig = ConfigConstructor<typeof _default, {
|
|
38
39
|
layoutMap: LayoutMap;
|
|
40
|
+
onClientInit: OnClientInit;
|
|
39
41
|
}>;
|
|
40
42
|
type PageContextProxyCommon = {
|
|
41
43
|
layout: string;
|
|
@@ -56,10 +58,10 @@ type FromProxy = {
|
|
|
56
58
|
layoutProps: AugmentMe.LayoutProps;
|
|
57
59
|
html: string;
|
|
58
60
|
};
|
|
59
|
-
type PageContextProxyInit =
|
|
61
|
+
type PageContextProxyInit = PageContextBuiltInServer<Page> & {
|
|
60
62
|
fromProxy: FromProxy;
|
|
61
63
|
};
|
|
62
|
-
type PageContextProxyServer =
|
|
64
|
+
type PageContextProxyServer = PageContextBuiltInServer<Page> & PageContextProxyCommon & {
|
|
63
65
|
proxy: string;
|
|
64
66
|
};
|
|
65
67
|
type PageContextProxyClient = PageContextBuiltInClientWithClientRouting<Page> & PageContextProxyCommon & (PageContextProxyClientHydration | PageContextProxyClientNav);
|
|
@@ -73,19 +75,22 @@ type NoProxyConfig = ConfigConstructor<typeof _default$1, {
|
|
|
73
75
|
documentProps: DocumentProps;
|
|
74
76
|
scripts: string[];
|
|
75
77
|
favicon: string;
|
|
78
|
+
onClientInit: OnClientInit;
|
|
76
79
|
}>;
|
|
77
80
|
type PageProps = Record<string, unknown>;
|
|
78
81
|
type Page = React.ComponentType<PageProps>;
|
|
79
|
-
|
|
82
|
+
interface ApplicationFacingPageContext {
|
|
80
83
|
pageProps: PageProps;
|
|
81
|
-
redirectTo?: string;
|
|
82
84
|
documentProps?: DocumentProps;
|
|
83
85
|
layoutProps: AugmentMe.LayoutProps;
|
|
86
|
+
}
|
|
87
|
+
interface PageContextNoProxyCommon extends ApplicationFacingPageContext {
|
|
88
|
+
redirectTo?: string;
|
|
84
89
|
config: NoProxyConfig;
|
|
85
|
-
}
|
|
86
|
-
type PageContextNoProxyServer =
|
|
90
|
+
}
|
|
91
|
+
type PageContextNoProxyServer = PageContextBuiltInServer<Page> & PageContextNoProxyCommon;
|
|
87
92
|
type PageContextNoProxyClient = PageContextBuiltInClientWithClientRouting<Page> & PageContextNoProxyCommon;
|
|
88
93
|
type PageContextNoProxy = PageContextNoProxyServer | PageContextNoProxyClient;
|
|
89
94
|
type PageContext = PageContextNoProxy | PageContextProxy | PageContextProxyRestorationVisit;
|
|
90
95
|
|
|
91
|
-
export {
|
|
96
|
+
export { ApplicationFacingPageContext as A, DocumentProps as D, LayoutMap as L, NoProxyConfig as N, ProxyConfig as P, AugmentMe as a, LayoutComponent as b, PageContext as c, PageContextNoProxy as d, PageContextNoProxyClient as e, PageContextNoProxyServer as f, PageContextProxyInit as g, PageContextProxyClient as h, PageContextProxyServer as i, PageContextProxyRestorationVisit as j };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../proxy/pages/+config.ts"],"sourcesContent":["import { type Config } from \"vike/types\";\n\nexport default {\n route: \"/*\",\n onBeforeRender: \"import:@alignable/bifrost/proxy/pages/onBeforeRender\",\n onRenderClient: \"import:@alignable/bifrost/proxy/pages/onRenderClient\",\n onRenderHtml: \"import:@alignable/bifrost/proxy/pages/onRenderHtml\",\n Page: \"import:@alignable/bifrost/proxy/pages/Page\",\n passToClient: [\"proxySendClient\", \"layout\", \"layoutProps\", \"redirectTo\"],\n clientRouting: true,\n hydrationCanBeAborted: true,\n meta: {\n layoutMap: { env: \"server-and-client\" },\n },\n} satisfies Config;\n"],"mappings":";AAEA,IAAO,iBAAQ;AAAA,EACb,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,MAAM;AAAA,EACN,cAAc,CAAC,mBAAmB,UAAU,eAAe,YAAY;AAAA,EACvE,eAAe;AAAA,EACf,uBAAuB;AAAA,EACvB,MAAM;AAAA,IACJ,WAAW,EAAE,KAAK,oBAAoB;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../proxy/pages/+config.ts"],"sourcesContent":["import { type Config } from \"vike/types\";\n\nexport default {\n route: \"/*\",\n onBeforeRender: \"import:@alignable/bifrost/proxy/pages/onBeforeRender\",\n onRenderClient: \"import:@alignable/bifrost/proxy/pages/onRenderClient\",\n onRenderHtml: \"import:@alignable/bifrost/proxy/pages/onRenderHtml\",\n Page: \"import:@alignable/bifrost/proxy/pages/Page\",\n passToClient: [\"proxySendClient\", \"layout\", \"layoutProps\", \"redirectTo\"],\n clientRouting: true,\n hydrationCanBeAborted: true,\n meta: {\n layoutMap: { env: \"server-and-client\" },\n onClientInit: { env: \"client-only\" },\n },\n} satisfies Config;\n"],"mappings":";AAEA,IAAO,iBAAQ;AAAA,EACb,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,MAAM;AAAA,EACN,cAAc,CAAC,mBAAmB,UAAU,eAAe,YAAY;AAAA,EACvE,eAAe;AAAA,EACf,uBAAuB;AAAA,EACvB,MAAM;AAAA,IACJ,WAAW,EAAE,KAAK,oBAAoB;AAAA,IACtC,cAAc,EAAE,KAAK,cAAc;AAAA,EACrC;AACF;","names":[]}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getElementAttributes
|
|
3
3
|
} from "../../chunk-RQ34EW7E.js";
|
|
4
|
+
import {
|
|
5
|
+
runClientInit
|
|
6
|
+
} from "../../chunk-HZZHKVWB.js";
|
|
4
7
|
import {
|
|
5
8
|
Turbolinks,
|
|
6
9
|
copyElementAttributes,
|
|
@@ -42,6 +45,7 @@ async function onRenderClient(pageContext) {
|
|
|
42
45
|
});
|
|
43
46
|
}
|
|
44
47
|
if (pageContext.isHydration) {
|
|
48
|
+
await runClientInit(pageContext.configEntries);
|
|
45
49
|
bodyEl = document.getElementById("proxied-body");
|
|
46
50
|
render(bodyEl.innerHTML);
|
|
47
51
|
cachePageContext();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../proxy/pages/onRenderClient.tsx"],"sourcesContent":["import React from \"react\";\nimport { renderReact } from \"../../lib/renderReact.js\";\nimport { PageShell } from \"../../lib/PageShell.js\";\nimport { PageContextProxyClient } from \"../../types/internal.js\";\nimport { Turbolinks } from \"../../lib/turbolinks/index.js\";\nimport { copyElementAttributes } from \"../../lib/turbolinks/util.js\";\nimport { getElementAttributes } from \"../../lib/getElementAttributes.js\";\nimport { LayoutComponent } from \"../../types/internal.js\";\n\nTurbolinks.start();\n\nconst PassthruLayout: LayoutComponent = ({ children }) => <>{children}</>;\n\nexport default async function onRenderClient(\n pageContext: PageContextProxyClient\n) {\n if (pageContext.redirectTo) {\n Turbolinks.visit(pageContext.redirectTo);\n return;\n }\n const { layoutProps, layout } = pageContext;\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] || PassthruLayout;\n\n function render(body: string) {\n renderReact(\n <PageShell key={pageContext.urlOriginal} pageContext={pageContext}>\n <Layout {...layoutProps}>\n <div id=\"proxied-body\" dangerouslySetInnerHTML={{ __html: body }} />\n </Layout>\n </PageShell>,\n pageContext.isHydration\n );\n }\n let bodyEl: Element;\n\n function cachePageContext() {\n // cache page context will save it and return it to us during restoration visits\n Turbolinks._vpsCachePageContext({\n layoutProps,\n layout,\n bodyAttrs: getElementAttributes(bodyEl),\n });\n }\n\n if (pageContext.isHydration) {\n // During hydration of initial ssr, body is in dom, not page props (to avoid double-send)\n bodyEl = document.getElementById(\"proxied-body\")!;\n render(bodyEl.innerHTML);\n cachePageContext();\n } else {\n const { proxySendClient: proxy } = pageContext;\n\n if (!proxy) {\n console.error(\"proxy/+onRenderClient did not receive proxySendClient\");\n return;\n }\n\n const parsed = document.createElement(\"html\");\n parsed.innerHTML = proxy;\n bodyEl = parsed.querySelector(\"body\")!;\n const headEl = parsed.querySelector(\"head\")!;\n\n Turbolinks._vpsOnRenderClient(headEl, true, true, () => {\n // merge body attributes\n document.body\n .getAttributeNames()\n .forEach((n) => document.body.removeAttribute(n));\n copyElementAttributes(document.body, bodyEl);\n // render body with react\n render(bodyEl.innerHTML);\n cachePageContext();\n });\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../proxy/pages/onRenderClient.tsx"],"sourcesContent":["import React from \"react\";\nimport { renderReact } from \"../../lib/renderReact.js\";\nimport { PageShell } from \"../../lib/PageShell.js\";\nimport { PageContextProxyClient } from \"../../types/internal.js\";\nimport { Turbolinks } from \"../../lib/turbolinks/index.js\";\nimport { copyElementAttributes } from \"../../lib/turbolinks/util.js\";\nimport { getElementAttributes } from \"../../lib/getElementAttributes.js\";\nimport { LayoutComponent } from \"../../types/internal.js\";\nimport { runClientInit } from \"../../lib/runClientInit.js\";\n\nTurbolinks.start();\n\nconst PassthruLayout: LayoutComponent = ({ children }) => <>{children}</>;\n\nexport default async function onRenderClient(\n pageContext: PageContextProxyClient\n) {\n if (pageContext.redirectTo) {\n Turbolinks.visit(pageContext.redirectTo);\n return;\n }\n const { layoutProps, layout } = pageContext;\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] || PassthruLayout;\n\n function render(body: string) {\n renderReact(\n <PageShell key={pageContext.urlOriginal} pageContext={pageContext}>\n <Layout {...layoutProps}>\n <div id=\"proxied-body\" dangerouslySetInnerHTML={{ __html: body }} />\n </Layout>\n </PageShell>,\n pageContext.isHydration\n );\n }\n let bodyEl: Element;\n\n function cachePageContext() {\n // cache page context will save it and return it to us during restoration visits\n Turbolinks._vpsCachePageContext({\n layoutProps,\n layout,\n bodyAttrs: getElementAttributes(bodyEl),\n });\n }\n\n if (pageContext.isHydration) {\n // During hydration of initial ssr, body is in dom, not page props (to avoid double-send)\n await runClientInit(pageContext.configEntries);\n bodyEl = document.getElementById(\"proxied-body\")!;\n render(bodyEl.innerHTML);\n cachePageContext();\n } else {\n const { proxySendClient: proxy } = pageContext;\n\n if (!proxy) {\n console.error(\"proxy/+onRenderClient did not receive proxySendClient\");\n return;\n }\n\n const parsed = document.createElement(\"html\");\n parsed.innerHTML = proxy;\n bodyEl = parsed.querySelector(\"body\")!;\n const headEl = parsed.querySelector(\"head\")!;\n\n Turbolinks._vpsOnRenderClient(headEl, true, true, () => {\n // merge body attributes\n document.body\n .getAttributeNames()\n .forEach((n) => document.body.removeAttribute(n));\n copyElementAttributes(document.body, bodyEl);\n // render body with react\n render(bodyEl.innerHTML);\n cachePageContext();\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AAUlB,WAAW,MAAM;AAEjB,IAAM,iBAAkC,CAAC,EAAE,SAAS,MAAM,0DAAG,QAAS;AAEtE,eAAO,eACL,aACA;AACA,MAAI,YAAY,YAAY;AAC1B,eAAW,MAAM,YAAY,UAAU;AACvC;AAAA,EACF;AACA,QAAM,EAAE,aAAa,OAAO,IAAI;AAEhC,QAAM,EAAE,UAAU,IAAI,YAAY;AAClC,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,yCAAyC;AAAA,EAC3D;AACA,QAAM,SAAS,UAAU,MAAM,KAAK;AAEpC,WAAS,OAAO,MAAc;AAC5B;AAAA,MACE,oCAAC,aAAU,KAAK,YAAY,aAAa,eACvC,oCAAC,UAAQ,GAAG,eACV,oCAAC,SAAI,IAAG,gBAAe,yBAAyB,EAAE,QAAQ,KAAK,GAAG,CACpE,CACF;AAAA,MACA,YAAY;AAAA,IACd;AAAA,EACF;AACA,MAAI;AAEJ,WAAS,mBAAmB;AAE1B,eAAW,qBAAqB;AAAA,MAC9B;AAAA,MACA;AAAA,MACA,WAAW,qBAAqB,MAAM;AAAA,IACxC,CAAC;AAAA,EACH;AAEA,MAAI,YAAY,aAAa;AAE3B,UAAM,cAAc,YAAY,aAAa;AAC7C,aAAS,SAAS,eAAe,cAAc;AAC/C,WAAO,OAAO,SAAS;AACvB,qBAAiB;AAAA,EACnB,OAAO;AACL,UAAM,EAAE,iBAAiB,MAAM,IAAI;AAEnC,QAAI,CAAC,OAAO;AACV,cAAQ,MAAM,uDAAuD;AACrE;AAAA,IACF;AAEA,UAAM,SAAS,SAAS,cAAc,MAAM;AAC5C,WAAO,YAAY;AACnB,aAAS,OAAO,cAAc,MAAM;AACpC,UAAM,SAAS,OAAO,cAAc,MAAM;AAE1C,eAAW,mBAAmB,QAAQ,MAAM,MAAM,MAAM;AAEtD,eAAS,KACN,kBAAkB,EAClB,QAAQ,CAAC,MAAM,SAAS,KAAK,gBAAgB,CAAC,CAAC;AAClD,4BAAsB,SAAS,MAAM,MAAM;AAE3C,aAAO,OAAO,SAAS;AACvB,uBAAiB;AAAA,IACnB,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as vike_dist_esm_node_runtime_html_renderHtml_js from 'vike/dist/esm/node/runtime/html/renderHtml.js';
|
|
2
|
-
import {
|
|
2
|
+
import { i as PageContextProxyServer } from '../../internal-b4ad8d6b.js';
|
|
3
3
|
import 'react';
|
|
4
4
|
import 'vike/types';
|
|
5
5
|
import './_config.js';
|
package/dist/renderer/+config.js
CHANGED
|
@@ -4,7 +4,8 @@ var passToClient = [
|
|
|
4
4
|
"pageProps",
|
|
5
5
|
"redirectTo",
|
|
6
6
|
"documentProps",
|
|
7
|
-
"scripts"
|
|
7
|
+
"scripts",
|
|
8
|
+
"is404"
|
|
8
9
|
];
|
|
9
10
|
var config_default = {
|
|
10
11
|
passToClient,
|
|
@@ -18,7 +19,8 @@ var config_default = {
|
|
|
18
19
|
layoutProps: { env: "server-and-client" },
|
|
19
20
|
documentProps: { env: "server-and-client" },
|
|
20
21
|
scripts: { env: "server-and-client" },
|
|
21
|
-
favicon: { env: "server-only" }
|
|
22
|
+
favicon: { env: "server-only" },
|
|
23
|
+
onClientInit: { env: "client-only" }
|
|
22
24
|
}
|
|
23
25
|
};
|
|
24
26
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../renderer/+config.ts"],"sourcesContent":["import { type Config } from \"vike/types\";\n\nconst passToClient = [\n \"layoutProps\",\n \"pageProps\",\n \"redirectTo\",\n \"documentProps\",\n \"scripts\",\n];\nexport default {\n passToClient,\n onRenderClient: \"import:@alignable/bifrost/renderer/onRenderClient\",\n onRenderHtml: \"import:@alignable/bifrost/renderer/onRenderHtml\",\n onBeforeRoute: \"import:@alignable/bifrost/renderer/onBeforeRoute\",\n clientRouting: true,\n hydrationCanBeAborted: true,\n meta: {\n Layout: { env: \"server-and-client\" },\n layoutProps: { env: \"server-and-client\" },\n documentProps: { env: \"server-and-client\" },\n scripts: { env: \"server-and-client\" },\n favicon: { env: \"server-only\" },\n },\n} satisfies Config;\n"],"mappings":";AAEA,IAAM,eAAe;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAO,iBAAQ;AAAA,EACb;AAAA,EACA,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,eAAe;AAAA,EACf,uBAAuB;AAAA,EACvB,MAAM;AAAA,IACJ,QAAQ,EAAE,KAAK,oBAAoB;AAAA,IACnC,aAAa,EAAE,KAAK,oBAAoB;AAAA,IACxC,eAAe,EAAE,KAAK,oBAAoB;AAAA,IAC1C,SAAS,EAAE,KAAK,oBAAoB;AAAA,IACpC,SAAS,EAAE,KAAK,cAAc;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../renderer/+config.ts"],"sourcesContent":["import { type Config } from \"vike/types\";\n\nconst passToClient = [\n \"layoutProps\",\n \"pageProps\",\n \"redirectTo\",\n \"documentProps\",\n \"scripts\",\n \"is404\",\n];\nexport default {\n passToClient,\n onRenderClient: \"import:@alignable/bifrost/renderer/onRenderClient\",\n onRenderHtml: \"import:@alignable/bifrost/renderer/onRenderHtml\",\n onBeforeRoute: \"import:@alignable/bifrost/renderer/onBeforeRoute\",\n clientRouting: true,\n hydrationCanBeAborted: true,\n meta: {\n Layout: { env: \"server-and-client\" },\n layoutProps: { env: \"server-and-client\" },\n documentProps: { env: \"server-and-client\" },\n scripts: { env: \"server-and-client\" },\n favicon: { env: \"server-only\" },\n onClientInit: { env: \"client-only\" },\n },\n} satisfies Config;\n"],"mappings":";AAEA,IAAM,eAAe;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAO,iBAAQ;AAAA,EACb;AAAA,EACA,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,eAAe;AAAA,EACf,uBAAuB;AAAA,EACvB,MAAM;AAAA,IACJ,QAAQ,EAAE,KAAK,oBAAoB;AAAA,IACnC,aAAa,EAAE,KAAK,oBAAoB;AAAA,IACxC,eAAe,EAAE,KAAK,oBAAoB;AAAA,IAC1C,SAAS,EAAE,KAAK,oBAAoB;AAAA,IACpC,SAAS,EAAE,KAAK,cAAc;AAAA,IAC9B,cAAc,EAAE,KAAK,cAAc;AAAA,EACrC;AACF;","names":[]}
|
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
import { S as Snapshot } from '../controller-16e58bbd.js';
|
|
2
2
|
|
|
3
|
-
declare
|
|
3
|
+
declare const onBeforeRoute: () => {
|
|
4
4
|
pageContext: {
|
|
5
5
|
snapshot: Snapshot;
|
|
6
|
+
isBackwardNavigation: boolean;
|
|
6
7
|
_pageId: string;
|
|
7
8
|
};
|
|
8
|
-
} |
|
|
9
|
+
} | {
|
|
10
|
+
pageContext: {
|
|
11
|
+
isBackwardNavigation: boolean;
|
|
12
|
+
snapshot?: undefined;
|
|
13
|
+
_pageId?: undefined;
|
|
14
|
+
};
|
|
15
|
+
} | {
|
|
16
|
+
pageContext: {
|
|
17
|
+
snapshot?: undefined;
|
|
18
|
+
isBackwardNavigation?: undefined;
|
|
19
|
+
_pageId?: undefined;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
9
22
|
|
|
10
23
|
export { onBeforeRoute as default };
|
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
// renderer/onBeforeRoute.ts
|
|
2
|
-
|
|
3
|
-
if (typeof window
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
2
|
+
var onBeforeRoute = () => {
|
|
3
|
+
if (typeof window !== "undefined") {
|
|
4
|
+
const Turbolinks = window.Turbolinks;
|
|
5
|
+
const currentVisit = Turbolinks.controller.currentVisit;
|
|
6
|
+
if (!currentVisit || currentVisit.state === "completed") {
|
|
7
|
+
const snapshot = Turbolinks.controller.getCachedSnapshotForLocation(
|
|
8
|
+
window.location.href
|
|
9
|
+
);
|
|
10
|
+
Turbolinks.controller.historyPoppedToLocationWithRestorationIdentifier(
|
|
11
|
+
window.location.href,
|
|
12
|
+
""
|
|
13
|
+
);
|
|
14
|
+
if (!!snapshot) {
|
|
15
|
+
return {
|
|
16
|
+
pageContext: {
|
|
17
|
+
snapshot,
|
|
18
|
+
isBackwardNavigation: true,
|
|
19
|
+
_pageId: "/proxy/pages/restorationVisit"
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
} else {
|
|
23
|
+
return {
|
|
24
|
+
pageContext: { isBackwardNavigation: true }
|
|
25
|
+
};
|
|
26
|
+
}
|
|
22
27
|
}
|
|
23
28
|
}
|
|
24
|
-
return
|
|
25
|
-
}
|
|
29
|
+
return { pageContext: {} };
|
|
30
|
+
};
|
|
31
|
+
var onBeforeRoute_default = onBeforeRoute;
|
|
26
32
|
export {
|
|
27
|
-
|
|
33
|
+
onBeforeRoute_default as default
|
|
28
34
|
};
|
|
29
35
|
//# sourceMappingURL=onBeforeRoute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../renderer/onBeforeRoute.ts"],"sourcesContent":["// do NOT import turbolinks in this file. It is used on server side.\n\
|
|
1
|
+
{"version":3,"sources":["../../renderer/onBeforeRoute.ts"],"sourcesContent":["// do NOT import turbolinks in this file. It is used on server side.\n\nconst onBeforeRoute = () => {\n if (typeof window !== \"undefined\") {\n const Turbolinks = window.Turbolinks;\n\n const currentVisit = Turbolinks.controller.currentVisit;\n if (!currentVisit || currentVisit.state === \"completed\") {\n // old/nonexistent currentVisit means VPS is doing history navigation. Ideally we might turn off VPS' onpopstate listener.\n const snapshot = Turbolinks.controller.getCachedSnapshotForLocation(\n window.location.href\n );\n Turbolinks.controller.historyPoppedToLocationWithRestorationIdentifier(\n window.location.href,\n \"\"\n );\n\n if (!!snapshot) {\n return {\n pageContext: {\n snapshot,\n isBackwardNavigation: true,\n _pageId: \"/proxy/pages/restorationVisit\",\n },\n };\n } else {\n return {\n pageContext: { isBackwardNavigation: true },\n };\n }\n }\n }\n return { pageContext: {} };\n};\n\nexport default onBeforeRoute;\n"],"mappings":";AAEA,IAAM,gBAAgB,MAAM;AAC1B,MAAI,OAAO,WAAW,aAAa;AACjC,UAAM,aAAa,OAAO;AAE1B,UAAM,eAAe,WAAW,WAAW;AAC3C,QAAI,CAAC,gBAAgB,aAAa,UAAU,aAAa;AAEvD,YAAM,WAAW,WAAW,WAAW;AAAA,QACrC,OAAO,SAAS;AAAA,MAClB;AACA,iBAAW,WAAW;AAAA,QACpB,OAAO,SAAS;AAAA,QAChB;AAAA,MACF;AAEA,UAAI,CAAC,CAAC,UAAU;AACd,eAAO;AAAA,UACL,aAAa;AAAA,YACX;AAAA,YACA,sBAAsB;AAAA,YACtB,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF,OAAO;AACL,eAAO;AAAA,UACL,aAAa,EAAE,sBAAsB,KAAK;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,aAAa,CAAC,EAAE;AAC3B;AAEA,IAAO,wBAAQ;","names":[]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runClientInit
|
|
3
|
+
} from "../chunk-HZZHKVWB.js";
|
|
1
4
|
import {
|
|
2
5
|
Turbolinks,
|
|
3
6
|
renderReact
|
|
@@ -26,6 +29,10 @@ async function onRenderClient(pageContext) {
|
|
|
26
29
|
Turbolinks.visit(pageContext.redirectTo);
|
|
27
30
|
return;
|
|
28
31
|
}
|
|
32
|
+
if (pageContext.isBackwardNavigation && pageContext.is404) {
|
|
33
|
+
Turbolinks.controller.viewInvalidated();
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
29
36
|
const { Page, pageProps } = pageContext;
|
|
30
37
|
const { Layout = PassThruLayout } = pageContext.config;
|
|
31
38
|
const layoutProps = getPageContextOrConfig(pageContext, "layoutProps") || {};
|
|
@@ -33,6 +40,7 @@ async function onRenderClient(pageContext) {
|
|
|
33
40
|
throw new Error("Client-side render() hook expects Page to be exported");
|
|
34
41
|
const page = /* @__PURE__ */ React.createElement(PageShell, { pageContext }, /* @__PURE__ */ React.createElement(Layout, { ...layoutProps }, /* @__PURE__ */ React.createElement(Page, { ...pageProps })));
|
|
35
42
|
if (pageContext.isHydration) {
|
|
43
|
+
await runClientInit(pageContext.configEntries);
|
|
36
44
|
renderReact(page, pageContext.isHydration);
|
|
37
45
|
} else {
|
|
38
46
|
const head = document.createElement("head");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../renderer/onRenderClient.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\nimport { renderReact } from \"../lib/renderReact.js\";\nimport { PageContextNoProxyClient } from \"../types/internal.js\";\nimport { PageShell } from \"../lib/PageShell.js\";\nimport { Turbolinks } from \"../lib/turbolinks/index.js\";\nimport { documentPropsToReact } from \"./utils/buildHead.js\";\nimport { getPageContextOrConfig } from \"./getConfigOrPageContext.js\";\nimport { createRoot } from \"react-dom/client\";\n\nTurbolinks.start();\n\nconst PassThruLayout: React.ComponentType<PropsWithChildren> = ({\n children,\n}) => <>{children}</>;\n\nexport default async function onRenderClient(\n pageContext: PageContextNoProxyClient\n) {\n if (pageContext.redirectTo) {\n Turbolinks.visit(pageContext.redirectTo);\n return;\n }\n\n const { Page, pageProps } = pageContext;\n const { Layout = PassThruLayout } = pageContext.config;\n const layoutProps = getPageContextOrConfig(pageContext, \"layoutProps\") || {};\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 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((s) => {\n head.insertAdjacentHTML(\"beforeend\", s);\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 renderReact(page, pageContext.isHydration);\n });\n });\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../renderer/onRenderClient.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\nimport { renderReact } from \"../lib/renderReact.js\";\nimport { PageContextNoProxyClient } from \"../types/internal.js\";\nimport { PageShell } from \"../lib/PageShell.js\";\nimport { Turbolinks } from \"../lib/turbolinks/index.js\";\nimport { documentPropsToReact } from \"./utils/buildHead.js\";\nimport { getPageContextOrConfig } from \"./getConfigOrPageContext.js\";\nimport { createRoot } from \"react-dom/client\";\nimport { runClientInit } from \"../lib/runClientInit.js\";\n\nTurbolinks.start();\n\nconst PassThruLayout: React.ComponentType<PropsWithChildren> = ({\n children,\n}) => <>{children}</>;\n\nexport default async function onRenderClient(\n pageContext: PageContextNoProxyClient\n) {\n if (pageContext.redirectTo) {\n Turbolinks.visit(pageContext.redirectTo);\n return;\n }\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\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 runClientInit(pageContext.configEntries);\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((s) => {\n head.insertAdjacentHTML(\"beforeend\", s);\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 renderReact(page, pageContext.isHydration);\n });\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAkC;AAOzC,SAAS,kBAAkB;AAG3B,WAAW,MAAM;AAEjB,IAAM,iBAAyD,CAAC;AAAA,EAC9D;AACF,MAAM,0DAAG,QAAS;AAElB,eAAO,eACL,aACA;AACA,MAAI,YAAY,YAAY;AAC1B,eAAW,MAAM,YAAY,UAAU;AACvC;AAAA,EACF;AAIA,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;AAE3E,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,cAAc,YAAY,aAAa;AAC7C,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,gBAAY,OAAO,SAAS,QAAQ,CAAC,MAAM;AACzC,WAAK,mBAAmB,aAAa,CAAC;AAAA,IACxC,CAAC;AAED,0BAAsB,MAAM;AAC1B,iBAAW,mBAAmB,MAAM,OAAO,OAAO,MAAM;AAEtD,iBAAS,KACN,kBAAkB,EAClB,QAAQ,CAAC,MAAM,SAAS,KAAK,gBAAgB,CAAC,CAAC;AAClD,oBAAY,MAAM,YAAY,WAAW;AAAA,MAC3C,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as vike_dist_esm_node_runtime_html_renderHtml_js from 'vike/dist/esm/node/runtime/html/renderHtml.js';
|
|
2
|
-
import {
|
|
2
|
+
import { f as PageContextNoProxyServer } from '../internal-b4ad8d6b.js';
|
|
3
3
|
import 'react';
|
|
4
4
|
import 'vike/types';
|
|
5
5
|
import '../proxy/pages/_config.js';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alignable/bifrost",
|
|
3
3
|
"repository": "https://github.com/Alignable/bifrost.git",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.30",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -83,14 +83,14 @@
|
|
|
83
83
|
"react-dom": "^18.x.x",
|
|
84
84
|
"tough-cookie": "^4.1.2",
|
|
85
85
|
"uuid": "^9.0.0",
|
|
86
|
-
"vike": "0.4.144"
|
|
86
|
+
"vike": "0.4.144-commit-e40e9b1"
|
|
87
87
|
},
|
|
88
88
|
"peerDependencies": {
|
|
89
89
|
"jsdom": "^22.1.0",
|
|
90
90
|
"react": "^18.x.x",
|
|
91
91
|
"react-dom": "^18.x.x",
|
|
92
92
|
"typescript": ">=4.7",
|
|
93
|
-
"vike": "0.4.144"
|
|
93
|
+
"vike": "0.4.144-commit-e40e9b1"
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|
|
96
96
|
"@types/jsdom": "^21.1.2",
|