@ereo/data 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,354 @@
1
+ /**
2
+ * @ereo/data - Route Definition Builder
3
+ *
4
+ * A builder pattern API that maintains stable type inference through chaining.
5
+ * Solves TanStack Start's documented limitation where adding `head` breaks loader inference.
6
+ *
7
+ * Key features:
8
+ * - Branded types preserve inference through the entire chain
9
+ * - Each method returns a new builder with accumulated types
10
+ * - No inference breakage when adding head/meta/middleware
11
+ * - Compile-time path parameter inference
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * export const route = defineRoute('/users/[id]')
16
+ * .loader(async ({ params }) => {
17
+ * // params is typed as { id: string }
18
+ * return db.user.findUnique({ where: { id: params.id } });
19
+ * })
20
+ * .action(async ({ body }) => {
21
+ * // body is typed based on schema
22
+ * return { success: true };
23
+ * })
24
+ * .head(({ data }) => {
25
+ * // data is loader return type - NEVER breaks inference
26
+ * return { title: data.name };
27
+ * })
28
+ * .build();
29
+ * ```
30
+ */
31
+ import type { LoaderArgs, ActionArgs, AppContext, RouteParams, CacheOptions, MetaDescriptor, InferParams, RouteConfig } from '@ereo/core';
32
+ /**
33
+ * Brand symbol for route path type preservation.
34
+ */
35
+ declare const RouteBrand: unique symbol;
36
+ declare const LoaderBrand: unique symbol;
37
+ declare const ActionBrand: unique symbol;
38
+ /**
39
+ * Branded path type that preserves the path string through transformations.
40
+ */
41
+ type BrandedRoutePath<Path extends string> = {
42
+ readonly [RouteBrand]: Path;
43
+ };
44
+ /**
45
+ * Branded loader type that preserves return type through transformations.
46
+ */
47
+ type BrandedLoader<T> = {
48
+ readonly [LoaderBrand]: T;
49
+ };
50
+ /**
51
+ * Branded action type that preserves return type through transformations.
52
+ */
53
+ type BrandedAction<T> = {
54
+ readonly [ActionBrand]: T;
55
+ };
56
+ /**
57
+ * Extended loader args with typed params.
58
+ */
59
+ export interface TypedLoaderArgs<P extends RouteParams = RouteParams> extends LoaderArgs<P> {
60
+ /** Validated search params (if schema provided) */
61
+ searchParams?: Record<string, unknown>;
62
+ /** Validated hash params (if schema provided) */
63
+ hashParams?: Record<string, unknown>;
64
+ }
65
+ /**
66
+ * Extended action args with typed body.
67
+ */
68
+ export interface TypedActionArgs<TBody, P extends RouteParams = RouteParams> extends ActionArgs<P> {
69
+ /** Parsed and validated body */
70
+ body: TBody;
71
+ /** Raw form data (if applicable) */
72
+ formData?: FormData;
73
+ }
74
+ /**
75
+ * Head function args with loader data.
76
+ */
77
+ export interface HeadArgs<TLoaderData, P extends RouteParams = RouteParams> {
78
+ /** Loader data */
79
+ data: TLoaderData;
80
+ /** Route params */
81
+ params: P;
82
+ /** Request object */
83
+ request: Request;
84
+ }
85
+ /**
86
+ * Meta function args with loader data.
87
+ */
88
+ export interface TypedMetaArgs<TLoaderData, P extends RouteParams = RouteParams> {
89
+ /** Loader data */
90
+ data: TLoaderData;
91
+ /** Route params */
92
+ params: P;
93
+ /** Location info */
94
+ location: {
95
+ pathname: string;
96
+ search: string;
97
+ hash: string;
98
+ };
99
+ }
100
+ /**
101
+ * Head function return type.
102
+ */
103
+ export interface HeadData {
104
+ title?: string;
105
+ description?: string;
106
+ canonical?: string;
107
+ robots?: string;
108
+ openGraph?: {
109
+ title?: string;
110
+ description?: string;
111
+ image?: string;
112
+ type?: string;
113
+ };
114
+ twitter?: {
115
+ card?: 'summary' | 'summary_large_image' | 'app' | 'player';
116
+ site?: string;
117
+ creator?: string;
118
+ };
119
+ links?: Array<{
120
+ rel: string;
121
+ href: string;
122
+ [key: string]: string;
123
+ }>;
124
+ scripts?: Array<{
125
+ src?: string;
126
+ content?: string;
127
+ type?: string;
128
+ }>;
129
+ }
130
+ /**
131
+ * Middleware handler for route-level middleware.
132
+ */
133
+ export type RouteMiddleware<P extends RouteParams = RouteParams> = (request: Request, context: AppContext, params: P, next: () => Promise<Response>) => Response | Promise<Response>;
134
+ /**
135
+ * Schema type for validation (compatible with Zod, Yup, etc.).
136
+ */
137
+ export interface ValidationSchema<T> {
138
+ parse: (data: unknown) => T;
139
+ safeParse?: (data: unknown) => {
140
+ success: true;
141
+ data: T;
142
+ } | {
143
+ success: false;
144
+ error: unknown;
145
+ };
146
+ }
147
+ /**
148
+ * Route builder with no loader defined yet.
149
+ */
150
+ export interface RouteBuilder<Path extends string, Params extends RouteParams = InferParams<Path> extends RouteParams ? InferParams<Path> : RouteParams> extends BrandedRoutePath<Path> {
151
+ /**
152
+ * Define the route's data loader.
153
+ *
154
+ * @example
155
+ * .loader(async ({ params }) => {
156
+ * return db.user.findUnique({ where: { id: params.id } });
157
+ * })
158
+ */
159
+ loader<TData>(fn: (args: TypedLoaderArgs<Params>) => TData | Promise<TData>): RouteBuilderWithLoader<Path, Params, Awaited<TData>>;
160
+ /**
161
+ * Define search params validation schema.
162
+ * Used for type-safe search param parsing.
163
+ */
164
+ searchParams<T>(schema: ValidationSchema<T>): RouteBuilder<Path, Params>;
165
+ /**
166
+ * Define hash params validation schema.
167
+ * This is UNIQUE to Ereo - TanStack has no hash param support.
168
+ */
169
+ hashParams<T>(schema: ValidationSchema<T>): RouteBuilder<Path, Params>;
170
+ /**
171
+ * Add route-level middleware.
172
+ */
173
+ middleware(...handlers: RouteMiddleware<Params>[]): RouteBuilder<Path, Params>;
174
+ /**
175
+ * Set route configuration.
176
+ */
177
+ configure(config: RouteConfig): RouteBuilder<Path, Params>;
178
+ /**
179
+ * Build the route definition (no loader case).
180
+ */
181
+ build(): RouteDefinition<Path, Params, never, never, never>;
182
+ }
183
+ /**
184
+ * Route builder after loader is defined.
185
+ */
186
+ export interface RouteBuilderWithLoader<Path extends string, Params extends RouteParams, LoaderData> extends BrandedRoutePath<Path>, BrandedLoader<LoaderData> {
187
+ /**
188
+ * Define the route's action handler.
189
+ *
190
+ * @example
191
+ * .action(async ({ body, params }) => {
192
+ * await db.user.update({ where: { id: params.id }, data: body });
193
+ * return { success: true };
194
+ * })
195
+ */
196
+ action<TBody = unknown, TResult = unknown>(fn: (args: TypedActionArgs<TBody, Params>) => TResult | Promise<TResult>, options?: {
197
+ schema?: ValidationSchema<TBody>;
198
+ }): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, Awaited<TResult>, TBody>;
199
+ /**
200
+ * Define the head/meta data generator.
201
+ * CRITICAL: This NEVER breaks loader inference (TanStack limitation solved).
202
+ *
203
+ * @example
204
+ * .head(({ data }) => ({
205
+ * title: data.user.name,
206
+ * description: data.user.bio,
207
+ * }))
208
+ */
209
+ head(fn: (args: HeadArgs<LoaderData, Params>) => HeadData): RouteBuilderWithLoader<Path, Params, LoaderData>;
210
+ /**
211
+ * Define the meta tags generator.
212
+ * CRITICAL: This NEVER breaks loader inference (TanStack limitation solved).
213
+ *
214
+ * @example
215
+ * .meta(({ data }) => [
216
+ * { title: data.user.name },
217
+ * { name: 'description', content: data.user.bio },
218
+ * ])
219
+ */
220
+ meta(fn: (args: TypedMetaArgs<LoaderData, Params>) => MetaDescriptor[]): RouteBuilderWithLoader<Path, Params, LoaderData>;
221
+ /**
222
+ * Set cache options for the loader.
223
+ */
224
+ cache(options: CacheOptions): RouteBuilderWithLoader<Path, Params, LoaderData>;
225
+ /**
226
+ * Add route-level middleware.
227
+ */
228
+ middleware(...handlers: RouteMiddleware<Params>[]): RouteBuilderWithLoader<Path, Params, LoaderData>;
229
+ /**
230
+ * Set route configuration.
231
+ */
232
+ configure(config: RouteConfig): RouteBuilderWithLoader<Path, Params, LoaderData>;
233
+ /**
234
+ * Build the route definition.
235
+ */
236
+ build(): RouteDefinition<Path, Params, LoaderData, never, never>;
237
+ }
238
+ /**
239
+ * Route builder after both loader and action are defined.
240
+ */
241
+ export interface RouteBuilderWithLoaderAndAction<Path extends string, Params extends RouteParams, LoaderData, ActionData, ActionBody> extends BrandedRoutePath<Path>, BrandedLoader<LoaderData>, BrandedAction<ActionData> {
242
+ /**
243
+ * Define the head/meta data generator.
244
+ */
245
+ head(fn: (args: HeadArgs<LoaderData, Params>) => HeadData): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
246
+ /**
247
+ * Define the meta tags generator.
248
+ */
249
+ meta(fn: (args: TypedMetaArgs<LoaderData, Params>) => MetaDescriptor[]): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
250
+ /**
251
+ * Set cache options for the loader.
252
+ */
253
+ cache(options: CacheOptions): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
254
+ /**
255
+ * Add route-level middleware.
256
+ */
257
+ middleware(...handlers: RouteMiddleware<Params>[]): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
258
+ /**
259
+ * Set route configuration.
260
+ */
261
+ configure(config: RouteConfig): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
262
+ /**
263
+ * Build the route definition.
264
+ */
265
+ build(): RouteDefinition<Path, Params, LoaderData, ActionData, ActionBody>;
266
+ }
267
+ /**
268
+ * Final route definition output.
269
+ * Contains all the configured handlers and metadata.
270
+ */
271
+ export interface RouteDefinition<Path extends string, Params extends RouteParams, LoaderData, ActionData, ActionBody> {
272
+ /** The route path pattern */
273
+ path: Path;
274
+ /** Loader function (if defined) */
275
+ loader?: (args: LoaderArgs<Params>) => Promise<LoaderData>;
276
+ /** Action function (if defined) */
277
+ action?: (args: ActionArgs<Params>) => Promise<ActionData>;
278
+ /** Head data generator */
279
+ head?: (args: HeadArgs<LoaderData, Params>) => HeadData;
280
+ /** Meta tags generator */
281
+ meta?: (args: TypedMetaArgs<LoaderData, Params>) => MetaDescriptor[];
282
+ /** Route-level middleware */
283
+ middleware?: RouteMiddleware<Params>[];
284
+ /** Route configuration */
285
+ config?: RouteConfig;
286
+ /** Cache options */
287
+ cache?: CacheOptions;
288
+ /** Search params schema */
289
+ searchParamsSchema?: ValidationSchema<unknown>;
290
+ /** Hash params schema */
291
+ hashParamsSchema?: ValidationSchema<unknown>;
292
+ /** Action body schema */
293
+ actionBodySchema?: ValidationSchema<ActionBody>;
294
+ /** Type brands for external type inference */
295
+ readonly _types: {
296
+ path: Path;
297
+ params: Params;
298
+ loaderData: LoaderData;
299
+ actionData: ActionData;
300
+ actionBody: ActionBody;
301
+ };
302
+ }
303
+ /**
304
+ * Create a route builder for a given path.
305
+ *
306
+ * This is the main entry point for defining type-safe routes.
307
+ *
308
+ * @example
309
+ * ```typescript
310
+ * // Basic usage
311
+ * export const route = defineRoute('/users/[id]')
312
+ * .loader(async ({ params }) => {
313
+ * return db.user.findUnique({ where: { id: params.id } });
314
+ * })
315
+ * .build();
316
+ *
317
+ * // With action and head (NEVER breaks inference)
318
+ * export const route = defineRoute('/posts/[slug]')
319
+ * .loader(async ({ params }) => {
320
+ * return db.post.findUnique({ where: { slug: params.slug } });
321
+ * })
322
+ * .action(async ({ body }) => {
323
+ * // Handle form submission
324
+ * return { success: true };
325
+ * })
326
+ * .head(({ data }) => ({
327
+ * title: data.title, // Full type inference preserved!
328
+ * description: data.excerpt,
329
+ * }))
330
+ * .build();
331
+ *
332
+ * // Export parts for route module
333
+ * export const { loader, action, meta } = route;
334
+ * ```
335
+ */
336
+ export declare function defineRoute<Path extends string>(path: Path): RouteBuilder<Path, InferParams<Path> extends RouteParams ? InferParams<Path> : RouteParams>;
337
+ /**
338
+ * Extract loader data type from a route definition.
339
+ */
340
+ export type InferLoaderData<T> = T extends RouteDefinition<infer _Path, infer _Params, infer LoaderData, infer _ActionData, infer _ActionBody> ? LoaderData : never;
341
+ /**
342
+ * Extract action data type from a route definition.
343
+ */
344
+ export type InferActionData<T> = T extends RouteDefinition<infer _Path, infer _Params, infer _LoaderData, infer ActionData, infer _ActionBody> ? ActionData : never;
345
+ /**
346
+ * Extract params type from a route definition.
347
+ */
348
+ export type InferRouteParams<T> = T extends RouteDefinition<infer _Path, infer Params, infer _LoaderData, infer _ActionData, infer _ActionBody> ? Params : never;
349
+ /**
350
+ * Extract path type from a route definition.
351
+ */
352
+ export type InferRoutePath<T> = T extends RouteDefinition<infer Path, infer _Params, infer _LoaderData, infer _ActionData, infer _ActionBody> ? Path : never;
353
+ export {};
354
+ //# sourceMappingURL=define-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-route.d.ts","sourceRoot":"","sources":["../src/define-route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @ereo/data
3
+ *
4
+ * Data loading and caching for the EreoJS framework.
5
+ * One pattern, not four - simple and explicit.
6
+ */
7
+ export { createLoader, defer, isDeferred, resolveDeferred, fetchData, FetchError, serializeLoaderData, parseLoaderData, combineLoaders, clientLoader, } from './loader';
8
+ export type { LoaderOptions, DeferredData } from './loader';
9
+ export { createAction, action, typedAction, jsonAction, parseRequestBody, formDataToObject, coerceValue, redirect, json, error, parseFormData, validateRequired, combineValidators, } from './action';
10
+ export type { ActionOptions, TypedActionOptions, TypedActionArgs, ActionBody, ValidationResult, ActionResult, } from './action';
11
+ export { MemoryCache, getCache, setCache, cached, generateCacheKey, cacheKey, buildCacheControl, parseCacheControl, Cached, createDataCacheAdapter, } from './cache';
12
+ export type { CacheEntry, CacheStorage } from './cache';
13
+ export { revalidateTag, revalidatePath, revalidate, unstable_cache, createRevalidationHandler, tags, onDemandRevalidate, } from './revalidate';
14
+ export type { RevalidateOptions, RevalidateResult } from './revalidate';
15
+ export { createPipeline, dataSource, cachedSource, optionalSource, combinePipelines, formatMetrics, generateMetricsVisualization, } from './pipeline';
16
+ export type { DataSource, PipelineConfig, PipelineResult, PipelineMetrics, LoaderMetrics, ExecutionStep, WaterfallInfo, } from './pipeline';
17
+ export { defineRoute, } from './define-route';
18
+ export type { RouteBuilder, RouteBuilderWithLoader, RouteBuilderWithLoaderAndAction, RouteDefinition, TypedLoaderArgs, TypedActionArgs as RouteTypedActionArgs, HeadArgs, HeadData, TypedMetaArgs, RouteMiddleware, ValidationSchema, InferLoaderData as InferRouteLoaderData, InferActionData as InferRouteActionData, InferRouteParams, InferRoutePath, } from './define-route';
19
+ export { ereoSchema, isEreoSchema, createPaginationParser, createSortParser, createFilterParser, parseBoolean, parseStringArray, parseDate, parseEnum, schemaBuilder, } from './schema-adapters';
20
+ export type { EreoSchema, ZodLikeSchema, ValidationError, InferSchemaOutput, InferSchemaInput, PaginationParams, PaginationSchemaOptions, SortParams, FilterParams, } from './schema-adapters';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,YAAY,EACZ,KAAK,EACL,UAAU,EACV,eAAe,EACf,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG5D,OAAO,EACL,YAAY,EACZ,MAAM,EACN,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,YAAY,GACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,EACN,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGxD,OAAO,EACL,aAAa,EACb,cAAc,EACd,UAAU,EACV,cAAc,EACd,yBAAyB,EACzB,IAAI,EACJ,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGxE,OAAO,EACL,cAAc,EACd,UAAU,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,+BAA+B,EAC/B,eAAe,EACf,eAAe,EACf,eAAe,IAAI,oBAAoB,EACvC,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,IAAI,oBAAoB,EACvC,eAAe,IAAI,oBAAoB,EACvC,gBAAgB,EAChB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,UAAU,EACV,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,UAAU,EACV,YAAY,GACb,MAAM,mBAAmB,CAAC"}