eddev 2.0.0-beta.229 → 2.0.0-beta.230

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.
Files changed (28) hide show
  1. package/dist/app/lib/devtools/loader.js +2 -2
  2. package/dist/app/lib/routing/components/BrowserRouter.d.ts.map +1 -1
  3. package/dist/app/lib/routing/components/BrowserRouter.js +35 -6
  4. package/dist/app/lib/routing/components/ClientOnly.js +2 -2
  5. package/dist/app/lib/routing/components/Link.d.ts +8 -5
  6. package/dist/app/lib/routing/components/Link.d.ts.map +1 -1
  7. package/dist/app/lib/routing/components/Link.js +15 -7
  8. package/dist/app/lib/routing/hooks/{useIsSSR.d.ts → useHydrating.d.ts} +7 -1
  9. package/dist/app/lib/routing/hooks/useHydrating.d.ts.map +1 -0
  10. package/dist/app/lib/routing/hooks/{useIsSSR.js → useHydrating.js} +9 -1
  11. package/dist/app/lib/routing/index.d.ts +1 -1
  12. package/dist/app/lib/routing/index.d.ts.map +1 -1
  13. package/dist/app/lib/routing/index.js +1 -1
  14. package/dist/app/lib/routing/types.d.ts +13 -2
  15. package/dist/app/lib/routing/types.d.ts.map +1 -1
  16. package/dist/app/server/render-ai-page.d.ts.map +1 -1
  17. package/dist/app/server/render-ai-page.js +3 -1
  18. package/dist/app/server/render-ssr-page.js +1 -1
  19. package/dist/app/server/server-context.d.ts +1 -0
  20. package/dist/app/server/server-context.d.ts.map +1 -1
  21. package/dist/app/server/server-context.js +9 -2
  22. package/dist/node/cli/version.d.ts +1 -1
  23. package/dist/node/cli/version.js +1 -1
  24. package/dist/node/compiler/vinxi-app.d.ts.map +1 -1
  25. package/dist/node/compiler/vinxi-app.js +6 -2
  26. package/dist/node/compiler/vinxi-codegen.js +1 -1
  27. package/package.json +1 -1
  28. package/dist/app/lib/routing/hooks/useIsSSR.d.ts.map +0 -1
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { lazy, useEffect } from "react";
3
3
  import { usePersistState } from "./hooks/usePersistState.js";
4
- import { useIsSSR } from "../routing/hooks/useIsSSR.js";
4
+ import { useHydrating } from "../routing/hooks/useHydrating.js";
5
5
  const DevUI = lazy(() => import("./components/DevUI.js"));
6
6
  export function DevUILoader() {
7
- const ssr = useIsSSR();
7
+ const ssr = useHydrating();
8
8
  const [render, setRender] = usePersistState("enable_devui", false);
9
9
  useEffect(() => {
10
10
  if (document.location.search.includes("activate-dev-ui") ||
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserRouter.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/components/BrowserRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAuD,MAAM,OAAO,CAAA;AAK9F,OAAO,EAEL,cAAc,EAId,KAAK,SAAS,EAGf,MAAM,aAAa,CAAA;AAWpB,KAAK,KAAK,GAAG,iBAAiB,CAAC;IAC7B,SAAS,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAC,CAAA;AAuEF,wBAAgB,eAAe;WAFJ,cAAc;SAAO,SAAS;SAIxD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,2CA+bzC"}
1
+ {"version":3,"file":"BrowserRouter.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/components/BrowserRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAuD,MAAM,OAAO,CAAA;AAK9F,OAAO,EAGL,cAAc,EAId,KAAK,SAAS,EAGf,MAAM,aAAa,CAAA;AAWpB,KAAK,KAAK,GAAG,iBAAiB,CAAC;IAC7B,SAAS,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAC,CAAA;AAuEF,wBAAgB,eAAe;WAFJ,cAAc;SAAO,SAAS;SAIxD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,2CAgezC"}
@@ -73,6 +73,7 @@ export function getClientRouter() {
73
73
  export function BrowserRouter(props) {
74
74
  const pendingRoute = useRef(null);
75
75
  const [transitioning, startTransition] = useTransition();
76
+ const pendingNavigationClick = useRef(null);
76
77
  const [routerState, setRouterState] = useState(() => ({
77
78
  activeRoute: initialRoute,
78
79
  history: [initialRoute],
@@ -198,6 +199,7 @@ export function BrowserRouter(props) {
198
199
  emitEvent({
199
200
  type: "navigate:start",
200
201
  link,
202
+ linkData: args.linkData,
201
203
  currentRoute: currentRoute,
202
204
  hasPreloadedData: hasRouteData,
203
205
  goingBack: !!args.goingBack,
@@ -208,7 +210,13 @@ export function BrowserRouter(props) {
208
210
  if (cancelled)
209
211
  return;
210
212
  const data = await loader.loadRouteData(parseHrefPath(args.url)).catch((err) => {
211
- emitEvent({ type: "error", url: args.url, error: err, critical: true });
213
+ emitEvent({
214
+ type: "error",
215
+ url: args.url,
216
+ error: err,
217
+ critical: true,
218
+ linkData: args.linkData,
219
+ });
212
220
  return {
213
221
  view: "_error",
214
222
  viewType: "react",
@@ -237,6 +245,7 @@ export function BrowserRouter(props) {
237
245
  component: lazyComponent,
238
246
  returnState: args.restoreState ?? {},
239
247
  meta: getRouteMeta(data),
248
+ linkData: args.linkData,
240
249
  });
241
250
  setState({
242
251
  pendingRoute: route,
@@ -246,12 +255,14 @@ export function BrowserRouter(props) {
246
255
  currentRoute,
247
256
  loadedRoute: route,
248
257
  link,
258
+ linkData: args.linkData,
249
259
  });
250
260
  emitEvent({
251
261
  type: "navigate:will-change",
252
262
  currentRoute,
253
263
  loadedRoute: route,
254
264
  link,
265
+ linkData: args.linkData,
255
266
  });
256
267
  internals.transitionEnded = () => {
257
268
  internals.transitionEnded = null;
@@ -264,8 +275,10 @@ export function BrowserRouter(props) {
264
275
  currentRoute: route,
265
276
  lastRoute: currentRoute,
266
277
  link,
278
+ linkData: args.linkData,
267
279
  });
268
280
  $routeMetaStore.data = route.meta;
281
+ pendingNavigationClick.current = null;
269
282
  // Update the 'Edit Page' button, if there is one
270
283
  if (route.meta.editLink) {
271
284
  const button = document.querySelector("#wp-admin-bar-edit a");
@@ -286,11 +299,12 @@ export function BrowserRouter(props) {
286
299
  const api = {
287
300
  loader: loader,
288
301
  hostname: window?._PAGE_DATA?.hostname,
289
- async navigate(url) {
302
+ async navigate(url, args) {
290
303
  doRouteTransition({
291
304
  url: url,
292
305
  shouldPush: true,
293
306
  goingBack: false,
307
+ linkData: args?.linkData,
294
308
  });
295
309
  },
296
310
  getState() {
@@ -320,7 +334,7 @@ export function BrowserRouter(props) {
320
334
  });
321
335
  }
322
336
  catch (err) {
323
- emitEvent({ type: "error", error: err, critical: false });
337
+ emitEvent({ type: "error", error: err, critical: false, linkData: undefined });
324
338
  }
325
339
  },
326
340
  async preload(url) {
@@ -338,7 +352,7 @@ export function BrowserRouter(props) {
338
352
  }
339
353
  }
340
354
  catch (err) {
341
- emitEvent({ type: "error", error: err, critical: false });
355
+ emitEvent({ type: "error", error: err, critical: false, linkData: undefined });
342
356
  }
343
357
  },
344
358
  subscribe(fn) {
@@ -347,14 +361,27 @@ export function BrowserRouter(props) {
347
361
  subscribers.delete(fn);
348
362
  };
349
363
  },
350
- handleClickEvent(e, originalHref, preferBack, eventTarget) {
364
+ handleClickEvent(e, originalHref, preferBack, eventTarget, linkData) {
351
365
  const { mode, href, isSameUrl } = getLinkHandlerMode(e, originalHref, state.activeRoute);
352
366
  let cancelled = false;
367
+ // If the same link has only just been clicked very recently, ignore it.
368
+ // Likely this is a double-click, or the page has taken a bit longer to load than the user expected.
369
+ if (pendingNavigationClick.current && pendingNavigationClick.current.href === href) {
370
+ const pendingAge = Date.now() - pendingNavigationClick.current.startTime;
371
+ if (pendingAge < 1000) {
372
+ e.preventDefault();
373
+ return;
374
+ }
375
+ }
376
+ else {
377
+ pendingNavigationClick.current = { startTime: Date.now(), href: href };
378
+ }
353
379
  if (href) {
354
380
  emitEvent({
355
381
  type: "clicked",
356
382
  currentRoute: getActiveRoute(),
357
383
  link: parseRouteLink(href),
384
+ linkData,
358
385
  mode,
359
386
  href,
360
387
  isSameUrl,
@@ -383,7 +410,9 @@ export function BrowserRouter(props) {
383
410
  }
384
411
  }
385
412
  }
386
- api.navigate(href);
413
+ api.navigate(href, {
414
+ linkData,
415
+ });
387
416
  }
388
417
  },
389
418
  emitEvent,
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Fragment } from "react";
3
- import { useIsSSR } from "../hooks/useIsSSR.js";
3
+ import { useHydrating } from "../hooks/useHydrating.js";
4
4
  /**
5
5
  * Renders children, but only on the client.
6
6
  *
7
7
  * The optional 'fallback' prop can be used to show a loading state or placeholder content while the client bundle is loading.
8
8
  */
9
9
  export function ClientOnly(props) {
10
- const mounted = useIsSSR();
10
+ const mounted = useHydrating();
11
11
  if (mounted)
12
12
  return props.fallback ?? null;
13
13
  return _jsx(Fragment, { children: props.children });
@@ -1,23 +1,26 @@
1
1
  import { ComponentPropsWithRef, ElementType, MouseEvent, ReactElement } from "react";
2
+ import { LinkClickData } from "../types.js";
2
3
  type Props<T extends ElementType = "a"> = NoInfer<Omit<ComponentPropsWithRef<T>, "href" | "target">> & {
3
4
  href?: string | null;
4
5
  target?: string | null;
5
6
  as?: T;
6
7
  preferBack?: boolean | "exact";
8
+ linkData?: LinkClickData;
7
9
  };
8
10
  export declare function useLinkProps<T extends ElementType = "a">(props: Exclude<Props<T>, "as">, ref?: React.Ref<HTMLAnchorElement>): ({
9
11
  ref: import("react").Ref<HTMLAnchorElement> | undefined;
10
- } & Exclude<Props<T>, "as"> & {
11
- href: string | undefined;
12
- onClick: (e: MouseEvent) => void;
13
- }) | ({
14
- ref: import("react").Ref<HTMLAnchorElement> | undefined;
15
12
  "data-active": boolean | "path" | "query" | "exact" | undefined;
16
13
  "data-child-active": boolean | undefined;
17
14
  "data-pending": "path" | "query" | "exact" | undefined;
18
15
  } & Exclude<Props<T>, "as"> & {
19
16
  href: string;
20
17
  onMouseEnter: (e: MouseEvent) => void;
18
+ onPointerDown: (e: PointerEvent) => void;
19
+ onClick: (e: MouseEvent) => void;
20
+ }) | ({
21
+ ref: import("react").Ref<HTMLAnchorElement> | undefined;
22
+ } & Exclude<Props<T>, "as"> & {
23
+ href: string | undefined;
21
24
  onClick: (e: MouseEvent) => void;
22
25
  });
23
26
  export declare const Link: <T extends ElementType = "a">(props: Props<T>) => ReactElement;
@@ -1 +1 @@
1
- {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/components/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAsC,MAAM,OAAO,CAAA;AASxH,KAAK,KAAK,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG;IACrG,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,EAAE,CAAC,EAAE,CAAC,CAAA;IACN,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAC/B,CAAA;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,EACtD,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAC9B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;;;;iBAOjB,UAAU;;;;;;;;sBAgBP,UAAU;iBASf,UAAU;GAK1B;AAED,eAAO,MAAM,IAAI,EAIX,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,CAAA;AAKpE;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;;EA6BxC"}
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/components/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAsC,MAAM,OAAO,CAAA;AAIxH,OAAO,EAAE,aAAa,EAAc,MAAM,aAAa,CAAA;AAKvD,KAAK,KAAK,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG;IACrG,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,EAAE,CAAC,EAAE,CAAC,CAAA;IACN,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAA;CACzB,CAAA;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,EACtD,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAC9B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;;;;;;;sBAuBd,UAAU;uBAOT,YAAY;iBAOlB,UAAU;;;;;iBA9BR,UAAU;GAwC5B;AAED,eAAO,MAAM,IAAI,EAIX,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,CAAA;AAKpE;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;;EA6BxC"}
@@ -1,6 +1,6 @@
1
1
  import { createElement, forwardRef, useMemo } from "react";
2
2
  import { parseURL, resolveURL, withoutTrailingSlash } from "ufo";
3
- import { useIsSSR } from "../hooks/useIsSSR.js";
3
+ import { useHydrating } from "../hooks/useHydrating.js";
4
4
  import { useRouter } from "../hooks/useRouter.js";
5
5
  import { addTrailingSlash, getLinkHandlerMode, isSameOrigin } from "../utils.js";
6
6
  import { useRoute } from "../hooks/useRoute.js";
@@ -19,7 +19,7 @@ export function useLinkProps(props, ref) {
19
19
  }
20
20
  const router = useRouter();
21
21
  const state = useLinkState(props.href ?? "");
22
- return {
22
+ const finalProps = {
23
23
  ref: ref,
24
24
  "data-active": state.active ?? undefined,
25
25
  "data-child-active": state.childActive ?? undefined,
@@ -27,9 +27,14 @@ export function useLinkProps(props, ref) {
27
27
  ...props,
28
28
  href: addTrailingSlash(props.href),
29
29
  onMouseEnter: (e) => {
30
- if (props.onMouseEnter) {
31
- props.onMouseEnter(e);
30
+ props.onMouseEnter?.(e);
31
+ const mode = getLinkHandlerMode(e, props.href);
32
+ if (mode.mode === "navigate") {
33
+ router.preload(props.href);
32
34
  }
35
+ },
36
+ onPointerDown: (e) => {
37
+ props.onPointerDown?.(e);
33
38
  const mode = getLinkHandlerMode(e, props.href);
34
39
  if (mode.mode === "navigate") {
35
40
  router.preload(props.href);
@@ -37,11 +42,14 @@ export function useLinkProps(props, ref) {
37
42
  },
38
43
  onClick: (e) => {
39
44
  props.onClick?.(e);
40
- router.handleClickEvent(e, props.href ?? undefined, props.preferBack);
45
+ router.handleClickEvent(e, props.href ?? undefined, props.preferBack, undefined, props.linkData);
41
46
  },
42
47
  };
48
+ delete finalProps.preferBack;
49
+ delete finalProps.linkData;
50
+ return finalProps;
43
51
  }
44
- export const Link = forwardRef(({ preferBack, as, ...props }, ref) => {
52
+ export const Link = forwardRef(({ as, ...props }, ref) => {
45
53
  const Comp = as || "a";
46
54
  const finalProps = useLinkProps(props, ref);
47
55
  return createElement(Comp, finalProps);
@@ -56,7 +64,7 @@ Link.displayName = "Link";
56
64
  export function useLinkState(href) {
57
65
  const route = useRoute();
58
66
  const pendingRoute = useRouterState((r) => r.pendingRoute);
59
- const isSSR = useIsSSR();
67
+ const isSSR = useHydrating();
60
68
  const state = useMemo(() => {
61
69
  // If we're in SSR mode, do a quick and dirty check, which relies on the href being relative.
62
70
  if (isSSR) {
@@ -5,5 +5,11 @@
5
5
  *
6
6
  * On the client, this hook will return `true` once, after hydration, and then switch to `false`.
7
7
  */
8
+ export declare function useHydrating(): boolean;
9
+ /**
10
+ * Alias of useHydrating (was renamed)
11
+ * @deprecated
12
+ * @see useHydrating
13
+ */
8
14
  export declare function useIsSSR(): boolean;
9
- //# sourceMappingURL=useIsSSR.d.ts.map
15
+ //# sourceMappingURL=useHydrating.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHydrating.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/hooks/useHydrating.tsx"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAgB,YAAY,YAa3B;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,YAEvB"}
@@ -7,7 +7,7 @@ let isSSR = true;
7
7
  *
8
8
  * On the client, this hook will return `true` once, after hydration, and then switch to `false`.
9
9
  */
10
- export function useIsSSR() {
10
+ export function useHydrating() {
11
11
  const [value, setValue] = useState(isSSR);
12
12
  useEffect(() => {
13
13
  if (!isSSR)
@@ -20,3 +20,11 @@ export function useIsSSR() {
20
20
  }, []);
21
21
  return value;
22
22
  }
23
+ /**
24
+ * Alias of useHydrating (was renamed)
25
+ * @deprecated
26
+ * @see useHydrating
27
+ */
28
+ export function useIsSSR() {
29
+ return useHydrating();
30
+ }
@@ -11,7 +11,7 @@ export * from "./hooks/useRouter.js";
11
11
  export * from "./hooks/useRouterEvents.js";
12
12
  export * from "./hooks/useRouterState.js";
13
13
  export * from "./hooks/useRestorableState.js";
14
- export * from "./hooks/useIsSSR.js";
14
+ export * from "./hooks/useHydrating.js";
15
15
  export * from "./hooks/useSearchParams.js";
16
16
  export { getLinkHandlerMode, isSameOrigin } from "./utils.js";
17
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/routing/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAE1B,cAAc,sBAAsB,CAAA;AACpC,cAAc,mCAAmC,CAAA;AACjD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mCAAmC,CAAA;AAEjD,cAAc,qBAAqB,CAAA;AACnC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/routing/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAE1B,cAAc,sBAAsB,CAAA;AACpC,cAAc,mCAAmC,CAAA;AACjD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mCAAmC,CAAA;AAEjD,cAAc,qBAAqB,CAAA;AACnC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA"}
@@ -11,6 +11,6 @@ export * from "./hooks/useRouter.js";
11
11
  export * from "./hooks/useRouterEvents.js";
12
12
  export * from "./hooks/useRouterState.js";
13
13
  export * from "./hooks/useRestorableState.js";
14
- export * from "./hooks/useIsSSR.js";
14
+ export * from "./hooks/useHydrating.js";
15
15
  export * from "./hooks/useSearchParams.js";
16
16
  export { getLinkHandlerMode, isSameOrigin } from "./utils.js";
@@ -39,6 +39,7 @@ export type RouteLink = {
39
39
  export type RouterEvent = ({
40
40
  type: "clicked";
41
41
  link: RouteLink;
42
+ linkData: LinkClickData | undefined;
42
43
  currentRoute: RouteState;
43
44
  target?: HTMLElement;
44
45
  cancel: () => void;
@@ -48,6 +49,7 @@ export type RouterEvent = ({
48
49
  } | {
49
50
  type: "navigate:start";
50
51
  link: RouteLink;
52
+ linkData: LinkClickData | undefined;
51
53
  currentRoute: RouteState;
52
54
  hasPreloadedData: boolean;
53
55
  goingBack?: boolean;
@@ -55,16 +57,19 @@ export type RouterEvent = ({
55
57
  } | {
56
58
  type: "navigate:data-ready";
57
59
  link: RouteLink;
60
+ linkData: LinkClickData | undefined;
58
61
  currentRoute: RouteState;
59
62
  loadedRoute: RouteState;
60
63
  } | {
61
64
  type: "navigate:will-change";
62
65
  link: RouteLink;
66
+ linkData: LinkClickData | undefined;
63
67
  currentRoute: RouteState;
64
68
  loadedRoute: RouteState;
65
69
  } | {
66
70
  type: "navigate:changed";
67
71
  link: RouteLink;
72
+ linkData: LinkClickData | undefined;
68
73
  lastRoute: RouteState;
69
74
  currentRoute: RouteState;
70
75
  } | {
@@ -84,6 +89,7 @@ export type RouterEvent = ({
84
89
  } | {
85
90
  type: "error";
86
91
  critical: boolean;
92
+ linkData: LinkClickData | undefined;
87
93
  url?: string;
88
94
  shouldReload?: boolean;
89
95
  error: Error;
@@ -110,7 +116,9 @@ export type RouterAPI = {
110
116
  /** Prefetch the data for a page, but not it's components. */
111
117
  prefetch: (url: string) => Promise<void>;
112
118
  /** Begin transitioning to a new page */
113
- navigate: (url: string, returnState?: RouteReturnState) => Promise<void>;
119
+ navigate: (url: string, args?: {
120
+ linkData?: LinkClickData;
121
+ }) => Promise<void>;
114
122
  /** Replace the browser search params value with the given data, without transitioning the route */
115
123
  replaceQuery: (search: Record<string, string | string[]>) => void;
116
124
  /** Replace the hash */
@@ -122,7 +130,7 @@ export type RouterAPI = {
122
130
  * @param href An optional URL. This must be provided if no `href` property exists on the clicked element
123
131
  * @param preferBack If set, clicking this link will send the user 'back', when clicking a link to the previous history item.
124
132
  */
125
- handleClickEvent(e: PointerOrMouseEvent, href?: string, preferBack?: boolean | "exact", element?: HTMLElement): void;
133
+ handleClickEvent(e: PointerOrMouseEvent, href?: string, preferBack?: boolean | "exact", element?: HTMLElement, linkData?: LinkClickData): void;
126
134
  /** A reference to the route loader (mostly for internal use) */
127
135
  loader: RouteLoader;
128
136
  /** Subscribe to events */
@@ -161,7 +169,10 @@ export type TypedRouteState<T, TProps> = {
161
169
  props: TProps;
162
170
  /** Loaded metadata for this route */
163
171
  meta: RouteMeta;
172
+ /** Link data, provided using `<Link linkData={...} />`. Will be `undefined` if none was provided. */
173
+ linkData?: LinkClickData;
164
174
  };
175
+ export type LinkClickData = Record<string, any>;
165
176
  export type RouteMeta = {
166
177
  title?: string;
167
178
  tags?: RouteMetaTag[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/routing/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/routing/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"render-ai-page.d.ts","sourceRoot":"","sources":["../../../src/app/server/render-ai-page.tsx"],"names":[],"mappings":"AAmGA,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CA0CpF"}
1
+ {"version":3,"file":"render-ai-page.d.ts","sourceRoot":"","sources":["../../../src/app/server/render-ai-page.tsx"],"names":[],"mappings":"AAmGA,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CA4CpF"}
@@ -65,7 +65,9 @@ export async function renderPageForIndexing(args) {
65
65
  const serverContext = ServerContext.main;
66
66
  let responseInit = {};
67
67
  const [{ appData }, response] = await Promise.all([
68
- serverContext.fetchAppData({}),
68
+ serverContext.fetchAppData({
69
+ newOrigin: args.newOrigin,
70
+ }),
69
71
  serverContext.fetchRouteData({
70
72
  pathname: args.pathname,
71
73
  newOrigin: args.newOrigin,
@@ -108,7 +108,7 @@ export async function renderPage(args) {
108
108
  };
109
109
  try {
110
110
  const [{ appData, trackers }, response] = await Promise.all([
111
- serverContext.fetchAppData({ bypass: args.bypass }),
111
+ serverContext.fetchAppData({ bypass: args.bypass, newOrigin: args.newOrigin }),
112
112
  serverContext.fetchRouteData({
113
113
  pathname: args.pathname,
114
114
  newOrigin: args.newOrigin,
@@ -48,6 +48,7 @@ export declare class ServerContext {
48
48
  }): Promise<Response>;
49
49
  fetchAppData(args: {
50
50
  bypass?: boolean;
51
+ newOrigin?: string;
51
52
  }): Promise<ServerAppData>;
52
53
  extractRequestHeaders(req?: RequestHeaders): Partial<Record<import("vinxi/http").HTTPHeaderName, string | undefined>>;
53
54
  fetchNamedQuery(req: {
@@ -1 +1 @@
1
- {"version":3,"file":"server-context.d.ts","sourceRoot":"","sources":["../../../src/app/server/server-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,cAAc,EAAoC,MAAM,YAAY,CAAA;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE3E,OAAO,EAAiC,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEpF,OAAO,EAAqB,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAKxD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,OAAO,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,MAAM,EAAE,QAAQ,CAAA;IAChB,WAAW,EAAE,aAAa,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAA;CACxC,CAAA;AAkBD;;GAEG;AACH,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,GAAG,CAAA;IACZ,QAAQ,EAAE,WAAW,CAAA;CACtB,CAAA;AAED,qBAAa,aAAa;IACxB,GAAG,EAAE,OAAO,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IACxD,QAAQ,EAAE,MAAM,EAAE,CAAK;IACvB,MAAM,EAAE,QAAQ,CAAA;IAChB,WAAW,EAAE,aAAa,CAAA;IAE1B,MAAM,CAAC,IAAI,EAAE,aAAa,CAAA;gBAEd,IAAI,EAAE,iBAAiB;IAYnC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAOzC,IAAI,OAAO,yBAEV;IAED,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,oBAAoB;IAI1C,YAAY,CAAC,GAAG,EAAE,MAAM;IAQlB,WAAW,CACf,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,WAAW,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACjE,OAAO,CAAC,QAAQ,CAAC;IAgCpB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE;IAmFvG,cAAc,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,cAAc,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IA8GxG,YAAY,CAAC,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAgCtE,qBAAqB,CAAC,GAAG,CAAC,EAAE,cAAc;IAYpC,eAAe,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,cAAc,CAAA;KAAE;IA6D/F,aAAa,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,cAAc,CAAA;KAAE;IAehF,IAAI,kBAAkB,aAcrB;IAED,YAAY,CAAC,KAAK,EAAE,OAAO;IAc3B,aAAa,CAAC,YAAY,EAAE,MAAM;IAUlC,cAAc,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;CAiD9B"}
1
+ {"version":3,"file":"server-context.d.ts","sourceRoot":"","sources":["../../../src/app/server/server-context.ts"],"names":[],"mappings":"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"}
@@ -261,6 +261,9 @@ export class ServerContext {
261
261
  };
262
262
  },
263
263
  });
264
+ if (this.cacheConfig.serverless.isr) {
265
+ result.headers.delete("cache-control");
266
+ }
264
267
  return new Response(result.data, {
265
268
  status: result.status,
266
269
  headers: result.headers,
@@ -269,11 +272,13 @@ export class ServerContext {
269
272
  async fetchAppData(args) {
270
273
  const data = await swr({
271
274
  key: "fetchAppData",
272
- cache: pageCache || args.bypass,
275
+ cache: pageCache,
276
+ forceFresh: this.dev || args.bypass,
273
277
  getFreshValue: async (ctx) => {
274
278
  const response = await this.fetchOrigin("/_appdata", {
275
279
  cache: "no-cache",
276
280
  replaceUrls: true,
281
+ newOrigin: args.newOrigin,
277
282
  headers: {
278
283
  "Content-Type": "application/json",
279
284
  Accept: "application/json",
@@ -290,7 +295,6 @@ export class ServerContext {
290
295
  result.__generated = new Date().toISOString();
291
296
  return result;
292
297
  },
293
- forceFresh: this.dev,
294
298
  });
295
299
  return data;
296
300
  }
@@ -351,6 +355,9 @@ export class ServerContext {
351
355
  return result;
352
356
  },
353
357
  });
358
+ if (this.cacheConfig.serverless.isr) {
359
+ result.headers.delete("cache-control");
360
+ }
354
361
  return new Response(result.data, {
355
362
  status: result.status,
356
363
  headers: result.headers,
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "2.0.0-beta.227";
1
+ export declare const VERSION = "2.0.0-beta.230";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- export const VERSION = "2.0.0-beta.227";
1
+ export const VERSION = "2.0.0-beta.230";
@@ -1 +1 @@
1
- {"version":3,"file":"vinxi-app.d.ts","sourceRoot":"","sources":["../../../src/node/compiler/vinxi-app.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAGtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAI/C,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAA;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,MAAM,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAA;AAC7D,KAAK,mBAAmB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,CAAA;AACrD,KAAK,iBAAiB,GAAG,MAAM,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;AAEhE,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAC1C,CAAA;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,uBAuO3C"}
1
+ {"version":3,"file":"vinxi-app.d.ts","sourceRoot":"","sources":["../../../src/node/compiler/vinxi-app.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAGtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAI/C,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAA;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,MAAM,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAA;AAC7D,KAAK,mBAAmB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,CAAA;AACrD,KAAK,iBAAiB,GAAG,MAAM,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;AAEhE,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAC1C,CAAA;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,uBA2O3C"}
@@ -75,8 +75,12 @@ export function createVinxiApp(args) {
75
75
  },
76
76
  },
77
77
  "/_data/query/**": {
78
- isr: false,
79
- swr: false,
78
+ isr: {
79
+ expiration: cacheConfig.queryHooksTTL ?? 0,
80
+ allowQuery: ["params"],
81
+ group: 1,
82
+ passQuery: true,
83
+ },
80
84
  cache: {
81
85
  varies: ["Authorization", "woocommerce-session"],
82
86
  },
@@ -305,7 +305,7 @@ export function createVinxiCodegen(opts) {
305
305
  throw new Error("Invalid query parameters")
306
306
  }
307
307
 
308
- return await serverContext.fetchNamedQuery({ name: id, params: params, headers: getRequestHeaders(event), bypass: serverContext.shouldBypass(event) })
308
+ return await serverContext.fetchNamedQuery({ name: id, newOrigin: url.origin, params: params, headers: getRequestHeaders(event), bypass: serverContext.shouldBypass(event) })
309
309
  }),
310
310
  )
311
311
  .get(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eddev",
3
- "version": "2.0.0-beta.229",
3
+ "version": "2.0.0-beta.230",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIsSSR.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/hooks/useIsSSR.tsx"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAgB,QAAQ,YAavB"}