@vesk/runtime 0.2.15 → 0.2.17

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.
@@ -52,6 +52,8 @@ export interface HmrLogEntry {
52
52
  time?: number;
53
53
  ms?: number;
54
54
  ts: number;
55
+ message?: string;
56
+ level?: 'log' | 'warn' | 'error' | 'info' | 'debug';
55
57
  }
56
58
  export interface PluginInfo {
57
59
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"hmr-client.d.ts","sourceRoot":"","sources":["../src/hmr-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hmr-client.d.ts","sourceRoot":"","sources":["../src/hmr-client.ts"],"names":[],"mappings":"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"}
@@ -129,9 +129,14 @@ export function renderPluginRow(p, index) {
129
129
  }
130
130
  export function renderLogRow(entry) {
131
131
  const type = entry.type || '?';
132
- const time = entry.ms != null ? String(entry.ms) : entry.time != null ? String(entry.time) : '?';
133
132
  const stamp = entry.ts ? new Date(entry.ts).toLocaleTimeString() : '--:--:--';
134
- return '<div class="kl-row">' + escapeHtml(stamp) + ' ' + escapeHtml(type) + ' ' + time + 'ms' + '</div>';
133
+ const lvl = entry.level || '';
134
+ const lvlCls = lvl ? ' kl-lvl-' + lvl : '';
135
+ if (entry.message != null) {
136
+ return '<div class="kl-row' + lvlCls + '">' + escapeHtml(stamp) + ' <span class="kl-type">' + escapeHtml(type) + '</span> ' + escapeHtml(entry.message) + '</div>';
137
+ }
138
+ const time = entry.ms != null ? String(entry.ms) : entry.time != null ? String(entry.time) : '?';
139
+ return '<div class="kl-row">' + escapeHtml(stamp) + ' <span class="kl-type">' + escapeHtml(type) + '</span> ' + time + 'ms' + '</div>';
135
140
  }
136
141
  export const DEV_TABS = ['overview', 'agentic', 'errors', 'diagnostics', 'plugins', 'log', 'settings'];
137
142
  /**
@@ -1317,8 +1322,8 @@ const CSS = '@keyframes __v_pulse{0%,100%{opacity:1}50%{opacity:.3}}' +
1317
1322
  '@keyframes __v_in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}' +
1318
1323
  '@keyframes __v_tab{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}' +
1319
1324
  '@keyframes __v_vo{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}' +
1320
- '#__vesk_dev,#__vesk_overlay{--vk-bg:#000;--vk-fg:#fff;--vk-border:#fff;--vk-line:#444;--vk-line-soft:#333;--vk-soft:#111;--vk-soft-hi:#222;--vk-muted:#bbb;--vk-dim:#666;--vk-codebg:#0a0a0a;--vk-inv-bg:#fff;--vk-inv-fg:#000;--vk-err-bg:#b91c1c;--vk-err-fg:#fff;--vk-dot:#555;}' +
1321
- '#__vesk_dev[data-theme="light"],#__vesk_overlay[data-theme="light"]{--vk-bg:#fff;--vk-fg:#111;--vk-border:#111;--vk-line:#ccc;--vk-line-soft:#ddd;--vk-soft:#f5f5f5;--vk-soft-hi:#ececec;--vk-muted:#444;--vk-dim:#888;--vk-codebg:#fafafa;--vk-inv-bg:#111;--vk-inv-fg:#fff;--vk-err-bg:#dc2626;--vk-err-fg:#fff;--vk-dot:#999;}' +
1325
+ '#__vesk_dev,#__vesk_overlay{--vk-bg:oklch(0.155 0.006 60);--vk-fg:oklch(0.931 0.014 88);--vk-border:oklch(0.29 0.009 75);--vk-line:oklch(0.235 0.009 72);--vk-line-soft:oklch(0.196 0.008 70);--vk-soft:oklch(0.196 0.008 70);--vk-soft-hi:oklch(0.235 0.009 72);--vk-muted:oklch(0.618 0.016 80);--vk-dim:oklch(0.40 0.011 75);--vk-codebg:oklch(0.12 0.004 60);--vk-inv-bg:oklch(0.931 0.014 88);--vk-inv-fg:oklch(0.155 0.006 60);--vk-err-bg:oklch(0.577 0.185 25);--vk-err-fg:oklch(0.96 0.01 85);--vk-dot:oklch(0.40 0.011 75);--vk-accent:oklch(0.632 0.132 45);}' +
1326
+ '#__vesk_dev[data-theme="light"],#__vesk_overlay[data-theme="light"]{--vk-bg:oklch(0.97 0.006 85);--vk-fg:oklch(0.155 0.006 60);--vk-border:oklch(0.82 0.009 75);--vk-line:oklch(0.88 0.008 72);--vk-line-soft:oklch(0.92 0.008 70);--vk-soft:oklch(0.95 0.006 70);--vk-soft-hi:oklch(0.92 0.008 72);--vk-muted:oklch(0.45 0.016 80);--vk-dim:oklch(0.65 0.011 75);--vk-codebg:oklch(0.98 0.004 60);--vk-inv-bg:oklch(0.155 0.006 60);--vk-inv-fg:oklch(0.931 0.014 88);--vk-err-bg:oklch(0.577 0.185 25);--vk-err-fg:oklch(0.96 0.01 85);--vk-dot:oklch(0.65 0.011 75);--vk-accent:oklch(0.632 0.132 45);}' +
1322
1327
  '#__vesk_dev *,#__vesk_overlay *{transition:background .18s ease,color .18s ease,border-color .18s ease;}' +
1323
1328
  '#__vesk_dev,#__vesk_dev *,#__vesk_overlay,#__vesk_overlay *{scrollbar-width:none;}' +
1324
1329
  '#__vesk_dev *::-webkit-scrollbar,#__vesk_overlay *::-webkit-scrollbar{display:none;}' +
@@ -1326,9 +1331,11 @@ const CSS = '@keyframes __v_pulse{0%,100%{opacity:1}50%{opacity:.3}}' +
1326
1331
  '#__vesk_dev[data-pos="left"]{left:16px;right:auto;}' +
1327
1332
  '#__vesk_dev .__v_bar{display:flex;align-items:center;gap:8px;background:var(--vk-bg);border:1px solid var(--vk-border);border-radius:0;padding:6px 12px;cursor:pointer;animation:__v_in .3s cubic-bezier(.22,.61,.36,1);transition:background .15s ease,transform .15s ease,border-color .15s ease;}' +
1328
1333
  '#__vesk_dev .__v_bar:hover{background:var(--vk-soft);transform:translateY(-1px);border-color:var(--vk-dim);}' +
1329
- '#__vesk_dev .__v_dot{width:8px;height:8px;flex-shrink:0;background:var(--vk-dot);transition:background .12s ease;}' +
1330
- '#__vesk_dev .__v_dot.compiling{background:var(--vk-fg);animation:__v_pulse .8s infinite;}' +
1331
- '#__vesk_dev .__v_dot.error{background:var(--vk-fg);animation:__v_pulse .4s infinite;}' +
1334
+ '#__vesk_dev .__v_dot{width:8px;height:8px;flex-shrink:0;background:var(--vk-dot);transition:background .2s ease;}' +
1335
+ '#__vesk_dev .__v_dot.connected{background:var(--vk-accent);animation:none;}' +
1336
+ '#__vesk_dev .__v_dot.compiling{background:var(--vk-accent);animation:__v_pulse .8s infinite;}' +
1337
+ '#__vesk_dev .__v_dot.error{background:var(--vk-err-bg);animation:__v_pulse .5s infinite;}' +
1338
+ '#__vesk_dev .__v_dot.disconnected{background:var(--vk-dim);animation:none;opacity:.5;}' +
1332
1339
  '#__vesk_overlay{all:initial;position:fixed;inset:0;z-index:2147483646;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5;color:var(--vk-fg);display:flex;visibility:hidden;opacity:0;pointer-events:none;transition:opacity .16s ease,visibility 0s linear .16s;}' +
1333
1340
  '#__vesk_overlay.open{visibility:visible;opacity:1;pointer-events:auto;transition:opacity .16s ease;}' +
1334
1341
  '#__vesk_overlay .__vo_backdrop{position:absolute;inset:0;background:var(--vk-bg);opacity:.85;}' +
@@ -1413,7 +1420,14 @@ const CSS = '@keyframes __v_pulse{0%,100%{opacity:1}50%{opacity:.3}}' +
1413
1420
  '#__vesk_dev .__kp_stack pre{background:var(--vk-codebg);border:1px solid var(--vk-line-soft);border-top:none;padding:8px;margin:0;font-size:11px;color:var(--vk-muted);max-height:160px;overflow:auto;white-space:pre;}' +
1414
1421
  '#__vesk_dev .kp-row{font-size:12px;color:var(--vk-muted);}' +
1415
1422
  '#__vesk_dev .kp-err{font-size:12px;color:var(--vk-inv-fg);background:var(--vk-inv-bg);padding:6px 10px;font-weight:700;}' +
1416
- '#__vesk_dev .kl-row{font-size:11px;color:var(--vk-muted);}' +
1423
+ '#__vesk_dev .kl-row{font-size:11px;color:var(--vk-muted);padding:1px 0;}' +
1424
+ '#__vesk_dev .kl-row .kl-type{color:var(--vk-dim);font-weight:700;text-transform:uppercase;letter-spacing:.05em;min-width:48px;display:inline-block;}' +
1425
+ '#__vesk_dev .kl-row.kl-lvl-error{color:var(--vk-err-bg);}' +
1426
+ '#__vesk_dev .kl-row.kl-lvl-error .kl-type{color:var(--vk-err-bg);}' +
1427
+ '#__vesk_dev .kl-row.kl-lvl-warn{color:var(--vk-accent);}' +
1428
+ '#__vesk_dev .kl-row.kl-lvl-warn .kl-type{color:var(--vk-accent);}' +
1429
+ '#__vesk_dev .kl-row.kl-lvl-info{color:var(--vk-muted);}' +
1430
+ '#__vesk_dev .kl-row.kl-lvl-info .kl-type{color:var(--vk-dim);}' +
1417
1431
  '#__vesk_dev .__kp_tab .__kp_tab_label{display:none;}' +
1418
1432
  '#__vesk_dev[data-sidebar="rail"] .__kp{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"head head" "tabs body";gap:0;}' +
1419
1433
  '#__vesk_dev[data-sidebar="rail"] .__kp_head{grid-area:head;}' +
@@ -1619,7 +1633,7 @@ export function createDevClient(opts) {
1619
1633
  let agenticConfigSaveOk = null;
1620
1634
  function logEvent(type, ms) {
1621
1635
  log.push({ type, ms, time: ms, ts: Date.now() });
1622
- if (log.length > 30)
1636
+ if (log.length > 200)
1623
1637
  log.shift();
1624
1638
  }
1625
1639
  function setStatus(next) {
@@ -1723,7 +1737,7 @@ export function createDevClient(opts) {
1723
1737
  // otherwise drop the error again right after a refresh.
1724
1738
  if (!pendingStateSync)
1725
1739
  clearError();
1726
- setStatus('idle');
1740
+ setStatus('connected');
1727
1741
  }
1728
1742
  };
1729
1743
  ws.onmessage = function (e) {
@@ -1752,6 +1766,15 @@ export function createDevClient(opts) {
1752
1766
  clearError();
1753
1767
  setStatus('compiling');
1754
1768
  break;
1769
+ case 'console':
1770
+ if (typeof msg.level === 'string' && typeof msg.message === 'string') {
1771
+ log.push({ type: msg.level, message: msg.message, level: msg.level, ts: Date.now() });
1772
+ if (log.length > 200)
1773
+ log.shift();
1774
+ if (activeTab === 'log')
1775
+ renderPanel();
1776
+ }
1777
+ break;
1755
1778
  }
1756
1779
  }
1757
1780
  catch {
@@ -1762,14 +1785,14 @@ export function createDevClient(opts) {
1762
1785
  if (disposed)
1763
1786
  return;
1764
1787
  if (status !== 'error')
1765
- setStatus('idle');
1788
+ setStatus('disconnected');
1766
1789
  scheduleReconnect();
1767
1790
  };
1768
1791
  ws.onerror = function () {
1769
1792
  if (disposed)
1770
1793
  return;
1771
1794
  if (status !== 'error')
1772
- setStatus('idle');
1795
+ setStatus('disconnected');
1773
1796
  scheduleReconnect();
1774
1797
  };
1775
1798
  }
@@ -1804,6 +1827,7 @@ export function createDevClient(opts) {
1804
1827
  }
1805
1828
  lastCompileMs = msg.time || 0;
1806
1829
  status = 'connected';
1830
+ updateDot();
1807
1831
  clearError();
1808
1832
  renderPanel();
1809
1833
  logEvent('update', lastCompileMs);
@@ -1825,6 +1849,7 @@ export function createDevClient(opts) {
1825
1849
  parent.insertBefore(fresh, el.nextSibling);
1826
1850
  });
1827
1851
  status = 'connected';
1852
+ updateDot();
1828
1853
  renderPanel();
1829
1854
  logEvent('css-update', undefined);
1830
1855
  }
@@ -1909,7 +1934,7 @@ export function createDevClient(opts) {
1909
1934
  CSS +
1910
1935
  '</style>' +
1911
1936
  '<div class="__v_bar">' +
1912
- ' <span class="__v_dot idle"></span>' +
1937
+ ' <span class="__v_dot disconnected"></span>' +
1913
1938
  ' <span class="__v_label">Vesk</span>' +
1914
1939
  ' <span class="__v_version">dev</span>' +
1915
1940
  '</div>';
@@ -2511,6 +2536,9 @@ export function createDevClient(opts) {
2511
2536
  }
2512
2537
  }
2513
2538
  }
2539
+ else if (activeTab === 'log') {
2540
+ pane.scrollTop = pane.scrollHeight;
2541
+ }
2514
2542
  else {
2515
2543
  pane.scrollTop = 0;
2516
2544
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../src/hydrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../src/hydrate.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,IAAI,IAAI,OAAO,CAAC;IAChB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;CAC9C;AAED,UAAU,kBAAkB;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,yBAAyB;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,UAAU,iBAAiB;IAC1B,MAAM,IAAI,IAAI,CAAC;CACf;AAED,UAAU,aAAc,SAAQ,iBAAiB;IAChD,UAAU,IAAI,IAAI,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAU5E;AAGD,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,EAAE,CAOnE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,aAAa,CAqCxG;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,GAAG,aAAa,CA2BpF;AAED,wBAAgB,OAAO,CACtB,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,EAC/G,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAGT;AAED,wBAAgB,eAAe,CAC9B,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,EAC/G,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,SAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAqEf;AAED,wBAAgB,WAAW,CAC1B,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,EAC/G,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,kBAAuB,GAC9B,iBAAiB,CAuCnB;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,CAK9D;AAED,wBAAgB,oBAAoB,CACnC,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,EAC/G,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,yBAA8B,GACrC,aAAa,CA6Bf;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CAU7D;AAED,wBAAgB,cAAc,CAC7B,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,EAC/G,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI,CAGN"}
package/dist/hydrate.js CHANGED
@@ -1,4 +1,25 @@
1
- import { get } from '@vesk/runtime/src/ripple-runtime';
1
+ import { get, scope, set_active_block } from '@vesk/runtime/src/ripple-runtime';
2
+ import { root } from '@vesk/runtime/src/ripple-blocks';
3
+ // Hydrators invoke user component functions outside the router. componentFn
4
+ // runs `track()`/`effect()` calls that attach to whatever block is active.
5
+ // With no active block, `schedule_update` walks an empty parent chain and
6
+ // queues a null root — the effects never flush. Establish a root block window
7
+ // (mirroring the router's runInBlockWindow) so effects created during
8
+ // hydration attach to a real root and run on the microtask flush.
9
+ function runInHydrateBlock(fn) {
10
+ const previous = scope();
11
+ const block = root(() => { });
12
+ set_active_block(block);
13
+ try {
14
+ const result = fn();
15
+ set_active_block(previous);
16
+ return result;
17
+ }
18
+ catch (error) {
19
+ set_active_block(previous);
20
+ throw error;
21
+ }
22
+ }
2
23
  export function reactiveProps(props) {
3
24
  return new Proxy(props, {
4
25
  get(target, key) {
@@ -92,7 +113,7 @@ export function createHydrateChildWalker(parentEl) {
92
113
  }
93
114
  export function hydrate(container, componentFn, props) {
94
115
  const walker = createHydrateWalker(container);
95
- return componentFn(props || {}, new Map(), walker);
116
+ return runInHydrateBlock(() => componentFn(props || {}, new Map(), walker));
96
117
  }
97
118
  export function hydrateViewport(container, componentFn, props, rootMargin = 500) {
98
119
  if (document.readyState !== 'complete') {
@@ -125,7 +146,7 @@ export function hydrateViewport(container, componentFn, props, rootMargin = 500)
125
146
  marker.textContent = 'vsk-hold';
126
147
  }
127
148
  const viewportWalker = createHydrateWalker(container, viewportMarkers);
128
- componentFn(props || {}, new Map(), viewportWalker);
149
+ runInHydrateBlock(() => componentFn(props || {}, new Map(), viewportWalker));
129
150
  if (deferredMarkers.length > 0) {
130
151
  return new Promise((resolve) => {
131
152
  const observer = new IntersectionObserver((entries) => {
@@ -144,7 +165,7 @@ export function hydrateViewport(container, componentFn, props, rootMargin = 500)
144
165
  }
145
166
  if (toHydrate.length > 0) {
146
167
  const w = createHydrateWalker(container, toHydrate);
147
- componentFn(props || {}, new Map(), w);
168
+ runInHydrateBlock(() => componentFn(props || {}, new Map(), w));
148
169
  }
149
170
  if (observer._observed === 0) {
150
171
  observer.disconnect();
@@ -178,7 +199,7 @@ export function hydrateIdle(container, componentFn, props, options = {}) {
178
199
  idx = end;
179
200
  if (chunk.length > 0) {
180
201
  const walker = createHydrateWalker(container, chunk);
181
- componentFn(props || {}, new Map(), walker);
202
+ runInHydrateBlock(() => componentFn(props || {}, new Map(), walker));
182
203
  }
183
204
  if (idx < allMarkers.length && (!deadline || deadline.timeRemaining() > 0 || deadline.didTimeout)) {
184
205
  rafId = rIC(processChunk, { timeout });
@@ -214,7 +235,7 @@ export function hydrateOnInteraction(container, componentFn, props, options = {}
214
235
  const markers = collectVskMarkers(container);
215
236
  if (markers.length > 0) {
216
237
  const walker = createHydrateWalker(container, markers);
217
- componentFn(props || {}, new Map(), walker);
238
+ runInHydrateBlock(() => componentFn(props || {}, new Map(), walker));
218
239
  }
219
240
  }
220
241
  const handler = (e) => trigger(e.type);
@@ -244,5 +265,5 @@ export function hydrationCount(container) {
244
265
  }
245
266
  export function hydrateInitial(container, componentFn, props) {
246
267
  const walker = createHydrateWalker(container);
247
- componentFn(props || {}, new Map(), walker);
268
+ runInHydrateBlock(() => componentFn(props || {}, new Map(), walker));
248
269
  }
@@ -1,6 +1,7 @@
1
1
  export { track, get, set, untrack, peek_tracked as peek, derived, flush_sync as flushSync, tick, active_block, set_active_block, set_active_component, create_component_ctx, push_component, pop_component, with_block, with_scope, scope, safe_scope, on_destroy } from '@vesk/runtime/src/ripple-runtime';
2
2
  export { effect, user_effect, block, branch, root, render, pre_effect, destroy_block, destroy_block_children, pause_block, resume_block, is_destroyed, unlink_block, create_try_block, boundary_fn_running_block } from '@vesk/runtime/src/ripple-blocks';
3
3
  export { createContext, Context, getActiveComponent, setActiveComponent } from '@vesk/runtime/src/context';
4
+ export { serverLocals, getServerContext, setServerContext, clearServerContext, server_locals, get_server_context, set_server_context, clear_server_context } from '@vesk/runtime/src/server-events';
4
5
  export { createResource, setSsrData, clearSsrData, setSsrSink, resolveSsrResources, useFetch, type SsrDataSink } from '@vesk/runtime/src/resource';
5
6
  export { Portal } from '@vesk/runtime/src/portal';
6
7
  export { createRouter, createFileRouter, Outlet, Link, NavLink, useNavigate, useParams as routerParams, usePathname, useSearchParams, useRouter, buildRouteTree, defineRoute, Redirect, redirect, permanentRedirect, notFound, NotFoundError } from '@vesk/runtime/src/router';
@@ -1 +1 @@
1
- {"version":3,"file":"index-server.d.ts","sourceRoot":"","sources":["../src/index-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,IAAI,IAAI,EAAE,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC5S,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,sBAAsB,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC1P,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC3G,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACnJ,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,IAAI,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/Q,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACnT,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC7J,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxK,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC7G,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC7K,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAClI,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index-server.d.ts","sourceRoot":"","sources":["../src/index-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,IAAI,IAAI,EAAE,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC5S,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,sBAAsB,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC1P,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC3G,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACpM,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACnJ,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,IAAI,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/Q,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACnT,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC7J,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxK,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC7G,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC7K,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAClI,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export { track, get, set, untrack, peek_tracked as peek, derived, flush_sync as flushSync, tick, active_block, set_active_block, set_active_component, create_component_ctx, push_component, pop_component, with_block, with_scope, scope, safe_scope, on_destroy } from '@vesk/runtime/src/ripple-runtime';
2
2
  export { effect, user_effect, block, branch, root, render, pre_effect, destroy_block, destroy_block_children, pause_block, resume_block, is_destroyed, unlink_block, create_try_block, boundary_fn_running_block } from '@vesk/runtime/src/ripple-blocks';
3
3
  export { createContext, Context, getActiveComponent, setActiveComponent } from '@vesk/runtime/src/context';
4
+ export { serverLocals, getServerContext, setServerContext, clearServerContext, server_locals, get_server_context, set_server_context, clear_server_context } from '@vesk/runtime/src/server-events';
4
5
  export { createResource, setSsrData, clearSsrData, setSsrSink, resolveSsrResources, useFetch } from '@vesk/runtime/src/resource';
5
6
  export { Portal } from '@vesk/runtime/src/portal';
6
7
  export { createRouter, createFileRouter, Outlet, Link, NavLink, useNavigate, useParams as routerParams, usePathname, useSearchParams, useRouter, buildRouteTree, defineRoute, Redirect, redirect, permanentRedirect, notFound, NotFoundError } from '@vesk/runtime/src/router';
@@ -11,6 +11,7 @@ interface Router {
11
11
  rendered: Node;
12
12
  }[] | null;
13
13
  _depth?: number;
14
+ _hashMode?: boolean;
14
15
  [k: string]: unknown;
15
16
  }
16
17
  export declare class Redirect extends Error {
@@ -1 +1 @@
1
- {"version":3,"file":"router-components.d.ts","sourceRoot":"","sources":["../src/router-components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router-components.d.ts","sourceRoot":"","sources":["../src/router-components.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,21 @@ export function notFound() {
30
30
  export const RouterCtx = createContext(null);
31
31
  let _currentRouter = null;
32
32
  let _outletId = 0;
33
+ /** True when the active router was created with `hash: true`. */
34
+ function routerMode() {
35
+ const r = RouterCtx.get() || _currentRouter;
36
+ return !!(r && r._hashMode);
37
+ }
38
+ /** Strips a leading `#` from an href in hash mode so it compares to the route path. */
39
+ function routeHrefOf(href) {
40
+ return routerMode() && href.startsWith('#') ? href.slice(1) : href;
41
+ }
42
+ /** Whether an href is a SPA route ("/path" or "#/path" in hash mode) vs a native target. */
43
+ function isRouteHref(href) {
44
+ if (!routerMode())
45
+ return !href.startsWith('#');
46
+ return !href.startsWith('#') || href.startsWith('#/');
47
+ }
33
48
  export let __isHydrating = false;
34
49
  export function setIsHydrating(v) {
35
50
  __isHydrating = v;
@@ -50,38 +65,54 @@ export function setCurrentRouter(r) {
50
65
  export function getCurrentRouter() {
51
66
  return _currentRouter;
52
67
  }
68
+ /**
69
+ * Node fields like `error`, `loading`, `notFound` can hold an unresolved name
70
+ * string when a chunk fails to load (see the adapter's string-name fallback).
71
+ * Calling a string as a function throws `X is not a function`, and it also
72
+ * masks the real hydration failure. These finders therefore only return a node
73
+ * value when it is actually a callable function; offline/network nodes keep
74
+ * their `string` fallback semantics and are matched by name separately.
75
+ */
76
+ function isFn(v) {
77
+ return typeof v === 'function';
78
+ }
53
79
  export function findLoadingComponent(chain) {
54
80
  for (let i = chain.length - 1; i >= 0; i--) {
55
- if (chain[i].loading)
56
- return chain[i].loading;
81
+ const v = chain[i].loading;
82
+ if (isFn(v))
83
+ return v;
57
84
  }
58
85
  return null;
59
86
  }
60
87
  export function findErrorComponent(chain) {
61
88
  for (let i = chain.length - 1; i >= 0; i--) {
62
- if (chain[i].error)
63
- return chain[i].error;
89
+ const v = chain[i].error;
90
+ if (isFn(v))
91
+ return v;
64
92
  }
65
93
  return null;
66
94
  }
67
95
  export function findNotFoundComponent(chain) {
68
96
  for (let i = chain.length - 1; i >= 0; i--) {
69
- if (chain[i].notFound)
70
- return chain[i].notFound;
97
+ const v = chain[i].notFound;
98
+ if (isFn(v))
99
+ return v;
71
100
  }
72
101
  return null;
73
102
  }
74
103
  export function findOfflineComponent(chain) {
75
104
  for (let i = chain.length - 1; i >= 0; i--) {
76
- if (chain[i].offline)
77
- return chain[i].offline;
105
+ const v = chain[i].offline;
106
+ if (v !== undefined && v !== null)
107
+ return v;
78
108
  }
79
109
  return null;
80
110
  }
81
111
  export function findNetworkComponent(chain) {
82
112
  for (let i = chain.length - 1; i >= 0; i--) {
83
- if (chain[i].network)
84
- return chain[i].network;
113
+ const v = chain[i].network;
114
+ if (v !== undefined && v !== null)
115
+ return v;
85
116
  }
86
117
  return null;
87
118
  }
@@ -164,6 +195,20 @@ export function Outlet(props) {
164
195
  }
165
196
  return div;
166
197
  }
198
+ /** Mounts DOM (non-string) link children inside a target, preserving element structure. */
199
+ function mountLinkChildren(target, children) {
200
+ if (children.nodeType) {
201
+ target.appendChild(children);
202
+ }
203
+ else if (Array.isArray(children)) {
204
+ for (const c of children) {
205
+ if (c && c.nodeType)
206
+ target.appendChild(c);
207
+ else if (c != null)
208
+ target.appendChild(document.createTextNode(String(c)));
209
+ }
210
+ }
211
+ }
167
212
  export function Link(props, registry, hydrate) {
168
213
  const href = props.href || '#';
169
214
  if (hydrate && hydrate.nextElement) {
@@ -173,12 +218,21 @@ export function Link(props, registry, hydrate) {
173
218
  if (existing)
174
219
  a = existing;
175
220
  }
221
+ // The claimed SSR anchor is already attached in place; returning it lets
222
+ // compiled call sites re-insert it and duplicate the element. Keep it
223
+ // claimed and return an inert fragment. Only a genuinely fresh anchor
224
+ // (conditional region re-run with no SSR counterpart) is returned.
225
+ const claimed = a ? a.parentNode !== null : false;
226
+ if (!a)
227
+ a = document.createElement('a');
228
+ applyLinkDom(a, props, href);
176
229
  if (props.children != null) {
177
230
  if (typeof props.children === 'string' || typeof props.children === 'number') {
178
231
  a.textContent = String(props.children);
179
232
  }
180
- else if (props.children.textContent) {
181
- a.textContent = props.children.textContent;
233
+ else {
234
+ a.replaceChildren();
235
+ mountLinkChildren(a, props.children);
182
236
  }
183
237
  }
184
238
  a.addEventListener('click', (e) => {
@@ -186,12 +240,14 @@ export function Link(props, registry, hydrate) {
186
240
  return;
187
241
  if (props.target === '_blank')
188
242
  return;
243
+ if (!isRouteHref(href))
244
+ return;
189
245
  e.preventDefault();
190
246
  e.stopPropagation();
191
247
  const nav = useNavigate();
192
248
  nav(href);
193
249
  });
194
- return document.createDocumentFragment();
250
+ return claimed ? document.createDocumentFragment() : a;
195
251
  }
196
252
  const attrs = [
197
253
  `href="${href.replace(/"/g, '&quot;')}"`,
@@ -210,36 +266,20 @@ export function Link(props, registry, hydrate) {
210
266
  return `<a ${attrs}>${childStr}</a>`;
211
267
  }
212
268
  const a = document.createElement('a');
213
- a.href = href;
214
- if (props.class)
215
- a.className = props.class;
216
- if (props.style)
217
- a.setAttribute('style', props.style);
218
- if (props.target)
219
- a.target = props.target;
220
- if (props.rel)
221
- a.rel = props.rel;
269
+ applyLinkDom(a, props, href);
222
270
  if (childStr) {
223
271
  a.textContent = childStr;
224
272
  }
225
273
  else if (props.children != null) {
226
- if (props.children.nodeType) {
227
- a.appendChild(props.children);
228
- }
229
- else if (Array.isArray(props.children)) {
230
- for (const c of props.children) {
231
- if (c && c.nodeType)
232
- a.appendChild(c);
233
- else if (c != null)
234
- a.appendChild(document.createTextNode(String(c)));
235
- }
236
- }
274
+ mountLinkChildren(a, props.children);
237
275
  }
238
276
  a.addEventListener('click', (e) => {
239
277
  if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || e.button !== 0)
240
278
  return;
241
279
  if (props.target === '_blank')
242
280
  return;
281
+ if (!isRouteHref(href))
282
+ return;
243
283
  e.preventDefault();
244
284
  e.stopPropagation();
245
285
  const nav = useNavigate();
@@ -247,6 +287,18 @@ export function Link(props, registry, hydrate) {
247
287
  });
248
288
  return a;
249
289
  }
290
+ function applyLinkDom(a, props, href) {
291
+ const displayHref = routerMode() && !href.startsWith('#') ? '#' + href : href;
292
+ a.href = displayHref;
293
+ if (props.class)
294
+ a.className = props.class;
295
+ if (props.style)
296
+ a.setAttribute('style', props.style);
297
+ if (props.target)
298
+ a.target = props.target;
299
+ if (props.rel)
300
+ a.rel = props.rel;
301
+ }
250
302
  export function NavLink(props, registry, hydrate) {
251
303
  if (typeof document === 'undefined') {
252
304
  return Link(props, registry, hydrate);
@@ -254,12 +306,14 @@ export function NavLink(props, registry, hydrate) {
254
306
  if (__isHydrating) {
255
307
  const a = document.querySelector(`a[href="${props.href}"]`);
256
308
  if (a) {
309
+ applyLinkDom(a, props, props.href);
257
310
  if (props.children != null) {
258
311
  if (typeof props.children === 'string' || typeof props.children === 'number') {
259
312
  a.textContent = String(props.children);
260
313
  }
261
- else if (props.children.textContent) {
262
- a.textContent = props.children.textContent;
314
+ else {
315
+ a.replaceChildren();
316
+ mountLinkChildren(a, props.children);
263
317
  }
264
318
  }
265
319
  a.addEventListener('click', (e) => {
@@ -267,13 +321,16 @@ export function NavLink(props, registry, hydrate) {
267
321
  return;
268
322
  if (props.target === '_blank')
269
323
  return;
324
+ if (!isRouteHref(props.href))
325
+ return;
270
326
  e.preventDefault();
271
327
  e.stopPropagation();
272
328
  const nav = useNavigate();
273
329
  nav(props.href);
274
330
  });
275
331
  const path = usePathname();
276
- const isActive = props.href === path || (props.href !== '/' && path.startsWith(props.href) && (path.length === props.href.length || path[props.href.length] === '/' || path[props.href.length] === '?'));
332
+ const routeHref = routeHrefOf(props.href);
333
+ const isActive = routeHref === path || (routeHref !== '/' && path.startsWith(routeHref) && (path.length === routeHref.length || path[routeHref.length] === '/' || path[routeHref.length] === '?'));
277
334
  if (isActive) {
278
335
  a.classList.add(props.activeClass || 'active');
279
336
  if (props.ariaCurrent !== false)
@@ -284,7 +341,8 @@ export function NavLink(props, registry, hydrate) {
284
341
  }
285
342
  const a = Link(props, registry, hydrate);
286
343
  const path = usePathname();
287
- const isActive = props.href === path || (props.href !== '/' && path.startsWith(props.href) && (path.length === props.href.length || path[props.href.length] === '/' || path[props.href.length] === '?'));
344
+ const routeHref = routeHrefOf(props.href);
345
+ const isActive = routeHref === path || (routeHref !== '/' && path.startsWith(routeHref) && (path.length === routeHref.length || path[routeHref.length] === '/' || path[routeHref.length] === '?'));
288
346
  if (isActive) {
289
347
  a.classList.add(props.activeClass || 'active');
290
348
  if (props.ariaCurrent !== false)
@@ -331,7 +389,11 @@ export function useRouter() {
331
389
  back: () => window.history.back(),
332
390
  forward: () => window.history.forward(),
333
391
  go: (n) => window.history.go(n),
334
- refresh: () => router?.navigate?.(window.location.pathname, { replace: true }),
392
+ refresh: () => {
393
+ const mode = routerMode();
394
+ const p = mode && typeof window !== 'undefined' && window.location.hash && window.location.hash.length > 1 ? window.location.hash.slice(1) : (typeof window !== 'undefined' ? window.location.pathname : '');
395
+ router?.navigate?.(p, { replace: true });
396
+ },
335
397
  prefetch: (href) => router?.prefetch?.(href),
336
398
  beforeEach: (fn) => {
337
399
  const r = router;
package/dist/router.d.ts CHANGED
@@ -31,6 +31,7 @@ interface RouterInstance {
31
31
  } | null;
32
32
  _beforeGuards?: GuardFn[];
33
33
  _viewTransitions?: boolean;
34
+ _hashMode?: boolean;
34
35
  _guardDepth?: number;
35
36
  _runGuards(to: string): false | string | void | Promise<false | string | void>;
36
37
  hmrUpdate(): void;
@@ -56,6 +57,15 @@ interface RouterOptions {
56
57
  hydrate?: 'full' | 'viewport' | 'idle' | 'interaction';
57
58
  /** Route-data freshness TTL in ms. Default 0 = always refetch on SPA nav. */
58
59
  routeDataCache?: number;
60
+ /**
61
+ * Hash-mode routing: the route is read from and written to
62
+ * `window.location.hash` (`#/path`) instead of the pathname. Use it when
63
+ * the app is served from a static host that rewrites every path to one
64
+ * index.html. In hash mode `<Link href="/about">` renders `#/about` and
65
+ * `#/...` hrefs are SPA-navigated. Plain `#anchor` in-page links stay
66
+ * native. Default false.
67
+ */
68
+ hash?: boolean;
59
69
  /**
60
70
  * Offline experience for SPA navigations that fail due to loss of
61
71
  * connectivity: a component `(props, registry, walker) => Node | string`
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/dist/router.js CHANGED
@@ -2,7 +2,7 @@ import { get, set, scope, set_active_block } from '@vesk/runtime/src/ripple-runt
2
2
  import { root } from '@vesk/runtime/src/ripple-blocks';
3
3
  import { createHydrateWalker, hydrateViewport, hydrateIdle, hydrateOnInteraction } from '@vesk/runtime/src/hydrate';
4
4
  import { matchRoute, flattenLayoutChain, buildTreeFromMap } from '@vesk/runtime/src/router-match';
5
- import { setIsHydrating, _state, _scrollPositions, _isPopStateNavigation, setIsPopStateNavigation, setCurrentRouter, showLoadingInContainer, handleScroll, applyHead, findLoadingComponent, findErrorComponent, findNotFoundComponent, findOfflineComponent, findNetworkComponent, Outlet, Link, NavLink, useNavigate, useParams, usePathname, useSearchParams, useRouter, Redirect, redirect, permanentRedirect, NotFoundError, notFound, } from '@vesk/runtime/src/router-components';
5
+ import { setIsHydrating, _state, _scrollPositions, _isPopStateNavigation, setIsPopStateNavigation, setCurrentRouter, showLoadingInContainer, handleScroll, applyHead, findLoadingComponent, findErrorComponent, findNotFoundComponent, findOfflineComponent, findNetworkComponent, getCurrentRouter, Outlet, Link, NavLink, useNavigate, useParams, usePathname, useSearchParams, useRouter, Redirect, redirect, permanentRedirect, NotFoundError, notFound, } from '@vesk/runtime/src/router-components';
6
6
  import { getNetworkState, watchNetwork } from '@vesk/runtime/src/network';
7
7
  import { loadingStart, loadingFinish, getLoadingState } from '@vesk/runtime/src/loading-indicator';
8
8
  export { Outlet, Link, NavLink, useNavigate, useParams, usePathname, useSearchParams, useRouter, Redirect, redirect, permanentRedirect, NotFoundError, notFound, ensureChunk, };
@@ -335,7 +335,7 @@ function registerOnlineRecovery(router) {
335
335
  if (!r._showingOffline)
336
336
  return;
337
337
  r._showingOffline = false;
338
- router.navigate(window.location.pathname + window.location.search, { replace: true });
338
+ router.navigate(routeFromLocation(hashModeOf(r)), { replace: true });
339
339
  };
340
340
  window.addEventListener('online', r._onlineHandler);
341
341
  }
@@ -676,10 +676,10 @@ function renderMatch(router, match, container, navToken) {
676
676
  throw error;
677
677
  const retry = () => {
678
678
  if (router && router.navigate) {
679
- router.navigate(window.location.pathname, { replace: true });
679
+ router.navigate(routeFromLocation(hashModeOf(router)), { replace: true });
680
680
  }
681
681
  };
682
- const errorProps = { error, retry, params: paramValues, statusCode: error?.statusCode ?? 500, stack: error instanceof Error ? error.stack : String(error), url: typeof window !== 'undefined' ? window.location.pathname : '', offline: error?.offline === true, networkState: getNetworkState() };
682
+ const errorProps = { error, retry, params: paramValues, statusCode: error?.statusCode ?? 500, stack: error instanceof Error ? error.stack : String(error), url: typeof window !== 'undefined' ? routeFromLocation(hashModeOf(router)) : '', offline: error?.offline === true, networkState: getNetworkState() };
683
683
  return runInBlockWindow(() => renderLayoutWith(0, () => {
684
684
  const result = errorFn(errorProps, new Map(), clientWalker);
685
685
  if (result && typeof result.then === 'function') {
@@ -697,10 +697,10 @@ function renderMatch(router, match, container, navToken) {
697
697
  throw error;
698
698
  const retry = () => {
699
699
  if (router && router.navigate) {
700
- router.navigate(window.location.pathname, { replace: true });
700
+ router.navigate(routeFromLocation(hashModeOf(router)), { replace: true });
701
701
  }
702
702
  };
703
- const errorProps = { error, retry, params: paramValues, statusCode: error?.statusCode ?? 500, stack: error instanceof Error ? error.stack : String(error), url: typeof window !== 'undefined' ? window.location.pathname : '', offline: error?.offline === true, networkState: getNetworkState() };
703
+ const errorProps = { error, retry, params: paramValues, statusCode: error?.statusCode ?? 500, stack: error instanceof Error ? error.stack : String(error), url: typeof window !== 'undefined' ? routeFromLocation(hashModeOf(router)) : '', offline: error?.offline === true, networkState: getNetworkState() };
704
704
  const errDom = runInBlockWindow(() => errorFn(errorProps, new Map(), clientWalker));
705
705
  if (errDom && typeof errDom.then === 'function') {
706
706
  errDom.then(mountDom);
@@ -800,10 +800,10 @@ async function renderErrorPage(router, match, container, error) {
800
800
  const walker = createHydrateWalker(tempRoot, []);
801
801
  const retry = () => {
802
802
  if (router && router.navigate) {
803
- router.navigate(window.location.pathname, { replace: true });
803
+ router.navigate(routeFromLocation(hashModeOf(router)), { replace: true });
804
804
  }
805
805
  };
806
- const errorProps = { error, retry, params: paramValues, statusCode: error?.statusCode ?? 500, stack: error instanceof Error ? error.stack : String(error), url: typeof window !== 'undefined' ? window.location.pathname : '', offline: error?.offline === true, networkState: getNetworkState() };
806
+ const errorProps = { error, retry, params: paramValues, statusCode: error?.statusCode ?? 500, stack: error instanceof Error ? error.stack : String(error), url: typeof window !== 'undefined' ? routeFromLocation(hashModeOf(router)) : '', offline: error?.offline === true, networkState: getNetworkState() };
807
807
  const renderErrorChain = (index) => {
808
808
  if (index >= layoutNodes.length) {
809
809
  const result = errorFn(errorProps, new Map(), walker);
@@ -947,6 +947,17 @@ async function hydrateInitial(router, match, container, strategy) {
947
947
  // suspensions, so an async page resuming from `await useFetch(...)` still
948
948
  // attaches its track()/effect() blocks to the root instead of orphaning them
949
949
  // (orphaned effects never flush — async pages would hydrate with empty lists).
950
+ //
951
+ // renderLayoutChain(i) returns a hydrator FUNCTION rather than rendering
952
+ // eagerly. The layout/page chain must CLAIM SSR markers in DOM order —
953
+ // outermost layout first, then each inner layout, then the page — but the
954
+ // DOM wrapping happens inside-out. Returning a function defers each inner
955
+ // layout's claim until its enclosing layout's `{children}` slot invokes it,
956
+ // so claims run outermost→innermost (matching document order) while the
957
+ // outer layout still wraps the inner result. Rendering a layout eagerly (as
958
+ // a plain call) would claim the OUTER markers with the INNER component and
959
+ // cascade a marker-count mismatch across the whole `#root`, wiping the SSR
960
+ // content through the error/fallback path.
950
961
  function renderLayoutChain(index) {
951
962
  if (index >= layoutNodes.length) {
952
963
  return (subWalker) => {
@@ -971,13 +982,15 @@ async function hydrateInitial(router, match, container, strategy) {
971
982
  const node = layoutNodes[index];
972
983
  const hydLayout = hydLayouts[index];
973
984
  const childHydrator = renderLayoutChain(index + 1);
974
- const layoutProps = { children: childHydrator, params: paramValues };
975
- const result = hydLayout(layoutProps, new Map(), walker);
976
- storeLayoutInstance(router, node, layoutProps, result);
977
- return result;
985
+ return (walker) => {
986
+ const layoutProps = { children: childHydrator, params: paramValues };
987
+ const result = hydLayout(layoutProps, new Map(), walker);
988
+ storeLayoutInstance(router, node, layoutProps, result);
989
+ return result;
990
+ };
978
991
  }
979
992
  const walker = createHydrateWalker(container);
980
- await runInBlockWindow(() => renderLayoutChain(0));
993
+ await runInBlockWindow(() => renderLayoutChain(0)(walker));
981
994
  setIsHydrating(false);
982
995
  }
983
996
  catch (error) {
@@ -999,7 +1012,32 @@ async function hydrateInitial(router, match, container, strategy) {
999
1012
  }
1000
1013
  }
1001
1014
  }
1015
+ /** True when a router was created with `hash: true` (route lives in the URL fragment). */
1016
+ function hashModeOf(r) {
1017
+ return !!r && r._hashMode === true;
1018
+ }
1019
+ /** Returns the current route path from the browser location, honoring the mode. */
1020
+ function routeFromLocation(mode) {
1021
+ if (mode) {
1022
+ const h = typeof window !== 'undefined' ? window.location.hash : '';
1023
+ // Only `#/path` is a route in hash mode; plain `#anchor` in-page
1024
+ // links are never treated as routes.
1025
+ if (h.length > 1 && h[1] === '/')
1026
+ return h.slice(1);
1027
+ return '/';
1028
+ }
1029
+ return window.location.pathname + window.location.search;
1030
+ }
1031
+ /** Current route used as a scroll-position / navigation key (mode aware). */
1032
+ function routeKey(mode) {
1033
+ return get(_state.path) || routeFromLocation(mode);
1034
+ }
1002
1035
  function scrollToHash() {
1036
+ // In hash mode the fragment IS the route — never treat it as an in-page
1037
+ // anchor target.
1038
+ const r = getCurrentRouter();
1039
+ if (hashModeOf(r))
1040
+ return;
1003
1041
  const h = typeof window !== 'undefined' ? window.location.hash : '';
1004
1042
  if (!h || h === '#')
1005
1043
  return;
@@ -1018,6 +1056,7 @@ export function createRouter(routes, options = {}) {
1018
1056
  const prefetch = options.prefetch !== false;
1019
1057
  const hydrateStrategy = options.hydrate || 'full';
1020
1058
  const routeTree = Array.isArray(routes) ? routes : buildTreeFromMap(routes, options);
1059
+ const hashMode = options.hash === true;
1021
1060
  const router = {
1022
1061
  routeTree,
1023
1062
  container,
@@ -1029,6 +1068,7 @@ export function createRouter(routes, options = {}) {
1029
1068
  _offlineUI: (options.offline ?? null),
1030
1069
  _beforeGuards: [],
1031
1070
  _viewTransitions: options.viewTransitions === true,
1071
+ _hashMode: hashMode,
1032
1072
  beforeEach(fn) {
1033
1073
  this._beforeGuards.push(fn);
1034
1074
  let active = true;
@@ -1043,7 +1083,7 @@ export function createRouter(routes, options = {}) {
1043
1083
  };
1044
1084
  },
1045
1085
  _runGuards(to) {
1046
- const from = window.location.pathname;
1086
+ const from = get(_state.path) || window.location.pathname;
1047
1087
  for (const g of this._beforeGuards ?? []) {
1048
1088
  const d = g(to, from);
1049
1089
  if (d instanceof Promise) {
@@ -1083,7 +1123,7 @@ export function createRouter(routes, options = {}) {
1083
1123
  return;
1084
1124
  _scrollTimer = setTimeout(() => {
1085
1125
  if (window.scrollY !== undefined) {
1086
- _scrollPositions.set(window.location.pathname, window.scrollY);
1126
+ _scrollPositions.set(routeKey(hashMode), window.scrollY);
1087
1127
  }
1088
1128
  _scrollTimer = null;
1089
1129
  }, 100);
@@ -1097,9 +1137,26 @@ export function createRouter(routes, options = {}) {
1097
1137
  // click listener that respects modifier keys, target="_blank",
1098
1138
  // download, external origins, hash/mailto/tel schemes.
1099
1139
  window.addEventListener('popstate', () => {
1140
+ const p = routeFromLocation(hashMode);
1141
+ // Browser order of popstate/hashchange differs by engine; if the
1142
+ // route is already current the sibling handler navigated first.
1143
+ if (get(_state.path) === p)
1144
+ return;
1100
1145
  setIsPopStateNavigation(true);
1101
- this.navigate(window.location.href, { replace: true });
1146
+ this.navigate(p, { replace: true });
1102
1147
  });
1148
+ if (hashMode) {
1149
+ window.addEventListener('hashchange', () => {
1150
+ const p = routeFromLocation(true);
1151
+ // Back/forward fires popstate (and often hashchange). If the
1152
+ // route is already current, popstate handled it — skip the
1153
+ // duplicate navigation.
1154
+ if (get(_state.path) === p)
1155
+ return;
1156
+ setIsPopStateNavigation(true);
1157
+ this.navigate(p, { replace: true });
1158
+ });
1159
+ }
1103
1160
  document.addEventListener('click', (e) => {
1104
1161
  const target = e.target;
1105
1162
  if (!target || target.nodeType !== 1)
@@ -1121,7 +1178,11 @@ export function createRouter(routes, options = {}) {
1121
1178
  if (anchor.getAttribute('rel') === 'external')
1122
1179
  return;
1123
1180
  const href = anchor.getAttribute('href');
1124
- if (!href || href.startsWith('#') || href.startsWith('mailto:') || href.startsWith('tel:') || href.startsWith('javascript:'))
1181
+ if (!href || href.startsWith('mailto:') || href.startsWith('tel:') || href.startsWith('javascript:'))
1182
+ return;
1183
+ // In hash mode `#/path` is a SPA route and gets intercepted;
1184
+ // plain `#anchor` in-page links always stay native.
1185
+ if (href.startsWith('#') && (!hashMode || !href.startsWith('#/')))
1125
1186
  return;
1126
1187
  try {
1127
1188
  const url = new URL(href, window.location.origin);
@@ -1142,8 +1203,8 @@ export function createRouter(routes, options = {}) {
1142
1203
  this.prefetch(link.getAttribute('href'));
1143
1204
  }, { passive: true });
1144
1205
  }
1145
- const path = window.location.pathname + window.location.search;
1146
- if (container.children.length > 0) {
1206
+ const path = routeFromLocation(hashMode);
1207
+ if (container.children.length > 0 && !hashMode) {
1147
1208
  const url = new URL(path, window.location.origin);
1148
1209
  const match = matchRoute(this.routeTree, url.pathname);
1149
1210
  if (match) {
@@ -1161,7 +1222,9 @@ export function createRouter(routes, options = {}) {
1161
1222
  return this;
1162
1223
  },
1163
1224
  navigate(path, opts = {}) {
1164
- const url = new URL(path, window.location.origin);
1225
+ const mode = hashModeOf(this);
1226
+ const raw = mode && typeof path === 'string' && path.startsWith('#/') ? path.slice(1) : path;
1227
+ const url = new URL(raw, window.location.origin);
1165
1228
  const match = matchRoute(this.routeTree, url.pathname);
1166
1229
  if (!match) {
1167
1230
  window.location.href = path;
@@ -1173,7 +1236,7 @@ export function createRouter(routes, options = {}) {
1173
1236
  const guardResult = self._runGuards(url.pathname);
1174
1237
  const proceedNav = () => {
1175
1238
  if (!_isPopStateNavigation) {
1176
- _scrollPositions.set(window.location.pathname, window.scrollY);
1239
+ _scrollPositions.set(routeKey(mode), window.scrollY);
1177
1240
  }
1178
1241
  const loadingFn = findLoadingComponent(match.matchChain);
1179
1242
  this._navToken = (this._navToken || 0) + 1;
@@ -1181,11 +1244,13 @@ export function createRouter(routes, options = {}) {
1181
1244
  loadingStart();
1182
1245
  let firstRenderFailed = false;
1183
1246
  const updateUrl = () => {
1247
+ const fullPath = url.pathname + url.search;
1248
+ const target = mode ? (fullPath.startsWith('/') ? '#' + fullPath : '#' + fullPath) : fullPath;
1184
1249
  if (!opts.replace) {
1185
- window.history.pushState({ path: url.pathname }, '', url.pathname + url.search);
1250
+ window.history.pushState({ path: url.pathname }, '', target);
1186
1251
  }
1187
1252
  else {
1188
- window.history.replaceState({ path: url.pathname }, '', url.pathname + url.search);
1253
+ window.history.replaceState({ path: url.pathname }, '', target);
1189
1254
  }
1190
1255
  set(_state.path, url.pathname);
1191
1256
  set(_state.search, url.search.startsWith('?') ? url.search.slice(1) : url.search);
@@ -1297,7 +1362,9 @@ export function createRouter(routes, options = {}) {
1297
1362
  proceedNav();
1298
1363
  },
1299
1364
  prefetch(path) {
1300
- const url = new URL(path, window.location.origin);
1365
+ const mode = hashModeOf(this);
1366
+ const raw = mode && typeof path === 'string' && path.startsWith('#/') ? path.slice(1) : path;
1367
+ const url = new URL(raw, window.location.origin);
1301
1368
  const match = matchRoute(this.routeTree, url.pathname);
1302
1369
  if (!match)
1303
1370
  return;
@@ -1355,12 +1422,12 @@ export function createRouter(routes, options = {}) {
1355
1422
  }
1356
1423
  }
1357
1424
  if (!didUpdate) {
1358
- const path = window.location.pathname + window.location.search;
1425
+ const path = routeFromLocation(hashMode);
1359
1426
  this.navigate(path, { replace: true });
1360
1427
  }
1361
1428
  }
1362
1429
  else {
1363
- const path = window.location.pathname + window.location.search;
1430
+ const path = routeFromLocation(hashMode);
1364
1431
  this.navigate(path, { replace: true });
1365
1432
  }
1366
1433
  },
@@ -1372,6 +1439,7 @@ export function createFileRouter(routeTree, options = {}) {
1372
1439
  const middleware = options.middleware || null;
1373
1440
  const renderFn = options.render || renderMatch;
1374
1441
  const hydrateStrategy = options.hydrate || 'full';
1442
+ const hashMode = options.hash === true;
1375
1443
  const router = {
1376
1444
  _hydrateStrategy: hydrateStrategy,
1377
1445
  routeTree,
@@ -1384,6 +1452,7 @@ export function createFileRouter(routeTree, options = {}) {
1384
1452
  _offlineUI: (options.offline ?? null),
1385
1453
  _beforeGuards: [],
1386
1454
  _viewTransitions: options.viewTransitions === true,
1455
+ _hashMode: hashMode,
1387
1456
  beforeEach(fn) {
1388
1457
  this._beforeGuards.push(fn);
1389
1458
  let active = true;
@@ -1398,7 +1467,7 @@ export function createFileRouter(routeTree, options = {}) {
1398
1467
  };
1399
1468
  },
1400
1469
  _runGuards(to) {
1401
- const from = window.location.pathname;
1470
+ const from = get(_state.path) || window.location.pathname;
1402
1471
  for (const g of this._beforeGuards ?? []) {
1403
1472
  const d = g(to, from);
1404
1473
  if (d instanceof Promise) {
@@ -1438,7 +1507,7 @@ export function createFileRouter(routeTree, options = {}) {
1438
1507
  return;
1439
1508
  _scrollTimer = setTimeout(() => {
1440
1509
  if (window.scrollY !== undefined) {
1441
- _scrollPositions.set(window.location.pathname, window.scrollY);
1510
+ _scrollPositions.set(routeKey(hashMode), window.scrollY);
1442
1511
  }
1443
1512
  _scrollTimer = null;
1444
1513
  }, 100);
@@ -1446,9 +1515,26 @@ export function createFileRouter(routeTree, options = {}) {
1446
1515
  window.addEventListener('scroll', _onScroll, { passive: true });
1447
1516
  }
1448
1517
  window.addEventListener('popstate', () => {
1518
+ const p = routeFromLocation(hashMode);
1519
+ // Browser order of popstate/hashchange differs by engine; if the
1520
+ // route is already current the sibling handler navigated first.
1521
+ if (get(_state.path) === p)
1522
+ return;
1449
1523
  setIsPopStateNavigation(true);
1450
- router.navigate(window.location.pathname + window.location.search, { replace: true });
1524
+ router.navigate(p, { replace: true });
1451
1525
  });
1526
+ if (hashMode) {
1527
+ window.addEventListener('hashchange', () => {
1528
+ const p = routeFromLocation(true);
1529
+ // Back/forward fires popstate (and often hashchange). If the
1530
+ // route is already current, popstate handled it — skip the
1531
+ // duplicate navigation.
1532
+ if (get(_state.path) === p)
1533
+ return;
1534
+ setIsPopStateNavigation(true);
1535
+ router.navigate(p, { replace: true });
1536
+ });
1537
+ }
1452
1538
  document.addEventListener('click', (e) => {
1453
1539
  const target = e.target;
1454
1540
  if (!target || target.nodeType !== 1)
@@ -1470,7 +1556,9 @@ export function createFileRouter(routeTree, options = {}) {
1470
1556
  if (anchor.getAttribute('rel') === 'external')
1471
1557
  return;
1472
1558
  const href = anchor.getAttribute('href');
1473
- if (!href || href.startsWith('#') || href.startsWith('mailto:') || href.startsWith('tel:') || href.startsWith('javascript:'))
1559
+ if (!href || href.startsWith('mailto:') || href.startsWith('tel:') || href.startsWith('javascript:'))
1560
+ return;
1561
+ if (href.startsWith('#') && (!hashMode || !href.startsWith('#/')))
1474
1562
  return;
1475
1563
  try {
1476
1564
  const url = new URL(href, window.location.origin);
@@ -1491,8 +1579,8 @@ export function createFileRouter(routeTree, options = {}) {
1491
1579
  router.prefetch(link.getAttribute('href'));
1492
1580
  }, { passive: true });
1493
1581
  }
1494
- const path = window.location.pathname;
1495
- if (container.children.length > 0) {
1582
+ const path = routeFromLocation(hashMode).split('?')[0];
1583
+ if (container.children.length > 0 && !hashMode) {
1496
1584
  const match = matchRoute(routeTree, path);
1497
1585
  if (match) {
1498
1586
  match.pathname = path;
@@ -1509,7 +1597,9 @@ export function createFileRouter(routeTree, options = {}) {
1509
1597
  return router;
1510
1598
  },
1511
1599
  navigate(pathname, opts = {}) {
1512
- const url = pathname instanceof URL ? pathname : new URL(pathname, window.location.origin);
1600
+ const mode = hashModeOf(router);
1601
+ const raw = mode && typeof pathname === 'string' && pathname.startsWith('#/') ? pathname.slice(1) : pathname;
1602
+ const url = raw instanceof URL ? raw : new URL(raw, window.location.origin);
1513
1603
  const match = matchRoute(routeTree, url.pathname);
1514
1604
  if (!match) {
1515
1605
  const chain = flattenLayoutChain(routeTree, url.pathname.split('/').filter(Boolean));
@@ -1541,7 +1631,7 @@ export function createFileRouter(routeTree, options = {}) {
1541
1631
  match.pathname = url.pathname;
1542
1632
  const afterGuards = () => {
1543
1633
  if (!_isPopStateNavigation) {
1544
- _scrollPositions.set(window.location.pathname, window.scrollY);
1634
+ _scrollPositions.set(routeKey(mode), window.scrollY);
1545
1635
  }
1546
1636
  const swapView = (fn) => {
1547
1637
  const d = document;
@@ -1559,11 +1649,12 @@ export function createFileRouter(routeTree, options = {}) {
1559
1649
  let firstRenderFailed = false;
1560
1650
  const updateUrl = () => {
1561
1651
  const fullUrl = url.pathname + url.search;
1652
+ const target = mode ? (fullUrl.startsWith('/') ? '#' + fullUrl : '#' + fullUrl) : fullUrl;
1562
1653
  if (!opts.replace) {
1563
- window.history.pushState({ path: fullUrl }, '', fullUrl);
1654
+ window.history.pushState({ path: fullUrl }, '', target);
1564
1655
  }
1565
1656
  else {
1566
- window.history.replaceState({ path: fullUrl }, '', fullUrl);
1657
+ window.history.replaceState({ path: fullUrl }, '', target);
1567
1658
  }
1568
1659
  set(_state.path, url.pathname);
1569
1660
  set(_state.search, url.search.startsWith('?') ? url.search.slice(1) : url.search);
@@ -1760,7 +1851,9 @@ export function createFileRouter(routeTree, options = {}) {
1760
1851
  afterGuards();
1761
1852
  },
1762
1853
  prefetch(path) {
1763
- const url = new URL(path, window.location.origin);
1854
+ const mode = hashModeOf(router);
1855
+ const raw = mode && typeof path === 'string' && path.startsWith('#/') ? path.slice(1) : path;
1856
+ const url = new URL(raw, window.location.origin);
1764
1857
  const match = matchRoute(routeTree, url.pathname);
1765
1858
  if (!match)
1766
1859
  return;
@@ -1791,7 +1884,7 @@ export function createFileRouter(routeTree, options = {}) {
1791
1884
  if (typeof router.__updateComponents === 'function') {
1792
1885
  router.__updateComponents(router.routeTree);
1793
1886
  }
1794
- const path = window.location.pathname + window.location.search;
1887
+ const path = routeFromLocation(hashModeOf(router)).split('?')[0];
1795
1888
  const match = matchRoute(router.routeTree, path);
1796
1889
  if (match) {
1797
1890
  match.pathname = path;
@@ -0,0 +1,13 @@
1
+ /** The server-wide context object shared across every request in this process. */
2
+ export declare function server_locals(): Record<string, unknown>;
3
+ /** Read one server-wide context value (undefined when unset). */
4
+ export declare function get_server_context(key: string): unknown;
5
+ /** Write one server-wide context value, visible to every subsequent request. */
6
+ export declare function set_server_context(key: string, value: unknown): void;
7
+ /** Wipe the entire server-wide context. */
8
+ export declare function clear_server_context(): void;
9
+ export declare const serverLocals: typeof server_locals;
10
+ export declare const getServerContext: typeof get_server_context;
11
+ export declare const setServerContext: typeof set_server_context;
12
+ export declare const clearServerContext: typeof clear_server_context;
13
+ //# sourceMappingURL=server-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-events.d.ts","sourceRoot":"","sources":["../src/server-events.ts"],"names":[],"mappings":"AAmBA,kFAAkF;AAClF,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEvD;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAEpE;AAED,2CAA2C;AAC3C,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C;AAED,eAAO,MAAM,YAAY,sBAAgB,CAAC;AAC1C,eAAO,MAAM,gBAAgB,2BAAqB,CAAC;AACnD,eAAO,MAAM,gBAAgB,2BAAqB,CAAC;AACnD,eAAO,MAAM,kBAAkB,6BAAuB,CAAC"}
@@ -0,0 +1,29 @@
1
+ function getStore() {
2
+ const g = globalThis;
3
+ if (!g.__vesk_server_ctx || typeof g.__vesk_server_ctx !== 'object') {
4
+ g.__vesk_server_ctx = {};
5
+ }
6
+ return g.__vesk_server_ctx;
7
+ }
8
+ /** The server-wide context object shared across every request in this process. */
9
+ export function server_locals() {
10
+ return getStore();
11
+ }
12
+ /** Read one server-wide context value (undefined when unset). */
13
+ export function get_server_context(key) {
14
+ return getStore()[key];
15
+ }
16
+ /** Write one server-wide context value, visible to every subsequent request. */
17
+ export function set_server_context(key, value) {
18
+ getStore()[key] = value;
19
+ }
20
+ /** Wipe the entire server-wide context. */
21
+ export function clear_server_context() {
22
+ const store = getStore();
23
+ for (const key of Object.keys(store))
24
+ delete store[key];
25
+ }
26
+ export const serverLocals = server_locals;
27
+ export const getServerContext = get_server_context;
28
+ export const setServerContext = set_server_context;
29
+ export const clearServerContext = clear_server_context;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vesk/runtime",
3
- "version": "0.2.15",
3
+ "version": "0.2.17",
4
4
  "type": "module",
5
5
  "description": "Vesk runtime — reactivity, blocks, DOM operations, hydration",
6
6
  "main": "./dist/index-client.js",
@@ -26,7 +26,7 @@
26
26
  "./package.json": "./package.json"
27
27
  },
28
28
  "dependencies": {
29
- "@vesk/compiler": "^0.2.15"
29
+ "@vesk/compiler": "^0.2.17"
30
30
  },
31
31
  "scripts": {
32
32
  "typecheck": "tsc --noEmit",