vike-lite 1.15.7 → 1.15.8

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,6 @@
1
+ //#region src/__internal/client.d.ts
2
+ declare function createLinkClickHandler(onNavigate: (url: URL) => void): (e: MouseEvent) => void;
3
+ declare function createLinkPrefetchHandler(onPrefetch: (url: URL) => void): (e: Event) => void;
4
+ declare function finalizeNavigation(shouldScrollToTop: boolean): void;
5
+ //#endregion
6
+ export { createLinkClickHandler, createLinkPrefetchHandler, finalizeNavigation };
@@ -0,0 +1,43 @@
1
+ //#region src/__internal/client.ts
2
+ function getClientSideUrl(target) {
3
+ if (!target?.href || target.target && target.target !== "_self" || target.hasAttribute("download") || target.hasAttribute("data-native") || target.getAttribute("rel")?.includes("external")) return null;
4
+ try {
5
+ const url = new URL(target.href, globalThis.location.href);
6
+ if (url.protocol !== "http:" && url.protocol !== "https:" || url.origin !== globalThis.location.origin) return null;
7
+ return url;
8
+ } catch {
9
+ return null;
10
+ }
11
+ }
12
+ function isSamePage(url) {
13
+ return url.pathname === globalThis.location.pathname && url.search === globalThis.location.search;
14
+ }
15
+ function createLinkClickHandler(onNavigate) {
16
+ return (e) => {
17
+ if (e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;
18
+ const url = getClientSideUrl(e.target.closest("a"));
19
+ if (!url || isSamePage(url)) return;
20
+ e.preventDefault();
21
+ globalThis.history.pushState({ triggeredBy: "vike-lite" }, "", url.href);
22
+ onNavigate(url);
23
+ };
24
+ }
25
+ function createLinkPrefetchHandler(onPrefetch) {
26
+ return (e) => {
27
+ const url = getClientSideUrl(e.target.closest("a"));
28
+ if (!url || isSamePage(url)) return;
29
+ onPrefetch(url);
30
+ };
31
+ }
32
+ function finalizeNavigation(shouldScrollToTop) {
33
+ if (shouldScrollToTop) {
34
+ globalThis.scrollTo(0, 0);
35
+ shouldScrollToTop = false;
36
+ } else if (globalThis.location.hash) requestAnimationFrame(() => {
37
+ try {
38
+ document.querySelector(decodeURIComponent(globalThis.location.hash))?.scrollIntoView();
39
+ } catch {}
40
+ });
41
+ }
42
+ //#endregion
43
+ export { createLinkClickHandler, createLinkPrefetchHandler, finalizeNavigation };
@@ -1,6 +1,6 @@
1
1
  //#region src/server/store.d.ts
2
2
  interface VikeState {
3
- routes: typeof import('virtual:vike-lite/routes')['routes'];
3
+ routes: typeof import('virtual:vike-lite/routes')['routes'] | [];
4
4
  errorRoute: typeof import('virtual:vike-lite/routes')['errorRoute'] | null;
5
5
  config: typeof import('virtual:vike-lite/routes')['config'] | null;
6
6
  manifest: typeof import('virtual:vike-lite/client-manifest')['default'] | null;
@@ -1,2 +1,2 @@
1
- import { n as store, t as setVikeState } from "../store-DPJQje-K.mjs";
1
+ import { n as store, t as setVikeState } from "../store-BCs8gL_o.mjs";
2
2
  export { setVikeState, store };
@@ -1,6 +1,6 @@
1
1
  import { t as matchRoute } from "./matchRoute-nTNPxoMq.mjs";
2
2
  import { AbortRedirect, AbortRender } from "./server/abort.mjs";
3
- import { n as store } from "./store-DPJQje-K.mjs";
3
+ import { n as store } from "./store-BCs8gL_o.mjs";
4
4
  //#region src/utils/serializeContext.ts
5
5
  const ESCAPE_LOOKUP = {
6
6
  "&": String.raw`\u0026`,
package/dist/server.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { t as renderPage } from "./server-BITt1YvS.mjs";
1
+ import { t as renderPage } from "./server-DSrh6B3f.mjs";
2
2
  export { renderPage };
@@ -0,0 +1,13 @@
1
+ //#region src/server/store.ts
2
+ const KEY = Symbol.for("vike-lite:store");
3
+ const store = globalThis[KEY] ??= {
4
+ routes: [],
5
+ errorRoute: null,
6
+ config: null,
7
+ manifest: null
8
+ };
9
+ function setVikeState(newState) {
10
+ Object.assign(store, newState);
11
+ }
12
+ //#endregion
13
+ export { store as n, setVikeState as t };
package/dist/vite.mjs CHANGED
@@ -1,12 +1,12 @@
1
- import { t as renderPage } from "./server-BITt1YvS.mjs";
1
+ import { t as renderPage } from "./server-DSrh6B3f.mjs";
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import { Readable } from "node:stream";
5
5
  import { pipeline } from "node:stream/promises";
6
6
  import { loadEnv } from "vite";
7
7
  //#region src/utils/generateRoutes.ts
8
- const pageExtensions = [".ts", ".js"];
9
- const pageExtensionsX = [
8
+ const nonPageExtensions = [".ts", ".js"];
9
+ const pageExtensions = [
10
10
  ".tsx",
11
11
  ".jsx",
12
12
  ".vue"
@@ -22,19 +22,19 @@ function generateRoutes(viteRoot, pagesDir) {
22
22
  function walk(dir, routePath, parentLayout, parentHead) {
23
23
  const files = fs.readdirSync(dir);
24
24
  const importPath = path.relative(viteRoot, dir).replaceAll("\\", "/");
25
- const layoutFile = findFile(files, "+Layout", pageExtensionsX);
25
+ const layoutFile = findFile(files, "+Layout", pageExtensions);
26
26
  const currentLayout = layoutFile ? `${importPath}/${layoutFile}` : parentLayout;
27
- const headFile = findFile(files, "+Head", pageExtensionsX);
27
+ const headFile = findFile(files, "+Head", pageExtensions);
28
28
  const currentHead = headFile ? `${importPath}/${headFile}` : parentHead;
29
- const pageFile = findFile(files, "+Page", pageExtensionsX);
29
+ const pageFile = findFile(files, "+Page", pageExtensions);
30
30
  if (pageFile) {
31
31
  const route = {
32
32
  path: routePath || "/",
33
33
  page: `${importPath}/${pageFile}`
34
34
  };
35
- const dataFile = findFile(files, "+data", pageExtensions);
36
- const titleFile = findFile(files, "+title", pageExtensions);
37
- const prerenderFile = findFile(files, "+prerender", pageExtensions);
35
+ const dataFile = findFile(files, "+data", nonPageExtensions);
36
+ const titleFile = findFile(files, "+title", nonPageExtensions);
37
+ const prerenderFile = findFile(files, "+prerender", nonPageExtensions);
38
38
  if (dataFile) route.data = `${importPath}/${dataFile}`;
39
39
  if (titleFile) route.title = `${importPath}/${titleFile}`;
40
40
  if (prerenderFile) route.prerender = `${importPath}/${prerenderFile}`;
@@ -46,7 +46,7 @@ function generateRoutes(viteRoot, pagesDir) {
46
46
  const fullPath = path.join(dir, file);
47
47
  if (!fs.statSync(fullPath).isDirectory()) continue;
48
48
  if (file === "_error") {
49
- const errorPageFile = findFile(fs.readdirSync(fullPath), "+Page", pageExtensionsX);
49
+ const errorPageFile = findFile(fs.readdirSync(fullPath), "+Page", pageExtensions);
50
50
  if (errorPageFile) errorRoute = {
51
51
  path: "_error",
52
52
  page: `${importPath}/_error/${errorPageFile}`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike-lite",
3
- "version": "1.15.7",
3
+ "version": "1.15.8",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -60,6 +60,10 @@
60
60
  "types": "./dist/__internal/shared.d.mts",
61
61
  "import": "./dist/__internal/shared.mjs"
62
62
  },
63
+ "./__internal/client": {
64
+ "types": "./dist/__internal/client.d.mts",
65
+ "import": "./dist/__internal/client.mjs"
66
+ },
63
67
  "./__internal/server": {
64
68
  "types": "./dist/__internal/server.d.mts",
65
69
  "import": "./dist/__internal/server.mjs"
@@ -74,7 +78,7 @@
74
78
  },
75
79
  "devDependencies": {
76
80
  "@types/node": "^26.1.1",
77
- "tsdown": "^0.22.8",
81
+ "tsdown": "^0.22.9",
78
82
  "vite": "^8.1.5"
79
83
  },
80
84
  "peerDependencies": {
@@ -1,20 +0,0 @@
1
- //#region src/server/store.ts
2
- const STORE_KEY = "_vike_lite";
3
- if (!Object.hasOwn(globalThis, STORE_KEY)) globalThis[STORE_KEY] = {
4
- routes: [],
5
- errorRoute: null,
6
- config: null,
7
- manifest: null
8
- };
9
- const store = new Proxy({}, {
10
- get: (_, prop) => globalThis[STORE_KEY][prop],
11
- set: (_, prop, value) => {
12
- globalThis[STORE_KEY][prop] = value;
13
- return true;
14
- }
15
- });
16
- function setVikeState(newState) {
17
- Object.assign(globalThis[STORE_KEY], newState);
18
- }
19
- //#endregion
20
- export { store as n, setVikeState as t };