@tanstack/react-router 1.40.0 → 1.42.0

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 (127) hide show
  1. package/dist/cjs/CatchBoundary.d.cts +2 -2
  2. package/dist/cjs/Match.cjs +238 -0
  3. package/dist/cjs/Match.cjs.map +1 -0
  4. package/dist/cjs/Match.d.cts +5 -0
  5. package/dist/cjs/Matches.cjs +8 -249
  6. package/dist/cjs/Matches.cjs.map +1 -1
  7. package/dist/cjs/Matches.d.cts +2 -11
  8. package/dist/cjs/RouterProvider.cjs.map +1 -1
  9. package/dist/cjs/RouterProvider.d.cts +2 -2
  10. package/dist/cjs/SafeFragment.cjs +8 -0
  11. package/dist/cjs/SafeFragment.cjs.map +1 -0
  12. package/dist/cjs/SafeFragment.d.cts +1 -0
  13. package/dist/cjs/ScriptOnce.cjs +28 -0
  14. package/dist/cjs/ScriptOnce.cjs.map +1 -0
  15. package/dist/cjs/ScriptOnce.d.cts +5 -0
  16. package/dist/cjs/Transitioner.cjs +2 -1
  17. package/dist/cjs/Transitioner.cjs.map +1 -1
  18. package/dist/cjs/awaited.cjs +14 -71
  19. package/dist/cjs/awaited.cjs.map +1 -1
  20. package/dist/cjs/awaited.d.cts +3 -6
  21. package/dist/cjs/defer.cjs +7 -13
  22. package/dist/cjs/defer.cjs.map +1 -1
  23. package/dist/cjs/defer.d.cts +2 -6
  24. package/dist/cjs/fileRoute.d.cts +9 -1
  25. package/dist/cjs/index.cjs +11 -7
  26. package/dist/cjs/index.cjs.map +1 -1
  27. package/dist/cjs/index.d.cts +9 -4
  28. package/dist/cjs/isServerSideError.cjs +22 -0
  29. package/dist/cjs/isServerSideError.cjs.map +1 -0
  30. package/dist/cjs/isServerSideError.d.cts +5 -0
  31. package/dist/cjs/link.cjs +1 -0
  32. package/dist/cjs/link.cjs.map +1 -1
  33. package/dist/cjs/matchContext.cjs +23 -0
  34. package/dist/cjs/matchContext.cjs.map +1 -0
  35. package/dist/cjs/matchContext.d.cts +2 -0
  36. package/dist/cjs/not-found.cjs.map +1 -1
  37. package/dist/cjs/not-found.d.cts +2 -2
  38. package/dist/cjs/qss.cjs.map +1 -1
  39. package/dist/cjs/qss.d.cts +1 -1
  40. package/dist/cjs/redirects.cjs.map +1 -1
  41. package/dist/cjs/renderRouteNotFound.cjs +22 -0
  42. package/dist/cjs/renderRouteNotFound.cjs.map +1 -0
  43. package/dist/cjs/renderRouteNotFound.d.cts +4 -0
  44. package/dist/cjs/route.cjs.map +1 -1
  45. package/dist/cjs/route.d.cts +37 -31
  46. package/dist/cjs/router.cjs +35 -25
  47. package/dist/cjs/router.cjs.map +1 -1
  48. package/dist/cjs/router.d.cts +14 -9
  49. package/dist/cjs/useMatch.cjs +2 -2
  50. package/dist/cjs/useMatch.cjs.map +1 -1
  51. package/dist/cjs/utils.cjs +4 -3
  52. package/dist/cjs/utils.cjs.map +1 -1
  53. package/dist/cjs/utils.d.cts +3 -2
  54. package/dist/esm/CatchBoundary.d.ts +2 -2
  55. package/dist/esm/Match.d.ts +5 -0
  56. package/dist/esm/Match.js +221 -0
  57. package/dist/esm/Match.js.map +1 -0
  58. package/dist/esm/Matches.d.ts +2 -11
  59. package/dist/esm/Matches.js +5 -246
  60. package/dist/esm/Matches.js.map +1 -1
  61. package/dist/esm/RouterProvider.d.ts +2 -2
  62. package/dist/esm/RouterProvider.js.map +1 -1
  63. package/dist/esm/SafeFragment.d.ts +1 -0
  64. package/dist/esm/SafeFragment.js +8 -0
  65. package/dist/esm/SafeFragment.js.map +1 -0
  66. package/dist/esm/ScriptOnce.d.ts +5 -0
  67. package/dist/esm/ScriptOnce.js +28 -0
  68. package/dist/esm/ScriptOnce.js.map +1 -0
  69. package/dist/esm/Transitioner.js +2 -1
  70. package/dist/esm/Transitioner.js.map +1 -1
  71. package/dist/esm/awaited.d.ts +3 -6
  72. package/dist/esm/awaited.js +16 -73
  73. package/dist/esm/awaited.js.map +1 -1
  74. package/dist/esm/defer.d.ts +2 -6
  75. package/dist/esm/defer.js +8 -14
  76. package/dist/esm/defer.js.map +1 -1
  77. package/dist/esm/fileRoute.d.ts +9 -1
  78. package/dist/esm/index.d.ts +9 -4
  79. package/dist/esm/index.js +9 -5
  80. package/dist/esm/index.js.map +1 -1
  81. package/dist/esm/isServerSideError.d.ts +5 -0
  82. package/dist/esm/isServerSideError.js +22 -0
  83. package/dist/esm/isServerSideError.js.map +1 -0
  84. package/dist/esm/link.js +1 -0
  85. package/dist/esm/link.js.map +1 -1
  86. package/dist/esm/matchContext.d.ts +2 -0
  87. package/dist/esm/matchContext.js +6 -0
  88. package/dist/esm/matchContext.js.map +1 -0
  89. package/dist/esm/not-found.d.ts +2 -2
  90. package/dist/esm/not-found.js.map +1 -1
  91. package/dist/esm/qss.d.ts +1 -1
  92. package/dist/esm/qss.js.map +1 -1
  93. package/dist/esm/redirects.js.map +1 -1
  94. package/dist/esm/renderRouteNotFound.d.ts +4 -0
  95. package/dist/esm/renderRouteNotFound.js +22 -0
  96. package/dist/esm/renderRouteNotFound.js.map +1 -0
  97. package/dist/esm/route.d.ts +37 -31
  98. package/dist/esm/route.js.map +1 -1
  99. package/dist/esm/router.d.ts +14 -9
  100. package/dist/esm/router.js +35 -25
  101. package/dist/esm/router.js.map +1 -1
  102. package/dist/esm/useMatch.js +1 -1
  103. package/dist/esm/useMatch.js.map +1 -1
  104. package/dist/esm/utils.d.ts +3 -2
  105. package/dist/esm/utils.js +4 -3
  106. package/dist/esm/utils.js.map +1 -1
  107. package/package.json +4 -4
  108. package/src/Match.tsx +296 -0
  109. package/src/Matches.tsx +4 -333
  110. package/src/RouterProvider.tsx +1 -1
  111. package/src/SafeFragment.tsx +5 -0
  112. package/src/ScriptOnce.tsx +27 -0
  113. package/src/Transitioner.tsx +1 -1
  114. package/src/awaited.tsx +17 -89
  115. package/src/defer.ts +9 -26
  116. package/src/index.tsx +7 -16
  117. package/src/isServerSideError.tsx +23 -0
  118. package/src/link.tsx +2 -0
  119. package/src/matchContext.tsx +3 -0
  120. package/src/not-found.tsx +1 -1
  121. package/src/qss.ts +5 -6
  122. package/src/redirects.ts +0 -1
  123. package/src/renderRouteNotFound.tsx +28 -0
  124. package/src/route.ts +61 -65
  125. package/src/router.ts +61 -42
  126. package/src/useMatch.tsx +1 -1
  127. package/src/utils.ts +11 -9
package/src/utils.ts CHANGED
@@ -40,7 +40,7 @@ export type MakeDifferenceOptional<TLeft, TRight> = Omit<
40
40
  }
41
41
 
42
42
  // from https://stackoverflow.com/a/53955431
43
- // eslint-disable-next-line @typescript-eslint/naming-convention
43
+ // eslint-disable-next-line ts/naming-convention
44
44
  export type IsUnion<T, U extends T = T> = (
45
45
  T extends any ? (U extends T ? false : true) : never
46
46
  ) extends false
@@ -152,7 +152,7 @@ export function replaceEqualDeep<T>(prev: any, _next: T): T {
152
152
  let equalItems = 0
153
153
 
154
154
  for (let i = 0; i < nextSize; i++) {
155
- const key = array ? i : nextItems[i]
155
+ const key = array ? i : (nextItems[i] as any)
156
156
  if (
157
157
  ((!array && prevItems.includes(key)) || array) &&
158
158
  prev[key] === undefined &&
@@ -205,7 +205,7 @@ function hasObjectPrototype(o: any) {
205
205
  return Object.prototype.toString.call(o) === '[object Object]'
206
206
  }
207
207
 
208
- export function isPlainArray(value: unknown) {
208
+ export function isPlainArray(value: unknown): value is Array<unknown> {
209
209
  return Array.isArray(value) && value.length === Object.keys(value).length
210
210
  }
211
211
 
@@ -315,23 +315,25 @@ export type ControlledPromise<T> = Promise<T> & {
315
315
  resolve: (value: T) => void
316
316
  reject: (value: any) => void
317
317
  status: 'pending' | 'resolved' | 'rejected'
318
+ value?: T
318
319
  }
319
320
 
320
- export function createControlledPromise<T>(onResolve?: () => void) {
321
- let resolveLoadPromise!: () => void
321
+ export function createControlledPromise<T>(onResolve?: (value: T) => void) {
322
+ let resolveLoadPromise!: (value: T) => void
322
323
  let rejectLoadPromise!: (value: any) => void
323
324
 
324
- const controlledPromise = new Promise<void>((resolve, reject) => {
325
+ const controlledPromise = new Promise<T>((resolve, reject) => {
325
326
  resolveLoadPromise = resolve
326
327
  rejectLoadPromise = reject
327
328
  }) as ControlledPromise<T>
328
329
 
329
330
  controlledPromise.status = 'pending'
330
331
 
331
- controlledPromise.resolve = () => {
332
+ controlledPromise.resolve = (value: T) => {
332
333
  controlledPromise.status = 'resolved'
333
- resolveLoadPromise()
334
- onResolve?.()
334
+ controlledPromise.value = value
335
+ resolveLoadPromise(value)
336
+ onResolve?.(value)
335
337
  }
336
338
 
337
339
  controlledPromise.reject = (e) => {