This commit was merged in pull request #132.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import type { FC } from "react";
|
import type { ComponentType, FC } from "react";
|
||||||
|
|
||||||
import { lazy } from "react";
|
import { lazy } from "react";
|
||||||
import { Navigate, Route, Routes } from "react-router";
|
import { Navigate, Route, Routes } from "react-router";
|
||||||
@@ -6,101 +6,35 @@ import { Navigate, Route, Routes } from "react-router";
|
|||||||
import { LazyPage } from "../RouteFallback";
|
import { LazyPage } from "../RouteFallback";
|
||||||
import { Protected, Public } from "../RouteGuards";
|
import { Protected, Public } from "../RouteGuards";
|
||||||
|
|
||||||
const CardPage = lazy(async () => {
|
// Pages use named exports; React.lazy needs a default export per dynamic import (one chunk each).
|
||||||
const { CardPage } = await import("@/pages/card");
|
function lazyPage<Name extends string>(
|
||||||
|
load: () => Promise<Record<Name, ComponentType>>,
|
||||||
|
name: Name,
|
||||||
|
) {
|
||||||
|
return lazy(async () => {
|
||||||
|
const page = await load();
|
||||||
|
|
||||||
return { default: CardPage };
|
// eslint-disable-next-line security/detect-object-injection -- `name` is a compile-time literal checked against the module's exports.
|
||||||
|
return { default: page[name] };
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const CardsPage = lazy(async () => {
|
const CardPage = lazyPage(async () => import("@/pages/card"), "CardPage");
|
||||||
const { CardsPage } = await import("@/pages/cards");
|
const CardsPage = lazyPage(async () => import("@/pages/cards"), "CardsPage");
|
||||||
|
const BondPage = lazyPage(async () => import("@/pages/bond"), "BondPage");
|
||||||
return { default: CardsPage };
|
const BondsPage = lazyPage(async () => import("@/pages/bonds"), "BondsPage");
|
||||||
});
|
const StockPage = lazyPage(async () => import("@/pages/stock"), "StockPage");
|
||||||
|
const StocksPage = lazyPage(async () => import("@/pages/stocks"), "StocksPage");
|
||||||
const BondPage = lazy(async () => {
|
const AccountPage = lazyPage(async () => import("@/pages/account"), "AccountPage");
|
||||||
const { BondPage } = await import("@/pages/bond");
|
const AccountEventsPage = lazyPage(async () => import("@/pages/account-events"), "AccountEventsPage");
|
||||||
|
const AccountOperationsPage = lazyPage(async () => import("@/pages/account-operations"), "AccountOperationsPage");
|
||||||
return { default: BondPage };
|
const AccountIncomePage = lazyPage(async () => import("@/pages/account-income"), "AccountIncomePage");
|
||||||
});
|
const AccountsPage = lazyPage(async () => import("@/pages/accounts"), "AccountsPage");
|
||||||
|
const LoginPage = lazyPage(async () => import("@/pages/login"), "LoginPage");
|
||||||
const BondsPage = lazy(async () => {
|
const NotFoundPage = lazyPage(async () => import("@/pages/not-found"), "NotFoundPage");
|
||||||
const { BondsPage } = await import("@/pages/bonds");
|
const RegisterPage = lazyPage(async () => import("@/pages/register"), "RegisterPage");
|
||||||
|
const SettingsPage = lazyPage(async () => import("@/pages/settings"), "SettingsPage");
|
||||||
return { default: BondsPage };
|
const ProtectedLayout = lazyPage(async () => import("../ProtectedLayout"), "ProtectedLayout");
|
||||||
});
|
|
||||||
|
|
||||||
const StockPage = lazy(async () => {
|
|
||||||
const { StockPage } = await import("@/pages/stock");
|
|
||||||
|
|
||||||
return { default: StockPage };
|
|
||||||
});
|
|
||||||
|
|
||||||
const StocksPage = lazy(async () => {
|
|
||||||
const { StocksPage } = await import("@/pages/stocks");
|
|
||||||
|
|
||||||
return { default: StocksPage };
|
|
||||||
});
|
|
||||||
|
|
||||||
const AccountPage = lazy(async () => {
|
|
||||||
const { AccountPage } = await import("@/pages/account");
|
|
||||||
|
|
||||||
return { default: AccountPage };
|
|
||||||
});
|
|
||||||
|
|
||||||
const AccountEventsPage = lazy(async () => {
|
|
||||||
const { AccountEventsPage } = await import("@/pages/account-events");
|
|
||||||
|
|
||||||
return { default: AccountEventsPage };
|
|
||||||
});
|
|
||||||
|
|
||||||
const AccountOperationsPage = lazy(async () => {
|
|
||||||
const { AccountOperationsPage } = await import("@/pages/account-operations");
|
|
||||||
|
|
||||||
return { default: AccountOperationsPage };
|
|
||||||
});
|
|
||||||
|
|
||||||
const AccountIncomePage = lazy(async () => {
|
|
||||||
const { AccountIncomePage } = await import("@/pages/account-income");
|
|
||||||
|
|
||||||
return { default: AccountIncomePage };
|
|
||||||
});
|
|
||||||
|
|
||||||
const AccountsPage = lazy(async () => {
|
|
||||||
const { AccountsPage } = await import("@/pages/accounts");
|
|
||||||
|
|
||||||
return { default: AccountsPage };
|
|
||||||
});
|
|
||||||
|
|
||||||
const LoginPage = lazy(async () => {
|
|
||||||
const { LoginPage } = await import("@/pages/login");
|
|
||||||
|
|
||||||
return { default: LoginPage };
|
|
||||||
});
|
|
||||||
|
|
||||||
const NotFoundPage = lazy(async () => {
|
|
||||||
const { NotFoundPage } = await import("@/pages/not-found");
|
|
||||||
|
|
||||||
return { default: NotFoundPage };
|
|
||||||
});
|
|
||||||
|
|
||||||
const RegisterPage = lazy(async () => {
|
|
||||||
const { RegisterPage } = await import("@/pages/register");
|
|
||||||
|
|
||||||
return { default: RegisterPage };
|
|
||||||
});
|
|
||||||
|
|
||||||
const SettingsPage = lazy(async () => {
|
|
||||||
const { SettingsPage } = await import("@/pages/settings");
|
|
||||||
|
|
||||||
return { default: SettingsPage };
|
|
||||||
});
|
|
||||||
|
|
||||||
const ProtectedLayout = lazy(async () => {
|
|
||||||
const { ProtectedLayout } = await import("../ProtectedLayout");
|
|
||||||
|
|
||||||
return { default: ProtectedLayout };
|
|
||||||
});
|
|
||||||
|
|
||||||
const AppRoutes: FC = () => (
|
const AppRoutes: FC = () => (
|
||||||
<Routes>
|
<Routes>
|
||||||
|
|||||||
Reference in New Issue
Block a user