@bleedingdev/modern-js-runtime 3.2.0-ultramodern.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/LICENSE +21 -0
- package/README.md +32 -0
- package/dist/cjs/cache/index.js +58 -0
- package/dist/cjs/cli/alias.js +68 -0
- package/dist/cjs/cli/code.js +193 -0
- package/dist/cjs/cli/constants.js +68 -0
- package/dist/cjs/cli/entry.js +53 -0
- package/dist/cjs/cli/index.js +166 -0
- package/dist/cjs/cli/ssr/index.js +240 -0
- package/dist/cjs/cli/ssr/loadable-bundler-plugin.js +131 -0
- package/dist/cjs/cli/ssr/mode.js +48 -0
- package/dist/cjs/cli/template.js +276 -0
- package/dist/cjs/cli/template.server.js +163 -0
- package/dist/cjs/common.js +44 -0
- package/dist/cjs/core/browser/hydrate.js +91 -0
- package/dist/cjs/core/browser/index.js +150 -0
- package/dist/cjs/core/browser/withCallback.js +47 -0
- package/dist/cjs/core/compat/hooks.js +75 -0
- package/dist/cjs/core/compat/index.js +46 -0
- package/dist/cjs/core/compat/requestContext.js +59 -0
- package/dist/cjs/core/config.js +36 -0
- package/dist/cjs/core/constants.js +48 -0
- package/dist/cjs/core/context/index.js +124 -0
- package/dist/cjs/core/context/monitors/default.js +44 -0
- package/dist/cjs/core/context/monitors/index.js +37 -0
- package/dist/cjs/core/context/monitors/index.server.js +41 -0
- package/dist/cjs/core/context/request/index.js +36 -0
- package/dist/cjs/core/context/request/index.server.js +40 -0
- package/dist/cjs/core/context/response/index.js +50 -0
- package/dist/cjs/core/context/response/index.server.js +71 -0
- package/dist/cjs/core/context/runtime.js +65 -0
- package/dist/cjs/core/context/serverPayload/index.js +40 -0
- package/dist/cjs/core/context/serverPayload/index.server.js +47 -0
- package/dist/cjs/core/index.js +43 -0
- package/dist/cjs/core/plugin/index.js +62 -0
- package/dist/cjs/core/plugin/types.js +18 -0
- package/dist/cjs/core/react/index.js +50 -0
- package/dist/cjs/core/react/wrapper.js +55 -0
- package/dist/cjs/core/server/constants.js +48 -0
- package/dist/cjs/core/server/helmet.js +75 -0
- package/dist/cjs/core/server/index.js +50 -0
- package/dist/cjs/core/server/react/index.js +40 -0
- package/dist/cjs/core/server/react/no-ssr-cache/index.js +43 -0
- package/dist/cjs/core/server/react/nossr/index.js +54 -0
- package/dist/cjs/core/server/requestHandler.js +218 -0
- package/dist/cjs/core/server/server.js +44 -0
- package/dist/cjs/core/server/shared.js +38 -0
- package/dist/cjs/core/server/stream/afterTemplate.js +103 -0
- package/dist/cjs/core/server/stream/beforeTemplate.js +111 -0
- package/dist/cjs/core/server/stream/createReadableStream.js +161 -0
- package/dist/cjs/core/server/stream/createReadableStream.worker.js +141 -0
- package/dist/cjs/core/server/stream/deferredScript.js +114 -0
- package/dist/cjs/core/server/stream/index.js +38 -0
- package/dist/cjs/core/server/stream/shared.js +154 -0
- package/dist/cjs/core/server/stream/template.js +47 -0
- package/dist/cjs/core/server/string/index.js +149 -0
- package/dist/cjs/core/server/string/loadable.js +146 -0
- package/dist/cjs/core/server/string/ssrData.js +151 -0
- package/dist/cjs/core/server/string/types.js +18 -0
- package/dist/cjs/core/server/tracer.js +52 -0
- package/dist/cjs/core/server/utils.js +88 -0
- package/dist/cjs/core/types.js +18 -0
- package/dist/cjs/document/Body.js +54 -0
- package/dist/cjs/document/Comment.js +49 -0
- package/dist/cjs/document/DocumentContext.js +51 -0
- package/dist/cjs/document/DocumentStructureContext.js +54 -0
- package/dist/cjs/document/Head.js +66 -0
- package/dist/cjs/document/Html.js +120 -0
- package/dist/cjs/document/Links.js +43 -0
- package/dist/cjs/document/Root.js +66 -0
- package/dist/cjs/document/Script.js +55 -0
- package/dist/cjs/document/Scripts.js +43 -0
- package/dist/cjs/document/Style.js +50 -0
- package/dist/cjs/document/Title.js +42 -0
- package/dist/cjs/document/cli/index.js +401 -0
- package/dist/cjs/document/constants.js +134 -0
- package/dist/cjs/document/index.js +135 -0
- package/dist/cjs/exports/config-routes.js +38 -0
- package/dist/cjs/exports/head.js +51 -0
- package/dist/cjs/exports/loadable.js +66 -0
- package/dist/cjs/exports/tanstack-router.js +91 -0
- package/dist/cjs/index.js +64 -0
- package/dist/cjs/internal.js +36 -0
- package/dist/cjs/react-server.js +50 -0
- package/dist/cjs/router/cli/code/getClientRoutes/getRoutes.js +159 -0
- package/dist/cjs/router/cli/code/getClientRoutes/index.js +36 -0
- package/dist/cjs/router/cli/code/getClientRoutes/utils.js +62 -0
- package/dist/cjs/router/cli/code/index.js +238 -0
- package/dist/cjs/router/cli/code/inspect.js +139 -0
- package/dist/cjs/router/cli/code/makeLegalIdentifier.js +43 -0
- package/dist/cjs/router/cli/code/nestedRoutes.js +233 -0
- package/dist/cjs/router/cli/code/tanstackTypes.js +378 -0
- package/dist/cjs/router/cli/code/templates.js +446 -0
- package/dist/cjs/router/cli/code/utils.js +151 -0
- package/dist/cjs/router/cli/config-routes/converter.js +129 -0
- package/dist/cjs/router/cli/config-routes/parseRouteConfig.js +155 -0
- package/dist/cjs/router/cli/constants.js +99 -0
- package/dist/cjs/router/cli/entry.js +105 -0
- package/dist/cjs/router/cli/handler.js +131 -0
- package/dist/cjs/router/cli/index.js +194 -0
- package/dist/cjs/router/index.js +58 -0
- package/dist/cjs/router/internal.js +64 -0
- package/dist/cjs/router/runtime/CSSLinks.js +46 -0
- package/dist/cjs/router/runtime/DefaultNotFound.js +47 -0
- package/dist/cjs/router/runtime/DeferredDataScripts.js +36 -0
- package/dist/cjs/router/runtime/DeferredDataScripts.node.js +154 -0
- package/dist/cjs/router/runtime/PrefetchLink.js +201 -0
- package/dist/cjs/router/runtime/constants.js +65 -0
- package/dist/cjs/router/runtime/hooks.js +57 -0
- package/dist/cjs/router/runtime/index.js +95 -0
- package/dist/cjs/router/runtime/internal.js +67 -0
- package/dist/cjs/router/runtime/lifecycle.js +148 -0
- package/dist/cjs/router/runtime/plugin.js +262 -0
- package/dist/cjs/router/runtime/plugin.node.js +226 -0
- package/dist/cjs/router/runtime/routerHelper.js +55 -0
- package/dist/cjs/router/runtime/rsc-router.js +377 -0
- package/dist/cjs/router/runtime/rsc.js +58 -0
- package/dist/cjs/router/runtime/server.js +58 -0
- package/dist/cjs/router/runtime/tanstack/basepathRewrite.js +62 -0
- package/dist/cjs/router/runtime/tanstack/dataMutation.js +345 -0
- package/dist/cjs/router/runtime/tanstack/plugin.js +239 -0
- package/dist/cjs/router/runtime/tanstack/plugin.node.js +278 -0
- package/dist/cjs/router/runtime/tanstack/prefetchLink.js +55 -0
- package/dist/cjs/router/runtime/tanstack/routeTree.js +469 -0
- package/dist/cjs/router/runtime/tanstack/rsc/ClientSlot.js +53 -0
- package/dist/cjs/router/runtime/tanstack/rsc/CompositeComponent.js +75 -0
- package/dist/cjs/router/runtime/tanstack/rsc/ReplayableStream.js +141 -0
- package/dist/cjs/router/runtime/tanstack/rsc/RscNodeRenderer.js +65 -0
- package/dist/cjs/router/runtime/tanstack/rsc/SlotContext.js +54 -0
- package/dist/cjs/router/runtime/tanstack/rsc/client.js +93 -0
- package/dist/cjs/router/runtime/tanstack/rsc/createRscProxy.js +141 -0
- package/dist/cjs/router/runtime/tanstack/rsc/index.js +42 -0
- package/dist/cjs/router/runtime/tanstack/rsc/server.js +246 -0
- package/dist/cjs/router/runtime/tanstack/rsc/slotUsageSanitizer.js +65 -0
- package/dist/cjs/router/runtime/tanstack/rsc/symbols.js +72 -0
- package/dist/cjs/router/runtime/types.js +18 -0
- package/dist/cjs/router/runtime/utils.js +243 -0
- package/dist/cjs/router/runtime/withRouter.js +48 -0
- package/dist/cjs/rsc/client.js +68 -0
- package/dist/cjs/rsc/server.js +58 -0
- package/dist/cjs/ssr/index.node.js +121 -0
- package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +84 -0
- package/dist/cjs/ssr/serverRender/renderToString/entry.js +195 -0
- package/dist/cjs/ssr/serverRender/types.js +36 -0
- package/dist/esm/cache/index.mjs +1 -0
- package/dist/esm/cli/alias.mjs +24 -0
- package/dist/esm/cli/code.mjs +149 -0
- package/dist/esm/cli/constants.mjs +10 -0
- package/dist/esm/cli/entry.mjs +6 -0
- package/dist/esm/cli/index.mjs +93 -0
- package/dist/esm/cli/ssr/index.mjs +190 -0
- package/dist/esm/cli/ssr/loadable-bundler-plugin.mjs +87 -0
- package/dist/esm/cli/ssr/mode.mjs +14 -0
- package/dist/esm/cli/template.mjs +211 -0
- package/dist/esm/cli/template.server.mjs +126 -0
- package/dist/esm/common.mjs +4 -0
- package/dist/esm/core/browser/hydrate.mjs +53 -0
- package/dist/esm/core/browser/index.mjs +104 -0
- package/dist/esm/core/browser/withCallback.mjs +13 -0
- package/dist/esm/core/compat/hooks.mjs +35 -0
- package/dist/esm/core/compat/index.mjs +12 -0
- package/dist/esm/core/compat/requestContext.mjs +22 -0
- package/dist/esm/core/config.mjs +2 -0
- package/dist/esm/core/constants.mjs +8 -0
- package/dist/esm/core/context/index.mjs +45 -0
- package/dist/esm/core/context/monitors/default.mjs +10 -0
- package/dist/esm/core/context/monitors/index.mjs +3 -0
- package/dist/esm/core/context/monitors/index.server.mjs +7 -0
- package/dist/esm/core/context/request/index.mjs +2 -0
- package/dist/esm/core/context/request/index.server.mjs +6 -0
- package/dist/esm/core/context/response/index.mjs +7 -0
- package/dist/esm/core/context/response/index.server.mjs +28 -0
- package/dist/esm/core/context/runtime.mjs +19 -0
- package/dist/esm/core/context/serverPayload/index.mjs +3 -0
- package/dist/esm/core/context/serverPayload/index.server.mjs +10 -0
- package/dist/esm/core/index.mjs +2 -0
- package/dist/esm/core/plugin/index.mjs +25 -0
- package/dist/esm/core/plugin/types.mjs +0 -0
- package/dist/esm/core/react/index.mjs +16 -0
- package/dist/esm/core/react/wrapper.mjs +21 -0
- package/dist/esm/core/server/constants.mjs +5 -0
- package/dist/esm/core/server/helmet.mjs +38 -0
- package/dist/esm/core/server/index.mjs +8 -0
- package/dist/esm/core/server/react/index.mjs +2 -0
- package/dist/esm/core/server/react/no-ssr-cache/index.mjs +9 -0
- package/dist/esm/core/server/react/nossr/index.mjs +10 -0
- package/dist/esm/core/server/requestHandler.mjs +174 -0
- package/dist/esm/core/server/server.mjs +3 -0
- package/dist/esm/core/server/shared.mjs +4 -0
- package/dist/esm/core/server/stream/afterTemplate.mjs +69 -0
- package/dist/esm/core/server/stream/beforeTemplate.mjs +67 -0
- package/dist/esm/core/server/stream/createReadableStream.mjs +127 -0
- package/dist/esm/core/server/stream/createReadableStream.worker.mjs +107 -0
- package/dist/esm/core/server/stream/deferredScript.mjs +62 -0
- package/dist/esm/core/server/stream/index.mjs +4 -0
- package/dist/esm/core/server/stream/shared.mjs +108 -0
- package/dist/esm/core/server/stream/template.mjs +13 -0
- package/dist/esm/core/server/string/index.mjs +104 -0
- package/dist/esm/core/server/string/loadable.mjs +112 -0
- package/dist/esm/core/server/string/ssrData.mjs +117 -0
- package/dist/esm/core/server/string/types.mjs +0 -0
- package/dist/esm/core/server/tracer.mjs +15 -0
- package/dist/esm/core/server/utils.mjs +39 -0
- package/dist/esm/core/types.mjs +0 -0
- package/dist/esm/document/Body.mjs +20 -0
- package/dist/esm/document/Comment.mjs +15 -0
- package/dist/esm/document/DocumentContext.mjs +7 -0
- package/dist/esm/document/DocumentStructureContext.mjs +10 -0
- package/dist/esm/document/Head.mjs +29 -0
- package/dist/esm/document/Html.mjs +86 -0
- package/dist/esm/document/Links.mjs +9 -0
- package/dist/esm/document/Root.mjs +29 -0
- package/dist/esm/document/Script.mjs +21 -0
- package/dist/esm/document/Scripts.mjs +9 -0
- package/dist/esm/document/Style.mjs +16 -0
- package/dist/esm/document/Title.mjs +8 -0
- package/dist/esm/document/cli/index.mjs +351 -0
- package/dist/esm/document/constants.mjs +34 -0
- package/dist/esm/document/index.mjs +12 -0
- package/dist/esm/exports/config-routes.mjs +4 -0
- package/dist/esm/exports/head.mjs +5 -0
- package/dist/esm/exports/loadable.mjs +4 -0
- package/dist/esm/exports/tanstack-router.mjs +3 -0
- package/dist/esm/index.mjs +5 -0
- package/dist/esm/internal.mjs +1 -0
- package/dist/esm/react-server.mjs +3 -0
- package/dist/esm/router/cli/code/getClientRoutes/getRoutes.mjs +115 -0
- package/dist/esm/router/cli/code/getClientRoutes/index.mjs +1 -0
- package/dist/esm/router/cli/code/getClientRoutes/utils.mjs +12 -0
- package/dist/esm/router/cli/code/index.mjs +185 -0
- package/dist/esm/router/cli/code/inspect.mjs +95 -0
- package/dist/esm/router/cli/code/makeLegalIdentifier.mjs +9 -0
- package/dist/esm/router/cli/code/nestedRoutes.mjs +193 -0
- package/dist/esm/router/cli/code/tanstackTypes.mjs +331 -0
- package/dist/esm/router/cli/code/templates.mjs +393 -0
- package/dist/esm/router/cli/code/utils.mjs +82 -0
- package/dist/esm/router/cli/config-routes/converter.mjs +82 -0
- package/dist/esm/router/cli/config-routes/parseRouteConfig.mjs +105 -0
- package/dist/esm/router/cli/constants.mjs +32 -0
- package/dist/esm/router/cli/entry.mjs +40 -0
- package/dist/esm/router/cli/handler.mjs +81 -0
- package/dist/esm/router/cli/index.mjs +127 -0
- package/dist/esm/router/index.mjs +1 -0
- package/dist/esm/router/internal.mjs +2 -0
- package/dist/esm/router/runtime/CSSLinks.mjs +12 -0
- package/dist/esm/router/runtime/DefaultNotFound.mjs +13 -0
- package/dist/esm/router/runtime/DeferredDataScripts.mjs +2 -0
- package/dist/esm/router/runtime/DeferredDataScripts.node.mjs +120 -0
- package/dist/esm/router/runtime/PrefetchLink.mjs +154 -0
- package/dist/esm/router/runtime/constants.mjs +10 -0
- package/dist/esm/router/runtime/hooks.mjs +8 -0
- package/dist/esm/router/runtime/index.mjs +9 -0
- package/dist/esm/router/runtime/internal.mjs +25 -0
- package/dist/esm/router/runtime/lifecycle.mjs +96 -0
- package/dist/esm/router/runtime/plugin.mjs +219 -0
- package/dist/esm/router/runtime/plugin.node.mjs +179 -0
- package/dist/esm/router/runtime/routerHelper.mjs +15 -0
- package/dist/esm/router/runtime/rsc-router.mjs +321 -0
- package/dist/esm/router/runtime/rsc.mjs +1 -0
- package/dist/esm/router/runtime/server.mjs +1 -0
- package/dist/esm/router/runtime/tanstack/basepathRewrite.mjs +28 -0
- package/dist/esm/router/runtime/tanstack/dataMutation.mjs +305 -0
- package/dist/esm/router/runtime/tanstack/plugin.mjs +205 -0
- package/dist/esm/router/runtime/tanstack/plugin.node.mjs +244 -0
- package/dist/esm/router/runtime/tanstack/prefetchLink.mjs +18 -0
- package/dist/esm/router/runtime/tanstack/routeTree.mjs +429 -0
- package/dist/esm/router/runtime/tanstack/rsc/ClientSlot.mjs +19 -0
- package/dist/esm/router/runtime/tanstack/rsc/CompositeComponent.mjs +41 -0
- package/dist/esm/router/runtime/tanstack/rsc/ReplayableStream.mjs +104 -0
- package/dist/esm/router/runtime/tanstack/rsc/RscNodeRenderer.mjs +31 -0
- package/dist/esm/router/runtime/tanstack/rsc/SlotContext.mjs +17 -0
- package/dist/esm/router/runtime/tanstack/rsc/client.mjs +53 -0
- package/dist/esm/router/runtime/tanstack/rsc/createRscProxy.mjs +107 -0
- package/dist/esm/router/runtime/tanstack/rsc/index.mjs +1 -0
- package/dist/esm/router/runtime/tanstack/rsc/server.mjs +200 -0
- package/dist/esm/router/runtime/tanstack/rsc/slotUsageSanitizer.mjs +31 -0
- package/dist/esm/router/runtime/tanstack/rsc/symbols.mjs +17 -0
- package/dist/esm/router/runtime/types.mjs +0 -0
- package/dist/esm/router/runtime/utils.mjs +174 -0
- package/dist/esm/router/runtime/withRouter.mjs +14 -0
- package/dist/esm/rsc/client.mjs +3 -0
- package/dist/esm/rsc/server.mjs +1 -0
- package/dist/esm/ssr/index.node.mjs +44 -0
- package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.mjs +50 -0
- package/dist/esm/ssr/serverRender/renderToString/entry.mjs +148 -0
- package/dist/esm/ssr/serverRender/types.mjs +1 -0
- package/dist/esm-node/cache/index.mjs +2 -0
- package/dist/esm-node/cli/alias.mjs +25 -0
- package/dist/esm-node/cli/code.mjs +150 -0
- package/dist/esm-node/cli/constants.mjs +11 -0
- package/dist/esm-node/cli/entry.mjs +7 -0
- package/dist/esm-node/cli/index.mjs +95 -0
- package/dist/esm-node/cli/ssr/index.mjs +192 -0
- package/dist/esm-node/cli/ssr/loadable-bundler-plugin.mjs +88 -0
- package/dist/esm-node/cli/ssr/mode.mjs +15 -0
- package/dist/esm-node/cli/template.mjs +212 -0
- package/dist/esm-node/cli/template.server.mjs +127 -0
- package/dist/esm-node/common.mjs +5 -0
- package/dist/esm-node/core/browser/hydrate.mjs +54 -0
- package/dist/esm-node/core/browser/index.mjs +105 -0
- package/dist/esm-node/core/browser/withCallback.mjs +14 -0
- package/dist/esm-node/core/compat/hooks.mjs +36 -0
- package/dist/esm-node/core/compat/index.mjs +13 -0
- package/dist/esm-node/core/compat/requestContext.mjs +23 -0
- package/dist/esm-node/core/config.mjs +3 -0
- package/dist/esm-node/core/constants.mjs +9 -0
- package/dist/esm-node/core/context/index.mjs +46 -0
- package/dist/esm-node/core/context/monitors/default.mjs +11 -0
- package/dist/esm-node/core/context/monitors/index.mjs +4 -0
- package/dist/esm-node/core/context/monitors/index.server.mjs +8 -0
- package/dist/esm-node/core/context/request/index.mjs +3 -0
- package/dist/esm-node/core/context/request/index.server.mjs +7 -0
- package/dist/esm-node/core/context/response/index.mjs +8 -0
- package/dist/esm-node/core/context/response/index.server.mjs +29 -0
- package/dist/esm-node/core/context/runtime.mjs +20 -0
- package/dist/esm-node/core/context/serverPayload/index.mjs +4 -0
- package/dist/esm-node/core/context/serverPayload/index.server.mjs +11 -0
- package/dist/esm-node/core/index.mjs +3 -0
- package/dist/esm-node/core/plugin/index.mjs +26 -0
- package/dist/esm-node/core/plugin/types.mjs +1 -0
- package/dist/esm-node/core/react/index.mjs +17 -0
- package/dist/esm-node/core/react/wrapper.mjs +22 -0
- package/dist/esm-node/core/server/constants.mjs +6 -0
- package/dist/esm-node/core/server/helmet.mjs +39 -0
- package/dist/esm-node/core/server/index.mjs +9 -0
- package/dist/esm-node/core/server/react/index.mjs +3 -0
- package/dist/esm-node/core/server/react/no-ssr-cache/index.mjs +10 -0
- package/dist/esm-node/core/server/react/nossr/index.mjs +11 -0
- package/dist/esm-node/core/server/requestHandler.mjs +175 -0
- package/dist/esm-node/core/server/server.mjs +4 -0
- package/dist/esm-node/core/server/shared.mjs +5 -0
- package/dist/esm-node/core/server/stream/afterTemplate.mjs +70 -0
- package/dist/esm-node/core/server/stream/beforeTemplate.mjs +71 -0
- package/dist/esm-node/core/server/stream/createReadableStream.mjs +128 -0
- package/dist/esm-node/core/server/stream/createReadableStream.worker.mjs +108 -0
- package/dist/esm-node/core/server/stream/deferredScript.mjs +63 -0
- package/dist/esm-node/core/server/stream/index.mjs +5 -0
- package/dist/esm-node/core/server/stream/shared.mjs +109 -0
- package/dist/esm-node/core/server/stream/template.mjs +14 -0
- package/dist/esm-node/core/server/string/index.mjs +105 -0
- package/dist/esm-node/core/server/string/loadable.mjs +116 -0
- package/dist/esm-node/core/server/string/ssrData.mjs +118 -0
- package/dist/esm-node/core/server/string/types.mjs +1 -0
- package/dist/esm-node/core/server/tracer.mjs +16 -0
- package/dist/esm-node/core/server/utils.mjs +40 -0
- package/dist/esm-node/core/types.mjs +1 -0
- package/dist/esm-node/document/Body.mjs +21 -0
- package/dist/esm-node/document/Comment.mjs +16 -0
- package/dist/esm-node/document/DocumentContext.mjs +8 -0
- package/dist/esm-node/document/DocumentStructureContext.mjs +11 -0
- package/dist/esm-node/document/Head.mjs +30 -0
- package/dist/esm-node/document/Html.mjs +87 -0
- package/dist/esm-node/document/Links.mjs +10 -0
- package/dist/esm-node/document/Root.mjs +30 -0
- package/dist/esm-node/document/Script.mjs +22 -0
- package/dist/esm-node/document/Scripts.mjs +10 -0
- package/dist/esm-node/document/Style.mjs +17 -0
- package/dist/esm-node/document/Title.mjs +9 -0
- package/dist/esm-node/document/cli/index.mjs +353 -0
- package/dist/esm-node/document/constants.mjs +35 -0
- package/dist/esm-node/document/index.mjs +13 -0
- package/dist/esm-node/exports/config-routes.mjs +5 -0
- package/dist/esm-node/exports/head.mjs +6 -0
- package/dist/esm-node/exports/loadable.mjs +5 -0
- package/dist/esm-node/exports/tanstack-router.mjs +4 -0
- package/dist/esm-node/index.mjs +6 -0
- package/dist/esm-node/internal.mjs +2 -0
- package/dist/esm-node/react-server.mjs +4 -0
- package/dist/esm-node/router/cli/code/getClientRoutes/getRoutes.mjs +116 -0
- package/dist/esm-node/router/cli/code/getClientRoutes/index.mjs +2 -0
- package/dist/esm-node/router/cli/code/getClientRoutes/utils.mjs +13 -0
- package/dist/esm-node/router/cli/code/index.mjs +186 -0
- package/dist/esm-node/router/cli/code/inspect.mjs +96 -0
- package/dist/esm-node/router/cli/code/makeLegalIdentifier.mjs +10 -0
- package/dist/esm-node/router/cli/code/nestedRoutes.mjs +194 -0
- package/dist/esm-node/router/cli/code/tanstackTypes.mjs +332 -0
- package/dist/esm-node/router/cli/code/templates.mjs +395 -0
- package/dist/esm-node/router/cli/code/utils.mjs +83 -0
- package/dist/esm-node/router/cli/config-routes/converter.mjs +83 -0
- package/dist/esm-node/router/cli/config-routes/parseRouteConfig.mjs +106 -0
- package/dist/esm-node/router/cli/constants.mjs +33 -0
- package/dist/esm-node/router/cli/entry.mjs +41 -0
- package/dist/esm-node/router/cli/handler.mjs +82 -0
- package/dist/esm-node/router/cli/index.mjs +131 -0
- package/dist/esm-node/router/index.mjs +2 -0
- package/dist/esm-node/router/internal.mjs +3 -0
- package/dist/esm-node/router/runtime/CSSLinks.mjs +13 -0
- package/dist/esm-node/router/runtime/DefaultNotFound.mjs +14 -0
- package/dist/esm-node/router/runtime/DeferredDataScripts.mjs +3 -0
- package/dist/esm-node/router/runtime/DeferredDataScripts.node.mjs +121 -0
- package/dist/esm-node/router/runtime/PrefetchLink.mjs +155 -0
- package/dist/esm-node/router/runtime/constants.mjs +11 -0
- package/dist/esm-node/router/runtime/hooks.mjs +9 -0
- package/dist/esm-node/router/runtime/index.mjs +10 -0
- package/dist/esm-node/router/runtime/internal.mjs +26 -0
- package/dist/esm-node/router/runtime/lifecycle.mjs +97 -0
- package/dist/esm-node/router/runtime/plugin.mjs +220 -0
- package/dist/esm-node/router/runtime/plugin.node.mjs +180 -0
- package/dist/esm-node/router/runtime/routerHelper.mjs +16 -0
- package/dist/esm-node/router/runtime/rsc-router.mjs +322 -0
- package/dist/esm-node/router/runtime/rsc.mjs +2 -0
- package/dist/esm-node/router/runtime/server.mjs +2 -0
- package/dist/esm-node/router/runtime/tanstack/basepathRewrite.mjs +29 -0
- package/dist/esm-node/router/runtime/tanstack/dataMutation.mjs +306 -0
- package/dist/esm-node/router/runtime/tanstack/plugin.mjs +206 -0
- package/dist/esm-node/router/runtime/tanstack/plugin.node.mjs +245 -0
- package/dist/esm-node/router/runtime/tanstack/prefetchLink.mjs +19 -0
- package/dist/esm-node/router/runtime/tanstack/routeTree.mjs +430 -0
- package/dist/esm-node/router/runtime/tanstack/rsc/ClientSlot.mjs +20 -0
- package/dist/esm-node/router/runtime/tanstack/rsc/CompositeComponent.mjs +42 -0
- package/dist/esm-node/router/runtime/tanstack/rsc/ReplayableStream.mjs +105 -0
- package/dist/esm-node/router/runtime/tanstack/rsc/RscNodeRenderer.mjs +32 -0
- package/dist/esm-node/router/runtime/tanstack/rsc/SlotContext.mjs +18 -0
- package/dist/esm-node/router/runtime/tanstack/rsc/client.mjs +54 -0
- package/dist/esm-node/router/runtime/tanstack/rsc/createRscProxy.mjs +108 -0
- package/dist/esm-node/router/runtime/tanstack/rsc/index.mjs +2 -0
- package/dist/esm-node/router/runtime/tanstack/rsc/server.mjs +201 -0
- package/dist/esm-node/router/runtime/tanstack/rsc/slotUsageSanitizer.mjs +32 -0
- package/dist/esm-node/router/runtime/tanstack/rsc/symbols.mjs +18 -0
- package/dist/esm-node/router/runtime/types.mjs +1 -0
- package/dist/esm-node/router/runtime/utils.mjs +175 -0
- package/dist/esm-node/router/runtime/withRouter.mjs +15 -0
- package/dist/esm-node/rsc/client.mjs +4 -0
- package/dist/esm-node/rsc/server.mjs +2 -0
- package/dist/esm-node/ssr/index.node.mjs +45 -0
- package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.mjs +51 -0
- package/dist/esm-node/ssr/serverRender/renderToString/entry.mjs +149 -0
- package/dist/esm-node/ssr/serverRender/types.mjs +2 -0
- package/dist/types/cache/index.d.ts +1 -0
- package/dist/types/cli/alias.d.ts +7 -0
- package/dist/types/cli/code.d.ts +3 -0
- package/dist/types/cli/constants.d.ts +9 -0
- package/dist/types/cli/entry.d.ts +2 -0
- package/dist/types/cli/index.d.ts +11 -0
- package/dist/types/cli/ssr/index.d.ts +6 -0
- package/dist/types/cli/ssr/loadable-bundler-plugin.d.ts +31 -0
- package/dist/types/cli/ssr/mode.d.ts +15 -0
- package/dist/types/cli/template.d.ts +50 -0
- package/dist/types/cli/template.server.d.ts +20 -0
- package/dist/types/common.d.ts +8 -0
- package/dist/types/core/browser/hydrate.d.ts +5 -0
- package/dist/types/core/browser/index.d.ts +9 -0
- package/dist/types/core/browser/withCallback.d.ts +5 -0
- package/dist/types/core/compat/hooks.d.ts +4 -0
- package/dist/types/core/compat/index.d.ts +2 -0
- package/dist/types/core/compat/requestContext.d.ts +5 -0
- package/dist/types/core/config.d.ts +6 -0
- package/dist/types/core/constants.d.ts +6 -0
- package/dist/types/core/context/index.d.ts +50 -0
- package/dist/types/core/context/monitors/default.d.ts +2 -0
- package/dist/types/core/context/monitors/index.d.ts +1 -0
- package/dist/types/core/context/monitors/index.server.d.ts +2 -0
- package/dist/types/core/context/request/index.d.ts +1 -0
- package/dist/types/core/context/request/index.server.d.ts +1 -0
- package/dist/types/core/context/response/index.d.ts +4 -0
- package/dist/types/core/context/response/index.server.d.ts +7 -0
- package/dist/types/core/context/runtime.d.ts +42 -0
- package/dist/types/core/context/serverPayload/index.d.ts +4 -0
- package/dist/types/core/context/serverPayload/index.server.d.ts +31 -0
- package/dist/types/core/index.d.ts +5 -0
- package/dist/types/core/plugin/index.d.ts +4 -0
- package/dist/types/core/plugin/types.d.ts +10 -0
- package/dist/types/core/react/index.d.ts +2 -0
- package/dist/types/core/react/wrapper.d.ts +3 -0
- package/dist/types/core/server/constants.d.ts +4 -0
- package/dist/types/core/server/helmet.d.ts +3 -0
- package/dist/types/core/server/index.d.ts +4 -0
- package/dist/types/core/server/react/index.d.ts +2 -0
- package/dist/types/core/server/react/no-ssr-cache/index.d.ts +2 -0
- package/dist/types/core/server/react/nossr/index.d.ts +4 -0
- package/dist/types/core/server/requestHandler.d.ts +13 -0
- package/dist/types/core/server/server.d.ts +4 -0
- package/dist/types/core/server/shared.d.ts +8 -0
- package/dist/types/core/server/stream/afterTemplate.d.ts +13 -0
- package/dist/types/core/server/stream/beforeTemplate.d.ts +9 -0
- package/dist/types/core/server/stream/createReadableStream.d.ts +2 -0
- package/dist/types/core/server/stream/createReadableStream.worker.d.ts +2 -0
- package/dist/types/core/server/stream/deferredScript.d.ts +15 -0
- package/dist/types/core/server/stream/index.d.ts +1 -0
- package/dist/types/core/server/stream/shared.d.ts +33 -0
- package/dist/types/core/server/stream/template.d.ts +9 -0
- package/dist/types/core/server/string/index.d.ts +2 -0
- package/dist/types/core/server/string/loadable.d.ts +36 -0
- package/dist/types/core/server/string/ssrData.d.ts +20 -0
- package/dist/types/core/server/string/types.d.ts +12 -0
- package/dist/types/core/server/tracer.d.ts +17 -0
- package/dist/types/core/server/utils.d.ts +29 -0
- package/dist/types/core/types.d.ts +49 -0
- package/dist/types/document/Body.d.ts +2 -0
- package/dist/types/document/Comment.d.ts +5 -0
- package/dist/types/document/DocumentContext.d.ts +13 -0
- package/dist/types/document/DocumentStructureContext.d.ts +12 -0
- package/dist/types/document/Head.d.ts +5 -0
- package/dist/types/document/Html.d.ts +4 -0
- package/dist/types/document/Links.d.ts +2 -0
- package/dist/types/document/Root.d.ts +7 -0
- package/dist/types/document/Script.d.ts +4 -0
- package/dist/types/document/Scripts.d.ts +2 -0
- package/dist/types/document/Style.d.ts +5 -0
- package/dist/types/document/Title.d.ts +1 -0
- package/dist/types/document/cli/index.d.ts +5 -0
- package/dist/types/document/constants.d.ts +25 -0
- package/dist/types/document/index.d.ts +12 -0
- package/dist/types/exports/config-routes.d.ts +9 -0
- package/dist/types/exports/head.d.ts +4 -0
- package/dist/types/exports/loadable.d.ts +3 -0
- package/dist/types/exports/tanstack-router.d.ts +5 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/internal.d.ts +2 -0
- package/dist/types/react-server.d.ts +3 -0
- package/dist/types/router/cli/code/getClientRoutes/getRoutes.d.ts +8 -0
- package/dist/types/router/cli/code/getClientRoutes/index.d.ts +1 -0
- package/dist/types/router/cli/code/getClientRoutes/utils.d.ts +4 -0
- package/dist/types/router/cli/code/index.d.ts +12 -0
- package/dist/types/router/cli/code/inspect.d.ts +22 -0
- package/dist/types/router/cli/code/makeLegalIdentifier.d.ts +1 -0
- package/dist/types/router/cli/code/nestedRoutes.d.ts +13 -0
- package/dist/types/router/cli/code/tanstackTypes.d.ts +10 -0
- package/dist/types/router/cli/code/templates.d.ts +28 -0
- package/dist/types/router/cli/code/utils.d.ts +12 -0
- package/dist/types/router/cli/config-routes/converter.d.ts +15 -0
- package/dist/types/router/cli/config-routes/parseRouteConfig.d.ts +32 -0
- package/dist/types/router/cli/constants.d.ts +31 -0
- package/dist/types/router/cli/entry.d.ts +18 -0
- package/dist/types/router/cli/handler.d.ts +28 -0
- package/dist/types/router/cli/index.d.ts +5 -0
- package/dist/types/router/index.d.ts +1 -0
- package/dist/types/router/internal.d.ts +2 -0
- package/dist/types/router/runtime/CSSLinks.d.ts +9 -0
- package/dist/types/router/runtime/DefaultNotFound.d.ts +2 -0
- package/dist/types/router/runtime/DeferredDataScripts.d.ts +2 -0
- package/dist/types/router/runtime/DeferredDataScripts.node.d.ts +11 -0
- package/dist/types/router/runtime/PrefetchLink.d.ts +27 -0
- package/dist/types/router/runtime/constants.d.ts +146 -0
- package/dist/types/router/runtime/hooks.d.ts +18 -0
- package/dist/types/router/runtime/index.d.ts +7 -0
- package/dist/types/router/runtime/internal.d.ts +11 -0
- package/dist/types/router/runtime/lifecycle.d.ts +25 -0
- package/dist/types/router/runtime/plugin.d.ts +9 -0
- package/dist/types/router/runtime/plugin.node.d.ts +7 -0
- package/dist/types/router/runtime/routerHelper.d.ts +5 -0
- package/dist/types/router/runtime/rsc-router.d.ts +20 -0
- package/dist/types/router/runtime/rsc.d.ts +1 -0
- package/dist/types/router/runtime/server.d.ts +1 -0
- package/dist/types/router/runtime/tanstack/basepathRewrite.d.ts +8 -0
- package/dist/types/router/runtime/tanstack/dataMutation.d.ts +29 -0
- package/dist/types/router/runtime/tanstack/plugin.d.ts +6 -0
- package/dist/types/router/runtime/tanstack/plugin.node.d.ts +6 -0
- package/dist/types/router/runtime/tanstack/prefetchLink.d.ts +11 -0
- package/dist/types/router/runtime/tanstack/routeTree.d.ts +8 -0
- package/dist/types/router/runtime/tanstack/rsc/ClientSlot.d.ts +5 -0
- package/dist/types/router/runtime/tanstack/rsc/CompositeComponent.d.ts +3 -0
- package/dist/types/router/runtime/tanstack/rsc/ReplayableStream.d.ts +24 -0
- package/dist/types/router/runtime/tanstack/rsc/RscNodeRenderer.d.ts +5 -0
- package/dist/types/router/runtime/tanstack/rsc/SlotContext.d.ts +11 -0
- package/dist/types/router/runtime/tanstack/rsc/client.d.ts +11 -0
- package/dist/types/router/runtime/tanstack/rsc/createRscProxy.d.ts +7 -0
- package/dist/types/router/runtime/tanstack/rsc/index.d.ts +2 -0
- package/dist/types/router/runtime/tanstack/rsc/server.d.ts +14 -0
- package/dist/types/router/runtime/tanstack/rsc/slotUsageSanitizer.d.ts +2 -0
- package/dist/types/router/runtime/tanstack/rsc/symbols.d.ts +46 -0
- package/dist/types/router/runtime/types.d.ts +119 -0
- package/dist/types/router/runtime/utils.d.ts +48 -0
- package/dist/types/router/runtime/withRouter.d.ts +10 -0
- package/dist/types/rsc/client.d.ts +2 -0
- package/dist/types/rsc/server.d.ts +1 -0
- package/package.json +268 -0
- package/rslib.config.mts +19 -0
- package/rstest.config.mts +88 -0
- package/scripts/gen-static.mts +29 -0
- package/static/modern-inline.js +1 -0
- package/static/modern-run-router-data-fn.js +1 -0
- package/static/modern-run-window-fn.js +1 -0
- package/tsconfig.tsgo.json +6 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const NESTED_ROUTES_DIR = 'routes';
|
|
2
|
+
const FILE_SYSTEM_ROUTES_FILE_NAME = 'routes.js';
|
|
3
|
+
const LOADER_EXPORT_NAME = 'loader';
|
|
4
|
+
const ACTION_EXPORT_NAME = 'action';
|
|
5
|
+
const TEMP_LOADERS_DIR = '__loaders__';
|
|
6
|
+
const FILE_SYSTEM_ROUTES_INDEX = 'index';
|
|
7
|
+
const FILE_SYSTEM_ROUTES_IGNORED_REGEX = /\.(d|test|spec|e2e)\.(js|jsx|ts|tsx)$/;
|
|
8
|
+
const FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP = /^\[(\S+)\]([*+?]?)$/;
|
|
9
|
+
const FILE_SYSTEM_ROUTES_COMPONENTS_DIR = 'internal_components';
|
|
10
|
+
const APP_CONFIG_NAME = 'config';
|
|
11
|
+
const APP_INIT_EXPORTED = 'init';
|
|
12
|
+
const NESTED_ROUTE = {
|
|
13
|
+
LAYOUT_FILE: 'layout',
|
|
14
|
+
LAYOUT_CONFIG_FILE: 'layout.config',
|
|
15
|
+
LAYOUT_LOADER_FILE: 'layout.loader',
|
|
16
|
+
LAYOUT_DATA_FILE: 'layout.data',
|
|
17
|
+
LAYOUT_CLIENT_LOADER: 'layout.data.client',
|
|
18
|
+
PAGE_FILE: 'page',
|
|
19
|
+
PAGE_CONFIG_FILE: 'page.config',
|
|
20
|
+
PAGE_LOADER_FILE: 'page.loader',
|
|
21
|
+
PAGE_DATA_FILE: 'page.data',
|
|
22
|
+
PAGE_CLIENT_LOADER: 'page.data.client',
|
|
23
|
+
SPLATE_FILE: '$',
|
|
24
|
+
SPLATE_CONFIG_FILE: '$.config',
|
|
25
|
+
SPLATE_LOADER_FILE: '$.loader',
|
|
26
|
+
SPLATE_DATA_FILE: '$.data',
|
|
27
|
+
SPLATE_CLIENT_DATA: '$.data.client',
|
|
28
|
+
LOADING_FILE: 'loading',
|
|
29
|
+
ERROR_FILE: 'error',
|
|
30
|
+
LOADER_FILE: 'loader'
|
|
31
|
+
};
|
|
32
|
+
export { ACTION_EXPORT_NAME, APP_CONFIG_NAME, APP_INIT_EXPORTED, FILE_SYSTEM_ROUTES_COMPONENTS_DIR, FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP, FILE_SYSTEM_ROUTES_FILE_NAME, FILE_SYSTEM_ROUTES_IGNORED_REGEX, FILE_SYSTEM_ROUTES_INDEX, LOADER_EXPORT_NAME, NESTED_ROUTE, NESTED_ROUTES_DIR, TEMP_LOADERS_DIR };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { fs } from "@modern-js/utils";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { hasApp } from "../../cli/entry.mjs";
|
|
4
|
+
import { NESTED_ROUTES_DIR } from "./constants.mjs";
|
|
5
|
+
const ROUTES_DIR_META_KEY = '__modernRoutesDir';
|
|
6
|
+
const ROUTES_OWNER_META_KEY = '__modernRoutesOwner';
|
|
7
|
+
const BUILT_IN_ROUTES_OWNER = '@modern-js/plugin-router';
|
|
8
|
+
const getEntrypointRoutesDir = (entrypoint)=>{
|
|
9
|
+
if (entrypoint[ROUTES_DIR_META_KEY]) return entrypoint[ROUTES_DIR_META_KEY];
|
|
10
|
+
if (entrypoint.nestedRoutesEntry) return path.basename(entrypoint.nestedRoutesEntry);
|
|
11
|
+
return null;
|
|
12
|
+
};
|
|
13
|
+
const getEntrypointRoutesOwner = (entrypoint)=>entrypoint[ROUTES_OWNER_META_KEY] || null;
|
|
14
|
+
const hasNestedRoutes = (dir, routesDir = NESTED_ROUTES_DIR)=>fs.existsSync(path.join(dir, routesDir));
|
|
15
|
+
const isRouteEntry = (dir, routesDir = NESTED_ROUTES_DIR)=>{
|
|
16
|
+
if (hasNestedRoutes(dir, routesDir)) return path.join(dir, routesDir);
|
|
17
|
+
return false;
|
|
18
|
+
};
|
|
19
|
+
const modifyEntrypoints = (entrypoints, routesDir = NESTED_ROUTES_DIR, routesOwner)=>entrypoints.map((entrypoint)=>{
|
|
20
|
+
const entrypointWithMeta = entrypoint;
|
|
21
|
+
if (!entrypoint.isAutoMount) return entrypointWithMeta;
|
|
22
|
+
if (entrypoint?.isCustomSourceEntry) {
|
|
23
|
+
if (entrypoint.fileSystemRoutes) {
|
|
24
|
+
entrypointWithMeta.nestedRoutesEntry = entrypoint.absoluteEntryDir || entrypoint.entry;
|
|
25
|
+
entrypointWithMeta[ROUTES_DIR_META_KEY] = routesDir;
|
|
26
|
+
if (routesOwner) entrypointWithMeta[ROUTES_OWNER_META_KEY] = routesOwner;
|
|
27
|
+
}
|
|
28
|
+
return entrypointWithMeta;
|
|
29
|
+
}
|
|
30
|
+
const isHasApp = hasApp(entrypoint.absoluteEntryDir);
|
|
31
|
+
if (isHasApp) return entrypointWithMeta;
|
|
32
|
+
const isHasNestedRoutes = hasNestedRoutes(entrypoint.absoluteEntryDir, routesDir);
|
|
33
|
+
if (isHasNestedRoutes) {
|
|
34
|
+
entrypointWithMeta.nestedRoutesEntry = path.join(entrypoint.absoluteEntryDir, routesDir);
|
|
35
|
+
entrypointWithMeta[ROUTES_DIR_META_KEY] = routesDir;
|
|
36
|
+
if (routesOwner) entrypointWithMeta[ROUTES_OWNER_META_KEY] = routesOwner;
|
|
37
|
+
}
|
|
38
|
+
return entrypointWithMeta;
|
|
39
|
+
});
|
|
40
|
+
export { BUILT_IN_ROUTES_OWNER, ROUTES_DIR_META_KEY, ROUTES_OWNER_META_KEY, getEntrypointRoutesDir, getEntrypointRoutesOwner, hasNestedRoutes, isRouteEntry, modifyEntrypoints };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { getMeta } from "@modern-js/utils";
|
|
2
|
+
import { cloneDeep } from "@modern-js/utils/lodash";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { isPageComponentFile } from "./code/utils.mjs";
|
|
5
|
+
import { modifyEntrypoints } from "./entry.mjs";
|
|
6
|
+
import * as __rspack_external__code_templates_mjs_5e908598 from "./code/templates.mjs";
|
|
7
|
+
const DEFAULT_ENTRYPOINTS_KEY = '__default_router_entries__';
|
|
8
|
+
const originEntrypointsByKey = new Map();
|
|
9
|
+
async function handleModifyEntrypoints(entrypoints, routesDir, options = {}) {
|
|
10
|
+
return modifyEntrypoints(entrypoints, routesDir, options.routesOwner);
|
|
11
|
+
}
|
|
12
|
+
async function handleGeneratorEntryCode(api, entrypoints, options = {}) {
|
|
13
|
+
const normalizedOptions = 'string' == typeof options ? {
|
|
14
|
+
entrypointsKey: options
|
|
15
|
+
} : options;
|
|
16
|
+
const entrypointsKey = normalizedOptions.entrypointsKey || DEFAULT_ENTRYPOINTS_KEY;
|
|
17
|
+
const appContext = api.getAppContext();
|
|
18
|
+
const { internalDirectory } = appContext;
|
|
19
|
+
const resolvedConfig = api.getNormalizedConfig();
|
|
20
|
+
const { generatorRegisterCode, generateCode, generatorServerRegisterCode } = await import("./code/index.mjs");
|
|
21
|
+
originEntrypointsByKey.set(entrypointsKey, cloneDeep(entrypoints));
|
|
22
|
+
const enableRsc = resolvedConfig?.server?.rsc;
|
|
23
|
+
const routesByEntry = await generateCode(appContext, resolvedConfig, entrypoints, api, normalizedOptions.generateCodeOptions);
|
|
24
|
+
await Promise.all(entrypoints.map(async (entrypoint)=>{
|
|
25
|
+
if (entrypoint.nestedRoutesEntry || entrypoint.pageRoutesEntry) {
|
|
26
|
+
const route = appContext.serverRoutes.find((r)=>r.entryName === entrypoint.entryName);
|
|
27
|
+
const basename = route?.urlPath || '/';
|
|
28
|
+
generatorRegisterCode(internalDirectory, entrypoint.entryName, await __rspack_external__code_templates_mjs_5e908598.runtimeGlobalContext({
|
|
29
|
+
entryName: entrypoint.entryName,
|
|
30
|
+
metaName: appContext.metaName,
|
|
31
|
+
srcDirectory: appContext.srcDirectory,
|
|
32
|
+
nestedRoutesEntry: entrypoint.nestedRoutesEntry,
|
|
33
|
+
internalSrcAlias: appContext.internalSrcAlias,
|
|
34
|
+
globalApp: entrypoint.fileSystemRoutes?.globalApp,
|
|
35
|
+
rscType: enableRsc ? 'client' : void 0,
|
|
36
|
+
basename
|
|
37
|
+
}));
|
|
38
|
+
if (enableRsc) generatorServerRegisterCode(internalDirectory, entrypoint.entryName, await __rspack_external__code_templates_mjs_5e908598.runtimeGlobalContext({
|
|
39
|
+
entryName: entrypoint.entryName,
|
|
40
|
+
metaName: appContext.metaName,
|
|
41
|
+
srcDirectory: appContext.srcDirectory,
|
|
42
|
+
nestedRoutesEntry: entrypoint.nestedRoutesEntry,
|
|
43
|
+
internalSrcAlias: appContext.internalSrcAlias,
|
|
44
|
+
globalApp: entrypoint.fileSystemRoutes?.globalApp,
|
|
45
|
+
rscType: 'server',
|
|
46
|
+
basename
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
}));
|
|
50
|
+
return routesByEntry;
|
|
51
|
+
}
|
|
52
|
+
async function handleFileChange(api, e, options = {}) {
|
|
53
|
+
const { includeEntry, regenerate, entrypointsKey = DEFAULT_ENTRYPOINTS_KEY } = options;
|
|
54
|
+
const appContext = api.getAppContext();
|
|
55
|
+
const { appDirectory, entrypoints } = appContext;
|
|
56
|
+
const activeEntrypoints = includeEntry ? entrypoints.filter(includeEntry) : entrypoints;
|
|
57
|
+
const { filename, eventType } = e;
|
|
58
|
+
const nestedRouteEntries = activeEntrypoints.map((point)=>point.nestedRoutesEntry).filter(Boolean);
|
|
59
|
+
const pagesDir = activeEntrypoints.map((point)=>point.entry).filter((entry)=>entry && !path.extname(entry)).concat(nestedRouteEntries);
|
|
60
|
+
if (0 === pagesDir.length) return;
|
|
61
|
+
const isPageFile = (name)=>pagesDir.some((pageDir)=>name.includes(pageDir));
|
|
62
|
+
const absoluteFilePath = path.resolve(appDirectory, filename);
|
|
63
|
+
const isRouteComponent = isPageFile(absoluteFilePath) && isPageComponentFile(absoluteFilePath);
|
|
64
|
+
const meta = getMeta(appContext.metaName);
|
|
65
|
+
const normalizedFilename = filename.replace(/\\/g, '/');
|
|
66
|
+
const isConfigRoutesFile = normalizedFilename.includes(`${meta}.routes.`) && /\.(js|ts|jsx|tsx|mjs|mts)$/i.test(path.extname(filename));
|
|
67
|
+
if (isRouteComponent && ('add' === eventType || 'unlink' === eventType) || isConfigRoutesFile && ('change' === eventType || 'add' === eventType || 'unlink' === eventType)) {
|
|
68
|
+
const resolvedConfig = api.getNormalizedConfig();
|
|
69
|
+
const cachedEntrypoints = originEntrypointsByKey.get(entrypointsKey) || activeEntrypoints;
|
|
70
|
+
const entrypoints = cloneDeep(cachedEntrypoints).filter((entrypoint)=>includeEntry ? includeEntry(entrypoint) : true);
|
|
71
|
+
if (regenerate) return void await regenerate({
|
|
72
|
+
api,
|
|
73
|
+
appContext,
|
|
74
|
+
resolvedConfig,
|
|
75
|
+
entrypoints
|
|
76
|
+
});
|
|
77
|
+
const { generateCode } = await import("./code/index.mjs");
|
|
78
|
+
await generateCode(appContext, resolvedConfig, entrypoints, api);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export { handleFileChange, handleGeneratorEntryCode, handleModifyEntrypoints };
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import node_path from "node:path";
|
|
2
|
+
import { NESTED_ROUTE_SPEC_FILE, filterRoutesForServer, findExists, fs } from "@modern-js/utils";
|
|
3
|
+
import { NESTED_ROUTES_DIR } from "./constants.mjs";
|
|
4
|
+
import { BUILT_IN_ROUTES_OWNER, getEntrypointRoutesDir, getEntrypointRoutesOwner, isRouteEntry } from "./entry.mjs";
|
|
5
|
+
import { handleFileChange, handleGeneratorEntryCode, handleModifyEntrypoints } from "./handler.mjs";
|
|
6
|
+
const JS_OR_TS_EXTS = [
|
|
7
|
+
'.js',
|
|
8
|
+
'.jsx',
|
|
9
|
+
'.ts',
|
|
10
|
+
'.tsx',
|
|
11
|
+
'.mjs',
|
|
12
|
+
'.mts',
|
|
13
|
+
'.cjs',
|
|
14
|
+
'.cts'
|
|
15
|
+
];
|
|
16
|
+
function hasRouterConfigInRuntimeFile(runtimeConfigBase) {
|
|
17
|
+
const runtimeConfigFile = findExists(JS_OR_TS_EXTS.map((ext)=>`${runtimeConfigBase}${ext}`));
|
|
18
|
+
if (!runtimeConfigFile) return false;
|
|
19
|
+
try {
|
|
20
|
+
const content = fs.readFileSync(runtimeConfigFile, 'utf-8');
|
|
21
|
+
return /router\s*:/.test(content);
|
|
22
|
+
} catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function isBuiltInRouteEntrypoint(entrypoint) {
|
|
27
|
+
const entrypointRoutesOwner = getEntrypointRoutesOwner(entrypoint);
|
|
28
|
+
if (entrypointRoutesOwner) return entrypointRoutesOwner === BUILT_IN_ROUTES_OWNER;
|
|
29
|
+
if (entrypoint.pageRoutesEntry) return true;
|
|
30
|
+
const entrypointRoutesDir = getEntrypointRoutesDir(entrypoint);
|
|
31
|
+
if (entrypointRoutesDir) return entrypointRoutesDir === NESTED_ROUTES_DIR;
|
|
32
|
+
return Boolean(entrypoint.entry && isRouteEntry(entrypoint.entry));
|
|
33
|
+
}
|
|
34
|
+
function isPluginOwnedRouteEntrypoint(entrypoint) {
|
|
35
|
+
const entrypointRoutesOwner = getEntrypointRoutesOwner(entrypoint);
|
|
36
|
+
if (entrypointRoutesOwner) return entrypointRoutesOwner !== BUILT_IN_ROUTES_OWNER;
|
|
37
|
+
const entrypointRoutesDir = getEntrypointRoutesDir(entrypoint);
|
|
38
|
+
return Boolean(entrypointRoutesDir && entrypointRoutesDir !== NESTED_ROUTES_DIR);
|
|
39
|
+
}
|
|
40
|
+
const routerPlugin = ()=>({
|
|
41
|
+
name: '@modern-js/plugin-router',
|
|
42
|
+
required: [
|
|
43
|
+
'@modern-js/runtime'
|
|
44
|
+
],
|
|
45
|
+
setup: (api)=>{
|
|
46
|
+
const nestedRoutesForServer = {};
|
|
47
|
+
const { metaName } = api.getAppContext();
|
|
48
|
+
api.addCommand(({ program })=>{
|
|
49
|
+
program.command('routes').description('generate routes inspect report').action(async ()=>{
|
|
50
|
+
const { generateRoutesInspectReport } = await import("./code/inspect.mjs");
|
|
51
|
+
await generateRoutesInspectReport(api);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
api._internalRuntimePlugins(({ entrypoint, plugins })=>{
|
|
55
|
+
const { serverRoutes, metaName, srcDirectory, runtimeConfigFile } = api.getAppContext();
|
|
56
|
+
const normalizedConfig = api.getNormalizedConfig();
|
|
57
|
+
const hasUserRouterConfig = normalizedConfig.router && Object.keys(normalizedConfig.router).length > 0;
|
|
58
|
+
const hasRuntimeRouterConfig = hasRouterConfigInRuntimeFile(node_path.join(srcDirectory, runtimeConfigFile));
|
|
59
|
+
const serverBase = serverRoutes.filter((route)=>route.entryName === entrypoint.entryName).map((route)=>route.urlPath).sort((a, b)=>a.length - b.length > 0 ? -1 : 1);
|
|
60
|
+
const shouldInstallBuiltInRouter = isBuiltInRouteEntrypoint(entrypoint) || !isPluginOwnedRouteEntrypoint(entrypoint) && (hasUserRouterConfig || hasRuntimeRouterConfig);
|
|
61
|
+
if (shouldInstallBuiltInRouter) plugins.push({
|
|
62
|
+
name: 'router',
|
|
63
|
+
path: `@${metaName}/runtime/router/internal`,
|
|
64
|
+
config: {
|
|
65
|
+
serverBase
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
return {
|
|
69
|
+
entrypoint,
|
|
70
|
+
plugins
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
api.checkEntryPoint(({ path, entry })=>({
|
|
74
|
+
path,
|
|
75
|
+
entry: entry || isRouteEntry(path)
|
|
76
|
+
}));
|
|
77
|
+
api.config(()=>({
|
|
78
|
+
source: {
|
|
79
|
+
include: [
|
|
80
|
+
/[\\/]node_modules[\\/]react-router[\\/]/,
|
|
81
|
+
/[\\/]node_modules[\\/]react-router-dom[\\/]/,
|
|
82
|
+
node_path.resolve(__dirname, '../runtime').replace('cjs', 'esm')
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
}));
|
|
86
|
+
api.modifyEntrypoints(async ({ entrypoints })=>{
|
|
87
|
+
const newEntryPoints = await handleModifyEntrypoints(entrypoints);
|
|
88
|
+
return {
|
|
89
|
+
entrypoints: newEntryPoints
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
api.generateEntryCode(async ({ entrypoints })=>{
|
|
93
|
+
const builtInEntrypoints = entrypoints.filter(isBuiltInRouteEntrypoint);
|
|
94
|
+
if (builtInEntrypoints.length > 0) await handleGeneratorEntryCode(api, builtInEntrypoints);
|
|
95
|
+
});
|
|
96
|
+
api.onFileChanged(async (e)=>{
|
|
97
|
+
await handleFileChange(api, e, {
|
|
98
|
+
includeEntry: isBuiltInRouteEntrypoint
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
api.modifyFileSystemRoutes(({ entrypoint, routes })=>{
|
|
102
|
+
if (isBuiltInRouteEntrypoint(entrypoint)) nestedRoutesForServer[entrypoint.entryName] = filterRoutesForServer(routes);
|
|
103
|
+
return {
|
|
104
|
+
entrypoint,
|
|
105
|
+
routes
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
api.onBeforeGenerateRoutes(async ({ entrypoint, code })=>{
|
|
109
|
+
if (isBuiltInRouteEntrypoint(entrypoint)) {
|
|
110
|
+
const { distDirectory } = api.getAppContext();
|
|
111
|
+
const nestedRoutesSpecPath = node_path.resolve(distDirectory, NESTED_ROUTE_SPEC_FILE);
|
|
112
|
+
const existingNestedRoutes = await fs.pathExists(nestedRoutesSpecPath) ? await fs.readJSON(nestedRoutesSpecPath) : {};
|
|
113
|
+
await fs.outputJSON(nestedRoutesSpecPath, {
|
|
114
|
+
...existingNestedRoutes,
|
|
115
|
+
...nestedRoutesForServer
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
entrypoint,
|
|
120
|
+
code
|
|
121
|
+
};
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
const cli = routerPlugin;
|
|
126
|
+
export default cli;
|
|
127
|
+
export { BUILT_IN_ROUTES_OWNER, getEntrypointRoutesDir, getEntrypointRoutesOwner, handleFileChange, handleGeneratorEntryCode, handleModifyEntrypoints, isRouteEntry, routerPlugin };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./runtime/index.mjs";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
function CSSLinks({ cssFiles }) {
|
|
4
|
+
if (0 === cssFiles.length) return null;
|
|
5
|
+
return /*#__PURE__*/ jsx(Fragment, {
|
|
6
|
+
children: cssFiles.map((css)=>/*#__PURE__*/ jsx("link", {
|
|
7
|
+
href: css,
|
|
8
|
+
rel: "stylesheet"
|
|
9
|
+
}, css))
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export { CSSLinks };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
const DefaultNotFound = ()=>/*#__PURE__*/ jsx("div", {
|
|
4
|
+
style: {
|
|
5
|
+
margin: '150px auto',
|
|
6
|
+
textAlign: 'center',
|
|
7
|
+
display: 'flex',
|
|
8
|
+
alignItems: 'center',
|
|
9
|
+
justifyContent: 'center'
|
|
10
|
+
},
|
|
11
|
+
children: "404"
|
|
12
|
+
});
|
|
13
|
+
export { DefaultNotFound };
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { serializeJson, storage } from "@modern-js/runtime-utils/node";
|
|
3
|
+
import { useEffect, useMemo, useRef } from "react";
|
|
4
|
+
import { ROUTER_DATA_JSON_ID } from "../../core/constants.mjs";
|
|
5
|
+
import { modernInline, runWindowFnStr } from "./constants.mjs";
|
|
6
|
+
import { serializeErrors } from "./utils.mjs";
|
|
7
|
+
const DeferredDataScripts = (props)=>{
|
|
8
|
+
const staticContext = props?.context;
|
|
9
|
+
const useJsonScript = props?.useJsonScript;
|
|
10
|
+
const hydratedRef = useRef(false);
|
|
11
|
+
useEffect(()=>{
|
|
12
|
+
hydratedRef.current = true;
|
|
13
|
+
}, []);
|
|
14
|
+
const deferredScripts = useMemo(()=>{
|
|
15
|
+
if (!staticContext) return null;
|
|
16
|
+
const activeDeferreds = storage.useContext().activeDeferreds;
|
|
17
|
+
const _ROUTER_DATA = {
|
|
18
|
+
loaderData: staticContext.loaderData,
|
|
19
|
+
errors: serializeErrors(staticContext.errors)
|
|
20
|
+
};
|
|
21
|
+
const initialScript0 = useJsonScript ? `${serializeJson(_ROUTER_DATA)}` : '';
|
|
22
|
+
const initialScript1 = useJsonScript ? modernInline : [
|
|
23
|
+
`_ROUTER_DATA = ${serializeJson(_ROUTER_DATA)};`,
|
|
24
|
+
modernInline
|
|
25
|
+
].join('\n');
|
|
26
|
+
const deferredDataScripts = [];
|
|
27
|
+
const initialScripts = Array.from(activeDeferreds.entries()).map(([routeId, deferredData])=>{
|
|
28
|
+
const pendingKeys = new Set(deferredData.pendingKeys);
|
|
29
|
+
const { deferredKeys } = deferredData;
|
|
30
|
+
const deferredKeyPromiseManifests = deferredKeys.map((key)=>{
|
|
31
|
+
if (pendingKeys.has(key)) return {
|
|
32
|
+
key,
|
|
33
|
+
routerDataFnName: 's',
|
|
34
|
+
routerDataFnArgs: [
|
|
35
|
+
serializeJson(routeId),
|
|
36
|
+
serializeJson(key)
|
|
37
|
+
]
|
|
38
|
+
};
|
|
39
|
+
{
|
|
40
|
+
const trackedPromise = deferredData.data[key];
|
|
41
|
+
if (void 0 !== trackedPromise._error) {
|
|
42
|
+
const error = {
|
|
43
|
+
message: trackedPromise._error.message,
|
|
44
|
+
stack: 'production' !== process.env.NODE_ENV ? trackedPromise._error.stack : void 0
|
|
45
|
+
};
|
|
46
|
+
return {
|
|
47
|
+
key,
|
|
48
|
+
routerDataFnName: 'p',
|
|
49
|
+
routerDataFnArgs: [
|
|
50
|
+
serializeJson(void 0),
|
|
51
|
+
serializeJson(error)
|
|
52
|
+
]
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (void 0 === trackedPromise._data) throw new Error(`The deferred data for ${key} was not resolved, did you forget to return data from a deferred promise`);
|
|
56
|
+
return {
|
|
57
|
+
key,
|
|
58
|
+
routerDataFnName: 'p',
|
|
59
|
+
routerDataFnArgs: [
|
|
60
|
+
serializeJson(trackedPromise._data)
|
|
61
|
+
]
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
return {
|
|
66
|
+
fnName: "mergeLoaderData",
|
|
67
|
+
fnRun: runWindowFnStr,
|
|
68
|
+
fnArgs: [
|
|
69
|
+
routeId,
|
|
70
|
+
deferredKeyPromiseManifests
|
|
71
|
+
],
|
|
72
|
+
fnScriptSrc: 'modern-run-window-fn'
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
return [
|
|
76
|
+
initialScript0,
|
|
77
|
+
initialScript1,
|
|
78
|
+
initialScripts,
|
|
79
|
+
deferredDataScripts
|
|
80
|
+
];
|
|
81
|
+
}, []);
|
|
82
|
+
if (!deferredScripts) return null;
|
|
83
|
+
return /*#__PURE__*/ jsx(Fragment, {
|
|
84
|
+
children: !hydratedRef.current && /*#__PURE__*/ jsxs(Fragment, {
|
|
85
|
+
children: [
|
|
86
|
+
0 !== deferredScripts[0].length && /*#__PURE__*/ jsx("script", {
|
|
87
|
+
type: "application/json",
|
|
88
|
+
id: ROUTER_DATA_JSON_ID,
|
|
89
|
+
nonce: props?.nonce,
|
|
90
|
+
suppressHydrationWarning: true,
|
|
91
|
+
dangerouslySetInnerHTML: {
|
|
92
|
+
__html: deferredScripts[0]
|
|
93
|
+
}
|
|
94
|
+
}),
|
|
95
|
+
/*#__PURE__*/ jsx("script", {
|
|
96
|
+
async: true,
|
|
97
|
+
nonce: props?.nonce,
|
|
98
|
+
"data-script-src": "modern-inline",
|
|
99
|
+
suppressHydrationWarning: true,
|
|
100
|
+
dangerouslySetInnerHTML: {
|
|
101
|
+
__html: deferredScripts[1]
|
|
102
|
+
}
|
|
103
|
+
}),
|
|
104
|
+
deferredScripts[2].map(({ fnName, fnArgs, fnRun, fnScriptSrc })=>/*#__PURE__*/ jsx("script", {
|
|
105
|
+
async: true,
|
|
106
|
+
"data-script-src": fnScriptSrc,
|
|
107
|
+
"data-fn-name": fnName,
|
|
108
|
+
"data-fn-args": JSON.stringify(fnArgs),
|
|
109
|
+
nonce: props?.nonce,
|
|
110
|
+
suppressHydrationWarning: true,
|
|
111
|
+
dangerouslySetInnerHTML: {
|
|
112
|
+
__html: fnRun
|
|
113
|
+
}
|
|
114
|
+
}, fnName))
|
|
115
|
+
]
|
|
116
|
+
})
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
const DeferredDataScripts_node = DeferredDataScripts;
|
|
120
|
+
export default DeferredDataScripts_node;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Link as router_Link, NavLink, matchRoutes, useHref, useMatches, useResolvedPath } from "@modern-js/runtime-utils/router";
|
|
4
|
+
import react, { useContext, useMemo } from "react";
|
|
5
|
+
import { InternalRuntimeContext } from "../../core/context/index.mjs";
|
|
6
|
+
function composeEventHandlers(theirHandler, ourHandler) {
|
|
7
|
+
return (event)=>{
|
|
8
|
+
theirHandler?.(event);
|
|
9
|
+
if (!event.defaultPrevented) ourHandler(event);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
const ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
|
|
13
|
+
function usePrefetchBehavior(prefetch, theirElementProps) {
|
|
14
|
+
const [maybePrefetch, setMaybePrefetch] = react.useState(false);
|
|
15
|
+
const [shouldPrefetch, setShouldPrefetch] = react.useState(false);
|
|
16
|
+
const { onFocus, onBlur, onMouseEnter, onMouseLeave, onTouchStart } = theirElementProps;
|
|
17
|
+
react.useEffect(()=>{
|
|
18
|
+
if ('render' === prefetch) setShouldPrefetch(true);
|
|
19
|
+
}, [
|
|
20
|
+
prefetch
|
|
21
|
+
]);
|
|
22
|
+
const setIntent = ()=>{
|
|
23
|
+
if ('intent' === prefetch) setMaybePrefetch(true);
|
|
24
|
+
};
|
|
25
|
+
const cancelIntent = ()=>{
|
|
26
|
+
if ('intent' === prefetch) {
|
|
27
|
+
setMaybePrefetch(false);
|
|
28
|
+
setShouldPrefetch(false);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
react.useEffect(()=>{
|
|
32
|
+
if (maybePrefetch) {
|
|
33
|
+
const id = setTimeout(()=>{
|
|
34
|
+
setShouldPrefetch(true);
|
|
35
|
+
}, 100);
|
|
36
|
+
return ()=>{
|
|
37
|
+
clearTimeout(id);
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}, [
|
|
41
|
+
maybePrefetch
|
|
42
|
+
]);
|
|
43
|
+
return [
|
|
44
|
+
shouldPrefetch,
|
|
45
|
+
{
|
|
46
|
+
onFocus: composeEventHandlers(onFocus, setIntent),
|
|
47
|
+
onBlur: composeEventHandlers(onBlur, cancelIntent),
|
|
48
|
+
onMouseEnter: composeEventHandlers(onMouseEnter, setIntent),
|
|
49
|
+
onMouseLeave: composeEventHandlers(onMouseLeave, cancelIntent),
|
|
50
|
+
onTouchStart: composeEventHandlers(onTouchStart, setIntent)
|
|
51
|
+
}
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
async function loadRouteModule(route, routeAssets) {
|
|
55
|
+
const routeId = route.id;
|
|
56
|
+
if (!routeId) return;
|
|
57
|
+
if (!routeAssets[routeId]) return;
|
|
58
|
+
const { chunkIds } = routeAssets[routeId];
|
|
59
|
+
if (!chunkIds) return;
|
|
60
|
+
try {
|
|
61
|
+
await Promise.all(chunkIds.map((chunkId)=>__webpack_chunk_load__?.(chunkId)));
|
|
62
|
+
} catch (error) {
|
|
63
|
+
console.error(error);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const getRequestUrl = (pathname, routeId)=>{
|
|
67
|
+
const LOADER_ID_PARAM = '__loader';
|
|
68
|
+
const DIRECT_PARAM = '__ssrDirect';
|
|
69
|
+
const { protocol, host } = window.location;
|
|
70
|
+
const url = new URL(pathname, `${protocol}//${host}`);
|
|
71
|
+
url.searchParams.append(LOADER_ID_PARAM, routeId);
|
|
72
|
+
url.searchParams.append(DIRECT_PARAM, 'true');
|
|
73
|
+
return url;
|
|
74
|
+
};
|
|
75
|
+
const createDataHref = (href)=>/*#__PURE__*/ jsx("link", {
|
|
76
|
+
rel: "prefetch",
|
|
77
|
+
as: "fetch",
|
|
78
|
+
href: href
|
|
79
|
+
}, href);
|
|
80
|
+
const getDataHref = (route, pathname, basename)=>{
|
|
81
|
+
const { id } = route;
|
|
82
|
+
const path = '/' === basename ? pathname : `${basename}${pathname}`;
|
|
83
|
+
const url = getRequestUrl(path, id);
|
|
84
|
+
return createDataHref(url.toString());
|
|
85
|
+
};
|
|
86
|
+
const PrefetchPageLinks = ({ path })=>{
|
|
87
|
+
const { pathname } = path;
|
|
88
|
+
const context = useContext(InternalRuntimeContext);
|
|
89
|
+
const { routeManifest, routes } = context;
|
|
90
|
+
const { routeAssets } = routeManifest || {};
|
|
91
|
+
const matches = Array.isArray(routes) ? matchRoutes(routes, pathname) : [];
|
|
92
|
+
if (Array.isArray(matches) && routeAssets) matches?.forEach((match)=>loadRouteModule(match.route, routeAssets));
|
|
93
|
+
if (!window._SSR_DATA) return null;
|
|
94
|
+
return /*#__PURE__*/ jsx(PrefetchDataLinks, {
|
|
95
|
+
matches: matches,
|
|
96
|
+
path: path,
|
|
97
|
+
routeManifest: routeManifest
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
const PrefetchDataLinks = ({ matches, path, routeManifest })=>{
|
|
101
|
+
const { pathname, search, hash } = path;
|
|
102
|
+
const currentMatches = useMatches();
|
|
103
|
+
const basename = useHref('/');
|
|
104
|
+
const dataHrefs = useMemo(()=>matches?.filter((match, index)=>{
|
|
105
|
+
if (!match.route.loader || 'function' != typeof match.route.loader || 0 === match.route.loader.length) return false;
|
|
106
|
+
if (match.route.shouldRevalidate) {
|
|
107
|
+
const currentUrl = new URL(location.pathname + location.search + location.hash, window.origin);
|
|
108
|
+
const nextUrl = new URL(pathname + search + hash, window.origin);
|
|
109
|
+
const shouldLoad = match.route.shouldRevalidate({
|
|
110
|
+
currentUrl,
|
|
111
|
+
currentParams: currentMatches[0]?.params || {},
|
|
112
|
+
nextUrl,
|
|
113
|
+
nextParams: match.params,
|
|
114
|
+
defaultShouldRevalidate: true
|
|
115
|
+
});
|
|
116
|
+
if ('boolean' == typeof shouldLoad) return shouldLoad;
|
|
117
|
+
}
|
|
118
|
+
const currentMatch = currentMatches[index];
|
|
119
|
+
if (!currentMatch || currentMatch.id !== match.route.id) return true;
|
|
120
|
+
if (currentMatch.pathname !== match.pathname) return true;
|
|
121
|
+
if (currentMatch.pathname.endsWith('*') && currentMatch.params['*'] !== match.params['*']) return true;
|
|
122
|
+
return false;
|
|
123
|
+
}).map((match)=>getDataHref(match.route, pathname, basename)), [
|
|
124
|
+
matches,
|
|
125
|
+
pathname,
|
|
126
|
+
routeManifest
|
|
127
|
+
]);
|
|
128
|
+
return /*#__PURE__*/ jsx(Fragment, {
|
|
129
|
+
children: dataHrefs
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
const createPrefetchLink = (Link)=>/*#__PURE__*/ react.forwardRef(({ to, prefetch = 'none', ...props }, forwardedRef)=>{
|
|
133
|
+
const isAbsolute = 'string' == typeof to && ABSOLUTE_URL_REGEX.test(to);
|
|
134
|
+
const [shouldPrefetch, prefetchHandlers] = usePrefetchBehavior(prefetch, props);
|
|
135
|
+
const resolvedPath = useResolvedPath(to);
|
|
136
|
+
return /*#__PURE__*/ jsxs(Fragment, {
|
|
137
|
+
children: [
|
|
138
|
+
/*#__PURE__*/ jsx(Link, {
|
|
139
|
+
ref: forwardedRef,
|
|
140
|
+
to: to,
|
|
141
|
+
...props,
|
|
142
|
+
...prefetchHandlers
|
|
143
|
+
}),
|
|
144
|
+
shouldPrefetch && __webpack_chunk_load__ && !isAbsolute ? /*#__PURE__*/ jsx(PrefetchPageLinks, {
|
|
145
|
+
path: resolvedPath
|
|
146
|
+
}) : null
|
|
147
|
+
]
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
const PrefetchLink_Link = createPrefetchLink(router_Link);
|
|
151
|
+
PrefetchLink_Link.displayName = 'Link';
|
|
152
|
+
const PrefetchLink_NavLink = createPrefetchLink(NavLink);
|
|
153
|
+
PrefetchLink_NavLink.displayName = 'NavLink';
|
|
154
|
+
export { PrefetchLink_Link as Link, PrefetchLink_NavLink as NavLink };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ROUTER_DATA_JSON_ID } from "../../core/constants.mjs";
|
|
2
|
+
const setupFnStr = "function s(r,e){_ROUTER_DATA.r=_ROUTER_DATA.r||{},_ROUTER_DATA.r[r]=_ROUTER_DATA.r[r]||{};return new Promise((function(A,R){_ROUTER_DATA.r[r][e]={resolve:A,reject:R}}))};";
|
|
3
|
+
const resolveFnStr = "function r(e,r,o,A){A?_ROUTER_DATA.r[e][r].reject(A):_ROUTER_DATA.r[e][r].resolve(o)};";
|
|
4
|
+
const preResolvedFnStr = "function p(e,r){return void 0!==r?Promise.reject(new Error(r.message)):Promise.resolve(e)};";
|
|
5
|
+
const mergeLoaderDataStr = 'function mergeLoaderData(e,n){var r=n.reduce((function(e,{key:n,routerDataFnName:r,routerDataFnArgs:a}){var t=a.map((e=>{if("undefined"!==e&&null!==e)return JSON.parse(e)}));return{...e,[n]:_ROUTER_DATA[r](...t)}}),{});_ROUTER_DATA.loaderData=_ROUTER_DATA.loaderData||{},_ROUTER_DATA.loaderData[e]=_ROUTER_DATA.loaderData[e]||{},Object.assign(_ROUTER_DATA.loaderData[e],r)}';
|
|
6
|
+
const initRouterDataAttrs = `_ROUTER_DATA.s = ${setupFnStr}_ROUTER_DATA.r = ${resolveFnStr}_ROUTER_DATA.p = ${preResolvedFnStr}${mergeLoaderDataStr}`;
|
|
7
|
+
const modernInline = `function runWindowFn(){window[document.currentScript.getAttribute("data-fn-name")].apply(window,JSON.parse(document.currentScript.getAttribute("data-fn-args")))}function runRouterDataFn(){_ROUTER_DATA[document.currentScript.getAttribute("data-fn-name")].apply(_ROUTER_DATA,JSON.parse(document.currentScript.getAttribute("data-fn-args")))}function initRouterData(e){var r=document.getElementById(e);if(r)try{_ROUTER_DATA=JSON.parse(r.textContent)}catch(r){console.error("parse ".concat(e," error"),t),_ROUTER_DATA={}}};initRouterData('${ROUTER_DATA_JSON_ID}');${initRouterDataAttrs}`;
|
|
8
|
+
const runRouterDataFnStr = "runRouterDataFn();";
|
|
9
|
+
const runWindowFnStr = "runWindowFn();";
|
|
10
|
+
export { initRouterDataAttrs, mergeLoaderDataStr, modernInline, preResolvedFnStr, resolveFnStr, runRouterDataFnStr, runWindowFnStr, setupFnStr };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createSyncHook } from "@modern-js/plugin";
|
|
2
|
+
const modifyRoutes = createSyncHook();
|
|
3
|
+
const onBeforeCreateRoutes = createSyncHook();
|
|
4
|
+
const onBeforeCreateRouter = createSyncHook();
|
|
5
|
+
const onAfterCreateRouter = createSyncHook();
|
|
6
|
+
const onBeforeHydrateRouter = createSyncHook();
|
|
7
|
+
const onAfterHydrateRouter = createSyncHook();
|
|
8
|
+
export { modifyRoutes, onAfterCreateRouter, onAfterHydrateRouter, onBeforeCreateRouter, onBeforeCreateRoutes, onBeforeHydrateRouter };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useRouteLoaderData } from "@modern-js/runtime-utils/router";
|
|
2
|
+
export * from "@modern-js/runtime-utils/router";
|
|
3
|
+
export * from "./withRouter.mjs";
|
|
4
|
+
const runtime_useRouteLoaderData = (routeId)=>{
|
|
5
|
+
const realRouteId = routeId.replace(/\[(.*?)\]/g, '($1)');
|
|
6
|
+
return useRouteLoaderData(realRouteId);
|
|
7
|
+
};
|
|
8
|
+
export { Link, NavLink } from "./PrefetchLink.mjs";
|
|
9
|
+
export { runtime_useRouteLoaderData as useRouteLoaderData };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { merge } from "@modern-js/runtime-utils/merge";
|
|
2
|
+
import { modifyRoutes, onAfterCreateRouter, onAfterHydrateRouter, onBeforeCreateRouter, onBeforeCreateRoutes, onBeforeHydrateRouter } from "./hooks.mjs";
|
|
3
|
+
import { modifyRoutes as external_plugin_mjs_modifyRoutes, routerPlugin } from "./plugin.mjs";
|
|
4
|
+
import { tanstackRouterPlugin } from "./tanstack/plugin.mjs";
|
|
5
|
+
const internal_routerPlugin = (userConfig = {})=>({
|
|
6
|
+
name: '@modern-js/plugin-router',
|
|
7
|
+
registryHooks: {
|
|
8
|
+
onAfterCreateRouter: onAfterCreateRouter,
|
|
9
|
+
onAfterHydrateRouter: onAfterHydrateRouter,
|
|
10
|
+
onBeforeCreateRouter: onBeforeCreateRouter,
|
|
11
|
+
modifyRoutes: modifyRoutes,
|
|
12
|
+
onBeforeCreateRoutes: onBeforeCreateRoutes,
|
|
13
|
+
onBeforeHydrateRouter: onBeforeHydrateRouter
|
|
14
|
+
},
|
|
15
|
+
setup: (api)=>{
|
|
16
|
+
const mergedConfig = merge(api.getRuntimeConfig().router || {}, userConfig);
|
|
17
|
+
const framework = mergedConfig.framework || 'react-router';
|
|
18
|
+
const pluginFactory = 'tanstack' === framework ? tanstackRouterPlugin : routerPlugin;
|
|
19
|
+
pluginFactory(userConfig).setup?.(api);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const internal = internal_routerPlugin;
|
|
23
|
+
export { renderRoutes } from "./utils.mjs";
|
|
24
|
+
export default internal;
|
|
25
|
+
export { external_plugin_mjs_modifyRoutes as modifyRoutes, internal_routerPlugin as routerPlugin };
|