router-kit 0.2.0 → 0.2.2

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.
@@ -7,19 +7,27 @@ const RouterProvider = ({ routes }) => {
7
7
  const [path, setPath] = useState(window.location.pathname);
8
8
  let fullPathWithParams = "";
9
9
  const pathValidation = (routeFullPath, currentPath) => {
10
- const routeParts = routeFullPath.split("/").filter(Boolean);
11
- const pathParts = currentPath.split("/").filter(Boolean);
12
- if (routeParts.length !== pathParts.length)
13
- return false;
14
- for (let i = 0; i < routeParts.length; i++) {
15
- const r = routeParts[i];
16
- const p = pathParts[i];
17
- if (r.startsWith(":"))
10
+ const routePaths = routeFullPath.split("|");
11
+ for (const routePath of routePaths) {
12
+ const routeParts = routePath.split("/").filter(Boolean);
13
+ const pathParts = currentPath.split("/").filter(Boolean);
14
+ if (routeParts.length !== pathParts.length)
18
15
  continue;
19
- if (r !== p)
20
- return false;
16
+ let isMatch = true;
17
+ for (let i = 0; i < routeParts.length; i++) {
18
+ const r = routeParts[i];
19
+ const p = pathParts[i];
20
+ if (r.startsWith(":"))
21
+ continue;
22
+ if (r !== p) {
23
+ isMatch = false;
24
+ break;
25
+ }
26
+ }
27
+ if (isMatch)
28
+ return true;
21
29
  }
22
- return true;
30
+ return false;
23
31
  };
24
32
  const getComponent = (routesList, currentPath, parentPath = "/") => {
25
33
  for (const route of routesList) {
@@ -1,9 +1,9 @@
1
1
  function normalizeRoutes(inputRoutes) {
2
2
  return inputRoutes.map((route) => {
3
- var _a, _b;
4
- const normalizedPath = ((_a = route.path) === null || _a === void 0 ? void 0 : _a.startsWith("/"))
5
- ? route.path.replace(/^\/+/, "")
6
- : (_b = route.path) !== null && _b !== void 0 ? _b : "";
3
+ const pathArray = Array.isArray(route.path) ? route.path : [route.path];
4
+ const normalizedPath = pathArray
5
+ .map((path) => (path === null || path === void 0 ? void 0 : path.startsWith("/")) ? path.replace(/^\/+/, "") : path !== null && path !== void 0 ? path : "")
6
+ .join("|");
7
7
  const normalized = {
8
8
  ...route,
9
9
  path: normalizedPath,
@@ -1,8 +1,40 @@
1
+ /*
2
+ Router-Kit — Common hooks and components (reference)
3
+
4
+ Hooks:
5
+ - useRouter : access router context and helpers
6
+ - useLocation : current location (pathname, search, hash)
7
+ - useNavigate : imperative navigation function
8
+ - useParams : route params for the current route
9
+ - useSearchParams : read/update URL query params
10
+ - useRouteMatch : match the current location against a pattern
11
+ - useBlocker/usePrompt : block navigation with a confirmation
12
+
13
+ Components / APIs:
14
+ - createRouter : factory to create a router instance and Provider
15
+ - RouterProvider : provider component returned by createRouter()
16
+ - Routes : route collection wrapper
17
+ - Route : single route declaration
18
+ - Link : declarative link component
19
+ - NavLink : link with active styling
20
+ - Outlet : render child route content
21
+ - Redirect : declarative redirect helper (if provided)
22
+
23
+ Note: Exact names may vary between versions — update this list to match your installed Router-Kit exports.
24
+ */
1
25
  import { useContext } from "react";
2
26
  import RouterContext from "../context/RouterContext";
3
27
  export function useRouter() {
4
28
  const ctx = useContext(RouterContext);
5
- if (!ctx)
6
- throw new Error("useRouter must be used within a RouterProvider");
29
+ if (!ctx) {
30
+ const message = "Common hooks and components must be used within the RouterProvider returned by createRouter(). Wrap your app with the RouterProvider.";
31
+ if (typeof window !== "undefined" && window.console && console.error) {
32
+ console.error("%cRouterKit%c " + message, "color: #fff; background: #d9534f; font-weight: 700; padding: 2px 6px; border-radius: 3px;", "color: #d9534f;");
33
+ }
34
+ else {
35
+ console.error("RouterKit: " + message);
36
+ }
37
+ throw new Error("RouterKit: " + message);
38
+ }
7
39
  return ctx;
8
40
  }
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "email": "mohammed.bencheikh.dev@gmail.com",
6
6
  "url": "https://mohammedbencheikh.com/"
7
7
  },
8
- "version": "0.2.0",
8
+ "version": "0.2.2",
9
9
  "description": "A small React routing provider library",
10
10
  "main": "dist/index.js",
11
11
  "types": "dist/index.d.ts",