@tanstack/start-client-core 1.132.0-alpha.2 → 1.132.0-alpha.20

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.
Files changed (53) hide show
  1. package/dist/esm/constants.d.ts +5 -0
  2. package/dist/esm/constants.js +13 -0
  3. package/dist/esm/constants.js.map +1 -0
  4. package/dist/esm/createClientRpc.d.ts +6 -0
  5. package/dist/esm/createClientRpc.js +26 -0
  6. package/dist/esm/createClientRpc.js.map +1 -0
  7. package/dist/esm/createMiddleware.d.ts +42 -42
  8. package/dist/esm/createMiddleware.js.map +1 -1
  9. package/dist/esm/createServerFn.d.ts +57 -61
  10. package/dist/esm/createServerFn.js +40 -46
  11. package/dist/esm/createServerFn.js.map +1 -1
  12. package/dist/esm/envOnly.d.ts +2 -2
  13. package/dist/esm/envOnly.js +4 -4
  14. package/dist/esm/envOnly.js.map +1 -1
  15. package/dist/esm/getRouterInstance.d.ts +1 -0
  16. package/dist/esm/getRouterInstance.js +7 -0
  17. package/dist/esm/getRouterInstance.js.map +1 -0
  18. package/dist/esm/index.d.ts +6 -5
  19. package/dist/esm/index.js +13 -8
  20. package/dist/esm/index.js.map +1 -1
  21. package/dist/esm/serializer/ServerFunctionSerializationAdapter.d.ts +5 -0
  22. package/dist/esm/serializer/ServerFunctionSerializationAdapter.js +17 -0
  23. package/dist/esm/serializer/ServerFunctionSerializationAdapter.js.map +1 -0
  24. package/dist/esm/serializer/getClientSerovalPlugins.d.ts +3 -0
  25. package/dist/esm/serializer/getClientSerovalPlugins.js +13 -0
  26. package/dist/esm/serializer/getClientSerovalPlugins.js.map +1 -0
  27. package/dist/esm/serializer/getDefaultSerovalPlugins.d.ts +1 -0
  28. package/dist/esm/serializer/getDefaultSerovalPlugins.js +16 -0
  29. package/dist/esm/serializer/getDefaultSerovalPlugins.js.map +1 -0
  30. package/dist/esm/serverFnFetcher.d.ts +1 -0
  31. package/dist/esm/serverFnFetcher.js +217 -0
  32. package/dist/esm/serverFnFetcher.js.map +1 -0
  33. package/package.json +5 -4
  34. package/src/constants.ts +8 -0
  35. package/src/createClientRpc.ts +26 -0
  36. package/src/createMiddleware.ts +113 -95
  37. package/src/createServerFn.ts +230 -208
  38. package/src/envOnly.ts +2 -2
  39. package/src/getRouterInstance.ts +7 -0
  40. package/src/index.tsx +11 -15
  41. package/src/serializer/ServerFunctionSerializationAdapter.ts +16 -0
  42. package/src/serializer/getClientSerovalPlugins.ts +10 -0
  43. package/src/serializer/getDefaultSerovalPlugins.ts +19 -0
  44. package/src/serverFnFetcher.ts +299 -0
  45. package/src/tests/createServerFn.test-d.ts +134 -108
  46. package/src/tests/createServerMiddleware.test-d.ts +16 -9
  47. package/src/tests/envOnly.test-d.ts +9 -9
  48. package/dist/esm/serializer.d.ts +0 -23
  49. package/dist/esm/serializer.js +0 -162
  50. package/dist/esm/serializer.js.map +0 -1
  51. package/dist/esm/tests/serializer.test.d.ts +0 -1
  52. package/src/serializer.ts +0 -219
  53. package/src/tests/serializer.test.tsx +0 -151
@@ -1,43 +1,42 @@
1
- import type {
2
- ConstrainValidator,
3
- Method,
4
- ServerFnResponseType,
5
- } from './createServerFn'
1
+ import type { AnyServerFn, ConstrainValidator, Method } from './createServerFn'
6
2
  import type {
7
3
  AnyRouter,
8
4
  Assign,
9
5
  Constrain,
10
6
  Expand,
11
7
  IntersectAssign,
8
+ Register,
12
9
  RegisteredRouter,
13
10
  ResolveValidatorInput,
14
11
  ResolveValidatorOutput,
12
+ ValidateSerializableInput,
15
13
  } from '@tanstack/router-core'
16
- import type { SerializerStringify } from './serializer'
17
14
 
18
- export function createMiddleware<TType extends MiddlewareType>(
15
+ export function createMiddleware<
16
+ TRegister extends Register,
17
+ TType extends MiddlewareType,
18
+ >(
19
19
  options: {
20
20
  type: TType
21
- validateClient?: boolean
22
21
  },
23
22
  __opts?: FunctionMiddlewareOptions<
23
+ TRegister,
24
24
  unknown,
25
25
  undefined,
26
26
  undefined,
27
- undefined,
28
- ServerFnResponseType
27
+ undefined
29
28
  >,
30
- ): CreateMiddlewareResult<TType> {
29
+ ): CreateMiddlewareResult<TRegister, TType> {
31
30
  // const resolvedOptions = (__opts || options) as MiddlewareOptions<
32
31
  const resolvedOptions = {
33
32
  type: 'function',
34
33
  ...(__opts ||
35
34
  (options as FunctionMiddlewareOptions<
35
+ TRegister,
36
36
  unknown,
37
37
  undefined,
38
38
  undefined,
39
- undefined,
40
- ServerFnResponseType
39
+ undefined
41
40
  >)),
42
41
  }
43
42
 
@@ -67,57 +66,56 @@ export function createMiddleware<TType extends MiddlewareType>(
67
66
  Object.assign(resolvedOptions, { server }),
68
67
  ) as any
69
68
  },
70
- } as unknown as CreateMiddlewareResult<TType>
69
+ } as unknown as CreateMiddlewareResult<TRegister, TType>
71
70
  }
72
71
 
73
72
  export type MiddlewareType = 'request' | 'function'
74
73
 
75
- export type CreateMiddlewareResult<TType extends MiddlewareType> =
76
- 'function' extends TType
77
- ? FunctionMiddleware<ServerFnResponseType>
78
- : RequestMiddleware
74
+ export type CreateMiddlewareResult<
75
+ TRegister extends Register,
76
+ TType extends MiddlewareType,
77
+ > = 'function' extends TType ? FunctionMiddleware<TRegister> : RequestMiddleware
79
78
 
80
- export interface FunctionMiddleware<
81
- TServerFnResponseType extends ServerFnResponseType,
82
- > extends FunctionMiddlewareAfterMiddleware<unknown, TServerFnResponseType> {
79
+ export interface FunctionMiddleware<TRegister extends Register>
80
+ extends FunctionMiddlewareAfterMiddleware<TRegister, unknown> {
83
81
  middleware: <const TNewMiddlewares = undefined>(
84
82
  middlewares: Constrain<
85
83
  TNewMiddlewares,
86
84
  ReadonlyArray<AnyFunctionMiddleware>
87
85
  >,
88
- ) => FunctionMiddlewareAfterMiddleware<TNewMiddlewares, TServerFnResponseType>
86
+ ) => FunctionMiddlewareAfterMiddleware<TRegister, TNewMiddlewares>
89
87
  }
90
88
 
91
89
  export interface FunctionMiddlewareAfterMiddleware<
90
+ TRegister extends Register,
92
91
  TMiddlewares,
93
- TServerFnResponseType extends ServerFnResponseType,
94
92
  > extends FunctionMiddlewareWithTypes<
93
+ TRegister,
95
94
  TMiddlewares,
96
95
  undefined,
97
96
  undefined,
98
97
  undefined,
99
98
  undefined,
100
- undefined,
101
- TServerFnResponseType
99
+ undefined
102
100
  >,
103
101
  FunctionMiddlewareServer<
102
+ TRegister,
104
103
  TMiddlewares,
105
104
  undefined,
106
105
  undefined,
107
- undefined,
108
- TServerFnResponseType
106
+ undefined
109
107
  >,
110
- FunctionMiddlewareClient<TMiddlewares, undefined, TServerFnResponseType>,
111
- FunctionMiddlewareValidator<TMiddlewares, TServerFnResponseType> {}
108
+ FunctionMiddlewareClient<TRegister, TMiddlewares, undefined>,
109
+ FunctionMiddlewareValidator<TRegister, TMiddlewares> {}
112
110
 
113
111
  export interface FunctionMiddlewareWithTypes<
112
+ TRegister extends Register,
114
113
  TMiddlewares,
115
114
  TValidator,
116
115
  TServerContext,
117
116
  TServerSendContext,
118
117
  TClientContext,
119
118
  TClientSendContext,
120
- TServerFnResponseType extends ServerFnResponseType,
121
119
  > {
122
120
  _types: FunctionMiddlewareTypes<
123
121
  TMiddlewares,
@@ -128,11 +126,11 @@ export interface FunctionMiddlewareWithTypes<
128
126
  TClientSendContext
129
127
  >
130
128
  options: FunctionMiddlewareOptions<
129
+ TRegister,
131
130
  TMiddlewares,
132
131
  TValidator,
133
132
  TServerContext,
134
- TClientContext,
135
- TServerFnResponseType
133
+ TClientContext
136
134
  >
137
135
  }
138
136
 
@@ -196,10 +194,14 @@ export type IntersectAllMiddleware<
196
194
  TMiddlewares,
197
195
  TType extends
198
196
  | keyof AnyFunctionMiddleware['_types']
199
- | keyof AnyRequestMiddleware['_types'],
197
+ | keyof AnyRequestMiddleware['_types']
198
+ | keyof AnyServerFn['_types'],
200
199
  TAcc = undefined,
201
200
  > = TMiddlewares extends readonly [infer TMiddleware, ...infer TRest]
202
- ? TMiddleware extends AnyFunctionMiddleware | AnyRequestMiddleware
201
+ ? TMiddleware extends
202
+ | AnyFunctionMiddleware
203
+ | AnyRequestMiddleware
204
+ | AnyServerFn
203
205
  ? IntersectAllMiddleware<
204
206
  TRest,
205
207
  TType,
@@ -251,10 +253,14 @@ export type AssignAllMiddleware<
251
253
  TMiddlewares,
252
254
  TType extends
253
255
  | keyof AnyFunctionMiddleware['_types']
254
- | keyof AnyRequestMiddleware['_types'],
256
+ | keyof AnyRequestMiddleware['_types']
257
+ | keyof AnyServerFn['_types'],
255
258
  TAcc = undefined,
256
259
  > = TMiddlewares extends readonly [infer TMiddleware, ...infer TRest]
257
- ? TMiddleware extends AnyFunctionMiddleware | AnyRequestMiddleware
260
+ ? TMiddleware extends
261
+ | AnyFunctionMiddleware
262
+ | AnyRequestMiddleware
263
+ | AnyServerFn
258
264
  ? AssignAllMiddleware<
259
265
  TRest,
260
266
  TType,
@@ -309,82 +315,82 @@ export type AssignAllClientSendContext<
309
315
  >
310
316
 
311
317
  export interface FunctionMiddlewareOptions<
318
+ in out TRegister extends Register,
312
319
  in out TMiddlewares,
313
320
  in out TValidator,
314
321
  in out TServerContext,
315
322
  in out TClientContext,
316
- in out TServerFnResponseType extends ServerFnResponseType,
317
323
  > {
318
- validateClient?: boolean
319
324
  middleware?: TMiddlewares
320
- validator?: ConstrainValidator<TValidator>
325
+ validator?: ConstrainValidator<TRegister, 'GET', TValidator>
321
326
  client?: FunctionMiddlewareClientFn<
327
+ TRegister,
322
328
  TMiddlewares,
323
329
  TValidator,
324
330
  TServerContext,
325
- TClientContext,
326
- TServerFnResponseType
331
+ TClientContext
327
332
  >
328
333
  server?: FunctionMiddlewareServerFn<
334
+ TRegister,
329
335
  TMiddlewares,
330
336
  TValidator,
331
337
  TServerContext,
332
338
  unknown,
333
- unknown,
334
- TServerFnResponseType
339
+ unknown
335
340
  >
336
341
  }
337
342
 
338
- export type FunctionMiddlewareClientNextFn<TMiddlewares> = <
339
- TSendContext = undefined,
340
- TNewClientContext = undefined,
341
- >(ctx?: {
343
+ export type FunctionMiddlewareClientNextFn<
344
+ TRegister extends Register,
345
+ TMiddlewares,
346
+ > = <TSendContext = undefined, TNewClientContext = undefined>(ctx?: {
342
347
  context?: TNewClientContext
343
- sendContext?: SerializerStringify<TSendContext>
348
+ sendContext?: ValidateSerializableInput<TRegister, TSendContext>
344
349
  headers?: HeadersInit
345
350
  }) => Promise<
346
351
  FunctionClientResultWithContext<TMiddlewares, TSendContext, TNewClientContext>
347
352
  >
348
353
 
349
354
  export interface FunctionMiddlewareServer<
355
+ TRegister extends Register,
350
356
  TMiddlewares,
351
357
  TValidator,
352
358
  TServerSendContext,
353
359
  TClientContext,
354
- TServerFnResponseType extends ServerFnResponseType,
355
360
  > {
356
361
  server: <TNewServerContext = undefined, TSendContext = undefined>(
357
362
  server: FunctionMiddlewareServerFn<
363
+ TRegister,
358
364
  TMiddlewares,
359
365
  TValidator,
360
366
  TServerSendContext,
361
367
  TNewServerContext,
362
- TSendContext,
363
- TServerFnResponseType
368
+ TSendContext
364
369
  >,
365
370
  ) => FunctionMiddlewareAfterServer<
371
+ TRegister,
366
372
  TMiddlewares,
367
373
  TValidator,
368
374
  TNewServerContext,
369
375
  TServerSendContext,
370
376
  TClientContext,
371
- TSendContext,
372
- ServerFnResponseType
377
+ TSendContext
373
378
  >
374
379
  }
380
+
375
381
  export type FunctionMiddlewareServerFn<
382
+ TRegister extends Register,
376
383
  TMiddlewares,
377
384
  TValidator,
378
385
  TServerSendContext,
379
386
  TNewServerContext,
380
387
  TSendContext,
381
- TServerFnResponseType extends ServerFnResponseType,
382
388
  > = (
383
389
  options: FunctionMiddlewareServerFnOptions<
390
+ TRegister,
384
391
  TMiddlewares,
385
392
  TValidator,
386
- TServerSendContext,
387
- TServerFnResponseType
393
+ TServerSendContext
388
394
  >,
389
395
  ) => FunctionMiddlewareServerFnResult<
390
396
  TMiddlewares,
@@ -394,23 +400,29 @@ export type FunctionMiddlewareServerFn<
394
400
  >
395
401
 
396
402
  export interface RequestMiddlewareServerFnOptions<
403
+ in out TRegister extends Register,
397
404
  in out TMiddlewares,
398
405
  in out TServerSendContext,
399
406
  > {
400
407
  request: Request
401
408
  context: Expand<AssignAllServerContext<TMiddlewares, TServerSendContext>>
402
- next: FunctionMiddlewareServerNextFn<TMiddlewares, TServerSendContext>
409
+ next: FunctionMiddlewareServerNextFn<
410
+ TRegister,
411
+ TMiddlewares,
412
+ TServerSendContext
413
+ >
403
414
  response: Response
404
415
  method: Method
405
416
  signal: AbortSignal
406
417
  }
407
418
 
408
- export type FunctionMiddlewareServerNextFn<TMiddlewares, TServerSendContext> = <
409
- TNewServerContext = undefined,
410
- TSendContext = undefined,
411
- >(ctx?: {
419
+ export type FunctionMiddlewareServerNextFn<
420
+ TRegister extends Register,
421
+ TMiddlewares,
422
+ TServerSendContext,
423
+ > = <TNewServerContext = undefined, TSendContext = undefined>(ctx?: {
412
424
  context?: TNewServerContext
413
- sendContext?: SerializerStringify<TSendContext>
425
+ sendContext?: ValidateSerializableInput<TRegister, TSendContext>
414
426
  }) => Promise<
415
427
  FunctionServerResultWithContext<
416
428
  TMiddlewares,
@@ -438,15 +450,18 @@ export type FunctionServerResultWithContext<
438
450
  }
439
451
 
440
452
  export interface FunctionMiddlewareServerFnOptions<
453
+ in out TRegister extends Register,
441
454
  in out TMiddlewares,
442
455
  in out TValidator,
443
456
  in out TServerSendContext,
444
- in out TServerFnResponseType,
445
457
  > {
446
458
  data: Expand<IntersectAllValidatorOutputs<TMiddlewares, TValidator>>
447
459
  context: Expand<AssignAllServerContext<TMiddlewares, TServerSendContext>>
448
- next: FunctionMiddlewareServerNextFn<TMiddlewares, TServerSendContext>
449
- response: TServerFnResponseType
460
+ next: FunctionMiddlewareServerNextFn<
461
+ TRegister,
462
+ TMiddlewares,
463
+ TServerSendContext
464
+ >
450
465
  method: Method
451
466
  filename: string
452
467
  functionId: string
@@ -475,59 +490,59 @@ export type FunctionMiddlewareServerFnResult<
475
490
  >
476
491
 
477
492
  export interface FunctionMiddlewareAfterServer<
493
+ TRegister extends Register,
478
494
  TMiddlewares,
479
495
  TValidator,
480
496
  TServerContext,
481
497
  TServerSendContext,
482
498
  TClientContext,
483
499
  TClientSendContext,
484
- TServerFnResponseType extends ServerFnResponseType,
485
500
  > extends FunctionMiddlewareWithTypes<
501
+ TRegister,
486
502
  TMiddlewares,
487
503
  TValidator,
488
504
  TServerContext,
489
505
  TServerSendContext,
490
506
  TClientContext,
491
- TClientSendContext,
492
- TServerFnResponseType
507
+ TClientSendContext
493
508
  > {}
494
509
 
495
510
  export interface FunctionMiddlewareClient<
511
+ TRegister extends Register,
496
512
  TMiddlewares,
497
513
  TValidator,
498
- TServerFnResponseType extends ServerFnResponseType,
499
514
  TRouter extends AnyRouter = RegisteredRouter,
500
515
  > {
501
516
  client: <TSendServerContext = undefined, TNewClientContext = undefined>(
502
517
  client: FunctionMiddlewareClientFn<
518
+ TRegister,
503
519
  TMiddlewares,
504
520
  TValidator,
505
521
  TSendServerContext,
506
522
  TNewClientContext,
507
- TServerFnResponseType,
508
523
  TRouter
509
524
  >,
510
525
  ) => FunctionMiddlewareAfterClient<
526
+ TRegister,
511
527
  TMiddlewares,
512
528
  TValidator,
513
529
  TSendServerContext,
514
- TNewClientContext,
515
- ServerFnResponseType
530
+ TNewClientContext
516
531
  >
517
532
  }
518
533
 
519
534
  export type FunctionMiddlewareClientFn<
535
+ TRegister extends Register,
520
536
  TMiddlewares,
521
537
  TValidator,
522
538
  TSendContext,
523
539
  TClientContext,
524
- TServerFnResponseType extends ServerFnResponseType,
525
540
  TRouter extends AnyRouter = RegisteredRouter,
526
541
  > = (
527
542
  options: FunctionMiddlewareClientFnOptions<
543
+ TRegister,
528
544
  TMiddlewares,
529
545
  TValidator,
530
- TServerFnResponseType,
531
546
  TRouter
532
547
  >,
533
548
  ) => FunctionMiddlewareClientFnResult<
@@ -537,18 +552,17 @@ export type FunctionMiddlewareClientFn<
537
552
  >
538
553
 
539
554
  export interface FunctionMiddlewareClientFnOptions<
555
+ in out TRegister extends Register,
540
556
  in out TMiddlewares,
541
557
  in out TValidator,
542
- in out TServerFnResponseType extends ServerFnResponseType,
543
558
  in out TRouter extends AnyRouter,
544
559
  > {
545
560
  data: Expand<IntersectAllValidatorInputs<TMiddlewares, TValidator>>
546
561
  context: Expand<AssignAllClientContextBeforeNext<TMiddlewares>>
547
562
  sendContext: Expand<AssignAllServerSendContext<TMiddlewares>>
548
563
  method: Method
549
- response: TServerFnResponseType
550
564
  signal: AbortSignal
551
- next: FunctionMiddlewareClientNextFn<TMiddlewares>
565
+ next: FunctionMiddlewareClientNextFn<TRegister, TMiddlewares>
552
566
  filename: string
553
567
  functionId: string
554
568
  router: TRouter
@@ -580,62 +594,58 @@ export type FunctionClientResultWithContext<
580
594
  }
581
595
 
582
596
  export interface FunctionMiddlewareAfterClient<
597
+ TRegister extends Register,
583
598
  TMiddlewares,
584
599
  TValidator,
585
600
  TServerSendContext,
586
601
  TClientContext,
587
- TServerFnResponseType extends ServerFnResponseType,
588
602
  > extends FunctionMiddlewareWithTypes<
603
+ TRegister,
589
604
  TMiddlewares,
590
605
  TValidator,
591
606
  undefined,
592
607
  TServerSendContext,
593
608
  TClientContext,
594
- undefined,
595
- TServerFnResponseType
609
+ undefined
596
610
  >,
597
611
  FunctionMiddlewareServer<
612
+ TRegister,
598
613
  TMiddlewares,
599
614
  TValidator,
600
615
  TServerSendContext,
601
- TClientContext,
602
- TServerFnResponseType
616
+ TClientContext
603
617
  > {}
604
618
 
605
619
  export interface FunctionMiddlewareValidator<
620
+ TRegister extends Register,
606
621
  TMiddlewares,
607
- TServerFnResponseType extends ServerFnResponseType,
608
622
  > {
609
623
  validator: <TNewValidator>(
610
- input: ConstrainValidator<TNewValidator>,
611
- ) => FunctionMiddlewareAfterValidator<
612
- TMiddlewares,
613
- TNewValidator,
614
- TServerFnResponseType
615
- >
624
+ input: ConstrainValidator<TRegister, 'GET', TNewValidator>,
625
+ ) => FunctionMiddlewareAfterValidator<TRegister, TMiddlewares, TNewValidator>
616
626
  }
617
627
 
618
628
  export interface FunctionMiddlewareAfterValidator<
629
+ TRegister extends Register,
619
630
  TMiddlewares,
620
631
  TValidator,
621
- TServerFnResponseType extends ServerFnResponseType,
622
632
  > extends FunctionMiddlewareWithTypes<
633
+ TRegister,
623
634
  TMiddlewares,
624
635
  TValidator,
625
636
  undefined,
626
637
  undefined,
627
638
  undefined,
628
- undefined,
629
- ServerFnResponseType
639
+ undefined
630
640
  >,
631
641
  FunctionMiddlewareServer<
642
+ TRegister,
632
643
  TMiddlewares,
633
644
  TValidator,
634
645
  undefined,
635
- undefined,
636
- TServerFnResponseType
646
+ undefined
637
647
  >,
638
- FunctionMiddlewareClient<TMiddlewares, TValidator, ServerFnResponseType> {}
648
+ FunctionMiddlewareClient<TRegister, TMiddlewares, TValidator> {}
639
649
 
640
650
  export interface RequestMiddleware
641
651
  extends RequestMiddlewareAfterMiddleware<undefined> {
@@ -648,8 +658,16 @@ export type AnyRequestMiddleware = RequestMiddlewareWithTypes<any, any>
648
658
 
649
659
  export interface RequestMiddlewareWithTypes<TMiddlewares, TServerContext> {
650
660
  _types: RequestMiddlewareTypes<TMiddlewares, TServerContext>
661
+ options: RequestMiddlewareOptions<TMiddlewares, TServerContext>
651
662
  }
652
663
 
664
+ export interface RequestMiddlewareOptions<
665
+ in out TMiddlewares,
666
+ in out TServerContext,
667
+ > {
668
+ middleware?: TMiddlewares
669
+ server?: RequestServerFn<TMiddlewares, TServerContext>
670
+ }
653
671
  export interface RequestMiddlewareTypes<TMiddlewares, TServerContext> {
654
672
  type: 'request'
655
673
  middlewares: TMiddlewares