@benjavicente/start-client-core 1.167.9

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 (94) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +12 -0
  3. package/bin/intent.js +25 -0
  4. package/dist/esm/client/ServerFunctionSerializationAdapter.d.ts +7 -0
  5. package/dist/esm/client/ServerFunctionSerializationAdapter.js +18 -0
  6. package/dist/esm/client/ServerFunctionSerializationAdapter.js.map +1 -0
  7. package/dist/esm/client/hydrateStart.d.ts +2 -0
  8. package/dist/esm/client/hydrateStart.js +31 -0
  9. package/dist/esm/client/hydrateStart.js.map +1 -0
  10. package/dist/esm/client/index.d.ts +2 -0
  11. package/dist/esm/client/index.js +2 -0
  12. package/dist/esm/client-rpc/createClientRpc.d.ts +6 -0
  13. package/dist/esm/client-rpc/createClientRpc.js +21 -0
  14. package/dist/esm/client-rpc/createClientRpc.js.map +1 -0
  15. package/dist/esm/client-rpc/frame-decoder.d.ts +23 -0
  16. package/dist/esm/client-rpc/frame-decoder.js +231 -0
  17. package/dist/esm/client-rpc/frame-decoder.js.map +1 -0
  18. package/dist/esm/client-rpc/index.d.ts +1 -0
  19. package/dist/esm/client-rpc/index.js +2 -0
  20. package/dist/esm/client-rpc/serverFnFetcher.d.ts +1 -0
  21. package/dist/esm/client-rpc/serverFnFetcher.js +231 -0
  22. package/dist/esm/client-rpc/serverFnFetcher.js.map +1 -0
  23. package/dist/esm/constants.d.ts +53 -0
  24. package/dist/esm/constants.js +46 -0
  25. package/dist/esm/constants.js.map +1 -0
  26. package/dist/esm/createMiddleware.d.ts +195 -0
  27. package/dist/esm/createMiddleware.js +26 -0
  28. package/dist/esm/createMiddleware.js.map +1 -0
  29. package/dist/esm/createServerFn.d.ts +131 -0
  30. package/dist/esm/createServerFn.js +200 -0
  31. package/dist/esm/createServerFn.js.map +1 -0
  32. package/dist/esm/createStart.d.ts +50 -0
  33. package/dist/esm/createStart.js +29 -0
  34. package/dist/esm/createStart.js.map +1 -0
  35. package/dist/esm/fake-start-entry.d.ts +2 -0
  36. package/dist/esm/fake-start-entry.js +7 -0
  37. package/dist/esm/fake-start-entry.js.map +1 -0
  38. package/dist/esm/getDefaultSerovalPlugins.d.ts +1 -0
  39. package/dist/esm/getDefaultSerovalPlugins.js +10 -0
  40. package/dist/esm/getDefaultSerovalPlugins.js.map +1 -0
  41. package/dist/esm/getGlobalStartContext.d.ts +3 -0
  42. package/dist/esm/getGlobalStartContext.js +12 -0
  43. package/dist/esm/getGlobalStartContext.js.map +1 -0
  44. package/dist/esm/getRouterInstance.d.ts +2 -0
  45. package/dist/esm/getRouterInstance.js +8 -0
  46. package/dist/esm/getRouterInstance.js.map +1 -0
  47. package/dist/esm/getStartContextServerOnly.d.ts +2 -0
  48. package/dist/esm/getStartContextServerOnly.js +8 -0
  49. package/dist/esm/getStartContextServerOnly.js.map +1 -0
  50. package/dist/esm/getStartOptions.d.ts +2 -0
  51. package/dist/esm/getStartOptions.js +8 -0
  52. package/dist/esm/getStartOptions.js.map +1 -0
  53. package/dist/esm/global.d.ts +7 -0
  54. package/dist/esm/index.d.ts +20 -0
  55. package/dist/esm/index.js +12 -0
  56. package/dist/esm/safeObjectMerge.d.ts +10 -0
  57. package/dist/esm/safeObjectMerge.js +30 -0
  58. package/dist/esm/safeObjectMerge.js.map +1 -0
  59. package/dist/esm/serverRoute.d.ts +65 -0
  60. package/dist/esm/startEntry.d.ts +8 -0
  61. package/dist/esm/tests/createServerFn.test-d.d.ts +1 -0
  62. package/dist/esm/tests/createServerMiddleware.test-d.d.ts +1 -0
  63. package/package.json +98 -0
  64. package/skills/start-core/SKILL.md +210 -0
  65. package/skills/start-core/deployment/SKILL.md +306 -0
  66. package/skills/start-core/execution-model/SKILL.md +302 -0
  67. package/skills/start-core/middleware/SKILL.md +365 -0
  68. package/skills/start-core/server-functions/SKILL.md +335 -0
  69. package/skills/start-core/server-routes/SKILL.md +280 -0
  70. package/src/client/ServerFunctionSerializationAdapter.ts +16 -0
  71. package/src/client/hydrateStart.ts +43 -0
  72. package/src/client/index.ts +2 -0
  73. package/src/client-rpc/createClientRpc.ts +20 -0
  74. package/src/client-rpc/frame-decoder.ts +389 -0
  75. package/src/client-rpc/index.ts +1 -0
  76. package/src/client-rpc/serverFnFetcher.ts +416 -0
  77. package/src/constants.ts +90 -0
  78. package/src/createMiddleware.ts +824 -0
  79. package/src/createServerFn.ts +813 -0
  80. package/src/createStart.ts +166 -0
  81. package/src/fake-start-entry.ts +2 -0
  82. package/src/getDefaultSerovalPlugins.ts +17 -0
  83. package/src/getGlobalStartContext.ts +18 -0
  84. package/src/getRouterInstance.ts +8 -0
  85. package/src/getStartContextServerOnly.ts +4 -0
  86. package/src/getStartOptions.ts +8 -0
  87. package/src/global.ts +9 -0
  88. package/src/index.tsx +119 -0
  89. package/src/safeObjectMerge.ts +38 -0
  90. package/src/serverRoute.ts +509 -0
  91. package/src/start-entry.d.ts +11 -0
  92. package/src/startEntry.ts +10 -0
  93. package/src/tests/createServerFn.test-d.ts +866 -0
  94. package/src/tests/createServerMiddleware.test-d.ts +810 -0
@@ -0,0 +1,509 @@
1
+ import type {
2
+ AnyContext,
3
+ AnyRoute,
4
+ Assign,
5
+ Constrain,
6
+ Expand,
7
+ ResolveAllParamsFromParent,
8
+ UnionToIntersection,
9
+ } from '@benjavicente/router-core'
10
+ import type {
11
+ AnyRequestMiddleware,
12
+ AssignAllServerRequestContext,
13
+ } from './createMiddleware'
14
+
15
+ declare module '@benjavicente/router-core' {
16
+ interface FilebaseRouteOptionsInterface<
17
+ TRegister,
18
+ TParentRoute extends AnyRoute = AnyRoute,
19
+ TId extends string = string,
20
+ TPath extends string = string,
21
+ TSearchValidator = undefined,
22
+ TParams = {},
23
+ TLoaderDeps extends Record<string, any> = {},
24
+ TLoaderFn = undefined,
25
+ TRouterContext = {},
26
+ TRouteContextFn = AnyContext,
27
+ TBeforeLoadFn = AnyContext,
28
+ TRemountDepsFn = AnyContext,
29
+ TSSR = unknown,
30
+ TServerMiddlewares = unknown,
31
+ THandlers = undefined,
32
+ > {
33
+ server?: RouteServerOptions<
34
+ TRegister,
35
+ TParentRoute,
36
+ TPath,
37
+ TParams,
38
+ TLoaderDeps,
39
+ TLoaderFn,
40
+ TRouterContext,
41
+ TRouteContextFn,
42
+ TBeforeLoadFn,
43
+ TServerMiddlewares,
44
+ THandlers
45
+ >
46
+ }
47
+
48
+ interface RouteTypes<
49
+ in out TRegister,
50
+ in out TParentRoute extends AnyRoute,
51
+ in out TPath extends string,
52
+ in out TFullPath extends string,
53
+ in out TCustomId extends string,
54
+ in out TId extends string,
55
+ in out TSearchValidator,
56
+ in out TParams,
57
+ in out TRouterContext,
58
+ in out TRouteContextFn,
59
+ in out TBeforeLoadFn,
60
+ in out TLoaderDeps,
61
+ in out TLoaderFn,
62
+ in out TChildren,
63
+ in out TFileRouteTypes,
64
+ in out TSSR,
65
+ in out TServerMiddlewares,
66
+ in out THandlers,
67
+ > {
68
+ middleware: TServerMiddlewares
69
+ allServerContext: ResolveAllServerContext<
70
+ TRegister,
71
+ TParentRoute,
72
+ TServerMiddlewares
73
+ >
74
+ }
75
+
76
+ interface BeforeLoadContextOptionsExtensions<
77
+ in out TRegister,
78
+ in out TParentRoute extends AnyRoute,
79
+ in out TSearchValidator,
80
+ in out TParams,
81
+ in out TRouterContext,
82
+ in out TRouteContextFn,
83
+ in out TRouteId,
84
+ in out TServerMiddlewares,
85
+ in out THandlers,
86
+ > {
87
+ serverContext?: Expand<
88
+ Assign<
89
+ ResolveAllServerContext<TRegister, TParentRoute, TServerMiddlewares>,
90
+ ExtractHandlersContext<THandlers>
91
+ >
92
+ >
93
+ }
94
+
95
+ interface LoaderFnContextExtensions<
96
+ in out TRegister,
97
+ in out TParentRoute extends AnyRoute = AnyRoute,
98
+ in out TId extends string = string,
99
+ in out TParams = {},
100
+ in out TLoaderDeps = {},
101
+ in out TRouterContext = {},
102
+ in out TRouteContextFn = AnyContext,
103
+ in out TBeforeLoadFn = AnyContext,
104
+ in out TServerMiddlewares = unknown,
105
+ in out THandlers = undefined,
106
+ > {
107
+ serverContext?: Expand<
108
+ Assign<
109
+ ResolveAllServerContext<TRegister, TParentRoute, TServerMiddlewares>,
110
+ ExtractHandlersContext<THandlers>
111
+ >
112
+ >
113
+ }
114
+ }
115
+
116
+ type ExtractHandlersContext<THandlers> = THandlers extends (
117
+ ...args: any
118
+ ) => CustomHandlerFunctionsRecord<
119
+ any,
120
+ any,
121
+ any,
122
+ any,
123
+ any,
124
+ any,
125
+ infer TServerContext
126
+ >
127
+ ? UnionToIntersection<TServerContext>
128
+ : THandlers extends Record<
129
+ string,
130
+ RouteMethodHandler<any, any, any, any, any, any, infer TServerContext>
131
+ >
132
+ ? UnionToIntersection<TServerContext>
133
+ : undefined
134
+
135
+ export interface RouteServerOptions<
136
+ TRegister,
137
+ TParentRoute extends AnyRoute,
138
+ TFullPath extends string,
139
+ TParams,
140
+ TLoaderDeps,
141
+ TLoaderFn,
142
+ TRouterContext,
143
+ TRouteContextFn,
144
+ TBeforeLoadFn,
145
+ TServerMiddlewares,
146
+ THandlers,
147
+ > {
148
+ middleware?: Constrain<
149
+ TServerMiddlewares,
150
+ ReadonlyArray<AnyRequestMiddleware>
151
+ >
152
+
153
+ handlers?: Constrain<
154
+ THandlers,
155
+ | Partial<
156
+ Record<
157
+ RouteMethod,
158
+ RouteMethodHandlerFn<
159
+ TRegister,
160
+ TParentRoute,
161
+ TFullPath,
162
+ TParams,
163
+ TServerMiddlewares,
164
+ any,
165
+ any
166
+ >
167
+ >
168
+ >
169
+ | ((
170
+ opts: HandlersFnOpts<
171
+ TRegister,
172
+ TParentRoute,
173
+ TFullPath,
174
+ TParams,
175
+ TServerMiddlewares
176
+ >,
177
+ ) => CustomHandlerFunctionsRecord<
178
+ TRegister,
179
+ TParentRoute,
180
+ TFullPath,
181
+ TParams,
182
+ TServerMiddlewares,
183
+ any,
184
+ any
185
+ >)
186
+ >
187
+ }
188
+
189
+ declare const createHandlersSymbol: unique symbol
190
+
191
+ type CustomHandlerFunctionsRecord<
192
+ TRegister,
193
+ TParentRoute extends AnyRoute,
194
+ TFullPath extends string,
195
+ TParams,
196
+ TServerMiddlewares,
197
+ TMethodMiddlewares,
198
+ TServerContext,
199
+ > = {
200
+ [createHandlersSymbol]: true
201
+ } & Partial<
202
+ Record<
203
+ RouteMethod,
204
+ RouteMethodHandler<
205
+ TRegister,
206
+ TParentRoute,
207
+ TFullPath,
208
+ TParams,
209
+ TServerMiddlewares,
210
+ TMethodMiddlewares,
211
+ TServerContext
212
+ >
213
+ >
214
+ >
215
+
216
+ export interface HandlersFnOpts<
217
+ TRegister,
218
+ TParentRoute extends AnyRoute,
219
+ TFullPath extends string,
220
+ TParams,
221
+ TServerMiddlewares,
222
+ > {
223
+ createHandlers: CreateHandlersFn<
224
+ TRegister,
225
+ TParentRoute,
226
+ TFullPath,
227
+ TParams,
228
+ TServerMiddlewares
229
+ >
230
+ }
231
+
232
+ export type CreateHandlersFn<
233
+ TRegister,
234
+ TParentRoute extends AnyRoute,
235
+ TFullPath extends string,
236
+ TParams,
237
+ TServerMiddlewares,
238
+ > = <
239
+ const TMethodAllMiddlewares,
240
+ const TMethodGetMiddlewares,
241
+ const TMethodPostMiddlewares,
242
+ const TMethodPutMiddlewares,
243
+ const TMethodPatchMiddlewares,
244
+ const TMethodDeleteMiddlewares,
245
+ const TMethodOptionsMiddlewares,
246
+ const TMethodHeadMiddlewares,
247
+ TServerContext,
248
+ >(
249
+ opts: CreateMethodFnOpts<
250
+ TRegister,
251
+ TParentRoute,
252
+ TFullPath,
253
+ TParams,
254
+ TServerMiddlewares,
255
+ TMethodAllMiddlewares,
256
+ TMethodGetMiddlewares,
257
+ TMethodPostMiddlewares,
258
+ TMethodPutMiddlewares,
259
+ TMethodPatchMiddlewares,
260
+ TMethodDeleteMiddlewares,
261
+ TMethodOptionsMiddlewares,
262
+ TMethodHeadMiddlewares,
263
+ TServerContext
264
+ >,
265
+ ) => CustomHandlerFunctionsRecord<
266
+ TRegister,
267
+ TParentRoute,
268
+ TFullPath,
269
+ TParams,
270
+ TServerMiddlewares,
271
+ any,
272
+ TServerContext
273
+ >
274
+
275
+ export interface CreateMethodFnOpts<
276
+ TRegister,
277
+ TParentRoute extends AnyRoute,
278
+ TFullPath extends string,
279
+ TParams,
280
+ TServerMiddlewares,
281
+ TMethodAllMiddlewares,
282
+ TMethodGetMiddlewares,
283
+ TMethodPostMiddlewares,
284
+ TMethodPutMiddlewares,
285
+ TMethodPatchMiddlewares,
286
+ TMethodDeleteMiddlewares,
287
+ TMethodOptionsMiddlewares,
288
+ TMethodHeadMiddlewares,
289
+ TServerContext,
290
+ > {
291
+ ANY?: RouteMethodHandler<
292
+ TRegister,
293
+ TParentRoute,
294
+ TFullPath,
295
+ TParams,
296
+ TServerMiddlewares,
297
+ TMethodAllMiddlewares,
298
+ TServerContext
299
+ >
300
+ GET?: RouteMethodHandler<
301
+ TRegister,
302
+ TParentRoute,
303
+ TFullPath,
304
+ TParams,
305
+ TServerMiddlewares,
306
+ TMethodGetMiddlewares,
307
+ TServerContext
308
+ >
309
+ POST?: RouteMethodHandler<
310
+ TRegister,
311
+ TParentRoute,
312
+ TFullPath,
313
+ TParams,
314
+ TServerMiddlewares,
315
+ TMethodPostMiddlewares,
316
+ TServerContext
317
+ >
318
+ PUT?: RouteMethodHandler<
319
+ TRegister,
320
+ TParentRoute,
321
+ TFullPath,
322
+ TParams,
323
+ TServerMiddlewares,
324
+ TMethodPutMiddlewares,
325
+ TServerContext
326
+ >
327
+ PATCH?: RouteMethodHandler<
328
+ TRegister,
329
+ TParentRoute,
330
+ TFullPath,
331
+ TParams,
332
+ TServerMiddlewares,
333
+ TMethodPatchMiddlewares,
334
+ TServerContext
335
+ >
336
+ DELETE?: RouteMethodHandler<
337
+ TRegister,
338
+ TParentRoute,
339
+ TFullPath,
340
+ TParams,
341
+ TServerMiddlewares,
342
+ TMethodDeleteMiddlewares,
343
+ TServerContext
344
+ >
345
+ OPTIONS?: RouteMethodHandler<
346
+ TRegister,
347
+ TParentRoute,
348
+ TFullPath,
349
+ TParams,
350
+ TServerMiddlewares,
351
+ TMethodOptionsMiddlewares,
352
+ TServerContext
353
+ >
354
+ HEAD?: RouteMethodHandler<
355
+ TRegister,
356
+ TParentRoute,
357
+ TFullPath,
358
+ TParams,
359
+ TServerMiddlewares,
360
+ TMethodHeadMiddlewares,
361
+ TServerContext
362
+ >
363
+ }
364
+
365
+ export type RouteMethodHandler<
366
+ TRegister,
367
+ TParentRoute extends AnyRoute,
368
+ TFullPath extends string,
369
+ TParams,
370
+ TServerMiddlewares,
371
+ TMethodMiddlewares,
372
+ TServerContext,
373
+ > =
374
+ | RouteMethodHandlerFn<
375
+ TRegister,
376
+ TParentRoute,
377
+ TFullPath,
378
+ TParams,
379
+ TServerMiddlewares,
380
+ TMethodMiddlewares,
381
+ TServerContext
382
+ >
383
+ | RouteMethodBuilderOptions<
384
+ TRegister,
385
+ TParentRoute,
386
+ TFullPath,
387
+ TParams,
388
+ TServerMiddlewares,
389
+ TMethodMiddlewares,
390
+ TServerContext
391
+ >
392
+
393
+ export interface RouteMethodBuilderOptions<
394
+ TRegister,
395
+ TParentRoute extends AnyRoute,
396
+ TFullPath extends string,
397
+ TParams,
398
+ TServerMiddlewares,
399
+ TMethodMiddlewares,
400
+ TResponse,
401
+ > {
402
+ handler?: RouteMethodHandlerFn<
403
+ TRegister,
404
+ TParentRoute,
405
+ TFullPath,
406
+ TParams,
407
+ TServerMiddlewares,
408
+ TMethodMiddlewares,
409
+ TResponse
410
+ >
411
+ middleware?: Constrain<
412
+ TMethodMiddlewares,
413
+ ReadonlyArray<AnyRequestMiddleware>
414
+ >
415
+ }
416
+
417
+ export type ResolveAllServerContext<
418
+ TRegister,
419
+ TParentRoute extends AnyRoute,
420
+ TServerMiddlewares,
421
+ > = unknown extends TParentRoute
422
+ ? AssignAllServerRequestContext<TRegister, TServerMiddlewares, {}>
423
+ : Assign<
424
+ TParentRoute['types']['allServerContext'],
425
+ AssignAllServerRequestContext<TRegister, TServerMiddlewares, {}>
426
+ >
427
+
428
+ export type RouteMethod =
429
+ | 'ANY'
430
+ | 'GET'
431
+ | 'POST'
432
+ | 'PUT'
433
+ | 'PATCH'
434
+ | 'DELETE'
435
+ | 'OPTIONS'
436
+ | 'HEAD'
437
+
438
+ export type RouteMethodHandlerFn<
439
+ TRegister,
440
+ TParentRoute extends AnyRoute,
441
+ TFullPath extends string,
442
+ TParams,
443
+ TServerMiddlewares,
444
+ TMethodMiddlewares,
445
+ TServerContext,
446
+ > = (
447
+ ctx: RouteMethodHandlerCtx<
448
+ TRegister,
449
+ TParentRoute,
450
+ TFullPath,
451
+ TParams,
452
+ TServerMiddlewares,
453
+ TMethodMiddlewares
454
+ >,
455
+ ) =>
456
+ | RouteMethodResult<TServerContext>
457
+ | Promise<RouteMethodResult<TServerContext>>
458
+
459
+ export type RouteMethodResult<TContext> =
460
+ | Response
461
+ | undefined
462
+ | RouteMethodNextResult<TContext>
463
+
464
+ export type RouteMethodNextResult<TContext> = {
465
+ isNext: true
466
+ context: TContext
467
+ }
468
+
469
+ export interface RouteMethodHandlerCtx<
470
+ in out TRegister,
471
+ in out TParentRoute extends AnyRoute,
472
+ in out TFullPath extends string,
473
+ in out TParams,
474
+ in out TServerMiddlewares,
475
+ in out TMethodMiddlewares,
476
+ > {
477
+ context: Expand<
478
+ AssignAllMethodContext<
479
+ TRegister,
480
+ TParentRoute,
481
+ TServerMiddlewares,
482
+ TMethodMiddlewares
483
+ >
484
+ >
485
+ request: Request
486
+ params: Expand<ResolveAllParamsFromParent<TParentRoute, TParams>>
487
+ pathname: TFullPath
488
+ next: <TContext = undefined>(options?: {
489
+ context?: TContext
490
+ }) => RouteMethodNextResult<TContext>
491
+ }
492
+
493
+ export type MergeMethodMiddlewares<TServerMiddlewares, TMethodMiddlewares> =
494
+ TServerMiddlewares extends ReadonlyArray<any>
495
+ ? TMethodMiddlewares extends ReadonlyArray<any>
496
+ ? readonly [...TServerMiddlewares, ...TMethodMiddlewares]
497
+ : TServerMiddlewares
498
+ : TMethodMiddlewares
499
+
500
+ export type AssignAllMethodContext<
501
+ TRegister,
502
+ TParentRoute extends AnyRoute,
503
+ TServerMiddlewares,
504
+ TMethodMiddlewares,
505
+ > = ResolveAllServerContext<
506
+ TRegister,
507
+ TParentRoute,
508
+ MergeMethodMiddlewares<TServerMiddlewares, TMethodMiddlewares>
509
+ >
@@ -0,0 +1,11 @@
1
+ declare module '#tanstack-start-entry' {
2
+ import type { StartEntry } from '@benjavicente/start-client-core'
3
+
4
+ export const startInstance: StartEntry['startInstance']
5
+ }
6
+
7
+ declare module '#tanstack-router-entry' {
8
+ import type { RouterEntry } from '@benjavicente/start-client-core'
9
+
10
+ export const getRouter: RouterEntry['getRouter']
11
+ }
@@ -0,0 +1,10 @@
1
+ import type { AnyRouter, Awaitable } from '@benjavicente/router-core'
2
+ import type { AnyStartInstance } from './createStart.js'
3
+
4
+ export interface StartEntry {
5
+ startInstance: AnyStartInstance | undefined
6
+ }
7
+
8
+ export interface RouterEntry {
9
+ getRouter: () => Awaitable<AnyRouter>
10
+ }