UNPKG

@generouted/solid-router

Version:

Generated file-based routes for Solid Router and Vite

102 lines (100 loc) 3.04 kB
import { generateModalRoutes, generatePreservedRoutes, generateRegularRoutes } from "./chunk-UKDIJ4XC.js"; // ../generouted/src/solid-router.tsx import { createComponent as _$createComponent } from "solid-js/web"; import { createMemo, ErrorBoundary, Show, Suspense } from "solid-js"; import { Router, useLocation } from "@solidjs/router"; var PRESERVED = import.meta.glob("/src/pages/{_app,404}.{jsx,tsx}", { eager: true }); var MODALS = import.meta.glob("/src/pages/**/[+]*.{jsx,tsx}", { eager: true }); var ROUTES = import.meta.glob(["/src/pages/**/[A-Za-z0-9[-]*.{jsx,tsx,mdx}", "/src/pages/**/_layout.{jsx,tsx,mdx}", "!/src/pages/404.{jsx,tsx,mdx}", "!/src/pages/**/_*/**"], { eager: true }); var preservedRoutes = generatePreservedRoutes(PRESERVED); var modalRoutes = generateModalRoutes(MODALS); var regularRoutes = generateRegularRoutes(ROUTES, (mod) => { const Default2 = mod?.default || Fragment; const Page = (props) => mod?.Pending ? _$createComponent(Suspense, { get fallback() { return _$createComponent(mod.Pending, {}); }, get children() { return _$createComponent(Default2, props); } }) : _$createComponent(Default2, props); const Component = (props) => mod?.Catch ? _$createComponent(ErrorBoundary, { fallback: (error, reset) => mod.Catch?.({ error, reset }), get children() { return _$createComponent(Page, props); } }) : _$createComponent(Page, props); return { component: Component, load: mod?.Loader || void 0 }; }); var _app = preservedRoutes?.["_app"]; var _404 = preservedRoutes?.["404"]; var Fragment = (props) => props?.children; var Default = _app?.default || Fragment; var Pending = _app?.Pending || Fragment; var Catch = preservedRoutes?.["_app"]?.Catch; var Modals_ = () => createMemo(() => modalRoutes[useLocation().state?.modal || ""] || Fragment); var Layout = (props) => [_$createComponent(Default, props), " ", _$createComponent(Modals_, {})]; var App = (props) => _$createComponent(ErrorBoundary, { fallback: (error, reset) => Catch?.({ error, reset }), get children() { return _$createComponent(Show, { get when() { return _app?.Pending; }, get fallback() { return _$createComponent(Layout, props); }, get children() { return _$createComponent(Suspense, { get fallback() { return _$createComponent(Pending, {}); }, get children() { return _$createComponent(Layout, props); } }); } }); } }); var app = { path: "", component: _app?.default ? App : Layout, load: _app?.Loader || void 0 }; var fallback = { path: "*", component: _404?.default || Fragment }; var routes = [{ ...app, children: [...regularRoutes, fallback] }]; var Routes = () => _$createComponent(Router, { children: routes }); var Modals = () => (console.warn("[generouted] `<Modals />` will be removed in future releases"), null); export { Modals, Routes, routes };