import React from "react";
import { Fragment } from "react";
import { BrowserRouter, Route, Routes, useLocation } from "react-router-dom";

const ROUTESLIST = import.meta.globEager("@pages/**/[a-z4[]*.jsx");

const router = Object.keys(ROUTESLIST).map((route) => {
  const path = route
    .replace("../pages", "")
    .replace(/\/src\/pages|index|\.jsx$/g, "")
    .replace(/\[\.{3}.+\]/, "*")
    .replace(/\[(.+)\]/, ":$1");

  return { path, component: ROUTESLIST[route].default, plain: route };
});

export { useLocation };

export default function App({ App = Fragment }) {
  let NotFound = router.find((d) => d.path.includes("404")).component;

  return (
    <BrowserRouter>
      <App>
        <Routes>
          {router.map((d, ix) => (
            <Route key={ix} path={d.path} element={<d.component />} />
          ))}

          <Route path="*" element={<NotFound />} />
        </Routes>
      </App>
    </BrowserRouter>
  );
}
