one 1.21.13 → 1.23.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.
- package/dist/cjs/Root.cjs +2 -2
- package/dist/cjs/Root.native.js +2 -2
- package/dist/cjs/Root.native.js.map +1 -1
- package/dist/cjs/cli/build.cjs +9 -17
- package/dist/cjs/cli/build.native.js +8 -16
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/cli.native.js.map +1 -1
- package/dist/cjs/clientLoaderResolver.native.js.map +1 -1
- package/dist/cjs/config.native.js.map +1 -1
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/constants.test.native.js.map +1 -1
- package/dist/cjs/createAPIRoute.native.js.map +1 -1
- package/dist/cjs/createApp.cjs +12 -35
- package/dist/cjs/createHandleRequest.cjs +4 -2
- package/dist/cjs/createHandleRequest.native.js +4 -2
- package/dist/cjs/createHandleRequest.native.js.map +1 -1
- package/dist/cjs/fallbackViews/Sitemap.cjs +123 -55
- package/dist/cjs/fallbackViews/Sitemap.native.js.map +1 -1
- package/dist/cjs/fallbackViews/Unmatched.cjs +92 -37
- package/dist/cjs/fallbackViews/Unmatched.native.js.map +1 -1
- package/dist/cjs/fork/NavigationContainer.cjs +6 -28
- package/dist/cjs/fork/NavigationContainer.native.js +5 -27
- package/dist/cjs/fork/NavigationContainer.native.js.map +1 -1
- package/dist/cjs/{router/renderingRegistry.cjs → fork/localeDirection.cjs} +6 -29
- package/dist/cjs/{router/web/ScreenRenderContext.cjs → fork/localeDirection.native.js} +10 -12
- package/dist/cjs/fork/localeDirection.native.js.map +1 -0
- package/dist/cjs/fork/theme.cjs +71 -0
- package/dist/cjs/{router/renderingRegistry.native.js → fork/theme.native.js} +7 -31
- package/dist/cjs/fork/theme.native.js.map +1 -0
- package/dist/cjs/headless/Presentations.cjs +51 -0
- package/dist/cjs/headless/Presentations.native.js +56 -0
- package/dist/cjs/headless/Presentations.native.js.map +1 -0
- package/dist/cjs/headless/children.cjs +43 -0
- package/dist/cjs/headless/children.native.js +46 -0
- package/dist/cjs/headless/children.native.js.map +1 -0
- package/dist/cjs/headless/devHeadlessNote.cjs +34 -0
- package/dist/cjs/{router/web/ScreenRenderContext.native.js → headless/devHeadlessNote.native.js} +11 -12
- package/dist/cjs/headless/devHeadlessNote.native.js.map +1 -0
- package/dist/cjs/headless/keepMounted.cjs +58 -0
- package/dist/cjs/headless/keepMounted.native.js +64 -0
- package/dist/cjs/headless/keepMounted.native.js.map +1 -0
- package/dist/cjs/headless/types.cjs +18 -0
- package/dist/cjs/headless/types.native.js +21 -0
- package/dist/cjs/headless/types.native.js.map +1 -0
- package/dist/cjs/headless/useDrawer.cjs +83 -0
- package/dist/cjs/headless/useDrawer.native.js +95 -0
- package/dist/cjs/headless/useDrawer.native.js.map +1 -0
- package/dist/cjs/headless/useStack.cjs +75 -0
- package/dist/cjs/headless/useStack.native.js +79 -0
- package/dist/cjs/headless/useStack.native.js.map +1 -0
- package/dist/cjs/headless/useTabs.cjs +62 -0
- package/dist/cjs/headless/useTabs.native.js +65 -0
- package/dist/cjs/headless/useTabs.native.js.map +1 -0
- package/dist/cjs/index.cjs +8 -3
- package/dist/cjs/index.native.js +8 -3
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/layouts/Drawer.cjs +71 -42
- package/dist/cjs/layouts/Drawer.native.js +1 -25
- package/dist/cjs/layouts/Drawer.native.js.map +1 -1
- package/dist/cjs/layouts/Stack.cjs +9 -13
- package/dist/cjs/layouts/Stack.native.js +11 -13
- package/dist/cjs/layouts/Stack.native.js.map +1 -1
- package/dist/cjs/layouts/Tabs.cjs +104 -88
- package/dist/cjs/layouts/Tabs.native.js +1 -13
- package/dist/cjs/layouts/Tabs.native.js.map +1 -1
- package/dist/cjs/layouts/stack-navigator.cjs +10 -2
- package/dist/cjs/layouts/stack-navigator.native.js +5 -1
- package/dist/cjs/layouts/stack-navigator.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.cjs +4 -0
- package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.native.js +4 -0
- package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderComponent.cjs +13 -9
- package/dist/cjs/layouts/stack-utils/StackHeaderComponent.native.js +13 -9
- package/dist/cjs/layouts/stack-utils/StackHeaderComponent.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderLeft.cjs +4 -0
- package/dist/cjs/layouts/stack-utils/StackHeaderLeft.native.js +4 -0
- package/dist/cjs/layouts/stack-utils/StackHeaderLeft.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderRight.cjs +4 -0
- package/dist/cjs/layouts/stack-utils/StackHeaderRight.native.js +4 -0
- package/dist/cjs/layouts/stack-utils/StackHeaderRight.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderSearchBar.cjs +4 -0
- package/dist/cjs/layouts/stack-utils/StackHeaderSearchBar.native.js +4 -0
- package/dist/cjs/layouts/stack-utils/StackHeaderSearchBar.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderTitle.cjs +8 -4
- package/dist/cjs/layouts/stack-utils/StackHeaderTitle.native.js +8 -4
- package/dist/cjs/layouts/stack-utils/StackHeaderTitle.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackScreen.cjs +10 -23
- package/dist/cjs/layouts/stack-utils/StackScreen.native.js +21 -27
- package/dist/cjs/layouts/stack-utils/StackScreen.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/__tests__/composition.test.cjs +11 -6
- package/dist/cjs/layouts/stack-utils/__tests__/composition.test.native.js +15 -6
- package/dist/cjs/layouts/stack-utils/__tests__/composition.test.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/index.cjs +2 -0
- package/dist/cjs/layouts/stack-utils/index.native.js +2 -0
- package/dist/cjs/layouts/stack-utils/index.native.js.map +1 -1
- package/dist/cjs/layouts/withLayoutContext.cjs +2 -2
- package/dist/cjs/layouts/withLayoutContext.native.js +2 -2
- package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
- package/dist/cjs/link/Link.cjs +55 -69
- package/dist/cjs/link/Link.native.js.map +1 -1
- package/dist/cjs/link/useLinkTo.cjs +3 -17
- package/dist/cjs/link/useLinkTo.native.js +1 -23
- package/dist/cjs/link/useLinkTo.native.js.map +1 -1
- package/dist/cjs/metro-config/withOne.test.cjs +2 -2
- package/dist/cjs/metro-config/withOne.test.native.js +2 -2
- package/dist/cjs/metro-config/withOne.test.native.js.map +1 -1
- package/dist/cjs/router/getRouteArtifactPath.test.native.js.map +1 -1
- package/dist/cjs/router/router.cjs +2 -2
- package/dist/cjs/router/router.native.js +2 -2
- package/dist/cjs/router/router.native.js.map +1 -1
- package/dist/cjs/router/useScreens.cjs +31 -72
- package/dist/cjs/router/useScreens.native.js +15 -71
- package/dist/cjs/router/useScreens.native.js.map +1 -1
- package/dist/cjs/router/web/WebStackNavigator.cjs +8 -7
- package/dist/cjs/router/web/WebStackNavigator.native.js +8 -7
- package/dist/cjs/router/web/WebStackNavigator.native.js.map +1 -1
- package/dist/cjs/router/web/WebStackView.cjs +108 -131
- package/dist/cjs/router/web/WebStackView.native.js +117 -176
- package/dist/cjs/router/web/WebStackView.native.js.map +1 -1
- package/dist/cjs/router/web/stackStateUtils.native.js.map +1 -1
- package/dist/cjs/screensFeatureFlags.cjs +1 -16
- package/dist/cjs/screensFeatureFlags.native.js +3 -3
- package/dist/cjs/screensFeatureFlags.native.js.map +1 -1
- package/dist/cjs/typed-routes/generateRouteTypes.cjs +3 -10
- package/dist/cjs/typed-routes/generateRouteTypes.native.js +3 -10
- package/dist/cjs/typed-routes/generateRouteTypes.native.js.map +1 -1
- package/dist/cjs/ui/Slot.cjs +4 -25
- package/dist/cjs/ui/Slot.native.js.map +1 -1
- package/dist/cjs/ui/TabList.cjs +7 -19
- package/dist/cjs/ui/TabList.native.js.map +1 -1
- package/dist/cjs/ui/TabSlot.cjs +15 -47
- package/dist/cjs/ui/TabSlot.native.js.map +1 -1
- package/dist/cjs/ui/TabTrigger.cjs +30 -134
- package/dist/cjs/ui/TabTrigger.native.js +14 -115
- package/dist/cjs/ui/TabTrigger.native.js.map +1 -1
- package/dist/cjs/ui/Tabs.cjs +15 -155
- package/dist/cjs/ui/Tabs.native.js +4 -144
- package/dist/cjs/ui/Tabs.native.js.map +1 -1
- package/dist/cjs/ui/Tabs.shared.cjs +160 -0
- package/dist/cjs/ui/Tabs.shared.native.js +174 -0
- package/dist/cjs/ui/Tabs.shared.native.js.map +1 -0
- package/dist/cjs/ui/useTabTrigger.cjs +122 -0
- package/dist/cjs/ui/useTabTrigger.native.js +125 -0
- package/dist/cjs/ui/useTabTrigger.native.js.map +1 -0
- package/dist/cjs/useBlocker.cjs +55 -93
- package/dist/cjs/useLoader.native.js +0 -18
- package/dist/cjs/useLoader.native.js.map +1 -1
- package/dist/cjs/utils/platform.cjs +28 -0
- package/dist/cjs/utils/platform.native.js +32 -0
- package/dist/cjs/utils/platform.native.js.map +1 -0
- package/dist/cjs/utils/routeIndex.cjs +80 -0
- package/dist/cjs/utils/routeIndex.native.js +86 -0
- package/dist/cjs/utils/routeIndex.native.js.map +1 -0
- package/dist/cjs/utils/routeIndex.test.cjs +51 -0
- package/dist/cjs/utils/routeIndex.test.native.js +54 -0
- package/dist/cjs/utils/routeIndex.test.native.js.map +1 -0
- package/dist/cjs/utils/style.cjs +21 -1
- package/dist/cjs/utils/style.native.js +40 -1
- package/dist/cjs/utils/style.native.js.map +1 -1
- package/dist/cjs/views/LoadProgressBar.cjs +59 -23
- package/dist/cjs/views/LoadProgressBar.native.js.map +1 -1
- package/dist/cjs/views/Protected.cjs +4 -0
- package/dist/cjs/views/Protected.native.js +4 -0
- package/dist/cjs/views/Protected.native.js.map +1 -1
- package/dist/cjs/views/RootErrorBoundary.cjs +107 -148
- package/dist/cjs/views/RootErrorBoundary.native.js +30 -140
- package/dist/cjs/views/RootErrorBoundary.native.js.map +1 -1
- package/dist/cjs/views/RouteErrorView.cjs +108 -0
- package/dist/cjs/views/RouteErrorView.native.js +110 -0
- package/dist/cjs/views/RouteErrorView.native.js.map +1 -0
- package/dist/cjs/views/Screen.cjs +5 -1
- package/dist/cjs/views/Screen.native.js +4 -0
- package/dist/cjs/views/Screen.native.js.map +1 -1
- package/dist/cjs/vite/getManifest.cjs +4 -20
- package/dist/cjs/vite/getManifest.native.js +4 -20
- package/dist/cjs/vite/getManifest.native.js.map +1 -1
- package/dist/cjs/vite/one.cjs +12 -46
- package/dist/cjs/vite/one.native.js +23 -59
- package/dist/cjs/vite/one.native.js.map +1 -1
- package/dist/cjs/vite/plugins/bundledDevPlugin.cjs +130 -0
- package/dist/cjs/vite/plugins/bundledDevPlugin.native.js +154 -0
- package/dist/cjs/vite/plugins/bundledDevPlugin.native.js.map +1 -0
- package/dist/cjs/vite/plugins/devtoolsPlugin.cjs +4 -0
- package/dist/cjs/vite/plugins/devtoolsPlugin.native.js +5 -0
- package/dist/cjs/vite/plugins/devtoolsPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +15 -6
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +15 -5
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.cjs +12 -2
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js +12 -2
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.cjs +10 -6
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js +11 -7
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/routeModuleHmrPlugin.cjs +79 -0
- package/dist/cjs/vite/plugins/routeModuleHmrPlugin.native.js +84 -0
- package/dist/cjs/vite/plugins/routeModuleHmrPlugin.native.js.map +1 -0
- package/dist/cjs/vite/plugins/routeModuleHmrPlugin.test.cjs +74 -0
- package/dist/cjs/vite/plugins/routeModuleHmrPlugin.test.native.js +83 -0
- package/dist/cjs/vite/plugins/routeModuleHmrPlugin.test.native.js.map +1 -0
- package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +11 -5
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +20 -10
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.cjs +10 -2
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js +14 -2
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
- package/dist/esm/Root.mjs +1 -1
- package/dist/esm/Root.mjs.map +1 -1
- package/dist/esm/Root.native.js +1 -1
- package/dist/esm/Root.native.js.map +1 -1
- package/dist/esm/cli/build.mjs +9 -17
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +8 -16
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/createApp.mjs +12 -35
- package/dist/esm/createApp.mjs.map +1 -1
- package/dist/esm/createHandleRequest.mjs +4 -2
- package/dist/esm/createHandleRequest.mjs.map +1 -1
- package/dist/esm/createHandleRequest.native.js +4 -2
- package/dist/esm/createHandleRequest.native.js.map +1 -1
- package/dist/esm/fallbackViews/Sitemap.mjs +110 -53
- package/dist/esm/fallbackViews/Sitemap.mjs.map +1 -1
- package/dist/esm/fallbackViews/Sitemap.native.js.map +1 -1
- package/dist/esm/fallbackViews/Unmatched.mjs +89 -34
- package/dist/esm/fallbackViews/Unmatched.mjs.map +1 -1
- package/dist/esm/fallbackViews/Unmatched.native.js.map +1 -1
- package/dist/esm/fork/NavigationContainer.mjs +6 -28
- package/dist/esm/fork/NavigationContainer.mjs.map +1 -1
- package/dist/esm/fork/NavigationContainer.native.js +5 -27
- package/dist/esm/fork/NavigationContainer.native.js.map +1 -1
- package/dist/esm/fork/localeDirection.mjs +5 -0
- package/dist/esm/fork/localeDirection.mjs.map +1 -0
- package/dist/esm/fork/localeDirection.native.js +6 -0
- package/dist/esm/fork/localeDirection.native.js.map +1 -0
- package/dist/esm/fork/theme.mjs +45 -0
- package/dist/esm/fork/theme.mjs.map +1 -0
- package/dist/esm/fork/theme.native.js +3 -0
- package/dist/esm/fork/theme.native.js.map +1 -0
- package/dist/esm/headless/Presentations.mjs +25 -0
- package/dist/esm/headless/Presentations.mjs.map +1 -0
- package/dist/esm/headless/Presentations.native.js +28 -0
- package/dist/esm/headless/Presentations.native.js.map +1 -0
- package/dist/esm/headless/children.mjs +16 -0
- package/dist/esm/headless/children.mjs.map +1 -0
- package/dist/esm/headless/children.native.js +16 -0
- package/dist/esm/headless/children.native.js.map +1 -0
- package/dist/esm/headless/devHeadlessNote.mjs +9 -0
- package/dist/esm/headless/devHeadlessNote.mjs.map +1 -0
- package/dist/esm/headless/devHeadlessNote.native.js +9 -0
- package/dist/esm/headless/devHeadlessNote.native.js.map +1 -0
- package/dist/esm/headless/keepMounted.mjs +32 -0
- package/dist/esm/headless/keepMounted.mjs.map +1 -0
- package/dist/esm/headless/keepMounted.native.js +36 -0
- package/dist/esm/headless/keepMounted.native.js.map +1 -0
- package/dist/esm/headless/types.mjs +2 -0
- package/dist/esm/headless/types.mjs.map +1 -0
- package/dist/esm/headless/types.native.js +2 -0
- package/dist/esm/headless/types.native.js.map +1 -0
- package/dist/esm/headless/useDrawer.mjs +57 -0
- package/dist/esm/headless/useDrawer.mjs.map +1 -0
- package/dist/esm/headless/useDrawer.native.js +67 -0
- package/dist/esm/headless/useDrawer.native.js.map +1 -0
- package/dist/esm/headless/useStack.mjs +49 -0
- package/dist/esm/headless/useStack.mjs.map +1 -0
- package/dist/esm/headless/useStack.native.js +51 -0
- package/dist/esm/headless/useStack.native.js.map +1 -0
- package/dist/esm/headless/useTabs.mjs +37 -0
- package/dist/esm/headless/useTabs.mjs.map +1 -0
- package/dist/esm/headless/useTabs.native.js +38 -0
- package/dist/esm/headless/useTabs.native.js.map +1 -0
- package/dist/esm/index.js +5 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +5 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +5 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/layouts/Drawer.mjs +69 -29
- package/dist/esm/layouts/Drawer.mjs.map +1 -1
- package/dist/esm/layouts/Drawer.native.js +2 -26
- package/dist/esm/layouts/Drawer.native.js.map +1 -1
- package/dist/esm/layouts/Stack.mjs +10 -14
- package/dist/esm/layouts/Stack.mjs.map +1 -1
- package/dist/esm/layouts/Stack.native.js +12 -14
- package/dist/esm/layouts/Stack.native.js.map +1 -1
- package/dist/esm/layouts/Tabs.mjs +101 -74
- package/dist/esm/layouts/Tabs.mjs.map +1 -1
- package/dist/esm/layouts/Tabs.native.js +2 -14
- package/dist/esm/layouts/Tabs.native.js.map +1 -1
- package/dist/esm/layouts/stack-navigator.mjs +8 -1
- package/dist/esm/layouts/stack-navigator.mjs.map +1 -1
- package/dist/esm/layouts/stack-navigator.native.js +4 -1
- package/dist/esm/layouts/stack-navigator.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderBackButton.mjs +4 -0
- package/dist/esm/layouts/stack-utils/StackHeaderBackButton.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderBackButton.native.js +4 -0
- package/dist/esm/layouts/stack-utils/StackHeaderBackButton.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderComponent.mjs +7 -3
- package/dist/esm/layouts/stack-utils/StackHeaderComponent.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderComponent.native.js +7 -3
- package/dist/esm/layouts/stack-utils/StackHeaderComponent.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderLeft.mjs +4 -0
- package/dist/esm/layouts/stack-utils/StackHeaderLeft.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderLeft.native.js +4 -0
- package/dist/esm/layouts/stack-utils/StackHeaderLeft.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderRight.mjs +4 -0
- package/dist/esm/layouts/stack-utils/StackHeaderRight.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderRight.native.js +4 -0
- package/dist/esm/layouts/stack-utils/StackHeaderRight.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderSearchBar.mjs +4 -0
- package/dist/esm/layouts/stack-utils/StackHeaderSearchBar.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderSearchBar.native.js +4 -0
- package/dist/esm/layouts/stack-utils/StackHeaderSearchBar.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderTitle.mjs +9 -5
- package/dist/esm/layouts/stack-utils/StackHeaderTitle.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderTitle.native.js +9 -5
- package/dist/esm/layouts/stack-utils/StackHeaderTitle.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/StackScreen.mjs +10 -23
- package/dist/esm/layouts/stack-utils/StackScreen.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/StackScreen.native.js +23 -29
- package/dist/esm/layouts/stack-utils/StackScreen.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/__tests__/composition.test.mjs +12 -7
- package/dist/esm/layouts/stack-utils/__tests__/composition.test.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/__tests__/composition.test.native.js +16 -7
- package/dist/esm/layouts/stack-utils/__tests__/composition.test.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/index.mjs +2 -0
- package/dist/esm/layouts/stack-utils/index.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/index.native.js +2 -0
- package/dist/esm/layouts/stack-utils/index.native.js.map +1 -1
- package/dist/esm/layouts/withLayoutContext.mjs +2 -2
- package/dist/esm/layouts/withLayoutContext.mjs.map +1 -1
- package/dist/esm/layouts/withLayoutContext.native.js +2 -2
- package/dist/esm/layouts/withLayoutContext.native.js.map +1 -1
- package/dist/esm/link/Link.mjs +57 -68
- package/dist/esm/link/Link.mjs.map +1 -1
- package/dist/esm/link/useLinkTo.mjs +4 -19
- package/dist/esm/link/useLinkTo.mjs.map +1 -1
- package/dist/esm/link/useLinkTo.native.js +2 -25
- package/dist/esm/link/useLinkTo.native.js.map +1 -1
- package/dist/esm/metro-config/withOne.test.mjs +2 -2
- package/dist/esm/metro-config/withOne.test.mjs.map +1 -1
- package/dist/esm/metro-config/withOne.test.native.js +2 -2
- package/dist/esm/metro-config/withOne.test.native.js.map +1 -1
- package/dist/esm/router/getRouteArtifactPath.test.mjs.map +1 -1
- package/dist/esm/router/getRouteArtifactPath.test.native.js.map +1 -1
- package/dist/esm/router/router.mjs +2 -2
- package/dist/esm/router/router.mjs.map +1 -1
- package/dist/esm/router/router.native.js +2 -2
- package/dist/esm/router/router.native.js.map +1 -1
- package/dist/esm/router/useScreens.mjs +30 -71
- package/dist/esm/router/useScreens.mjs.map +1 -1
- package/dist/esm/router/useScreens.native.js +13 -69
- package/dist/esm/router/useScreens.native.js.map +1 -1
- package/dist/esm/router/useScreens.test.mjs +1 -1
- package/dist/esm/router/useScreens.test.mjs.map +1 -1
- package/dist/esm/router/web/WebStackNavigator.mjs +5 -4
- package/dist/esm/router/web/WebStackNavigator.mjs.map +1 -1
- package/dist/esm/router/web/WebStackNavigator.native.js +5 -4
- package/dist/esm/router/web/WebStackNavigator.native.js.map +1 -1
- package/dist/esm/router/web/WebStackView.mjs +99 -131
- package/dist/esm/router/web/WebStackView.mjs.map +1 -1
- package/dist/esm/router/web/WebStackView.native.js +107 -175
- package/dist/esm/router/web/WebStackView.native.js.map +1 -1
- package/dist/esm/router/web/stackStateUtils.mjs.map +1 -1
- package/dist/esm/router/web/stackStateUtils.native.js.map +1 -1
- package/dist/esm/screensFeatureFlags.mjs +1 -16
- package/dist/esm/screensFeatureFlags.mjs.map +1 -1
- package/dist/esm/screensFeatureFlags.native.js.map +1 -1
- package/dist/esm/typed-routes/generateRouteTypes.mjs +3 -10
- package/dist/esm/typed-routes/generateRouteTypes.mjs.map +1 -1
- package/dist/esm/typed-routes/generateRouteTypes.native.js +3 -10
- package/dist/esm/typed-routes/generateRouteTypes.native.js.map +1 -1
- package/dist/esm/ui/Slot.mjs +1 -22
- package/dist/esm/ui/Slot.mjs.map +1 -1
- package/dist/esm/ui/Slot.native.js.map +1 -1
- package/dist/esm/ui/TabList.mjs +3 -15
- package/dist/esm/ui/TabList.mjs.map +1 -1
- package/dist/esm/ui/TabList.native.js.map +1 -1
- package/dist/esm/ui/TabSlot.mjs +12 -44
- package/dist/esm/ui/TabSlot.mjs.map +1 -1
- package/dist/esm/ui/TabSlot.native.js.map +1 -1
- package/dist/esm/ui/TabTrigger.mjs +25 -129
- package/dist/esm/ui/TabTrigger.mjs.map +1 -1
- package/dist/esm/ui/TabTrigger.native.js +13 -114
- package/dist/esm/ui/TabTrigger.native.js.map +1 -1
- package/dist/esm/ui/Tabs.mjs +7 -145
- package/dist/esm/ui/Tabs.mjs.map +1 -1
- package/dist/esm/ui/Tabs.native.js +5 -143
- package/dist/esm/ui/Tabs.native.js.map +1 -1
- package/dist/esm/ui/Tabs.shared.mjs +134 -0
- package/dist/esm/ui/Tabs.shared.mjs.map +1 -0
- package/dist/esm/ui/Tabs.shared.native.js +145 -0
- package/dist/esm/ui/Tabs.shared.native.js.map +1 -0
- package/dist/esm/ui/useTabTrigger.mjs +96 -0
- package/dist/esm/ui/useTabTrigger.mjs.map +1 -0
- package/dist/esm/ui/useTabTrigger.native.js +96 -0
- package/dist/esm/ui/useTabTrigger.native.js.map +1 -0
- package/dist/esm/useBlocker.mjs +55 -93
- package/dist/esm/useBlocker.mjs.map +1 -1
- package/dist/esm/useLoader.native.js +0 -18
- package/dist/esm/useLoader.native.js.map +1 -1
- package/dist/esm/utils/platform.mjs +3 -0
- package/dist/esm/utils/platform.mjs.map +1 -0
- package/dist/esm/utils/platform.native.js +4 -0
- package/dist/esm/utils/platform.native.js.map +1 -0
- package/dist/esm/utils/routeIndex.mjs +43 -0
- package/dist/esm/utils/routeIndex.mjs.map +1 -0
- package/dist/esm/utils/routeIndex.native.js +46 -0
- package/dist/esm/utils/routeIndex.native.js.map +1 -0
- package/dist/esm/utils/routeIndex.test.mjs +52 -0
- package/dist/esm/utils/routeIndex.test.mjs.map +1 -0
- package/dist/esm/utils/routeIndex.test.native.js +52 -0
- package/dist/esm/utils/routeIndex.test.native.js.map +1 -0
- package/dist/esm/utils/style.mjs +20 -1
- package/dist/esm/utils/style.mjs.map +1 -1
- package/dist/esm/utils/style.native.js +39 -1
- package/dist/esm/utils/style.native.js.map +1 -1
- package/dist/esm/views/LoadProgressBar.mjs +45 -20
- package/dist/esm/views/LoadProgressBar.mjs.map +1 -1
- package/dist/esm/views/LoadProgressBar.native.js.map +1 -1
- package/dist/esm/views/Protected.mjs +4 -0
- package/dist/esm/views/Protected.mjs.map +1 -1
- package/dist/esm/views/Protected.native.js +4 -0
- package/dist/esm/views/Protected.native.js.map +1 -1
- package/dist/esm/views/RootErrorBoundary.mjs +106 -147
- package/dist/esm/views/RootErrorBoundary.mjs.map +1 -1
- package/dist/esm/views/RootErrorBoundary.native.js +37 -145
- package/dist/esm/views/RootErrorBoundary.native.js.map +1 -1
- package/dist/esm/views/RouteErrorView.mjs +83 -0
- package/dist/esm/views/RouteErrorView.mjs.map +1 -0
- package/dist/esm/views/RouteErrorView.native.js +82 -0
- package/dist/esm/views/RouteErrorView.native.js.map +1 -0
- package/dist/esm/views/Screen.mjs +4 -0
- package/dist/esm/views/Screen.mjs.map +1 -1
- package/dist/esm/views/Screen.native.js +4 -0
- package/dist/esm/views/Screen.native.js.map +1 -1
- package/dist/esm/vite/getManifest.mjs +4 -9
- package/dist/esm/vite/getManifest.mjs.map +1 -1
- package/dist/esm/vite/getManifest.native.js +4 -9
- package/dist/esm/vite/getManifest.native.js.map +1 -1
- package/dist/esm/vite/one.mjs +12 -46
- package/dist/esm/vite/one.mjs.map +1 -1
- package/dist/esm/vite/one.native.js +23 -59
- package/dist/esm/vite/one.native.js.map +1 -1
- package/dist/esm/vite/plugins/bundledDevPlugin.mjs +94 -0
- package/dist/esm/vite/plugins/bundledDevPlugin.mjs.map +1 -0
- package/dist/esm/vite/plugins/bundledDevPlugin.native.js +115 -0
- package/dist/esm/vite/plugins/bundledDevPlugin.native.js.map +1 -0
- package/dist/esm/vite/plugins/devtoolsPlugin.mjs +4 -0
- package/dist/esm/vite/plugins/devtoolsPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/devtoolsPlugin.native.js +5 -0
- package/dist/esm/vite/plugins/devtoolsPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +15 -6
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +15 -5
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.mjs +12 -2
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.native.js +12 -2
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.mjs +10 -6
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.native.js +11 -7
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/routeModuleHmrPlugin.mjs +43 -0
- package/dist/esm/vite/plugins/routeModuleHmrPlugin.mjs.map +1 -0
- package/dist/esm/vite/plugins/routeModuleHmrPlugin.native.js +45 -0
- package/dist/esm/vite/plugins/routeModuleHmrPlugin.native.js.map +1 -0
- package/dist/esm/vite/plugins/routeModuleHmrPlugin.test.mjs +75 -0
- package/dist/esm/vite/plugins/routeModuleHmrPlugin.test.mjs.map +1 -0
- package/dist/esm/vite/plugins/routeModuleHmrPlugin.test.native.js +81 -0
- package/dist/esm/vite/plugins/routeModuleHmrPlugin.test.native.js.map +1 -0
- package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +11 -5
- package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +20 -10
- package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs +10 -2
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js +14 -2
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
- package/package.json +27 -28
- package/src/Root.tsx +2 -6
- package/src/cli/build.ts +25 -37
- package/src/createApp.tsx +15 -42
- package/src/createHandleRequest.ts +6 -2
- package/src/fallbackViews/Sitemap.web.tsx +149 -0
- package/src/fallbackViews/Unmatched.web.tsx +91 -0
- package/src/fork/NavigationContainer.tsx +12 -39
- package/src/fork/localeDirection.native.ts +6 -0
- package/src/fork/localeDirection.ts +11 -0
- package/src/fork/theme.native.ts +1 -0
- package/src/fork/theme.ts +41 -0
- package/src/headless/Presentations.tsx +37 -0
- package/src/headless/children.ts +25 -0
- package/src/headless/devHeadlessNote.ts +13 -0
- package/src/headless/keepMounted.tsx +46 -0
- package/src/headless/types.ts +72 -0
- package/src/headless/useDrawer.tsx +88 -0
- package/src/headless/useStack.ts +74 -0
- package/src/headless/useTabs.ts +40 -0
- package/src/index.ts +14 -18
- package/src/layouts/Drawer.tsx +4 -35
- package/src/layouts/Drawer.web.tsx +117 -0
- package/src/layouts/Stack.tsx +54 -62
- package/src/layouts/Tabs.tsx +6 -32
- package/src/layouts/Tabs.web.tsx +151 -0
- package/src/layouts/stack-navigator.ts +6 -2
- package/src/layouts/stack-navigator.web.ts +8 -0
- package/src/layouts/stack-utils/StackHeaderBackButton.tsx +4 -0
- package/src/layouts/stack-utils/StackHeaderComponent.tsx +7 -3
- package/src/layouts/stack-utils/StackHeaderLeft.tsx +4 -0
- package/src/layouts/stack-utils/StackHeaderRight.tsx +4 -0
- package/src/layouts/stack-utils/StackHeaderSearchBar.tsx +4 -0
- package/src/layouts/stack-utils/StackHeaderTitle.tsx +9 -5
- package/src/layouts/stack-utils/StackScreen.tsx +31 -36
- package/src/layouts/stack-utils/__tests__/composition.test.tsx +12 -11
- package/src/layouts/stack-utils/index.tsx +2 -0
- package/src/layouts/withLayoutContext.tsx +5 -2
- package/src/link/Link.web.tsx +84 -0
- package/src/link/useLinkTo.tsx +2 -2
- package/src/metro-config/withOne.test.ts +5 -4
- package/src/router/getRouteArtifactPath.test.ts +1 -6
- package/src/router/router.ts +2 -2
- package/src/router/useScreens.tsx +31 -71
- package/src/router/web/WebStackNavigator.tsx +22 -20
- package/src/router/web/WebStackView.tsx +148 -188
- package/src/router/web/stackStateUtils.ts +2 -1
- package/src/screensFeatureFlags.native.ts +23 -0
- package/src/screensFeatureFlags.ts +3 -23
- package/src/typed-routes/generateRouteTypes.ts +4 -10
- package/src/ui/Slot.web.tsx +9 -0
- package/src/ui/TabList.web.tsx +27 -0
- package/src/ui/TabSlot.web.tsx +90 -0
- package/src/ui/TabTrigger.tsx +33 -249
- package/src/ui/TabTrigger.web.tsx +71 -0
- package/src/ui/Tabs.shared.tsx +230 -0
- package/src/ui/Tabs.tsx +5 -295
- package/src/ui/Tabs.web.tsx +40 -0
- package/src/ui/useTabTrigger.ts +182 -0
- package/src/useBlocker.ts +2 -3
- package/src/useLoader.ts +6 -2
- package/src/utils/platform.ts +7 -0
- package/src/utils/platform.web.ts +1 -0
- package/src/utils/routeIndex.test.ts +55 -0
- package/src/utils/routeIndex.ts +59 -0
- package/src/utils/style.ts +22 -1
- package/src/views/LoadProgressBar.web.tsx +135 -0
- package/src/views/Protected.tsx +4 -1
- package/src/views/RootErrorBoundary.tsx +2 -158
- package/src/views/RootErrorBoundary.web.tsx +163 -0
- package/src/views/RouteErrorView.tsx +66 -0
- package/src/views/RouteErrorView.web.tsx +62 -0
- package/src/views/Screen.tsx +3 -0
- package/src/vite/getManifest.ts +4 -6
- package/src/vite/one.ts +13 -59
- package/src/vite/plugins/bundledDevPlugin.ts +119 -0
- package/src/vite/plugins/devtoolsPlugin.ts +19 -0
- package/src/vite/plugins/fileSystemRouterPlugin.test.ts +19 -11
- package/src/vite/plugins/fileSystemRouterPlugin.tsx +31 -6
- package/src/vite/plugins/generateFileSystemRouteTypesPlugin.tsx +22 -11
- package/src/vite/plugins/routeModuleHmrPlugin.test.ts +73 -0
- package/src/vite/plugins/routeModuleHmrPlugin.ts +54 -0
- package/src/vite/plugins/virtualEntryPlugin.test.ts +10 -1
- package/src/vite/plugins/virtualEntryPlugin.ts +37 -9
- package/src/vite/types.ts +11 -0
- package/types/Root.d.ts +1 -1
- package/types/Root.d.ts.map +1 -1
- package/types/cli/build.d.ts.map +1 -1
- package/types/createApp.d.ts.map +1 -1
- package/types/createHandleRequest.d.ts +2 -1
- package/types/createHandleRequest.d.ts.map +1 -1
- package/types/fallbackViews/Sitemap.web.d.ts +4 -0
- package/types/fallbackViews/Sitemap.web.d.ts.map +1 -0
- package/types/fallbackViews/Unmatched.web.d.ts +2 -0
- package/types/fallbackViews/Unmatched.web.d.ts.map +1 -0
- package/types/fork/NavigationContainer.d.ts.map +1 -1
- package/types/fork/localeDirection.d.ts +9 -0
- package/types/fork/localeDirection.d.ts.map +1 -0
- package/types/fork/localeDirection.native.d.ts +3 -0
- package/types/fork/localeDirection.native.d.ts.map +1 -0
- package/types/fork/theme.d.ts +4 -0
- package/types/fork/theme.d.ts.map +1 -0
- package/types/fork/theme.native.d.ts +2 -0
- package/types/fork/theme.native.d.ts.map +1 -0
- package/types/fork/useLinking.native.d.ts +4 -4
- package/types/headless/Presentations.d.ts +13 -0
- package/types/headless/Presentations.d.ts.map +1 -0
- package/types/headless/children.d.ts +5 -0
- package/types/headless/children.d.ts.map +1 -0
- package/types/headless/devHeadlessNote.d.ts +2 -0
- package/types/headless/devHeadlessNote.d.ts.map +1 -0
- package/types/headless/keepMounted.d.ts +9 -0
- package/types/headless/keepMounted.d.ts.map +1 -0
- package/types/headless/types.d.ts +59 -0
- package/types/headless/types.d.ts.map +1 -0
- package/types/headless/useDrawer.d.ts +19 -0
- package/types/headless/useDrawer.d.ts.map +1 -0
- package/types/headless/useStack.d.ts +16 -0
- package/types/headless/useStack.d.ts.map +1 -0
- package/types/headless/useTabs.d.ts +3 -0
- package/types/headless/useTabs.d.ts.map +1 -0
- package/types/index.d.ts +6 -2
- package/types/index.d.ts.map +1 -1
- package/types/layouts/Drawer.d.ts +5 -15
- package/types/layouts/Drawer.d.ts.map +1 -1
- package/types/layouts/Drawer.web.d.ts +5 -0
- package/types/layouts/Drawer.web.d.ts.map +1 -0
- package/types/layouts/Stack.d.ts +8 -17
- package/types/layouts/Stack.d.ts.map +1 -1
- package/types/layouts/Tabs.d.ts +5 -15
- package/types/layouts/Tabs.d.ts.map +1 -1
- package/types/layouts/Tabs.web.d.ts +20 -0
- package/types/layouts/Tabs.web.d.ts.map +1 -0
- package/types/layouts/stack-navigator.d.ts +3 -2
- package/types/layouts/stack-navigator.d.ts.map +1 -1
- package/types/layouts/stack-navigator.web.d.ts +6 -0
- package/types/layouts/stack-navigator.web.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackHeaderBackButton.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackHeaderComponent.d.ts +1 -1
- package/types/layouts/stack-utils/StackHeaderComponent.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackHeaderLeft.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackHeaderRight.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackHeaderSearchBar.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackHeaderTitle.d.ts +1 -1
- package/types/layouts/stack-utils/StackHeaderTitle.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackScreen.d.ts +5 -12
- package/types/layouts/stack-utils/StackScreen.d.ts.map +1 -1
- package/types/layouts/stack-utils/index.d.ts +1 -0
- package/types/layouts/stack-utils/index.d.ts.map +1 -1
- package/types/layouts/withLayoutContext.d.ts.map +1 -1
- package/types/link/Link.web.d.ts +3 -0
- package/types/link/Link.web.d.ts.map +1 -0
- package/types/link/useLinkTo.d.ts +1 -1
- package/types/link/useLinkTo.d.ts.map +1 -1
- package/types/router/router.d.ts.map +1 -1
- package/types/router/useScreens.d.ts.map +1 -1
- package/types/router/web/WebStackNavigator.d.ts.map +1 -1
- package/types/router/web/WebStackView.d.ts +9 -25
- package/types/router/web/WebStackView.d.ts.map +1 -1
- package/types/router/web/stackStateUtils.d.ts +1 -1
- package/types/router/web/stackStateUtils.d.ts.map +1 -1
- package/types/screensFeatureFlags.d.ts.map +1 -1
- package/types/screensFeatureFlags.native.d.ts +2 -0
- package/types/screensFeatureFlags.native.d.ts.map +1 -0
- package/types/typed-routes/generateRouteTypes.d.ts +1 -1
- package/types/typed-routes/generateRouteTypes.d.ts.map +1 -1
- package/types/ui/Slot.web.d.ts +5 -0
- package/types/ui/Slot.web.d.ts.map +1 -0
- package/types/ui/TabContext.d.ts +7 -7
- package/types/ui/TabList.web.d.ts +11 -0
- package/types/ui/TabList.web.d.ts.map +1 -0
- package/types/ui/TabRouter.d.ts +5 -5
- package/types/ui/TabRouter.d.ts.map +1 -1
- package/types/ui/TabSlot.web.d.ts +24 -0
- package/types/ui/TabSlot.web.d.ts.map +1 -0
- package/types/ui/TabTrigger.d.ts +4 -75
- package/types/ui/TabTrigger.d.ts.map +1 -1
- package/types/ui/TabTrigger.web.d.ts +11 -0
- package/types/ui/TabTrigger.web.d.ts.map +1 -0
- package/types/ui/Tabs.d.ts +2 -249
- package/types/ui/Tabs.d.ts.map +1 -1
- package/types/ui/Tabs.shared.d.ts +201 -0
- package/types/ui/Tabs.shared.d.ts.map +1 -0
- package/types/ui/Tabs.web.d.ts +10 -0
- package/types/ui/Tabs.web.d.ts.map +1 -0
- package/types/ui/useTabTrigger.d.ts +49 -0
- package/types/ui/useTabTrigger.d.ts.map +1 -0
- package/types/useBlocker.d.ts.map +1 -1
- package/types/useLoader.d.ts.map +1 -1
- package/types/utils/platform.d.ts +6 -0
- package/types/utils/platform.d.ts.map +1 -0
- package/types/utils/platform.web.d.ts +2 -0
- package/types/utils/platform.web.d.ts.map +1 -0
- package/types/utils/routeIndex.d.ts +10 -0
- package/types/utils/routeIndex.d.ts.map +1 -0
- package/types/utils/routeIndex.test.d.ts +2 -0
- package/types/utils/routeIndex.test.d.ts.map +1 -0
- package/types/utils/style.d.ts +6 -1
- package/types/utils/style.d.ts.map +1 -1
- package/types/views/LoadProgressBar.web.d.ts +21 -0
- package/types/views/LoadProgressBar.web.d.ts.map +1 -0
- package/types/views/Protected.d.ts.map +1 -1
- package/types/views/RootErrorBoundary.d.ts.map +1 -1
- package/types/views/RootErrorBoundary.web.d.ts +20 -0
- package/types/views/RootErrorBoundary.web.d.ts.map +1 -0
- package/types/views/RouteErrorView.d.ts +9 -0
- package/types/views/RouteErrorView.d.ts.map +1 -0
- package/types/views/RouteErrorView.web.d.ts +3 -0
- package/types/views/RouteErrorView.web.d.ts.map +1 -0
- package/types/views/Screen.d.ts.map +1 -1
- package/types/vite/getManifest.d.ts +2 -1
- package/types/vite/getManifest.d.ts.map +1 -1
- package/types/vite/one.d.ts.map +1 -1
- package/types/vite/plugins/bundledDevPlugin.d.ts +3 -0
- package/types/vite/plugins/bundledDevPlugin.d.ts.map +1 -0
- package/types/vite/plugins/devtoolsPlugin.d.ts.map +1 -1
- package/types/vite/plugins/fileSystemRouterPlugin.d.ts +2 -1
- package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
- package/types/vite/plugins/generateFileSystemRouteTypesPlugin.d.ts +2 -1
- package/types/vite/plugins/generateFileSystemRouteTypesPlugin.d.ts.map +1 -1
- package/types/vite/plugins/routeModuleHmrPlugin.d.ts +3 -0
- package/types/vite/plugins/routeModuleHmrPlugin.d.ts.map +1 -0
- package/types/vite/plugins/routeModuleHmrPlugin.test.d.ts +2 -0
- package/types/vite/plugins/routeModuleHmrPlugin.test.d.ts.map +1 -0
- package/types/vite/plugins/virtualEntryPlugin.d.ts +2 -0
- package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
- package/types/vite/types.d.ts +10 -0
- package/types/vite/types.d.ts.map +1 -1
- package/vendor/react-dom/package.json +1 -1
- package/dist/cjs/fork/SSRNavigationContainer.cjs +0 -149
- package/dist/cjs/fork/SSRNavigationContainer.native.js +0 -199
- package/dist/cjs/fork/SSRNavigationContainer.native.js.map +0 -1
- package/dist/cjs/router/renderingRegistry.native.js.map +0 -1
- package/dist/cjs/router/web/ScreenRenderContext.native.js.map +0 -1
- package/dist/cjs/router/web/__tests__/WebStackView.runtime.test.cjs +0 -295
- package/dist/cjs/router/web/__tests__/WebStackView.runtime.test.native.js +0 -335
- package/dist/cjs/router/web/__tests__/WebStackView.runtime.test.native.js.map +0 -1
- package/dist/cjs/router/web/__tests__/WebStackView.test.cjs +0 -464
- package/dist/cjs/router/web/__tests__/WebStackView.test.native.js +0 -515
- package/dist/cjs/router/web/__tests__/WebStackView.test.native.js.map +0 -1
- package/dist/esm/fork/SSRNavigationContainer.mjs +0 -124
- package/dist/esm/fork/SSRNavigationContainer.mjs.map +0 -1
- package/dist/esm/fork/SSRNavigationContainer.native.js +0 -160
- package/dist/esm/fork/SSRNavigationContainer.native.js.map +0 -1
- package/dist/esm/router/renderingRegistry.mjs +0 -26
- package/dist/esm/router/renderingRegistry.mjs.map +0 -1
- package/dist/esm/router/renderingRegistry.native.js +0 -26
- package/dist/esm/router/renderingRegistry.native.js.map +0 -1
- package/dist/esm/router/web/ScreenRenderContext.mjs +0 -10
- package/dist/esm/router/web/ScreenRenderContext.mjs.map +0 -1
- package/dist/esm/router/web/ScreenRenderContext.native.js +0 -10
- package/dist/esm/router/web/ScreenRenderContext.native.js.map +0 -1
- package/dist/esm/router/web/__tests__/WebStackView.runtime.test.mjs +0 -272
- package/dist/esm/router/web/__tests__/WebStackView.runtime.test.mjs.map +0 -1
- package/dist/esm/router/web/__tests__/WebStackView.runtime.test.native.js +0 -309
- package/dist/esm/router/web/__tests__/WebStackView.runtime.test.native.js.map +0 -1
- package/dist/esm/router/web/__tests__/WebStackView.test.mjs +0 -465
- package/dist/esm/router/web/__tests__/WebStackView.test.mjs.map +0 -1
- package/dist/esm/router/web/__tests__/WebStackView.test.native.js +0 -513
- package/dist/esm/router/web/__tests__/WebStackView.test.native.js.map +0 -1
- package/src/fork/SSRNavigationContainer.tsx +0 -148
- package/src/router/renderingRegistry.ts +0 -109
- package/src/router/web/ScreenRenderContext.tsx +0 -61
- package/src/router/web/__tests__/WebStackView.runtime.test.tsx +0 -309
- package/src/router/web/__tests__/WebStackView.test.tsx +0 -444
- package/types/fork/SSRNavigationContainer.d.ts +0 -16
- package/types/fork/SSRNavigationContainer.d.ts.map +0 -1
- package/types/router/renderingRegistry.d.ts +0 -90
- package/types/router/renderingRegistry.d.ts.map +0 -1
- package/types/router/web/ScreenRenderContext.d.ts +0 -46
- package/types/router/web/ScreenRenderContext.d.ts.map +0 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import fs from 'node:fs'
|
|
2
|
+
import path from 'node:path'
|
|
3
|
+
import type { Plugin } from 'vite'
|
|
4
|
+
import { virtualEntryId } from './virtualEntryConstants'
|
|
5
|
+
|
|
6
|
+
// Vite 8.1 experimental bundled dev (FullBundleDevEnvironment): a rolldown-powered
|
|
7
|
+
// single-bundle web client. This plugin wires up the pieces One needs to run under
|
|
8
|
+
// it. Enable with `one({ web: { experimentalBundledDev: true } })`. Only active in
|
|
9
|
+
// dev (serve); a no-op for builds and for non-web environments.
|
|
10
|
+
//
|
|
11
|
+
// Companion changes live where they're structurally required:
|
|
12
|
+
// - virtualEntryPlugin: installs the react-refresh preamble into the bundled
|
|
13
|
+
// client entry (the separate /@one/dev.js path can't, since /@vite/client isn't
|
|
14
|
+
// a standalone module in bundled mode).
|
|
15
|
+
// - fileSystemRouterPlugin: serves the bundled entry url and drops /@vite/client
|
|
16
|
+
// from preloads.
|
|
17
|
+
// - devtoolsPlugin: stubs /@vite/client + /@react-refresh imports in /@one/dev.js.
|
|
18
|
+
|
|
19
|
+
const MIME: Record<string, string> = {
|
|
20
|
+
png: 'image/png',
|
|
21
|
+
jpg: 'image/jpeg',
|
|
22
|
+
jpeg: 'image/jpeg',
|
|
23
|
+
gif: 'image/gif',
|
|
24
|
+
webp: 'image/webp',
|
|
25
|
+
avif: 'image/avif',
|
|
26
|
+
bmp: 'image/bmp',
|
|
27
|
+
ico: 'image/x-icon',
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// rolldown's native asset handling drops default-import asset specifiers
|
|
31
|
+
// (`import logo from './logo.png'`) coming from raw-bundled node_modules deps under
|
|
32
|
+
// One's client env — the binding is elided while its usage is kept, crashing with
|
|
33
|
+
// "X is not defined" (e.g. @react-navigation/elements' icon Assets). transform() DOES
|
|
34
|
+
// run in the FullBundleDev pipeline, so rewrite those imports to inline data-uris.
|
|
35
|
+
//
|
|
36
|
+
// The same data-uri must be produced on the SERVER too: SSR otherwise emits the
|
|
37
|
+
// original asset URL (e.g. `<img src="/features/.../mj.jpg">`), which both 404s under
|
|
38
|
+
// FullBundleDev and diverges from the client's inlined data-uri → React hydration
|
|
39
|
+
// mismatch. So the inliner runs on client (rolldown plugin) and ssr (top-level
|
|
40
|
+
// transform) alike — see bundledDevPlugin().
|
|
41
|
+
function inlineAssetImports(
|
|
42
|
+
code: string,
|
|
43
|
+
id: string
|
|
44
|
+
): { code: string; map: null } | null {
|
|
45
|
+
if (!/\.(png|jpe?g|gif|webp|avif|bmp|ico)/.test(code)) return null
|
|
46
|
+
const importRe =
|
|
47
|
+
/import\s+(\w+)\s+from\s*['"]([^'"?]+\.(?:png|jpe?g|gif|webp|avif|bmp|ico))['"]\s*;?/g
|
|
48
|
+
const base = id.split('?')[0]
|
|
49
|
+
let result = code
|
|
50
|
+
let changed = false
|
|
51
|
+
let m: RegExpExecArray | null
|
|
52
|
+
const edits: { full: string; name: string; uri: string }[] = []
|
|
53
|
+
while ((m = importRe.exec(code))) {
|
|
54
|
+
const [full, name, spec] = m
|
|
55
|
+
const abs = spec.startsWith('.') ? path.resolve(path.dirname(base), spec) : null
|
|
56
|
+
if (!abs || !fs.existsSync(abs)) continue
|
|
57
|
+
const ext = path.extname(abs).slice(1).toLowerCase()
|
|
58
|
+
const uri = `data:${MIME[ext] || 'application/octet-stream'};base64,${fs.readFileSync(abs).toString('base64')}`
|
|
59
|
+
edits.push({ full, name, uri })
|
|
60
|
+
}
|
|
61
|
+
for (const e of edits) {
|
|
62
|
+
result = result.replace(e.full, `const ${e.name} = ${JSON.stringify(e.uri)};`)
|
|
63
|
+
changed = true
|
|
64
|
+
}
|
|
65
|
+
return changed ? { code: result, map: null } : null
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function webBundledAssetPlugin() {
|
|
69
|
+
return {
|
|
70
|
+
name: 'one:web-bundled-asset',
|
|
71
|
+
transform: (code: string, id: string) => inlineAssetImports(code, id),
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function bundledDevPlugin(enabled: boolean): Plugin {
|
|
76
|
+
return {
|
|
77
|
+
name: 'one:bundled-dev',
|
|
78
|
+
|
|
79
|
+
// mirror the client's asset inlining on the server env so SSR emits the same
|
|
80
|
+
// data-uris (the rolldown client plugin above can't reach the ssr pipeline).
|
|
81
|
+
transform(code, id) {
|
|
82
|
+
if (!enabled) return
|
|
83
|
+
const env = (this as any).environment
|
|
84
|
+
if (!env || env.name !== 'ssr' || env.mode !== 'dev') return
|
|
85
|
+
return inlineAssetImports(code, id)
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
config(_userConfig, env) {
|
|
89
|
+
if (!enabled || env.command !== 'serve') return
|
|
90
|
+
|
|
91
|
+
return {
|
|
92
|
+
experimental: { bundledDev: true },
|
|
93
|
+
environments: {
|
|
94
|
+
client: {
|
|
95
|
+
build: {
|
|
96
|
+
rolldownOptions: {
|
|
97
|
+
// bundle the virtual entry so FullBundleDev serves it at
|
|
98
|
+
// /assets/_virtual_one-entry.js
|
|
99
|
+
input: [virtualEntryId],
|
|
100
|
+
plugins: [webBundledAssetPlugin()],
|
|
101
|
+
experimental: {
|
|
102
|
+
// rolldown 1.1.0 defaulted lazyBarrel ON, which breaks One's
|
|
103
|
+
// index.mjs barrel re-exports under FullBundleDev (e.g. `Slot`
|
|
104
|
+
// resolves to undefined). pin it off.
|
|
105
|
+
lazyBarrel: false,
|
|
106
|
+
},
|
|
107
|
+
// react-native packages import native-only exports
|
|
108
|
+
// (codegenNativeComponent, TurboModuleRegistry, …) from react-native
|
|
109
|
+
// → aliased to react-native-web, which doesn't export them. shim as
|
|
110
|
+
// undefined instead of failing the build (matches the dep optimizer).
|
|
111
|
+
shimMissingExports: true,
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -18,6 +18,13 @@ export function createDevtoolsPlugin(options: DevtoolsPluginOptions = {}): Plugi
|
|
|
18
18
|
apply: 'serve', // only in dev
|
|
19
19
|
|
|
20
20
|
configureServer(server) {
|
|
21
|
+
// vite 8.1 bundledDev: /@vite/client and /@react-refresh aren't standalone
|
|
22
|
+
// modules (the HMR client + refresh runtime are bundled into the entry), so
|
|
23
|
+
// dev.mjs's top-level imports of them 404 / fail MIME checks and take the whole
|
|
24
|
+
// devtools script down. stub them: HMR (route/loader/css/cursor) becomes a
|
|
25
|
+
// no-op here and the refresh preamble is installed by the bundled entry instead.
|
|
26
|
+
const isBundledDev = !!(server.config as any).experimental?.bundledDev
|
|
27
|
+
|
|
21
28
|
// serve the devtools script by reading and combining the source files
|
|
22
29
|
server.middlewares.use(async (req, res, next) => {
|
|
23
30
|
if (req.url === DEVTOOLS_VIRTUAL_ID) {
|
|
@@ -31,6 +38,18 @@ export function createDevtoolsPlugin(options: DevtoolsPluginOptions = {}): Plugi
|
|
|
31
38
|
.replace("import './devtools.mjs'", '')
|
|
32
39
|
.replace("import './source-inspector.mjs'", '')
|
|
33
40
|
|
|
41
|
+
if (isBundledDev) {
|
|
42
|
+
code = code
|
|
43
|
+
.replace(
|
|
44
|
+
"import { createHotContext } from '/@vite/client'",
|
|
45
|
+
'const createHotContext = () => ({ on() {}, off() {}, accept() {}, dispose() {}, prune() {}, send() {}, invalidate() {} })'
|
|
46
|
+
)
|
|
47
|
+
.replace(
|
|
48
|
+
"import { injectIntoGlobalHook } from '/@react-refresh'",
|
|
49
|
+
'const injectIntoGlobalHook = () => {}'
|
|
50
|
+
)
|
|
51
|
+
}
|
|
52
|
+
|
|
34
53
|
// only include devtools UI if enabled
|
|
35
54
|
if (includeUI) {
|
|
36
55
|
const devtoolsPath = resolvePath('one/devtools/devtools.mjs')
|
|
@@ -76,12 +76,16 @@ describe('createFileSystemRouterPlugin', () => {
|
|
|
76
76
|
},
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
const { createRouteIndex } = await import('../../utils/routeIndex')
|
|
79
80
|
const { createFileSystemRouterPlugin } = await import('./fileSystemRouterPlugin')
|
|
80
|
-
const plugin = createFileSystemRouterPlugin(
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
const plugin = createFileSystemRouterPlugin(
|
|
82
|
+
{
|
|
83
|
+
router: {
|
|
84
|
+
root: appDir,
|
|
85
|
+
},
|
|
83
86
|
},
|
|
84
|
-
|
|
87
|
+
createRouteIndex({ routerRoot: appDir })
|
|
88
|
+
)
|
|
85
89
|
|
|
86
90
|
let watcherListener:
|
|
87
91
|
| ((event: string, changedPath: string) => void | Promise<void>)
|
|
@@ -130,6 +134,7 @@ describe('createFileSystemRouterPlugin', () => {
|
|
|
130
134
|
writeFileSync(routeFile, 'export default function Index() { return null }\n')
|
|
131
135
|
|
|
132
136
|
const { createServerModuleRunner } = await import('vite')
|
|
137
|
+
const { createRouteIndex } = await import('../../utils/routeIndex')
|
|
133
138
|
const { createFileSystemRouterPlugin } = await import('./fileSystemRouterPlugin')
|
|
134
139
|
const { virtualEntryId } = await import('./virtualEntryConstants')
|
|
135
140
|
|
|
@@ -173,14 +178,17 @@ describe('createFileSystemRouterPlugin', () => {
|
|
|
173
178
|
},
|
|
174
179
|
}
|
|
175
180
|
|
|
176
|
-
const plugin = createFileSystemRouterPlugin(
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
181
|
+
const plugin = createFileSystemRouterPlugin(
|
|
182
|
+
{
|
|
183
|
+
router: {
|
|
184
|
+
root: appDir,
|
|
185
|
+
},
|
|
186
|
+
server: {
|
|
187
|
+
loggingEnabled: false,
|
|
188
|
+
},
|
|
182
189
|
},
|
|
183
|
-
|
|
190
|
+
createRouteIndex({ routerRoot: appDir })
|
|
191
|
+
)
|
|
184
192
|
|
|
185
193
|
const installMiddlewares = (plugin as any).configureServer(server)
|
|
186
194
|
installMiddlewares()
|
|
@@ -15,6 +15,7 @@ import { getRouterRootFromOneOptions } from '../../utils/getRouterRootFromOneOpt
|
|
|
15
15
|
import { isResponse } from '../../utils/isResponse'
|
|
16
16
|
import { isStatusRedirect } from '../../utils/isStatus'
|
|
17
17
|
import { promiseWithResolvers } from '../../utils/promiseWithResolvers'
|
|
18
|
+
import type { RouteIndex } from '../../utils/routeIndex'
|
|
18
19
|
import { isRouteFileWatchEvent } from '../../utils/routeFileWatch'
|
|
19
20
|
import { trackLoaderDependencies } from '../../utils/trackLoaderDependencies'
|
|
20
21
|
import { replaceLoader } from '../../vite/replaceLoader'
|
|
@@ -44,8 +45,14 @@ const routeTypeColors: Record<string, (s: string) => string> = {
|
|
|
44
45
|
// server needs better dep optimization
|
|
45
46
|
const USE_SERVER_ENV = false //!!process.env.USE_SERVER_ENV
|
|
46
47
|
|
|
47
|
-
export function createFileSystemRouterPlugin(
|
|
48
|
-
|
|
48
|
+
export function createFileSystemRouterPlugin(
|
|
49
|
+
options: One.PluginOptions,
|
|
50
|
+
routeIndex: RouteIndex
|
|
51
|
+
): Plugin {
|
|
52
|
+
// under vite 8.1 bundledDev the client entry is bundled and served at a fixed
|
|
53
|
+
// /assets url instead of the unbundled /@id/__x00__virtual url. swapped in
|
|
54
|
+
// configureServer once we can see whether the client env is bundled.
|
|
55
|
+
let preloads = ['/@vite/client', virtalEntryIdClient]
|
|
49
56
|
|
|
50
57
|
let runner: ModuleRunner
|
|
51
58
|
let server: ViteDevServer
|
|
@@ -585,7 +592,11 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
|
|
|
585
592
|
return await runner.import(path.join(routerRoot, route.contextKey))
|
|
586
593
|
},
|
|
587
594
|
},
|
|
588
|
-
{
|
|
595
|
+
{
|
|
596
|
+
routerRoot,
|
|
597
|
+
ignoredRouteFiles: options.router?.ignoredRouteFiles,
|
|
598
|
+
routePaths: routeIndex.getPaths(),
|
|
599
|
+
}
|
|
589
600
|
)
|
|
590
601
|
}
|
|
591
602
|
|
|
@@ -673,6 +684,16 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
|
|
|
673
684
|
configureServer(serverIn) {
|
|
674
685
|
server = serverIn
|
|
675
686
|
|
|
687
|
+
// vite 8.1 bundledDev: the client env bundles the virtual entry and serves
|
|
688
|
+
// it at /assets/_virtual_one-entry.js. the unbundled /@id/__x00__virtual url
|
|
689
|
+
// 404s in this mode, so point preloads (and bootstrap) at the bundled url.
|
|
690
|
+
const clientEnv = server.environments?.client as any
|
|
691
|
+
if (clientEnv?.config?.isBundled || clientEnv?.bundledDev) {
|
|
692
|
+
// bundled mode: the HMR client + refresh runtime are bundled into the
|
|
693
|
+
// entry; /@vite/client doesn't exist as a standalone module (404s).
|
|
694
|
+
preloads = ['/assets/_virtual_one-entry.js']
|
|
695
|
+
}
|
|
696
|
+
|
|
676
697
|
// change this to .server to test using the indepedently scoped env
|
|
677
698
|
runner = createServerModuleRunner(
|
|
678
699
|
USE_SERVER_ENV ? server.environments.server : server.environments.ssr
|
|
@@ -681,7 +702,10 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
|
|
|
681
702
|
const appDir = path.resolve(process.cwd(), getRouterRootFromOneOptions(options))
|
|
682
703
|
|
|
683
704
|
// on change ./app stuff lets reload this to pick up any route changes
|
|
684
|
-
const
|
|
705
|
+
const recreateRequestHandlerDebounced = debounce((changedPath: string) => {
|
|
706
|
+
recreateRequestHandler(changedPath)
|
|
707
|
+
}, 100)
|
|
708
|
+
const fileWatcherChangeListener = (type: string, changedPath: string) => {
|
|
685
709
|
if (
|
|
686
710
|
isRouteFileWatchEvent({
|
|
687
711
|
event: type,
|
|
@@ -689,9 +713,10 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
|
|
|
689
713
|
routerRoot: appDir,
|
|
690
714
|
})
|
|
691
715
|
) {
|
|
692
|
-
|
|
716
|
+
routeIndex.update(type, changedPath)
|
|
717
|
+
return recreateRequestHandlerDebounced(changedPath)
|
|
693
718
|
}
|
|
694
|
-
}
|
|
719
|
+
}
|
|
695
720
|
|
|
696
721
|
server.watcher.addListener('all', fileWatcherChangeListener)
|
|
697
722
|
|
|
@@ -3,10 +3,16 @@ import { debounce } from 'perfect-debounce'
|
|
|
3
3
|
import type { Plugin } from 'vite'
|
|
4
4
|
import { generateRouteTypes } from '../../typed-routes/generateRouteTypes'
|
|
5
5
|
import { getRouterRootFromOneOptions } from '../../utils/getRouterRootFromOneOptions'
|
|
6
|
+
import type { RouteIndex } from '../../utils/routeIndex'
|
|
6
7
|
import { isRouteFileWatchEvent } from '../../utils/routeFileWatch'
|
|
7
8
|
import type { One } from '../types'
|
|
8
9
|
|
|
9
|
-
export function generateFileSystemRouteTypesPlugin(
|
|
10
|
+
export function generateFileSystemRouteTypesPlugin(
|
|
11
|
+
options: One.PluginOptions,
|
|
12
|
+
routeIndex: RouteIndex
|
|
13
|
+
): Plugin {
|
|
14
|
+
const routerRoot = getRouterRootFromOneOptions(options)
|
|
15
|
+
|
|
10
16
|
return {
|
|
11
17
|
name: `one-generate-fs-route-types`,
|
|
12
18
|
enforce: 'post',
|
|
@@ -17,12 +23,20 @@ export function generateFileSystemRouteTypesPlugin(options: One.PluginOptions):
|
|
|
17
23
|
// Generate routes.d.ts inside the app directory to keep it organized
|
|
18
24
|
const outFile = join(appDir, 'routes.d.ts')
|
|
19
25
|
|
|
20
|
-
const routerRoot = getRouterRootFromOneOptions(options)
|
|
21
26
|
const typedRoutesGeneration =
|
|
22
27
|
options.router?.experimental?.typedRoutesGeneration || undefined
|
|
23
28
|
|
|
24
29
|
// on change ./app stuff lets reload this to pick up any route changes
|
|
25
|
-
const
|
|
30
|
+
const generateRouteTypesDebounced = debounce(async () => {
|
|
31
|
+
await generateRouteTypes(
|
|
32
|
+
outFile,
|
|
33
|
+
routerRoot,
|
|
34
|
+
options.router?.ignoredRouteFiles,
|
|
35
|
+
typedRoutesGeneration,
|
|
36
|
+
routeIndex.getPaths()
|
|
37
|
+
)
|
|
38
|
+
}, 100)
|
|
39
|
+
const fileWatcherChangeListener = (type: string, path: string) => {
|
|
26
40
|
if (
|
|
27
41
|
isRouteFileWatchEvent({
|
|
28
42
|
event: type,
|
|
@@ -31,14 +45,10 @@ export function generateFileSystemRouteTypesPlugin(options: One.PluginOptions):
|
|
|
31
45
|
includeChangeEvents: true,
|
|
32
46
|
})
|
|
33
47
|
) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
routerRoot,
|
|
37
|
-
options.router?.ignoredRouteFiles,
|
|
38
|
-
typedRoutesGeneration
|
|
39
|
-
)
|
|
48
|
+
routeIndex.update(type, path)
|
|
49
|
+
return generateRouteTypesDebounced()
|
|
40
50
|
}
|
|
41
|
-
}
|
|
51
|
+
}
|
|
42
52
|
|
|
43
53
|
server.watcher.addListener('all', fileWatcherChangeListener)
|
|
44
54
|
|
|
@@ -49,7 +59,8 @@ export function generateFileSystemRouteTypesPlugin(options: One.PluginOptions):
|
|
|
49
59
|
outFile,
|
|
50
60
|
routerRoot,
|
|
51
61
|
options.router?.ignoredRouteFiles,
|
|
52
|
-
typedRoutesGeneration
|
|
62
|
+
typedRoutesGeneration,
|
|
63
|
+
routeIndex.getPaths()
|
|
53
64
|
)
|
|
54
65
|
}
|
|
55
66
|
},
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest'
|
|
2
|
+
import { createRouteModuleHmrPlugin } from './routeModuleHmrPlugin'
|
|
3
|
+
|
|
4
|
+
function runHotUpdate({
|
|
5
|
+
environment,
|
|
6
|
+
file,
|
|
7
|
+
modules,
|
|
8
|
+
}: {
|
|
9
|
+
environment: 'client' | 'ssr'
|
|
10
|
+
file: string
|
|
11
|
+
modules: Array<{ id?: string; acceptedHmrExports?: Set<string> }>
|
|
12
|
+
}) {
|
|
13
|
+
const plugin = createRouteModuleHmrPlugin('app-sootsim')
|
|
14
|
+
const send = vi.fn()
|
|
15
|
+
const hotUpdate =
|
|
16
|
+
typeof plugin.hotUpdate === 'object' ? plugin.hotUpdate.handler : plugin.hotUpdate
|
|
17
|
+
const result = hotUpdate!.call(
|
|
18
|
+
{ environment: { name: environment } } as never,
|
|
19
|
+
{
|
|
20
|
+
file,
|
|
21
|
+
modules,
|
|
22
|
+
server: {
|
|
23
|
+
config: { root: '/project' },
|
|
24
|
+
hot: { send },
|
|
25
|
+
},
|
|
26
|
+
} as never
|
|
27
|
+
)
|
|
28
|
+
return { result, send }
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
describe(createRouteModuleHmrPlugin, () => {
|
|
32
|
+
it('applies client hmr to the configured router root', () => {
|
|
33
|
+
const routeModule: { id: string; acceptedHmrExports?: Set<string> } = {
|
|
34
|
+
id: '/project/app-sootsim/_layout.tsx?one',
|
|
35
|
+
}
|
|
36
|
+
const otherModule: { id: string; acceptedHmrExports?: Set<string> } = {
|
|
37
|
+
id: '/project/app/index.tsx',
|
|
38
|
+
}
|
|
39
|
+
const { result, send } = runHotUpdate({
|
|
40
|
+
environment: 'client',
|
|
41
|
+
file: '/project/app-sootsim/_layout.tsx',
|
|
42
|
+
modules: [routeModule, otherModule],
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
expect(result).toEqual([routeModule, otherModule])
|
|
46
|
+
expect(routeModule.acceptedHmrExports).toEqual(new Set())
|
|
47
|
+
expect(otherModule.acceptedHmrExports).toBeUndefined()
|
|
48
|
+
expect(send).toHaveBeenCalledWith({
|
|
49
|
+
type: 'custom',
|
|
50
|
+
event: 'one:route-update',
|
|
51
|
+
data: { file: 'app-sootsim/_layout.tsx' },
|
|
52
|
+
})
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
it('suppresses ssr reloads only inside the configured router root', () => {
|
|
56
|
+
const modules = [{ id: '/project/app-sootsim/index.tsx' }]
|
|
57
|
+
|
|
58
|
+
expect(
|
|
59
|
+
runHotUpdate({
|
|
60
|
+
environment: 'ssr',
|
|
61
|
+
file: '/project/app-sootsim/index.tsx',
|
|
62
|
+
modules,
|
|
63
|
+
}).result
|
|
64
|
+
).toEqual([])
|
|
65
|
+
expect(
|
|
66
|
+
runHotUpdate({
|
|
67
|
+
environment: 'ssr',
|
|
68
|
+
file: '/project/app/index.tsx',
|
|
69
|
+
modules,
|
|
70
|
+
}).result
|
|
71
|
+
).toEqual(modules)
|
|
72
|
+
})
|
|
73
|
+
})
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import path from 'node:path'
|
|
2
|
+
import type { Plugin } from 'vite'
|
|
3
|
+
import { isPathInsideDirectory } from '../../utils/routeFileWatch'
|
|
4
|
+
|
|
5
|
+
export function createRouteModuleHmrPlugin(routerRoot: string): Plugin {
|
|
6
|
+
return {
|
|
7
|
+
name: 'route-module-hmr-fix',
|
|
8
|
+
hotUpdate({ server, modules, file }) {
|
|
9
|
+
const absoluteRouterRoot = path.resolve(server.config.root, routerRoot)
|
|
10
|
+
const fileRelativePath = path.relative(server.config.root, file)
|
|
11
|
+
|
|
12
|
+
// for ssr, prevent a full page reload for route files. the module runner
|
|
13
|
+
// picks up the invalidated module on the next request.
|
|
14
|
+
if (
|
|
15
|
+
this.environment?.name === 'ssr' &&
|
|
16
|
+
isPathInsideDirectory(file, absoluteRouterRoot)
|
|
17
|
+
) {
|
|
18
|
+
return []
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let hasRouteUpdate = false
|
|
22
|
+
const result = modules.map((module) => {
|
|
23
|
+
if (!module.id) return module
|
|
24
|
+
|
|
25
|
+
const moduleFile = module.id.split('?')[0]
|
|
26
|
+
if (isPathInsideDirectory(moduleFile, absoluteRouterRoot)) {
|
|
27
|
+
const relativeRoutePath = path.relative(absoluteRouterRoot, moduleFile)
|
|
28
|
+
|
|
29
|
+
// vite forces a full reload when a route is not imported by another
|
|
30
|
+
// module. an empty accepted export set keeps that route in hmr.
|
|
31
|
+
module.acceptedHmrExports = new Set()
|
|
32
|
+
|
|
33
|
+
// root layouts are called as functions to support html elements, so
|
|
34
|
+
// react refresh cannot update them without the route event.
|
|
35
|
+
if (/^(?:\([^)]+\)[\\/])?_layout\.[jt]sx?$/.test(relativeRoutePath)) {
|
|
36
|
+
hasRouteUpdate = true
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return module
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
if (hasRouteUpdate) {
|
|
44
|
+
server.hot.send({
|
|
45
|
+
type: 'custom',
|
|
46
|
+
event: 'one:route-update',
|
|
47
|
+
data: { file: fileRelativePath },
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return result
|
|
52
|
+
},
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -4,6 +4,7 @@ import { tmpdir } from 'node:os'
|
|
|
4
4
|
import { join, resolve } from 'node:path'
|
|
5
5
|
import { describe, expect, it, vi } from 'vitest'
|
|
6
6
|
import { build } from 'vite'
|
|
7
|
+
import { createRouteIndex } from '../../utils/routeIndex'
|
|
7
8
|
import { createVirtualEntry } from './virtualEntryPlugin'
|
|
8
9
|
|
|
9
10
|
// mock isNativeEnvironment
|
|
@@ -58,7 +59,11 @@ export const registerPreloadedRoute = () => {}`
|
|
|
58
59
|
}
|
|
59
60
|
},
|
|
60
61
|
},
|
|
61
|
-
createVirtualEntry({
|
|
62
|
+
createVirtualEntry({
|
|
63
|
+
root: 'app',
|
|
64
|
+
flags: {},
|
|
65
|
+
routeIndex: createRouteIndex({ routerRoot: appDir }),
|
|
66
|
+
}),
|
|
62
67
|
],
|
|
63
68
|
build: {
|
|
64
69
|
ssr: true,
|
|
@@ -101,6 +106,10 @@ export const registerPreloadedRoute = () => {}`
|
|
|
101
106
|
const base = {
|
|
102
107
|
root: 'app',
|
|
103
108
|
flags: {},
|
|
109
|
+
routeIndex: {
|
|
110
|
+
getPaths: () => [],
|
|
111
|
+
update: () => false,
|
|
112
|
+
},
|
|
104
113
|
}
|
|
105
114
|
|
|
106
115
|
it('server (ssr) uses lazy dynamic import, not static import', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolve } from 'node:path'
|
|
2
2
|
import { pathToFileURL } from 'node:url'
|
|
3
3
|
import { configuration } from '@vxrn/compiler'
|
|
4
|
-
import
|
|
4
|
+
import micromatch from 'micromatch'
|
|
5
5
|
import type { Plugin } from 'vite'
|
|
6
6
|
import { isNativeEnvironment } from 'vxrn'
|
|
7
7
|
import {
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
ROUTE_WEB_EXCLUSION_GLOB_PATTERNS,
|
|
12
12
|
} from '../../router/glob-patterns'
|
|
13
13
|
import { matchDirectoryRenderMode, matchFileRenderMode } from '../../router/matchers'
|
|
14
|
+
import type { RouteIndex } from '../../utils/routeIndex'
|
|
14
15
|
import type { One } from '../types'
|
|
15
16
|
import {
|
|
16
17
|
resolvedVirtualEntryId,
|
|
@@ -118,6 +119,7 @@ export function createVirtualEntry(options: {
|
|
|
118
119
|
router?: One.PluginOptions['router']
|
|
119
120
|
flags: One.Flags
|
|
120
121
|
setupFile?: One.PluginOptions['setupFile']
|
|
122
|
+
routeIndex: RouteIndex
|
|
121
123
|
}): Plugin {
|
|
122
124
|
const routeGlobs = [
|
|
123
125
|
`/${options.root}/${ROUTE_GLOB_PATTERN}`,
|
|
@@ -154,14 +156,13 @@ export function createVirtualEntry(options: {
|
|
|
154
156
|
const isNative = isNativeEnvironment(this.environment)
|
|
155
157
|
const isSSR = this.environment.name === 'ssr'
|
|
156
158
|
const serverSpaRouteFiles = isSSR
|
|
157
|
-
?
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
.map((file) => file.replaceAll('\\', '/'))
|
|
159
|
+
? options.routeIndex
|
|
160
|
+
.getPaths()
|
|
161
|
+
.map((file) => file.replace(/^\.\//, ''))
|
|
162
|
+
.filter((file) => /\.tsx?$/.test(file))
|
|
163
|
+
.filter(
|
|
164
|
+
(file) => !micromatch.isMatch(file, ROUTE_WEB_EXCLUSION_GLOB_PATTERNS)
|
|
165
|
+
)
|
|
165
166
|
.filter((file) => {
|
|
166
167
|
const parts = file.split('/')
|
|
167
168
|
const filename = parts.at(-1) || ''
|
|
@@ -226,12 +227,39 @@ export function createVirtualEntry(options: {
|
|
|
226
227
|
const linkingArg = options.router?.linking
|
|
227
228
|
? `linking: ${JSON.stringify(options.router.linking)},`
|
|
228
229
|
: ''
|
|
230
|
+
|
|
231
|
+
// vite 8.1 bundledDev: the client is a single bundle, so the react-refresh
|
|
232
|
+
// preamble normally provided by /@one/dev.js (which imports /@vite/client —
|
|
233
|
+
// a module that doesn't exist in bundled mode) never installs $RefreshReg$,
|
|
234
|
+
// and every compiler-wrapped route module then throws "preamble was not
|
|
235
|
+
// loaded". install it here instead — this runs at entry-body time, before
|
|
236
|
+
// the lazily-globbed route modules evaluate. ('one' and /@react-refresh are
|
|
237
|
+
// node_modules / the runtime, so neither is refresh-wrapped.)
|
|
238
|
+
// `isBundled` is true for EVERY environment during build, so it alone can't
|
|
239
|
+
// gate this — a prod build would emit an import of /@react-refresh, which
|
|
240
|
+
// only exists while serving. dev mode is what makes the preamble necessary.
|
|
241
|
+
const isBundledClient =
|
|
242
|
+
this.environment.mode === 'dev' &&
|
|
243
|
+
this.environment.name === 'client' &&
|
|
244
|
+
!!(this.environment.config as any)?.isBundled
|
|
245
|
+
const refreshPreambleImport = isBundledClient
|
|
246
|
+
? `import { injectIntoGlobalHook as __oneInjectRefresh } from '/@react-refresh'`
|
|
247
|
+
: ''
|
|
248
|
+
const refreshPreambleSetup = isBundledClient
|
|
249
|
+
? `if (typeof window !== 'undefined' && !window.$RefreshReg$) {
|
|
250
|
+
__oneInjectRefresh(window)
|
|
251
|
+
window.$RefreshReg$ = () => {}
|
|
252
|
+
window.$RefreshSig$ = () => (type) => type
|
|
253
|
+
}`
|
|
254
|
+
: ''
|
|
229
255
|
return `
|
|
230
256
|
${setupResult.promiseDeclaration}
|
|
231
257
|
${nativewindImport}
|
|
258
|
+
${refreshPreambleImport}
|
|
232
259
|
|
|
233
260
|
import { createApp, registerPreloadedRoute as _registerPreloadedRoute } from 'one'
|
|
234
261
|
${setupResult.importStatement}
|
|
262
|
+
${refreshPreambleSetup}
|
|
235
263
|
|
|
236
264
|
// Export registerPreloadedRoute so preload files can import it from this bundle
|
|
237
265
|
// Named export that wraps the original function
|
package/src/vite/types.ts
CHANGED
|
@@ -544,6 +544,17 @@ export namespace One {
|
|
|
544
544
|
* @default false
|
|
545
545
|
*/
|
|
546
546
|
suspendRoutes?: boolean
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* Experimental: serve the web client through Vite 8.1's bundled dev mode
|
|
550
|
+
* (rolldown-powered FullBundleDevEnvironment) instead of unbundled ESM dev.
|
|
551
|
+
* Fewer requests / faster parse, especially for apps with large icon/util
|
|
552
|
+
* imports. Dev-only; ignored for builds.
|
|
553
|
+
*
|
|
554
|
+
* @experimental
|
|
555
|
+
* @default false
|
|
556
|
+
*/
|
|
557
|
+
experimentalBundledDev?: boolean
|
|
547
558
|
}
|
|
548
559
|
|
|
549
560
|
/**
|
package/types/Root.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { NavigationContainerProps } from '@react-navigation/native';
|
|
2
2
|
import { type FunctionComponent, type ReactNode } from 'react';
|
|
3
3
|
import type { OneLinkingConfig } from './link/getLinking';
|
|
4
4
|
import type { GlobbedRouteImports } from './types';
|
package/types/Root.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Root.d.ts","sourceRoot":"","sources":["../src/Root.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Root.d.ts","sourceRoot":"","sources":["../src/Root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAG1F,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAA;AAMd,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAOzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAMlD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAcvC,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG;IAC7C,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,mBAAmB,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC,YAAY,CAAA;IAC/B,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAA;IACjB,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B,CAAA;AAED,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,GAAG,CAAC,YAAY,CAAA;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,OAAO,CAAC,EAAE,iBAAiB,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;IACpD,wBAAwB,CAAC,EAAE,wBAAwB,GAAG;QACpD,KAAK,CAAC,EAAE;YACN,IAAI,EAAE,OAAO,CAAA;YACb,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM,CAAA;gBACf,UAAU,EAAE,MAAM,CAAA;gBAClB,IAAI,EAAE,MAAM,CAAA;gBACZ,IAAI,EAAE,MAAM,CAAA;gBACZ,MAAM,EAAE,MAAM,CAAA;gBACd,YAAY,EAAE,MAAM,CAAA;aACrB,CAAA;SACF,CAAA;KACF,CAAA;CACF,CAAA;AAQD,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,kDAgKpC"}
|
package/types/cli/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAmXA,wBAAsB,KAAK,CAAC,IAAI,EAAE;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAmXA,wBAAsB,KAAK,CAAC,IAAI,EAAE;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,iBAuxCA"}
|
package/types/createApp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createApp.d.ts","sourceRoot":"","sources":["../src/createApp.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"createApp.d.ts","sourceRoot":"","sources":["../src/createApp.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAA;AAWhB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAMzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAEvC,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9C,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAA;IACjB,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CACzC,CAAA;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,cAAc;;oBAUrB,cAAc;0BAwGR,cAAc,KAAG,OAAO,CAAC,cAAc,CAAC;EAsJzE"}
|
|
@@ -29,9 +29,10 @@ export declare function compileManifest(manifest: {
|
|
|
29
29
|
pageRoutes: RouteInfoCompiled[];
|
|
30
30
|
apiRoutes: RouteInfoCompiled[];
|
|
31
31
|
};
|
|
32
|
-
export declare function createHandleRequest(handlers: RequestHandlers, { routerRoot, ignoredRouteFiles }: {
|
|
32
|
+
export declare function createHandleRequest(handlers: RequestHandlers, { routerRoot, ignoredRouteFiles, routePaths, }: {
|
|
33
33
|
routerRoot: string;
|
|
34
34
|
ignoredRouteFiles?: string[];
|
|
35
|
+
routePaths?: string[];
|
|
35
36
|
}): {
|
|
36
37
|
manifest: import("./server/createRoutesManifest").RoutesManifest<string>;
|
|
37
38
|
handler: (request: Request) => Promise<RequestHandlerResponse>;
|