@tanstack/start-client-core 1.132.0-alpha.0 → 1.132.0-alpha.10

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 +35 -40
  8. package/dist/esm/createMiddleware.js.map +1 -1
  9. package/dist/esm/createServerFn.d.ts +46 -58
  10. package/dist/esm/createServerFn.js +39 -45
  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 +93 -91
  37. package/src/createServerFn.ts +158 -206
  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 +124 -105
  46. package/src/tests/createServerMiddleware.test-d.ts +11 -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 -152
  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 -206
  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 { 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
 
@@ -309,82 +307,82 @@ export type AssignAllClientSendContext<
309
307
  >
310
308
 
311
309
  export interface FunctionMiddlewareOptions<
310
+ in out TRegister extends Register,
312
311
  in out TMiddlewares,
313
312
  in out TValidator,
314
313
  in out TServerContext,
315
314
  in out TClientContext,
316
- in out TServerFnResponseType extends ServerFnResponseType,
317
315
  > {
318
- validateClient?: boolean
319
316
  middleware?: TMiddlewares
320
- validator?: ConstrainValidator<TValidator>
317
+ validator?: ConstrainValidator<TRegister, TValidator>
321
318
  client?: FunctionMiddlewareClientFn<
319
+ TRegister,
322
320
  TMiddlewares,
323
321
  TValidator,
324
322
  TServerContext,
325
- TClientContext,
326
- TServerFnResponseType
323
+ TClientContext
327
324
  >
328
325
  server?: FunctionMiddlewareServerFn<
326
+ TRegister,
329
327
  TMiddlewares,
330
328
  TValidator,
331
329
  TServerContext,
332
330
  unknown,
333
- unknown,
334
- TServerFnResponseType
331
+ unknown
335
332
  >
336
333
  }
337
334
 
338
- export type FunctionMiddlewareClientNextFn<TMiddlewares> = <
339
- TSendContext = undefined,
340
- TNewClientContext = undefined,
341
- >(ctx?: {
335
+ export type FunctionMiddlewareClientNextFn<
336
+ TRegister extends Register,
337
+ TMiddlewares,
338
+ > = <TSendContext = undefined, TNewClientContext = undefined>(ctx?: {
342
339
  context?: TNewClientContext
343
- sendContext?: SerializerStringify<TSendContext>
340
+ sendContext?: ValidateSerializableInput<TRegister, TSendContext>
344
341
  headers?: HeadersInit
345
342
  }) => Promise<
346
343
  FunctionClientResultWithContext<TMiddlewares, TSendContext, TNewClientContext>
347
344
  >
348
345
 
349
346
  export interface FunctionMiddlewareServer<
347
+ TRegister extends Register,
350
348
  TMiddlewares,
351
349
  TValidator,
352
350
  TServerSendContext,
353
351
  TClientContext,
354
- TServerFnResponseType extends ServerFnResponseType,
355
352
  > {
356
353
  server: <TNewServerContext = undefined, TSendContext = undefined>(
357
354
  server: FunctionMiddlewareServerFn<
355
+ TRegister,
358
356
  TMiddlewares,
359
357
  TValidator,
360
358
  TServerSendContext,
361
359
  TNewServerContext,
362
- TSendContext,
363
- TServerFnResponseType
360
+ TSendContext
364
361
  >,
365
362
  ) => FunctionMiddlewareAfterServer<
363
+ TRegister,
366
364
  TMiddlewares,
367
365
  TValidator,
368
366
  TNewServerContext,
369
367
  TServerSendContext,
370
368
  TClientContext,
371
- TSendContext,
372
- ServerFnResponseType
369
+ TSendContext
373
370
  >
374
371
  }
372
+
375
373
  export type FunctionMiddlewareServerFn<
374
+ TRegister extends Register,
376
375
  TMiddlewares,
377
376
  TValidator,
378
377
  TServerSendContext,
379
378
  TNewServerContext,
380
379
  TSendContext,
381
- TServerFnResponseType extends ServerFnResponseType,
382
380
  > = (
383
381
  options: FunctionMiddlewareServerFnOptions<
382
+ TRegister,
384
383
  TMiddlewares,
385
384
  TValidator,
386
- TServerSendContext,
387
- TServerFnResponseType
385
+ TServerSendContext
388
386
  >,
389
387
  ) => FunctionMiddlewareServerFnResult<
390
388
  TMiddlewares,
@@ -394,23 +392,29 @@ export type FunctionMiddlewareServerFn<
394
392
  >
395
393
 
396
394
  export interface RequestMiddlewareServerFnOptions<
395
+ in out TRegister extends Register,
397
396
  in out TMiddlewares,
398
397
  in out TServerSendContext,
399
398
  > {
400
399
  request: Request
401
400
  context: Expand<AssignAllServerContext<TMiddlewares, TServerSendContext>>
402
- next: FunctionMiddlewareServerNextFn<TMiddlewares, TServerSendContext>
401
+ next: FunctionMiddlewareServerNextFn<
402
+ TRegister,
403
+ TMiddlewares,
404
+ TServerSendContext
405
+ >
403
406
  response: Response
404
407
  method: Method
405
408
  signal: AbortSignal
406
409
  }
407
410
 
408
- export type FunctionMiddlewareServerNextFn<TMiddlewares, TServerSendContext> = <
409
- TNewServerContext = undefined,
410
- TSendContext = undefined,
411
- >(ctx?: {
411
+ export type FunctionMiddlewareServerNextFn<
412
+ TRegister extends Register,
413
+ TMiddlewares,
414
+ TServerSendContext,
415
+ > = <TNewServerContext = undefined, TSendContext = undefined>(ctx?: {
412
416
  context?: TNewServerContext
413
- sendContext?: SerializerStringify<TSendContext>
417
+ sendContext?: ValidateSerializableInput<TRegister, TSendContext>
414
418
  }) => Promise<
415
419
  FunctionServerResultWithContext<
416
420
  TMiddlewares,
@@ -438,15 +442,18 @@ export type FunctionServerResultWithContext<
438
442
  }
439
443
 
440
444
  export interface FunctionMiddlewareServerFnOptions<
445
+ in out TRegister extends Register,
441
446
  in out TMiddlewares,
442
447
  in out TValidator,
443
448
  in out TServerSendContext,
444
- in out TServerFnResponseType,
445
449
  > {
446
450
  data: Expand<IntersectAllValidatorOutputs<TMiddlewares, TValidator>>
447
451
  context: Expand<AssignAllServerContext<TMiddlewares, TServerSendContext>>
448
- next: FunctionMiddlewareServerNextFn<TMiddlewares, TServerSendContext>
449
- response: TServerFnResponseType
452
+ next: FunctionMiddlewareServerNextFn<
453
+ TRegister,
454
+ TMiddlewares,
455
+ TServerSendContext
456
+ >
450
457
  method: Method
451
458
  filename: string
452
459
  functionId: string
@@ -475,59 +482,59 @@ export type FunctionMiddlewareServerFnResult<
475
482
  >
476
483
 
477
484
  export interface FunctionMiddlewareAfterServer<
485
+ TRegister extends Register,
478
486
  TMiddlewares,
479
487
  TValidator,
480
488
  TServerContext,
481
489
  TServerSendContext,
482
490
  TClientContext,
483
491
  TClientSendContext,
484
- TServerFnResponseType extends ServerFnResponseType,
485
492
  > extends FunctionMiddlewareWithTypes<
493
+ TRegister,
486
494
  TMiddlewares,
487
495
  TValidator,
488
496
  TServerContext,
489
497
  TServerSendContext,
490
498
  TClientContext,
491
- TClientSendContext,
492
- TServerFnResponseType
499
+ TClientSendContext
493
500
  > {}
494
501
 
495
502
  export interface FunctionMiddlewareClient<
503
+ TRegister extends Register,
496
504
  TMiddlewares,
497
505
  TValidator,
498
- TServerFnResponseType extends ServerFnResponseType,
499
506
  TRouter extends AnyRouter = RegisteredRouter,
500
507
  > {
501
508
  client: <TSendServerContext = undefined, TNewClientContext = undefined>(
502
509
  client: FunctionMiddlewareClientFn<
510
+ TRegister,
503
511
  TMiddlewares,
504
512
  TValidator,
505
513
  TSendServerContext,
506
514
  TNewClientContext,
507
- TServerFnResponseType,
508
515
  TRouter
509
516
  >,
510
517
  ) => FunctionMiddlewareAfterClient<
518
+ TRegister,
511
519
  TMiddlewares,
512
520
  TValidator,
513
521
  TSendServerContext,
514
- TNewClientContext,
515
- ServerFnResponseType
522
+ TNewClientContext
516
523
  >
517
524
  }
518
525
 
519
526
  export type FunctionMiddlewareClientFn<
527
+ TRegister extends Register,
520
528
  TMiddlewares,
521
529
  TValidator,
522
530
  TSendContext,
523
531
  TClientContext,
524
- TServerFnResponseType extends ServerFnResponseType,
525
532
  TRouter extends AnyRouter = RegisteredRouter,
526
533
  > = (
527
534
  options: FunctionMiddlewareClientFnOptions<
535
+ TRegister,
528
536
  TMiddlewares,
529
537
  TValidator,
530
- TServerFnResponseType,
531
538
  TRouter
532
539
  >,
533
540
  ) => FunctionMiddlewareClientFnResult<
@@ -537,18 +544,17 @@ export type FunctionMiddlewareClientFn<
537
544
  >
538
545
 
539
546
  export interface FunctionMiddlewareClientFnOptions<
547
+ in out TRegister extends Register,
540
548
  in out TMiddlewares,
541
549
  in out TValidator,
542
- in out TServerFnResponseType extends ServerFnResponseType,
543
550
  in out TRouter extends AnyRouter,
544
551
  > {
545
552
  data: Expand<IntersectAllValidatorInputs<TMiddlewares, TValidator>>
546
553
  context: Expand<AssignAllClientContextBeforeNext<TMiddlewares>>
547
554
  sendContext: Expand<AssignAllServerSendContext<TMiddlewares>>
548
555
  method: Method
549
- response: TServerFnResponseType
550
556
  signal: AbortSignal
551
- next: FunctionMiddlewareClientNextFn<TMiddlewares>
557
+ next: FunctionMiddlewareClientNextFn<TRegister, TMiddlewares>
552
558
  filename: string
553
559
  functionId: string
554
560
  router: TRouter
@@ -580,62 +586,58 @@ export type FunctionClientResultWithContext<
580
586
  }
581
587
 
582
588
  export interface FunctionMiddlewareAfterClient<
589
+ TRegister extends Register,
583
590
  TMiddlewares,
584
591
  TValidator,
585
592
  TServerSendContext,
586
593
  TClientContext,
587
- TServerFnResponseType extends ServerFnResponseType,
588
594
  > extends FunctionMiddlewareWithTypes<
595
+ TRegister,
589
596
  TMiddlewares,
590
597
  TValidator,
591
598
  undefined,
592
599
  TServerSendContext,
593
600
  TClientContext,
594
- undefined,
595
- TServerFnResponseType
601
+ undefined
596
602
  >,
597
603
  FunctionMiddlewareServer<
604
+ TRegister,
598
605
  TMiddlewares,
599
606
  TValidator,
600
607
  TServerSendContext,
601
- TClientContext,
602
- TServerFnResponseType
608
+ TClientContext
603
609
  > {}
604
610
 
605
611
  export interface FunctionMiddlewareValidator<
612
+ TRegister extends Register,
606
613
  TMiddlewares,
607
- TServerFnResponseType extends ServerFnResponseType,
608
614
  > {
609
615
  validator: <TNewValidator>(
610
- input: ConstrainValidator<TNewValidator>,
611
- ) => FunctionMiddlewareAfterValidator<
612
- TMiddlewares,
613
- TNewValidator,
614
- TServerFnResponseType
615
- >
616
+ input: ConstrainValidator<TRegister, TNewValidator>,
617
+ ) => FunctionMiddlewareAfterValidator<TRegister, TMiddlewares, TNewValidator>
616
618
  }
617
619
 
618
620
  export interface FunctionMiddlewareAfterValidator<
621
+ TRegister extends Register,
619
622
  TMiddlewares,
620
623
  TValidator,
621
- TServerFnResponseType extends ServerFnResponseType,
622
624
  > extends FunctionMiddlewareWithTypes<
625
+ TRegister,
623
626
  TMiddlewares,
624
627
  TValidator,
625
628
  undefined,
626
629
  undefined,
627
630
  undefined,
628
- undefined,
629
- ServerFnResponseType
631
+ undefined
630
632
  >,
631
633
  FunctionMiddlewareServer<
634
+ TRegister,
632
635
  TMiddlewares,
633
636
  TValidator,
634
637
  undefined,
635
- undefined,
636
- TServerFnResponseType
638
+ undefined
637
639
  >,
638
- FunctionMiddlewareClient<TMiddlewares, TValidator, ServerFnResponseType> {}
640
+ FunctionMiddlewareClient<TRegister, TMiddlewares, TValidator> {}
639
641
 
640
642
  export interface RequestMiddleware
641
643
  extends RequestMiddlewareAfterMiddleware<undefined> {