@real-router/solid 0.8.0 → 0.9.0

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.
@@ -90,7 +90,9 @@ declare const useNavigator: () => Navigator;
90
90
 
91
91
  declare const useRouteUtils: () => RouteUtils;
92
92
 
93
- declare const useRoute: <P extends Params = Params>() => Accessor<RouteState<P>>;
93
+ declare const useRoute: <P extends Params = Params>() => Accessor<Omit<RouteState<P>, "route"> & {
94
+ route: State<P>;
95
+ }>;
94
96
 
95
97
  declare function useRouteNode(nodeName: string): Accessor<RouteState>;
96
98
 
package/dist/cjs/index.js CHANGED
@@ -802,6 +802,9 @@ const useRoute = () => {
802
802
  if (!routeSignal) {
803
803
  throw new Error("useRoute must be used within a RouterProvider");
804
804
  }
805
+ if (!routeSignal().route) {
806
+ throw new Error("useRoute called with no active route. Did you forget to await router.start() before rendering, or is the router stopped/disposed?");
807
+ }
805
808
  return routeSignal;
806
809
  };
807
810
 
@@ -994,9 +997,6 @@ function useRouteEnter(handler, options) {
994
997
 
995
998
  // Early-exit guards, top-down:
996
999
  //
997
- // - **Defensive**: `route` may be undefined during SSR or
998
- // pre-start hydration. Not testable from vitest (tests start
999
- // the router before render), so v8-ignored.
1000
1000
  // - **Skip-initial**: `state.transition.from` is undefined only
1001
1001
  // for the very first state committed by `router.start()`.
1002
1002
  // - **Skip-same-route**: query-only navigations have
@@ -1007,11 +1007,6 @@ function useRouteEnter(handler, options) {
1007
1007
  // run once per dependency change); `!previousRoute` is unreachable
1008
1008
  // once `transition.from` is set (the two are populated together by
1009
1009
  // core). Both kept for parity with React; v8-ignored.
1010
- /* v8 ignore start */
1011
- if (!route) {
1012
- return;
1013
- }
1014
- /* v8 ignore stop */
1015
1010
  if (!route.transition.from) {
1016
1011
  return;
1017
1012
  }
@@ -90,7 +90,9 @@ declare const useNavigator: () => Navigator;
90
90
 
91
91
  declare const useRouteUtils: () => RouteUtils;
92
92
 
93
- declare const useRoute: <P extends Params = Params>() => Accessor<RouteState<P>>;
93
+ declare const useRoute: <P extends Params = Params>() => Accessor<Omit<RouteState<P>, "route"> & {
94
+ route: State<P>;
95
+ }>;
94
96
 
95
97
  declare function useRouteNode(nodeName: string): Accessor<RouteState>;
96
98
 
@@ -800,6 +800,9 @@ const useRoute = () => {
800
800
  if (!routeSignal) {
801
801
  throw new Error("useRoute must be used within a RouterProvider");
802
802
  }
803
+ if (!routeSignal().route) {
804
+ throw new Error("useRoute called with no active route. Did you forget to await router.start() before rendering, or is the router stopped/disposed?");
805
+ }
803
806
  return routeSignal;
804
807
  };
805
808
 
@@ -992,9 +995,6 @@ function useRouteEnter(handler, options) {
992
995
 
993
996
  // Early-exit guards, top-down:
994
997
  //
995
- // - **Defensive**: `route` may be undefined during SSR or
996
- // pre-start hydration. Not testable from vitest (tests start
997
- // the router before render), so v8-ignored.
998
998
  // - **Skip-initial**: `state.transition.from` is undefined only
999
999
  // for the very first state committed by `router.start()`.
1000
1000
  // - **Skip-same-route**: query-only navigations have
@@ -1005,11 +1005,6 @@ function useRouteEnter(handler, options) {
1005
1005
  // run once per dependency change); `!previousRoute` is unreachable
1006
1006
  // once `transition.from` is set (the two are populated together by
1007
1007
  // core). Both kept for parity with React; v8-ignored.
1008
- /* v8 ignore start */
1009
- if (!route) {
1010
- return;
1011
- }
1012
- /* v8 ignore stop */
1013
1008
  if (!route.transition.from) {
1014
1009
  return;
1015
1010
  }
@@ -1,5 +1,7 @@
1
1
  import type { RouteState } from "../types";
2
- import type { Params } from "@real-router/core";
2
+ import type { Params, State } from "@real-router/core";
3
3
  import type { Accessor } from "solid-js";
4
- export declare const useRoute: <P extends Params = Params>() => Accessor<RouteState<P>>;
4
+ export declare const useRoute: <P extends Params = Params>() => Accessor<Omit<RouteState<P>, "route"> & {
5
+ route: State<P>;
6
+ }>;
5
7
  //# sourceMappingURL=useRoute.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRoute.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRoute.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,OAAK,QAAQ,CAC7D,UAAU,CAAC,CAAC,CAAC,CASd,CAAC"}
1
+ {"version":3,"file":"useRoute.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRoute.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,OAAK,QAAQ,CAC7D,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;CAAE,CAiBnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useRouteEnter.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRouteEnter.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,KAAK,EAAE,KAAK,CAAC;IACb,oEAAoE;IACpE,aAAa,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAErE,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,IAAI,CA2CN"}
1
+ {"version":3,"file":"useRouteEnter.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRouteEnter.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,KAAK,EAAE,KAAK,CAAC;IACb,oEAAoE;IACpE,aAAa,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAErE,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,IAAI,CAmCN"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@real-router/solid",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "type": "commonjs",
5
5
  "description": "Solid.js integration for Real-Router",
6
6
  "main": "./dist/cjs/index.js",
@@ -66,7 +66,7 @@
66
66
  "@testing-library/user-event": "14.6.1",
67
67
  "babel-preset-solid": "1.9.3",
68
68
  "rimraf": "6.1.3",
69
- "rollup": "4.60.1",
69
+ "rollup": "4.60.2",
70
70
  "rollup-plugin-dts": "6.4.1",
71
71
  "solid-js": "1.9.12",
72
72
  "vite-plugin-solid": "2.11.11",
@@ -3,11 +3,11 @@ import { useContext } from "solid-js";
3
3
  import { RouteContext } from "../context";
4
4
 
5
5
  import type { RouteState } from "../types";
6
- import type { Params } from "@real-router/core";
6
+ import type { Params, State } from "@real-router/core";
7
7
  import type { Accessor } from "solid-js";
8
8
 
9
9
  export const useRoute = <P extends Params = Params>(): Accessor<
10
- RouteState<P>
10
+ Omit<RouteState<P>, "route"> & { route: State<P> }
11
11
  > => {
12
12
  const routeSignal = useContext(RouteContext);
13
13
 
@@ -15,5 +15,13 @@ export const useRoute = <P extends Params = Params>(): Accessor<
15
15
  throw new Error("useRoute must be used within a RouterProvider");
16
16
  }
17
17
 
18
- return routeSignal as Accessor<RouteState<P>>;
18
+ if (!routeSignal().route) {
19
+ throw new Error(
20
+ "useRoute called with no active route. Did you forget to await router.start() before rendering, or is the router stopped/disposed?",
21
+ );
22
+ }
23
+
24
+ return routeSignal as Accessor<
25
+ Omit<RouteState<P>, "route"> & { route: State<P> }
26
+ >;
19
27
  };
@@ -93,9 +93,6 @@ export function useRouteEnter(
93
93
 
94
94
  // Early-exit guards, top-down:
95
95
  //
96
- // - **Defensive**: `route` may be undefined during SSR or
97
- // pre-start hydration. Not testable from vitest (tests start
98
- // the router before render), so v8-ignored.
99
96
  // - **Skip-initial**: `state.transition.from` is undefined only
100
97
  // for the very first state committed by `router.start()`.
101
98
  // - **Skip-same-route**: query-only navigations have
@@ -106,11 +103,6 @@ export function useRouteEnter(
106
103
  // run once per dependency change); `!previousRoute` is unreachable
107
104
  // once `transition.from` is set (the two are populated together by
108
105
  // core). Both kept for parity with React; v8-ignored.
109
- /* v8 ignore start */
110
- if (!route) {
111
- return;
112
- }
113
- /* v8 ignore stop */
114
106
  if (!route.transition.from) {
115
107
  return;
116
108
  }