one 1.21.7 → 1.21.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 (151) hide show
  1. package/dist/cjs/cli/dev.native.js.map +1 -1
  2. package/dist/cjs/cli.cjs +0 -3
  3. package/dist/cjs/cli.native.js +0 -3
  4. package/dist/cjs/cli.native.js.map +1 -1
  5. package/dist/cjs/image/getImageData.cjs +1 -1
  6. package/dist/cjs/image/getImageData.native.js +1 -1
  7. package/dist/cjs/image/getImageData.native.js.map +1 -1
  8. package/dist/cjs/index.native.js.map +1 -1
  9. package/dist/cjs/layouts/Stack.cjs +3 -4
  10. package/dist/cjs/layouts/Stack.native.js +3 -4
  11. package/dist/cjs/layouts/Stack.native.js.map +1 -1
  12. package/dist/cjs/layouts/withLayoutContext.cjs +39 -8
  13. package/dist/cjs/layouts/withLayoutContext.native.js +43 -8
  14. package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
  15. package/dist/cjs/layouts/withLayoutContext.test.cjs +96 -0
  16. package/dist/cjs/layouts/withLayoutContext.test.native.js +100 -0
  17. package/dist/cjs/layouts/withLayoutContext.test.native.js.map +1 -0
  18. package/dist/cjs/router/Route.cjs +3 -0
  19. package/dist/cjs/router/Route.native.js +3 -0
  20. package/dist/cjs/router/Route.native.js.map +1 -1
  21. package/dist/cjs/router/protectedRoutes.test.cjs +22 -0
  22. package/dist/cjs/router/protectedRoutes.test.native.js +25 -0
  23. package/dist/cjs/router/protectedRoutes.test.native.js.map +1 -0
  24. package/dist/cjs/router/router.cjs +26 -8
  25. package/dist/cjs/router/router.native.js +26 -8
  26. package/dist/cjs/router/router.native.js.map +1 -1
  27. package/dist/cjs/router/useScreens.cjs +38 -11
  28. package/dist/cjs/router/useScreens.native.js +39 -11
  29. package/dist/cjs/router/useScreens.native.js.map +1 -1
  30. package/dist/cjs/router/useScreens.test.cjs +134 -0
  31. package/dist/cjs/router/useScreens.test.native.js +163 -0
  32. package/dist/cjs/router/useScreens.test.native.js.map +1 -0
  33. package/dist/cjs/views/Navigator.cjs +14 -6
  34. package/dist/cjs/views/Navigator.native.js +14 -6
  35. package/dist/cjs/views/Navigator.native.js.map +1 -1
  36. package/dist/cjs/views/Protected.native.js.map +1 -1
  37. package/dist/cjs/views/SuspenseFallback.cjs +18 -0
  38. package/dist/cjs/views/SuspenseFallback.native.js +21 -0
  39. package/dist/cjs/views/SuspenseFallback.native.js.map +1 -0
  40. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +47 -7
  41. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +47 -7
  42. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  43. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.cjs +15 -6
  44. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js +15 -6
  45. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
  46. package/dist/esm/cli/dev.mjs.map +1 -1
  47. package/dist/esm/cli/dev.native.js.map +1 -1
  48. package/dist/esm/cli.mjs +0 -3
  49. package/dist/esm/cli.mjs.map +1 -1
  50. package/dist/esm/cli.native.js +0 -3
  51. package/dist/esm/cli.native.js.map +1 -1
  52. package/dist/esm/image/getImageData.mjs +1 -1
  53. package/dist/esm/image/getImageData.mjs.map +1 -1
  54. package/dist/esm/image/getImageData.native.js +1 -1
  55. package/dist/esm/image/getImageData.native.js.map +1 -1
  56. package/dist/esm/index.js.map +1 -1
  57. package/dist/esm/index.mjs.map +1 -1
  58. package/dist/esm/index.native.js.map +1 -1
  59. package/dist/esm/layouts/Stack.mjs +3 -4
  60. package/dist/esm/layouts/Stack.mjs.map +1 -1
  61. package/dist/esm/layouts/Stack.native.js +3 -4
  62. package/dist/esm/layouts/Stack.native.js.map +1 -1
  63. package/dist/esm/layouts/withLayoutContext.mjs +41 -11
  64. package/dist/esm/layouts/withLayoutContext.mjs.map +1 -1
  65. package/dist/esm/layouts/withLayoutContext.native.js +45 -11
  66. package/dist/esm/layouts/withLayoutContext.native.js.map +1 -1
  67. package/dist/esm/layouts/withLayoutContext.test.mjs +73 -0
  68. package/dist/esm/layouts/withLayoutContext.test.mjs.map +1 -0
  69. package/dist/esm/layouts/withLayoutContext.test.native.js +74 -0
  70. package/dist/esm/layouts/withLayoutContext.test.native.js.map +1 -0
  71. package/dist/esm/router/Route.mjs +3 -1
  72. package/dist/esm/router/Route.mjs.map +1 -1
  73. package/dist/esm/router/Route.native.js +3 -1
  74. package/dist/esm/router/Route.native.js.map +1 -1
  75. package/dist/esm/router/protectedRoutes.test.mjs +23 -0
  76. package/dist/esm/router/protectedRoutes.test.mjs.map +1 -0
  77. package/dist/esm/router/protectedRoutes.test.native.js +23 -0
  78. package/dist/esm/router/protectedRoutes.test.native.js.map +1 -0
  79. package/dist/esm/router/router.mjs +26 -9
  80. package/dist/esm/router/router.mjs.map +1 -1
  81. package/dist/esm/router/router.native.js +26 -9
  82. package/dist/esm/router/router.native.js.map +1 -1
  83. package/dist/esm/router/useScreens.mjs +39 -11
  84. package/dist/esm/router/useScreens.mjs.map +1 -1
  85. package/dist/esm/router/useScreens.native.js +40 -11
  86. package/dist/esm/router/useScreens.native.js.map +1 -1
  87. package/dist/esm/router/useScreens.test.mjs +105 -0
  88. package/dist/esm/router/useScreens.test.mjs.map +1 -0
  89. package/dist/esm/router/useScreens.test.native.js +130 -0
  90. package/dist/esm/router/useScreens.test.native.js.map +1 -0
  91. package/dist/esm/views/Navigator.mjs +15 -7
  92. package/dist/esm/views/Navigator.mjs.map +1 -1
  93. package/dist/esm/views/Navigator.native.js +15 -7
  94. package/dist/esm/views/Navigator.native.js.map +1 -1
  95. package/dist/esm/views/Protected.mjs.map +1 -1
  96. package/dist/esm/views/Protected.native.js.map +1 -1
  97. package/dist/esm/views/SuspenseFallback.mjs +2 -0
  98. package/dist/esm/views/SuspenseFallback.mjs.map +1 -0
  99. package/dist/esm/views/SuspenseFallback.native.js +2 -0
  100. package/dist/esm/views/SuspenseFallback.native.js.map +1 -0
  101. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +47 -7
  102. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  103. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +47 -7
  104. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  105. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.mjs +15 -6
  106. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.mjs.map +1 -1
  107. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.native.js +15 -6
  108. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
  109. package/package.json +11 -11
  110. package/src/cli/dev.ts +0 -1
  111. package/src/cli.ts +0 -3
  112. package/src/image/getImageData.ts +2 -2
  113. package/src/index.ts +1 -0
  114. package/src/layouts/Stack.tsx +4 -4
  115. package/src/layouts/withLayoutContext.test.tsx +74 -0
  116. package/src/layouts/withLayoutContext.tsx +71 -12
  117. package/src/router/Route.tsx +8 -0
  118. package/src/router/protectedRoutes.test.ts +35 -0
  119. package/src/router/router.ts +48 -20
  120. package/src/router/useScreens.test.tsx +139 -0
  121. package/src/router/useScreens.tsx +59 -13
  122. package/src/views/Navigator.tsx +25 -5
  123. package/src/views/Protected.tsx +3 -0
  124. package/src/views/SuspenseFallback.ts +7 -0
  125. package/src/vite/plugins/fileSystemRouterPlugin.test.ts +15 -6
  126. package/src/vite/plugins/fileSystemRouterPlugin.tsx +52 -7
  127. package/types/cli/dev.d.ts +0 -1
  128. package/types/cli/dev.d.ts.map +1 -1
  129. package/types/image/getImageData.d.ts +1 -1
  130. package/types/image/getImageData.d.ts.map +1 -1
  131. package/types/index.d.ts +1 -0
  132. package/types/index.d.ts.map +1 -1
  133. package/types/layouts/withLayoutContext.d.ts +7 -0
  134. package/types/layouts/withLayoutContext.d.ts.map +1 -1
  135. package/types/layouts/withLayoutContext.test.d.ts +2 -0
  136. package/types/layouts/withLayoutContext.test.d.ts.map +1 -0
  137. package/types/router/Route.d.ts +4 -0
  138. package/types/router/Route.d.ts.map +1 -1
  139. package/types/router/protectedRoutes.test.d.ts +2 -0
  140. package/types/router/protectedRoutes.test.d.ts.map +1 -0
  141. package/types/router/router.d.ts +4 -6
  142. package/types/router/router.d.ts.map +1 -1
  143. package/types/router/useScreens.d.ts.map +1 -1
  144. package/types/router/useScreens.test.d.ts +2 -0
  145. package/types/router/useScreens.test.d.ts.map +1 -0
  146. package/types/views/Navigator.d.ts.map +1 -1
  147. package/types/views/Protected.d.ts +3 -0
  148. package/types/views/Protected.d.ts.map +1 -1
  149. package/types/views/SuspenseFallback.d.ts +8 -0
  150. package/types/views/SuspenseFallback.d.ts.map +1 -0
  151. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
@@ -22,11 +22,14 @@ import {
22
22
  type DynamicConvention,
23
23
  type LoadedRoute,
24
24
  Route,
25
+ RouteParamsContext,
25
26
  type RouteNode,
27
+ SuspenseFallbackContext,
26
28
  useRouteNode,
27
29
  } from './Route'
28
30
  import { SpaShellContext } from './SpaShellContext'
29
31
  import { NamedSlot } from '../views/Navigator'
32
+ import type { SuspenseFallbackProps } from '../views/SuspenseFallback'
30
33
  import { sortRoutesWithInitial } from './sortRoutes'
31
34
  import { getRouteHmrEpoch, subscribeRouteHmr } from './routeHmr'
32
35
  import { getClientMatchesSnapshot } from '../useMatches'
@@ -337,7 +340,7 @@ export function useSortedScreens(
337
340
  return sortedScreens
338
341
  }
339
342
 
340
- function fromImport({ ErrorBoundary, ...component }: LoadedRoute) {
343
+ function fromImport({ ErrorBoundary, SuspenseFallback, ...component }: LoadedRoute) {
341
344
  if (ErrorBoundary) {
342
345
  return {
343
346
  default: React.forwardRef((props: any, ref: any) => {
@@ -347,16 +350,30 @@ function fromImport({ ErrorBoundary, ...component }: LoadedRoute) {
347
350
  })
348
351
  return <Try catch={ErrorBoundary}>{children}</Try>
349
352
  }),
353
+ SuspenseFallback,
350
354
  }
351
355
  }
352
356
  if (process.env.NODE_ENV !== 'production') {
353
357
  const exported = getPageExport(component)
354
358
  if (exported && typeof exported === 'object' && Object.keys(exported).length === 0) {
355
- return { default: EmptyRoute }
359
+ return { default: EmptyRoute, SuspenseFallback }
356
360
  }
357
361
  }
358
362
 
359
- return { default: getPageExport(component) }
363
+ return { default: getPageExport(component), SuspenseFallback }
364
+ }
365
+
366
+ function RouteSuspenseFallback({
367
+ component: Component,
368
+ route,
369
+ }: {
370
+ component?: React.ComponentType<SuspenseFallbackProps>
371
+ route: string
372
+ }) {
373
+ const params = useContext(RouteParamsContext)
374
+ return Component ? (
375
+ <Component route={route} params={(params ?? {}) as SuspenseFallbackProps['params']} />
376
+ ) : null
360
377
  }
361
378
 
362
379
  // TODO: Maybe there's a more React-y way to do this?
@@ -412,6 +429,7 @@ export function getQualifiedRouteComponent(value: RouteNode) {
412
429
  // content after hydration.
413
430
  // eslint-disable-next-line react-hooks/rules-of-hooks
414
431
  const isSpaShell = useContext(SpaShellContext)
432
+ const InheritedSuspenseFallback = useContext(SuspenseFallbackContext)
415
433
  const matches = getRouteMatchesForProps()
416
434
 
417
435
  if (isSpaShell && props.segment !== '') {
@@ -423,8 +441,10 @@ export function getQualifiedRouteComponent(value: RouteNode) {
423
441
  }
424
442
  }
425
443
 
426
- const res = value.loadRoute()
427
- const Component = getPageExport(fromImport(res)) as React.ComponentType<any>
444
+ const res = fromImport(value.loadRoute())
445
+ const Component = getPageExport(res) as React.ComponentType<any>
446
+ const LayoutSuspenseFallback =
447
+ value.type === 'layout' ? res.SuspenseFallback : undefined
428
448
  const match =
429
449
  matches.find((match) => match.routeId === value.contextKey) ||
430
450
  (!value.children?.length ? matches[matches.length - 1] : undefined)
@@ -450,25 +470,48 @@ export function getQualifiedRouteComponent(value: RouteNode) {
450
470
  }
451
471
  }
452
472
 
473
+ let rendered: React.ReactNode
474
+
453
475
  // Root layout with HTML support - use RootLayoutRenderer for proper HMR tracking
454
476
  if (props.segment === '') {
455
- return (
477
+ rendered = (
456
478
  <RootLayoutRenderer
457
479
  LayoutComponent={Component}
458
480
  layoutProps={{ ...props, ...slotProps, ...loaderDataProps }}
459
481
  forwardedRef={ref}
460
482
  />
461
483
  )
484
+ } else {
485
+ rendered = (
486
+ <RouteErrorBoundary routeName={value.route}>
487
+ <Component {...props} {...slotProps} {...loaderDataProps} ref={ref} />
488
+ </RouteErrorBoundary>
489
+ )
462
490
  }
463
491
 
492
+ if (value.type !== 'layout') {
493
+ return rendered
494
+ }
495
+
496
+ const providedSuspenseFallback = LayoutSuspenseFallback ?? InheritedSuspenseFallback
497
+
464
498
  return (
465
- <RouteErrorBoundary routeName={value.route}>
466
- <Component {...props} {...slotProps} {...loaderDataProps} ref={ref} />
467
- </RouteErrorBoundary>
499
+ <SuspenseFallbackContext.Provider value={providedSuspenseFallback}>
500
+ {LayoutSuspenseFallback
501
+ ? wrapSuspense(rendered, LayoutSuspenseFallback)
502
+ : rendered}
503
+ </SuspenseFallbackContext.Provider>
468
504
  )
469
505
  })
470
506
 
471
- const wrapSuspense = (children: any) => {
507
+ const wrapSuspense = (
508
+ children: React.ReactNode,
509
+ SuspenseFallback?: React.ComponentType<SuspenseFallbackProps>
510
+ ) => {
511
+ const fallback = (
512
+ <RouteSuspenseFallback component={SuspenseFallback} route={value.contextKey} />
513
+ )
514
+
472
515
  if (process.env.TAMAGUI_TARGET === 'native') {
473
516
  // native opt-out: set native.suspendRoutes to false in your one() config
474
517
  // OR set globalThis.__ONE_DISABLE_SUSPENSE_ROUTES__ = true at runtime
@@ -487,7 +530,7 @@ export function getQualifiedRouteComponent(value: RouteNode) {
487
530
  ) {
488
531
  return children
489
532
  }
490
- return <Suspense fallback={null}>{children}</Suspense>
533
+ return <Suspense fallback={fallback}>{children}</Suspense>
491
534
  }
492
535
 
493
536
  // web opt-in: set web.suspendRoutes to true in your one() config
@@ -497,7 +540,7 @@ export function getQualifiedRouteComponent(value: RouteNode) {
497
540
  process.env.ONE_SUSPEND_ROUTES === '1' &&
498
541
  (globalThis as any).__ONE_DISABLE_SUSPENSE_ROUTES__ !== true
499
542
  ) {
500
- return <Suspense fallback={null}>{children}</Suspense>
543
+ return <Suspense fallback={fallback}>{children}</Suspense>
501
544
  }
502
545
  return children
503
546
  }
@@ -515,6 +558,8 @@ export function getQualifiedRouteComponent(value: RouteNode) {
515
558
  }: any,
516
559
  ref: any
517
560
  ) => {
561
+ const InheritedSuspenseFallback = useContext(SuspenseFallbackContext)
562
+
518
563
  return (
519
564
  <Route route={route} node={value}>
520
565
  <>
@@ -527,7 +572,8 @@ export function getQualifiedRouteComponent(value: RouteNode) {
527
572
  // the intention is to make it possible to deduce shared routes.
528
573
  segment: value.route,
529
574
  }}
530
- />
575
+ />,
576
+ InheritedSuspenseFallback
531
577
  )}
532
578
  </>
533
579
  </Route>
@@ -7,7 +7,10 @@ import {
7
7
  import { NavigationRouteContext } from '@react-navigation/core'
8
8
  import * as React from 'react'
9
9
  import { SafeAreaView } from 'react-native-safe-area-context'
10
- import { useFilterScreenChildren } from '../layouts/withLayoutContext'
10
+ import {
11
+ useFilterScreenChildren,
12
+ useResolvedGuardedRedirects,
13
+ } from '../layouts/withLayoutContext'
11
14
  import {
12
15
  findNearestNotFoundRoute,
13
16
  findRouteNodeByPath,
@@ -20,8 +23,12 @@ import {
20
23
  getSafeWindowPathname,
21
24
  initialPathname,
22
25
  lastIntendedPathname,
26
+ replace,
27
+ registerProtectedRoutes,
28
+ resolveProtectedHref,
29
+ routeInfo,
30
+ unregisterProtectedRoutes,
23
31
  } from '../router/router'
24
- import { registerProtectedRoutes, unregisterProtectedRoutes } from '../router/router'
25
32
  import { useSortedScreens, getQualifiedRouteComponent } from '../router/useScreens'
26
33
  import { Screen } from './Screen'
27
34
 
@@ -174,21 +181,34 @@ export function Navigator({
174
181
  screens,
175
182
  children: otherSlot,
176
183
  protectedScreens,
184
+ guardedRedirects,
177
185
  } = useFilterScreenChildren(children, {
178
186
  isCustomNavigator: true,
179
187
  contextKey,
180
188
  })
189
+ const resolvedGuardedRedirects = useResolvedGuardedRedirects(guardedRedirects)
181
190
 
182
191
  // Register protected routes globally so linkTo can block navigation to them
183
192
  // Register immediately (not just in effect) to catch navigation attempts during first render
184
- registerProtectedRoutes(contextKey, protectedScreens)
193
+ registerProtectedRoutes(contextKey, resolvedGuardedRedirects)
194
+
195
+ const currentPathname = routeInfo?.pathname
196
+ const protectedHref = currentPathname
197
+ ? resolveProtectedHref(currentPathname)
198
+ : currentPathname
185
199
 
186
200
  React.useEffect(() => {
187
- registerProtectedRoutes(contextKey, protectedScreens)
201
+ registerProtectedRoutes(contextKey, resolvedGuardedRedirects)
188
202
  return () => {
189
203
  unregisterProtectedRoutes(contextKey)
190
204
  }
191
- }, [contextKey, protectedScreens])
205
+ }, [contextKey, resolvedGuardedRedirects])
206
+
207
+ React.useEffect(() => {
208
+ if (currentPathname && protectedHref && protectedHref !== currentPathname) {
209
+ replace(protectedHref)
210
+ }
211
+ }, [currentPathname, protectedHref])
192
212
 
193
213
  const sorted = useSortedScreens(screens ?? [], { protectedScreens })
194
214
 
@@ -5,6 +5,7 @@ import {
5
5
  type ReactNode,
6
6
  isValidElement,
7
7
  } from 'react'
8
+ import type { OneRouter } from '../interfaces/router'
8
9
 
9
10
  // Get Group component directly from react-navigation core
10
11
  // (avoids pulling in @react-navigation/elements which has asset imports)
@@ -12,6 +13,8 @@ const { Group } = createNavigatorFactory({} as any)()
12
13
 
13
14
  export type ProtectedProps = {
14
15
  guard: boolean
16
+ /** where to redirect when `guard` is false. defaults to the navigator's first available route. */
17
+ redirectTo?: OneRouter.Href
15
18
  children?: ReactNode
16
19
  }
17
20
 
@@ -0,0 +1,7 @@
1
+ /** Props passed to a layout's `SuspenseFallback` export. */
2
+ export type SuspenseFallbackProps = {
3
+ /** The suspended route module's context key, such as `./profile/[id].tsx`. */
4
+ route: string
5
+ /** The suspended route's URL parameters. */
6
+ params: Record<string, string | string[]>
7
+ }
@@ -1,4 +1,5 @@
1
1
  import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs'
2
+ import { EventEmitter } from 'node:events'
2
3
  import { tmpdir } from 'node:os'
3
4
  import path from 'node:path'
4
5
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
@@ -192,23 +193,31 @@ describe('createFileSystemRouterPlugin', () => {
192
193
 
193
194
  async function request(pathname: string) {
194
195
  const chunks: string[] = []
195
- const req = {
196
+ const req = Object.assign(new EventEmitter(), {
197
+ aborted: false,
198
+ complete: true,
196
199
  originalUrl: pathname,
197
200
  url: pathname,
198
201
  headers: {
199
- host: 'localhost',
202
+ ':authority': 'localhost',
203
+ ':method': 'GET',
200
204
  },
201
205
  method: 'GET',
202
- }
203
- const res = {
206
+ })
207
+ const res = Object.assign(new EventEmitter(), {
208
+ destroyed: false,
209
+ writableFinished: false,
204
210
  setHeader: vi.fn(),
205
211
  appendHeader: vi.fn(),
206
212
  writeHead: vi.fn(),
207
213
  write: vi.fn((chunk: string) => {
208
214
  chunks.push(chunk)
209
215
  }),
210
- end: vi.fn(),
211
- }
216
+ end: vi.fn(() => {
217
+ res.writableFinished = true
218
+ res.emit('finish')
219
+ }),
220
+ })
212
221
  const next = vi.fn((error?: unknown) => {
213
222
  if (error) {
214
223
  throw error
@@ -1,5 +1,6 @@
1
1
  import path from 'node:path'
2
2
  import { Readable } from 'node:stream'
3
+ import { TLSSocket } from 'node:tls'
3
4
  import { debounce } from 'perfect-debounce'
4
5
  import colors from 'picocolors'
5
6
  import type { Connect, Plugin, ViteDevServer } from 'vite'
@@ -746,10 +747,36 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
746
747
  // prevent browsers (safari) from caching stale html/js in dev
747
748
  res.setHeader('Cache-Control', 'no-store')
748
749
 
750
+ const abortController = new AbortController()
751
+ const cleanupAbortListeners = () => {
752
+ req.removeListener('aborted', abortRequest)
753
+ req.removeListener('close', abortIncompleteRequest)
754
+ res.removeListener('close', abortIncompleteResponse)
755
+ res.removeListener('finish', cleanupAbortListeners)
756
+ }
757
+ const abortRequest = () => {
758
+ cleanupAbortListeners()
759
+ abortController.abort()
760
+ }
761
+ const abortIncompleteRequest = () => {
762
+ if (req.aborted || !req.complete) abortRequest()
763
+ }
764
+ const abortIncompleteResponse = () => {
765
+ if (!res.writableFinished) {
766
+ abortRequest()
767
+ return
768
+ }
769
+ cleanupAbortListeners()
770
+ }
771
+ req.on('aborted', abortRequest)
772
+ req.on('close', abortIncompleteRequest)
773
+ res.on('close', abortIncompleteResponse)
774
+ res.on('finish', cleanupAbortListeners)
775
+
749
776
  try {
750
777
  const redirects = options.web?.redirects
751
778
  if (redirects) {
752
- const url = new URL(req.url || '', `http://${req.headers.host}`)
779
+ const url = new URL(req.url || '', 'http://127.0.0.1')
753
780
  for (const redirect of redirects) {
754
781
  const regexStr = `^${redirect.source.replace(/:\w+/g, '([^/]+)')}$`
755
782
  const match = url.pathname.match(new RegExp(regexStr))
@@ -778,10 +805,11 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
778
805
  }
779
806
 
780
807
  const reply = await handleRequest.handler(
781
- convertIncomingMessageToRequest(req)
808
+ convertIncomingMessageToRequest(req, abortController.signal)
782
809
  )
783
810
 
784
811
  if (!reply) {
812
+ cleanupAbortListeners()
785
813
  return next()
786
814
  }
787
815
 
@@ -822,7 +850,6 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
822
850
  }
823
851
 
824
852
  res.statusCode = reply.status
825
- res.statusMessage = reply.statusText
826
853
 
827
854
  if (reply.body) {
828
855
  if (reply.body.locked) {
@@ -831,7 +858,14 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
831
858
  return
832
859
  }
833
860
  try {
834
- Readable.fromWeb(reply.body as any).pipe(res)
861
+ const body = Readable.fromWeb(reply.body as any)
862
+ body.on('error', (error) => {
863
+ if (!abortController.signal.aborted) {
864
+ console.warn('Error streaming reply body to response:', error)
865
+ }
866
+ if (!res.destroyed) res.destroy()
867
+ })
868
+ body.pipe(res)
835
869
  } catch (err) {
836
870
  console.warn('Error piping reply body to response:', err)
837
871
  res.end()
@@ -854,6 +888,7 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
854
888
  res.end()
855
889
  return
856
890
  } catch (error) {
891
+ cleanupAbortListeners()
857
892
  console.error(`[one] routing error ${req.url}: ${error}`)
858
893
  // Forward the error to Vite
859
894
  next(error)
@@ -870,21 +905,30 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
870
905
  } satisfies Plugin
871
906
  }
872
907
 
873
- const convertIncomingMessageToRequest = (req: Connect.IncomingMessage): Request => {
908
+ const convertIncomingMessageToRequest = (
909
+ req: Connect.IncomingMessage,
910
+ signal: AbortSignal
911
+ ): Request => {
874
912
  if (!req.originalUrl) {
875
913
  throw new Error(`Can't convert: originalUrl is missing`)
876
914
  }
877
915
 
878
- const urlBase = `http://${req.headers.host}`
916
+ const protocol =
917
+ req.socket instanceof TLSSocket && req.socket.encrypted ? 'https' : 'http'
918
+ const host = `${req.headers['x-forwarded-host'] || req.headers.host || req.headers[':authority'] || '127.0.0.1'}`
919
+ const urlBase = `${protocol}://${host}`
879
920
  const urlString = req.originalUrl
880
921
  const url = new URL(urlString, urlBase)
881
922
 
882
923
  const headers = new Headers()
883
924
  for (const key in req.headers) {
884
- if (req.headers[key]) {
925
+ if (!key.startsWith(':') && req.headers[key]) {
885
926
  headers.append(key, req.headers[key] as string)
886
927
  }
887
928
  }
929
+ if (!headers.has('host')) {
930
+ headers.set('host', host)
931
+ }
888
932
 
889
933
  const hasBody = ['POST', 'PUT', 'PATCH', 'DELETE'].includes(req.method || '')
890
934
  const body = hasBody ? Readable.toWeb(req) : null
@@ -893,6 +937,7 @@ const convertIncomingMessageToRequest = (req: Connect.IncomingMessage): Request
893
937
  method: req.method,
894
938
  headers,
895
939
  body,
940
+ signal,
896
941
  // Required for streaming bodies in Node's experimental fetch:
897
942
  duplex: 'half',
898
943
  } as RequestInit & { duplex: 'half' })
@@ -2,7 +2,6 @@ export declare function dev(args: {
2
2
  clean?: boolean;
3
3
  host?: string;
4
4
  port?: string;
5
- https?: boolean;
6
5
  mode?: 'development' | 'production';
7
6
  debugBundle?: string;
8
7
  debug?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAeA,wBAAsB,GAAG,CAAC,IAAI,EAAE;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,aAAa,GAAG,YAAY,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,iBAkIA"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAeA,wBAAsB,GAAG,CAAC,IAAI,EAAE;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,aAAa,GAAG,YAAY,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,iBAkIA"}
@@ -9,7 +9,7 @@ export type ImageMeta = {
9
9
  height: number;
10
10
  blurDataURL: string;
11
11
  };
12
- export declare function getSharp(): Promise<typeof import('sharp') | null>;
12
+ export declare function getSharp(): Promise<typeof import('sharp')['default'] | null>;
13
13
  /**
14
14
  * Process an image file and return its metadata.
15
15
  * Internal helper used by both getImageData and imageDataPlugin.
@@ -1 +1 @@
1
- {"version":3,"file":"getImageData.d.ts","sourceRoot":"","sources":["../../src/image/getImageData.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAID,wBAAsB,QAAQ,IAAI,OAAO,CAAC,cAAc,OAAO,CAAC,GAAG,IAAI,CAAC,CAWvE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAoBlF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA+BvE"}
1
+ {"version":3,"file":"getImageData.d.ts","sourceRoot":"","sources":["../../src/image/getImageData.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAID,wBAAsB,QAAQ,IAAI,OAAO,CAAC,CAAC,cAAc,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAWpF;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAoBlF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA+BvE"}
package/types/index.d.ts CHANGED
@@ -82,6 +82,7 @@ export { LoadProgressBar } from './views/LoadProgressBar';
82
82
  export { Navigator, Slot } from './views/Navigator';
83
83
  export { ScrollBehavior } from './views/ScrollBehavior';
84
84
  export { SourceInspector, type SourceInspectorProps } from './views/SourceInspector';
85
+ export type { SuspenseFallbackProps } from './views/SuspenseFallback';
85
86
  export type { ErrorBoundaryProps, ErrorRouteInfo } from './views/Try';
86
87
  export { useScrollGroup } from './useScrollGroup';
87
88
  export { getServerData, setResponseHeaders, setServerData } from './vite/one-server-only';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { EventMapBase, NavigationState } from '@react-navigation/native';
2
2
  import React from 'react';
3
+ import type { OneRouter } from '../interfaces/router';
3
4
  import { type ScreenProps } from '../router/useScreens';
4
5
  import type { PickPartial } from '../types';
5
6
  import { Screen } from '../views/Screen';
@@ -11,7 +12,13 @@ export declare function useFilterScreenChildren(children: React.ReactNode, { isC
11
12
  screens: any[];
12
13
  children: any[];
13
14
  protectedScreens: Set<string>;
15
+ guardedRedirects: Map<string, OneRouter.Href<{
16
+ __branded__: any;
17
+ }> | undefined>;
14
18
  };
19
+ export declare function useResolvedGuardedRedirects(guardedRedirects: Map<string, OneRouter.Href | undefined>): Map<string, OneRouter.Href<{
20
+ __branded__: any;
21
+ }> | undefined>;
15
22
  /** Return a navigator that automatically injects matched routes and renders nothing when there are no children. Return type with children prop optional */
16
23
  export declare function withLayoutContext<TOptions extends object, T extends React.ComponentType<any>, State extends NavigationState, EventMap extends EventMapBase>(Nav: T, processor?: (options: ScreenProps<TOptions, State, EventMap>[]) => ScreenProps<TOptions, State, EventMap>[], options?: {
17
24
  props: any;
@@ -1 +1 @@
1
- {"version":3,"file":"withLayoutContext.d.ts","sourceRoot":"","sources":["../../src/layouts/withLayoutContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,sBAAsB,CAAA;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAGxC,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,EACE,iBAAiB,EACjB,UAAU,GACX,GAAE;IACD,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;CACf;;;;EAsFP;AAED,2JAA2J;AAC3J,wBAAgB,iBAAiB,CAC/B,QAAQ,SAAS,MAAM,EACvB,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAClC,KAAK,SAAS,eAAe,EAC7B,QAAQ,SAAS,YAAY,EAE7B,GAAG,EAAE,CAAC,EACN,SAAS,CAAC,EAAE,CACV,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,KAC9C,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAC7C,OAAO,CAAC,EAAE;IAAE,KAAK,EAAE,GAAG,CAAA;CAAE;;EA4CzB"}
1
+ {"version":3,"file":"withLayoutContext.d.ts","sourceRoot":"","sources":["../../src/layouts/withLayoutContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAUrD,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,sBAAsB,CAAA;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAGxC,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,EACE,iBAAiB,EACjB,UAAU,GACX,GAAE;IACD,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;CACf;;;;;;;EA8FP;AAED,wBAAgB,2BAA2B,CACzC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC;;gBA0B1D;AAED,2JAA2J;AAC3J,wBAAgB,iBAAiB,CAC/B,QAAQ,SAAS,MAAM,EACvB,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAClC,KAAK,SAAS,eAAe,EAC7B,QAAQ,SAAS,YAAY,EAE7B,GAAG,EAAE,CAAC,EACN,SAAS,CAAC,EAAE,CACV,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,KAC9C,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAC7C,OAAO,CAAC,EAAE;IAAE,KAAK,EAAE,GAAG,CAAA;CAAE;;EAyDzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=withLayoutContext.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withLayoutContext.test.d.ts","sourceRoot":"","sources":["../../src/layouts/withLayoutContext.test.tsx"],"names":[],"mappings":""}
@@ -1,5 +1,6 @@
1
1
  import React, { type ReactNode } from 'react';
2
2
  import type { ErrorBoundaryProps } from '../views/Try';
3
+ import type { SuspenseFallbackProps } from '../views/SuspenseFallback';
3
4
  import type { LoaderProps } from '../types';
4
5
  import type { One } from '../vite/types';
5
6
  import type { ParamValidator, RouteValidationFn } from '../validateParams';
@@ -26,6 +27,7 @@ export type SlotConfig = {
26
27
  };
27
28
  export type LoadedRoute = {
28
29
  ErrorBoundary?: React.ComponentType<ErrorBoundaryProps>;
30
+ SuspenseFallback?: React.ComponentType<SuspenseFallbackProps>;
29
31
  default?: React.ComponentType<any>;
30
32
  unstable_settings?: Record<string, any>;
31
33
  getNavOptions?: (args: any) => any;
@@ -100,6 +102,8 @@ export type RouteNode = {
100
102
  slots?: Map<string, SlotConfig>;
101
103
  };
102
104
  export declare const RouteParamsContext: React.Context<Record<string, string | undefined> | undefined>;
105
+ /** Allows a layout to provide a Suspense fallback for its child routes. */
106
+ export declare const SuspenseFallbackContext: React.Context<React.ComponentType<SuspenseFallbackProps> | undefined>;
103
107
  /** Return the RouteNode at the current contextual boundary. */
104
108
  export declare function useRouteNode(): RouteNode | null;
105
109
  export declare function useContextKey(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../../src/router/Route.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../../src/router/Route.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAQ1E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,2CAA2C;AAC3C,MAAM,MAAM,mBAAmB,GAAG;IAChC,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAA;IACd,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG;IACvB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAA;IACZ,8DAA8D;IAC9D,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,wCAAwC;IACxC,eAAe,EAAE,SAAS,EAAE,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAA;IACvD,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAA;IAC7D,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;IAClC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAA;KAC3C,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAA;IACzC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAA;IACpE;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,4BAA4B;IAC5B,IAAI,EAAE,GAAG,CAAC,SAAS,CAAA;IACnB,kEAAkE;IAClE,SAAS,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAA;IACrC,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oBAAoB;IACpB,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,kCAAkC;IAClC,OAAO,EAAE,IAAI,GAAG,iBAAiB,EAAE,CAAA;IACnC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAA;IAClB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,oLAAoL;IACpL,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,qBAAqB;IACrB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;IACrB,yBAAyB;IACzB,WAAW,CAAC,EAAE,SAAS,EAAE,CAAA;IACzB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,GAAG,CAAC,eAAe,CAAA;IAMtC,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gFAAgF;IAChF,SAAS,CAAC,EAAE,mBAAmB,CAAA;IAC/B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,kBAAkB,+DAE1B,CAAA;AAIL,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,uEAExB,CAAA;AAOZ,+DAA+D;AAC/D,wBAAgB,YAAY,IAAI,SAAS,GAAG,IAAI,CAE/C;AAED,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AA4BD,iEAAiE;AACjE,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,IAAI,EACJ,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;KAC5C,CAAA;CACF,2CA6BA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=protectedRoutes.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protectedRoutes.test.d.ts","sourceRoot":"","sources":["../../src/router/protectedRoutes.test.ts"],"names":[],"mappings":""}
@@ -18,16 +18,14 @@ export declare let rootComponent: ComponentType;
18
18
  * Register protected routes for a navigator context.
19
19
  * Called by navigators when their protectedScreens changes.
20
20
  */
21
- export declare function registerProtectedRoutes(contextKey: string, protectedScreens: Set<string>): void;
21
+ export declare function registerProtectedRoutes(contextKey: string, guardedRedirects: Map<string, OneRouter.Href | undefined>): void;
22
22
  /**
23
23
  * Unregister protected routes for a navigator context.
24
24
  * Called when a navigator unmounts.
25
25
  */
26
26
  export declare function unregisterProtectedRoutes(contextKey: string): void;
27
- /**
28
- * Check if a route path is protected and should be blocked.
29
- * Returns true if the route is protected.
30
- */
27
+ /** resolve a protected href to its allowed redirect target. */
28
+ export declare function resolveProtectedHref(href: string): string | undefined;
31
29
  export declare function isRouteProtected(href: string): boolean;
32
30
  export declare let hasAttemptedToHideSplash: boolean;
33
31
  export declare let initialState: OneRouter.ResultState | undefined;
@@ -64,7 +62,7 @@ export declare function canGoBack(): boolean;
64
62
  export declare function canDismiss(): boolean;
65
63
  export declare function getSortedRoutes(): RouteNode[];
66
64
  export declare function updateState(state: OneRouter.ResultState, nextStateParam?: OneRouter.ResultState): void;
67
- export declare function consumePendingNavigationAction(): "NAVIGATE" | "REPLACE" | "PUSH" | undefined;
65
+ export declare function consumePendingNavigationAction(): "REPLACE" | "NAVIGATE" | "PUSH" | undefined;
68
66
  export declare function subscribeToRootState(subscriber: OneRouter.RootStateListener): () => void;
69
67
  export declare function subscribeToStore(subscriber: () => void): () => void;
70
68
  export declare function subscribeToLoadingState(subscriber: OneRouter.LoadingStateListener): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScreens.d.ts","sourceRoot":"","sources":["../../src/router/useScreens.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,aAAa,EACb,SAAS,EACT,eAAe,EAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAA0D,MAAM,OAAO,CAAA;AAW9E,OAAO,EAIL,KAAK,SAAS,EAEf,MAAM,SAAS,CAAA;AAiDhB,eAAO,MAAQ,MAAM,OAAE,KAAK,KAAwC,CAAA;AA8IpE,MAAM,MAAM,WAAW,CACrB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1D,KAAK,SAAS,eAAe,GAAG,eAAe,EAC/C,QAAQ,SAAS,YAAY,GAAG,YAAY,IAC1C;IACF,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,OAAO,CAAC,EAAE,QAAQ,CAAA;IAElB,SAAS,CAAC,EACN,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,GAChC,CAAC,CAAC,IAAI,EAAE;QACN,KAAK,EAAE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QACvC,UAAU,EAAE,GAAG,CAAA;KAChB,KAAK,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE3C,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAA;CAC7E,CAAA;AAkED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAAE,EACpB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC/B,GACA,KAAK,CAAC,SAAS,EAAE,CAqBnB;AAuCD,mFAAmF;AACnF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,0GAoK1D;AAED,oGAAoG;AACpG,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC,IAU/D;aAAmC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAAE,YAoBjE"}
1
+ {"version":3,"file":"useScreens.d.ts","sourceRoot":"","sources":["../../src/router/useScreens.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,aAAa,EACb,SAAS,EACT,eAAe,EAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAA0D,MAAM,OAAO,CAAA;AAW9E,OAAO,EAKL,KAAK,SAAS,EAGf,MAAM,SAAS,CAAA;AAkDhB,eAAO,MAAQ,MAAM,OAAE,KAAK,KAAwC,CAAA;AA8IpE,MAAM,MAAM,WAAW,CACrB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1D,KAAK,SAAS,eAAe,GAAG,eAAe,EAC/C,QAAQ,SAAS,YAAY,GAAG,YAAY,IAC1C;IACF,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,OAAO,CAAC,EAAE,QAAQ,CAAA;IAElB,SAAS,CAAC,EACN,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,GAChC,CAAC,CAAC,IAAI,EAAE;QACN,KAAK,EAAE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QACvC,UAAU,EAAE,GAAG,CAAA;KAChB,KAAK,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE3C,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAA;CAC7E,CAAA;AAkED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAAE,EACpB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC/B,GACA,KAAK,CAAC,SAAS,EAAE,CAqBnB;AAqDD,mFAAmF;AACnF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,0GAiM1D;AAED,oGAAoG;AACpG,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC,IAU/D;aAAmC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAAE,YAoBjE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useScreens.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScreens.test.d.ts","sourceRoot":"","sources":["../../src/router/useScreens.test.tsx"],"names":[],"mappings":""}