@ereo/data 0.1.23 → 0.1.25

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/README.md CHANGED
@@ -40,15 +40,17 @@ export const action = createAction(async ({ request }) => {
40
40
  ## Caching Example
41
41
 
42
42
  ```typescript
43
- import { cached, revalidateTag } from '@ereo/data';
43
+ import { cached, cacheKey, revalidateTag } from '@ereo/data';
44
44
 
45
- const getUser = cached(
46
- async (id: string) => fetchUser(id),
47
- { tags: ['user'], ttl: 60000 }
45
+ // cached(key, fetchFn, options) — key is required, fetchFn takes no arguments
46
+ const user = await cached(
47
+ cacheKey('user', id),
48
+ () => fetchUser(id),
49
+ { maxAge: 60, tags: ['users', `user-${id}`] }
48
50
  );
49
51
 
50
52
  // Revalidate when user is updated
51
- await revalidateTag('user');
53
+ await revalidateTag('users');
52
54
  ```
53
55
 
54
56
  ## Data Pipeline
@@ -57,13 +59,19 @@ await revalidateTag('user');
57
59
  import { createPipeline, dataSource, cachedSource } from '@ereo/data';
58
60
 
59
61
  const pipeline = createPipeline({
60
- user: dataSource(() => fetchUser(id)),
61
- posts: cachedSource(() => fetchPosts(id), { ttl: 5000 }),
62
- comments: dataSource((ctx) => fetchComments(ctx.posts)),
62
+ loaders: {
63
+ user: dataSource(() => fetchUser(id)),
64
+ posts: cachedSource(() => fetchPosts(id), { ttl: 300 }),
65
+ // comments depends on posts — declare via dependencies, not function args
66
+ comments: dataSource(() => fetchComments(id)),
67
+ },
68
+ dependencies: {
69
+ comments: ['posts'], // comments waits for posts to finish first
70
+ },
63
71
  });
64
72
 
65
- const data = await pipeline.execute();
66
- // { user, posts, comments } - automatically parallelized
73
+ const result = await pipeline.execute(loaderArgs);
74
+ // result.data = { user, posts, comments } independent loaders run in parallel
67
75
  ```
68
76
 
69
77
  ## Documentation
package/dist/action.d.ts CHANGED
@@ -80,7 +80,20 @@ export interface ActionResult<T = unknown> {
80
80
  /**
81
81
  * Create a type-safe action function.
82
82
  *
83
+ * Accepts either a plain async function (shorthand) or an options object
84
+ * with validation, error handling, and automatic FormData parsing.
85
+ *
86
+ * @example
87
+ * // Shorthand — just pass a function directly
88
+ * export const action = createAction(async ({ request }) => {
89
+ * const formData = await request.formData();
90
+ * const title = formData.get('title');
91
+ * await db.post.create({ data: { title } });
92
+ * return redirect('/posts');
93
+ * });
94
+ *
83
95
  * @example
96
+ * // Full options — with validation and auto-parsed FormData
84
97
  * export const action = createAction({
85
98
  * handler: async ({ formData }) => {
86
99
  * const title = formData.get('title');
@@ -95,6 +108,7 @@ export interface ActionResult<T = unknown> {
95
108
  * },
96
109
  * });
97
110
  */
111
+ export declare function createAction<T, P extends RouteParams = RouteParams>(fn: (args: ActionArgs<P>) => T | Promise<T>): ActionFunction<T, P>;
98
112
  export declare function createAction<T, P extends RouteParams = RouteParams>(options: ActionOptions<T, P>): ActionFunction<ActionResult<T>, P>;
99
113
  /**
100
114
  * Create a simple action from a handler function.
@@ -177,8 +191,19 @@ export declare function jsonAction<TBody, TResult = TBody, P extends RouteParams
177
191
  }): ActionFunction<ActionResult<TResult>, P>;
178
192
  /**
179
193
  * Redirect response helper.
194
+ * Accepts a status code or full ResponseInit for custom headers.
195
+ */
196
+ export declare function redirect(url: string, init?: number | ResponseInit): Response;
197
+ /**
198
+ * Throw a redirect response.
199
+ * The server catches thrown Responses and returns them directly.
200
+ */
201
+ export declare function throwRedirect(url: string, init?: number | ResponseInit): never;
202
+ /**
203
+ * XSS-safe data response helper.
204
+ * Uses serializeLoaderData to escape dangerous characters.
180
205
  */
181
- export declare function redirect(url: string, status?: 301 | 302 | 303 | 307 | 308): Response;
206
+ export declare function data<T>(value: T, init?: ResponseInit): Response;
182
207
  /**
183
208
  * JSON response helper.
184
209
  */
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@
28
28
  * .build();
29
29
  * ```
30
30
  */
31
- import type { LoaderArgs, ActionArgs, AppContext, RouteParams, CacheOptions, MetaDescriptor, InferParams, RouteConfig } from '@ereo/core';
31
+ import type { LoaderArgs, ActionArgs, AppContext, RouteParams, CacheOptions, MetaDescriptor, InferParams, RouteConfig, ShouldRevalidateFunction, ClientLoaderFunction, ClientActionFunction, LinksFunction, MethodHandlerFunction, BeforeLoadFunction } from '@ereo/core';
32
32
  /**
33
33
  * Brand symbol for route path type preservation.
34
34
  */
@@ -175,6 +175,46 @@ export interface RouteBuilder<Path extends string, Params extends RouteParams =
175
175
  * Set route configuration.
176
176
  */
177
177
  configure(config: RouteConfig): RouteBuilder<Path, Params>;
178
+ /**
179
+ * Control when this route's loader re-runs after navigations/mutations.
180
+ */
181
+ shouldRevalidate(fn: ShouldRevalidateFunction): RouteBuilder<Path, Params>;
182
+ /**
183
+ * Define a client-side loader (runs in browser).
184
+ */
185
+ clientLoader(fn: ClientLoaderFunction): RouteBuilder<Path, Params>;
186
+ /**
187
+ * Define a client-side action (runs in browser).
188
+ */
189
+ clientAction(fn: ClientActionFunction): RouteBuilder<Path, Params>;
190
+ /**
191
+ * Define per-route link descriptors (stylesheets, preloads, etc.).
192
+ */
193
+ links(fn: LinksFunction): RouteBuilder<Path, Params>;
194
+ /**
195
+ * Define a beforeLoad guard that runs before the loader.
196
+ */
197
+ beforeLoad(fn: BeforeLoadFunction<Params>): RouteBuilder<Path, Params>;
198
+ /**
199
+ * Define a GET method handler (API route).
200
+ */
201
+ get(fn: MethodHandlerFunction<unknown, Params>): RouteBuilder<Path, Params>;
202
+ /**
203
+ * Define a POST method handler (API route).
204
+ */
205
+ post(fn: MethodHandlerFunction<unknown, Params>): RouteBuilder<Path, Params>;
206
+ /**
207
+ * Define a PUT method handler (API route).
208
+ */
209
+ put(fn: MethodHandlerFunction<unknown, Params>): RouteBuilder<Path, Params>;
210
+ /**
211
+ * Define a DELETE method handler (API route).
212
+ */
213
+ delete(fn: MethodHandlerFunction<unknown, Params>): RouteBuilder<Path, Params>;
214
+ /**
215
+ * Define a PATCH method handler (API route).
216
+ */
217
+ patch(fn: MethodHandlerFunction<unknown, Params>): RouteBuilder<Path, Params>;
178
218
  /**
179
219
  * Build the route definition (no loader case).
180
220
  */
@@ -230,6 +270,46 @@ export interface RouteBuilderWithLoader<Path extends string, Params extends Rout
230
270
  * Set route configuration.
231
271
  */
232
272
  configure(config: RouteConfig): RouteBuilderWithLoader<Path, Params, LoaderData>;
273
+ /**
274
+ * Control when this route's loader re-runs after navigations/mutations.
275
+ */
276
+ shouldRevalidate(fn: ShouldRevalidateFunction): RouteBuilderWithLoader<Path, Params, LoaderData>;
277
+ /**
278
+ * Define a client-side loader (runs in browser).
279
+ */
280
+ clientLoader(fn: ClientLoaderFunction): RouteBuilderWithLoader<Path, Params, LoaderData>;
281
+ /**
282
+ * Define a client-side action (runs in browser).
283
+ */
284
+ clientAction(fn: ClientActionFunction): RouteBuilderWithLoader<Path, Params, LoaderData>;
285
+ /**
286
+ * Define per-route link descriptors (stylesheets, preloads, etc.).
287
+ */
288
+ links(fn: LinksFunction): RouteBuilderWithLoader<Path, Params, LoaderData>;
289
+ /**
290
+ * Define a beforeLoad guard that runs before the loader.
291
+ */
292
+ beforeLoad(fn: BeforeLoadFunction<Params>): RouteBuilderWithLoader<Path, Params, LoaderData>;
293
+ /**
294
+ * Define a GET method handler (API route).
295
+ */
296
+ get(fn: MethodHandlerFunction<unknown, Params>): RouteBuilderWithLoader<Path, Params, LoaderData>;
297
+ /**
298
+ * Define a POST method handler (API route).
299
+ */
300
+ post(fn: MethodHandlerFunction<unknown, Params>): RouteBuilderWithLoader<Path, Params, LoaderData>;
301
+ /**
302
+ * Define a PUT method handler (API route).
303
+ */
304
+ put(fn: MethodHandlerFunction<unknown, Params>): RouteBuilderWithLoader<Path, Params, LoaderData>;
305
+ /**
306
+ * Define a DELETE method handler (API route).
307
+ */
308
+ delete(fn: MethodHandlerFunction<unknown, Params>): RouteBuilderWithLoader<Path, Params, LoaderData>;
309
+ /**
310
+ * Define a PATCH method handler (API route).
311
+ */
312
+ patch(fn: MethodHandlerFunction<unknown, Params>): RouteBuilderWithLoader<Path, Params, LoaderData>;
233
313
  /**
234
314
  * Build the route definition.
235
315
  */
@@ -259,6 +339,46 @@ export interface RouteBuilderWithLoaderAndAction<Path extends string, Params ext
259
339
  * Set route configuration.
260
340
  */
261
341
  configure(config: RouteConfig): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
342
+ /**
343
+ * Control when this route's loader re-runs after navigations/mutations.
344
+ */
345
+ shouldRevalidate(fn: ShouldRevalidateFunction): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
346
+ /**
347
+ * Define a client-side loader (runs in browser).
348
+ */
349
+ clientLoader(fn: ClientLoaderFunction): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
350
+ /**
351
+ * Define a client-side action (runs in browser).
352
+ */
353
+ clientAction(fn: ClientActionFunction): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
354
+ /**
355
+ * Define per-route link descriptors (stylesheets, preloads, etc.).
356
+ */
357
+ links(fn: LinksFunction): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
358
+ /**
359
+ * Define a beforeLoad guard that runs before the loader.
360
+ */
361
+ beforeLoad(fn: BeforeLoadFunction<Params>): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
362
+ /**
363
+ * Define a GET method handler (API route).
364
+ */
365
+ get(fn: MethodHandlerFunction<unknown, Params>): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
366
+ /**
367
+ * Define a POST method handler (API route).
368
+ */
369
+ post(fn: MethodHandlerFunction<unknown, Params>): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
370
+ /**
371
+ * Define a PUT method handler (API route).
372
+ */
373
+ put(fn: MethodHandlerFunction<unknown, Params>): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
374
+ /**
375
+ * Define a DELETE method handler (API route).
376
+ */
377
+ delete(fn: MethodHandlerFunction<unknown, Params>): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
378
+ /**
379
+ * Define a PATCH method handler (API route).
380
+ */
381
+ patch(fn: MethodHandlerFunction<unknown, Params>): RouteBuilderWithLoaderAndAction<Path, Params, LoaderData, ActionData, ActionBody>;
262
382
  /**
263
383
  * Build the route definition.
264
384
  */
@@ -285,12 +405,28 @@ export interface RouteDefinition<Path extends string, Params extends RouteParams
285
405
  config?: RouteConfig;
286
406
  /** Cache options */
287
407
  cache?: CacheOptions;
408
+ /** Controls when this route's loader re-runs */
409
+ shouldRevalidate?: ShouldRevalidateFunction;
410
+ /** Client-side loader (runs in browser) */
411
+ clientLoader?: ClientLoaderFunction;
412
+ /** Client-side action (runs in browser) */
413
+ clientAction?: ClientActionFunction;
414
+ /** Per-route link descriptors */
415
+ links?: LinksFunction;
288
416
  /** Search params schema */
289
417
  searchParamsSchema?: ValidationSchema<unknown>;
290
418
  /** Hash params schema */
291
419
  hashParamsSchema?: ValidationSchema<unknown>;
292
420
  /** Action body schema */
293
421
  actionBodySchema?: ValidationSchema<ActionBody>;
422
+ /** beforeLoad guard */
423
+ beforeLoad?: BeforeLoadFunction<Params>;
424
+ /** HTTP method handlers (API routes) */
425
+ GET?: MethodHandlerFunction;
426
+ POST?: MethodHandlerFunction;
427
+ PUT?: MethodHandlerFunction;
428
+ DELETE?: MethodHandlerFunction;
429
+ PATCH?: MethodHandlerFunction;
294
430
  /** Type brands for external type inference */
295
431
  readonly _types: {
296
432
  path: Path;
@@ -1 +1 @@
1
- {"version":3,"file":"define-route.d.ts","sourceRoot":"","sources":["../src/define-route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-route.d.ts","sourceRoot":"","sources":["../src/define-route.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,9 +4,9 @@
4
4
  * Data loading and caching for the EreoJS framework.
5
5
  * One pattern, not four - simple and explicit.
6
6
  */
7
- export { createLoader, defer, isDeferred, resolveDeferred, fetchData, FetchError, serializeLoaderData, parseLoaderData, combineLoaders, clientLoader, } from './loader';
7
+ export { createLoader, defer, isDeferred, resolveDeferred, hasDeferredData, resolveAllDeferred, fetchData, FetchError, serializeLoaderData, parseLoaderData, combineLoaders, clientLoader, } from './loader';
8
8
  export type { LoaderOptions, DeferredData } from './loader';
9
- export { createAction, action, typedAction, jsonAction, parseRequestBody, formDataToObject, coerceValue, redirect, json, error, parseFormData, validateRequired, combineValidators, } from './action';
9
+ export { createAction, action, typedAction, jsonAction, parseRequestBody, formDataToObject, coerceValue, redirect, throwRedirect, json, data, error, parseFormData, validateRequired, combineValidators, } from './action';
10
10
  export type { ActionOptions, TypedActionOptions, TypedActionArgs, ActionBody, ValidationResult, ActionResult, } from './action';
11
11
  export { MemoryCache, getCache, setCache, cached, generateCacheKey, cacheKey, buildCacheControl, parseCacheControl, Cached, createDataCacheAdapter, } from './cache';
12
12
  export type { CacheEntry, CacheStorage } from './cache';
@@ -1 +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"}
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,eAAe,EACf,kBAAkB,EAClB,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,aAAa,EACb,IAAI,EACJ,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"}
package/dist/index.js CHANGED
@@ -244,7 +244,11 @@ function Cached(options) {
244
244
  var globalCache = null;
245
245
 
246
246
  // src/loader.ts
247
- function createLoader(options) {
247
+ function createLoader(optionsOrFn) {
248
+ if (typeof optionsOrFn === "function") {
249
+ return optionsOrFn;
250
+ }
251
+ const options = optionsOrFn;
248
252
  return async (args) => {
249
253
  const { context } = args;
250
254
  if (options.cache) {
@@ -289,6 +293,32 @@ function isDeferred(value) {
289
293
  async function resolveDeferred(deferred) {
290
294
  return deferred.promise;
291
295
  }
296
+ function hasDeferredData(data) {
297
+ if (data == null || typeof data !== "object")
298
+ return false;
299
+ if (isDeferred(data))
300
+ return true;
301
+ if (Array.isArray(data))
302
+ return data.some(hasDeferredData);
303
+ for (const value of Object.values(data)) {
304
+ if (hasDeferredData(value))
305
+ return true;
306
+ }
307
+ return false;
308
+ }
309
+ async function resolveAllDeferred(data) {
310
+ if (data == null || typeof data !== "object")
311
+ return data;
312
+ if (isDeferred(data)) {
313
+ return await data.promise;
314
+ }
315
+ if (Array.isArray(data)) {
316
+ return await Promise.all(data.map(resolveAllDeferred));
317
+ }
318
+ const entries = Object.entries(data);
319
+ const resolvedEntries = await Promise.all(entries.map(async ([key, value]) => [key, await resolveAllDeferred(value)]));
320
+ return Object.fromEntries(resolvedEntries);
321
+ }
292
322
  async function fetchData(input, init) {
293
323
  const response = await fetch(input, init);
294
324
  if (!response.ok) {
@@ -335,7 +365,11 @@ function clientLoader(load) {
335
365
  };
336
366
  }
337
367
  // src/action.ts
338
- function createAction(options) {
368
+ function createAction(optionsOrFn) {
369
+ if (typeof optionsOrFn === "function") {
370
+ return optionsOrFn;
371
+ }
372
+ const options = optionsOrFn;
339
373
  return async (args) => {
340
374
  const { request } = args;
341
375
  const formData = await request.formData();
@@ -585,19 +619,37 @@ function jsonAction(options) {
585
619
  return typedAction(options)(args);
586
620
  };
587
621
  }
588
- function redirect(url, status = 302) {
622
+ function redirect(url, init) {
623
+ const status = typeof init === "number" ? init : init?.status ?? 302;
624
+ const headers = new Headers(typeof init === "object" ? init?.headers : undefined);
625
+ headers.set("Location", url);
589
626
  return new Response(null, {
627
+ ...typeof init === "object" ? init : undefined,
590
628
  status,
591
- headers: { Location: url }
629
+ headers
592
630
  });
593
631
  }
594
- function json(data, init) {
595
- return new Response(JSON.stringify(data), {
632
+ function throwRedirect(url, init) {
633
+ throw redirect(url, init);
634
+ }
635
+ function data(value, init) {
636
+ const headers = new Headers(init?.headers);
637
+ if (!headers.has("Content-Type")) {
638
+ headers.set("Content-Type", "application/json");
639
+ }
640
+ return new Response(serializeLoaderData(value), {
596
641
  ...init,
597
- headers: {
598
- "Content-Type": "application/json",
599
- ...init?.headers
600
- }
642
+ headers
643
+ });
644
+ }
645
+ function json(data2, init) {
646
+ const headers = new Headers(init?.headers);
647
+ if (!headers.has("Content-Type")) {
648
+ headers.set("Content-Type", "application/json");
649
+ }
650
+ return new Response(JSON.stringify(data2), {
651
+ ...init,
652
+ headers
601
653
  });
602
654
  }
603
655
  function error(message, status = 500) {
@@ -1056,13 +1108,69 @@ function defineRoute(path) {
1056
1108
  state.config = config;
1057
1109
  return createBuilder();
1058
1110
  },
1111
+ shouldRevalidate(fn) {
1112
+ state.shouldRevalidate = fn;
1113
+ return createBuilder();
1114
+ },
1115
+ clientLoader(fn) {
1116
+ state.clientLoader = fn;
1117
+ return createBuilder();
1118
+ },
1119
+ clientAction(fn) {
1120
+ state.clientAction = fn;
1121
+ return createBuilder();
1122
+ },
1123
+ links(fn) {
1124
+ state.links = fn;
1125
+ return createBuilder();
1126
+ },
1127
+ beforeLoad(fn) {
1128
+ state.beforeLoad = fn;
1129
+ return createBuilder();
1130
+ },
1131
+ get(fn) {
1132
+ if (!state.methodHandlers)
1133
+ state.methodHandlers = {};
1134
+ state.methodHandlers.GET = fn;
1135
+ return createBuilder();
1136
+ },
1137
+ post(fn) {
1138
+ if (!state.methodHandlers)
1139
+ state.methodHandlers = {};
1140
+ state.methodHandlers.POST = fn;
1141
+ return createBuilder();
1142
+ },
1143
+ put(fn) {
1144
+ if (!state.methodHandlers)
1145
+ state.methodHandlers = {};
1146
+ state.methodHandlers.PUT = fn;
1147
+ return createBuilder();
1148
+ },
1149
+ delete(fn) {
1150
+ if (!state.methodHandlers)
1151
+ state.methodHandlers = {};
1152
+ state.methodHandlers.DELETE = fn;
1153
+ return createBuilder();
1154
+ },
1155
+ patch(fn) {
1156
+ if (!state.methodHandlers)
1157
+ state.methodHandlers = {};
1158
+ state.methodHandlers.PATCH = fn;
1159
+ return createBuilder();
1160
+ },
1059
1161
  build() {
1060
1162
  return {
1061
1163
  path,
1062
1164
  middleware: state.middleware,
1063
1165
  config: state.config,
1166
+ shouldRevalidate: state.shouldRevalidate,
1167
+ clientLoader: state.clientLoader,
1168
+ clientAction: state.clientAction,
1169
+ links: state.links,
1064
1170
  searchParamsSchema: state.searchParamsSchema,
1065
1171
  hashParamsSchema: state.hashParamsSchema,
1172
+ beforeLoad: state.beforeLoad,
1173
+ ...state.methodHandlers || {},
1066
1174
  _types: {}
1067
1175
  };
1068
1176
  }
@@ -1097,6 +1205,56 @@ function defineRoute(path) {
1097
1205
  state.config = config;
1098
1206
  return createBuilderWithLoader();
1099
1207
  },
1208
+ shouldRevalidate(fn) {
1209
+ state.shouldRevalidate = fn;
1210
+ return createBuilderWithLoader();
1211
+ },
1212
+ clientLoader(fn) {
1213
+ state.clientLoader = fn;
1214
+ return createBuilderWithLoader();
1215
+ },
1216
+ clientAction(fn) {
1217
+ state.clientAction = fn;
1218
+ return createBuilderWithLoader();
1219
+ },
1220
+ links(fn) {
1221
+ state.links = fn;
1222
+ return createBuilderWithLoader();
1223
+ },
1224
+ beforeLoad(fn) {
1225
+ state.beforeLoad = fn;
1226
+ return createBuilderWithLoader();
1227
+ },
1228
+ get(fn) {
1229
+ if (!state.methodHandlers)
1230
+ state.methodHandlers = {};
1231
+ state.methodHandlers.GET = fn;
1232
+ return createBuilderWithLoader();
1233
+ },
1234
+ post(fn) {
1235
+ if (!state.methodHandlers)
1236
+ state.methodHandlers = {};
1237
+ state.methodHandlers.POST = fn;
1238
+ return createBuilderWithLoader();
1239
+ },
1240
+ put(fn) {
1241
+ if (!state.methodHandlers)
1242
+ state.methodHandlers = {};
1243
+ state.methodHandlers.PUT = fn;
1244
+ return createBuilderWithLoader();
1245
+ },
1246
+ delete(fn) {
1247
+ if (!state.methodHandlers)
1248
+ state.methodHandlers = {};
1249
+ state.methodHandlers.DELETE = fn;
1250
+ return createBuilderWithLoader();
1251
+ },
1252
+ patch(fn) {
1253
+ if (!state.methodHandlers)
1254
+ state.methodHandlers = {};
1255
+ state.methodHandlers.PATCH = fn;
1256
+ return createBuilderWithLoader();
1257
+ },
1100
1258
  build() {
1101
1259
  return {
1102
1260
  path,
@@ -1106,8 +1264,14 @@ function defineRoute(path) {
1106
1264
  middleware: state.middleware,
1107
1265
  config: state.config,
1108
1266
  cache: state.cache,
1267
+ shouldRevalidate: state.shouldRevalidate,
1268
+ clientLoader: state.clientLoader,
1269
+ clientAction: state.clientAction,
1270
+ links: state.links,
1109
1271
  searchParamsSchema: state.searchParamsSchema,
1110
1272
  hashParamsSchema: state.hashParamsSchema,
1273
+ beforeLoad: state.beforeLoad,
1274
+ ...state.methodHandlers || {},
1111
1275
  _types: {}
1112
1276
  };
1113
1277
  }
@@ -1136,6 +1300,56 @@ function defineRoute(path) {
1136
1300
  state.config = config;
1137
1301
  return createBuilderWithLoaderAndAction();
1138
1302
  },
1303
+ shouldRevalidate(fn) {
1304
+ state.shouldRevalidate = fn;
1305
+ return createBuilderWithLoaderAndAction();
1306
+ },
1307
+ clientLoader(fn) {
1308
+ state.clientLoader = fn;
1309
+ return createBuilderWithLoaderAndAction();
1310
+ },
1311
+ clientAction(fn) {
1312
+ state.clientAction = fn;
1313
+ return createBuilderWithLoaderAndAction();
1314
+ },
1315
+ links(fn) {
1316
+ state.links = fn;
1317
+ return createBuilderWithLoaderAndAction();
1318
+ },
1319
+ beforeLoad(fn) {
1320
+ state.beforeLoad = fn;
1321
+ return createBuilderWithLoaderAndAction();
1322
+ },
1323
+ get(fn) {
1324
+ if (!state.methodHandlers)
1325
+ state.methodHandlers = {};
1326
+ state.methodHandlers.GET = fn;
1327
+ return createBuilderWithLoaderAndAction();
1328
+ },
1329
+ post(fn) {
1330
+ if (!state.methodHandlers)
1331
+ state.methodHandlers = {};
1332
+ state.methodHandlers.POST = fn;
1333
+ return createBuilderWithLoaderAndAction();
1334
+ },
1335
+ put(fn) {
1336
+ if (!state.methodHandlers)
1337
+ state.methodHandlers = {};
1338
+ state.methodHandlers.PUT = fn;
1339
+ return createBuilderWithLoaderAndAction();
1340
+ },
1341
+ delete(fn) {
1342
+ if (!state.methodHandlers)
1343
+ state.methodHandlers = {};
1344
+ state.methodHandlers.DELETE = fn;
1345
+ return createBuilderWithLoaderAndAction();
1346
+ },
1347
+ patch(fn) {
1348
+ if (!state.methodHandlers)
1349
+ state.methodHandlers = {};
1350
+ state.methodHandlers.PATCH = fn;
1351
+ return createBuilderWithLoaderAndAction();
1352
+ },
1139
1353
  build() {
1140
1354
  return {
1141
1355
  path,
@@ -1146,9 +1360,15 @@ function defineRoute(path) {
1146
1360
  middleware: state.middleware,
1147
1361
  config: state.config,
1148
1362
  cache: state.cache,
1363
+ shouldRevalidate: state.shouldRevalidate,
1364
+ clientLoader: state.clientLoader,
1365
+ clientAction: state.clientAction,
1366
+ links: state.links,
1149
1367
  searchParamsSchema: state.searchParamsSchema,
1150
1368
  hashParamsSchema: state.hashParamsSchema,
1151
1369
  actionBodySchema: state.actionBodySchema,
1370
+ beforeLoad: state.beforeLoad,
1371
+ ...state.methodHandlers || {},
1152
1372
  _types: {}
1153
1373
  };
1154
1374
  }
@@ -1247,11 +1467,11 @@ function formDataToObject2(formData) {
1247
1467
  // src/schema-adapters.ts
1248
1468
  function ereoSchema(schema) {
1249
1469
  return {
1250
- parse: (data) => {
1251
- return schema.parse(data);
1470
+ parse: (data2) => {
1471
+ return schema.parse(data2);
1252
1472
  },
1253
- safeParse: (data) => {
1254
- const result = schema.safeParse(data);
1473
+ safeParse: (data2) => {
1474
+ const result = schema.safeParse(data2);
1255
1475
  if (result.success) {
1256
1476
  return { success: true, data: result.data };
1257
1477
  }
@@ -1276,8 +1496,8 @@ function isEreoSchema(value) {
1276
1496
  function createPaginationParser(options = {}) {
1277
1497
  const { defaultPage = 1, defaultLimit = 10, maxLimit = 100 } = options;
1278
1498
  return {
1279
- parse: (data) => {
1280
- const input = data;
1499
+ parse: (data2) => {
1500
+ const input = data2;
1281
1501
  const page = parseNumber(input.page, defaultPage);
1282
1502
  const limit = Math.min(parseNumber(input.limit, defaultLimit), maxLimit);
1283
1503
  const offset = parseNumber(input.offset, undefined);
@@ -1287,9 +1507,9 @@ function createPaginationParser(options = {}) {
1287
1507
  offset: offset !== undefined && offset >= 0 ? offset : undefined
1288
1508
  };
1289
1509
  },
1290
- safeParse: (data) => {
1510
+ safeParse: (data2) => {
1291
1511
  try {
1292
- const result = createPaginationParser(options).parse(data);
1512
+ const result = createPaginationParser(options).parse(data2);
1293
1513
  return { success: true, data: result };
1294
1514
  } catch (error2) {
1295
1515
  return {
@@ -1309,15 +1529,15 @@ function createPaginationParser(options = {}) {
1309
1529
  }
1310
1530
  function createSortParser(allowedFields, defaultField, defaultOrder = "asc") {
1311
1531
  return {
1312
- parse: (data) => {
1313
- const input = data;
1532
+ parse: (data2) => {
1533
+ const input = data2;
1314
1534
  const sortBy = allowedFields.includes(input.sortBy) ? input.sortBy : defaultField;
1315
1535
  const sortOrder = input.sortOrder === "asc" || input.sortOrder === "desc" ? input.sortOrder : defaultOrder;
1316
1536
  return { sortBy, sortOrder };
1317
1537
  },
1318
- safeParse: (data) => {
1538
+ safeParse: (data2) => {
1319
1539
  try {
1320
- const result = createSortParser(allowedFields, defaultField, defaultOrder).parse(data);
1540
+ const result = createSortParser(allowedFields, defaultField, defaultOrder).parse(data2);
1321
1541
  return { success: true, data: result };
1322
1542
  } catch (error2) {
1323
1543
  return {
@@ -1337,8 +1557,8 @@ function createSortParser(allowedFields, defaultField, defaultOrder = "asc") {
1337
1557
  }
1338
1558
  function createFilterParser(allowedFilters) {
1339
1559
  return {
1340
- parse: (data) => {
1341
- const input = data;
1560
+ parse: (data2) => {
1561
+ const input = data2;
1342
1562
  const result = {};
1343
1563
  for (const [key, allowedValues] of Object.entries(allowedFilters)) {
1344
1564
  const value = input[key];
@@ -1355,9 +1575,9 @@ function createFilterParser(allowedFilters) {
1355
1575
  }
1356
1576
  return result;
1357
1577
  },
1358
- safeParse: (data) => {
1578
+ safeParse: (data2) => {
1359
1579
  try {
1360
- const res = createFilterParser(allowedFilters).parse(data);
1580
+ const res = createFilterParser(allowedFilters).parse(data2);
1361
1581
  return { success: true, data: res };
1362
1582
  } catch (error2) {
1363
1583
  return {
@@ -1469,8 +1689,8 @@ class SchemaBuilderImpl {
1469
1689
  build() {
1470
1690
  const fields = this.fields;
1471
1691
  return {
1472
- parse: (data) => {
1473
- const input = data || {};
1692
+ parse: (data2) => {
1693
+ const input = data2 || {};
1474
1694
  const result = {};
1475
1695
  for (const [key, config] of Object.entries(fields)) {
1476
1696
  const value = input[key];
@@ -1504,9 +1724,9 @@ class SchemaBuilderImpl {
1504
1724
  }
1505
1725
  return result;
1506
1726
  },
1507
- safeParse: (data) => {
1727
+ safeParse: (data2) => {
1508
1728
  try {
1509
- const result = schemaBuilder().build().parse(data);
1729
+ const result = schemaBuilder().build().parse(data2);
1510
1730
  return { success: true, data: result };
1511
1731
  } catch (error2) {
1512
1732
  return {
@@ -1529,6 +1749,7 @@ export {
1529
1749
  validateRequired,
1530
1750
  unstable_cache,
1531
1751
  typedAction,
1752
+ throwRedirect,
1532
1753
  tags,
1533
1754
  setCache,
1534
1755
  serializeLoaderData,
@@ -1537,6 +1758,7 @@ export {
1537
1758
  revalidatePath,
1538
1759
  revalidate2 as revalidate,
1539
1760
  resolveDeferred,
1761
+ resolveAllDeferred,
1540
1762
  redirect,
1541
1763
  parseStringArray,
1542
1764
  parseRequestBody,
@@ -1552,6 +1774,7 @@ export {
1552
1774
  json,
1553
1775
  isEreoSchema,
1554
1776
  isDeferred,
1777
+ hasDeferredData,
1555
1778
  getCache,
1556
1779
  generateMetricsVisualization,
1557
1780
  generateCacheKey,
@@ -1563,6 +1786,7 @@ export {
1563
1786
  defineRoute,
1564
1787
  defer,
1565
1788
  dataSource,
1789
+ data,
1566
1790
  createSortParser,
1567
1791
  createRevalidationHandler,
1568
1792
  createPipeline,
package/dist/loader.d.ts CHANGED
@@ -21,7 +21,17 @@ export interface LoaderOptions<T, P extends RouteParams = RouteParams> {
21
21
  /**
22
22
  * Create a type-safe loader function.
23
23
  *
24
+ * Accepts either a plain async function (shorthand) or an options object
25
+ * with caching, transforms, and error handling.
26
+ *
27
+ * @example
28
+ * // Shorthand — just pass a function directly
29
+ * export const loader = createLoader(async ({ params }) => {
30
+ * return db.post.findUnique({ where: { slug: params.slug } });
31
+ * });
32
+ *
24
33
  * @example
34
+ * // Full options — with caching, transforms, and error handling
25
35
  * export const loader = createLoader({
26
36
  * load: async ({ params }) => {
27
37
  * return db.post.findUnique({ where: { slug: params.slug } });
@@ -29,7 +39,7 @@ export interface LoaderOptions<T, P extends RouteParams = RouteParams> {
29
39
  * cache: { maxAge: 60, tags: ['posts'] },
30
40
  * });
31
41
  */
32
- export declare function createLoader<T, P extends RouteParams = RouteParams>(options: LoaderOptions<T, P>): LoaderFunction<T, P>;
42
+ export declare function createLoader<T, P extends RouteParams = RouteParams>(optionsOrFn: LoaderOptions<T, P> | ((args: LoaderArgs<P>) => T | Promise<T>)): LoaderFunction<T, P>;
33
43
  /**
34
44
  * Defer data loading until render time.
35
45
  * Useful for non-critical data that shouldn't block the page.
@@ -52,6 +62,17 @@ export declare function isDeferred<T>(value: unknown): value is DeferredData<T>;
52
62
  * Wait for deferred data to resolve.
53
63
  */
54
64
  export declare function resolveDeferred<T>(deferred: DeferredData<T>): Promise<T>;
65
+ /**
66
+ * Recursively check if any value in a data structure is DeferredData.
67
+ * Used as a fast-path guard: skip async resolution when no deferred data exists.
68
+ */
69
+ export declare function hasDeferredData(data: unknown): boolean;
70
+ /**
71
+ * Recursively walk a data structure, await all DeferredData.promise values,
72
+ * and return a new object with plain resolved values.
73
+ * Uses Promise.all for parallel resolution of sibling deferred values.
74
+ */
75
+ export declare function resolveAllDeferred<T>(data: T): Promise<T>;
55
76
  /**
56
77
  * Helper to extract data from a fetch response.
57
78
  */
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ereo/data",
3
- "version": "0.1.23",
3
+ "version": "0.1.25",
4
4
  "license": "MIT",
5
5
  "author": "Ereo Team",
6
6
  "homepage": "https://ereo.dev",
@@ -32,7 +32,7 @@
32
32
  "typecheck": "tsc --noEmit"
33
33
  },
34
34
  "dependencies": {
35
- "@ereo/core": "^0.1.23"
35
+ "@ereo/core": "^0.1.25"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@types/bun": "^1.1.0",