@alignable/bifrost 1.0.13 → 1.0.14
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.
|
@@ -12,7 +12,7 @@ declare const _default: {
|
|
|
12
12
|
headHtmlEnd: string;
|
|
13
13
|
onBeforeRoute: "import:@alignable/bifrost/__internal/renderer/onBeforeRoute:default";
|
|
14
14
|
Wrapper: "import:@alignable/bifrost/__internal/renderer/Wrapper:default";
|
|
15
|
-
passToClient:
|
|
15
|
+
passToClient: "proxyLayoutInfo"[];
|
|
16
16
|
meta: {
|
|
17
17
|
bodyAttributes: {
|
|
18
18
|
env: {
|
|
@@ -8,10 +8,10 @@ var onBeforeRoute = (pageContext) => {
|
|
|
8
8
|
let currentVisit = Turbolinks.controller.currentVisit;
|
|
9
9
|
if (pageContext.isHistoryNavigation) {
|
|
10
10
|
const snapshot = Turbolinks.controller.getCachedSnapshotForLocation(
|
|
11
|
-
|
|
11
|
+
pageContext.urlOriginal
|
|
12
12
|
);
|
|
13
13
|
Turbolinks.controller.historyPoppedToLocationWithRestorationIdentifier(
|
|
14
|
-
|
|
14
|
+
pageContext.urlOriginal,
|
|
15
15
|
""
|
|
16
16
|
);
|
|
17
17
|
currentVisit = Turbolinks.controller.currentVisit;
|
|
@@ -23,7 +23,7 @@ var onBeforeRoute = (pageContext) => {
|
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
-
} else if (
|
|
26
|
+
} else if (pageContext.pageContextsAborted && currentVisit) {
|
|
27
27
|
currentVisit.updateIfRedirect(pageContext.urlOriginal);
|
|
28
28
|
}
|
|
29
29
|
return { pageContext: { _turbolinksVisit: currentVisit } };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../renderer/onBeforeRoute.ts"],"sourcesContent":["import type { PageContext } from \"vike/types\";\n\nif (import.meta.env?.SSR === false) {\n import(\"./turbolinksStart\");\n}\n\nconst onBeforeRoute = (pageContext: PageContext) => {\n if (typeof window !== \"undefined\" && pageContext.isClientSide) {\n const Turbolinks = window.Turbolinks;\n\n let currentVisit = Turbolinks.controller.currentVisit;\n\n if (pageContext.isHistoryNavigation) {\n
|
|
1
|
+
{"version":3,"sources":["../../renderer/onBeforeRoute.ts"],"sourcesContent":["import type { PageContext } from \"vike/types\";\n\nif (import.meta.env?.SSR === false) {\n import(\"./turbolinksStart\");\n}\n\nconst onBeforeRoute = (pageContext: PageContext) => {\n if (typeof window !== \"undefined\" && pageContext.isClientSide) {\n const Turbolinks = window.Turbolinks;\n\n let currentVisit = Turbolinks.controller.currentVisit;\n\n if (pageContext.isHistoryNavigation) {\n const snapshot = Turbolinks.controller.getCachedSnapshotForLocation(\n pageContext.urlOriginal\n );\n Turbolinks.controller.historyPoppedToLocationWithRestorationIdentifier(\n pageContext.urlOriginal,\n \"\"\n );\n\n // currentVisit was just created by historyPoppedToLocationWithRestorationIdentifier\n currentVisit = Turbolinks.controller.currentVisit;\n if (!!snapshot) {\n return {\n pageContext: {\n _snapshot: snapshot,\n _turbolinksVisit: currentVisit,\n },\n };\n }\n } else if (pageContext.pageContextsAborted && currentVisit) {\n currentVisit.updateIfRedirect(pageContext.urlOriginal);\n }\n return { pageContext: { _turbolinksVisit: currentVisit } };\n }\n return { pageContext: {} };\n};\n\nexport default onBeforeRoute;\n"],"mappings":";AAEA,IAAI,YAAY,KAAK,QAAQ,OAAO;AAClC,SAAO,sBAAmB;AAC5B;AAEA,IAAM,gBAAgB,CAAC,gBAA6B;AAClD,MAAI,OAAO,WAAW,eAAe,YAAY,cAAc;AAC7D,UAAM,aAAa,OAAO;AAE1B,QAAI,eAAe,WAAW,WAAW;AAEzC,QAAI,YAAY,qBAAqB;AACnC,YAAM,WAAW,WAAW,WAAW;AAAA,QACrC,YAAY;AAAA,MACd;AACA,iBAAW,WAAW;AAAA,QACpB,YAAY;AAAA,QACZ;AAAA,MACF;AAGA,qBAAe,WAAW,WAAW;AACrC,UAAI,CAAC,CAAC,UAAU;AACd,eAAO;AAAA,UACL,aAAa;AAAA,YACX,WAAW;AAAA,YACX,kBAAkB;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAAA,IACF,WAAW,YAAY,uBAAuB,cAAc;AAC1D,mBAAa,iBAAiB,YAAY,WAAW;AAAA,IACvD;AACA,WAAO,EAAE,aAAa,EAAE,kBAAkB,aAAa,EAAE;AAAA,EAC3D;AACA,SAAO,EAAE,aAAa,CAAC,EAAE;AAC3B;AAEA,IAAO,wBAAQ;","names":[]}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import { redirect } from "vike/abort";
|
|
7
7
|
async function wrappedOnBeforeRender(pageContext) {
|
|
8
8
|
if (pageContext.isClientSide && !pageContext?._snapshot && !pageContext.isHydration) {
|
|
9
|
-
const resp = await fetch(pageContext.
|
|
9
|
+
const resp = await fetch(pageContext.urlParsed.href, {
|
|
10
10
|
headers: { ...pageContext.config.proxyHeaders, accept: "text/html" }
|
|
11
11
|
});
|
|
12
12
|
if (resp.redirected) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../renderer/wrapped/onBeforeRender.client.ts"],"sourcesContent":["import \"../../lib/type\";\nimport type { PageContextClient } from \"vike/types\";\nimport { redirect } from \"vike/abort\";\nimport { getElementAttributes } from \"../../lib/elementUtils\";\n\n// onBeforeRender runs before changing the browser location, so `throw redirect` works\n// we wait for onBeforeRenderClient to call mergeHead, which runs after browser location change\n// Possibly could move this back into onBeforeRenderClient: https://github.com/vikejs/vike/pull/2820\nexport default async function wrappedOnBeforeRender(\n pageContext: PageContextClient\n) {\n if (\n pageContext.isClientSide &&\n !pageContext?._snapshot &&\n !pageContext.isHydration\n ) {\n /*\n Mermaid diagram of client side navigation logic:\n\n Vike Router --> Proxy Mode\n Proxy Mode -->|wrapped| Request Legacy Backend\n Request Legacy Backend -->|redirect| Vike Router\n Request Legacy Backend -->|html| Render Wrapped Page\n Proxy Mode -->|false| Render Vike Page\n Proxy Mode -->|passthru| Browser Navigation\n\n ┌─────────────┐ ┌────────────┐ ┌────────────────────────┐ ┌─────────────────────┐\n │ │ │ │ │ │ │ │\n │ Vike Router ├────►│ Proxy Mode ├─wrapped►│ Request Legacy Backend ├html─►│ Render Wrapped Page │\n │ │ │ │ │ │ │ │\n └─────────────┘ └──────┬─────┘ └────────────┬───────────┘ └─────────────────────┘\n ▲ │ redirect \n └───────────────────┼────────────────────────────┘ \n false \n │ ┌────────────────────────┐ \n │ │ │ \n ├──────────────►│ Render Vike Page │ \n passthru │ │ \n │ └────────────────────────┘ \n │ \n │ ┌────────────────────────┐ \n │ │ │ \n └──────────────►│ Browser Navigation │ \n │ │ \n └────────────────────────┘ \n\n The Vike router must run on every redirect, because the legacy backend could redirect to a Vike page.\n The browser follows redirects automatically, which hits the vike server, which will passthru if needed\n It would be more performant to run the Vike router on the client, but the browser does not expose redirect info.\n Optimization: use serviceworker to intercept redirects.\n */\n const resp = await fetch(pageContext.
|
|
1
|
+
{"version":3,"sources":["../../../renderer/wrapped/onBeforeRender.client.ts"],"sourcesContent":["import \"../../lib/type\";\nimport type { PageContextClient } from \"vike/types\";\nimport { redirect } from \"vike/abort\";\nimport { getElementAttributes } from \"../../lib/elementUtils\";\n\n// onBeforeRender runs before changing the browser location, so `throw redirect` works\n// we wait for onBeforeRenderClient to call mergeHead, which runs after browser location change\n// Possibly could move this back into onBeforeRenderClient: https://github.com/vikejs/vike/pull/2820\nexport default async function wrappedOnBeforeRender(\n pageContext: PageContextClient\n) {\n if (\n pageContext.isClientSide &&\n !pageContext?._snapshot &&\n !pageContext.isHydration\n ) {\n /*\n Mermaid diagram of client side navigation logic:\n\n Vike Router --> Proxy Mode\n Proxy Mode -->|wrapped| Request Legacy Backend\n Request Legacy Backend -->|redirect| Vike Router\n Request Legacy Backend -->|html| Render Wrapped Page\n Proxy Mode -->|false| Render Vike Page\n Proxy Mode -->|passthru| Browser Navigation\n\n ┌─────────────┐ ┌────────────┐ ┌────────────────────────┐ ┌─────────────────────┐\n │ │ │ │ │ │ │ │\n │ Vike Router ├────►│ Proxy Mode ├─wrapped►│ Request Legacy Backend ├html─►│ Render Wrapped Page │\n │ │ │ │ │ │ │ │\n └─────────────┘ └──────┬─────┘ └────────────┬───────────┘ └─────────────────────┘\n ▲ │ redirect \n └───────────────────┼────────────────────────────┘ \n false \n │ ┌────────────────────────┐ \n │ │ │ \n ├──────────────►│ Render Vike Page │ \n passthru │ │ \n │ └────────────────────────┘ \n │ \n │ ┌────────────────────────┐ \n │ │ │ \n └──────────────►│ Browser Navigation │ \n │ │ \n └────────────────────────┘ \n\n The Vike router must run on every redirect, because the legacy backend could redirect to a Vike page.\n The browser follows redirects automatically, which hits the vike server, which will passthru if needed\n It would be more performant to run the Vike router on the client, but the browser does not expose redirect info.\n Optimization: use serviceworker to intercept redirects.\n */\n const resp = await fetch(pageContext.urlParsed.href, {\n headers: { ...pageContext.config.proxyHeaders, accept: \"text/html\" },\n });\n\n if (resp.redirected) {\n const parsedUrl = new URL(resp.url);\n // Need to redirect to run vike router (in case redirect is not wrapped page)\n // Downside is we will make another network request\n // TODO: Can we prevent the double request? Move to server side and throw redirect on 3xx?\n if (window.location.origin === parsedUrl.origin) {\n // redirect needs to start with \"/\" or vike will do hard reload\n throw redirect(parsedUrl.pathname + parsedUrl.search + parsedUrl.hash);\n } else {\n // external redirect\n throw redirect(resp.url);\n }\n }\n if (!resp.ok) {\n throw redirect(resp.url);\n }\n const html = await resp.text();\n const layoutInfo = pageContext.config.getLayout!(\n Object.fromEntries(resp.headers.entries())\n );\n if (!layoutInfo) {\n // Fallback to full reload if layout not found\n // window.location.href = resp.url;\n throw redirect(resp.url);\n }\n\n const parsed = document.createElement(\"html\");\n parsed.innerHTML = html;\n const bodyEl = parsed.querySelector(\"body\")!;\n const headEl = parsed.querySelector(\"head\")!;\n pageContext.proxyLayoutInfo = layoutInfo;\n pageContext._turbolinksProxy = {\n body: bodyEl,\n head: headEl,\n bodyAttrs: getElementAttributes(bodyEl),\n };\n }\n}\n"],"mappings":";;;;;AAEA,SAAS,gBAAgB;AAMzB,eAAO,sBACL,aACA;AACA,MACE,YAAY,gBACZ,CAAC,aAAa,aACd,CAAC,YAAY,aACb;AAoCA,UAAM,OAAO,MAAM,MAAM,YAAY,UAAU,MAAM;AAAA,MACnD,SAAS,EAAE,GAAG,YAAY,OAAO,cAAc,QAAQ,YAAY;AAAA,IACrE,CAAC;AAED,QAAI,KAAK,YAAY;AACnB,YAAM,YAAY,IAAI,IAAI,KAAK,GAAG;AAIlC,UAAI,OAAO,SAAS,WAAW,UAAU,QAAQ;AAE/C,cAAM,SAAS,UAAU,WAAW,UAAU,SAAS,UAAU,IAAI;AAAA,MACvE,OAAO;AAEL,cAAM,SAAS,KAAK,GAAG;AAAA,MACzB;AAAA,IACF;AACA,QAAI,CAAC,KAAK,IAAI;AACZ,YAAM,SAAS,KAAK,GAAG;AAAA,IACzB;AACA,UAAM,OAAO,MAAM,KAAK,KAAK;AAC7B,UAAM,aAAa,YAAY,OAAO;AAAA,MACpC,OAAO,YAAY,KAAK,QAAQ,QAAQ,CAAC;AAAA,IAC3C;AACA,QAAI,CAAC,YAAY;AAGf,YAAM,SAAS,KAAK,GAAG;AAAA,IACzB;AAEA,UAAM,SAAS,SAAS,cAAc,MAAM;AAC5C,WAAO,YAAY;AACnB,UAAM,SAAS,OAAO,cAAc,MAAM;AAC1C,UAAM,SAAS,OAAO,cAAc,MAAM;AAC1C,gBAAY,kBAAkB;AAC9B,gBAAY,mBAAmB;AAAA,MAC7B,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,qBAAqB,MAAM;AAAA,IACxC;AAAA,EACF;AACF;","names":[]}
|
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": "1.0.
|
|
4
|
+
"version": "1.0.14",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"react": ">=18",
|
|
47
47
|
"typescript": ">=4.7",
|
|
48
|
-
"vike": ">=0.4.
|
|
48
|
+
"vike": ">=0.4.248",
|
|
49
49
|
"vike-react": ">=0.6.11"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"typescript": "^5.0.4",
|
|
61
61
|
"vike-react": "0.6.11",
|
|
62
62
|
"vite": "^6.3.5",
|
|
63
|
-
"vike": "0.4.
|
|
63
|
+
"vike": "0.4.250",
|
|
64
64
|
"cross-env": "^7.0.3"
|
|
65
65
|
}
|
|
66
66
|
}
|