@clusterenvision/ui-framework 1.0.1 → 1.0.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.
- package/dist/browser.cjs +10 -10
- package/dist/browser.js +4 -4
- package/dist/{chunk-T6T7QE4J.js → chunk-AA4GATSB.js} +3 -3
- package/dist/{chunk-T6T7QE4J.js.map → chunk-AA4GATSB.js.map} +1 -1
- package/dist/{chunk-V6JCOBGY.js → chunk-BXQFX2PS.js} +3 -3
- package/dist/{chunk-V6JCOBGY.js.map → chunk-BXQFX2PS.js.map} +1 -1
- package/dist/{chunk-CXTAUXLG.cjs → chunk-FLUSP6VF.cjs} +4 -4
- package/dist/{chunk-CXTAUXLG.cjs.map → chunk-FLUSP6VF.cjs.map} +1 -1
- package/dist/{chunk-Q3KH6HMU.js → chunk-LSWEXTKL.js} +9 -5
- package/dist/chunk-LSWEXTKL.js.map +1 -0
- package/dist/{chunk-PVZVFICK.cjs → chunk-NCXUQXAN.cjs} +9 -5
- package/dist/chunk-NCXUQXAN.cjs.map +1 -0
- package/dist/{chunk-6BYWFGQY.cjs → chunk-SZL56BNL.cjs} +4 -4
- package/dist/{chunk-6BYWFGQY.cjs.map → chunk-SZL56BNL.cjs.map} +1 -1
- package/dist/{chunk-CHLDE4JQ.js → chunk-VQDM5HCG.js} +3 -3
- package/dist/{chunk-CHLDE4JQ.js.map → chunk-VQDM5HCG.js.map} +1 -1
- package/dist/{chunk-W3LNNY3U.cjs → chunk-W5M7JGC4.cjs} +4 -4
- package/dist/{chunk-W3LNNY3U.cjs.map → chunk-W5M7JGC4.cjs.map} +1 -1
- package/dist/index.cjs +21 -21
- package/dist/index.js +5 -5
- package/dist/lib/index.cjs +15 -15
- package/dist/lib/index.cjs.map +1 -1
- package/dist/lib/index.d.cts +4 -4
- package/dist/lib/index.d.ts +4 -4
- package/dist/lib/index.js +3 -3
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/theme.cjs +13 -13
- package/dist/lib/theme.js +1 -1
- package/dist/runtime/adapters/react.cjs.map +1 -1
- package/dist/runtime/adapters/react.js.map +1 -1
- package/dist/runtime/components/ai-assistant.cjs +4 -4
- package/dist/runtime/components/ai-assistant.js +3 -3
- package/dist/runtime/components/ai-summary-card.cjs +4 -4
- package/dist/runtime/components/ai-summary-card.js +3 -3
- package/dist/runtime/router.cjs.map +1 -1
- package/dist/runtime/router.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-PVZVFICK.cjs.map +0 -1
- package/dist/chunk-Q3KH6HMU.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/router.ts"],"names":["flattenRoutes","signal","matchRoute","getRouteId","normalizePathname","options","captureRuntimeError","match","withRuntimeErrorBoundary","cacheRouteDataResult","clearRouteDataResult"],"mappings":"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","file":"router.cjs","sourcesContent":["import { captureRuntimeError, RuntimeErrorBoundary, RuntimeErrorInfo, withRuntimeErrorBoundary } from './errors.js';\nimport { signal, SignalAccessor } from './signals.js';\nimport { cacheRouteDataResult, clearRouteDataResult } from './route-data-registry.js';\nimport { flattenRoutes, getRouteId, matchRoute, normalizePathname } from './router-utils.js';\nimport type { FlattenedRouteNode } from './router-utils.js';\n\nexport type RouteComponentFactory = () => Promise<Record<string, unknown>> | Record<string, unknown>;\n\nexport interface RouteBoundaryConfig {\n id?: string;\n name?: string;\n componentName?: string;\n templateId?: string;\n attributes?: Record<string, unknown>;\n onError?: (error: Error, info: RuntimeErrorInfo) => boolean | undefined;\n}\n\nexport type RouteLayoutDefinition = RouteBoundaryConfig;\n\nexport interface RouteDefinition {\n id?: string;\n path: string;\n component: RouteComponentFactory;\n boundary?: RouteBoundaryConfig;\n layouts?: RouteLayoutDefinition[];\n loader?: RouteDataHandler;\n action?: RouteDataHandler;\n guards?: RouteGuard[];\n children?: RouteDefinition[];\n}\n\nexport interface RouteHandlerArgs {\n params: Record<string, string>;\n request?: Request;\n signal?: AbortSignal;\n context?: Record<string, unknown>;\n}\n\nexport type RouteDataHandler<T = unknown> = (args: RouteHandlerArgs) => T | Promise<T>;\n\nexport interface RouteHandlerResult<T = unknown> {\n data?: T;\n error?: Error;\n info?: RuntimeErrorInfo | null;\n handled: boolean;\n startedAt?: number;\n endedAt?: number;\n durationMs?: number;\n}\n\nexport interface RouteGuardContext {\n match: RouteMatch;\n params: Record<string, string>;\n}\n\nexport type RouteGuardResult =\n | { type: 'continue' }\n | { type: 'redirect'; to: string; options?: NavigateOptions }\n | { type: 'error'; error: Error; info?: RuntimeErrorInfo | null };\n\nexport type RouteGuard = (context: RouteGuardContext) => RouteGuardResult | undefined;\n\nexport interface RoutePrefetchOptions {\n loadData?: boolean;\n loaderArgs?: PartialRouteHandlerArgs;\n}\n\nconst CONTINUE_NAVIGATION: RouteGuardResult = { type: 'continue' } as const;\nconst MAX_GUARD_REDIRECTS = 8;\n\nexport function allowNavigation(): RouteGuardResult {\n return CONTINUE_NAVIGATION;\n}\n\nexport function redirectNavigation(to: string, options?: NavigateOptions): RouteGuardResult {\n return { type: 'redirect', to, options };\n}\n\nexport function errorNavigation(error: Error, info?: RuntimeErrorInfo | null): RouteGuardResult {\n return { type: 'error', error, info: info ?? null };\n}\n\nexport type RouterBoundaryKind = 'layout' | 'route';\n\nexport interface RouteBoundaryConfigResolved extends RouteBoundaryConfig {\n id: string;\n componentName: string;\n attributes: Record<string, unknown>;\n}\n\nexport interface RouterBoundaryState {\n id: string;\n kind: RouterBoundaryKind;\n definition: RouteBoundaryConfigResolved;\n boundary: RuntimeErrorBoundary;\n error: Error | null;\n info: RuntimeErrorInfo | null;\n reset(): void;\n}\n\nexport interface RouteMatch {\n route: RouteDefinition;\n params: Record<string, string>;\n fullPath: string;\n layouts: RouterBoundaryState[];\n boundary: RouterBoundaryState;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: unknown;\n}\n\nexport interface Router {\n currentPath: SignalAccessor<string>;\n currentMatch: SignalAccessor<RouteMatch | null>;\n navigate(path: string, options?: NavigateOptions): RouteMatch | null;\n match(path?: string): RouteMatch | null;\n start(): void;\n dispose(): void;\n}\n\nexport interface RouterOptions {\n routes: RouteDefinition[];\n notFoundRoute?: RouteDefinition;\n errorRoute?: RouteDefinition;\n}\n\nexport function createRouter(input: RouteDefinition[] | RouterOptions): Router {\n const options = normalizeRouterOptions(input);\n const flattened = flattenRoutes(options.routes);\n const notFoundRoute = normalizeFallbackRoute(options.notFoundRoute, 'not-found', '*');\n const errorRoute = normalizeFallbackRoute(options.errorRoute, 'error', '/__error');\n const initialPath = typeof window !== 'undefined' ? window.location.pathname : '/';\n const currentPath = signal(initialPath);\n const currentMatchSignal = signal<RouteMatch | null>(resolveMatch(initialPath));\n\n function resolveMatch(path: string): RouteMatch | null {\n for (const node of flattened) {\n const params = matchRoute(path, node.fullPath);\n if (params) {\n return instantiateMatch(node, params);\n }\n }\n if (notFoundRoute) {\n return createFallbackMatch(notFoundRoute, path, 'not-found');\n }\n return null;\n }\n\n function instantiateMatch(node: FlattenedRouteNode, params: Record<string, string>): RouteMatch {\n const layouts = collectLayouts(node.branch, node.fullPath, params);\n const routeBoundary = createRouterBoundaryState(\n 'route',\n normalizeBoundaryConfig('route', node.route.boundary, {\n routeId: getRouteId(node.route),\n path: node.fullPath,\n params,\n }),\n );\n return {\n route: node.route,\n params,\n fullPath: node.fullPath,\n layouts,\n boundary: routeBoundary,\n } satisfies RouteMatch;\n }\n\n function collectLayouts(branch: RouteDefinition[], fullPath: string, params: Record<string, string>): RouterBoundaryState[] {\n const states: RouterBoundaryState[] = [];\n branch.forEach(route => {\n (route.layouts ?? []).forEach((layout, index) => {\n states.push(\n createRouterBoundaryState(\n 'layout',\n normalizeBoundaryConfig('layout', layout, {\n routeId: getRouteId(route),\n path: fullPath,\n layoutIndex: index,\n params,\n }),\n ),\n );\n });\n });\n return states;\n }\n\n function createFallbackMatch(\n route: RouteDefinition,\n requestedPath: string,\n reason: 'not-found' | 'error',\n error?: Error,\n errorMessage?: string,\n ): RouteMatch {\n const normalizedPath = normalizePathname(requestedPath);\n const params = matchRoute(normalizedPath, route.path) ?? {};\n const statusCode = reason === 'not-found' ? 404 : 500;\n const boundaryConfig: RouteBoundaryConfig = {\n ...(route.boundary ?? {}),\n attributes: {\n ...(route.boundary?.attributes ?? {}),\n requestedPath: normalizedPath,\n statusCode,\n reason,\n errorMessage: errorMessage ?? error?.message,\n },\n };\n const layouts = collectLayouts([route], normalizedPath, params);\n const routeBoundary = createRouterBoundaryState(\n 'route',\n normalizeBoundaryConfig('route', boundaryConfig, {\n routeId: getRouteId(route),\n path: normalizedPath,\n params,\n }),\n );\n return {\n route,\n params,\n fullPath: normalizedPath,\n layouts,\n boundary: routeBoundary,\n } satisfies RouteMatch;\n }\n\n function match(path?: string): RouteMatch | null {\n const resolved = resolveMatch(path ?? currentPath());\n if (path === undefined) {\n currentMatchSignal.set(resolved);\n }\n return resolved;\n }\n\n function navigate(path: string, options?: NavigateOptions): RouteMatch | null {\n return runNavigation(path, options, 0);\n }\n\n function onPopState() {\n if (typeof window === 'undefined') {\n return;\n }\n const nextPath = window.location.pathname;\n runNavigation(nextPath, { replace: true }, 0);\n }\n\n const start = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.addEventListener('popstate', onPopState);\n };\n\n const dispose = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.removeEventListener('popstate', onPopState);\n };\n\n function runNavigation(path: string, options: NavigateOptions | undefined, depth: number): RouteMatch | null {\n const resolved = resolveMatch(path);\n if (!resolved) {\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(null);\n return null;\n }\n const guardResult = runRouteGuards(resolved);\n if (guardResult.type === 'redirect') {\n if (depth >= MAX_GUARD_REDIRECTS) {\n throw new Error('Router redirect loop detected.');\n }\n const nextOptions: NavigateOptions = { ...options, ...guardResult.options, replace: true };\n return runNavigation(guardResult.to, nextOptions, depth + 1);\n }\n if (guardResult.type === 'error') {\n const info = guardResult.info ?? createGuardErrorInfo(resolved);\n const rawMessage = guardResult.error.message;\n if (errorRoute) {\n try {\n captureRuntimeError(guardResult.error, info);\n } catch {\n // Guard error is surfaced via fallback routes; avoid throwing.\n }\n const errorMatch = createFallbackMatch(errorRoute, path, 'error', guardResult.error, rawMessage);\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(errorMatch);\n return errorMatch;\n }\n captureRuntimeError(guardResult.error, info);\n return currentMatchSignal();\n }\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(resolved);\n return resolved;\n }\n\n function applyHistory(path: string, options?: NavigateOptions) {\n if (typeof window === 'undefined') {\n return;\n }\n const historyState = options?.state ?? {};\n if (options?.replace) {\n window.history.replaceState(historyState, '', path);\n } else {\n window.history.pushState(historyState, '', path);\n }\n }\n\n function runRouteGuards(match: RouteMatch): RouteGuardResult {\n const guards = match.route.guards ?? [];\n for (const guard of guards) {\n const result = guard({ match, params: match.params }) ?? CONTINUE_NAVIGATION;\n if (result.type !== 'continue') {\n return result;\n }\n }\n return CONTINUE_NAVIGATION;\n }\n\n function createGuardErrorInfo(match: RouteMatch): RuntimeErrorInfo {\n return {\n phase: 'navigation',\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes: {\n routeId: match.route.id ?? match.fullPath,\n fullPath: match.fullPath,\n },\n } satisfies RuntimeErrorInfo;\n }\n\n return {\n currentPath,\n currentMatch: currentMatchSignal,\n navigate,\n match,\n start,\n dispose,\n } satisfies Router;\n}\n\nfunction normalizeRouterOptions(input: RouteDefinition[] | RouterOptions): RouterOptions {\n if (Array.isArray(input)) {\n return { routes: input };\n }\n return input;\n}\n\nfunction normalizeFallbackRoute(\n route: RouteDefinition | undefined,\n fallbackId: string,\n fallbackPath: string,\n): RouteDefinition | undefined {\n if (!route) {\n return undefined;\n }\n return {\n ...route,\n id: route.id ?? fallbackId,\n path: route.path || fallbackPath,\n };\n}\n\n\nexport async function runRouteLoader<T = unknown>(\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const result = await executeRouteHandler<T>('loader', match.route.loader as RouteDataHandler<T> | undefined, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\n\nexport async function runRouteAction<T = unknown>(\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const result = await executeRouteHandler<T>('action', match.route.action as RouteDataHandler<T> | undefined, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\n\nexport async function prefetchRoute(match: RouteMatch, options?: RoutePrefetchOptions): Promise<void> {\n await Promise.resolve(match.route.component());\n if (options?.loadData) {\n await runRouteLoader(match, options.loaderArgs);\n }\n}\n\ntype RouteHandlerKind = 'loader' | 'action';\n\ntype PartialRouteHandlerArgs = Partial<Omit<RouteHandlerArgs, 'params'>> & { params?: Record<string, string> };\n\ninterface BoundaryContextExtras {\n routeId: string;\n path: string;\n layoutIndex?: number;\n params?: Record<string, string>;\n}\n\nfunction normalizeBoundaryConfig(\n kind: RouterBoundaryKind,\n config: RouteBoundaryConfig | undefined,\n context: BoundaryContextExtras,\n): RouteBoundaryConfigResolved {\n const layoutSuffix = typeof context.layoutIndex === 'number' ? `:${String(context.layoutIndex)}` : '';\n const fallbackId = `${kind}:${context.routeId}${layoutSuffix}`;\n const componentName = config?.componentName ?? config?.name ?? context.routeId;\n const attributes = {\n ...(config?.attributes ?? {}),\n routeId: context.routeId,\n path: context.path,\n layoutIndex: context.layoutIndex,\n params: context.params ? { ...context.params } : undefined,\n } satisfies Record<string, unknown>;\n return {\n ...config,\n id: config?.id ?? fallbackId,\n name: config?.name ?? componentName,\n componentName,\n attributes,\n } as RouteBoundaryConfigResolved;\n}\n\nfunction createRouterBoundaryState(\n kind: RouterBoundaryKind,\n definition: RouteBoundaryConfigResolved,\n): RouterBoundaryState {\n const state: RouterBoundaryState = {\n id: definition.id,\n kind,\n definition,\n boundary: {\n id: definition.id,\n handle(error, info) {\n state.error = error;\n state.info = info;\n if (definition.onError) {\n try {\n const handled = definition.onError(error, info);\n if (handled === false) {\n return false;\n }\n } catch (hookError) {\n state.error = hookError instanceof Error ? hookError : new Error(String(hookError));\n state.info = info;\n }\n }\n return true;\n },\n },\n error: null,\n info: null,\n reset() {\n state.error = null;\n state.info = null;\n },\n } satisfies RouterBoundaryState;\n return state;\n}\n\nasync function executeRouteHandler<T>(\n kind: RouteHandlerKind,\n handler: RouteDataHandler<T> | undefined,\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const startedAt = Date.now();\n if (!handler) {\n return {\n handled: true,\n startedAt,\n endedAt: startedAt,\n durationMs: 0,\n } satisfies RouteHandlerResult<T>;\n }\n const normalizedArgs = normalizeHandlerArgs(match, args);\n const boundaries = [...match.layouts, match.boundary];\n boundaries.forEach(boundary => {\n boundary.reset();\n });\n try {\n const data = await runWithBoundaries(boundaries, () => invokeRouteHandler(handler, kind, match, normalizedArgs));\n const boundaryError = firstErroredBoundary(boundaries);\n const endedAt = Date.now();\n if (boundaryError) {\n return {\n handled: true,\n error: boundaryError.error ?? undefined,\n info: boundaryError.info ?? null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n }\n return {\n handled: true,\n data: data as T,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n } catch (error) {\n const normalized = error instanceof Error ? error : new Error(String(error));\n const endedAt = Date.now();\n return {\n handled: false,\n error: normalized,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n }\n}\n\nfunction normalizeHandlerArgs(match: RouteMatch, args?: PartialRouteHandlerArgs): RouteHandlerArgs {\n return {\n params: args?.params ?? match.params,\n request: args?.request,\n signal: args?.signal,\n context: args?.context,\n } satisfies RouteHandlerArgs;\n}\n\nfunction runWithBoundaries<T>(boundaries: RouterBoundaryState[], run: () => T): T {\n return boundaries.reduceRight((next, boundary) => {\n return () => withRuntimeErrorBoundary(boundary.boundary, next);\n }, run)();\n}\n\nfunction invokeRouteHandler<T>(\n handler: RouteDataHandler<T>,\n kind: RouteHandlerKind,\n match: RouteMatch,\n args: RouteHandlerArgs,\n): T | Promise<T | undefined> | undefined {\n const phase = kind === 'loader' ? 'loader' : 'action';\n const info = createHandlerErrorInfo(phase, match, args);\n try {\n const result = handler(args);\n if (isPromiseLike(result)) {\n return result.catch((error: unknown) => {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n });\n }\n return result;\n } catch (error: unknown) {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n }\n}\n\nfunction createHandlerErrorInfo(\n phase: 'loader' | 'action',\n match: RouteMatch,\n args: RouteHandlerArgs,\n): RuntimeErrorInfo {\n const attributes = {\n ...match.boundary.definition.attributes,\n params: args.params,\n requestMethod: args.request?.method,\n layoutStack: match.layouts.map(layout => layout.definition.id),\n } satisfies Record<string, unknown>;\n return {\n phase,\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes,\n } satisfies RuntimeErrorInfo;\n}\n\nfunction updateRouteDataCache(match: RouteMatch, result: RouteHandlerResult): void {\n if (result.handled) {\n cacheRouteDataResult(match, result);\n return;\n }\n clearRouteDataResult(match);\n}\n\nfunction firstErroredBoundary(boundaries: RouterBoundaryState[]): RouterBoundaryState | undefined {\n for (let i = boundaries.length - 1; i >= 0; i -= 1) {\n if (boundaries[i].error) {\n return boundaries[i];\n }\n }\n return undefined;\n}\n\nfunction isPromiseLike<T>(value: unknown): value is Promise<T> {\n return Boolean(value) && typeof value === 'object' && 'then' in (value as Record<string, unknown>);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/router.ts"],"names":["flattenRoutes","signal","matchRoute","getRouteId","normalizePathname","options","captureRuntimeError","match","withRuntimeErrorBoundary","cacheRouteDataResult","clearRouteDataResult"],"mappings":"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","file":"router.cjs","sourcesContent":["import { captureRuntimeError, RuntimeErrorBoundary, RuntimeErrorInfo, withRuntimeErrorBoundary } from './errors.js';\nimport { signal, SignalAccessor } from './signals.js';\nimport { cacheRouteDataResult, clearRouteDataResult } from './route-data-registry.js';\nimport { flattenRoutes, getRouteId, matchRoute, normalizePathname } from './router-utils.js';\nimport type { FlattenedRouteNode } from './router-utils.js';\n\nexport type RouteComponentFactory = () => Promise<Record<string, unknown>> | Record<string, unknown>;\n\nexport interface RouteBoundaryConfig {\n id?: string;\n name?: string;\n componentName?: string;\n templateId?: string;\n attributes?: Record<string, unknown>;\n onError?: (error: Error, info: RuntimeErrorInfo) => boolean | undefined;\n}\n\nexport type RouteLayoutDefinition = RouteBoundaryConfig;\n\nexport interface RouteDefinition {\n id?: string;\n path: string;\n component: RouteComponentFactory;\n boundary?: RouteBoundaryConfig;\n layouts?: RouteLayoutDefinition[];\n loader?: RouteDataHandler;\n action?: RouteDataHandler;\n guards?: RouteGuard[];\n children?: RouteDefinition[];\n}\n\nexport interface RouteHandlerArgs {\n params: Record<string, string>;\n request?: Request;\n signal?: AbortSignal;\n context?: Record<string, unknown>;\n}\n\nexport type RouteDataHandler<T = unknown> = (args: RouteHandlerArgs) => T | Promise<T>;\n\nexport interface RouteHandlerResult<T = unknown> {\n data?: T;\n error?: Error;\n info?: RuntimeErrorInfo | null;\n handled: boolean;\n startedAt?: number;\n endedAt?: number;\n durationMs?: number;\n}\n\nexport interface RouteGuardContext {\n match: RouteMatch;\n params: Record<string, string>;\n}\n\nexport type RouteGuardResult =\n | { type: 'continue' }\n | { type: 'redirect'; to: string; options?: NavigateOptions }\n | { type: 'error'; error: Error; info?: RuntimeErrorInfo | null };\n\nexport type RouteGuard = (context: RouteGuardContext) => RouteGuardResult | undefined;\n\nexport interface RoutePrefetchOptions {\n loadData?: boolean;\n loaderArgs?: PartialRouteHandlerArgs;\n}\n\nconst CONTINUE_NAVIGATION: RouteGuardResult = { type: 'continue' } as const;\nconst MAX_GUARD_REDIRECTS = 8;\n\nexport function allowNavigation(): RouteGuardResult {\n return CONTINUE_NAVIGATION;\n}\n\nexport function redirectNavigation(to: string, options?: NavigateOptions): RouteGuardResult {\n return { type: 'redirect', to, options };\n}\n\nexport function errorNavigation(error: Error, info?: RuntimeErrorInfo | null): RouteGuardResult {\n return { type: 'error', error, info: info ?? null };\n}\n\nexport type RouterBoundaryKind = 'layout' | 'route';\n\nexport interface RouteBoundaryConfigResolved extends RouteBoundaryConfig {\n id: string;\n componentName: string;\n attributes: Record<string, unknown>;\n}\n\nexport interface RouterBoundaryState {\n id: string;\n kind: RouterBoundaryKind;\n definition: RouteBoundaryConfigResolved;\n boundary: RuntimeErrorBoundary;\n error: Error | null;\n info: RuntimeErrorInfo | null;\n reset(): void;\n}\n\nexport interface RouteMatch {\n route: RouteDefinition;\n params: Record<string, string>;\n fullPath: string;\n layouts: RouterBoundaryState[];\n boundary: RouterBoundaryState;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: unknown;\n}\n\nexport interface Router {\n currentPath: SignalAccessor<string>;\n currentMatch: SignalAccessor<RouteMatch | null>;\n navigate(path: string, options?: NavigateOptions): RouteMatch | null;\n match(path?: string): RouteMatch | null;\n start(): void;\n dispose(): void;\n}\n\nexport interface RouterOptions {\n routes: RouteDefinition[];\n notFoundRoute?: RouteDefinition;\n errorRoute?: RouteDefinition;\n}\n\nexport function createRouter(input: RouteDefinition[] | RouterOptions): Router {\n const options = normalizeRouterOptions(input);\n const flattened = flattenRoutes(options.routes);\n const notFoundRoute = normalizeFallbackRoute(options.notFoundRoute, 'not-found', '*');\n const errorRoute = normalizeFallbackRoute(options.errorRoute, 'error', '/__error');\n const initialPath = typeof window !== 'undefined' ? window.location.pathname : '/';\n const currentPath = signal(initialPath);\n const currentMatchSignal = signal<RouteMatch | null>(resolveMatch(initialPath));\n\n function resolveMatch(path: string): RouteMatch | null {\n for (const node of flattened) {\n const params = matchRoute(path, node.fullPath);\n if (params) {\n return instantiateMatch(node, params);\n }\n }\n if (notFoundRoute) {\n return createFallbackMatch(notFoundRoute, path, 'not-found');\n }\n return null;\n }\n\n function instantiateMatch(node: FlattenedRouteNode, params: Record<string, string>): RouteMatch {\n const layouts = collectLayouts(node.branch, node.fullPath, params);\n const routeBoundary = createRouterBoundaryState(\n 'route',\n normalizeBoundaryConfig('route', node.route.boundary, {\n routeId: getRouteId(node.route),\n path: node.fullPath,\n params,\n }),\n );\n return {\n route: node.route,\n params,\n fullPath: node.fullPath,\n layouts,\n boundary: routeBoundary,\n } satisfies RouteMatch;\n }\n\n function collectLayouts(branch: RouteDefinition[], fullPath: string, params: Record<string, string>): RouterBoundaryState[] {\n const states: RouterBoundaryState[] = [];\n branch.forEach(route => {\n (route.layouts ?? []).forEach((layout, index) => {\n states.push(\n createRouterBoundaryState(\n 'layout',\n normalizeBoundaryConfig('layout', layout, {\n routeId: getRouteId(route),\n path: fullPath,\n layoutIndex: index,\n params,\n }),\n ),\n );\n });\n });\n return states;\n }\n\n function createFallbackMatch(\n route: RouteDefinition,\n requestedPath: string,\n reason: 'not-found' | 'error',\n error?: Error,\n errorMessage?: string,\n ): RouteMatch {\n const normalizedPath = normalizePathname(requestedPath);\n const params = matchRoute(normalizedPath, route.path) ?? {};\n const statusCode = reason === 'not-found' ? 404 : 500;\n const boundaryConfig: RouteBoundaryConfig = {\n ...(route.boundary ?? {}),\n attributes: {\n ...(route.boundary?.attributes ?? {}),\n requestedPath: normalizedPath,\n statusCode,\n reason,\n errorMessage: errorMessage ?? error?.message,\n },\n };\n const layouts = collectLayouts([route], normalizedPath, params);\n const routeBoundary = createRouterBoundaryState(\n 'route',\n normalizeBoundaryConfig('route', boundaryConfig, {\n routeId: getRouteId(route),\n path: normalizedPath,\n params,\n }),\n );\n return {\n route,\n params,\n fullPath: normalizedPath,\n layouts,\n boundary: routeBoundary,\n } satisfies RouteMatch;\n }\n\n function match(path?: string): RouteMatch | null {\n const resolved = resolveMatch(path ?? currentPath());\n if (path === undefined) {\n currentMatchSignal.set(resolved);\n }\n return resolved;\n }\n\n function navigate(path: string, options?: NavigateOptions): RouteMatch | null {\n return runNavigation(path, options, 0);\n }\n\n function onPopState() {\n if (typeof window === 'undefined') {\n return;\n }\n const nextPath = window.location.pathname;\n runNavigation(nextPath, { replace: true }, 0);\n }\n\n const start = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.addEventListener('popstate', onPopState);\n };\n\n const dispose = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.removeEventListener('popstate', onPopState);\n };\n\n function runNavigation(path: string, options: NavigateOptions | undefined, depth: number): RouteMatch | null {\n const resolved = resolveMatch(path);\n if (!resolved) {\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(null);\n return null;\n }\n const guardResult = runRouteGuards(resolved);\n if (guardResult.type === 'redirect') {\n if (depth >= MAX_GUARD_REDIRECTS) {\n throw new Error('Router redirect loop detected.');\n }\n const nextOptions: NavigateOptions = { ...options, ...guardResult.options, replace: true };\n return runNavigation(guardResult.to, nextOptions, depth + 1);\n }\n if (guardResult.type === 'error') {\n const info = guardResult.info ?? createGuardErrorInfo(resolved);\n const rawMessage = guardResult.error.message;\n if (errorRoute) {\n try {\n captureRuntimeError(guardResult.error, info);\n } catch {\n // Guard error is surfaced via fallback routes; avoid throwing.\n }\n const errorMatch = createFallbackMatch(errorRoute, path, 'error', guardResult.error, rawMessage);\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(errorMatch);\n return errorMatch;\n }\n captureRuntimeError(guardResult.error, info);\n return currentMatchSignal();\n }\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(resolved);\n return resolved;\n }\n\n function applyHistory(path: string, options?: NavigateOptions) {\n if (typeof window === 'undefined') {\n return;\n }\n const historyState = options?.state ?? {};\n if (options?.replace) {\n window.history.replaceState(historyState, '', path);\n } else {\n window.history.pushState(historyState, '', path);\n }\n }\n\n function runRouteGuards(match: RouteMatch): RouteGuardResult {\n const guards = match.route.guards ?? [];\n for (const guard of guards) {\n const result = guard({ match, params: match.params }) ?? CONTINUE_NAVIGATION;\n if (result.type !== 'continue') {\n return result;\n }\n }\n return CONTINUE_NAVIGATION;\n }\n\n function createGuardErrorInfo(match: RouteMatch): RuntimeErrorInfo {\n return {\n phase: 'navigation',\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes: {\n routeId: match.route.id ?? match.fullPath,\n fullPath: match.fullPath,\n },\n } satisfies RuntimeErrorInfo;\n }\n\n return {\n currentPath,\n currentMatch: currentMatchSignal,\n navigate,\n match,\n start,\n dispose,\n } satisfies Router;\n}\n\nfunction normalizeRouterOptions(input: RouteDefinition[] | RouterOptions): RouterOptions {\n if (Array.isArray(input)) {\n return { routes: input };\n }\n return input;\n}\n\nfunction normalizeFallbackRoute(\n route: RouteDefinition | undefined,\n fallbackId: string,\n fallbackPath: string,\n): RouteDefinition | undefined {\n if (!route) {\n return undefined;\n }\n return {\n ...route,\n id: route.id ?? fallbackId,\n path: route.path || fallbackPath,\n };\n}\n\n\nexport async function runRouteLoader<T = unknown>(\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const result = await executeRouteHandler<T>('loader', match.route.loader as RouteDataHandler<T> | undefined, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\n\nexport async function runRouteAction<T = unknown>(\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const result = await executeRouteHandler<T>('action', match.route.action as RouteDataHandler<T> | undefined, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\n\nexport async function prefetchRoute(match: RouteMatch, options?: RoutePrefetchOptions): Promise<void> {\n await Promise.resolve(match.route.component());\n if (options?.loadData) {\n await runRouteLoader(match, options.loaderArgs);\n }\n}\n\ntype RouteHandlerKind = 'loader' | 'action';\n\ntype PartialRouteHandlerArgs = Partial<Omit<RouteHandlerArgs, 'params'>> & { params?: Record<string, string> };\n\ninterface BoundaryContextExtras {\n routeId: string;\n path: string;\n layoutIndex?: number;\n params?: Record<string, string>;\n}\n\nfunction normalizeBoundaryConfig(\n kind: RouterBoundaryKind,\n config: RouteBoundaryConfig | undefined,\n context: BoundaryContextExtras,\n): RouteBoundaryConfigResolved {\n const layoutSuffix = typeof context.layoutIndex === 'number' ? `:${String(context.layoutIndex)}` : '';\n const fallbackId = `${kind}:${context.routeId}${layoutSuffix}`;\n const componentName = config?.componentName ?? config?.name ?? context.routeId;\n const attributes = {\n ...(config?.attributes ?? {}),\n routeId: context.routeId,\n path: context.path,\n layoutIndex: context.layoutIndex,\n params: context.params ? { ...context.params } : undefined,\n } satisfies Record<string, unknown>;\n return {\n ...config,\n id: config?.id ?? fallbackId,\n name: config?.name ?? componentName,\n componentName,\n attributes,\n };\n}\n\nfunction createRouterBoundaryState(\n kind: RouterBoundaryKind,\n definition: RouteBoundaryConfigResolved,\n): RouterBoundaryState {\n const state: RouterBoundaryState = {\n id: definition.id,\n kind,\n definition,\n boundary: {\n id: definition.id,\n handle(error, info) {\n state.error = error;\n state.info = info;\n if (definition.onError) {\n try {\n const handled = definition.onError(error, info);\n if (handled === false) {\n return false;\n }\n } catch (hookError) {\n state.error = hookError instanceof Error ? hookError : new Error(String(hookError));\n state.info = info;\n }\n }\n return true;\n },\n },\n error: null,\n info: null,\n reset() {\n state.error = null;\n state.info = null;\n },\n } satisfies RouterBoundaryState;\n return state;\n}\n\nasync function executeRouteHandler<T>(\n kind: RouteHandlerKind,\n handler: RouteDataHandler<T> | undefined,\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const startedAt = Date.now();\n if (!handler) {\n return {\n handled: true,\n startedAt,\n endedAt: startedAt,\n durationMs: 0,\n } satisfies RouteHandlerResult<T>;\n }\n const normalizedArgs = normalizeHandlerArgs(match, args);\n const boundaries = [...match.layouts, match.boundary];\n boundaries.forEach(boundary => {\n boundary.reset();\n });\n try {\n const data = await runWithBoundaries(boundaries, () => invokeRouteHandler(handler, kind, match, normalizedArgs));\n const boundaryError = firstErroredBoundary(boundaries);\n const endedAt = Date.now();\n if (boundaryError) {\n return {\n handled: true,\n error: boundaryError.error ?? undefined,\n info: boundaryError.info ?? null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n }\n return {\n handled: true,\n data: data as T,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n } catch (error) {\n const normalized = error instanceof Error ? error : new Error(String(error));\n const endedAt = Date.now();\n return {\n handled: false,\n error: normalized,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n }\n}\n\nfunction normalizeHandlerArgs(match: RouteMatch, args?: PartialRouteHandlerArgs): RouteHandlerArgs {\n return {\n params: args?.params ?? match.params,\n request: args?.request,\n signal: args?.signal,\n context: args?.context,\n } satisfies RouteHandlerArgs;\n}\n\nfunction runWithBoundaries<T>(boundaries: RouterBoundaryState[], run: () => T): T {\n return boundaries.reduceRight((next, boundary) => {\n return () => withRuntimeErrorBoundary(boundary.boundary, next);\n }, run)();\n}\n\nfunction invokeRouteHandler<T>(\n handler: RouteDataHandler<T>,\n kind: RouteHandlerKind,\n match: RouteMatch,\n args: RouteHandlerArgs,\n): T | Promise<T | undefined> | undefined {\n const phase = kind === 'loader' ? 'loader' : 'action';\n const info = createHandlerErrorInfo(phase, match, args);\n try {\n const result = handler(args);\n if (isPromiseLike(result)) {\n return result.catch((error: unknown) => {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n });\n }\n return result;\n } catch (error: unknown) {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n }\n}\n\nfunction createHandlerErrorInfo(\n phase: 'loader' | 'action',\n match: RouteMatch,\n args: RouteHandlerArgs,\n): RuntimeErrorInfo {\n const attributes = {\n ...match.boundary.definition.attributes,\n params: args.params,\n requestMethod: args.request?.method,\n layoutStack: match.layouts.map(layout => layout.definition.id),\n } satisfies Record<string, unknown>;\n return {\n phase,\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes,\n } satisfies RuntimeErrorInfo;\n}\n\nfunction updateRouteDataCache(match: RouteMatch, result: RouteHandlerResult): void {\n if (result.handled) {\n cacheRouteDataResult(match, result);\n return;\n }\n clearRouteDataResult(match);\n}\n\nfunction firstErroredBoundary(boundaries: RouterBoundaryState[]): RouterBoundaryState | undefined {\n for (let i = boundaries.length - 1; i >= 0; i -= 1) {\n if (boundaries[i].error) {\n return boundaries[i];\n }\n }\n return undefined;\n}\n\nfunction isPromiseLike<T>(value: unknown): value is Promise<T> {\n return Boolean(value) && typeof value === 'object' && 'then' in (value as Record<string, unknown>);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/router.ts"],"names":["options","match"],"mappings":";;;;;;AAmEA,IAAM,mBAAA,GAAwC,EAAE,IAAA,EAAM,UAAA,EAAW;AACjE,IAAM,mBAAA,GAAsB,CAAA;AAErB,SAAS,eAAA,GAAoC;AAClD,EAAA,OAAO,mBAAA;AACT;AAEO,SAAS,kBAAA,CAAmB,IAAY,OAAA,EAA6C;AAC1F,EAAA,OAAO,EAAE,IAAA,EAAM,UAAA,EAAY,EAAA,EAAI,OAAA,EAAQ;AACzC;AAEO,SAAS,eAAA,CAAgB,OAAc,IAAA,EAAkD;AAC9F,EAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAK;AACpD;AAgDO,SAAS,aAAa,KAAA,EAAkD;AAC7E,EAAA,MAAM,OAAA,GAAU,uBAAuB,KAAK,CAAA;AAC5C,EAAA,MAAM,SAAA,GAAY,aAAA,CAAc,OAAA,CAAQ,MAAM,CAAA;AAC9C,EAAA,MAAM,aAAA,GAAgB,sBAAA,CAAuB,OAAA,CAAQ,aAAA,EAAe,aAAa,GAAG,CAAA;AACpF,EAAA,MAAM,UAAA,GAAa,sBAAA,CAAuB,OAAA,CAAQ,UAAA,EAAY,SAAS,UAAU,CAAA;AACjF,EAAA,MAAM,cAAc,OAAO,MAAA,KAAW,WAAA,GAAc,MAAA,CAAO,SAAS,QAAA,GAAW,GAAA;AAC/E,EAAA,MAAM,WAAA,GAAc,OAAO,WAAW,CAAA;AACtC,EAAA,MAAM,kBAAA,GAAqB,MAAA,CAA0B,YAAA,CAAa,WAAW,CAAC,CAAA;AAE9E,EAAA,SAAS,aAAa,IAAA,EAAiC;AACrD,IAAA,KAAA,MAAW,QAAQ,SAAA,EAAW;AAC5B,MAAA,MAAM,MAAA,GAAS,UAAA,CAAW,IAAA,EAAM,IAAA,CAAK,QAAQ,CAAA;AAC7C,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,OAAO,gBAAA,CAAiB,MAAM,MAAM,CAAA;AAAA,MACtC;AAAA,IACF;AACA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,OAAO,mBAAA,CAAoB,aAAA,EAAe,IAAA,EAAM,WAAW,CAAA;AAAA,IAC7D;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,SAAS,gBAAA,CAAiB,MAA0B,MAAA,EAA4C;AAC9F,IAAA,MAAM,UAAU,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,UAAU,MAAM,CAAA;AACjE,IAAA,MAAM,aAAA,GAAgB,yBAAA;AAAA,MACpB,OAAA;AAAA,MACA,uBAAA,CAAwB,OAAA,EAAS,IAAA,CAAK,KAAA,CAAM,QAAA,EAAU;AAAA,QACpD,OAAA,EAAS,UAAA,CAAW,IAAA,CAAK,KAAK,CAAA;AAAA,QAC9B,MAAM,IAAA,CAAK,QAAA;AAAA,QACX;AAAA,OACD;AAAA,KACH;AACA,IAAA,OAAO;AAAA,MACL,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,MAAA;AAAA,MACA,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,OAAA;AAAA,MACA,QAAA,EAAU;AAAA,KACZ;AAAA,EACF;AAEA,EAAA,SAAS,cAAA,CAAe,MAAA,EAA2B,QAAA,EAAkB,MAAA,EAAuD;AAC1H,IAAA,MAAM,SAAgC,EAAC;AACvC,IAAA,MAAA,CAAO,QAAQ,CAAA,KAAA,KAAS;AACtB,MAAA,CAAC,MAAM,OAAA,IAAW,IAAI,OAAA,CAAQ,CAAC,QAAQ,KAAA,KAAU;AAC/C,QAAA,MAAA,CAAO,IAAA;AAAA,UACL,yBAAA;AAAA,YACE,QAAA;AAAA,YACA,uBAAA,CAAwB,UAAU,MAAA,EAAQ;AAAA,cACxC,OAAA,EAAS,WAAW,KAAK,CAAA;AAAA,cACzB,IAAA,EAAM,QAAA;AAAA,cACN,WAAA,EAAa,KAAA;AAAA,cACb;AAAA,aACD;AAAA;AACH,SACF;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,SAAS,mBAAA,CACP,KAAA,EACA,aAAA,EACA,MAAA,EACA,OACA,YAAA,EACY;AACZ,IAAA,MAAM,cAAA,GAAiB,kBAAkB,aAAa,CAAA;AACtD,IAAA,MAAM,SAAS,UAAA,CAAW,cAAA,EAAgB,KAAA,CAAM,IAAI,KAAK,EAAC;AAC1D,IAAA,MAAM,UAAA,GAAa,MAAA,KAAW,WAAA,GAAc,GAAA,GAAM,GAAA;AAClD,IAAA,MAAM,cAAA,GAAsC;AAAA,MAC1C,GAAI,KAAA,CAAM,QAAA,IAAY,EAAC;AAAA,MACvB,UAAA,EAAY;AAAA,QACV,GAAI,KAAA,CAAM,QAAA,EAAU,UAAA,IAAc,EAAC;AAAA,QACnC,aAAA,EAAe,cAAA;AAAA,QACf,UAAA;AAAA,QACA,MAAA;AAAA,QACA,YAAA,EAAc,gBAAgB,KAAA,EAAO;AAAA;AACvC,KACF;AACA,IAAA,MAAM,UAAU,cAAA,CAAe,CAAC,KAAK,CAAA,EAAG,gBAAgB,MAAM,CAAA;AAC9D,IAAA,MAAM,aAAA,GAAgB,yBAAA;AAAA,MACpB,OAAA;AAAA,MACA,uBAAA,CAAwB,SAAS,cAAA,EAAgB;AAAA,QAC/C,OAAA,EAAS,WAAW,KAAK,CAAA;AAAA,QACzB,IAAA,EAAM,cAAA;AAAA,QACN;AAAA,OACD;AAAA,KACH;AACA,IAAA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA,EAAU,cAAA;AAAA,MACV,OAAA;AAAA,MACA,QAAA,EAAU;AAAA,KACZ;AAAA,EACF;AAEA,EAAA,SAAS,MAAM,IAAA,EAAkC;AAC/C,IAAA,MAAM,QAAA,GAAW,YAAA,CAAa,IAAA,IAAQ,WAAA,EAAa,CAAA;AACnD,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,kBAAA,CAAmB,IAAI,QAAQ,CAAA;AAAA,IACjC;AACA,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,SAAS,QAAA,CAAS,MAAcA,QAAAA,EAA8C;AAC5E,IAAA,OAAO,aAAA,CAAc,IAAA,EAAMA,QAAAA,EAAS,CAAC,CAAA;AAAA,EACvC;AAEA,EAAA,SAAS,UAAA,GAAa;AACpB,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,MAAA;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAW,OAAO,QAAA,CAAS,QAAA;AACjC,IAAA,aAAA,CAAc,QAAA,EAAU,EAAE,OAAA,EAAS,IAAA,IAAQ,CAAC,CAAA;AAAA,EAC9C;AAEA,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,MAAA;AAAA,IACF;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,YAAY,UAAU,CAAA;AAAA,EAChD,CAAA;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,MAAA;AAAA,IACF;AACA,IAAA,MAAA,CAAO,mBAAA,CAAoB,YAAY,UAAU,CAAA;AAAA,EACnD,CAAA;AAEA,EAAA,SAAS,aAAA,CAAc,IAAA,EAAcA,QAAAA,EAAsC,KAAA,EAAkC;AAC3G,IAAA,MAAM,QAAA,GAAW,aAAa,IAAI,CAAA;AAClC,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,YAAA,CAAa,MAAMA,QAAO,CAAA;AAC1B,MAAA,WAAA,CAAY,IAAI,IAAI,CAAA;AACpB,MAAA,kBAAA,CAAmB,IAAI,IAAI,CAAA;AAC3B,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,MAAM,WAAA,GAAc,eAAe,QAAQ,CAAA;AAC3C,IAAA,IAAI,WAAA,CAAY,SAAS,UAAA,EAAY;AACnC,MAAA,IAAI,SAAS,mBAAA,EAAqB;AAChC,QAAA,MAAM,IAAI,MAAM,gCAAgC,CAAA;AAAA,MAClD;AACA,MAAA,MAAM,WAAA,GAA+B,EAAE,GAAGA,QAAAA,EAAS,GAAG,WAAA,CAAY,OAAA,EAAS,SAAS,IAAA,EAAK;AACzF,MAAA,OAAO,aAAA,CAAc,WAAA,CAAY,EAAA,EAAI,WAAA,EAAa,QAAQ,CAAC,CAAA;AAAA,IAC7D;AACA,IAAA,IAAI,WAAA,CAAY,SAAS,OAAA,EAAS;AAChC,MAAA,MAAM,IAAA,GAAO,WAAA,CAAY,IAAA,IAAQ,oBAAA,CAAqB,QAAQ,CAAA;AAC9D,MAAA,MAAM,UAAA,GAAa,YAAY,KAAA,CAAM,OAAA;AACrC,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,IAAI;AACF,UAAA,mBAAA,CAAoB,WAAA,CAAY,OAAO,IAAI,CAAA;AAAA,QAC7C,CAAA,CAAA,MAAQ;AAAA,QAER;AACA,QAAA,MAAM,aAAa,mBAAA,CAAoB,UAAA,EAAY,MAAM,OAAA,EAAS,WAAA,CAAY,OAAO,UAAU,CAAA;AAC/F,QAAA,YAAA,CAAa,MAAMA,QAAO,CAAA;AAC1B,QAAA,WAAA,CAAY,IAAI,IAAI,CAAA;AACpB,QAAA,kBAAA,CAAmB,IAAI,UAAU,CAAA;AACjC,QAAA,OAAO,UAAA;AAAA,MACT;AACA,MAAA,mBAAA,CAAoB,WAAA,CAAY,OAAO,IAAI,CAAA;AAC3C,MAAA,OAAO,kBAAA,EAAmB;AAAA,IAC5B;AACA,IAAA,YAAA,CAAa,MAAMA,QAAO,CAAA;AAC1B,IAAA,WAAA,CAAY,IAAI,IAAI,CAAA;AACpB,IAAA,kBAAA,CAAmB,IAAI,QAAQ,CAAA;AAC/B,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,SAAS,YAAA,CAAa,MAAcA,QAAAA,EAA2B;AAC7D,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,MAAA;AAAA,IACF;AACA,IAAA,MAAM,YAAA,GAAeA,QAAAA,EAAS,KAAA,IAAS,EAAC;AACxC,IAAA,IAAIA,UAAS,OAAA,EAAS;AACpB,MAAA,MAAA,CAAO,OAAA,CAAQ,YAAA,CAAa,YAAA,EAAc,EAAA,EAAI,IAAI,CAAA;AAAA,IACpD,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,YAAA,EAAc,EAAA,EAAI,IAAI,CAAA;AAAA,IACjD;AAAA,EACF;AAEA,EAAA,SAAS,eAAeC,MAAAA,EAAqC;AAC3D,IAAA,MAAM,MAAA,GAASA,MAAAA,CAAM,KAAA,CAAM,MAAA,IAAU,EAAC;AACtC,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,MAAA,MAAM,MAAA,GAAS,MAAM,EAAE,KAAA,EAAAA,QAAO,MAAA,EAAQA,MAAAA,CAAM,MAAA,EAAQ,CAAA,IAAK,mBAAA;AACzD,MAAA,IAAI,MAAA,CAAO,SAAS,UAAA,EAAY;AAC9B,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,IACF;AACA,IAAA,OAAO,mBAAA;AAAA,EACT;AAEA,EAAA,SAAS,qBAAqBA,MAAAA,EAAqC;AACjE,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,YAAA;AAAA,MACP,aAAA,EAAeA,MAAAA,CAAM,QAAA,CAAS,UAAA,CAAW,aAAA;AAAA,MACzC,mBAAA,EAAqBA,OAAM,QAAA,CAAS,EAAA;AAAA,MACpC,UAAA,EAAYA,MAAAA,CAAM,QAAA,CAAS,UAAA,CAAW,UAAA;AAAA,MACtC,UAAA,EAAY;AAAA,QACV,OAAA,EAASA,MAAAA,CAAM,KAAA,CAAM,EAAA,IAAMA,MAAAA,CAAM,QAAA;AAAA,QACjC,UAAUA,MAAAA,CAAM;AAAA;AAClB,KACF;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,YAAA,EAAc,kBAAA;AAAA,IACd,QAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,uBAAuB,KAAA,EAAyD;AACvF,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,EAAE,QAAQ,KAAA,EAAM;AAAA,EACzB;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,sBAAA,CACP,KAAA,EACA,UAAA,EACA,YAAA,EAC6B;AAC7B,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH,EAAA,EAAI,MAAM,EAAA,IAAM,UAAA;AAAA,IAChB,IAAA,EAAM,MAAM,IAAA,IAAQ;AAAA,GACtB;AACF;AAGA,eAAsB,cAAA,CACpB,OACA,IAAA,EACgC;AAChC,EAAA,MAAM,MAAA,GAAS,MAAM,mBAAA,CAAuB,QAAA,EAAU,MAAM,KAAA,CAAM,MAAA,EAA2C,OAAO,IAAI,CAAA;AACxH,EAAA,oBAAA,CAAqB,OAAO,MAAM,CAAA;AAClC,EAAA,OAAO,MAAA;AACT;AAEA,eAAsB,cAAA,CACpB,OACA,IAAA,EACgC;AAChC,EAAA,MAAM,MAAA,GAAS,MAAM,mBAAA,CAAuB,QAAA,EAAU,MAAM,KAAA,CAAM,MAAA,EAA2C,OAAO,IAAI,CAAA;AACxH,EAAA,oBAAA,CAAqB,OAAO,MAAM,CAAA;AAClC,EAAA,OAAO,MAAA;AACT;AAEA,eAAsB,aAAA,CAAc,OAAmB,OAAA,EAA+C;AACpG,EAAA,MAAM,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,KAAA,CAAM,WAAW,CAAA;AAC7C,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAA,MAAM,cAAA,CAAe,KAAA,EAAO,OAAA,CAAQ,UAAU,CAAA;AAAA,EAChD;AACF;AAaA,SAAS,uBAAA,CACP,IAAA,EACA,MAAA,EACA,OAAA,EAC6B;AAC7B,EAAA,MAAM,YAAA,GAAe,OAAO,OAAA,CAAQ,WAAA,KAAgB,QAAA,GAAW,IAAI,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAC,CAAA,CAAA,GAAK,EAAA;AACnG,EAAA,MAAM,aAAa,CAAA,EAAG,IAAI,IAAI,OAAA,CAAQ,OAAO,GAAG,YAAY,CAAA,CAAA;AAC5D,EAAA,MAAM,aAAA,GAAgB,MAAA,EAAQ,aAAA,IAAiB,MAAA,EAAQ,QAAQ,OAAA,CAAQ,OAAA;AACvE,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,GAAI,MAAA,EAAQ,UAAA,IAAc,EAAC;AAAA,IAC3B,SAAS,OAAA,CAAQ,OAAA;AAAA,IACjB,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,aAAa,OAAA,CAAQ,WAAA;AAAA,IACrB,QAAQ,OAAA,CAAQ,MAAA,GAAS,EAAE,GAAG,OAAA,CAAQ,QAAO,GAAI;AAAA,GACnD;AACA,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,EAAA,EAAI,QAAQ,EAAA,IAAM,UAAA;AAAA,IAClB,IAAA,EAAM,QAAQ,IAAA,IAAQ,aAAA;AAAA,IACtB,aAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,yBAAA,CACP,MACA,UAAA,EACqB;AACrB,EAAA,MAAM,KAAA,GAA6B;AAAA,IACjC,IAAI,UAAA,CAAW,EAAA;AAAA,IACf,IAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAI,UAAA,CAAW,EAAA;AAAA,MACf,MAAA,CAAO,OAAO,IAAA,EAAM;AAClB,QAAA,KAAA,CAAM,KAAA,GAAQ,KAAA;AACd,QAAA,KAAA,CAAM,IAAA,GAAO,IAAA;AACb,QAAA,IAAI,WAAW,OAAA,EAAS;AACtB,UAAA,IAAI;AACF,YAAA,MAAM,OAAA,GAAU,UAAA,CAAW,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAA;AAC9C,YAAA,IAAI,YAAY,KAAA,EAAO;AACrB,cAAA,OAAO,KAAA;AAAA,YACT;AAAA,UACF,SAAS,SAAA,EAAW;AAClB,YAAA,KAAA,CAAM,KAAA,GAAQ,qBAAqB,KAAA,GAAQ,SAAA,GAAY,IAAI,KAAA,CAAM,MAAA,CAAO,SAAS,CAAC,CAAA;AAClF,YAAA,KAAA,CAAM,IAAA,GAAO,IAAA;AAAA,UACf;AAAA,QACF;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACF;AAAA,IACA,KAAA,EAAO,IAAA;AAAA,IACP,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,GAAQ;AACN,MAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AACd,MAAA,KAAA,CAAM,IAAA,GAAO,IAAA;AAAA,IACf;AAAA,GACF;AACA,EAAA,OAAO,KAAA;AACT;AAEA,eAAe,mBAAA,CACb,IAAA,EACA,OAAA,EACA,KAAA,EACA,IAAA,EACgC;AAChC,EAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAC3B,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,IAAA;AAAA,MACT,SAAA;AAAA,MACA,OAAA,EAAS,SAAA;AAAA,MACT,UAAA,EAAY;AAAA,KACd;AAAA,EACF;AACA,EAAA,MAAM,cAAA,GAAiB,oBAAA,CAAqB,KAAA,EAAO,IAAI,CAAA;AACvD,EAAA,MAAM,aAAa,CAAC,GAAG,KAAA,CAAM,OAAA,EAAS,MAAM,QAAQ,CAAA;AACpD,EAAA,UAAA,CAAW,QAAQ,CAAA,QAAA,KAAY;AAC7B,IAAA,QAAA,CAAS,KAAA,EAAM;AAAA,EACjB,CAAC,CAAA;AACD,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,MAAM,iBAAA,CAAkB,UAAA,EAAY,MAAM,mBAAmB,OAAA,EAAS,IAAA,EAAM,KAAA,EAAO,cAAc,CAAC,CAAA;AAC/G,IAAA,MAAM,aAAA,GAAgB,qBAAqB,UAAU,CAAA;AACrD,IAAA,MAAM,OAAA,GAAU,KAAK,GAAA,EAAI;AACzB,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,IAAA;AAAA,QACT,KAAA,EAAO,cAAc,KAAA,IAAS,KAAA,CAAA;AAAA,QAC9B,IAAA,EAAM,cAAc,IAAA,IAAQ,IAAA;AAAA,QAC5B,SAAA;AAAA,QACA,OAAA;AAAA,QACA,YAAY,OAAA,GAAU;AAAA,OACxB;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,IAAA;AAAA,MACT,IAAA;AAAA,MACA,IAAA,EAAM,IAAA;AAAA,MACN,SAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAY,OAAA,GAAU;AAAA,KACxB;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,UAAA,GAAa,iBAAiB,KAAA,GAAQ,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AAC3E,IAAA,MAAM,OAAA,GAAU,KAAK,GAAA,EAAI;AACzB,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO,UAAA;AAAA,MACP,IAAA,EAAM,IAAA;AAAA,MACN,SAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAY,OAAA,GAAU;AAAA,KACxB;AAAA,EACF;AACF;AAEA,SAAS,oBAAA,CAAqB,OAAmB,IAAA,EAAkD;AACjG,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,IAAA,EAAM,MAAA,IAAU,KAAA,CAAM,MAAA;AAAA,IAC9B,SAAS,IAAA,EAAM,OAAA;AAAA,IACf,QAAQ,IAAA,EAAM,MAAA;AAAA,IACd,SAAS,IAAA,EAAM;AAAA,GACjB;AACF;AAEA,SAAS,iBAAA,CAAqB,YAAmC,GAAA,EAAiB;AAChF,EAAA,OAAO,UAAA,CAAW,WAAA,CAAY,CAAC,IAAA,EAAM,QAAA,KAAa;AAChD,IAAA,OAAO,MAAM,wBAAA,CAAyB,QAAA,CAAS,QAAA,EAAU,IAAI,CAAA;AAAA,EAC/D,CAAA,EAAG,GAAG,CAAA,EAAE;AACV;AAEA,SAAS,kBAAA,CACP,OAAA,EACA,IAAA,EACA,KAAA,EACA,IAAA,EACwC;AACxC,EAAA,MAAM,KAAA,GAAQ,IAAA,KAAS,QAAA,GAAW,QAAA,GAAW,QAAA;AAC7C,EAAA,MAAM,IAAA,GAAO,sBAAA,CAAuB,KAAA,EAAO,KAAA,EAAO,IAAI,CAAA;AACtD,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,QAAQ,IAAI,CAAA;AAC3B,IAAA,IAAI,aAAA,CAAc,MAAM,CAAA,EAAG;AACzB,MAAA,OAAO,MAAA,CAAO,KAAA,CAAM,CAAC,KAAA,KAAmB;AACtC,QAAA,MAAM,OAAA,GAAU,mBAAA,CAAoB,KAAA,EAAO,IAAI,CAAA;AAC/C,QAAA,IAAI,CAAC,OAAA,EAAS;AACZ,UAAA,MAAM,KAAA;AAAA,QACR;AACA,QAAA,OAAO,KAAA,CAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH;AACA,IAAA,OAAO,MAAA;AAAA,EACT,SAAS,KAAA,EAAgB;AACvB,IAAA,MAAM,OAAA,GAAU,mBAAA,CAAoB,KAAA,EAAO,IAAI,CAAA;AAC/C,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,KAAA;AAAA,IACR;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACF;AAEA,SAAS,sBAAA,CACP,KAAA,EACA,KAAA,EACA,IAAA,EACkB;AAClB,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,GAAG,KAAA,CAAM,QAAA,CAAS,UAAA,CAAW,UAAA;AAAA,IAC7B,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,aAAA,EAAe,KAAK,OAAA,EAAS,MAAA;AAAA,IAC7B,aAAa,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,MAAA,KAAU,MAAA,CAAO,WAAW,EAAE;AAAA,GAC/D;AACA,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,aAAA,EAAe,KAAA,CAAM,QAAA,CAAS,UAAA,CAAW,aAAA;AAAA,IACzC,mBAAA,EAAqB,MAAM,QAAA,CAAS,EAAA;AAAA,IACpC,UAAA,EAAY,KAAA,CAAM,QAAA,CAAS,UAAA,CAAW,UAAA;AAAA,IACtC;AAAA,GACF;AACF;AAEA,SAAS,oBAAA,CAAqB,OAAmB,MAAA,EAAkC;AACjF,EAAA,IAAI,OAAO,OAAA,EAAS;AAClB,IAAA,oBAAA,CAAqB,OAAO,MAAM,CAAA;AAClC,IAAA;AAAA,EACF;AACA,EAAA,oBAAA,CAAqB,KAAK,CAAA;AAC5B;AAEA,SAAS,qBAAqB,UAAA,EAAoE;AAChG,EAAA,KAAA,IAAS,IAAI,UAAA,CAAW,MAAA,GAAS,GAAG,CAAA,IAAK,CAAA,EAAG,KAAK,CAAA,EAAG;AAClD,IAAA,IAAI,UAAA,CAAW,CAAC,CAAA,CAAE,KAAA,EAAO;AACvB,MAAA,OAAO,WAAW,CAAC,CAAA;AAAA,IACrB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,cAAiB,KAAA,EAAqC;AAC7D,EAAA,OAAO,QAAQ,KAAK,CAAA,IAAK,OAAO,KAAA,KAAU,YAAY,MAAA,IAAW,KAAA;AACnE","file":"router.js","sourcesContent":["import { captureRuntimeError, RuntimeErrorBoundary, RuntimeErrorInfo, withRuntimeErrorBoundary } from './errors.js';\nimport { signal, SignalAccessor } from './signals.js';\nimport { cacheRouteDataResult, clearRouteDataResult } from './route-data-registry.js';\nimport { flattenRoutes, getRouteId, matchRoute, normalizePathname } from './router-utils.js';\nimport type { FlattenedRouteNode } from './router-utils.js';\n\nexport type RouteComponentFactory = () => Promise<Record<string, unknown>> | Record<string, unknown>;\n\nexport interface RouteBoundaryConfig {\n id?: string;\n name?: string;\n componentName?: string;\n templateId?: string;\n attributes?: Record<string, unknown>;\n onError?: (error: Error, info: RuntimeErrorInfo) => boolean | undefined;\n}\n\nexport type RouteLayoutDefinition = RouteBoundaryConfig;\n\nexport interface RouteDefinition {\n id?: string;\n path: string;\n component: RouteComponentFactory;\n boundary?: RouteBoundaryConfig;\n layouts?: RouteLayoutDefinition[];\n loader?: RouteDataHandler;\n action?: RouteDataHandler;\n guards?: RouteGuard[];\n children?: RouteDefinition[];\n}\n\nexport interface RouteHandlerArgs {\n params: Record<string, string>;\n request?: Request;\n signal?: AbortSignal;\n context?: Record<string, unknown>;\n}\n\nexport type RouteDataHandler<T = unknown> = (args: RouteHandlerArgs) => T | Promise<T>;\n\nexport interface RouteHandlerResult<T = unknown> {\n data?: T;\n error?: Error;\n info?: RuntimeErrorInfo | null;\n handled: boolean;\n startedAt?: number;\n endedAt?: number;\n durationMs?: number;\n}\n\nexport interface RouteGuardContext {\n match: RouteMatch;\n params: Record<string, string>;\n}\n\nexport type RouteGuardResult =\n | { type: 'continue' }\n | { type: 'redirect'; to: string; options?: NavigateOptions }\n | { type: 'error'; error: Error; info?: RuntimeErrorInfo | null };\n\nexport type RouteGuard = (context: RouteGuardContext) => RouteGuardResult | undefined;\n\nexport interface RoutePrefetchOptions {\n loadData?: boolean;\n loaderArgs?: PartialRouteHandlerArgs;\n}\n\nconst CONTINUE_NAVIGATION: RouteGuardResult = { type: 'continue' } as const;\nconst MAX_GUARD_REDIRECTS = 8;\n\nexport function allowNavigation(): RouteGuardResult {\n return CONTINUE_NAVIGATION;\n}\n\nexport function redirectNavigation(to: string, options?: NavigateOptions): RouteGuardResult {\n return { type: 'redirect', to, options };\n}\n\nexport function errorNavigation(error: Error, info?: RuntimeErrorInfo | null): RouteGuardResult {\n return { type: 'error', error, info: info ?? null };\n}\n\nexport type RouterBoundaryKind = 'layout' | 'route';\n\nexport interface RouteBoundaryConfigResolved extends RouteBoundaryConfig {\n id: string;\n componentName: string;\n attributes: Record<string, unknown>;\n}\n\nexport interface RouterBoundaryState {\n id: string;\n kind: RouterBoundaryKind;\n definition: RouteBoundaryConfigResolved;\n boundary: RuntimeErrorBoundary;\n error: Error | null;\n info: RuntimeErrorInfo | null;\n reset(): void;\n}\n\nexport interface RouteMatch {\n route: RouteDefinition;\n params: Record<string, string>;\n fullPath: string;\n layouts: RouterBoundaryState[];\n boundary: RouterBoundaryState;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: unknown;\n}\n\nexport interface Router {\n currentPath: SignalAccessor<string>;\n currentMatch: SignalAccessor<RouteMatch | null>;\n navigate(path: string, options?: NavigateOptions): RouteMatch | null;\n match(path?: string): RouteMatch | null;\n start(): void;\n dispose(): void;\n}\n\nexport interface RouterOptions {\n routes: RouteDefinition[];\n notFoundRoute?: RouteDefinition;\n errorRoute?: RouteDefinition;\n}\n\nexport function createRouter(input: RouteDefinition[] | RouterOptions): Router {\n const options = normalizeRouterOptions(input);\n const flattened = flattenRoutes(options.routes);\n const notFoundRoute = normalizeFallbackRoute(options.notFoundRoute, 'not-found', '*');\n const errorRoute = normalizeFallbackRoute(options.errorRoute, 'error', '/__error');\n const initialPath = typeof window !== 'undefined' ? window.location.pathname : '/';\n const currentPath = signal(initialPath);\n const currentMatchSignal = signal<RouteMatch | null>(resolveMatch(initialPath));\n\n function resolveMatch(path: string): RouteMatch | null {\n for (const node of flattened) {\n const params = matchRoute(path, node.fullPath);\n if (params) {\n return instantiateMatch(node, params);\n }\n }\n if (notFoundRoute) {\n return createFallbackMatch(notFoundRoute, path, 'not-found');\n }\n return null;\n }\n\n function instantiateMatch(node: FlattenedRouteNode, params: Record<string, string>): RouteMatch {\n const layouts = collectLayouts(node.branch, node.fullPath, params);\n const routeBoundary = createRouterBoundaryState(\n 'route',\n normalizeBoundaryConfig('route', node.route.boundary, {\n routeId: getRouteId(node.route),\n path: node.fullPath,\n params,\n }),\n );\n return {\n route: node.route,\n params,\n fullPath: node.fullPath,\n layouts,\n boundary: routeBoundary,\n } satisfies RouteMatch;\n }\n\n function collectLayouts(branch: RouteDefinition[], fullPath: string, params: Record<string, string>): RouterBoundaryState[] {\n const states: RouterBoundaryState[] = [];\n branch.forEach(route => {\n (route.layouts ?? []).forEach((layout, index) => {\n states.push(\n createRouterBoundaryState(\n 'layout',\n normalizeBoundaryConfig('layout', layout, {\n routeId: getRouteId(route),\n path: fullPath,\n layoutIndex: index,\n params,\n }),\n ),\n );\n });\n });\n return states;\n }\n\n function createFallbackMatch(\n route: RouteDefinition,\n requestedPath: string,\n reason: 'not-found' | 'error',\n error?: Error,\n errorMessage?: string,\n ): RouteMatch {\n const normalizedPath = normalizePathname(requestedPath);\n const params = matchRoute(normalizedPath, route.path) ?? {};\n const statusCode = reason === 'not-found' ? 404 : 500;\n const boundaryConfig: RouteBoundaryConfig = {\n ...(route.boundary ?? {}),\n attributes: {\n ...(route.boundary?.attributes ?? {}),\n requestedPath: normalizedPath,\n statusCode,\n reason,\n errorMessage: errorMessage ?? error?.message,\n },\n };\n const layouts = collectLayouts([route], normalizedPath, params);\n const routeBoundary = createRouterBoundaryState(\n 'route',\n normalizeBoundaryConfig('route', boundaryConfig, {\n routeId: getRouteId(route),\n path: normalizedPath,\n params,\n }),\n );\n return {\n route,\n params,\n fullPath: normalizedPath,\n layouts,\n boundary: routeBoundary,\n } satisfies RouteMatch;\n }\n\n function match(path?: string): RouteMatch | null {\n const resolved = resolveMatch(path ?? currentPath());\n if (path === undefined) {\n currentMatchSignal.set(resolved);\n }\n return resolved;\n }\n\n function navigate(path: string, options?: NavigateOptions): RouteMatch | null {\n return runNavigation(path, options, 0);\n }\n\n function onPopState() {\n if (typeof window === 'undefined') {\n return;\n }\n const nextPath = window.location.pathname;\n runNavigation(nextPath, { replace: true }, 0);\n }\n\n const start = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.addEventListener('popstate', onPopState);\n };\n\n const dispose = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.removeEventListener('popstate', onPopState);\n };\n\n function runNavigation(path: string, options: NavigateOptions | undefined, depth: number): RouteMatch | null {\n const resolved = resolveMatch(path);\n if (!resolved) {\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(null);\n return null;\n }\n const guardResult = runRouteGuards(resolved);\n if (guardResult.type === 'redirect') {\n if (depth >= MAX_GUARD_REDIRECTS) {\n throw new Error('Router redirect loop detected.');\n }\n const nextOptions: NavigateOptions = { ...options, ...guardResult.options, replace: true };\n return runNavigation(guardResult.to, nextOptions, depth + 1);\n }\n if (guardResult.type === 'error') {\n const info = guardResult.info ?? createGuardErrorInfo(resolved);\n const rawMessage = guardResult.error.message;\n if (errorRoute) {\n try {\n captureRuntimeError(guardResult.error, info);\n } catch {\n // Guard error is surfaced via fallback routes; avoid throwing.\n }\n const errorMatch = createFallbackMatch(errorRoute, path, 'error', guardResult.error, rawMessage);\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(errorMatch);\n return errorMatch;\n }\n captureRuntimeError(guardResult.error, info);\n return currentMatchSignal();\n }\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(resolved);\n return resolved;\n }\n\n function applyHistory(path: string, options?: NavigateOptions) {\n if (typeof window === 'undefined') {\n return;\n }\n const historyState = options?.state ?? {};\n if (options?.replace) {\n window.history.replaceState(historyState, '', path);\n } else {\n window.history.pushState(historyState, '', path);\n }\n }\n\n function runRouteGuards(match: RouteMatch): RouteGuardResult {\n const guards = match.route.guards ?? [];\n for (const guard of guards) {\n const result = guard({ match, params: match.params }) ?? CONTINUE_NAVIGATION;\n if (result.type !== 'continue') {\n return result;\n }\n }\n return CONTINUE_NAVIGATION;\n }\n\n function createGuardErrorInfo(match: RouteMatch): RuntimeErrorInfo {\n return {\n phase: 'navigation',\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes: {\n routeId: match.route.id ?? match.fullPath,\n fullPath: match.fullPath,\n },\n } satisfies RuntimeErrorInfo;\n }\n\n return {\n currentPath,\n currentMatch: currentMatchSignal,\n navigate,\n match,\n start,\n dispose,\n } satisfies Router;\n}\n\nfunction normalizeRouterOptions(input: RouteDefinition[] | RouterOptions): RouterOptions {\n if (Array.isArray(input)) {\n return { routes: input };\n }\n return input;\n}\n\nfunction normalizeFallbackRoute(\n route: RouteDefinition | undefined,\n fallbackId: string,\n fallbackPath: string,\n): RouteDefinition | undefined {\n if (!route) {\n return undefined;\n }\n return {\n ...route,\n id: route.id ?? fallbackId,\n path: route.path || fallbackPath,\n };\n}\n\n\nexport async function runRouteLoader<T = unknown>(\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const result = await executeRouteHandler<T>('loader', match.route.loader as RouteDataHandler<T> | undefined, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\n\nexport async function runRouteAction<T = unknown>(\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const result = await executeRouteHandler<T>('action', match.route.action as RouteDataHandler<T> | undefined, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\n\nexport async function prefetchRoute(match: RouteMatch, options?: RoutePrefetchOptions): Promise<void> {\n await Promise.resolve(match.route.component());\n if (options?.loadData) {\n await runRouteLoader(match, options.loaderArgs);\n }\n}\n\ntype RouteHandlerKind = 'loader' | 'action';\n\ntype PartialRouteHandlerArgs = Partial<Omit<RouteHandlerArgs, 'params'>> & { params?: Record<string, string> };\n\ninterface BoundaryContextExtras {\n routeId: string;\n path: string;\n layoutIndex?: number;\n params?: Record<string, string>;\n}\n\nfunction normalizeBoundaryConfig(\n kind: RouterBoundaryKind,\n config: RouteBoundaryConfig | undefined,\n context: BoundaryContextExtras,\n): RouteBoundaryConfigResolved {\n const layoutSuffix = typeof context.layoutIndex === 'number' ? `:${String(context.layoutIndex)}` : '';\n const fallbackId = `${kind}:${context.routeId}${layoutSuffix}`;\n const componentName = config?.componentName ?? config?.name ?? context.routeId;\n const attributes = {\n ...(config?.attributes ?? {}),\n routeId: context.routeId,\n path: context.path,\n layoutIndex: context.layoutIndex,\n params: context.params ? { ...context.params } : undefined,\n } satisfies Record<string, unknown>;\n return {\n ...config,\n id: config?.id ?? fallbackId,\n name: config?.name ?? componentName,\n componentName,\n attributes,\n } as RouteBoundaryConfigResolved;\n}\n\nfunction createRouterBoundaryState(\n kind: RouterBoundaryKind,\n definition: RouteBoundaryConfigResolved,\n): RouterBoundaryState {\n const state: RouterBoundaryState = {\n id: definition.id,\n kind,\n definition,\n boundary: {\n id: definition.id,\n handle(error, info) {\n state.error = error;\n state.info = info;\n if (definition.onError) {\n try {\n const handled = definition.onError(error, info);\n if (handled === false) {\n return false;\n }\n } catch (hookError) {\n state.error = hookError instanceof Error ? hookError : new Error(String(hookError));\n state.info = info;\n }\n }\n return true;\n },\n },\n error: null,\n info: null,\n reset() {\n state.error = null;\n state.info = null;\n },\n } satisfies RouterBoundaryState;\n return state;\n}\n\nasync function executeRouteHandler<T>(\n kind: RouteHandlerKind,\n handler: RouteDataHandler<T> | undefined,\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const startedAt = Date.now();\n if (!handler) {\n return {\n handled: true,\n startedAt,\n endedAt: startedAt,\n durationMs: 0,\n } satisfies RouteHandlerResult<T>;\n }\n const normalizedArgs = normalizeHandlerArgs(match, args);\n const boundaries = [...match.layouts, match.boundary];\n boundaries.forEach(boundary => {\n boundary.reset();\n });\n try {\n const data = await runWithBoundaries(boundaries, () => invokeRouteHandler(handler, kind, match, normalizedArgs));\n const boundaryError = firstErroredBoundary(boundaries);\n const endedAt = Date.now();\n if (boundaryError) {\n return {\n handled: true,\n error: boundaryError.error ?? undefined,\n info: boundaryError.info ?? null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n }\n return {\n handled: true,\n data: data as T,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n } catch (error) {\n const normalized = error instanceof Error ? error : new Error(String(error));\n const endedAt = Date.now();\n return {\n handled: false,\n error: normalized,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n }\n}\n\nfunction normalizeHandlerArgs(match: RouteMatch, args?: PartialRouteHandlerArgs): RouteHandlerArgs {\n return {\n params: args?.params ?? match.params,\n request: args?.request,\n signal: args?.signal,\n context: args?.context,\n } satisfies RouteHandlerArgs;\n}\n\nfunction runWithBoundaries<T>(boundaries: RouterBoundaryState[], run: () => T): T {\n return boundaries.reduceRight((next, boundary) => {\n return () => withRuntimeErrorBoundary(boundary.boundary, next);\n }, run)();\n}\n\nfunction invokeRouteHandler<T>(\n handler: RouteDataHandler<T>,\n kind: RouteHandlerKind,\n match: RouteMatch,\n args: RouteHandlerArgs,\n): T | Promise<T | undefined> | undefined {\n const phase = kind === 'loader' ? 'loader' : 'action';\n const info = createHandlerErrorInfo(phase, match, args);\n try {\n const result = handler(args);\n if (isPromiseLike(result)) {\n return result.catch((error: unknown) => {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n });\n }\n return result;\n } catch (error: unknown) {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n }\n}\n\nfunction createHandlerErrorInfo(\n phase: 'loader' | 'action',\n match: RouteMatch,\n args: RouteHandlerArgs,\n): RuntimeErrorInfo {\n const attributes = {\n ...match.boundary.definition.attributes,\n params: args.params,\n requestMethod: args.request?.method,\n layoutStack: match.layouts.map(layout => layout.definition.id),\n } satisfies Record<string, unknown>;\n return {\n phase,\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes,\n } satisfies RuntimeErrorInfo;\n}\n\nfunction updateRouteDataCache(match: RouteMatch, result: RouteHandlerResult): void {\n if (result.handled) {\n cacheRouteDataResult(match, result);\n return;\n }\n clearRouteDataResult(match);\n}\n\nfunction firstErroredBoundary(boundaries: RouterBoundaryState[]): RouterBoundaryState | undefined {\n for (let i = boundaries.length - 1; i >= 0; i -= 1) {\n if (boundaries[i].error) {\n return boundaries[i];\n }\n }\n return undefined;\n}\n\nfunction isPromiseLike<T>(value: unknown): value is Promise<T> {\n return Boolean(value) && typeof value === 'object' && 'then' in (value as Record<string, unknown>);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/router.ts"],"names":["options","match"],"mappings":"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","file":"router.js","sourcesContent":["import { captureRuntimeError, RuntimeErrorBoundary, RuntimeErrorInfo, withRuntimeErrorBoundary } from './errors.js';\nimport { signal, SignalAccessor } from './signals.js';\nimport { cacheRouteDataResult, clearRouteDataResult } from './route-data-registry.js';\nimport { flattenRoutes, getRouteId, matchRoute, normalizePathname } from './router-utils.js';\nimport type { FlattenedRouteNode } from './router-utils.js';\n\nexport type RouteComponentFactory = () => Promise<Record<string, unknown>> | Record<string, unknown>;\n\nexport interface RouteBoundaryConfig {\n id?: string;\n name?: string;\n componentName?: string;\n templateId?: string;\n attributes?: Record<string, unknown>;\n onError?: (error: Error, info: RuntimeErrorInfo) => boolean | undefined;\n}\n\nexport type RouteLayoutDefinition = RouteBoundaryConfig;\n\nexport interface RouteDefinition {\n id?: string;\n path: string;\n component: RouteComponentFactory;\n boundary?: RouteBoundaryConfig;\n layouts?: RouteLayoutDefinition[];\n loader?: RouteDataHandler;\n action?: RouteDataHandler;\n guards?: RouteGuard[];\n children?: RouteDefinition[];\n}\n\nexport interface RouteHandlerArgs {\n params: Record<string, string>;\n request?: Request;\n signal?: AbortSignal;\n context?: Record<string, unknown>;\n}\n\nexport type RouteDataHandler<T = unknown> = (args: RouteHandlerArgs) => T | Promise<T>;\n\nexport interface RouteHandlerResult<T = unknown> {\n data?: T;\n error?: Error;\n info?: RuntimeErrorInfo | null;\n handled: boolean;\n startedAt?: number;\n endedAt?: number;\n durationMs?: number;\n}\n\nexport interface RouteGuardContext {\n match: RouteMatch;\n params: Record<string, string>;\n}\n\nexport type RouteGuardResult =\n | { type: 'continue' }\n | { type: 'redirect'; to: string; options?: NavigateOptions }\n | { type: 'error'; error: Error; info?: RuntimeErrorInfo | null };\n\nexport type RouteGuard = (context: RouteGuardContext) => RouteGuardResult | undefined;\n\nexport interface RoutePrefetchOptions {\n loadData?: boolean;\n loaderArgs?: PartialRouteHandlerArgs;\n}\n\nconst CONTINUE_NAVIGATION: RouteGuardResult = { type: 'continue' } as const;\nconst MAX_GUARD_REDIRECTS = 8;\n\nexport function allowNavigation(): RouteGuardResult {\n return CONTINUE_NAVIGATION;\n}\n\nexport function redirectNavigation(to: string, options?: NavigateOptions): RouteGuardResult {\n return { type: 'redirect', to, options };\n}\n\nexport function errorNavigation(error: Error, info?: RuntimeErrorInfo | null): RouteGuardResult {\n return { type: 'error', error, info: info ?? null };\n}\n\nexport type RouterBoundaryKind = 'layout' | 'route';\n\nexport interface RouteBoundaryConfigResolved extends RouteBoundaryConfig {\n id: string;\n componentName: string;\n attributes: Record<string, unknown>;\n}\n\nexport interface RouterBoundaryState {\n id: string;\n kind: RouterBoundaryKind;\n definition: RouteBoundaryConfigResolved;\n boundary: RuntimeErrorBoundary;\n error: Error | null;\n info: RuntimeErrorInfo | null;\n reset(): void;\n}\n\nexport interface RouteMatch {\n route: RouteDefinition;\n params: Record<string, string>;\n fullPath: string;\n layouts: RouterBoundaryState[];\n boundary: RouterBoundaryState;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: unknown;\n}\n\nexport interface Router {\n currentPath: SignalAccessor<string>;\n currentMatch: SignalAccessor<RouteMatch | null>;\n navigate(path: string, options?: NavigateOptions): RouteMatch | null;\n match(path?: string): RouteMatch | null;\n start(): void;\n dispose(): void;\n}\n\nexport interface RouterOptions {\n routes: RouteDefinition[];\n notFoundRoute?: RouteDefinition;\n errorRoute?: RouteDefinition;\n}\n\nexport function createRouter(input: RouteDefinition[] | RouterOptions): Router {\n const options = normalizeRouterOptions(input);\n const flattened = flattenRoutes(options.routes);\n const notFoundRoute = normalizeFallbackRoute(options.notFoundRoute, 'not-found', '*');\n const errorRoute = normalizeFallbackRoute(options.errorRoute, 'error', '/__error');\n const initialPath = typeof window !== 'undefined' ? window.location.pathname : '/';\n const currentPath = signal(initialPath);\n const currentMatchSignal = signal<RouteMatch | null>(resolveMatch(initialPath));\n\n function resolveMatch(path: string): RouteMatch | null {\n for (const node of flattened) {\n const params = matchRoute(path, node.fullPath);\n if (params) {\n return instantiateMatch(node, params);\n }\n }\n if (notFoundRoute) {\n return createFallbackMatch(notFoundRoute, path, 'not-found');\n }\n return null;\n }\n\n function instantiateMatch(node: FlattenedRouteNode, params: Record<string, string>): RouteMatch {\n const layouts = collectLayouts(node.branch, node.fullPath, params);\n const routeBoundary = createRouterBoundaryState(\n 'route',\n normalizeBoundaryConfig('route', node.route.boundary, {\n routeId: getRouteId(node.route),\n path: node.fullPath,\n params,\n }),\n );\n return {\n route: node.route,\n params,\n fullPath: node.fullPath,\n layouts,\n boundary: routeBoundary,\n } satisfies RouteMatch;\n }\n\n function collectLayouts(branch: RouteDefinition[], fullPath: string, params: Record<string, string>): RouterBoundaryState[] {\n const states: RouterBoundaryState[] = [];\n branch.forEach(route => {\n (route.layouts ?? []).forEach((layout, index) => {\n states.push(\n createRouterBoundaryState(\n 'layout',\n normalizeBoundaryConfig('layout', layout, {\n routeId: getRouteId(route),\n path: fullPath,\n layoutIndex: index,\n params,\n }),\n ),\n );\n });\n });\n return states;\n }\n\n function createFallbackMatch(\n route: RouteDefinition,\n requestedPath: string,\n reason: 'not-found' | 'error',\n error?: Error,\n errorMessage?: string,\n ): RouteMatch {\n const normalizedPath = normalizePathname(requestedPath);\n const params = matchRoute(normalizedPath, route.path) ?? {};\n const statusCode = reason === 'not-found' ? 404 : 500;\n const boundaryConfig: RouteBoundaryConfig = {\n ...(route.boundary ?? {}),\n attributes: {\n ...(route.boundary?.attributes ?? {}),\n requestedPath: normalizedPath,\n statusCode,\n reason,\n errorMessage: errorMessage ?? error?.message,\n },\n };\n const layouts = collectLayouts([route], normalizedPath, params);\n const routeBoundary = createRouterBoundaryState(\n 'route',\n normalizeBoundaryConfig('route', boundaryConfig, {\n routeId: getRouteId(route),\n path: normalizedPath,\n params,\n }),\n );\n return {\n route,\n params,\n fullPath: normalizedPath,\n layouts,\n boundary: routeBoundary,\n } satisfies RouteMatch;\n }\n\n function match(path?: string): RouteMatch | null {\n const resolved = resolveMatch(path ?? currentPath());\n if (path === undefined) {\n currentMatchSignal.set(resolved);\n }\n return resolved;\n }\n\n function navigate(path: string, options?: NavigateOptions): RouteMatch | null {\n return runNavigation(path, options, 0);\n }\n\n function onPopState() {\n if (typeof window === 'undefined') {\n return;\n }\n const nextPath = window.location.pathname;\n runNavigation(nextPath, { replace: true }, 0);\n }\n\n const start = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.addEventListener('popstate', onPopState);\n };\n\n const dispose = () => {\n if (typeof window === 'undefined') {\n return;\n }\n window.removeEventListener('popstate', onPopState);\n };\n\n function runNavigation(path: string, options: NavigateOptions | undefined, depth: number): RouteMatch | null {\n const resolved = resolveMatch(path);\n if (!resolved) {\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(null);\n return null;\n }\n const guardResult = runRouteGuards(resolved);\n if (guardResult.type === 'redirect') {\n if (depth >= MAX_GUARD_REDIRECTS) {\n throw new Error('Router redirect loop detected.');\n }\n const nextOptions: NavigateOptions = { ...options, ...guardResult.options, replace: true };\n return runNavigation(guardResult.to, nextOptions, depth + 1);\n }\n if (guardResult.type === 'error') {\n const info = guardResult.info ?? createGuardErrorInfo(resolved);\n const rawMessage = guardResult.error.message;\n if (errorRoute) {\n try {\n captureRuntimeError(guardResult.error, info);\n } catch {\n // Guard error is surfaced via fallback routes; avoid throwing.\n }\n const errorMatch = createFallbackMatch(errorRoute, path, 'error', guardResult.error, rawMessage);\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(errorMatch);\n return errorMatch;\n }\n captureRuntimeError(guardResult.error, info);\n return currentMatchSignal();\n }\n applyHistory(path, options);\n currentPath.set(path);\n currentMatchSignal.set(resolved);\n return resolved;\n }\n\n function applyHistory(path: string, options?: NavigateOptions) {\n if (typeof window === 'undefined') {\n return;\n }\n const historyState = options?.state ?? {};\n if (options?.replace) {\n window.history.replaceState(historyState, '', path);\n } else {\n window.history.pushState(historyState, '', path);\n }\n }\n\n function runRouteGuards(match: RouteMatch): RouteGuardResult {\n const guards = match.route.guards ?? [];\n for (const guard of guards) {\n const result = guard({ match, params: match.params }) ?? CONTINUE_NAVIGATION;\n if (result.type !== 'continue') {\n return result;\n }\n }\n return CONTINUE_NAVIGATION;\n }\n\n function createGuardErrorInfo(match: RouteMatch): RuntimeErrorInfo {\n return {\n phase: 'navigation',\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes: {\n routeId: match.route.id ?? match.fullPath,\n fullPath: match.fullPath,\n },\n } satisfies RuntimeErrorInfo;\n }\n\n return {\n currentPath,\n currentMatch: currentMatchSignal,\n navigate,\n match,\n start,\n dispose,\n } satisfies Router;\n}\n\nfunction normalizeRouterOptions(input: RouteDefinition[] | RouterOptions): RouterOptions {\n if (Array.isArray(input)) {\n return { routes: input };\n }\n return input;\n}\n\nfunction normalizeFallbackRoute(\n route: RouteDefinition | undefined,\n fallbackId: string,\n fallbackPath: string,\n): RouteDefinition | undefined {\n if (!route) {\n return undefined;\n }\n return {\n ...route,\n id: route.id ?? fallbackId,\n path: route.path || fallbackPath,\n };\n}\n\n\nexport async function runRouteLoader<T = unknown>(\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const result = await executeRouteHandler<T>('loader', match.route.loader as RouteDataHandler<T> | undefined, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\n\nexport async function runRouteAction<T = unknown>(\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const result = await executeRouteHandler<T>('action', match.route.action as RouteDataHandler<T> | undefined, match, args);\n updateRouteDataCache(match, result);\n return result;\n}\n\nexport async function prefetchRoute(match: RouteMatch, options?: RoutePrefetchOptions): Promise<void> {\n await Promise.resolve(match.route.component());\n if (options?.loadData) {\n await runRouteLoader(match, options.loaderArgs);\n }\n}\n\ntype RouteHandlerKind = 'loader' | 'action';\n\ntype PartialRouteHandlerArgs = Partial<Omit<RouteHandlerArgs, 'params'>> & { params?: Record<string, string> };\n\ninterface BoundaryContextExtras {\n routeId: string;\n path: string;\n layoutIndex?: number;\n params?: Record<string, string>;\n}\n\nfunction normalizeBoundaryConfig(\n kind: RouterBoundaryKind,\n config: RouteBoundaryConfig | undefined,\n context: BoundaryContextExtras,\n): RouteBoundaryConfigResolved {\n const layoutSuffix = typeof context.layoutIndex === 'number' ? `:${String(context.layoutIndex)}` : '';\n const fallbackId = `${kind}:${context.routeId}${layoutSuffix}`;\n const componentName = config?.componentName ?? config?.name ?? context.routeId;\n const attributes = {\n ...(config?.attributes ?? {}),\n routeId: context.routeId,\n path: context.path,\n layoutIndex: context.layoutIndex,\n params: context.params ? { ...context.params } : undefined,\n } satisfies Record<string, unknown>;\n return {\n ...config,\n id: config?.id ?? fallbackId,\n name: config?.name ?? componentName,\n componentName,\n attributes,\n };\n}\n\nfunction createRouterBoundaryState(\n kind: RouterBoundaryKind,\n definition: RouteBoundaryConfigResolved,\n): RouterBoundaryState {\n const state: RouterBoundaryState = {\n id: definition.id,\n kind,\n definition,\n boundary: {\n id: definition.id,\n handle(error, info) {\n state.error = error;\n state.info = info;\n if (definition.onError) {\n try {\n const handled = definition.onError(error, info);\n if (handled === false) {\n return false;\n }\n } catch (hookError) {\n state.error = hookError instanceof Error ? hookError : new Error(String(hookError));\n state.info = info;\n }\n }\n return true;\n },\n },\n error: null,\n info: null,\n reset() {\n state.error = null;\n state.info = null;\n },\n } satisfies RouterBoundaryState;\n return state;\n}\n\nasync function executeRouteHandler<T>(\n kind: RouteHandlerKind,\n handler: RouteDataHandler<T> | undefined,\n match: RouteMatch,\n args?: PartialRouteHandlerArgs,\n): Promise<RouteHandlerResult<T>> {\n const startedAt = Date.now();\n if (!handler) {\n return {\n handled: true,\n startedAt,\n endedAt: startedAt,\n durationMs: 0,\n } satisfies RouteHandlerResult<T>;\n }\n const normalizedArgs = normalizeHandlerArgs(match, args);\n const boundaries = [...match.layouts, match.boundary];\n boundaries.forEach(boundary => {\n boundary.reset();\n });\n try {\n const data = await runWithBoundaries(boundaries, () => invokeRouteHandler(handler, kind, match, normalizedArgs));\n const boundaryError = firstErroredBoundary(boundaries);\n const endedAt = Date.now();\n if (boundaryError) {\n return {\n handled: true,\n error: boundaryError.error ?? undefined,\n info: boundaryError.info ?? null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n }\n return {\n handled: true,\n data: data as T,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n } catch (error) {\n const normalized = error instanceof Error ? error : new Error(String(error));\n const endedAt = Date.now();\n return {\n handled: false,\n error: normalized,\n info: null,\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n } satisfies RouteHandlerResult<T>;\n }\n}\n\nfunction normalizeHandlerArgs(match: RouteMatch, args?: PartialRouteHandlerArgs): RouteHandlerArgs {\n return {\n params: args?.params ?? match.params,\n request: args?.request,\n signal: args?.signal,\n context: args?.context,\n } satisfies RouteHandlerArgs;\n}\n\nfunction runWithBoundaries<T>(boundaries: RouterBoundaryState[], run: () => T): T {\n return boundaries.reduceRight((next, boundary) => {\n return () => withRuntimeErrorBoundary(boundary.boundary, next);\n }, run)();\n}\n\nfunction invokeRouteHandler<T>(\n handler: RouteDataHandler<T>,\n kind: RouteHandlerKind,\n match: RouteMatch,\n args: RouteHandlerArgs,\n): T | Promise<T | undefined> | undefined {\n const phase = kind === 'loader' ? 'loader' : 'action';\n const info = createHandlerErrorInfo(phase, match, args);\n try {\n const result = handler(args);\n if (isPromiseLike(result)) {\n return result.catch((error: unknown) => {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n });\n }\n return result;\n } catch (error: unknown) {\n const handled = captureRuntimeError(error, info);\n if (!handled) {\n throw error;\n }\n return undefined;\n }\n}\n\nfunction createHandlerErrorInfo(\n phase: 'loader' | 'action',\n match: RouteMatch,\n args: RouteHandlerArgs,\n): RuntimeErrorInfo {\n const attributes = {\n ...match.boundary.definition.attributes,\n params: args.params,\n requestMethod: args.request?.method,\n layoutStack: match.layouts.map(layout => layout.definition.id),\n } satisfies Record<string, unknown>;\n return {\n phase,\n componentName: match.boundary.definition.componentName,\n componentInstanceId: match.boundary.id,\n templateId: match.boundary.definition.templateId,\n attributes,\n } satisfies RuntimeErrorInfo;\n}\n\nfunction updateRouteDataCache(match: RouteMatch, result: RouteHandlerResult): void {\n if (result.handled) {\n cacheRouteDataResult(match, result);\n return;\n }\n clearRouteDataResult(match);\n}\n\nfunction firstErroredBoundary(boundaries: RouterBoundaryState[]): RouterBoundaryState | undefined {\n for (let i = boundaries.length - 1; i >= 0; i -= 1) {\n if (boundaries[i].error) {\n return boundaries[i];\n }\n }\n return undefined;\n}\n\nfunction isPromiseLike<T>(value: unknown): value is Promise<T> {\n return Boolean(value) && typeof value === 'object' && 'then' in (value as Record<string, unknown>);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/theme.ts"],"names":[],"mappings":"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","file":"chunk-PVZVFICK.cjs","sourcesContent":["const themePresets: Record<string, Record<string, string>> = {\n dark: {\n \"--ce-color-background\": \"#0f172a\",\n \"--ce-color-surface\": \"#111827\",\n \"--ce-color-text\": \"#e2e8f0\",\n \"--ce-color-text-muted\": \"#94a3b8\",\n \"--ce-color-primary\": \"#7c3aed\",\n \"--ce-color-accent\": \"#7c3aed\",\n \"--ce-color-border\": \"rgba(255, 255, 255, 0.12)\",\n \"--ce-color-focus-ring\": \"#7c3aed\",\n \"--ce-font-family\": \"Inter, system-ui, sans-serif\",\n \"--app-bg\": \"radial-gradient(circle at 20% 20%, rgba(99, 102, 241, 0.18), transparent 32%), radial-gradient(circle at 80% 0%, rgba(45, 212, 191, 0.16), transparent 28%), linear-gradient(135deg, #0f172a, #0b1021 60%, #0b1021)\",\n \"--panel-bg\": \"rgba(255, 255, 255, 0.04)\",\n \"--panel-bg-hover\": \"rgba(255, 255, 255, 0.08)\",\n \"--panel-bg-active\": \"rgba(255, 255, 255, 0.12)\",\n \"--panel-border\": \"rgba(255, 255, 255, 0.08)\",\n \"--text-primary\": \"#e2e8f0\",\n \"--text-secondary\": \"#94a3b8\",\n \"--text-tertiary\": \"#64748b\",\n \"--text-inverse\": \"#0f172a\",\n \"--accent\": \"#7c3aed\",\n \"--accent-hover\": \"#8b5cf6\",\n \"--accent-light\": \"rgba(124, 58, 237, 0.16)\",\n \"--accent-border\": \"rgba(124, 58, 237, 0.6)\",\n \"--accent-2\": \"#22d3ee\",\n \"--accent-2-light\": \"rgba(34, 211, 238, 0.16)\",\n \"--surface-overlay\": \"rgba(255, 255, 255, 0.02)\",\n \"--surface-overlay-hover\": \"rgba(255, 255, 255, 0.05)\",\n \"--shadow-sm\": \"0 4px 12px rgba(0, 0, 0, 0.3)\",\n \"--shadow-md\": \"0 6px 18px rgba(0, 0, 0, 0.35)\",\n \"--shadow-lg\": \"0 20px 60px rgba(0, 0, 0, 0.4)\",\n \"--icon-color\": \"#e2e8f0\",\n \"--ce-accent\": \"#7c3aed\",\n \"--ce-accent-2\": \"#22d3ee\",\n \"--ce-surface\": \"#0f172a\",\n \"--ce-surface-2\": \"#111827\",\n \"--ce-text\": \"#e2e8f0\",\n \"--ce-border\": \"rgba(255, 255, 255, 0.12)\",\n colorScheme: \"dark\",\n },\n light: {\n \"--ce-color-background\": \"#f8fafc\",\n \"--ce-color-surface\": \"#ffffff\",\n \"--ce-color-text\": \"#0f172a\",\n \"--ce-color-text-muted\": \"#475569\",\n \"--ce-color-primary\": \"#4f46e5\",\n \"--ce-color-accent\": \"#4f46e5\",\n \"--ce-color-border\": \"rgba(15, 23, 42, 0.12)\",\n \"--ce-color-focus-ring\": \"#4f46e5\",\n \"--ce-font-family\": \"Inter, system-ui, sans-serif\",\n \"--app-bg\": \"linear-gradient(180deg, #f8fafc 0%, #eef2ff 40%, #f8fafc 100%)\",\n \"--panel-bg\": \"rgba(255, 255, 255, 0.9)\",\n \"--panel-bg-hover\": \"rgba(255, 255, 255, 0.95)\",\n \"--panel-bg-active\": \"rgba(255, 255, 255, 1)\",\n \"--panel-border\": \"rgba(15, 23, 42, 0.08)\",\n \"--text-primary\": \"#0f172a\",\n \"--text-secondary\": \"#475569\",\n \"--text-tertiary\": \"#64748b\",\n \"--text-inverse\": \"#ffffff\",\n \"--accent\": \"#4f46e5\",\n \"--accent-hover\": \"#6366f1\",\n \"--accent-light\": \"rgba(79, 70, 229, 0.12)\",\n \"--accent-border\": \"rgba(79, 70, 229, 0.4)\",\n \"--accent-2\": \"#06b6d4\",\n \"--accent-2-light\": \"rgba(6, 182, 212, 0.12)\",\n \"--surface-overlay\": \"rgba(15, 23, 42, 0.02)\",\n \"--surface-overlay-hover\": \"rgba(15, 23, 42, 0.05)\",\n \"--shadow-sm\": \"0 4px 12px rgba(0, 0, 0, 0.1)\",\n \"--shadow-md\": \"0 6px 18px rgba(0, 0, 0, 0.12)\",\n \"--shadow-lg\": \"0 20px 60px rgba(0, 0, 0, 0.15)\",\n \"--icon-color\": \"#0f172a\",\n \"--ce-accent\": \"#4f46e5\",\n \"--ce-accent-2\": \"#06b6d4\",\n \"--ce-surface\": \"#ffffff\",\n \"--ce-surface-2\": \"#f8fafc\",\n \"--ce-text\": \"#0f172a\",\n \"--ce-border\": \"rgba(15, 23, 42, 0.12)\",\n colorScheme: \"light\",\n },\n};\n\nconst tokenFallbacks: Record<string, string> = {\n \"--text-primary\": \"var(--ce-color-text)\",\n \"--text-secondary\": \"var(--ce-color-text-muted)\",\n \"--text-muted\": \"var(--ce-color-text-muted)\",\n \"--text-inverse\": \"var(--ce-color-background)\",\n \"--theme-bg\": \"var(--ce-color-background)\",\n \"--theme-surface\": \"var(--ce-color-surface)\",\n \"--theme-fg\": \"var(--ce-color-text)\",\n \"--theme-muted\": \"var(--ce-color-text-muted)\",\n \"--theme-primary\": \"var(--ce-color-primary)\",\n \"--theme-accent\": \"var(--ce-color-accent)\",\n \"--ce-text\": \"var(--ce-color-text)\",\n \"--ce-border\": \"var(--ce-color-border)\",\n \"--ce-surface\": \"var(--ce-color-surface)\",\n \"--ce-surface-2\": \"var(--ce-color-surface)\",\n};\n\nfunction applyTokenFallbacks(preset: Record<string, string>): void {\n Object.entries(tokenFallbacks).forEach(([token, fallback]) => {\n if (token in preset) return;\n document.documentElement.style.setProperty(token, fallback);\n });\n}\n\nexport type ThemeMode = \"light\" | \"dark\";\nexport type DensityMode = \"default\" | \"compact\" | \"comfortable\";\nexport type RadiusMode = \"default\" | \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"pill\" | \"circle\";\nexport type FontScale = \"sm\" | \"md\" | \"lg\" | \"xl\" | number;\n\nexport interface ThemeState {\n theme: ThemeMode;\n density: DensityMode;\n radius: RadiusMode;\n fontScale: FontScale;\n}\n\nconst STORAGE_KEYS = {\n theme: \"app-theme\",\n density: \"app-density\",\n radius: \"app-radius\",\n fontScale: \"app-font-scale\",\n} as const;\n\nconst FONT_SCALE_PRESETS: Record<Exclude<FontScale, number>, number> = {\n sm: 0.92,\n md: 1,\n lg: 1.08,\n xl: 1.16,\n};\n\nconst themeListeners = new Set<(state: ThemeState) => void>();\n\nconst radiusAliases: Record<string, string> = {\n \"--radius-none\": \"var(--ce-radius-none)\",\n \"--radius-xs\": \"var(--ce-radius-xs)\",\n \"--radius-sm\": \"var(--ce-radius-sm)\",\n \"--radius-md\": \"var(--ce-radius-md)\",\n \"--radius-lg\": \"var(--ce-radius-lg)\",\n \"--radius-xl\": \"var(--ce-radius-xl)\",\n \"--radius-pill\": \"var(--ce-radius-pill)\",\n \"--radius-full\": \"var(--ce-radius-circle)\",\n};\n\nfunction getStorage(): Storage | null {\n if (typeof localStorage === \"undefined\") {\n return null;\n }\n return localStorage;\n}\n\nexport function applyTheme(mode: ThemeMode): void {\n const preset = themePresets[mode];\n Object.entries(preset).forEach(([k, v]) => {\n if (k === \"colorScheme\") return;\n document.documentElement.style.setProperty(k, v);\n });\n applyTokenFallbacks(preset);\n applyRadiusAliases();\n document.documentElement.dataset.theme = mode;\n document.documentElement.dataset.ceTheme = mode;\n document.documentElement.classList.remove(\"theme-light\", \"theme-dark\");\n document.documentElement.classList.add(`theme-${mode}`);\n document.documentElement.style.colorScheme = preset.colorScheme;\n}\n\nexport function getInitialTheme(): ThemeMode {\n const storage = getStorage();\n const stored = storage?.getItem(STORAGE_KEYS.theme) as ThemeMode | null;\n if (stored === \"light\" || stored === \"dark\") return stored;\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") {\n return \"light\";\n }\n return window.matchMedia(\"(prefers-color-scheme: light)\").matches ? \"light\" : \"dark\";\n}\n\nexport function onThemeUpdate(listener: (state: ThemeState) => void): () => void {\n themeListeners.add(listener);\n return () => themeListeners.delete(listener);\n}\n\nexport function registerThemeAwareComponent(handler: (state: ThemeState) => void): () => void {\n handler(getStoredThemeState());\n return onThemeUpdate(handler);\n}\n\nexport function getStoredThemeState(): ThemeState {\n const storage = getStorage();\n const storedTheme = storage?.getItem(STORAGE_KEYS.theme) as ThemeMode | null;\n const theme = storedTheme === \"light\" || storedTheme === \"dark\" ? storedTheme : getInitialTheme();\n const density = (storage?.getItem(STORAGE_KEYS.density) as DensityMode | null) ?? \"default\";\n const radius = (storage?.getItem(STORAGE_KEYS.radius) as RadiusMode | null) ?? \"default\";\n const fontScaleRaw = storage?.getItem(STORAGE_KEYS.fontScale) ?? null;\n const fontScale = fontScaleRaw ? Number(fontScaleRaw) : \"md\";\n return { theme, density, radius, fontScale };\n}\n\nexport function hydrateThemeState(overrides: Partial<ThemeState> = {}): ThemeState {\n const state = { ...getStoredThemeState(), ...overrides };\n applyThemeState(state, { persist: false, guard: false });\n return state;\n}\n\nexport function setTheme(mode: ThemeMode): void {\n applyThemeState({ ...getStoredThemeState(), theme: mode });\n}\n\nexport function setDensity(mode: DensityMode): void {\n applyThemeState({ ...getStoredThemeState(), density: mode });\n}\n\nexport function setRadius(mode: RadiusMode): void {\n applyThemeState({ ...getStoredThemeState(), radius: mode });\n}\n\nexport function setFontScale(scale: FontScale): void {\n applyThemeState({ ...getStoredThemeState(), fontScale: scale });\n}\n\nexport function applyThemeState(state: ThemeState, options: { persist?: boolean; guard?: boolean } = {}): void {\n const { persist = true, guard = true } = options;\n const storage = getStorage();\n const apply = () => {\n applyTheme(state.theme);\n applyDensity(state.density);\n applyRadius(state.radius);\n applyFontScale(state.fontScale);\n };\n\n if (guard) {\n withThemeTransitionGuard(apply);\n } else {\n apply();\n }\n\n if (persist && storage) {\n storage.setItem(STORAGE_KEYS.theme, state.theme);\n storage.setItem(STORAGE_KEYS.density, state.density);\n storage.setItem(STORAGE_KEYS.radius, state.radius);\n storage.setItem(STORAGE_KEYS.fontScale, String(resolveFontScale(state.fontScale)));\n }\n\n document.documentElement.dataset.ceDensity = state.density;\n document.documentElement.dataset.ceRadius = state.radius;\n document.documentElement.dataset.ceFontScale = String(resolveFontScale(state.fontScale));\n notifyThemeUpdate(state);\n}\n\nexport function withThemeTransitionGuard(action: () => void): void {\n if (typeof document === \"undefined\") {\n action();\n return;\n }\n const style = document.createElement(\"style\");\n style.setAttribute(\"data-ce-theme-guard\", \"true\");\n style.textContent = \"*{transition:none !important;animation:none !important;}\";\n document.head.appendChild(style);\n action();\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n style.remove();\n });\n });\n}\n\nfunction notifyThemeUpdate(state: ThemeState): void {\n themeListeners.forEach((listener) => listener(state));\n}\n\nfunction applyDensity(mode: DensityMode): void {\n if (mode === \"default\") {\n document.documentElement.style.removeProperty(\"--ce-density-compact\");\n document.documentElement.style.removeProperty(\"--ce-density-comfortable\");\n return;\n }\n\n const compact = mode === \"compact\" ? 0.85 : 1;\n const comfortable = mode === \"comfortable\" ? 1 : 0.85;\n document.documentElement.style.setProperty(\"--ce-density-compact\", String(compact));\n document.documentElement.style.setProperty(\"--ce-density-comfortable\", String(comfortable));\n}\n\nfunction applyRadius(mode: RadiusMode): void {\n if (mode === \"default\") {\n applyRadiusAliases();\n return;\n }\n\n const value = resolveRadius(mode);\n const keys = [\n \"--radius-none\",\n \"--radius-xs\",\n \"--radius-sm\",\n \"--radius-md\",\n \"--radius-lg\",\n \"--radius-xl\",\n \"--radius-pill\",\n \"--radius-full\",\n ];\n keys.forEach((key) => document.documentElement.style.setProperty(key, value));\n}\n\nfunction applyRadiusAliases(): void {\n Object.entries(radiusAliases).forEach(([key, value]) => {\n document.documentElement.style.setProperty(key, value);\n });\n}\n\nfunction resolveRadius(mode: RadiusMode): string {\n switch (mode) {\n case \"none\":\n return \"0\";\n case \"sm\":\n return \"var(--ce-radius-sm)\";\n case \"md\":\n return \"var(--ce-radius-md)\";\n case \"lg\":\n return \"var(--ce-radius-lg)\";\n case \"xl\":\n return \"var(--ce-radius-xl)\";\n case \"pill\":\n return \"var(--ce-radius-pill)\";\n case \"circle\":\n return \"var(--ce-radius-circle)\";\n case \"default\":\n default:\n return \"var(--ce-radius-md)\";\n }\n}\n\nfunction applyFontScale(scale: FontScale): void {\n const resolved = resolveFontScale(scale);\n document.documentElement.style.setProperty(\"--ce-font-scale\", String(resolved));\n document.documentElement.style.fontSize = `${Math.round(resolved * 100)}%`;\n}\n\nfunction resolveFontScale(scale: FontScale): number {\n if (typeof scale === \"number\" && Number.isFinite(scale)) return scale;\n if (typeof scale === \"string\" && scale in FONT_SCALE_PRESETS) {\n return FONT_SCALE_PRESETS[scale as keyof typeof FONT_SCALE_PRESETS];\n }\n return 1;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/theme.ts"],"names":[],"mappings":"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","file":"chunk-Q3KH6HMU.js","sourcesContent":["const themePresets: Record<string, Record<string, string>> = {\n dark: {\n \"--ce-color-background\": \"#0f172a\",\n \"--ce-color-surface\": \"#111827\",\n \"--ce-color-text\": \"#e2e8f0\",\n \"--ce-color-text-muted\": \"#94a3b8\",\n \"--ce-color-primary\": \"#7c3aed\",\n \"--ce-color-accent\": \"#7c3aed\",\n \"--ce-color-border\": \"rgba(255, 255, 255, 0.12)\",\n \"--ce-color-focus-ring\": \"#7c3aed\",\n \"--ce-font-family\": \"Inter, system-ui, sans-serif\",\n \"--app-bg\": \"radial-gradient(circle at 20% 20%, rgba(99, 102, 241, 0.18), transparent 32%), radial-gradient(circle at 80% 0%, rgba(45, 212, 191, 0.16), transparent 28%), linear-gradient(135deg, #0f172a, #0b1021 60%, #0b1021)\",\n \"--panel-bg\": \"rgba(255, 255, 255, 0.04)\",\n \"--panel-bg-hover\": \"rgba(255, 255, 255, 0.08)\",\n \"--panel-bg-active\": \"rgba(255, 255, 255, 0.12)\",\n \"--panel-border\": \"rgba(255, 255, 255, 0.08)\",\n \"--text-primary\": \"#e2e8f0\",\n \"--text-secondary\": \"#94a3b8\",\n \"--text-tertiary\": \"#64748b\",\n \"--text-inverse\": \"#0f172a\",\n \"--accent\": \"#7c3aed\",\n \"--accent-hover\": \"#8b5cf6\",\n \"--accent-light\": \"rgba(124, 58, 237, 0.16)\",\n \"--accent-border\": \"rgba(124, 58, 237, 0.6)\",\n \"--accent-2\": \"#22d3ee\",\n \"--accent-2-light\": \"rgba(34, 211, 238, 0.16)\",\n \"--surface-overlay\": \"rgba(255, 255, 255, 0.02)\",\n \"--surface-overlay-hover\": \"rgba(255, 255, 255, 0.05)\",\n \"--shadow-sm\": \"0 4px 12px rgba(0, 0, 0, 0.3)\",\n \"--shadow-md\": \"0 6px 18px rgba(0, 0, 0, 0.35)\",\n \"--shadow-lg\": \"0 20px 60px rgba(0, 0, 0, 0.4)\",\n \"--icon-color\": \"#e2e8f0\",\n \"--ce-accent\": \"#7c3aed\",\n \"--ce-accent-2\": \"#22d3ee\",\n \"--ce-surface\": \"#0f172a\",\n \"--ce-surface-2\": \"#111827\",\n \"--ce-text\": \"#e2e8f0\",\n \"--ce-border\": \"rgba(255, 255, 255, 0.12)\",\n colorScheme: \"dark\",\n },\n light: {\n \"--ce-color-background\": \"#f8fafc\",\n \"--ce-color-surface\": \"#ffffff\",\n \"--ce-color-text\": \"#0f172a\",\n \"--ce-color-text-muted\": \"#475569\",\n \"--ce-color-primary\": \"#4f46e5\",\n \"--ce-color-accent\": \"#4f46e5\",\n \"--ce-color-border\": \"rgba(15, 23, 42, 0.12)\",\n \"--ce-color-focus-ring\": \"#4f46e5\",\n \"--ce-font-family\": \"Inter, system-ui, sans-serif\",\n \"--app-bg\": \"linear-gradient(180deg, #f8fafc 0%, #eef2ff 40%, #f8fafc 100%)\",\n \"--panel-bg\": \"rgba(255, 255, 255, 0.9)\",\n \"--panel-bg-hover\": \"rgba(255, 255, 255, 0.95)\",\n \"--panel-bg-active\": \"rgba(255, 255, 255, 1)\",\n \"--panel-border\": \"rgba(15, 23, 42, 0.08)\",\n \"--text-primary\": \"#0f172a\",\n \"--text-secondary\": \"#475569\",\n \"--text-tertiary\": \"#64748b\",\n \"--text-inverse\": \"#ffffff\",\n \"--accent\": \"#4f46e5\",\n \"--accent-hover\": \"#6366f1\",\n \"--accent-light\": \"rgba(79, 70, 229, 0.12)\",\n \"--accent-border\": \"rgba(79, 70, 229, 0.4)\",\n \"--accent-2\": \"#06b6d4\",\n \"--accent-2-light\": \"rgba(6, 182, 212, 0.12)\",\n \"--surface-overlay\": \"rgba(15, 23, 42, 0.02)\",\n \"--surface-overlay-hover\": \"rgba(15, 23, 42, 0.05)\",\n \"--shadow-sm\": \"0 4px 12px rgba(0, 0, 0, 0.1)\",\n \"--shadow-md\": \"0 6px 18px rgba(0, 0, 0, 0.12)\",\n \"--shadow-lg\": \"0 20px 60px rgba(0, 0, 0, 0.15)\",\n \"--icon-color\": \"#0f172a\",\n \"--ce-accent\": \"#4f46e5\",\n \"--ce-accent-2\": \"#06b6d4\",\n \"--ce-surface\": \"#ffffff\",\n \"--ce-surface-2\": \"#f8fafc\",\n \"--ce-text\": \"#0f172a\",\n \"--ce-border\": \"rgba(15, 23, 42, 0.12)\",\n colorScheme: \"light\",\n },\n};\n\nconst tokenFallbacks: Record<string, string> = {\n \"--text-primary\": \"var(--ce-color-text)\",\n \"--text-secondary\": \"var(--ce-color-text-muted)\",\n \"--text-muted\": \"var(--ce-color-text-muted)\",\n \"--text-inverse\": \"var(--ce-color-background)\",\n \"--theme-bg\": \"var(--ce-color-background)\",\n \"--theme-surface\": \"var(--ce-color-surface)\",\n \"--theme-fg\": \"var(--ce-color-text)\",\n \"--theme-muted\": \"var(--ce-color-text-muted)\",\n \"--theme-primary\": \"var(--ce-color-primary)\",\n \"--theme-accent\": \"var(--ce-color-accent)\",\n \"--ce-text\": \"var(--ce-color-text)\",\n \"--ce-border\": \"var(--ce-color-border)\",\n \"--ce-surface\": \"var(--ce-color-surface)\",\n \"--ce-surface-2\": \"var(--ce-color-surface)\",\n};\n\nfunction applyTokenFallbacks(preset: Record<string, string>): void {\n Object.entries(tokenFallbacks).forEach(([token, fallback]) => {\n if (token in preset) return;\n document.documentElement.style.setProperty(token, fallback);\n });\n}\n\nexport type ThemeMode = \"light\" | \"dark\";\nexport type DensityMode = \"default\" | \"compact\" | \"comfortable\";\nexport type RadiusMode = \"default\" | \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"pill\" | \"circle\";\nexport type FontScale = \"sm\" | \"md\" | \"lg\" | \"xl\" | number;\n\nexport interface ThemeState {\n theme: ThemeMode;\n density: DensityMode;\n radius: RadiusMode;\n fontScale: FontScale;\n}\n\nconst STORAGE_KEYS = {\n theme: \"app-theme\",\n density: \"app-density\",\n radius: \"app-radius\",\n fontScale: \"app-font-scale\",\n} as const;\n\nconst FONT_SCALE_PRESETS: Record<Exclude<FontScale, number>, number> = {\n sm: 0.92,\n md: 1,\n lg: 1.08,\n xl: 1.16,\n};\n\nconst themeListeners = new Set<(state: ThemeState) => void>();\n\nconst radiusAliases: Record<string, string> = {\n \"--radius-none\": \"var(--ce-radius-none)\",\n \"--radius-xs\": \"var(--ce-radius-xs)\",\n \"--radius-sm\": \"var(--ce-radius-sm)\",\n \"--radius-md\": \"var(--ce-radius-md)\",\n \"--radius-lg\": \"var(--ce-radius-lg)\",\n \"--radius-xl\": \"var(--ce-radius-xl)\",\n \"--radius-pill\": \"var(--ce-radius-pill)\",\n \"--radius-full\": \"var(--ce-radius-circle)\",\n};\n\nfunction getStorage(): Storage | null {\n if (typeof localStorage === \"undefined\") {\n return null;\n }\n return localStorage;\n}\n\nexport function applyTheme(mode: ThemeMode): void {\n const preset = themePresets[mode];\n Object.entries(preset).forEach(([k, v]) => {\n if (k === \"colorScheme\") return;\n document.documentElement.style.setProperty(k, v);\n });\n applyTokenFallbacks(preset);\n applyRadiusAliases();\n document.documentElement.dataset.theme = mode;\n document.documentElement.dataset.ceTheme = mode;\n document.documentElement.classList.remove(\"theme-light\", \"theme-dark\");\n document.documentElement.classList.add(`theme-${mode}`);\n document.documentElement.style.colorScheme = preset.colorScheme;\n}\n\nexport function getInitialTheme(): ThemeMode {\n const storage = getStorage();\n const stored = storage?.getItem(STORAGE_KEYS.theme) as ThemeMode | null;\n if (stored === \"light\" || stored === \"dark\") return stored;\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") {\n return \"light\";\n }\n return window.matchMedia(\"(prefers-color-scheme: light)\").matches ? \"light\" : \"dark\";\n}\n\nexport function onThemeUpdate(listener: (state: ThemeState) => void): () => void {\n themeListeners.add(listener);\n return () => themeListeners.delete(listener);\n}\n\nexport function registerThemeAwareComponent(handler: (state: ThemeState) => void): () => void {\n handler(getStoredThemeState());\n return onThemeUpdate(handler);\n}\n\nexport function getStoredThemeState(): ThemeState {\n const storage = getStorage();\n const storedTheme = storage?.getItem(STORAGE_KEYS.theme) as ThemeMode | null;\n const theme = storedTheme === \"light\" || storedTheme === \"dark\" ? storedTheme : getInitialTheme();\n const density = (storage?.getItem(STORAGE_KEYS.density) as DensityMode | null) ?? \"default\";\n const radius = (storage?.getItem(STORAGE_KEYS.radius) as RadiusMode | null) ?? \"default\";\n const fontScaleRaw = storage?.getItem(STORAGE_KEYS.fontScale) ?? null;\n const fontScale = fontScaleRaw ? Number(fontScaleRaw) : \"md\";\n return { theme, density, radius, fontScale };\n}\n\nexport function hydrateThemeState(overrides: Partial<ThemeState> = {}): ThemeState {\n const state = { ...getStoredThemeState(), ...overrides };\n applyThemeState(state, { persist: false, guard: false });\n return state;\n}\n\nexport function setTheme(mode: ThemeMode): void {\n applyThemeState({ ...getStoredThemeState(), theme: mode });\n}\n\nexport function setDensity(mode: DensityMode): void {\n applyThemeState({ ...getStoredThemeState(), density: mode });\n}\n\nexport function setRadius(mode: RadiusMode): void {\n applyThemeState({ ...getStoredThemeState(), radius: mode });\n}\n\nexport function setFontScale(scale: FontScale): void {\n applyThemeState({ ...getStoredThemeState(), fontScale: scale });\n}\n\nexport function applyThemeState(state: ThemeState, options: { persist?: boolean; guard?: boolean } = {}): void {\n const { persist = true, guard = true } = options;\n const storage = getStorage();\n const apply = () => {\n applyTheme(state.theme);\n applyDensity(state.density);\n applyRadius(state.radius);\n applyFontScale(state.fontScale);\n };\n\n if (guard) {\n withThemeTransitionGuard(apply);\n } else {\n apply();\n }\n\n if (persist && storage) {\n storage.setItem(STORAGE_KEYS.theme, state.theme);\n storage.setItem(STORAGE_KEYS.density, state.density);\n storage.setItem(STORAGE_KEYS.radius, state.radius);\n storage.setItem(STORAGE_KEYS.fontScale, String(resolveFontScale(state.fontScale)));\n }\n\n document.documentElement.dataset.ceDensity = state.density;\n document.documentElement.dataset.ceRadius = state.radius;\n document.documentElement.dataset.ceFontScale = String(resolveFontScale(state.fontScale));\n notifyThemeUpdate(state);\n}\n\nexport function withThemeTransitionGuard(action: () => void): void {\n if (typeof document === \"undefined\") {\n action();\n return;\n }\n const style = document.createElement(\"style\");\n style.setAttribute(\"data-ce-theme-guard\", \"true\");\n style.textContent = \"*{transition:none !important;animation:none !important;}\";\n document.head.appendChild(style);\n action();\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n style.remove();\n });\n });\n}\n\nfunction notifyThemeUpdate(state: ThemeState): void {\n themeListeners.forEach((listener) => listener(state));\n}\n\nfunction applyDensity(mode: DensityMode): void {\n if (mode === \"default\") {\n document.documentElement.style.removeProperty(\"--ce-density-compact\");\n document.documentElement.style.removeProperty(\"--ce-density-comfortable\");\n return;\n }\n\n const compact = mode === \"compact\" ? 0.85 : 1;\n const comfortable = mode === \"comfortable\" ? 1 : 0.85;\n document.documentElement.style.setProperty(\"--ce-density-compact\", String(compact));\n document.documentElement.style.setProperty(\"--ce-density-comfortable\", String(comfortable));\n}\n\nfunction applyRadius(mode: RadiusMode): void {\n if (mode === \"default\") {\n applyRadiusAliases();\n return;\n }\n\n const value = resolveRadius(mode);\n const keys = [\n \"--radius-none\",\n \"--radius-xs\",\n \"--radius-sm\",\n \"--radius-md\",\n \"--radius-lg\",\n \"--radius-xl\",\n \"--radius-pill\",\n \"--radius-full\",\n ];\n keys.forEach((key) => document.documentElement.style.setProperty(key, value));\n}\n\nfunction applyRadiusAliases(): void {\n Object.entries(radiusAliases).forEach(([key, value]) => {\n document.documentElement.style.setProperty(key, value);\n });\n}\n\nfunction resolveRadius(mode: RadiusMode): string {\n switch (mode) {\n case \"none\":\n return \"0\";\n case \"sm\":\n return \"var(--ce-radius-sm)\";\n case \"md\":\n return \"var(--ce-radius-md)\";\n case \"lg\":\n return \"var(--ce-radius-lg)\";\n case \"xl\":\n return \"var(--ce-radius-xl)\";\n case \"pill\":\n return \"var(--ce-radius-pill)\";\n case \"circle\":\n return \"var(--ce-radius-circle)\";\n case \"default\":\n default:\n return \"var(--ce-radius-md)\";\n }\n}\n\nfunction applyFontScale(scale: FontScale): void {\n const resolved = resolveFontScale(scale);\n document.documentElement.style.setProperty(\"--ce-font-scale\", String(resolved));\n document.documentElement.style.fontSize = `${Math.round(resolved * 100)}%`;\n}\n\nfunction resolveFontScale(scale: FontScale): number {\n if (typeof scale === \"number\" && Number.isFinite(scale)) return scale;\n if (typeof scale === \"string\" && scale in FONT_SCALE_PRESETS) {\n return FONT_SCALE_PRESETS[scale as keyof typeof FONT_SCALE_PRESETS];\n }\n return 1;\n}\n"]}
|