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.
- package/dist/cjs/cli/dev.native.js.map +1 -1
- package/dist/cjs/cli.cjs +0 -3
- package/dist/cjs/cli.native.js +0 -3
- package/dist/cjs/cli.native.js.map +1 -1
- package/dist/cjs/image/getImageData.cjs +1 -1
- package/dist/cjs/image/getImageData.native.js +1 -1
- package/dist/cjs/image/getImageData.native.js.map +1 -1
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/layouts/Stack.cjs +3 -4
- package/dist/cjs/layouts/Stack.native.js +3 -4
- package/dist/cjs/layouts/Stack.native.js.map +1 -1
- package/dist/cjs/layouts/withLayoutContext.cjs +39 -8
- package/dist/cjs/layouts/withLayoutContext.native.js +43 -8
- package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
- package/dist/cjs/layouts/withLayoutContext.test.cjs +96 -0
- package/dist/cjs/layouts/withLayoutContext.test.native.js +100 -0
- package/dist/cjs/layouts/withLayoutContext.test.native.js.map +1 -0
- package/dist/cjs/router/Route.cjs +3 -0
- package/dist/cjs/router/Route.native.js +3 -0
- package/dist/cjs/router/Route.native.js.map +1 -1
- package/dist/cjs/router/protectedRoutes.test.cjs +22 -0
- package/dist/cjs/router/protectedRoutes.test.native.js +25 -0
- package/dist/cjs/router/protectedRoutes.test.native.js.map +1 -0
- package/dist/cjs/router/router.cjs +26 -8
- package/dist/cjs/router/router.native.js +26 -8
- package/dist/cjs/router/router.native.js.map +1 -1
- package/dist/cjs/router/useScreens.cjs +38 -11
- package/dist/cjs/router/useScreens.native.js +39 -11
- package/dist/cjs/router/useScreens.native.js.map +1 -1
- package/dist/cjs/router/useScreens.test.cjs +134 -0
- package/dist/cjs/router/useScreens.test.native.js +163 -0
- package/dist/cjs/router/useScreens.test.native.js.map +1 -0
- package/dist/cjs/views/Navigator.cjs +14 -6
- package/dist/cjs/views/Navigator.native.js +14 -6
- package/dist/cjs/views/Navigator.native.js.map +1 -1
- package/dist/cjs/views/Protected.native.js.map +1 -1
- package/dist/cjs/views/SuspenseFallback.cjs +18 -0
- package/dist/cjs/views/SuspenseFallback.native.js +21 -0
- package/dist/cjs/views/SuspenseFallback.native.js.map +1 -0
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +47 -7
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +47 -7
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.cjs +15 -6
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js +15 -6
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
- package/dist/esm/cli/dev.mjs.map +1 -1
- package/dist/esm/cli/dev.native.js.map +1 -1
- package/dist/esm/cli.mjs +0 -3
- package/dist/esm/cli.mjs.map +1 -1
- package/dist/esm/cli.native.js +0 -3
- package/dist/esm/cli.native.js.map +1 -1
- package/dist/esm/image/getImageData.mjs +1 -1
- package/dist/esm/image/getImageData.mjs.map +1 -1
- package/dist/esm/image/getImageData.native.js +1 -1
- package/dist/esm/image/getImageData.native.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/layouts/Stack.mjs +3 -4
- package/dist/esm/layouts/Stack.mjs.map +1 -1
- package/dist/esm/layouts/Stack.native.js +3 -4
- package/dist/esm/layouts/Stack.native.js.map +1 -1
- package/dist/esm/layouts/withLayoutContext.mjs +41 -11
- package/dist/esm/layouts/withLayoutContext.mjs.map +1 -1
- package/dist/esm/layouts/withLayoutContext.native.js +45 -11
- package/dist/esm/layouts/withLayoutContext.native.js.map +1 -1
- package/dist/esm/layouts/withLayoutContext.test.mjs +73 -0
- package/dist/esm/layouts/withLayoutContext.test.mjs.map +1 -0
- package/dist/esm/layouts/withLayoutContext.test.native.js +74 -0
- package/dist/esm/layouts/withLayoutContext.test.native.js.map +1 -0
- package/dist/esm/router/Route.mjs +3 -1
- package/dist/esm/router/Route.mjs.map +1 -1
- package/dist/esm/router/Route.native.js +3 -1
- package/dist/esm/router/Route.native.js.map +1 -1
- package/dist/esm/router/protectedRoutes.test.mjs +23 -0
- package/dist/esm/router/protectedRoutes.test.mjs.map +1 -0
- package/dist/esm/router/protectedRoutes.test.native.js +23 -0
- package/dist/esm/router/protectedRoutes.test.native.js.map +1 -0
- package/dist/esm/router/router.mjs +26 -9
- package/dist/esm/router/router.mjs.map +1 -1
- package/dist/esm/router/router.native.js +26 -9
- package/dist/esm/router/router.native.js.map +1 -1
- package/dist/esm/router/useScreens.mjs +39 -11
- package/dist/esm/router/useScreens.mjs.map +1 -1
- package/dist/esm/router/useScreens.native.js +40 -11
- package/dist/esm/router/useScreens.native.js.map +1 -1
- package/dist/esm/router/useScreens.test.mjs +105 -0
- package/dist/esm/router/useScreens.test.mjs.map +1 -0
- package/dist/esm/router/useScreens.test.native.js +130 -0
- package/dist/esm/router/useScreens.test.native.js.map +1 -0
- package/dist/esm/views/Navigator.mjs +15 -7
- package/dist/esm/views/Navigator.mjs.map +1 -1
- package/dist/esm/views/Navigator.native.js +15 -7
- package/dist/esm/views/Navigator.native.js.map +1 -1
- package/dist/esm/views/Protected.mjs.map +1 -1
- package/dist/esm/views/Protected.native.js.map +1 -1
- package/dist/esm/views/SuspenseFallback.mjs +2 -0
- package/dist/esm/views/SuspenseFallback.mjs.map +1 -0
- package/dist/esm/views/SuspenseFallback.native.js +2 -0
- package/dist/esm/views/SuspenseFallback.native.js.map +1 -0
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +47 -7
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +47 -7
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.mjs +15 -6
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.native.js +15 -6
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
- package/package.json +11 -11
- package/src/cli/dev.ts +0 -1
- package/src/cli.ts +0 -3
- package/src/image/getImageData.ts +2 -2
- package/src/index.ts +1 -0
- package/src/layouts/Stack.tsx +4 -4
- package/src/layouts/withLayoutContext.test.tsx +74 -0
- package/src/layouts/withLayoutContext.tsx +71 -12
- package/src/router/Route.tsx +8 -0
- package/src/router/protectedRoutes.test.ts +35 -0
- package/src/router/router.ts +48 -20
- package/src/router/useScreens.test.tsx +139 -0
- package/src/router/useScreens.tsx +59 -13
- package/src/views/Navigator.tsx +25 -5
- package/src/views/Protected.tsx +3 -0
- package/src/views/SuspenseFallback.ts +7 -0
- package/src/vite/plugins/fileSystemRouterPlugin.test.ts +15 -6
- package/src/vite/plugins/fileSystemRouterPlugin.tsx +52 -7
- package/types/cli/dev.d.ts +0 -1
- package/types/cli/dev.d.ts.map +1 -1
- package/types/image/getImageData.d.ts +1 -1
- package/types/image/getImageData.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/layouts/withLayoutContext.d.ts +7 -0
- package/types/layouts/withLayoutContext.d.ts.map +1 -1
- package/types/layouts/withLayoutContext.test.d.ts +2 -0
- package/types/layouts/withLayoutContext.test.d.ts.map +1 -0
- package/types/router/Route.d.ts +4 -0
- package/types/router/Route.d.ts.map +1 -1
- package/types/router/protectedRoutes.test.d.ts +2 -0
- package/types/router/protectedRoutes.test.d.ts.map +1 -0
- package/types/router/router.d.ts +4 -6
- package/types/router/router.d.ts.map +1 -1
- package/types/router/useScreens.d.ts.map +1 -1
- package/types/router/useScreens.test.d.ts +2 -0
- package/types/router/useScreens.test.d.ts.map +1 -0
- package/types/views/Navigator.d.ts.map +1 -1
- package/types/views/Protected.d.ts +3 -0
- package/types/views/Protected.d.ts.map +1 -1
- package/types/views/SuspenseFallback.d.ts +8 -0
- package/types/views/SuspenseFallback.d.ts.map +1 -0
- 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(
|
|
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
|
-
|
|
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
|
-
<
|
|
466
|
-
|
|
467
|
-
|
|
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 = (
|
|
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={
|
|
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={
|
|
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>
|
package/src/views/Navigator.tsx
CHANGED
|
@@ -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 {
|
|
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,
|
|
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,
|
|
201
|
+
registerProtectedRoutes(contextKey, resolvedGuardedRedirects)
|
|
188
202
|
return () => {
|
|
189
203
|
unregisterProtectedRoutes(contextKey)
|
|
190
204
|
}
|
|
191
|
-
}, [contextKey,
|
|
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
|
|
package/src/views/Protected.tsx
CHANGED
|
@@ -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
|
-
|
|
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 || '',
|
|
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)
|
|
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 = (
|
|
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
|
|
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' })
|
package/types/cli/dev.d.ts
CHANGED
package/types/cli/dev.d.ts.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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';
|
package/types/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"withLayoutContext.test.d.ts","sourceRoot":"","sources":["../../src/layouts/withLayoutContext.test.tsx"],"names":[],"mappings":""}
|
package/types/router/Route.d.ts
CHANGED
|
@@ -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":"AAAA,OAAO,KAAK,EAAE,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,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,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;
|
|
1
|
+
{"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../../src/router/Route.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protectedRoutes.test.d.ts","sourceRoot":"","sources":["../../src/router/protectedRoutes.test.ts"],"names":[],"mappings":""}
|
package/types/router/router.d.ts
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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(): "
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,iCAAiC,EACtC,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,KAAK,aAAa,EAKnB,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAc1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAQxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAOzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAMxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAc/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;AAG9C,eAAO,IAAI,SAAS,EAAE,SAAS,GAAG,IAAW,CAAA;AAC7C,eAAO,IAAI,aAAa,EAAE,aAAa,CAAA;
|
|
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,
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"useScreens.test.d.ts","sourceRoot":"","sources":["../../src/router/useScreens.test.tsx"],"names":[],"mappings":""}
|