From 00b1cd985b112d5040283de6f4d15fd0a0e708b8 Mon Sep 17 00:00:00 2001 From: Ryan Christian Date: Mon, 24 Jun 2024 17:48:23 -0500 Subject: [PATCH] feat: Add `location` stub from prerenderer as a utility --- src/prerender.d.ts | 2 ++ src/prerender.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/prerender.d.ts b/src/prerender.d.ts index 49eb8ab..b9958bc 100644 --- a/src/prerender.d.ts +++ b/src/prerender.d.ts @@ -13,3 +13,5 @@ export default function prerender( vnode: VNode, options?: PrerenderOptions ): Promise; + +export function locationStub(path: string): void; diff --git a/src/prerender.js b/src/prerender.js index 49b841e..bc3a759 100644 --- a/src/prerender.js +++ b/src/prerender.js @@ -40,3 +40,17 @@ export default async function prerender(vnode, options) { vnodeHook = null; } } + +/** + * Update `location` to current URL so routers can use things like `location.pathname` + * + * @param {string} path - current URL path + */ +export function locationStub(path) { + const u = new URL(path, 'http://localhost'); + for (const i in u) { + try { + globalThis.location[i] = String(u[i]); + } catch {} + } +}