one 1.2.52 → 1.2.54
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/build.cjs +11 -5
- package/dist/cjs/cli/build.js +11 -4
- package/dist/cjs/cli/build.js.map +1 -1
- package/dist/cjs/cli/build.native.js +9 -2
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/cli/generateSitemap.test.js.map +1 -1
- package/dist/cjs/cli/generateSitemap.test.native.js.map +1 -1
- package/dist/cjs/createApp.cjs +11 -11
- package/dist/cjs/createApp.js +5 -4
- package/dist/cjs/createApp.js.map +1 -1
- package/dist/cjs/getDevServer.native.js.map +1 -1
- package/dist/cjs/index.cjs +3 -0
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +3 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/metro-config/getViteMetroPluginOptions.cjs +2 -2
- package/dist/cjs/metro-config/getViteMetroPluginOptions.js +1 -1
- package/dist/cjs/metro-config/getViteMetroPluginOptions.js.map +1 -1
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js +2 -2
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
- package/dist/cjs/router/Route.js.map +1 -1
- package/dist/cjs/router/Route.native.js.map +1 -1
- package/dist/cjs/router/getRoutes.cjs +2 -2
- package/dist/cjs/router/getRoutes.js +1 -2
- package/dist/cjs/router/getRoutes.js.map +1 -1
- package/dist/cjs/router/getRoutes.native.js.map +1 -1
- package/dist/cjs/router/matchers.test.js +7 -1
- package/dist/cjs/router/matchers.test.js.map +1 -1
- package/dist/cjs/router/matchers.test.native.js.map +1 -1
- package/dist/cjs/router/useScreens.js +25 -5
- package/dist/cjs/router/useScreens.js.map +1 -1
- package/dist/cjs/router/useScreens.native.js.map +1 -1
- package/dist/cjs/router/useViteRoutes.cjs +1 -1
- package/dist/cjs/router/useViteRoutes.js +1 -1
- package/dist/cjs/router/useViteRoutes.js.map +1 -1
- package/dist/cjs/router/useViteRoutes.native.js.map +1 -1
- package/dist/cjs/server/getServerManifest.js +3 -1
- package/dist/cjs/server/getServerManifest.js.map +1 -1
- package/dist/cjs/server/getServerManifest.native.js.map +1 -1
- package/dist/cjs/server/oneServe.js +7 -2
- package/dist/cjs/server/oneServe.js.map +1 -1
- package/dist/cjs/server/oneServe.native.js.map +1 -1
- package/dist/cjs/typed-routes/generateRouteTypes.cjs +2 -2
- package/dist/cjs/typed-routes/generateRouteTypes.js +1 -1
- package/dist/cjs/typed-routes/generateRouteTypes.js.map +1 -1
- package/dist/cjs/typed-routes/generateRouteTypes.native.js +2 -2
- package/dist/cjs/typed-routes/generateRouteTypes.native.js.map +1 -1
- package/dist/cjs/typed-routes/injectRouteHelpers.cjs +2 -2
- package/dist/cjs/typed-routes/injectRouteHelpers.js +1 -1
- package/dist/cjs/typed-routes/injectRouteHelpers.js.map +1 -1
- package/dist/cjs/typed-routes/injectRouteHelpers.native.js +2 -2
- package/dist/cjs/typed-routes/injectRouteHelpers.native.js.map +1 -1
- package/dist/cjs/ui/TabSlot.cjs +1 -1
- package/dist/cjs/ui/TabSlot.js +1 -1
- package/dist/cjs/ui/TabSlot.js.map +1 -1
- package/dist/cjs/ui/TabSlot.native.js +2 -2
- package/dist/cjs/ui/TabSlot.native.js.map +1 -1
- package/dist/cjs/ui/TabTrigger.cjs +1 -1
- package/dist/cjs/ui/TabTrigger.js +1 -1
- package/dist/cjs/ui/TabTrigger.js.map +1 -1
- package/dist/cjs/ui/TabTrigger.native.js +1 -1
- package/dist/cjs/ui/TabTrigger.native.js.map +1 -1
- package/dist/cjs/ui/Tabs.cjs +7 -7
- package/dist/cjs/ui/Tabs.js +5 -2
- package/dist/cjs/ui/Tabs.js.map +1 -1
- package/dist/cjs/ui/Tabs.native.js +7 -7
- package/dist/cjs/ui/Tabs.native.js.map +1 -1
- package/dist/cjs/ui/common.cjs +1 -1
- package/dist/cjs/ui/common.js +1 -1
- package/dist/cjs/ui/common.js.map +1 -1
- package/dist/cjs/ui/common.native.js +1 -1
- package/dist/cjs/ui/common.native.js.map +1 -1
- package/dist/cjs/useLoader.cjs +1 -0
- package/dist/cjs/useLoader.js +1 -0
- package/dist/cjs/useLoader.js.map +1 -1
- package/dist/cjs/useLoader.native.js +1 -0
- package/dist/cjs/useLoader.native.js.map +1 -1
- package/dist/cjs/utils/promiseWithResolvers.cjs +4 -5
- package/dist/cjs/utils/promiseWithResolvers.js +2 -1
- package/dist/cjs/utils/promiseWithResolvers.js.map +1 -1
- package/dist/cjs/utils/promiseWithResolvers.native.js.map +1 -1
- package/dist/cjs/utils/trackLoaderDependencies.cjs +51 -0
- package/dist/cjs/utils/trackLoaderDependencies.js +40 -0
- package/dist/cjs/utils/trackLoaderDependencies.js.map +6 -0
- package/dist/cjs/utils/trackLoaderDependencies.native.js +57 -0
- package/dist/cjs/utils/trackLoaderDependencies.native.js.map +1 -0
- package/dist/cjs/utils/watchFile.cjs +35 -0
- package/dist/cjs/utils/watchFile.js +30 -0
- package/dist/cjs/utils/watchFile.js.map +6 -0
- package/dist/cjs/utils/watchFile.native.js +39 -0
- package/dist/cjs/utils/watchFile.native.js.map +1 -0
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.js.map +1 -1
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.cjs +2 -0
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.js +2 -0
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.js.map +1 -1
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js +2 -0
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js.map +1 -1
- package/dist/cjs/vite/DevHead.cjs +22 -0
- package/dist/cjs/vite/DevHead.js +26 -0
- package/dist/cjs/vite/DevHead.js.map +1 -1
- package/dist/cjs/vite/one.cjs +5 -4
- package/dist/cjs/vite/one.js +2 -1
- package/dist/cjs/vite/one.js.map +1 -1
- package/dist/cjs/vite/one.native.js +5 -4
- package/dist/cjs/vite/one.native.js.map +1 -1
- package/dist/cjs/vite/plugins/SSRCSSPlugin.cjs +7 -7
- package/dist/cjs/vite/plugins/SSRCSSPlugin.js +2 -3
- package/dist/cjs/vite/plugins/SSRCSSPlugin.js.map +1 -1
- package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.js +4 -1
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.js.map +1 -1
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +34 -7
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js +43 -7
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js.map +2 -2
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +82 -21
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/imageDataPlugin.cjs +107 -0
- package/dist/cjs/vite/plugins/imageDataPlugin.js +85 -0
- package/dist/cjs/vite/plugins/imageDataPlugin.js.map +6 -0
- package/dist/cjs/vite/plugins/imageDataPlugin.native.js +115 -0
- package/dist/cjs/vite/plugins/imageDataPlugin.native.js.map +1 -0
- package/dist/cjs/vite/plugins/imageDataPlugin.test.cjs +214 -0
- package/dist/cjs/vite/plugins/imageDataPlugin.test.js +184 -0
- package/dist/cjs/vite/plugins/imageDataPlugin.test.js.map +6 -0
- package/dist/cjs/vite/plugins/imageDataPlugin.test.native.js +228 -0
- package/dist/cjs/vite/plugins/imageDataPlugin.test.native.js.map +1 -0
- package/dist/cjs/zero/useQuery.cjs +2 -2
- package/dist/cjs/zero/useQuery.js +1 -2
- package/dist/cjs/zero/useQuery.js.map +1 -1
- package/dist/cjs/zero/useQuery.native.js.map +1 -1
- package/dist/esm/cli/build.js +11 -4
- package/dist/esm/cli/build.js.map +1 -1
- package/dist/esm/cli/build.mjs +10 -4
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +8 -1
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/cli/buildPage.js +1 -1
- package/dist/esm/cli/buildPage.js.map +1 -1
- package/dist/esm/cli/buildPage.mjs +1 -1
- package/dist/esm/cli/buildPage.mjs.map +1 -1
- package/dist/esm/cli/buildPage.native.js +1 -1
- package/dist/esm/cli/buildPage.native.js.map +1 -1
- package/dist/esm/cli/generateSitemap.test.js +1 -1
- package/dist/esm/cli/generateSitemap.test.js.map +1 -1
- package/dist/esm/cli/generateSitemap.test.mjs +1 -1
- package/dist/esm/cli/generateSitemap.test.mjs.map +1 -1
- package/dist/esm/cli/generateSitemap.test.native.js +1 -1
- package/dist/esm/cli/generateSitemap.test.native.js.map +1 -1
- package/dist/esm/createApp.js +5 -4
- package/dist/esm/createApp.js.map +1 -1
- package/dist/esm/createApp.mjs +11 -11
- package/dist/esm/createApp.mjs.map +1 -1
- package/dist/esm/getDevServer.native.js.map +1 -1
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +3 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +3 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.js +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.js.map +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.mjs +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.mjs.map +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.native.js +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
- package/dist/esm/router/Route.js.map +1 -1
- package/dist/esm/router/Route.mjs.map +1 -1
- package/dist/esm/router/Route.native.js.map +1 -1
- package/dist/esm/router/getRoutes.js +1 -2
- package/dist/esm/router/getRoutes.js.map +1 -1
- package/dist/esm/router/getRoutes.mjs +2 -2
- package/dist/esm/router/getRoutes.mjs.map +1 -1
- package/dist/esm/router/getRoutes.native.js.map +1 -1
- package/dist/esm/router/matchers.test.js +7 -1
- package/dist/esm/router/matchers.test.js.map +1 -1
- package/dist/esm/router/matchers.test.mjs.map +1 -1
- package/dist/esm/router/matchers.test.native.js.map +1 -1
- package/dist/esm/router/router.js +1 -1
- package/dist/esm/router/router.js.map +1 -1
- package/dist/esm/router/router.mjs +1 -1
- package/dist/esm/router/router.mjs.map +1 -1
- package/dist/esm/router/router.native.js +1 -1
- package/dist/esm/router/router.native.js.map +1 -1
- package/dist/esm/router/useScreens.js +25 -5
- package/dist/esm/router/useScreens.js.map +1 -1
- package/dist/esm/router/useScreens.mjs.map +1 -1
- package/dist/esm/router/useScreens.native.js.map +1 -1
- package/dist/esm/router/useViteRoutes.js +1 -1
- package/dist/esm/router/useViteRoutes.js.map +1 -1
- package/dist/esm/router/useViteRoutes.mjs +1 -1
- package/dist/esm/router/useViteRoutes.mjs.map +1 -1
- package/dist/esm/router/useViteRoutes.native.js.map +1 -1
- package/dist/esm/serve-worker.js +1 -1
- package/dist/esm/serve-worker.mjs +1 -1
- package/dist/esm/serve-worker.mjs.map +1 -1
- package/dist/esm/serve-worker.native.js +1 -1
- package/dist/esm/serve-worker.native.js.map +1 -1
- package/dist/esm/server/getServerManifest.js +3 -1
- package/dist/esm/server/getServerManifest.js.map +1 -1
- package/dist/esm/server/getServerManifest.mjs.map +1 -1
- package/dist/esm/server/getServerManifest.native.js.map +1 -1
- package/dist/esm/server/oneServe.js +7 -2
- package/dist/esm/server/oneServe.js.map +1 -1
- package/dist/esm/server/oneServe.mjs.map +1 -1
- package/dist/esm/server/oneServe.native.js.map +1 -1
- package/dist/esm/typed-routes/generateRouteTypes.js +1 -1
- package/dist/esm/typed-routes/generateRouteTypes.js.map +1 -1
- package/dist/esm/typed-routes/generateRouteTypes.mjs +1 -1
- package/dist/esm/typed-routes/generateRouteTypes.mjs.map +1 -1
- package/dist/esm/typed-routes/generateRouteTypes.native.js +1 -1
- package/dist/esm/typed-routes/generateRouteTypes.native.js.map +1 -1
- package/dist/esm/typed-routes/injectRouteHelpers.js +1 -1
- package/dist/esm/typed-routes/injectRouteHelpers.js.map +1 -1
- package/dist/esm/typed-routes/injectRouteHelpers.mjs +1 -1
- package/dist/esm/typed-routes/injectRouteHelpers.mjs.map +1 -1
- package/dist/esm/typed-routes/injectRouteHelpers.native.js +1 -1
- package/dist/esm/typed-routes/injectRouteHelpers.native.js.map +1 -1
- package/dist/esm/ui/Slot.js.map +1 -1
- package/dist/esm/ui/Slot.mjs.map +1 -1
- package/dist/esm/ui/Slot.native.js.map +1 -1
- package/dist/esm/ui/TabList.js +1 -1
- package/dist/esm/ui/TabList.js.map +1 -1
- package/dist/esm/ui/TabList.mjs +1 -1
- package/dist/esm/ui/TabList.mjs.map +1 -1
- package/dist/esm/ui/TabList.native.js +1 -1
- package/dist/esm/ui/TabList.native.js.map +1 -1
- package/dist/esm/ui/TabRouter.js.map +1 -1
- package/dist/esm/ui/TabRouter.mjs.map +1 -1
- package/dist/esm/ui/TabRouter.native.js.map +1 -1
- package/dist/esm/ui/TabSlot.js +2 -2
- package/dist/esm/ui/TabSlot.js.map +1 -1
- package/dist/esm/ui/TabSlot.mjs +2 -2
- package/dist/esm/ui/TabSlot.mjs.map +1 -1
- package/dist/esm/ui/TabSlot.native.js +2 -2
- package/dist/esm/ui/TabSlot.native.js.map +1 -1
- package/dist/esm/ui/TabTrigger.js +3 -3
- package/dist/esm/ui/TabTrigger.js.map +1 -1
- package/dist/esm/ui/TabTrigger.mjs +2 -2
- package/dist/esm/ui/TabTrigger.mjs.map +1 -1
- package/dist/esm/ui/TabTrigger.native.js +2 -2
- package/dist/esm/ui/TabTrigger.native.js.map +1 -1
- package/dist/esm/ui/Tabs.js +10 -7
- package/dist/esm/ui/Tabs.js.map +1 -1
- package/dist/esm/ui/Tabs.mjs +6 -6
- package/dist/esm/ui/Tabs.mjs.map +1 -1
- package/dist/esm/ui/Tabs.native.js +6 -6
- package/dist/esm/ui/Tabs.native.js.map +1 -1
- package/dist/esm/ui/common.js +3 -3
- package/dist/esm/ui/common.js.map +1 -1
- package/dist/esm/ui/common.mjs +1 -1
- package/dist/esm/ui/common.mjs.map +1 -1
- package/dist/esm/ui/common.native.js +1 -1
- package/dist/esm/ui/common.native.js.map +1 -1
- package/dist/esm/ui/useComponent.js +1 -1
- package/dist/esm/ui/useComponent.js.map +1 -1
- package/dist/esm/ui/useComponent.mjs +1 -1
- package/dist/esm/ui/useComponent.mjs.map +1 -1
- package/dist/esm/ui/useComponent.native.js +1 -1
- package/dist/esm/ui/useComponent.native.js.map +1 -1
- package/dist/esm/useLoader.js +1 -0
- package/dist/esm/useLoader.js.map +1 -1
- package/dist/esm/useLoader.mjs +1 -0
- package/dist/esm/useLoader.mjs.map +1 -1
- package/dist/esm/useLoader.native.js +1 -0
- package/dist/esm/useLoader.native.js.map +1 -1
- package/dist/esm/utils/cleanUrl.js +1 -1
- package/dist/esm/utils/cleanUrl.mjs +1 -1
- package/dist/esm/utils/cleanUrl.mjs.map +1 -1
- package/dist/esm/utils/cleanUrl.native.js +1 -1
- package/dist/esm/utils/cleanUrl.native.js.map +1 -1
- package/dist/esm/utils/promiseWithResolvers.js +2 -1
- package/dist/esm/utils/promiseWithResolvers.js.map +1 -1
- package/dist/esm/utils/promiseWithResolvers.mjs +4 -5
- package/dist/esm/utils/promiseWithResolvers.mjs.map +1 -1
- package/dist/esm/utils/promiseWithResolvers.native.js.map +1 -1
- package/dist/esm/utils/trackLoaderDependencies.js +25 -0
- package/dist/esm/utils/trackLoaderDependencies.js.map +6 -0
- package/dist/esm/utils/trackLoaderDependencies.mjs +28 -0
- package/dist/esm/utils/trackLoaderDependencies.mjs.map +1 -0
- package/dist/esm/utils/trackLoaderDependencies.native.js +31 -0
- package/dist/esm/utils/trackLoaderDependencies.native.js.map +1 -0
- package/dist/esm/utils/watchFile.js +14 -0
- package/dist/esm/utils/watchFile.js.map +6 -0
- package/dist/esm/utils/watchFile.mjs +11 -0
- package/dist/esm/utils/watchFile.mjs.map +1 -0
- package/dist/esm/utils/watchFile.native.js +12 -0
- package/dist/esm/utils/watchFile.native.js.map +1 -0
- package/dist/esm/vercel/build/buildVercelOutputDirectory.js.map +1 -1
- package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs.map +1 -1
- package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
- package/dist/esm/vercel/build/config/vc-build-output-config-base.js +2 -0
- package/dist/esm/vercel/build/config/vc-build-output-config-base.js.map +1 -1
- package/dist/esm/vercel/build/config/vc-build-output-config-base.mjs +2 -0
- package/dist/esm/vercel/build/config/vc-build-output-config-base.mjs.map +1 -1
- package/dist/esm/vercel/build/config/vc-build-output-config-base.native.js +2 -0
- package/dist/esm/vercel/build/config/vc-build-output-config-base.native.js.map +1 -1
- package/dist/esm/vite/DevHead.js +26 -0
- package/dist/esm/vite/DevHead.js.map +1 -1
- package/dist/esm/vite/DevHead.mjs +22 -0
- package/dist/esm/vite/DevHead.mjs.map +1 -1
- package/dist/esm/vite/one.js +4 -2
- package/dist/esm/vite/one.js.map +1 -1
- package/dist/esm/vite/one.mjs +4 -3
- package/dist/esm/vite/one.mjs.map +1 -1
- package/dist/esm/vite/one.native.js +4 -3
- package/dist/esm/vite/one.native.js.map +1 -1
- package/dist/esm/vite/plugins/SSRCSSPlugin.js +2 -3
- package/dist/esm/vite/plugins/SSRCSSPlugin.js.map +1 -1
- package/dist/esm/vite/plugins/SSRCSSPlugin.mjs +7 -7
- package/dist/esm/vite/plugins/SSRCSSPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/clientTreeShakePlugin.js +4 -1
- package/dist/esm/vite/plugins/clientTreeShakePlugin.js.map +1 -1
- package/dist/esm/vite/plugins/clientTreeShakePlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/clientTreeShakePlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.js +43 -6
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.js.map +2 -2
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +34 -7
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +82 -21
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/imageDataPlugin.js +62 -0
- package/dist/esm/vite/plugins/imageDataPlugin.js.map +6 -0
- package/dist/esm/vite/plugins/imageDataPlugin.mjs +73 -0
- package/dist/esm/vite/plugins/imageDataPlugin.mjs.map +1 -0
- package/dist/esm/vite/plugins/imageDataPlugin.native.js +78 -0
- package/dist/esm/vite/plugins/imageDataPlugin.native.js.map +1 -0
- package/dist/esm/vite/plugins/imageDataPlugin.test.js +165 -0
- package/dist/esm/vite/plugins/imageDataPlugin.test.js.map +6 -0
- package/dist/esm/vite/plugins/imageDataPlugin.test.mjs +193 -0
- package/dist/esm/vite/plugins/imageDataPlugin.test.mjs.map +1 -0
- package/dist/esm/vite/plugins/imageDataPlugin.test.native.js +204 -0
- package/dist/esm/vite/plugins/imageDataPlugin.test.native.js.map +1 -0
- package/dist/esm/zero/useQuery.js +1 -2
- package/dist/esm/zero/useQuery.js.map +1 -1
- package/dist/esm/zero/useQuery.mjs +2 -2
- package/dist/esm/zero/useQuery.mjs.map +1 -1
- package/dist/esm/zero/useQuery.native.js.map +1 -1
- package/package.json +14 -10
- package/src/cli/build.ts +18 -3
- package/src/cli/buildPage.ts +1 -1
- package/src/cli/generateSitemap.test.ts +2 -2
- package/src/createApp.native.tsx +1 -1
- package/src/createApp.tsx +5 -3
- package/src/createMiddleware.ts +1 -1
- package/src/getDevServer.native.ts +0 -2
- package/src/index.ts +20 -1
- package/src/interfaces/router.ts +6 -2
- package/src/metro-config/getViteMetroPluginOptions.ts +2 -2
- package/src/router/Route.tsx +5 -1
- package/src/router/getRoutes.ts +1 -1
- package/src/router/matchers.test.ts +8 -2
- package/src/router/router.ts +1 -1
- package/src/router/useScreens.tsx +19 -3
- package/src/router/useViteRoutes.tsx +1 -1
- package/src/serve-worker.ts +1 -1
- package/src/server/getServerManifest.ts +3 -1
- package/src/server/oneServe.ts +9 -4
- package/src/typed-routes/generateRouteTypes.ts +2 -2
- package/src/typed-routes/injectRouteHelpers.ts +1 -1
- package/src/ui/Slot.tsx +3 -3
- package/src/ui/TabList.tsx +2 -2
- package/src/ui/TabRouter.tsx +2 -2
- package/src/ui/TabSlot.tsx +2 -3
- package/src/ui/TabTrigger.tsx +8 -9
- package/src/ui/Tabs.tsx +15 -13
- package/src/ui/common.tsx +5 -6
- package/src/ui/useComponent.tsx +1 -1
- package/src/useLoader.ts +4 -0
- package/src/utils/cleanUrl.ts +1 -1
- package/src/utils/promiseWithResolvers.ts +1 -1
- package/src/utils/trackLoaderDependencies.ts +53 -0
- package/src/utils/watchFile.ts +19 -0
- package/src/vercel/build/buildVercelOutputDirectory.ts +1 -1
- package/src/vercel/build/config/vc-build-output-config-base.ts +2 -0
- package/src/vite/DevHead.tsx +23 -0
- package/src/vite/one.ts +5 -2
- package/src/vite/plugins/SSRCSSPlugin.ts +2 -2
- package/src/vite/plugins/clientTreeShakePlugin.ts +4 -1
- package/src/vite/plugins/fileSystemRouterPlugin.tsx +76 -3
- package/src/vite/plugins/imageDataPlugin.test.ts +316 -0
- package/src/vite/plugins/imageDataPlugin.ts +120 -0
- package/src/vite/types.ts +1 -1
- package/src/zero/useQuery.ts +1 -1
- package/types/cli/build.d.ts.map +1 -1
- package/types/createApp.d.ts.map +1 -1
- package/types/createMiddleware.d.ts +1 -2
- package/types/createMiddleware.d.ts.map +1 -1
- package/types/env.d.ts +23 -0
- package/types/getDevServer.native.d.ts.map +1 -1
- package/types/index.d.ts +19 -1
- package/types/index.d.ts.map +1 -1
- package/types/interfaces/router.d.ts.map +1 -1
- package/types/layouts/Drawer.d.ts +2 -2
- package/types/layouts/Stack.d.ts +2 -2
- package/types/layouts/Tabs.d.ts +2 -2
- package/types/metro-config/getViteMetroPluginOptions.d.ts.map +1 -1
- package/types/router/Route.d.ts.map +1 -1
- package/types/serve-worker.d.ts +1 -1
- package/types/server/getServerManifest.d.ts.map +1 -1
- package/types/server/oneServe.d.ts.map +1 -1
- package/types/ui/Slot.d.ts +1 -1
- package/types/ui/Slot.d.ts.map +1 -1
- package/types/ui/TabList.d.ts +1 -1
- package/types/ui/TabList.d.ts.map +1 -1
- package/types/ui/TabRouter.d.ts +1 -1
- package/types/ui/TabRouter.d.ts.map +1 -1
- package/types/ui/TabSlot.d.ts.map +1 -1
- package/types/ui/TabTrigger.d.ts +3 -3
- package/types/ui/TabTrigger.d.ts.map +1 -1
- package/types/ui/Tabs.d.ts +17 -2
- package/types/ui/Tabs.d.ts.map +1 -1
- package/types/ui/common.d.ts +2 -2
- package/types/ui/common.d.ts.map +1 -1
- package/types/ui/useComponent.d.ts.map +1 -1
- package/types/useLoader.d.ts.map +1 -1
- package/types/utils/trackLoaderDependencies.d.ts +6 -0
- package/types/utils/trackLoaderDependencies.d.ts.map +1 -0
- package/types/utils/watchFile.d.ts +8 -0
- package/types/utils/watchFile.d.ts.map +1 -0
- package/types/vercel/build/config/vc-build-output-config-base.d.ts.map +1 -1
- package/types/vite/DevHead.d.ts.map +1 -1
- package/types/vite/one.d.ts.map +1 -1
- package/types/vite/plugins/clientTreeShakePlugin.d.ts.map +1 -1
- package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
- package/types/vite/plugins/imageDataPlugin.d.ts +3 -0
- package/types/vite/plugins/imageDataPlugin.d.ts.map +1 -0
- package/types/vite/plugins/imageDataPlugin.test.d.ts +2 -0
- package/types/vite/plugins/imageDataPlugin.test.d.ts.map +1 -0
- package/types/vite/types.d.ts +1 -1
- package/types/vite/types.d.ts.map +1 -1
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
function _type_of(obj) {
|
|
3
|
+
"@swc/helpers - typeof";
|
|
4
|
+
|
|
5
|
+
return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
6
|
+
}
|
|
7
|
+
vi.mock("node:fs", async function () {
|
|
8
|
+
var actual = await vi.importActual("node:fs");
|
|
9
|
+
return {
|
|
10
|
+
...actual,
|
|
11
|
+
existsSync: vi.fn(function (path) {
|
|
12
|
+
return path.includes("test-image.jpg") || path.includes("hero.png");
|
|
13
|
+
})
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
describe("imageDataPlugin", function () {
|
|
17
|
+
beforeEach(function () {
|
|
18
|
+
vi.resetModules();
|
|
19
|
+
}), afterEach(function () {
|
|
20
|
+
vi.clearAllMocks();
|
|
21
|
+
}), describe("resolveId", function () {
|
|
22
|
+
it("should return null for non-imagedata imports", async function () {
|
|
23
|
+
var {
|
|
24
|
+
imageDataPlugin
|
|
25
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
26
|
+
plugin = imageDataPlugin(),
|
|
27
|
+
mockConfig = {
|
|
28
|
+
publicDir: "/project/public",
|
|
29
|
+
root: "/project"
|
|
30
|
+
};
|
|
31
|
+
plugin.configResolved && plugin.configResolved(mockConfig);
|
|
32
|
+
var result = await plugin.resolveId("./image.jpg", void 0);
|
|
33
|
+
expect(result).toBeNull();
|
|
34
|
+
}), it("should return null for imports with imagedata not as suffix", async function () {
|
|
35
|
+
var {
|
|
36
|
+
imageDataPlugin
|
|
37
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
38
|
+
plugin = imageDataPlugin(),
|
|
39
|
+
mockConfig = {
|
|
40
|
+
publicDir: "/project/public",
|
|
41
|
+
root: "/project"
|
|
42
|
+
};
|
|
43
|
+
plugin.configResolved && plugin.configResolved(mockConfig);
|
|
44
|
+
var result = await plugin.resolveId("./image?imagedata.jpg", void 0);
|
|
45
|
+
expect(result).toBeNull();
|
|
46
|
+
}), it("should resolve public dir paths starting with /", async function () {
|
|
47
|
+
var {
|
|
48
|
+
imageDataPlugin
|
|
49
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
50
|
+
plugin = imageDataPlugin(),
|
|
51
|
+
mockConfig = {
|
|
52
|
+
publicDir: "/project/public",
|
|
53
|
+
root: "/project"
|
|
54
|
+
};
|
|
55
|
+
plugin.configResolved && plugin.configResolved(mockConfig);
|
|
56
|
+
var result = await plugin.resolveId("/test-image.jpg?imagedata", void 0);
|
|
57
|
+
expect(result).toBe("\0imagedata:/project/public/test-image.jpg");
|
|
58
|
+
}), it("should resolve relative imports", async function () {
|
|
59
|
+
var {
|
|
60
|
+
imageDataPlugin
|
|
61
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
62
|
+
plugin = imageDataPlugin(),
|
|
63
|
+
mockConfig = {
|
|
64
|
+
publicDir: "/project/public",
|
|
65
|
+
root: "/project"
|
|
66
|
+
};
|
|
67
|
+
plugin.configResolved && plugin.configResolved(mockConfig);
|
|
68
|
+
var result = await plugin.resolveId("./test-image.jpg?imagedata", "/project/src/components/Hero.tsx");
|
|
69
|
+
expect(result).toBe("\0imagedata:/project/src/components/test-image.jpg");
|
|
70
|
+
}), it("should return null for non-existent files", async function () {
|
|
71
|
+
var {
|
|
72
|
+
imageDataPlugin
|
|
73
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
74
|
+
plugin = imageDataPlugin(),
|
|
75
|
+
mockConfig = {
|
|
76
|
+
publicDir: "/project/public",
|
|
77
|
+
root: "/project"
|
|
78
|
+
};
|
|
79
|
+
plugin.configResolved && plugin.configResolved(mockConfig);
|
|
80
|
+
var result = await plugin.resolveId("/nonexistent.jpg?imagedata", void 0);
|
|
81
|
+
expect(result).toBeNull();
|
|
82
|
+
});
|
|
83
|
+
}), describe("path traversal prevention", function () {
|
|
84
|
+
it("should block path traversal from public dir", async function () {
|
|
85
|
+
var {
|
|
86
|
+
imageDataPlugin
|
|
87
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
88
|
+
plugin = imageDataPlugin(),
|
|
89
|
+
mockConfig = {
|
|
90
|
+
publicDir: "/project/public",
|
|
91
|
+
root: "/project"
|
|
92
|
+
};
|
|
93
|
+
plugin.configResolved && plugin.configResolved(mockConfig);
|
|
94
|
+
var result = await plugin.resolveId("/../../../etc/passwd?imagedata", void 0);
|
|
95
|
+
expect(result).toBeNull();
|
|
96
|
+
}), it("should block path traversal from relative imports", async function () {
|
|
97
|
+
var {
|
|
98
|
+
imageDataPlugin
|
|
99
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
100
|
+
plugin = imageDataPlugin(),
|
|
101
|
+
mockConfig = {
|
|
102
|
+
publicDir: "/project/public",
|
|
103
|
+
root: "/project"
|
|
104
|
+
};
|
|
105
|
+
plugin.configResolved && plugin.configResolved(mockConfig);
|
|
106
|
+
var result = await plugin.resolveId("../../../../etc/passwd?imagedata", "/project/src/components/Hero.tsx");
|
|
107
|
+
expect(result).toBeNull();
|
|
108
|
+
}), it("should block path traversal from root", async function () {
|
|
109
|
+
var {
|
|
110
|
+
imageDataPlugin
|
|
111
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
112
|
+
plugin = imageDataPlugin(),
|
|
113
|
+
mockConfig = {
|
|
114
|
+
publicDir: "/project/public",
|
|
115
|
+
root: "/project"
|
|
116
|
+
};
|
|
117
|
+
plugin.configResolved && plugin.configResolved(mockConfig);
|
|
118
|
+
var result = await plugin.resolveId("../../../etc/passwd?imagedata", void 0);
|
|
119
|
+
expect(result).toBeNull();
|
|
120
|
+
}), it("should allow paths within project boundaries", async function () {
|
|
121
|
+
var {
|
|
122
|
+
imageDataPlugin
|
|
123
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
124
|
+
plugin = imageDataPlugin(),
|
|
125
|
+
mockConfig = {
|
|
126
|
+
publicDir: "/project/public",
|
|
127
|
+
root: "/project"
|
|
128
|
+
};
|
|
129
|
+
plugin.configResolved && plugin.configResolved(mockConfig);
|
|
130
|
+
var result = await plugin.resolveId("../../src/test-image.jpg?imagedata", "/project/src/components/Hero.tsx");
|
|
131
|
+
expect(result).toBe("\0imagedata:/project/src/test-image.jpg");
|
|
132
|
+
});
|
|
133
|
+
}), describe("load", function () {
|
|
134
|
+
it("should return null for non-virtual modules", async function () {
|
|
135
|
+
var {
|
|
136
|
+
imageDataPlugin
|
|
137
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
138
|
+
plugin = imageDataPlugin(),
|
|
139
|
+
mockConfig = {
|
|
140
|
+
publicDir: "/project/public",
|
|
141
|
+
root: "/project"
|
|
142
|
+
};
|
|
143
|
+
plugin.configResolved && plugin.configResolved(mockConfig);
|
|
144
|
+
var mockContext = {
|
|
145
|
+
addWatchFile: vi.fn()
|
|
146
|
+
},
|
|
147
|
+
result = await plugin.load.call(mockContext, "./image.jpg");
|
|
148
|
+
expect(result).toBeNull();
|
|
149
|
+
}), it("should return fallback data when sharp fails", async function () {
|
|
150
|
+
var {
|
|
151
|
+
imageDataPlugin
|
|
152
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
153
|
+
plugin = imageDataPlugin(),
|
|
154
|
+
mockConfig = {
|
|
155
|
+
publicDir: "/project/public",
|
|
156
|
+
root: "/project"
|
|
157
|
+
};
|
|
158
|
+
plugin.configResolved && plugin.configResolved(mockConfig);
|
|
159
|
+
var mockContext = {
|
|
160
|
+
addWatchFile: vi.fn()
|
|
161
|
+
},
|
|
162
|
+
result = await plugin.load.call(mockContext, "\0imagedata:/project/public/test-image.jpg");
|
|
163
|
+
expect(result).toContain("export default"), expect(result).toContain('"src":"/test-image.jpg"'), expect(result).toContain('"width":'), expect(result).toContain('"height":'), expect(mockContext.addWatchFile).toHaveBeenCalledWith("/project/public/test-image.jpg");
|
|
164
|
+
});
|
|
165
|
+
}), describe("plugin metadata", function () {
|
|
166
|
+
it("should have correct name", async function () {
|
|
167
|
+
var {
|
|
168
|
+
imageDataPlugin
|
|
169
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
170
|
+
plugin = imageDataPlugin();
|
|
171
|
+
expect(plugin.name).toBe("one:imagedata");
|
|
172
|
+
}), it("should enforce pre", async function () {
|
|
173
|
+
var {
|
|
174
|
+
imageDataPlugin
|
|
175
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
176
|
+
plugin = imageDataPlugin();
|
|
177
|
+
expect(plugin.enforce).toBe("pre");
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
describe("imageDataPlugin output format", function () {
|
|
182
|
+
it("should export a valid JSON object", async function () {
|
|
183
|
+
vi.resetModules();
|
|
184
|
+
var {
|
|
185
|
+
imageDataPlugin
|
|
186
|
+
} = await import("./imageDataPlugin.native.js"),
|
|
187
|
+
plugin = imageDataPlugin(),
|
|
188
|
+
mockConfig = {
|
|
189
|
+
publicDir: "/project/public",
|
|
190
|
+
root: "/project"
|
|
191
|
+
};
|
|
192
|
+
plugin.configResolved && plugin.configResolved(mockConfig);
|
|
193
|
+
var mockContext = {
|
|
194
|
+
addWatchFile: vi.fn()
|
|
195
|
+
},
|
|
196
|
+
result = await plugin.load.call(mockContext, "\0imagedata:/project/public/test-image.jpg"),
|
|
197
|
+
jsonMatch = result?.match(/export default (.+)$/);
|
|
198
|
+
if (expect(jsonMatch).toBeTruthy(), jsonMatch) {
|
|
199
|
+
var parsed = JSON.parse(jsonMatch[1]);
|
|
200
|
+
expect(parsed).toHaveProperty("src"), expect(parsed).toHaveProperty("width"), expect(parsed).toHaveProperty("height"), expect(parsed).toHaveProperty("blurDataURL"), expect(_type_of(parsed.src)).toBe("string"), expect(_type_of(parsed.width)).toBe("number"), expect(_type_of(parsed.height)).toBe("number"), expect(_type_of(parsed.blurDataURL)).toBe("string");
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
//# sourceMappingURL=imageDataPlugin.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["afterEach","beforeEach","describe","expect","it","vi","_type_of","obj","Symbol","constructor","mock","actual","importActual","existsSync","fn","path","includes","resetModules","clearAllMocks","imageDataPlugin","plugin","mockConfig","publicDir","root","configResolved","result","resolveId","toBeNull","toBe","mockContext","addWatchFile","load","call","toContain","toHaveBeenCalledWith","name","enforce","jsonMatch","match","toBeTruthy","parsed","JSON","parse","toHaveProperty","src","width","height","blurDataURL"],"sources":["../../../../src/vite/plugins/imageDataPlugin.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -3,8 +3,7 @@ import { getServerContext } from "../vite/one-server-only";
|
|
|
3
3
|
import { getQueryKey } from "./getQueryKey";
|
|
4
4
|
import { resolveZeroQuery } from "./resolveQuery";
|
|
5
5
|
import { useQuery as useQueryZero } from "./useQueryZero";
|
|
6
|
-
|
|
7
|
-
const serverQueryData = {};
|
|
6
|
+
const clientInitialData = getServerContext()?.postRenderData, serverQueryData = {};
|
|
8
7
|
globalThis.__vxrnServerData__ = serverQueryData;
|
|
9
8
|
const promises = /* @__PURE__ */ new WeakMap(), useQuery = ((query, enable = !0) => {
|
|
10
9
|
const snapshot = useQueryZero(query, enable), queryIdRef = useRef(void 0);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/zero/useQuery.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,cAAc;AACvB,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAC5B,SAAS,wBAAwB;AACjC,SAAS,YAAY,oBAAoB;AAEzC,
|
|
4
|
+
"mappings": "AAAA,SAAS,cAAc;AACvB,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAC5B,SAAS,wBAAwB;AACjC,SAAS,YAAY,oBAAoB;AAEzC,MAAM,oBAAmC,iBAAiB,GAAG,gBAGvD,kBAAkB,CAAC;AAGzB,WAAW,qBAAwB;AAEnC,MAAM,WAAW,oBAAI,QAAQ,GAMhB,YAAY,CAAC,OAAY,SAAS,OAAS;AACtD,QAAM,WAAW,aAAa,OAAO,MAAM,GAErC,aAAa,OAA2B,MAAS;AACvD,EAAI,SAAS,CAAC,WAAW,YACvB,WAAW,UAAU,YAAY,KAAK;AAExC,QAAM,UAAU,WAAW,WAAW;AAKtC,MAA+C,OAAO,SAAW,KAAa;AAC5E,QAAI,CAAC,MAAO,QAAO,CAAC;AACpB,UAAM,UAAU,SAAS,IAAI,KAAK,GAC5B,QAAQ,gBAAgB,OAAO;AACrC,QAAI,MAAO,QAAO;AAElB,QAAI,CAAC,SAAS;AACZ,YAAMA,WAAU,IAAI,QAAc,CAAC,KAAK,QAAQ;AAC9C,yBAAiB,KAAK,EACnB,KAAK,CAAC,QAAQ;AACb,0BAAgB,OAAO,IAAI,KAC3B,IAAI;AAAA,QACN,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,mBAAS,IAAI,OAAO,IAAI,GACxB,IAAI,GAAG;AAAA,QACT,CAAC;AAAA,MACL,CAAC;AACD,qBAAS,IAAI,OAAOA,QAAO,GACrBA;AAAA,IACR;AAEA,QAAI,QAAS,OAAM;AAEnB,WAAO,CAAC;AAAA,EACV;AAEA,SAAI,qBAAqB,CAAC,WACjB,kBAAkB,OAAO,KAAK,CAAC,IAGjC,YAAY,CAAC;AACtB;",
|
|
5
5
|
"names": ["promise"]
|
|
6
6
|
}
|
|
@@ -3,8 +3,8 @@ import { getServerContext } from "../vite/one-server-only.mjs";
|
|
|
3
3
|
import { getQueryKey } from "./getQueryKey.mjs";
|
|
4
4
|
import { resolveZeroQuery } from "./resolveQuery.mjs";
|
|
5
5
|
import { useQuery as useQueryZero } from "./useQueryZero.mjs";
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
const clientInitialData = getServerContext()?.postRenderData,
|
|
7
|
+
serverQueryData = {};
|
|
8
8
|
globalThis.__vxrnServerData__ = serverQueryData;
|
|
9
9
|
const promises = /* @__PURE__ */new WeakMap(),
|
|
10
10
|
useQuery = (query, enable = !0) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","getServerContext","getQueryKey","resolveZeroQuery","useQuery","useQueryZero","clientInitialData","postRenderData","serverQueryData","globalThis","__vxrnServerData__","promises","WeakMap","query","enable","snapshot","queryIdRef","current","queryId","window","promise","get","value","promise2","Promise","res","rej","then","val","catch","err","set"],"sources":["../../../src/zero/useQuery.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AACvB,SAASC,gBAAA,QAAwB;AACjC,SAASC,WAAA,QAAmB;AAC5B,SAASC,gBAAA,QAAwB;AACjC,SAASC,QAAA,IAAYC,YAAA,QAAoB;AAEzC,
|
|
1
|
+
{"version":3,"names":["useRef","getServerContext","getQueryKey","resolveZeroQuery","useQuery","useQueryZero","clientInitialData","postRenderData","serverQueryData","globalThis","__vxrnServerData__","promises","WeakMap","query","enable","snapshot","queryIdRef","current","queryId","window","promise","get","value","promise2","Promise","res","rej","then","val","catch","err","set"],"sources":["../../../src/zero/useQuery.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AACvB,SAASC,gBAAA,QAAwB;AACjC,SAASC,WAAA,QAAmB;AAC5B,SAASC,gBAAA,QAAwB;AACjC,SAASC,QAAA,IAAYC,YAAA,QAAoB;AAEzC,MAAMC,iBAAA,GAAmCL,gBAAA,CAAiB,GAAGM,cAAA;EAGvDC,eAAA,GAAkB,CAAC;AAGzBC,UAAA,CAAWC,kBAAA,GAAwBF,eAAA;AAEnC,MAAMG,QAAA,GAAW,mBAAIC,OAAA,CAAQ;EAMhBR,QAAA,GAAYA,CAACS,KAAA,EAAYC,MAAA,GAAS,OAAS;IACtD,MAAMC,QAAA,GAAWV,YAAA,CAAaQ,KAAA,EAAOC,MAAM;MAErCE,UAAA,GAAahB,MAAA,CAA2B,MAAS;IACnDa,KAAA,IAAS,CAACG,UAAA,CAAWC,OAAA,KACvBD,UAAA,CAAWC,OAAA,GAAUf,WAAA,CAAYW,KAAK;IAExC,MAAMK,OAAA,GAAUF,UAAA,CAAWC,OAAA,IAAW;IAKtC,IAA+C,OAAOE,MAAA,GAAW,KAAa;MAC5E,IAAI,CAACN,KAAA,EAAO,OAAO,EAAC;MACpB,MAAMO,OAAA,GAAUT,QAAA,CAASU,GAAA,CAAIR,KAAK;QAC5BS,KAAA,GAAQd,eAAA,CAAgBU,OAAO;MACrC,IAAII,KAAA,EAAO,OAAOA,KAAA;MAElB,IAAI,CAACF,OAAA,EAAS;QACZ,MAAMG,QAAA,GAAU,IAAIC,OAAA,CAAc,CAACC,GAAA,EAAKC,GAAA,KAAQ;UAC9CvB,gBAAA,CAAiBU,KAAK,EACnBc,IAAA,CAAMC,GAAA,IAAQ;YACbpB,eAAA,CAAgBU,OAAO,IAAIU,GAAA,EAC3BH,GAAA,CAAI;UACN,CAAC,EACAI,KAAA,CAAOC,GAAA,IAAQ;YACdnB,QAAA,CAASoB,GAAA,CAAIlB,KAAA,EAAO,IAAI,GACxBa,GAAA,CAAII,GAAG;UACT,CAAC;QACL,CAAC;QACD,MAAAnB,QAAA,CAASoB,GAAA,CAAIlB,KAAA,EAAOU,QAAO,GACrBA,QAAA;MACR;MAEA,IAAIH,OAAA,EAAS,MAAMA,OAAA;MAEnB,OAAO,EAAC;IACV;IAEA,OAAId,iBAAA,IAAqB,CAACS,QAAA,GACjBT,iBAAA,CAAkBY,OAAO,KAAK,EAAC,GAGjCH,QAAA,IAAY,EAAC;EACtB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","getServerContext","getQueryKey","useQuery","useQueryZero","_getServerContext","clientInitialData","postRenderData","serverQueryData","globalThis","__vxrnServerData__","query","enable","arguments","length","snapshot","queryIdRef","current","queryId","promise","value","promise1"],"sources":["../../../src/zero/useQuery.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AACvB,SAASC,gBAAA,QAAwB;AACjC,SAASC,WAAA,QAAmB;AAC5B,iCAAS;AACT,SAASC,QAAA,IAAYC,YAAA,QAAoB;AAEzC,
|
|
1
|
+
{"version":3,"names":["useRef","getServerContext","getQueryKey","useQuery","useQueryZero","_getServerContext","clientInitialData","postRenderData","serverQueryData","globalThis","__vxrnServerData__","query","enable","arguments","length","snapshot","queryIdRef","current","queryId","promise","value","promise1"],"sources":["../../../src/zero/useQuery.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AACvB,SAASC,gBAAA,QAAwB;AACjC,SAASC,WAAA,QAAmB;AAC5B,iCAAS;AACT,SAASC,QAAA,IAAYC,YAAA,QAAoB;AAEzC,IAAAC,iBAAM;EAAAC,iBAAmC,GAAiB,CAAAD,iBAAG,GAGvDJ,gBAAkB,CAAC,eAAAI,iBAAA,uBAAAA,iBAAA,CAAAE,cAAA;EAAAC,eAAA;AAGzBC,UAAA,CAAWC,kBAAA,GAAwBF,eAAA;AAEnC,IAAAL,QAAM,YAAAA,CAAWQ,KAAA;EAOf,IAAAC,MAAM,GAAAC,SAAW,CAAAC,MAAA,GAAa,KAAOD,SAE/B,aAAa,IAAAA,SAAoC;IAAAE,QAAA,GAAAX,YAAA,CAAAO,KAAA,EAAAC,MAAA;IAAAI,UAAA,GAAAhB,MAAA;EACnDW,KAAA,IAAS,CAACK,UAAA,CAAWC,OAAA,KACvBD,UAAA,CAAWC,OAAA,GAAUf,WAAA,CAAYS,KAAK;EAExC,IAAAO,OAAM,GAAAF,UAAU,CAAAC,OAAW,MAAW;EAKtC,IAA+C;IAC7C,IAAIE,OAAQ,EAAAC,KAAA;IACZ,KAAAD,OAAM,EAEN,IAAIE,QAAO;EAEX;EACE,OAAAf,iBAAgB,IAAI,CAAAS,QAAe,GAAKT,iBAAQ,CAAAY,OAAA,UAAAH,QAAA;AAC9C;AAEI,SACIZ,QACL","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "one",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.54",
|
|
4
4
|
"license": "BSD-3-Clause",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"setup.mjs",
|
|
@@ -130,17 +130,17 @@
|
|
|
130
130
|
"@react-navigation/routers": "~7.5.1",
|
|
131
131
|
"@swc/core": "^1.14.0",
|
|
132
132
|
"@ungap/structured-clone": "^1.2.0",
|
|
133
|
-
"@vxrn/color-scheme": "1.2.
|
|
134
|
-
"@vxrn/compiler": "1.2.
|
|
135
|
-
"@vxrn/resolve": "1.2.
|
|
136
|
-
"@vxrn/tslib-lite": "1.2.
|
|
137
|
-
"@vxrn/use-isomorphic-layout-effect": "1.2.
|
|
138
|
-
"@vxrn/vite-plugin-metro": "1.2.
|
|
133
|
+
"@vxrn/color-scheme": "1.2.54",
|
|
134
|
+
"@vxrn/compiler": "1.2.54",
|
|
135
|
+
"@vxrn/resolve": "1.2.54",
|
|
136
|
+
"@vxrn/tslib-lite": "1.2.54",
|
|
137
|
+
"@vxrn/use-isomorphic-layout-effect": "1.2.54",
|
|
138
|
+
"@vxrn/vite-plugin-metro": "1.2.54",
|
|
139
139
|
"babel-dead-code-elimination": "^1.0.10",
|
|
140
140
|
"babel-plugin-module-resolver": "^5.0.2",
|
|
141
141
|
"citty": "^0.1.6",
|
|
142
142
|
"core-js": "^3.38.1",
|
|
143
|
-
"create-vxrn": "1.2.
|
|
143
|
+
"create-vxrn": "1.2.54",
|
|
144
144
|
"escape-string-regexp": "^5.0.0",
|
|
145
145
|
"expo-linking": "~8.0.8",
|
|
146
146
|
"expo-modules-core": "~3.0.24",
|
|
@@ -166,7 +166,7 @@
|
|
|
166
166
|
"vite": "^7.1.12",
|
|
167
167
|
"vite-plugin-barrel": "^0.4.1",
|
|
168
168
|
"vite-tsconfig-paths": "^5.1.4",
|
|
169
|
-
"vxrn": "1.2.
|
|
169
|
+
"vxrn": "1.2.54",
|
|
170
170
|
"ws": "^8.18.0",
|
|
171
171
|
"xxhashjs": "^0.2.2"
|
|
172
172
|
},
|
|
@@ -174,11 +174,15 @@
|
|
|
174
174
|
"@react-navigation/native": "~7.1.0",
|
|
175
175
|
"react-native": "*",
|
|
176
176
|
"react-native-safe-area-context": "~5.6.1",
|
|
177
|
-
"react-native-screens": "~4.16.0"
|
|
177
|
+
"react-native-screens": "~4.16.0",
|
|
178
|
+
"sharp": ">=0.33.0"
|
|
178
179
|
},
|
|
179
180
|
"peerDependenciesMeta": {
|
|
180
181
|
"react-native": {
|
|
181
182
|
"optional": true
|
|
183
|
+
},
|
|
184
|
+
"sharp": {
|
|
185
|
+
"optional": true
|
|
182
186
|
}
|
|
183
187
|
},
|
|
184
188
|
"devDependencies": {
|
package/src/cli/build.ts
CHANGED
|
@@ -17,6 +17,7 @@ import * as constants from '../constants'
|
|
|
17
17
|
import { setServerGlobals } from '../server/setServerGlobals'
|
|
18
18
|
import { getPathnameFromFilePath } from '../utils/getPathnameFromFilePath'
|
|
19
19
|
import { getRouterRootFromOneOptions } from '../utils/getRouterRootFromOneOptions'
|
|
20
|
+
import { isRolldown } from '../utils/isRolldown'
|
|
20
21
|
import { toAbsolute } from '../utils/toAbsolute'
|
|
21
22
|
import { buildVercelOutputDirectory } from '../vercel/build/buildVercelOutputDirectory'
|
|
22
23
|
import { getManifest } from '../vite/getManifest'
|
|
@@ -27,7 +28,6 @@ import { buildPage } from './buildPage'
|
|
|
27
28
|
import { checkNodeVersion } from './checkNodeVersion'
|
|
28
29
|
import { generateSitemap, type RouteSitemapData } from './generateSitemap'
|
|
29
30
|
import { labelProcess } from './label-process'
|
|
30
|
-
import { isRolldown } from '../utils/isRolldown'
|
|
31
31
|
|
|
32
32
|
const { ensureDir, writeJSON } = FSExtra
|
|
33
33
|
|
|
@@ -616,7 +616,7 @@ export async function build(args: {
|
|
|
616
616
|
} = route
|
|
617
617
|
|
|
618
618
|
routeToBuildInfo[route.routeFile] = rest
|
|
619
|
-
for (
|
|
619
|
+
for (const p of getCleanPaths([route.path, route.cleanPath])) {
|
|
620
620
|
pathToRoute[p] = route.routeFile
|
|
621
621
|
}
|
|
622
622
|
preloads[route.preloadPath] = true
|
|
@@ -675,7 +675,7 @@ export async function build(args: {
|
|
|
675
675
|
console.info(`\n 📄 generated sitemap.xml (${sitemapData.length} URLs)\n`)
|
|
676
676
|
}
|
|
677
677
|
|
|
678
|
-
|
|
678
|
+
const postBuildLogs: string[] = []
|
|
679
679
|
|
|
680
680
|
const platform = oneOptions.web?.deploy
|
|
681
681
|
|
|
@@ -685,6 +685,21 @@ export async function build(args: {
|
|
|
685
685
|
|
|
686
686
|
switch (platform) {
|
|
687
687
|
case 'vercel': {
|
|
688
|
+
// Check for cleanUrls in vercel.json - required for SSG direct URL access
|
|
689
|
+
const vercelJsonPath = join(options.root, 'vercel.json')
|
|
690
|
+
if (FSExtra.existsSync(vercelJsonPath)) {
|
|
691
|
+
try {
|
|
692
|
+
const vercelConfig = JSON.parse(FSExtra.readFileSync(vercelJsonPath, 'utf-8'))
|
|
693
|
+
if (!vercelConfig.cleanUrls) {
|
|
694
|
+
console.warn(`\n ⚠️ Warning: Your vercel.json is missing "cleanUrls": true`)
|
|
695
|
+
console.warn(` Without this, direct navigation to SSG pages will 404.`)
|
|
696
|
+
console.warn(` Add "cleanUrls": true to your vercel.json to fix this.\n`)
|
|
697
|
+
}
|
|
698
|
+
} catch {
|
|
699
|
+
// ignore parse errors
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
|
|
688
703
|
await buildVercelOutputDirectory({
|
|
689
704
|
apiOutput,
|
|
690
705
|
buildInfoForWriting,
|
package/src/cli/buildPage.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { join } from 'node:path'
|
|
|
2
2
|
import FSExtra from 'fs-extra'
|
|
3
3
|
import * as constants from '../constants'
|
|
4
4
|
import type { LoaderProps, RenderApp } from '../types'
|
|
5
|
-
import { getLoaderPath,
|
|
5
|
+
import { getLoaderPath, getPreloadCSSPath, getPreloadPath } from '../utils/cleanUrl'
|
|
6
6
|
import { isResponse } from '../utils/isResponse'
|
|
7
7
|
import { toAbsolute } from '../utils/toAbsolute'
|
|
8
8
|
import { replaceLoader } from '../vite/replaceLoader'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { generateSitemap, type RouteSitemapData } from './generateSitemap'
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, it } from 'vitest'
|
|
3
2
|
import type { One } from '../vite/types'
|
|
3
|
+
import { generateSitemap, type RouteSitemapData } from './generateSitemap'
|
|
4
4
|
|
|
5
5
|
describe('generateSitemap', () => {
|
|
6
6
|
let originalEnv: string | undefined
|
package/src/createApp.native.tsx
CHANGED
package/src/createApp.tsx
CHANGED
|
@@ -3,8 +3,8 @@ import './setup'
|
|
|
3
3
|
import { cloneElement } from 'react'
|
|
4
4
|
import { AppRegistry } from 'react-native'
|
|
5
5
|
import { resolveClientLoader } from './clientLoaderResolver'
|
|
6
|
-
import { render } from './render'
|
|
7
6
|
import { Root } from './Root'
|
|
7
|
+
import { render } from './render'
|
|
8
8
|
import { registerPreloadedRoute } from './router/useViteRoutes'
|
|
9
9
|
import type { RenderAppProps } from './types'
|
|
10
10
|
import { getServerHeadInsertions } from './useServerHeadInsertion'
|
|
@@ -36,7 +36,7 @@ export function createApp(options: CreateAppProps) {
|
|
|
36
36
|
ReactDOMServer.default?.renderToStaticMarkup
|
|
37
37
|
const renderToString = serverRender.renderToString
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
const {
|
|
40
40
|
loaderData,
|
|
41
41
|
loaderProps,
|
|
42
42
|
css,
|
|
@@ -88,7 +88,9 @@ export function createApp(options: CreateAppProps) {
|
|
|
88
88
|
try {
|
|
89
89
|
const extraHeadElements: React.ReactElement[] = []
|
|
90
90
|
|
|
91
|
-
const styleTag = Application.getStyleElement({
|
|
91
|
+
const styleTag = Application.getStyleElement({
|
|
92
|
+
nonce: process.env.ONE_NONCE,
|
|
93
|
+
})
|
|
92
94
|
if (styleTag) {
|
|
93
95
|
extraHeadElements.push(styleTag)
|
|
94
96
|
}
|
package/src/createMiddleware.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
// Isolated to suppress deprecation warning for deep import
|
|
2
2
|
// React Native 0.81+ discourages deep imports but doesn't provide official alternative yet
|
|
3
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
4
|
-
// @ts-ignore - Types not exported from react-native
|
|
5
3
|
export { default as getDevServer } from 'react-native/Libraries/Core/Devtools/getDevServer'
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,24 @@ export { createApp } from './createApp'
|
|
|
2
2
|
|
|
3
3
|
export type { One, OneRouter } from './interfaces/router'
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Image data returned by ?imagedata imports.
|
|
7
|
+
* Install `sharp` to enable this feature: `npm install sharp`
|
|
8
|
+
*
|
|
9
|
+
* NOTE: This interface is also declared in types/env.d.ts for Vite module augmentation.
|
|
10
|
+
* Keep both definitions in sync.
|
|
11
|
+
*/
|
|
12
|
+
export interface ImageData {
|
|
13
|
+
/** URL path to the image */
|
|
14
|
+
src: string
|
|
15
|
+
/** Image width in pixels */
|
|
16
|
+
width: number
|
|
17
|
+
/** Image height in pixels */
|
|
18
|
+
height: number
|
|
19
|
+
/** Base64 blur placeholder (10px wide) */
|
|
20
|
+
blurDataURL: string
|
|
21
|
+
}
|
|
22
|
+
|
|
5
23
|
import type { OneRouter } from './interfaces/router'
|
|
6
24
|
|
|
7
25
|
// if not overridden keep it as just string
|
|
@@ -70,13 +88,14 @@ export { registerPreloadedRoute } from './router/useViteRoutes'
|
|
|
70
88
|
export type { Endpoint, LoaderProps } from './types'
|
|
71
89
|
// React Navigation
|
|
72
90
|
export { useFocusEffect } from './useFocusEffect'
|
|
73
|
-
export { useLoader, useLoaderState } from './useLoader'
|
|
91
|
+
export { refetchLoader, useLoader, useLoaderState } from './useLoader'
|
|
74
92
|
export {
|
|
75
93
|
type ServerHeadInsertionCallback,
|
|
76
94
|
useServerHeadInsertion,
|
|
77
95
|
} from './useServerHeadInsertion'
|
|
78
96
|
export { isResponse } from './utils/isResponse'
|
|
79
97
|
export { redirect } from './utils/redirect'
|
|
98
|
+
export { watchFile } from './utils/watchFile'
|
|
80
99
|
export { ErrorBoundary } from './views/ErrorBoundary'
|
|
81
100
|
export { LoadProgressBar } from './views/LoadProgressBar'
|
|
82
101
|
export { Navigator, Slot } from './views/Navigator'
|
package/src/interfaces/router.ts
CHANGED
|
@@ -40,13 +40,17 @@ export namespace OneRouter {
|
|
|
40
40
|
: string
|
|
41
41
|
|
|
42
42
|
type DynamicRoutes<T extends string> =
|
|
43
|
-
__routes<T> extends {
|
|
43
|
+
__routes<T> extends {
|
|
44
|
+
DynamicRoutes: any
|
|
45
|
+
}
|
|
44
46
|
? T extends __routes<infer _>['DynamicRoutes']
|
|
45
47
|
? T
|
|
46
48
|
: never
|
|
47
49
|
: string
|
|
48
50
|
|
|
49
|
-
export type DynamicRouteTemplate = __routes extends {
|
|
51
|
+
export type DynamicRouteTemplate = __routes extends {
|
|
52
|
+
DynamicRouteTemplate: string
|
|
53
|
+
}
|
|
50
54
|
? __routes['DynamicRouteTemplate']
|
|
51
55
|
: string
|
|
52
56
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { metroPlugin } from '@vxrn/vite-plugin-metro'
|
|
2
|
-
import mm from 'micromatch'
|
|
3
1
|
import module from 'node:module'
|
|
4
2
|
import path from 'node:path'
|
|
3
|
+
import type { metroPlugin } from '@vxrn/vite-plugin-metro'
|
|
4
|
+
import mm from 'micromatch'
|
|
5
5
|
import tsconfigPaths from 'tsconfig-paths'
|
|
6
6
|
import {
|
|
7
7
|
API_ROUTE_GLOB_PATTERN,
|
package/src/router/Route.tsx
CHANGED
|
@@ -4,7 +4,11 @@ import type { One } from '../vite/types'
|
|
|
4
4
|
import { getContextKey } from './matchers'
|
|
5
5
|
import { RouteInfoContextProvider } from './RouteInfoContext'
|
|
6
6
|
|
|
7
|
-
export type DynamicConvention = {
|
|
7
|
+
export type DynamicConvention = {
|
|
8
|
+
name: string
|
|
9
|
+
deep: boolean
|
|
10
|
+
notFound?: boolean
|
|
11
|
+
}
|
|
8
12
|
|
|
9
13
|
export type LoadedRoute = {
|
|
10
14
|
ErrorBoundary?: React.ComponentType<ErrorBoundaryProps>
|
package/src/router/getRoutes.ts
CHANGED
|
@@ -550,7 +550,7 @@ function getLayoutNode(node: RouteNode, options: Options) {
|
|
|
550
550
|
const childMatchingGroup = node.children.find((child) => {
|
|
551
551
|
return child.route.replace(/\/index$/, '') === groupName
|
|
552
552
|
})
|
|
553
|
-
|
|
553
|
+
const initialRouteName = childMatchingGroup?.route
|
|
554
554
|
// const loaded = node.loadRoute()
|
|
555
555
|
// if (loaded?.unstable_settings) {
|
|
556
556
|
// // Allow unstable_settings={ initialRouteName: '...' } to override the default initial route name.
|
|
@@ -46,8 +46,14 @@ describe(matchDynamicName, () => {
|
|
|
46
46
|
it(`matches`, () => {
|
|
47
47
|
expect(matchDynamicName('[[...foobar]]')).toEqual(undefined)
|
|
48
48
|
expect(matchDynamicName('[[foobar]]')).toEqual(undefined)
|
|
49
|
-
expect(matchDynamicName('[...foobar]')).toEqual({
|
|
50
|
-
|
|
49
|
+
expect(matchDynamicName('[...foobar]')).toEqual({
|
|
50
|
+
name: 'foobar',
|
|
51
|
+
deep: true,
|
|
52
|
+
})
|
|
53
|
+
expect(matchDynamicName('[foobar]')).toEqual({
|
|
54
|
+
name: 'foobar',
|
|
55
|
+
deep: false,
|
|
56
|
+
})
|
|
51
57
|
expect(matchDynamicName('foobar')).toEqual(undefined)
|
|
52
58
|
})
|
|
53
59
|
})
|
package/src/router/router.ts
CHANGED
|
@@ -21,7 +21,7 @@ import type { OneRouter } from '../interfaces/router'
|
|
|
21
21
|
import { resolveHref } from '../link/href'
|
|
22
22
|
import { resolve } from '../link/path'
|
|
23
23
|
import { assertIsReady } from '../utils/assertIsReady'
|
|
24
|
-
import { getLoaderPath,
|
|
24
|
+
import { getLoaderPath, getPreloadCSSPath, getPreloadPath } from '../utils/cleanUrl'
|
|
25
25
|
import { dynamicImport } from '../utils/dynamicImport'
|
|
26
26
|
import { shouldLinkExternally } from '../utils/url'
|
|
27
27
|
import type { One } from '../vite/types'
|
|
@@ -457,7 +457,11 @@ function routeToScreen(
|
|
|
457
457
|
)
|
|
458
458
|
}
|
|
459
459
|
|
|
460
|
-
type RouteErrorBoundaryState = {
|
|
460
|
+
type RouteErrorBoundaryState = {
|
|
461
|
+
hasError: boolean
|
|
462
|
+
error: any
|
|
463
|
+
errorInfo: any
|
|
464
|
+
}
|
|
461
465
|
|
|
462
466
|
const ROUTE_ERROR_BOUNDARY_INITIAL_STATE = {
|
|
463
467
|
hasError: false,
|
|
@@ -530,12 +534,24 @@ class RouteErrorBoundary extends React.Component<
|
|
|
530
534
|
</TouchableOpacity>
|
|
531
535
|
<ScrollView contentContainerStyle={{ gap: 12 }}>
|
|
532
536
|
{error instanceof Error ? (
|
|
533
|
-
<Text
|
|
537
|
+
<Text
|
|
538
|
+
style={{
|
|
539
|
+
color: 'white',
|
|
540
|
+
fontSize: 12,
|
|
541
|
+
fontFamily: 'monospace',
|
|
542
|
+
}}
|
|
543
|
+
>
|
|
534
544
|
{error.stack}
|
|
535
545
|
</Text>
|
|
536
546
|
) : null}
|
|
537
547
|
{errorInfo?.componentStack ? (
|
|
538
|
-
<Text
|
|
548
|
+
<Text
|
|
549
|
+
style={{
|
|
550
|
+
color: 'white',
|
|
551
|
+
fontSize: 12,
|
|
552
|
+
fontFamily: 'monospace',
|
|
553
|
+
}}
|
|
554
|
+
>
|
|
539
555
|
Component Stack: {errorInfo.componentStack}
|
|
540
556
|
</Text>
|
|
541
557
|
) : null}
|
|
@@ -28,7 +28,7 @@ export function useViteRoutes(
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
// store preloaded modules so resolve() can use them synchronously
|
|
31
|
-
|
|
31
|
+
const preloadedModules: Record<string, any> = {}
|
|
32
32
|
|
|
33
33
|
export function registerPreloadedRoute(key: string, module: any): void {
|
|
34
34
|
preloadedModules[key] = module
|