@ereo/core 0.1.6

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.
@@ -0,0 +1,651 @@
1
+ /**
2
+ * @ereo/core - Core type definitions
3
+ *
4
+ * Central type definitions for the EreoJS framework.
5
+ * Uses Web Standards (Request/Response) throughout.
6
+ */
7
+ import type { ReactElement, ComponentType } from 'react';
8
+ export type BuildTarget = 'bun' | 'cloudflare' | 'node' | 'deno' | 'edge';
9
+ export interface ServerConfig {
10
+ port?: number;
11
+ hostname?: string;
12
+ development?: boolean;
13
+ }
14
+ export interface BuildConfig {
15
+ target?: BuildTarget;
16
+ outDir?: string;
17
+ minify?: boolean;
18
+ sourcemap?: boolean;
19
+ }
20
+ export interface FrameworkConfig {
21
+ server?: ServerConfig;
22
+ build?: BuildConfig;
23
+ plugins?: Plugin[];
24
+ /** Base path for all routes (e.g., '/app') */
25
+ basePath?: string;
26
+ /** Directory containing routes (default: 'app/routes') */
27
+ routesDir?: string;
28
+ }
29
+ export interface PluginContext {
30
+ config: FrameworkConfig;
31
+ mode: 'development' | 'production';
32
+ root: string;
33
+ }
34
+ export interface Plugin {
35
+ name: string;
36
+ /** Called once when the plugin is registered */
37
+ setup?: (context: PluginContext) => void | Promise<void>;
38
+ /** Transform file contents during build */
39
+ transform?: (code: string, id: string) => string | null | Promise<string | null>;
40
+ /** Called when dev server starts */
41
+ configureServer?: (server: DevServer) => void | Promise<void>;
42
+ /** Add virtual modules */
43
+ resolveId?: (id: string) => string | null;
44
+ /** Load virtual modules */
45
+ load?: (id: string) => string | null | Promise<string | null>;
46
+ /** Build hooks */
47
+ buildStart?: () => void | Promise<void>;
48
+ buildEnd?: () => void | Promise<void>;
49
+ /** Extend framework configuration */
50
+ extendConfig?: (config: FrameworkConfig) => FrameworkConfig;
51
+ /** Transform routes at build time */
52
+ transformRoutes?: (routes: Route[]) => Route[];
53
+ /** Add runtime middleware */
54
+ runtimeMiddleware?: MiddlewareHandler[];
55
+ /** Virtual modules map */
56
+ virtualModules?: Record<string, string>;
57
+ }
58
+ export interface DevServer {
59
+ /** WebSocket for HMR */
60
+ ws: {
61
+ send: (data: unknown) => void;
62
+ on: (event: string, callback: (data: unknown) => void) => void;
63
+ };
64
+ /** Restart the server */
65
+ restart: () => Promise<void>;
66
+ /** Add middleware to the dev server */
67
+ middlewares: MiddlewareHandler[];
68
+ /** File watcher for development (optional) */
69
+ watcher?: {
70
+ add: (path: string) => void;
71
+ on: (event: string, callback: (file: string) => void) => void;
72
+ };
73
+ }
74
+ /** Middleware reference - can be a named middleware or inline function */
75
+ export type MiddlewareReference = string | MiddlewareHandler;
76
+ /** Render mode for a route */
77
+ export type RenderMode = 'ssg' | 'ssr' | 'csr' | 'json' | 'xml' | 'rsc';
78
+ /** Prerender/SSG configuration */
79
+ export interface PrerenderConfig {
80
+ /** Enable static generation at build time */
81
+ enabled: boolean;
82
+ /** Static paths to pre-render. Can be array or function that returns paths */
83
+ paths?: string[] | (() => Promise<string[]> | string[]);
84
+ /** Revalidation period in seconds (ISR-style) */
85
+ revalidate?: number;
86
+ /** Cache tags for on-demand invalidation */
87
+ tags?: string[] | ((params: RouteParams) => string[]);
88
+ /** Fallback behavior for non-prerendered paths */
89
+ fallback?: 'blocking' | 'static' | '404';
90
+ }
91
+ /** SSR streaming configuration */
92
+ export interface StreamingConfig {
93
+ /** Enable streaming for this route */
94
+ enabled: boolean;
95
+ /** Named suspense boundaries that can stream independently */
96
+ suspenseBoundaries?: string[];
97
+ }
98
+ /** Client-side rendering configuration */
99
+ export interface CSRConfig {
100
+ /** Enable client-side only rendering */
101
+ enabled: boolean;
102
+ /** Client-side data loader (runs in browser) */
103
+ clientLoader?: (params: RouteParams) => unknown | Promise<unknown>;
104
+ }
105
+ /** Complete render mode configuration */
106
+ export interface RenderConfig {
107
+ /** Primary render mode */
108
+ mode: RenderMode;
109
+ /** SSG/ISR configuration */
110
+ prerender?: PrerenderConfig;
111
+ /** Streaming configuration for SSR */
112
+ streaming?: StreamingConfig;
113
+ /** CSR configuration */
114
+ csr?: CSRConfig;
115
+ }
116
+ /** Island component hydration strategy */
117
+ export interface IslandStrategy {
118
+ /** Component name or selector */
119
+ component: string;
120
+ /** Hydration strategy */
121
+ strategy: HydrationStrategy;
122
+ /** Media query (for 'media' strategy) */
123
+ mediaQuery?: string;
124
+ }
125
+ /** Per-route island configuration */
126
+ export interface IslandsConfig {
127
+ /** Default hydration strategy for this route's islands */
128
+ defaultStrategy?: HydrationStrategy;
129
+ /** Component-specific overrides */
130
+ components?: IslandStrategy[];
131
+ /** Disable all hydration for this route */
132
+ disabled?: boolean;
133
+ }
134
+ /** Route-level cache configuration */
135
+ export interface RouteCacheConfig {
136
+ /** Edge/CDN cache configuration */
137
+ edge?: {
138
+ maxAge: number;
139
+ staleWhileRevalidate?: number;
140
+ /** Vary on these request headers */
141
+ vary?: string[];
142
+ /** Generate custom cache key */
143
+ keyGenerator?: (args: {
144
+ request: Request;
145
+ params: RouteParams;
146
+ }) => string;
147
+ };
148
+ /** Browser cache configuration */
149
+ browser?: {
150
+ maxAge: number;
151
+ private?: boolean;
152
+ };
153
+ /** Data cache (framework-level) */
154
+ data?: {
155
+ /** Cache key or key generator */
156
+ key?: string | ((params: RouteParams) => string);
157
+ /** Cache tags for invalidation */
158
+ tags?: string[] | ((params: RouteParams) => string[]);
159
+ };
160
+ }
161
+ /** Progressive enhancement configuration */
162
+ export interface ProgressiveConfig {
163
+ /** Form submission behavior without JS */
164
+ forms?: {
165
+ /** Fallback behavior: 'server' uses native form posts, 'spa' requires JS */
166
+ fallback: 'server' | 'spa';
167
+ /** How to handle redirects from form submissions */
168
+ redirect?: 'follow' | 'manual';
169
+ };
170
+ /** Link prefetching configuration */
171
+ prefetch?: {
172
+ /** When to prefetch: hover, visible, intent (near viewport), or never */
173
+ trigger: 'hover' | 'visible' | 'intent' | 'never';
174
+ /** Also prefetch loader data */
175
+ data?: boolean;
176
+ /** Time to keep prefetched data (ms) */
177
+ ttl?: number;
178
+ };
179
+ }
180
+ /** Route composition/layout configuration */
181
+ export interface RouteCompositionConfig {
182
+ /** Layout stack from root to leaf */
183
+ layouts?: string[];
184
+ /** Inherit settings from parent routes */
185
+ inherit?: {
186
+ /** Inherit middleware from parent */
187
+ middleware?: boolean;
188
+ /** Merge or replace parent meta */
189
+ meta?: 'merge' | 'replace' | false;
190
+ };
191
+ /** Error boundary configuration */
192
+ errorBoundary?: {
193
+ /** Error boundary component */
194
+ component?: ComponentType<ErrorBoundaryProps>;
195
+ /** Which errors to capture */
196
+ capture?: 'all' | 'loader' | 'render';
197
+ };
198
+ /** Loading state configuration */
199
+ loading?: {
200
+ /** Loading component/skeleton */
201
+ component?: ComponentType;
202
+ /** Delay before showing loading UI (ms) */
203
+ delay?: number;
204
+ /** Timeout before showing error (ms) */
205
+ timeout?: number;
206
+ };
207
+ }
208
+ /** Authentication/authorization configuration */
209
+ export interface AuthConfig {
210
+ /** Whether authentication is required */
211
+ required?: boolean;
212
+ /** Required roles */
213
+ roles?: string[];
214
+ /** Required permissions */
215
+ permissions?: string[];
216
+ /** Custom auth check */
217
+ check?: (args: {
218
+ request: Request;
219
+ context: AppContext;
220
+ params: RouteParams;
221
+ }) => boolean | Promise<boolean>;
222
+ /** Redirect URL for unauthenticated users (can use {pathname} placeholder) */
223
+ redirect?: string;
224
+ /** API response for unauthorized access */
225
+ unauthorized?: {
226
+ status: number;
227
+ body: unknown;
228
+ };
229
+ }
230
+ /** Development mode configuration */
231
+ export interface DevConfig {
232
+ /** Mock data configuration */
233
+ mock?: {
234
+ /** Enable mocking */
235
+ enabled: boolean;
236
+ /** Mock data to inject */
237
+ data?: Record<string, unknown>;
238
+ };
239
+ /** Artificial latency for testing (ms) */
240
+ latency?: number;
241
+ /** Error injection rate (0-1) */
242
+ errorRate?: number;
243
+ }
244
+ /** Error recovery and resilience configuration */
245
+ export interface ErrorConfig {
246
+ /** Retry failed loaders automatically */
247
+ retry?: {
248
+ count: number;
249
+ delay: number;
250
+ };
251
+ /** Fallback UI while loading */
252
+ fallback?: ComponentType;
253
+ /** Error boundary strategy */
254
+ onError?: 'boundary' | 'toast' | 'redirect' | 'silent';
255
+ /** Maximum error boundary captures */
256
+ maxCaptures?: number;
257
+ /** Error reporting handler */
258
+ reportError?: (error: Error, context: {
259
+ route: string;
260
+ phase: string;
261
+ }) => void;
262
+ }
263
+ /** Runtime configuration for edge/Node environments */
264
+ export interface RuntimeConfig {
265
+ /** Execution environment */
266
+ runtime?: 'node' | 'edge' | 'auto';
267
+ /** Region affinity */
268
+ regions?: string[];
269
+ /** Memory limit hint */
270
+ memory?: number;
271
+ /** Timeout in seconds */
272
+ timeout?: number;
273
+ }
274
+ /** Route variant (multiple URL patterns for same file) */
275
+ export interface RouteVariant {
276
+ /** URL path pattern */
277
+ path: string;
278
+ /** Parameter schema/validation */
279
+ params?: Record<string, 'string' | 'number'>;
280
+ /** Variant-specific config */
281
+ config?: Partial<RouteConfig>;
282
+ }
283
+ /** Complete route-level configuration export */
284
+ export interface RouteConfig {
285
+ /** Route middleware chain */
286
+ middleware?: MiddlewareReference[];
287
+ /** Render mode configuration */
288
+ render?: RenderConfig;
289
+ /** Island hydration strategy */
290
+ islands?: IslandsConfig;
291
+ /** Cache configuration */
292
+ cache?: RouteCacheConfig;
293
+ /** Progressive enhancement */
294
+ progressive?: ProgressiveConfig;
295
+ /** Route composition */
296
+ route?: RouteCompositionConfig;
297
+ /** Authentication */
298
+ auth?: AuthConfig;
299
+ /** Development settings */
300
+ dev?: DevConfig;
301
+ /** Error recovery */
302
+ error?: ErrorConfig;
303
+ /** Runtime configuration */
304
+ runtime?: RuntimeConfig;
305
+ /** Route variants (multiple URL patterns) */
306
+ variants?: RouteVariant[];
307
+ }
308
+ /** Extended RouteModule with config export */
309
+ export interface RouteModuleWithConfig extends RouteModule {
310
+ /** Route-level configuration */
311
+ config?: RouteConfig;
312
+ }
313
+ /** Parameter validation schema */
314
+ export interface ParamValidationSchema {
315
+ [key: string]: ParamValidator<unknown>;
316
+ }
317
+ /** Search parameter validation schema */
318
+ export interface SearchParamValidationSchema {
319
+ [key: string]: ParamValidator<unknown> | {
320
+ default: unknown;
321
+ validator?: ParamValidator<unknown>;
322
+ };
323
+ }
324
+ /** Parameter validator function or schema */
325
+ export type ParamValidator<T> = {
326
+ parse: (value: string | string[] | undefined) => T;
327
+ optional?: boolean;
328
+ default?: T;
329
+ };
330
+ export interface RouteParams {
331
+ [key: string]: string | string[] | undefined;
332
+ }
333
+ export interface RouteMatch {
334
+ route: Route;
335
+ params: RouteParams;
336
+ pathname: string;
337
+ }
338
+ export interface Route {
339
+ id: string;
340
+ path: string;
341
+ file: string;
342
+ index?: boolean;
343
+ layout?: boolean;
344
+ children?: Route[];
345
+ /** Loaded module */
346
+ module?: RouteModule;
347
+ /** Parsed route configuration from module */
348
+ config?: RouteConfig;
349
+ }
350
+ export interface RouteModule {
351
+ default?: ComponentType<RouteComponentProps>;
352
+ loader?: LoaderFunction;
353
+ action?: ActionFunction;
354
+ meta?: MetaFunction;
355
+ headers?: HeadersFunction;
356
+ handle?: RouteHandle;
357
+ ErrorBoundary?: ComponentType<ErrorBoundaryProps>;
358
+ /** Route-level configuration export */
359
+ config?: RouteConfig;
360
+ /** Parameter validation schema */
361
+ params?: ParamValidationSchema;
362
+ /** Search parameter validation schema */
363
+ searchParams?: SearchParamValidationSchema;
364
+ }
365
+ export interface RouteHandle {
366
+ [key: string]: unknown;
367
+ }
368
+ export interface LoaderArgs<P = RouteParams> {
369
+ request: Request;
370
+ params: P;
371
+ context: AppContext;
372
+ }
373
+ export interface ActionArgs<P = RouteParams> {
374
+ request: Request;
375
+ params: P;
376
+ context: AppContext;
377
+ }
378
+ export type LoaderFunction<T = unknown, P = RouteParams> = (args: LoaderArgs<P>) => T | Promise<T>;
379
+ export type ActionFunction<T = unknown, P = RouteParams> = (args: ActionArgs<P>) => T | Promise<T>;
380
+ export interface LoaderData<T = unknown> {
381
+ data: T;
382
+ headers?: Headers;
383
+ }
384
+ export interface MetaArgs<T = unknown, P = RouteParams> {
385
+ data: T;
386
+ params: P;
387
+ location: {
388
+ pathname: string;
389
+ search: string;
390
+ hash: string;
391
+ };
392
+ }
393
+ export interface MetaDescriptor {
394
+ title?: string;
395
+ name?: string;
396
+ property?: string;
397
+ content?: string;
398
+ charSet?: 'utf-8';
399
+ [key: string]: string | undefined;
400
+ }
401
+ export type MetaFunction<T = unknown, P = RouteParams> = (args: MetaArgs<T, P>) => MetaDescriptor[];
402
+ export interface HeadersArgs {
403
+ loaderHeaders: Headers;
404
+ actionHeaders: Headers;
405
+ parentHeaders: Headers;
406
+ }
407
+ export type HeadersFunction = (args: HeadersArgs) => Headers | HeadersInit;
408
+ export interface RouteComponentProps<T = unknown> {
409
+ loaderData: T;
410
+ params: RouteParams;
411
+ children?: ReactElement;
412
+ }
413
+ /**
414
+ * Props passed to route-level error components (the fallback UI).
415
+ * This is distinct from ErrorBoundaryProps in @ereo/client which is for the
416
+ * ErrorBoundary wrapper component itself.
417
+ */
418
+ export interface RouteErrorComponentProps {
419
+ error: Error;
420
+ params: RouteParams;
421
+ }
422
+ /**
423
+ * @deprecated Use RouteErrorComponentProps instead. This alias is kept for backwards compatibility.
424
+ */
425
+ export type ErrorBoundaryProps = RouteErrorComponentProps;
426
+ /**
427
+ * Function to continue the middleware chain.
428
+ * Called by middleware to pass control to the next middleware or final handler.
429
+ */
430
+ export type NextFunction = () => Promise<Response>;
431
+ /**
432
+ * Core middleware handler signature used throughout the EreoJS framework.
433
+ *
434
+ * This is the base type for all middleware. Both `@ereo/router`'s `TypedMiddlewareHandler`
435
+ * and `@ereo/server`'s middleware chain use this signature.
436
+ *
437
+ * @param request - The incoming Request object (Web Standards)
438
+ * @param context - The application context (AppContext) for sharing data
439
+ * @param next - Function to call the next middleware in the chain
440
+ * @returns A Response or Promise<Response>
441
+ *
442
+ * @example
443
+ * const loggingMiddleware: MiddlewareHandler = async (request, context, next) => {
444
+ * const start = Date.now();
445
+ * const response = await next();
446
+ * console.log(`Request took ${Date.now() - start}ms`);
447
+ * return response;
448
+ * };
449
+ *
450
+ * @see TypedMiddlewareHandler in @ereo/router for type-safe context passing
451
+ */
452
+ export type MiddlewareHandler = (request: Request, context: AppContext, next: NextFunction) => Response | Promise<Response>;
453
+ /**
454
+ * Named middleware definition with optional path matching.
455
+ *
456
+ * This interface is used for registering middleware with metadata.
457
+ * For server-side middleware chains, see `MiddlewareDefinition` in `@ereo/server`.
458
+ */
459
+ export interface Middleware {
460
+ /** Optional name for the middleware (used in logging and debugging) */
461
+ name?: string;
462
+ /** The middleware handler function */
463
+ handler: MiddlewareHandler;
464
+ /** Path patterns to match (default: all paths). Supports wildcards like '/api/*'. */
465
+ paths?: string[];
466
+ }
467
+ export interface CacheOptions {
468
+ maxAge?: number;
469
+ staleWhileRevalidate?: number;
470
+ tags?: string[];
471
+ private?: boolean;
472
+ }
473
+ export interface CacheControl {
474
+ set: (options: CacheOptions) => void;
475
+ get: () => CacheOptions | undefined;
476
+ getTags: () => string[];
477
+ }
478
+ export interface AppContext {
479
+ /** Request-specific cache control */
480
+ cache: CacheControl;
481
+ /** Get a value from context store */
482
+ get: <T>(key: string) => T | undefined;
483
+ /** Set a value in context store */
484
+ set: <T>(key: string, value: T) => void;
485
+ /** Response headers to be merged */
486
+ responseHeaders: Headers;
487
+ /** Current request URL info */
488
+ url: URL;
489
+ /** Environment variables (safe for server) */
490
+ env: Record<string, string | undefined>;
491
+ }
492
+ export interface ApplicationOptions {
493
+ config?: FrameworkConfig;
494
+ routes?: Route[];
495
+ }
496
+ export interface Application {
497
+ config: FrameworkConfig;
498
+ routes: Route[];
499
+ plugins: Plugin[];
500
+ /** Handle an incoming request */
501
+ handle: (request: Request) => Promise<Response>;
502
+ /** Register a plugin */
503
+ use: (plugin: Plugin) => Application;
504
+ /** Start the development server */
505
+ dev: () => Promise<void>;
506
+ /** Build for production */
507
+ build: () => Promise<void>;
508
+ /** Start production server */
509
+ start: () => Promise<void>;
510
+ }
511
+ export type HydrationStrategy = 'load' | 'idle' | 'visible' | 'media' | 'none';
512
+ export interface IslandProps {
513
+ /** Hydration strategy */
514
+ 'client:load'?: boolean;
515
+ 'client:idle'?: boolean;
516
+ 'client:visible'?: boolean;
517
+ 'client:media'?: string;
518
+ /** Island identifier for hydration */
519
+ 'data-island'?: string;
520
+ }
521
+ export type MaybePromise<T> = T | Promise<T>;
522
+ export type DeepPartial<T> = {
523
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
524
+ };
525
+ /** Extract loader data type from a route module */
526
+ export type InferLoaderData<T extends RouteModule> = T['loader'] extends LoaderFunction<infer D> ? D : never;
527
+ /** Extract action data type from a route module */
528
+ export type InferActionData<T extends RouteModule> = T['action'] extends ActionFunction<infer D> ? D : never;
529
+ /**
530
+ * Extended route type definition with full type safety.
531
+ * Includes search params, hash params (unique to Ereo), and context inheritance.
532
+ *
533
+ * @example
534
+ * declare module '@ereo/core' {
535
+ * interface RouteTypes {
536
+ * '/blog/[slug]': {
537
+ * params: { slug: string };
538
+ * search: { page?: number; sort?: 'asc' | 'desc' };
539
+ * hash: { section?: string };
540
+ * loader: { post: Post; comments: Comment[] };
541
+ * action: { success: boolean };
542
+ * context: { user: User }; // Inherited from parent layouts
543
+ * meta: true;
544
+ * handle: { breadcrumb: string };
545
+ * };
546
+ * }
547
+ * }
548
+ */
549
+ export interface RouteTypeDefinition {
550
+ /** Route path parameters (inferred from path pattern) */
551
+ params: RouteParams;
552
+ /** Search/query parameters with typed schema */
553
+ search?: Record<string, unknown>;
554
+ /** Hash parameters - unique to Ereo, not supported by TanStack */
555
+ hash?: Record<string, unknown>;
556
+ /** Loader return type */
557
+ loader?: unknown;
558
+ /** Action return type */
559
+ action?: unknown;
560
+ /** Accumulated context from parent layouts */
561
+ context?: Record<string, unknown>;
562
+ /** Whether route has meta function */
563
+ meta?: boolean;
564
+ /** Route handle data */
565
+ handle?: unknown;
566
+ }
567
+ /**
568
+ * Module augmentation target for route types.
569
+ * Generated by the bundler during development.
570
+ *
571
+ * @example
572
+ * declare module '@ereo/core' {
573
+ * interface RouteTypes {
574
+ * '/blog/[slug]': {
575
+ * params: { slug: string };
576
+ * search: { page?: number };
577
+ * hash: { section?: string };
578
+ * loader: { post: Post };
579
+ * context: { user: User };
580
+ * };
581
+ * }
582
+ * }
583
+ */
584
+ export interface RouteTypes {
585
+ }
586
+ export type TypedRoutes = keyof RouteTypes extends never ? string : keyof RouteTypes;
587
+ export type RouteParamsFor<T extends TypedRoutes> = T extends keyof RouteTypes ? RouteTypes[T] extends {
588
+ params: infer P;
589
+ } ? P : RouteParams : RouteParams;
590
+ export type LoaderDataFor<T extends TypedRoutes> = T extends keyof RouteTypes ? RouteTypes[T] extends {
591
+ loader: infer D;
592
+ } ? D : unknown : unknown;
593
+ /**
594
+ * Extract search param types for a route path.
595
+ * TanStack limitation: they don't support this at route level.
596
+ */
597
+ export type SearchParamsFor<T extends TypedRoutes> = T extends keyof RouteTypes ? RouteTypes[T] extends {
598
+ search: infer S;
599
+ } ? S : Record<string, string | string[] | undefined> : Record<string, string | string[] | undefined>;
600
+ /**
601
+ * Extract hash param types for a route path.
602
+ * This is UNIQUE to Ereo - TanStack has no hash param support.
603
+ */
604
+ export type HashParamsFor<T extends TypedRoutes> = T extends keyof RouteTypes ? RouteTypes[T] extends {
605
+ hash: infer H;
606
+ } ? H : Record<string, string | undefined> : Record<string, string | undefined>;
607
+ /**
608
+ * Extract accumulated context type for a route path.
609
+ * Context is inherited from parent layouts through the route tree.
610
+ */
611
+ export type ContextFor<T extends TypedRoutes> = T extends keyof RouteTypes ? RouteTypes[T] extends {
612
+ context: infer C;
613
+ } ? C : Record<string, unknown> : Record<string, unknown>;
614
+ /**
615
+ * Extract action data type for a route path.
616
+ */
617
+ export type ActionDataFor<T extends TypedRoutes> = T extends keyof RouteTypes ? RouteTypes[T] extends {
618
+ action: infer A;
619
+ } ? A : unknown : unknown;
620
+ /**
621
+ * Extract handle type for a route path.
622
+ */
623
+ export type HandleFor<T extends TypedRoutes> = T extends keyof RouteTypes ? RouteTypes[T] extends {
624
+ handle: infer H;
625
+ } ? H : undefined : undefined;
626
+ /**
627
+ * Check if a route has a loader.
628
+ */
629
+ export type HasLoader<T extends TypedRoutes> = T extends keyof RouteTypes ? RouteTypes[T] extends {
630
+ loader: infer L;
631
+ } ? L extends never ? false : true : false : false;
632
+ /**
633
+ * Check if a route has an action.
634
+ */
635
+ export type HasAction<T extends TypedRoutes> = T extends keyof RouteTypes ? RouteTypes[T] extends {
636
+ action: infer A;
637
+ } ? A extends never ? false : true : false : false;
638
+ /**
639
+ * Full route data combining all type information.
640
+ * Useful for components that need complete route type info.
641
+ */
642
+ export type RouteData<T extends TypedRoutes> = {
643
+ params: RouteParamsFor<T>;
644
+ search: SearchParamsFor<T>;
645
+ hash: HashParamsFor<T>;
646
+ loaderData: LoaderDataFor<T>;
647
+ actionData: ActionDataFor<T> | undefined;
648
+ context: ContextFor<T>;
649
+ handle: HandleFor<T>;
650
+ };
651
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}