@tanstack/react-router 1.97.1 → 1.97.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/react-router",
3
- "version": "1.97.1",
3
+ "version": "1.97.3",
4
4
  "description": "Modern and scalable routing for React applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
package/src/defer.ts CHANGED
@@ -2,25 +2,25 @@ import { defaultSerializeError } from './router'
2
2
 
3
3
  export const TSR_DEFERRED_PROMISE = Symbol.for('TSR_DEFERRED_PROMISE')
4
4
 
5
- export type DeferredPromiseState<T> = {
6
- [TSR_DEFERRED_PROMISE]:
7
- | {
8
- status: 'pending'
9
- data?: T
10
- error?: unknown
11
- }
12
- | {
13
- status: 'success'
14
- data: T
15
- }
16
- | {
17
- status: 'error'
18
- data?: T
19
- error: unknown
20
- }
21
- }
5
+ export type DeferredPromiseState<T> =
6
+ | {
7
+ status: 'pending'
8
+ data?: T
9
+ error?: unknown
10
+ }
11
+ | {
12
+ status: 'success'
13
+ data: T
14
+ }
15
+ | {
16
+ status: 'error'
17
+ data?: T
18
+ error: unknown
19
+ }
22
20
 
23
- export type DeferredPromise<T> = Promise<T> & DeferredPromiseState<T>
21
+ export type DeferredPromise<T> = Promise<T> & {
22
+ [TSR_DEFERRED_PROMISE]: DeferredPromiseState<T>
23
+ }
24
24
 
25
25
  export function defer<T>(
26
26
  _promise: Promise<T>,
package/src/index.tsx CHANGED
@@ -255,10 +255,13 @@ export type {
255
255
  RouterEvent,
256
256
  RouterListener,
257
257
  AnyRouterWithContext,
258
- ExtractedEntry,
259
- ExtractedStream,
260
- ExtractedPromise,
258
+ ClientExtractedBaseEntry,
259
+ ClientExtractedEntry,
260
+ ClientExtractedPromise,
261
+ ControllablePromise,
261
262
  StreamState,
263
+ TSRGlobal,
264
+ TSRGlobalMatch,
262
265
  } from './router'
263
266
 
264
267
  export { RouterProvider, RouterContextProvider } from './RouterProvider'
package/src/router.ts CHANGED
@@ -31,7 +31,6 @@ import {
31
31
  import { isRedirect, isResolvedRedirect } from './redirects'
32
32
  import { isNotFound } from './not-found'
33
33
  import { defaultTransformer } from './transformer'
34
- import type { DeferredPromiseState } from './defer'
35
34
  import type * as React from 'react'
36
35
  import type {
37
36
  HistoryLocation,
@@ -87,29 +86,39 @@ import type { NavigateOptions, ResolveRelativePath, ToOptions } from './link'
87
86
  import type { RouterTransformer } from './transformer'
88
87
  import type { AnySchema, AnyValidator } from './validators'
89
88
 
89
+ export interface TSRGlobalMatch {
90
+ index: number
91
+ __beforeLoadContext?: string
92
+ loaderData?: string
93
+ extracted: Record<string, ClientExtractedEntry>
94
+ }
95
+ export interface TSRGlobal {
96
+ matches: Array<TSRGlobalMatch>
97
+ streamedValues: Record<
98
+ string,
99
+ {
100
+ value: any
101
+ parsed: any
102
+ }
103
+ >
104
+ cleanScripts: () => void
105
+ dehydrated?: any
106
+ }
90
107
  declare global {
91
108
  interface Window {
92
- __TSR__?: {
93
- matches: Array<{
94
- __beforeLoadContext?: string
95
- loaderData?: string
96
- extracted?: Array<ExtractedEntry>
97
- }>
98
- streamedValues: Record<
99
- string,
100
- {
101
- value: any
102
- parsed: any
103
- }
104
- >
105
- cleanScripts: () => void
106
- dehydrated?: any
107
- }
109
+ __TSR__?: RegisteredTSRGlobal
108
110
  __TSR_ROUTER_CONTEXT__?: React.Context<Router<any, any, any>>
109
111
  }
110
112
  }
111
113
 
114
+ type RegisteredTSRGlobal = Register extends {
115
+ __TSR__: infer TTSR extends TSRGlobal
116
+ }
117
+ ? TTSR
118
+ : TSRGlobal
119
+
112
120
  export interface Register {
121
+ // __TSR__: TSRGlobal
113
122
  // router: Router
114
123
  }
115
124
 
@@ -148,25 +157,28 @@ export type InferRouterContext<TRouteTree extends AnyRoute> =
148
157
  ? TRouterContext
149
158
  : AnyContext
150
159
 
151
- export interface ExtractedBaseEntry {
152
- dataType: '__beforeLoadContext' | 'loaderData'
160
+ export interface ClientExtractedBaseEntry {
153
161
  type: string
154
162
  path: Array<string>
155
- id: number
156
- matchIndex: number
157
163
  }
158
164
 
159
- export interface ExtractedStream extends ExtractedBaseEntry {
160
- type: 'stream'
161
- streamState: StreamState
165
+ export type ControllablePromise<T = any> = Promise<T> & {
166
+ resolve: (value: T) => void
167
+ reject: (value?: any) => void
162
168
  }
163
-
164
- export interface ExtractedPromise extends ExtractedBaseEntry {
169
+ export interface ClientExtractedPromise extends ClientExtractedBaseEntry {
165
170
  type: 'promise'
166
- promiseState: DeferredPromiseState<any>
171
+ value?: ControllablePromise<any>
172
+ }
173
+
174
+ export interface ClientExtractedStream extends ClientExtractedBaseEntry {
175
+ type: 'stream'
176
+ value?: ReadableStream & { controller?: ReadableStreamDefaultController }
167
177
  }
168
178
 
169
- export type ExtractedEntry = ExtractedStream | ExtractedPromise
179
+ export type ClientExtractedEntry =
180
+ | ClientExtractedStream
181
+ | ClientExtractedPromise
170
182
 
171
183
  export type StreamState = {
172
184
  promises: Array<ControlledPromise<string | null>>