@alignable/bifrost 0.0.28 → 0.0.29

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.
@@ -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,6 +1,6 @@
1
1
  import { PageContextBuiltIn } from 'vike/types';
2
- import { A as AugmentMe, P as PageContextNoProxy } from './internal-33c471ec.js';
3
- export { N as BifrostConfig, a as BifrostProxyConfig, D as DocumentProps, b as LayoutComponent, L as LayoutMap, c as PageContext } from './internal-33c471ec.js';
2
+ import { A as AugmentMe, P as PageContextNoProxy } from './internal-c8c22383.js';
3
+ export { N as BifrostConfig, a as BifrostProxyConfig, D as DocumentProps, b as LayoutComponent, L as LayoutMap, c as PageContext } from './internal-c8c22383.js';
4
4
  export { PageContextProvider, usePageContext } from './renderer/usePageContext.js';
5
5
  import 'react';
6
6
  import './proxy/pages/_config.js';
@@ -1,5 +1,5 @@
1
1
  import { PropsWithChildren } from 'react';
2
- import { Config, PageContextBuiltIn, PageContextBuiltInClientWithClientRouting } from 'vike/types';
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 = PageContextBuiltIn<Page> & {
61
+ type PageContextProxyInit = PageContextBuiltInServer<Page> & {
60
62
  fromProxy: FromProxy;
61
63
  };
62
- type PageContextProxyServer = PageContextBuiltIn<Page> & PageContextProxyCommon & {
64
+ type PageContextProxyServer = PageContextBuiltInServer<Page> & PageContextProxyCommon & {
63
65
  proxy: string;
64
66
  };
65
67
  type PageContextProxyClient = PageContextBuiltInClientWithClientRouting<Page> & PageContextProxyCommon & (PageContextProxyClientHydration | PageContextProxyClientNav);
@@ -73,6 +75,7 @@ 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>;
@@ -83,7 +86,7 @@ type PageContextNoProxyCommon = {
83
86
  layoutProps: AugmentMe.LayoutProps;
84
87
  config: NoProxyConfig;
85
88
  };
86
- type PageContextNoProxyServer = PageContextBuiltIn<Page> & PageContextNoProxyCommon;
89
+ type PageContextNoProxyServer = PageContextBuiltInServer<Page> & PageContextNoProxyCommon;
87
90
  type PageContextNoProxyClient = PageContextBuiltInClientWithClientRouting<Page> & PageContextNoProxyCommon;
88
91
  type PageContextNoProxy = PageContextNoProxyServer | PageContextNoProxyClient;
89
92
  type PageContext = PageContextNoProxy | PageContextProxy | PageContextProxyRestorationVisit;
@@ -11,6 +11,9 @@ declare const _default: {
11
11
  layoutMap: {
12
12
  env: "server-and-client";
13
13
  };
14
+ onClientInit: {
15
+ env: "client-only";
16
+ };
14
17
  };
15
18
  };
16
19
 
@@ -9,7 +9,8 @@ var config_default = {
9
9
  clientRouting: true,
10
10
  hydrationCanBeAborted: true,
11
11
  meta: {
12
- layoutMap: { env: "server-and-client" }
12
+ layoutMap: { env: "server-and-client" },
13
+ onClientInit: { env: "client-only" }
13
14
  }
14
15
  };
15
16
  export {
@@ -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,EACxC;AACF;","names":[]}
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,4 +1,4 @@
1
- import { f as PageContextProxyInit, A as AugmentMe } from '../../internal-33c471ec.js';
1
+ import { f as PageContextProxyInit, A as AugmentMe } from '../../internal-c8c22383.js';
2
2
  import 'react';
3
3
  import 'vike/types';
4
4
  import './_config.js';
@@ -1,4 +1,4 @@
1
- import { g as PageContextProxyClient } from '../../internal-33c471ec.js';
1
+ import { g as PageContextProxyClient } from '../../internal-c8c22383.js';
2
2
  import 'react';
3
3
  import 'vike/types';
4
4
  import './_config.js';
@@ -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":";;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AASlB,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,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
+ {"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 { h as PageContextProxyServer } from '../../internal-33c471ec.js';
2
+ import { h as PageContextProxyServer } from '../../internal-c8c22383.js';
3
3
  import 'react';
4
4
  import 'vike/types';
5
5
  import './_config.js';
@@ -1,4 +1,4 @@
1
- import { i as PageContextProxyRestorationVisit } from '../../../internal-33c471ec.js';
1
+ import { i as PageContextProxyRestorationVisit } from '../../../internal-c8c22383.js';
2
2
  import 'react';
3
3
  import 'vike/types';
4
4
  import '../_config.js';
@@ -21,6 +21,9 @@ declare const _default: {
21
21
  favicon: {
22
22
  env: "server-only";
23
23
  };
24
+ onClientInit: {
25
+ env: "client-only";
26
+ };
24
27
  };
25
28
  };
26
29
 
@@ -18,7 +18,8 @@ var config_default = {
18
18
  layoutProps: { env: "server-and-client" },
19
19
  documentProps: { env: "server-and-client" },
20
20
  scripts: { env: "server-and-client" },
21
- favicon: { env: "server-only" }
21
+ favicon: { env: "server-only" },
22
+ onClientInit: { env: "client-only" }
22
23
  }
23
24
  };
24
25
  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,EAChC;AACF;","names":[]}
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 onClientInit: { env: \"client-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,IAC9B,cAAc,EAAE,KAAK,cAAc;AAAA,EACrC;AACF;","names":[]}
@@ -1,4 +1,4 @@
1
- import { P as PageContextNoProxy } from '../internal-33c471ec.js';
1
+ import { P as PageContextNoProxy } from '../internal-c8c22383.js';
2
2
  import 'react';
3
3
  import 'vike/types';
4
4
  import '../proxy/pages/_config.js';
@@ -1,4 +1,4 @@
1
- import { d as PageContextNoProxyClient } from '../internal-33c471ec.js';
1
+ import { d as PageContextNoProxyClient } from '../internal-c8c22383.js';
2
2
  import 'react';
3
3
  import 'vike/types';
4
4
  import '../proxy/pages/_config.js';
@@ -1,3 +1,6 @@
1
+ import {
2
+ runClientInit
3
+ } from "../chunk-HZZHKVWB.js";
1
4
  import {
2
5
  Turbolinks,
3
6
  renderReact
@@ -33,6 +36,7 @@ async function onRenderClient(pageContext) {
33
36
  throw new Error("Client-side render() hook expects Page to be exported");
34
37
  const page = /* @__PURE__ */ React.createElement(PageShell, { pageContext }, /* @__PURE__ */ React.createElement(Layout, { ...layoutProps }, /* @__PURE__ */ React.createElement(Page, { ...pageProps })));
35
38
  if (pageContext.isHydration) {
39
+ await runClientInit(pageContext.configEntries);
36
40
  renderReact(page, pageContext.isHydration);
37
41
  } else {
38
42
  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":";;;;;;;;;;;;;;;;;AAAA,OAAO,WAAkC;AAOzC,SAAS,kBAAkB;AAE3B,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;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,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
+ {"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 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;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 { e as PageContextNoProxyServer } from '../internal-33c471ec.js';
2
+ import { e as PageContextNoProxyServer } from '../internal-c8c22383.js';
3
3
  import 'react';
4
4
  import 'vike/types';
5
5
  import '../proxy/pages/_config.js';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { c as PageContext } from '../internal-33c471ec.js';
2
+ import { c as PageContext } from '../internal-c8c22383.js';
3
3
  import 'vike/types';
4
4
  import '../proxy/pages/_config.js';
5
5
  import './_config.js';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { D as DocumentProps } from '../../internal-33c471ec.js';
2
+ import { D as DocumentProps } from '../../internal-c8c22383.js';
3
3
  import 'vike/types';
4
4
  import '../../proxy/pages/_config.js';
5
5
  import '../_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.28",
4
+ "version": "0.0.29",
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",