@rangojs/router 0.0.0-experimental.8678bb02 → 0.0.0-experimental.88a3b2f7
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/README.md +76 -18
- package/dist/bin/rango.js +130 -47
- package/dist/vite/index.js +408 -259
- package/package.json +2 -2
- package/skills/links/SKILL.md +3 -1
- package/skills/middleware/SKILL.md +2 -0
- package/skills/prerender/SKILL.md +110 -68
- package/skills/router-setup/SKILL.md +35 -0
- package/src/__internal.ts +1 -1
- package/src/browser/app-version.ts +14 -0
- package/src/browser/navigation-bridge.ts +16 -3
- package/src/browser/navigation-client.ts +64 -64
- package/src/browser/navigation-store.ts +43 -8
- package/src/browser/partial-update.ts +27 -5
- package/src/browser/prefetch/fetch.ts +8 -2
- package/src/browser/react/Link.tsx +44 -8
- package/src/browser/react/NavigationProvider.tsx +8 -1
- package/src/browser/react/context.ts +7 -2
- package/src/browser/react/use-handle.ts +9 -58
- package/src/browser/react/use-router.ts +21 -8
- package/src/browser/rsc-router.tsx +26 -3
- package/src/browser/scroll-restoration.ts +10 -8
- package/src/browser/server-action-bridge.ts +8 -18
- package/src/browser/types.ts +20 -5
- package/src/build/generate-manifest.ts +6 -6
- package/src/build/generate-route-types.ts +3 -0
- package/src/build/route-types/include-resolution.ts +8 -1
- package/src/build/route-types/router-processing.ts +211 -72
- package/src/build/route-types/scan-filter.ts +8 -1
- package/src/deps/browser.ts +0 -1
- package/src/handle.ts +40 -0
- package/src/index.rsc.ts +3 -1
- package/src/index.ts +8 -0
- package/src/prerender/store.ts +5 -4
- package/src/prerender.ts +138 -77
- package/src/reverse.ts +22 -1
- package/src/route-definition/dsl-helpers.ts +37 -18
- package/src/route-definition/index.ts +3 -0
- package/src/route-definition/redirect.ts +9 -1
- package/src/route-definition/resolve-handler-use.ts +149 -0
- package/src/route-types.ts +11 -0
- package/src/router/content-negotiation.ts +100 -1
- package/src/router/handler-context.ts +48 -15
- package/src/router/intercept-resolution.ts +9 -4
- package/src/router/loader-resolution.ts +115 -10
- package/src/router/match-api.ts +124 -189
- package/src/router/match-middleware/cache-lookup.ts +22 -7
- package/src/router/match-middleware/segment-resolution.ts +53 -0
- package/src/router/middleware-types.ts +0 -6
- package/src/router/middleware.ts +0 -3
- package/src/router/navigation-snapshot.ts +182 -0
- package/src/router/prerender-match.ts +110 -10
- package/src/router/preview-match.ts +30 -102
- package/src/router/request-classification.ts +310 -0
- package/src/router/route-snapshot.ts +245 -0
- package/src/router/router-interfaces.ts +36 -4
- package/src/router/router-options.ts +37 -11
- package/src/router/segment-resolution/fresh.ts +18 -5
- package/src/router/segment-resolution/revalidation.ts +18 -8
- package/src/router.ts +53 -5
- package/src/rsc/handler.ts +460 -393
- package/src/rsc/loader-fetch.ts +2 -7
- package/src/rsc/manifest-init.ts +5 -1
- package/src/rsc/progressive-enhancement.ts +5 -4
- package/src/rsc/rsc-rendering.ts +6 -4
- package/src/rsc/server-action.ts +2 -2
- package/src/rsc/ssr-setup.ts +2 -2
- package/src/rsc/types.ts +5 -4
- package/src/server/context.ts +39 -2
- package/src/server/loader-registry.ts +9 -8
- package/src/server/request-context.ts +91 -12
- package/src/ssr/index.tsx +3 -0
- package/src/static-handler.ts +18 -6
- package/src/types/cache-types.ts +4 -4
- package/src/types/handler-context.ts +17 -11
- package/src/types/loader-types.ts +32 -5
- package/src/types/route-entry.ts +1 -1
- package/src/urls/path-helper-types.ts +5 -1
- package/src/urls/path-helper.ts +47 -12
- package/src/urls/pattern-types.ts +12 -0
- package/src/urls/response-types.ts +16 -6
- package/src/vite/discovery/bundle-postprocess.ts +30 -33
- package/src/vite/discovery/discover-routers.ts +5 -1
- package/src/vite/discovery/prerender-collection.ts +14 -1
- package/src/vite/discovery/state.ts +13 -4
- package/src/vite/index.ts +4 -0
- package/src/vite/plugin-types.ts +60 -5
- package/src/vite/plugins/performance-tracks.ts +64 -206
- package/src/vite/plugins/refresh-cmd.ts +88 -26
- package/src/vite/rango.ts +17 -11
- package/src/vite/router-discovery.ts +153 -34
- package/src/vite/utils/prerender-utils.ts +18 -0
- package/src/vite/utils/shared-utils.ts +3 -2
- package/dist/__internal.d.ts +0 -83
- package/dist/__internal.d.ts.map +0 -1
- package/dist/__internal.js +0 -19
- package/dist/__internal.js.map +0 -1
- package/dist/__mocks__/version.d.ts +0 -7
- package/dist/__mocks__/version.d.ts.map +0 -1
- package/dist/__mocks__/version.js +0 -7
- package/dist/__mocks__/version.js.map +0 -1
- package/dist/__tests__/client-href.test.d.ts +0 -2
- package/dist/__tests__/client-href.test.d.ts.map +0 -1
- package/dist/__tests__/client-href.test.js +0 -74
- package/dist/__tests__/client-href.test.js.map +0 -1
- package/dist/__tests__/component-utils.test.d.ts +0 -2
- package/dist/__tests__/component-utils.test.d.ts.map +0 -1
- package/dist/__tests__/component-utils.test.js +0 -51
- package/dist/__tests__/component-utils.test.js.map +0 -1
- package/dist/__tests__/event-controller.test.d.ts +0 -2
- package/dist/__tests__/event-controller.test.d.ts.map +0 -1
- package/dist/__tests__/event-controller.test.js +0 -538
- package/dist/__tests__/event-controller.test.js.map +0 -1
- package/dist/__tests__/helpers/route-tree.d.ts +0 -118
- package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
- package/dist/__tests__/helpers/route-tree.js +0 -374
- package/dist/__tests__/helpers/route-tree.js.map +0 -1
- package/dist/__tests__/match-result.test.d.ts +0 -2
- package/dist/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/__tests__/match-result.test.js +0 -154
- package/dist/__tests__/match-result.test.js.map +0 -1
- package/dist/__tests__/navigation-store.test.d.ts +0 -2
- package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
- package/dist/__tests__/navigation-store.test.js +0 -440
- package/dist/__tests__/navigation-store.test.js.map +0 -1
- package/dist/__tests__/partial-update.test.d.ts +0 -2
- package/dist/__tests__/partial-update.test.d.ts.map +0 -1
- package/dist/__tests__/partial-update.test.js +0 -1009
- package/dist/__tests__/partial-update.test.js.map +0 -1
- package/dist/__tests__/reverse-types.test.d.ts +0 -8
- package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
- package/dist/__tests__/reverse-types.test.js +0 -656
- package/dist/__tests__/reverse-types.test.js.map +0 -1
- package/dist/__tests__/route-definition.test.d.ts +0 -2
- package/dist/__tests__/route-definition.test.d.ts.map +0 -1
- package/dist/__tests__/route-definition.test.js +0 -55
- package/dist/__tests__/route-definition.test.js.map +0 -1
- package/dist/__tests__/router-helpers.test.d.ts +0 -2
- package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
- package/dist/__tests__/router-helpers.test.js +0 -377
- package/dist/__tests__/router-helpers.test.js.map +0 -1
- package/dist/__tests__/router-integration-2.test.d.ts +0 -2
- package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration-2.test.js +0 -426
- package/dist/__tests__/router-integration-2.test.js.map +0 -1
- package/dist/__tests__/router-integration.test.d.ts +0 -2
- package/dist/__tests__/router-integration.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration.test.js +0 -1051
- package/dist/__tests__/router-integration.test.js.map +0 -1
- package/dist/__tests__/search-params.test.d.ts +0 -5
- package/dist/__tests__/search-params.test.d.ts.map +0 -1
- package/dist/__tests__/search-params.test.js +0 -306
- package/dist/__tests__/search-params.test.js.map +0 -1
- package/dist/__tests__/segment-system.test.d.ts +0 -2
- package/dist/__tests__/segment-system.test.d.ts.map +0 -1
- package/dist/__tests__/segment-system.test.js +0 -627
- package/dist/__tests__/segment-system.test.js.map +0 -1
- package/dist/__tests__/static-handler-types.test.d.ts +0 -8
- package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
- package/dist/__tests__/static-handler-types.test.js +0 -63
- package/dist/__tests__/static-handler-types.test.js.map +0 -1
- package/dist/__tests__/urls.test.d.ts +0 -2
- package/dist/__tests__/urls.test.d.ts.map +0 -1
- package/dist/__tests__/urls.test.js +0 -421
- package/dist/__tests__/urls.test.js.map +0 -1
- package/dist/__tests__/use-mount.test.d.ts +0 -2
- package/dist/__tests__/use-mount.test.d.ts.map +0 -1
- package/dist/__tests__/use-mount.test.js +0 -35
- package/dist/__tests__/use-mount.test.js.map +0 -1
- package/dist/bin/rango.d.ts +0 -2
- package/dist/bin/rango.d.ts.map +0 -1
- package/dist/bin/rango.js.map +0 -1
- package/dist/browser/event-controller.d.ts +0 -191
- package/dist/browser/event-controller.d.ts.map +0 -1
- package/dist/browser/event-controller.js +0 -559
- package/dist/browser/event-controller.js.map +0 -1
- package/dist/browser/index.d.ts +0 -2
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -14
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/link-interceptor.d.ts +0 -38
- package/dist/browser/link-interceptor.d.ts.map +0 -1
- package/dist/browser/link-interceptor.js +0 -99
- package/dist/browser/link-interceptor.js.map +0 -1
- package/dist/browser/logging.d.ts +0 -10
- package/dist/browser/logging.d.ts.map +0 -1
- package/dist/browser/logging.js +0 -29
- package/dist/browser/logging.js.map +0 -1
- package/dist/browser/lru-cache.d.ts +0 -17
- package/dist/browser/lru-cache.d.ts.map +0 -1
- package/dist/browser/lru-cache.js +0 -50
- package/dist/browser/lru-cache.js.map +0 -1
- package/dist/browser/merge-segment-loaders.d.ts +0 -39
- package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
- package/dist/browser/merge-segment-loaders.js +0 -102
- package/dist/browser/merge-segment-loaders.js.map +0 -1
- package/dist/browser/navigation-bridge.d.ts +0 -102
- package/dist/browser/navigation-bridge.d.ts.map +0 -1
- package/dist/browser/navigation-bridge.js +0 -708
- package/dist/browser/navigation-bridge.js.map +0 -1
- package/dist/browser/navigation-client.d.ts +0 -25
- package/dist/browser/navigation-client.d.ts.map +0 -1
- package/dist/browser/navigation-client.js +0 -157
- package/dist/browser/navigation-client.js.map +0 -1
- package/dist/browser/navigation-store.d.ts +0 -101
- package/dist/browser/navigation-store.d.ts.map +0 -1
- package/dist/browser/navigation-store.js +0 -625
- package/dist/browser/navigation-store.js.map +0 -1
- package/dist/browser/partial-update.d.ts +0 -75
- package/dist/browser/partial-update.d.ts.map +0 -1
- package/dist/browser/partial-update.js +0 -426
- package/dist/browser/partial-update.js.map +0 -1
- package/dist/browser/react/Link.d.ts +0 -86
- package/dist/browser/react/Link.d.ts.map +0 -1
- package/dist/browser/react/Link.js +0 -128
- package/dist/browser/react/Link.js.map +0 -1
- package/dist/browser/react/NavigationProvider.d.ts +0 -63
- package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
- package/dist/browser/react/NavigationProvider.js +0 -216
- package/dist/browser/react/NavigationProvider.js.map +0 -1
- package/dist/browser/react/ScrollRestoration.d.ts +0 -75
- package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
- package/dist/browser/react/ScrollRestoration.js +0 -57
- package/dist/browser/react/ScrollRestoration.js.map +0 -1
- package/dist/browser/react/context.d.ts +0 -46
- package/dist/browser/react/context.d.ts.map +0 -1
- package/dist/browser/react/context.js +0 -10
- package/dist/browser/react/context.js.map +0 -1
- package/dist/browser/react/index.d.ts +0 -11
- package/dist/browser/react/index.d.ts.map +0 -1
- package/dist/browser/react/index.js +0 -22
- package/dist/browser/react/index.js.map +0 -1
- package/dist/browser/react/location-state-shared.d.ts +0 -63
- package/dist/browser/react/location-state-shared.d.ts.map +0 -1
- package/dist/browser/react/location-state-shared.js +0 -81
- package/dist/browser/react/location-state-shared.js.map +0 -1
- package/dist/browser/react/location-state.d.ts +0 -23
- package/dist/browser/react/location-state.d.ts.map +0 -1
- package/dist/browser/react/location-state.js +0 -29
- package/dist/browser/react/location-state.js.map +0 -1
- package/dist/browser/react/mount-context.d.ts +0 -24
- package/dist/browser/react/mount-context.d.ts.map +0 -1
- package/dist/browser/react/mount-context.js +0 -24
- package/dist/browser/react/mount-context.js.map +0 -1
- package/dist/browser/react/use-action.d.ts +0 -64
- package/dist/browser/react/use-action.d.ts.map +0 -1
- package/dist/browser/react/use-action.js +0 -134
- package/dist/browser/react/use-action.js.map +0 -1
- package/dist/browser/react/use-client-cache.d.ts +0 -41
- package/dist/browser/react/use-client-cache.d.ts.map +0 -1
- package/dist/browser/react/use-client-cache.js +0 -39
- package/dist/browser/react/use-client-cache.js.map +0 -1
- package/dist/browser/react/use-handle.d.ts +0 -31
- package/dist/browser/react/use-handle.d.ts.map +0 -1
- package/dist/browser/react/use-handle.js +0 -144
- package/dist/browser/react/use-handle.js.map +0 -1
- package/dist/browser/react/use-href.d.ts +0 -33
- package/dist/browser/react/use-href.d.ts.map +0 -1
- package/dist/browser/react/use-href.js +0 -39
- package/dist/browser/react/use-href.js.map +0 -1
- package/dist/browser/react/use-link-status.d.ts +0 -37
- package/dist/browser/react/use-link-status.d.ts.map +0 -1
- package/dist/browser/react/use-link-status.js +0 -99
- package/dist/browser/react/use-link-status.js.map +0 -1
- package/dist/browser/react/use-mount.d.ts +0 -25
- package/dist/browser/react/use-mount.d.ts.map +0 -1
- package/dist/browser/react/use-mount.js +0 -30
- package/dist/browser/react/use-mount.js.map +0 -1
- package/dist/browser/react/use-navigation.d.ts +0 -27
- package/dist/browser/react/use-navigation.d.ts.map +0 -1
- package/dist/browser/react/use-navigation.js +0 -87
- package/dist/browser/react/use-navigation.js.map +0 -1
- package/dist/browser/react/use-segments.d.ts +0 -38
- package/dist/browser/react/use-segments.d.ts.map +0 -1
- package/dist/browser/react/use-segments.js +0 -130
- package/dist/browser/react/use-segments.js.map +0 -1
- package/dist/browser/request-controller.d.ts +0 -26
- package/dist/browser/request-controller.d.ts.map +0 -1
- package/dist/browser/request-controller.js +0 -147
- package/dist/browser/request-controller.js.map +0 -1
- package/dist/browser/rsc-router.d.ts +0 -129
- package/dist/browser/rsc-router.d.ts.map +0 -1
- package/dist/browser/rsc-router.js +0 -195
- package/dist/browser/rsc-router.js.map +0 -1
- package/dist/browser/scroll-restoration.d.ts +0 -93
- package/dist/browser/scroll-restoration.d.ts.map +0 -1
- package/dist/browser/scroll-restoration.js +0 -321
- package/dist/browser/scroll-restoration.js.map +0 -1
- package/dist/browser/segment-structure-assert.d.ts +0 -17
- package/dist/browser/segment-structure-assert.d.ts.map +0 -1
- package/dist/browser/segment-structure-assert.js +0 -59
- package/dist/browser/segment-structure-assert.js.map +0 -1
- package/dist/browser/server-action-bridge.d.ts +0 -26
- package/dist/browser/server-action-bridge.d.ts.map +0 -1
- package/dist/browser/server-action-bridge.js +0 -668
- package/dist/browser/server-action-bridge.js.map +0 -1
- package/dist/browser/shallow.d.ts +0 -12
- package/dist/browser/shallow.d.ts.map +0 -1
- package/dist/browser/shallow.js +0 -34
- package/dist/browser/shallow.js.map +0 -1
- package/dist/browser/types.d.ts +0 -369
- package/dist/browser/types.d.ts.map +0 -1
- package/dist/browser/types.js +0 -2
- package/dist/browser/types.js.map +0 -1
- package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
- package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-cli.test.js +0 -237
- package/dist/build/__tests__/generate-cli.test.js.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.js +0 -119
- package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.js +0 -620
- package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.js +0 -308
- package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
- package/dist/build/generate-manifest.d.ts +0 -81
- package/dist/build/generate-manifest.d.ts.map +0 -1
- package/dist/build/generate-manifest.js +0 -276
- package/dist/build/generate-manifest.js.map +0 -1
- package/dist/build/generate-route-types.d.ts +0 -115
- package/dist/build/generate-route-types.d.ts.map +0 -1
- package/dist/build/generate-route-types.js +0 -740
- package/dist/build/generate-route-types.js.map +0 -1
- package/dist/build/index.d.ts +0 -21
- package/dist/build/index.d.ts.map +0 -1
- package/dist/build/index.js +0 -21
- package/dist/build/index.js.map +0 -1
- package/dist/build/route-trie.d.ts +0 -71
- package/dist/build/route-trie.d.ts.map +0 -1
- package/dist/build/route-trie.js +0 -175
- package/dist/build/route-trie.js.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.js +0 -208
- package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
- package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
- package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
- package/dist/cache/__tests__/document-cache.test.js +0 -345
- package/dist/cache/__tests__/document-cache.test.js.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
- package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
- package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-store.test.js +0 -367
- package/dist/cache/__tests__/memory-store.test.js.map +0 -1
- package/dist/cache/cache-scope.d.ts +0 -102
- package/dist/cache/cache-scope.d.ts.map +0 -1
- package/dist/cache/cache-scope.js +0 -440
- package/dist/cache/cache-scope.js.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
- package/dist/cache/cf/cf-cache-store.d.ts +0 -165
- package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
- package/dist/cache/cf/cf-cache-store.js +0 -242
- package/dist/cache/cf/cf-cache-store.js.map +0 -1
- package/dist/cache/cf/index.d.ts +0 -14
- package/dist/cache/cf/index.d.ts.map +0 -1
- package/dist/cache/cf/index.js +0 -17
- package/dist/cache/cf/index.js.map +0 -1
- package/dist/cache/document-cache.d.ts +0 -64
- package/dist/cache/document-cache.d.ts.map +0 -1
- package/dist/cache/document-cache.js +0 -228
- package/dist/cache/document-cache.js.map +0 -1
- package/dist/cache/index.d.ts +0 -19
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -21
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/memory-segment-store.d.ts +0 -110
- package/dist/cache/memory-segment-store.d.ts.map +0 -1
- package/dist/cache/memory-segment-store.js +0 -117
- package/dist/cache/memory-segment-store.js.map +0 -1
- package/dist/cache/memory-store.d.ts +0 -41
- package/dist/cache/memory-store.d.ts.map +0 -1
- package/dist/cache/memory-store.js +0 -191
- package/dist/cache/memory-store.js.map +0 -1
- package/dist/cache/types.d.ts +0 -317
- package/dist/cache/types.d.ts.map +0 -1
- package/dist/cache/types.js +0 -12
- package/dist/cache/types.js.map +0 -1
- package/dist/client.d.ts +0 -248
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -367
- package/dist/client.js.map +0 -1
- package/dist/client.rsc.d.ts +0 -26
- package/dist/client.rsc.d.ts.map +0 -1
- package/dist/client.rsc.js +0 -46
- package/dist/client.rsc.js.map +0 -1
- package/dist/component-utils.d.ts +0 -36
- package/dist/component-utils.d.ts.map +0 -1
- package/dist/component-utils.js +0 -61
- package/dist/component-utils.js.map +0 -1
- package/dist/components/DefaultDocument.d.ts +0 -13
- package/dist/components/DefaultDocument.d.ts.map +0 -1
- package/dist/components/DefaultDocument.js +0 -15
- package/dist/components/DefaultDocument.js.map +0 -1
- package/dist/debug.d.ts +0 -58
- package/dist/debug.d.ts.map +0 -1
- package/dist/debug.js +0 -157
- package/dist/debug.js.map +0 -1
- package/dist/default-error-boundary.d.ts +0 -11
- package/dist/default-error-boundary.d.ts.map +0 -1
- package/dist/default-error-boundary.js +0 -45
- package/dist/default-error-boundary.js.map +0 -1
- package/dist/deps/browser.d.ts +0 -2
- package/dist/deps/browser.d.ts.map +0 -1
- package/dist/deps/browser.js +0 -3
- package/dist/deps/browser.js.map +0 -1
- package/dist/deps/html-stream-client.d.ts +0 -2
- package/dist/deps/html-stream-client.d.ts.map +0 -1
- package/dist/deps/html-stream-client.js +0 -3
- package/dist/deps/html-stream-client.js.map +0 -1
- package/dist/deps/html-stream-server.d.ts +0 -2
- package/dist/deps/html-stream-server.d.ts.map +0 -1
- package/dist/deps/html-stream-server.js +0 -3
- package/dist/deps/html-stream-server.js.map +0 -1
- package/dist/deps/rsc.d.ts +0 -2
- package/dist/deps/rsc.d.ts.map +0 -1
- package/dist/deps/rsc.js +0 -4
- package/dist/deps/rsc.js.map +0 -1
- package/dist/deps/ssr.d.ts +0 -2
- package/dist/deps/ssr.d.ts.map +0 -1
- package/dist/deps/ssr.js +0 -3
- package/dist/deps/ssr.js.map +0 -1
- package/dist/errors.d.ts +0 -174
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -241
- package/dist/errors.js.map +0 -1
- package/dist/handle.d.ts +0 -78
- package/dist/handle.d.ts.map +0 -1
- package/dist/handle.js +0 -82
- package/dist/handle.js.map +0 -1
- package/dist/handles/MetaTags.d.ts +0 -14
- package/dist/handles/MetaTags.d.ts.map +0 -1
- package/dist/handles/MetaTags.js +0 -136
- package/dist/handles/MetaTags.js.map +0 -1
- package/dist/handles/index.d.ts +0 -6
- package/dist/handles/index.d.ts.map +0 -1
- package/dist/handles/index.js +0 -6
- package/dist/handles/index.js.map +0 -1
- package/dist/handles/meta.d.ts +0 -39
- package/dist/handles/meta.d.ts.map +0 -1
- package/dist/handles/meta.js +0 -202
- package/dist/handles/meta.js.map +0 -1
- package/dist/host/__tests__/errors.test.d.ts +0 -2
- package/dist/host/__tests__/errors.test.d.ts.map +0 -1
- package/dist/host/__tests__/errors.test.js +0 -76
- package/dist/host/__tests__/errors.test.js.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.js +0 -251
- package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
- package/dist/host/__tests__/router.test.d.ts +0 -2
- package/dist/host/__tests__/router.test.d.ts.map +0 -1
- package/dist/host/__tests__/router.test.js +0 -241
- package/dist/host/__tests__/router.test.js.map +0 -1
- package/dist/host/__tests__/testing.test.d.ts +0 -2
- package/dist/host/__tests__/testing.test.d.ts.map +0 -1
- package/dist/host/__tests__/testing.test.js +0 -64
- package/dist/host/__tests__/testing.test.js.map +0 -1
- package/dist/host/__tests__/utils.test.d.ts +0 -2
- package/dist/host/__tests__/utils.test.d.ts.map +0 -1
- package/dist/host/__tests__/utils.test.js +0 -29
- package/dist/host/__tests__/utils.test.js.map +0 -1
- package/dist/host/cookie-handler.d.ts +0 -34
- package/dist/host/cookie-handler.d.ts.map +0 -1
- package/dist/host/cookie-handler.js +0 -124
- package/dist/host/cookie-handler.js.map +0 -1
- package/dist/host/errors.d.ts +0 -56
- package/dist/host/errors.d.ts.map +0 -1
- package/dist/host/errors.js +0 -79
- package/dist/host/errors.js.map +0 -1
- package/dist/host/index.d.ts +0 -29
- package/dist/host/index.d.ts.map +0 -1
- package/dist/host/index.js +0 -32
- package/dist/host/index.js.map +0 -1
- package/dist/host/pattern-matcher.d.ts +0 -36
- package/dist/host/pattern-matcher.d.ts.map +0 -1
- package/dist/host/pattern-matcher.js +0 -172
- package/dist/host/pattern-matcher.js.map +0 -1
- package/dist/host/router.d.ts +0 -26
- package/dist/host/router.d.ts.map +0 -1
- package/dist/host/router.js +0 -218
- package/dist/host/router.js.map +0 -1
- package/dist/host/testing.d.ts +0 -36
- package/dist/host/testing.d.ts.map +0 -1
- package/dist/host/testing.js +0 -55
- package/dist/host/testing.js.map +0 -1
- package/dist/host/types.d.ts +0 -115
- package/dist/host/types.d.ts.map +0 -1
- package/dist/host/types.js +0 -7
- package/dist/host/types.js.map +0 -1
- package/dist/host/utils.d.ts +0 -21
- package/dist/host/utils.d.ts.map +0 -1
- package/dist/host/utils.js +0 -23
- package/dist/host/utils.js.map +0 -1
- package/dist/href-client.d.ts +0 -131
- package/dist/href-client.d.ts.map +0 -1
- package/dist/href-client.js +0 -64
- package/dist/href-client.js.map +0 -1
- package/dist/href-context.d.ts +0 -29
- package/dist/href-context.d.ts.map +0 -1
- package/dist/href-context.js +0 -21
- package/dist/href-context.js.map +0 -1
- package/dist/index.d.ts +0 -73
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -91
- package/dist/index.js.map +0 -1
- package/dist/index.rsc.d.ts +0 -32
- package/dist/index.rsc.d.ts.map +0 -1
- package/dist/index.rsc.js +0 -40
- package/dist/index.rsc.js.map +0 -1
- package/dist/internal-debug.d.ts +0 -2
- package/dist/internal-debug.d.ts.map +0 -1
- package/dist/internal-debug.js +0 -5
- package/dist/internal-debug.js.map +0 -1
- package/dist/loader.d.ts +0 -14
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -20
- package/dist/loader.js.map +0 -1
- package/dist/loader.rsc.d.ts +0 -19
- package/dist/loader.rsc.d.ts.map +0 -1
- package/dist/loader.rsc.js +0 -99
- package/dist/loader.rsc.js.map +0 -1
- package/dist/network-error-thrower.d.ts +0 -17
- package/dist/network-error-thrower.d.ts.map +0 -1
- package/dist/network-error-thrower.js +0 -14
- package/dist/network-error-thrower.js.map +0 -1
- package/dist/outlet-context.d.ts +0 -13
- package/dist/outlet-context.d.ts.map +0 -1
- package/dist/outlet-context.js +0 -3
- package/dist/outlet-context.js.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.js +0 -148
- package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
- package/dist/prerender/param-hash.d.ts +0 -16
- package/dist/prerender/param-hash.d.ts.map +0 -1
- package/dist/prerender/param-hash.js +0 -36
- package/dist/prerender/param-hash.js.map +0 -1
- package/dist/prerender/store.d.ts +0 -38
- package/dist/prerender/store.d.ts.map +0 -1
- package/dist/prerender/store.js +0 -61
- package/dist/prerender/store.js.map +0 -1
- package/dist/prerender.d.ts +0 -66
- package/dist/prerender.d.ts.map +0 -1
- package/dist/prerender.js +0 -57
- package/dist/prerender.js.map +0 -1
- package/dist/reverse.d.ts +0 -196
- package/dist/reverse.d.ts.map +0 -1
- package/dist/reverse.js +0 -78
- package/dist/reverse.js.map +0 -1
- package/dist/root-error-boundary.d.ts +0 -33
- package/dist/root-error-boundary.d.ts.map +0 -1
- package/dist/root-error-boundary.js +0 -165
- package/dist/root-error-boundary.js.map +0 -1
- package/dist/route-content-wrapper.d.ts +0 -46
- package/dist/route-content-wrapper.d.ts.map +0 -1
- package/dist/route-content-wrapper.js +0 -77
- package/dist/route-content-wrapper.js.map +0 -1
- package/dist/route-definition.d.ts +0 -421
- package/dist/route-definition.d.ts.map +0 -1
- package/dist/route-definition.js +0 -868
- package/dist/route-definition.js.map +0 -1
- package/dist/route-map-builder.d.ts +0 -155
- package/dist/route-map-builder.d.ts.map +0 -1
- package/dist/route-map-builder.js +0 -237
- package/dist/route-map-builder.js.map +0 -1
- package/dist/route-types.d.ts +0 -165
- package/dist/route-types.d.ts.map +0 -1
- package/dist/route-types.js +0 -7
- package/dist/route-types.js.map +0 -1
- package/dist/router/__tests__/handler-context.test.d.ts +0 -2
- package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/handler-context.test.js +0 -65
- package/dist/router/__tests__/handler-context.test.js.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
- package/dist/router/__tests__/match-context.test.d.ts +0 -2
- package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-context.test.js +0 -92
- package/dist/router/__tests__/match-context.test.js.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.js +0 -417
- package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
- package/dist/router/__tests__/match-result.test.d.ts +0 -2
- package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-result.test.js +0 -457
- package/dist/router/__tests__/match-result.test.js.map +0 -1
- package/dist/router/__tests__/on-error.test.d.ts +0 -2
- package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
- package/dist/router/__tests__/on-error.test.js +0 -678
- package/dist/router/__tests__/on-error.test.js.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.js +0 -629
- package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
- package/dist/router/error-handling.d.ts +0 -77
- package/dist/router/error-handling.d.ts.map +0 -1
- package/dist/router/error-handling.js +0 -202
- package/dist/router/error-handling.js.map +0 -1
- package/dist/router/handler-context.d.ts +0 -20
- package/dist/router/handler-context.d.ts.map +0 -1
- package/dist/router/handler-context.js +0 -198
- package/dist/router/handler-context.js.map +0 -1
- package/dist/router/intercept-resolution.d.ts +0 -66
- package/dist/router/intercept-resolution.d.ts.map +0 -1
- package/dist/router/intercept-resolution.js +0 -246
- package/dist/router/intercept-resolution.js.map +0 -1
- package/dist/router/loader-resolution.d.ts +0 -64
- package/dist/router/loader-resolution.d.ts.map +0 -1
- package/dist/router/loader-resolution.js +0 -284
- package/dist/router/loader-resolution.js.map +0 -1
- package/dist/router/logging.d.ts +0 -15
- package/dist/router/logging.d.ts.map +0 -1
- package/dist/router/logging.js +0 -99
- package/dist/router/logging.js.map +0 -1
- package/dist/router/manifest.d.ts +0 -22
- package/dist/router/manifest.d.ts.map +0 -1
- package/dist/router/manifest.js +0 -181
- package/dist/router/manifest.js.map +0 -1
- package/dist/router/match-api.d.ts +0 -35
- package/dist/router/match-api.d.ts.map +0 -1
- package/dist/router/match-api.js +0 -406
- package/dist/router/match-api.js.map +0 -1
- package/dist/router/match-context.d.ts +0 -206
- package/dist/router/match-context.d.ts.map +0 -1
- package/dist/router/match-context.js +0 -17
- package/dist/router/match-context.js.map +0 -1
- package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
- package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
- package/dist/router/match-middleware/background-revalidation.js +0 -75
- package/dist/router/match-middleware/background-revalidation.js.map +0 -1
- package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
- package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-lookup.js +0 -257
- package/dist/router/match-middleware/cache-lookup.js.map +0 -1
- package/dist/router/match-middleware/cache-store.d.ts +0 -113
- package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-store.js +0 -108
- package/dist/router/match-middleware/cache-store.js.map +0 -1
- package/dist/router/match-middleware/index.d.ts +0 -81
- package/dist/router/match-middleware/index.d.ts.map +0 -1
- package/dist/router/match-middleware/index.js +0 -80
- package/dist/router/match-middleware/index.js.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.js +0 -134
- package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
- package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
- package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/segment-resolution.js +0 -53
- package/dist/router/match-middleware/segment-resolution.js.map +0 -1
- package/dist/router/match-pipelines.d.ts +0 -147
- package/dist/router/match-pipelines.d.ts.map +0 -1
- package/dist/router/match-pipelines.js +0 -82
- package/dist/router/match-pipelines.js.map +0 -1
- package/dist/router/match-result.d.ts +0 -126
- package/dist/router/match-result.d.ts.map +0 -1
- package/dist/router/match-result.js +0 -93
- package/dist/router/match-result.js.map +0 -1
- package/dist/router/metrics.d.ts +0 -20
- package/dist/router/metrics.d.ts.map +0 -1
- package/dist/router/metrics.js +0 -47
- package/dist/router/metrics.js.map +0 -1
- package/dist/router/middleware.d.ts +0 -249
- package/dist/router/middleware.d.ts.map +0 -1
- package/dist/router/middleware.js +0 -434
- package/dist/router/middleware.js.map +0 -1
- package/dist/router/middleware.test.d.ts +0 -2
- package/dist/router/middleware.test.d.ts.map +0 -1
- package/dist/router/middleware.test.js +0 -816
- package/dist/router/middleware.test.js.map +0 -1
- package/dist/router/pattern-matching.d.ts +0 -149
- package/dist/router/pattern-matching.d.ts.map +0 -1
- package/dist/router/pattern-matching.js +0 -349
- package/dist/router/pattern-matching.js.map +0 -1
- package/dist/router/revalidation.d.ts +0 -44
- package/dist/router/revalidation.d.ts.map +0 -1
- package/dist/router/revalidation.js +0 -147
- package/dist/router/revalidation.js.map +0 -1
- package/dist/router/router-context.d.ts +0 -135
- package/dist/router/router-context.d.ts.map +0 -1
- package/dist/router/router-context.js +0 -36
- package/dist/router/router-context.js.map +0 -1
- package/dist/router/segment-resolution.d.ts +0 -127
- package/dist/router/segment-resolution.d.ts.map +0 -1
- package/dist/router/segment-resolution.js +0 -919
- package/dist/router/segment-resolution.js.map +0 -1
- package/dist/router/trie-matching.d.ts +0 -40
- package/dist/router/trie-matching.d.ts.map +0 -1
- package/dist/router/trie-matching.js +0 -127
- package/dist/router/trie-matching.js.map +0 -1
- package/dist/router/types.d.ts +0 -136
- package/dist/router/types.d.ts.map +0 -1
- package/dist/router/types.js +0 -7
- package/dist/router/types.js.map +0 -1
- package/dist/router.d.ts +0 -753
- package/dist/router.d.ts.map +0 -1
- package/dist/router.gen.d.ts +0 -6
- package/dist/router.gen.d.ts.map +0 -1
- package/dist/router.gen.js +0 -6
- package/dist/router.gen.js.map +0 -1
- package/dist/router.js +0 -1304
- package/dist/router.js.map +0 -1
- package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
- package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
- package/dist/rsc/__tests__/helpers.test.js +0 -140
- package/dist/rsc/__tests__/helpers.test.js.map +0 -1
- package/dist/rsc/handler.d.ts +0 -45
- package/dist/rsc/handler.d.ts.map +0 -1
- package/dist/rsc/handler.js +0 -1172
- package/dist/rsc/handler.js.map +0 -1
- package/dist/rsc/helpers.d.ts +0 -16
- package/dist/rsc/helpers.d.ts.map +0 -1
- package/dist/rsc/helpers.js +0 -55
- package/dist/rsc/helpers.js.map +0 -1
- package/dist/rsc/index.d.ts +0 -22
- package/dist/rsc/index.d.ts.map +0 -1
- package/dist/rsc/index.js +0 -23
- package/dist/rsc/index.js.map +0 -1
- package/dist/rsc/nonce.d.ts +0 -9
- package/dist/rsc/nonce.d.ts.map +0 -1
- package/dist/rsc/nonce.js +0 -18
- package/dist/rsc/nonce.js.map +0 -1
- package/dist/rsc/types.d.ts +0 -206
- package/dist/rsc/types.d.ts.map +0 -1
- package/dist/rsc/types.js +0 -8
- package/dist/rsc/types.js.map +0 -1
- package/dist/search-params.d.ts +0 -103
- package/dist/search-params.d.ts.map +0 -1
- package/dist/search-params.js +0 -74
- package/dist/search-params.js.map +0 -1
- package/dist/segment-system.d.ts +0 -75
- package/dist/segment-system.d.ts.map +0 -1
- package/dist/segment-system.js +0 -336
- package/dist/segment-system.js.map +0 -1
- package/dist/server/context.d.ts +0 -245
- package/dist/server/context.d.ts.map +0 -1
- package/dist/server/context.js +0 -197
- package/dist/server/context.js.map +0 -1
- package/dist/server/fetchable-loader-store.d.ts +0 -18
- package/dist/server/fetchable-loader-store.d.ts.map +0 -1
- package/dist/server/fetchable-loader-store.js +0 -18
- package/dist/server/fetchable-loader-store.js.map +0 -1
- package/dist/server/handle-store.d.ts +0 -85
- package/dist/server/handle-store.d.ts.map +0 -1
- package/dist/server/handle-store.js +0 -142
- package/dist/server/handle-store.js.map +0 -1
- package/dist/server/loader-registry.d.ts +0 -55
- package/dist/server/loader-registry.d.ts.map +0 -1
- package/dist/server/loader-registry.js +0 -132
- package/dist/server/loader-registry.js.map +0 -1
- package/dist/server/request-context.d.ts +0 -226
- package/dist/server/request-context.d.ts.map +0 -1
- package/dist/server/request-context.js +0 -290
- package/dist/server/request-context.js.map +0 -1
- package/dist/server/root-layout.d.ts +0 -4
- package/dist/server/root-layout.d.ts.map +0 -1
- package/dist/server/root-layout.js +0 -5
- package/dist/server/root-layout.js.map +0 -1
- package/dist/server.d.ts +0 -15
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -20
- package/dist/server.js.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
- package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
- package/dist/ssr/index.d.ts +0 -98
- package/dist/ssr/index.d.ts.map +0 -1
- package/dist/ssr/index.js +0 -158
- package/dist/ssr/index.js.map +0 -1
- package/dist/static-handler.d.ts +0 -50
- package/dist/static-handler.d.ts.map +0 -1
- package/dist/static-handler.gen.d.ts +0 -5
- package/dist/static-handler.gen.d.ts.map +0 -1
- package/dist/static-handler.gen.js +0 -5
- package/dist/static-handler.gen.js.map +0 -1
- package/dist/static-handler.js +0 -29
- package/dist/static-handler.js.map +0 -1
- package/dist/theme/ThemeProvider.d.ts +0 -20
- package/dist/theme/ThemeProvider.d.ts.map +0 -1
- package/dist/theme/ThemeProvider.js +0 -240
- package/dist/theme/ThemeProvider.js.map +0 -1
- package/dist/theme/ThemeScript.d.ts +0 -48
- package/dist/theme/ThemeScript.d.ts.map +0 -1
- package/dist/theme/ThemeScript.js +0 -13
- package/dist/theme/ThemeScript.js.map +0 -1
- package/dist/theme/__tests__/theme.test.d.ts +0 -2
- package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
- package/dist/theme/__tests__/theme.test.js +0 -103
- package/dist/theme/__tests__/theme.test.js.map +0 -1
- package/dist/theme/constants.d.ts +0 -29
- package/dist/theme/constants.d.ts.map +0 -1
- package/dist/theme/constants.js +0 -48
- package/dist/theme/constants.js.map +0 -1
- package/dist/theme/index.d.ts +0 -31
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js +0 -36
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/theme-context.d.ts +0 -40
- package/dist/theme/theme-context.d.ts.map +0 -1
- package/dist/theme/theme-context.js +0 -60
- package/dist/theme/theme-context.js.map +0 -1
- package/dist/theme/theme-script.d.ts +0 -27
- package/dist/theme/theme-script.d.ts.map +0 -1
- package/dist/theme/theme-script.js +0 -147
- package/dist/theme/theme-script.js.map +0 -1
- package/dist/theme/types.d.ts +0 -163
- package/dist/theme/types.d.ts.map +0 -1
- package/dist/theme/types.js +0 -11
- package/dist/theme/types.js.map +0 -1
- package/dist/theme/use-theme.d.ts +0 -12
- package/dist/theme/use-theme.d.ts.map +0 -1
- package/dist/theme/use-theme.js +0 -40
- package/dist/theme/use-theme.js.map +0 -1
- package/dist/types.d.ts +0 -1479
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +0 -1
- package/dist/urls.d.ts +0 -441
- package/dist/urls.d.ts.map +0 -1
- package/dist/urls.gen.d.ts +0 -8
- package/dist/urls.gen.d.ts.map +0 -1
- package/dist/urls.gen.js +0 -8
- package/dist/urls.gen.js.map +0 -1
- package/dist/urls.js +0 -443
- package/dist/urls.js.map +0 -1
- package/dist/use-loader.d.ts +0 -127
- package/dist/use-loader.d.ts.map +0 -1
- package/dist/use-loader.js +0 -237
- package/dist/use-loader.js.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
- package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
- package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
- package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.js +0 -39
- package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
- package/dist/vite/ast-handler-extract.d.ts +0 -49
- package/dist/vite/ast-handler-extract.d.ts.map +0 -1
- package/dist/vite/ast-handler-extract.js +0 -249
- package/dist/vite/ast-handler-extract.js.map +0 -1
- package/dist/vite/expose-action-id.d.ts +0 -19
- package/dist/vite/expose-action-id.d.ts.map +0 -1
- package/dist/vite/expose-action-id.js +0 -250
- package/dist/vite/expose-action-id.js.map +0 -1
- package/dist/vite/expose-id-utils.d.ts +0 -69
- package/dist/vite/expose-id-utils.d.ts.map +0 -1
- package/dist/vite/expose-id-utils.js +0 -289
- package/dist/vite/expose-id-utils.js.map +0 -1
- package/dist/vite/expose-internal-ids.d.ts +0 -22
- package/dist/vite/expose-internal-ids.d.ts.map +0 -1
- package/dist/vite/expose-internal-ids.js +0 -886
- package/dist/vite/expose-internal-ids.js.map +0 -1
- package/dist/vite/index.d.ts +0 -149
- package/dist/vite/index.d.ts.map +0 -1
- package/dist/vite/index.js.map +0 -1
- package/dist/vite/index.named-routes.gen.ts +0 -103
- package/dist/vite/package-resolution.d.ts +0 -43
- package/dist/vite/package-resolution.d.ts.map +0 -1
- package/dist/vite/package-resolution.js +0 -112
- package/dist/vite/package-resolution.js.map +0 -1
- package/dist/vite/virtual-entries.d.ts +0 -25
- package/dist/vite/virtual-entries.d.ts.map +0 -1
- package/dist/vite/virtual-entries.js +0 -110
- package/dist/vite/virtual-entries.js.map +0 -1
- package/src/browser/debug-channel.ts +0 -93
package/src/rsc/handler.ts
CHANGED
|
@@ -18,11 +18,6 @@ import {
|
|
|
18
18
|
createRequestContext,
|
|
19
19
|
} from "../server/request-context.js";
|
|
20
20
|
import * as rscDeps from "@vitejs/plugin-rsc/rsc";
|
|
21
|
-
import {
|
|
22
|
-
DEBUG_ID_HEADER,
|
|
23
|
-
createServerDebugChannel,
|
|
24
|
-
} from "../vite/plugins/performance-tracks.js";
|
|
25
|
-
|
|
26
21
|
import type {
|
|
27
22
|
RscPayload,
|
|
28
23
|
CreateRSCHandlerOptions,
|
|
@@ -87,6 +82,11 @@ import {
|
|
|
87
82
|
mayNeedSSR,
|
|
88
83
|
SSR_SETUP_VAR,
|
|
89
84
|
} from "./ssr-setup.js";
|
|
85
|
+
import {
|
|
86
|
+
classifyRequest,
|
|
87
|
+
type RequestPlan,
|
|
88
|
+
type ExecutableRequestPlan,
|
|
89
|
+
} from "../router/request-classification.js";
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
92
|
* Create an RSC request handler.
|
|
@@ -267,10 +267,7 @@ export function createRSCHandler<
|
|
|
267
267
|
...(locationState && { locationState }),
|
|
268
268
|
},
|
|
269
269
|
};
|
|
270
|
-
const
|
|
271
|
-
const rscStream = renderToReadableStream<RscPayload>(redirectPayload, {
|
|
272
|
-
...(debugChannel && { debugChannel }),
|
|
273
|
-
});
|
|
270
|
+
const rscStream = renderToReadableStream<RscPayload>(redirectPayload);
|
|
274
271
|
return createResponseWithMergedHeaders(rscStream, {
|
|
275
272
|
status: 200,
|
|
276
273
|
headers: { "content-type": "text/x-component;charset=utf-8" },
|
|
@@ -426,20 +423,6 @@ export function createRSCHandler<
|
|
|
426
423
|
requestContext._debugPerformance = true;
|
|
427
424
|
requestContext._metricsStore = earlyMetricsStore;
|
|
428
425
|
}
|
|
429
|
-
// Dev-only: wire debug channel for React Performance Tracks
|
|
430
|
-
if (process.env.NODE_ENV !== "production") {
|
|
431
|
-
// Client navigations send the debugId as a header.
|
|
432
|
-
// SSR requests have no client — generate one and create the channel directly.
|
|
433
|
-
const clientDebugId = request.headers.get(DEBUG_ID_HEADER);
|
|
434
|
-
const debugId = clientDebugId || crypto.randomUUID();
|
|
435
|
-
const channel = clientDebugId
|
|
436
|
-
? createServerDebugChannel(debugId)
|
|
437
|
-
: createServerDebugChannel(debugId);
|
|
438
|
-
if (channel) {
|
|
439
|
-
requestContext._debugChannel = channel;
|
|
440
|
-
console.log("[perf-tracks] debug channel attached for", debugId);
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
426
|
// Wire background error reporting so "use cache" and other subsystems
|
|
444
427
|
// can surface non-fatal errors through the router's onError callback.
|
|
445
428
|
requestContext._reportBackgroundError = (
|
|
@@ -474,6 +457,9 @@ export function createRSCHandler<
|
|
|
474
457
|
// - Server components during rendering
|
|
475
458
|
// - Error boundaries
|
|
476
459
|
// - Streaming
|
|
460
|
+
// Store basename on request context (scoped per-request via existing ALS)
|
|
461
|
+
requestContext._basename = router.basename;
|
|
462
|
+
|
|
477
463
|
return runWithRequestContext(requestContext, async () => {
|
|
478
464
|
// Core handler logic (wrapped by middleware)
|
|
479
465
|
const coreHandler = async (): Promise<Response> => {
|
|
@@ -549,7 +535,9 @@ export function createRSCHandler<
|
|
|
549
535
|
});
|
|
550
536
|
};
|
|
551
537
|
|
|
552
|
-
// Core request handling logic (separated for middleware wrapping)
|
|
538
|
+
// Core request handling logic (separated for middleware wrapping).
|
|
539
|
+
// Uses the classify → execute model: classifyRequest produces a RequestPlan,
|
|
540
|
+
// then execution dispatches on the plan mode.
|
|
553
541
|
async function coreRequestHandler(
|
|
554
542
|
request: Request,
|
|
555
543
|
env: TEnv,
|
|
@@ -557,71 +545,112 @@ export function createRSCHandler<
|
|
|
557
545
|
variables: Record<string, any>,
|
|
558
546
|
nonce: string | undefined,
|
|
559
547
|
): Promise<Response> {
|
|
560
|
-
const previewStart = performance.now();
|
|
561
|
-
const preview = await router.previewMatch(request, { env });
|
|
562
|
-
const previewDur = performance.now() - previewStart;
|
|
563
548
|
const handlerTiming: string[] = variables.__handlerTiming || [];
|
|
564
|
-
|
|
565
|
-
//
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
549
|
+
|
|
550
|
+
// Debug manifest endpoint: handled before classification since it
|
|
551
|
+
// doesn't need a route match and needs trie access from the closure.
|
|
552
|
+
const isDev = process.env.NODE_ENV !== "production";
|
|
553
|
+
if (
|
|
554
|
+
url.searchParams.has("__debug_manifest") &&
|
|
555
|
+
(isDev || router.allowDebugManifest)
|
|
556
|
+
) {
|
|
557
|
+
const trie = getRouterTrie(router.id) ?? getRouteTrie();
|
|
558
|
+
const routeManifest = getRequiredRouteMap();
|
|
559
|
+
const { extractAncestryFromTrie } =
|
|
560
|
+
await import("../build/route-trie.js");
|
|
561
|
+
return new Response(
|
|
562
|
+
JSON.stringify(
|
|
563
|
+
{
|
|
564
|
+
routerId: router.id,
|
|
565
|
+
routeManifest,
|
|
566
|
+
routeAncestry: trie ? extractAncestryFromTrie(trie) : {},
|
|
567
|
+
routeTrie: trie,
|
|
568
|
+
precomputedEntries: getPrecomputedEntries(),
|
|
569
|
+
},
|
|
570
|
+
null,
|
|
571
|
+
2,
|
|
575
572
|
),
|
|
576
|
-
|
|
577
|
-
|
|
573
|
+
{
|
|
574
|
+
headers: { "Content-Type": "application/json" },
|
|
575
|
+
},
|
|
578
576
|
);
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
// ---- 1. Classify ----
|
|
580
|
+
// classifyRequest may throw RouteNotFoundError for unknown routes.
|
|
581
|
+
// In that case, fall through to a full-render plan so the pipeline
|
|
582
|
+
// can render the 404 page via the existing error handling path.
|
|
583
|
+
const classifyStart = performance.now();
|
|
584
|
+
let plan: RequestPlan<TEnv>;
|
|
585
|
+
try {
|
|
586
|
+
plan = await classifyRequest<TEnv>(request, url, {
|
|
587
|
+
findMatch: router.findMatch,
|
|
588
|
+
routerVersion: version,
|
|
589
|
+
routerId: router.id,
|
|
590
|
+
});
|
|
591
|
+
} catch (error) {
|
|
592
|
+
if (
|
|
593
|
+
error instanceof RouteNotFoundError ||
|
|
594
|
+
(error instanceof Error && error.name === "RouteNotFoundError")
|
|
595
|
+
) {
|
|
596
|
+
// Let the render path handle 404 — match()/matchPartial() will
|
|
597
|
+
// re-throw RouteNotFoundError and the catch block in
|
|
598
|
+
// executeRenderWithMiddleware renders the not-found page.
|
|
599
|
+
plan = {
|
|
600
|
+
mode: "full-render",
|
|
601
|
+
route: {
|
|
602
|
+
matched: null as any,
|
|
603
|
+
manifestEntry: null as any,
|
|
604
|
+
entries: [],
|
|
605
|
+
routeKey: "",
|
|
606
|
+
localRouteName: "",
|
|
607
|
+
params: {},
|
|
608
|
+
routeMiddleware: [],
|
|
609
|
+
cacheScope: null,
|
|
610
|
+
isPassthrough: false,
|
|
611
|
+
},
|
|
612
|
+
negotiated: false,
|
|
613
|
+
};
|
|
614
|
+
} else {
|
|
615
|
+
throw error;
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
const classifyDur = performance.now() - classifyStart;
|
|
619
|
+
handlerTiming.push(`handler-classify;dur=${classifyDur.toFixed(2)}`);
|
|
620
|
+
|
|
621
|
+
// ---- 2. Terminal plans (no execution needed) ----
|
|
622
|
+
if (plan.mode === "redirect") {
|
|
623
|
+
// Redirects are handled by the pipeline (match/matchPartial),
|
|
624
|
+
// but for partial requests we short-circuit with a Flight redirect.
|
|
625
|
+
if (url.searchParams.has("_rsc_partial")) {
|
|
626
|
+
return createRedirectFlightResponse(plan.redirectUrl);
|
|
588
627
|
}
|
|
589
|
-
|
|
628
|
+
// Full requests: let the pipeline handle the redirect via match()
|
|
629
|
+
// which returns { redirect: url }. Fall through to full-render.
|
|
590
630
|
}
|
|
591
631
|
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
if (mayNeedSSR(request, url)) {
|
|
596
|
-
variables[SSR_SETUP_VAR] = startSSRSetup(
|
|
597
|
-
handlerCtx,
|
|
598
|
-
request,
|
|
599
|
-
env,
|
|
600
|
-
url,
|
|
601
|
-
router.debugPerformance
|
|
602
|
-
? () => requireRequestContext()._metricsStore
|
|
603
|
-
: undefined,
|
|
632
|
+
if (plan.mode === "version-mismatch") {
|
|
633
|
+
console.log(
|
|
634
|
+
`[RSC] Version mismatch: client=${url.searchParams.get("_rsc_v")}, server=${version}. Forcing reload.`,
|
|
604
635
|
);
|
|
636
|
+
return createResponseWithMergedHeaders(null, {
|
|
637
|
+
status: 200,
|
|
638
|
+
headers: {
|
|
639
|
+
"X-RSC-Reload": plan.reloadUrl,
|
|
640
|
+
"content-type": "text/x-component;charset=utf-8",
|
|
641
|
+
},
|
|
642
|
+
});
|
|
605
643
|
}
|
|
606
644
|
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
// PE form submissions before any execution. Regular page navigations
|
|
617
|
-
// (GET without _rsc_loader/_rsc_action) are not affected.
|
|
618
|
-
const originPhase: OriginCheckPhase | null = isAction
|
|
619
|
-
? "action"
|
|
620
|
-
: isLoaderFetch
|
|
621
|
-
? "loader"
|
|
622
|
-
: request.method === "POST"
|
|
623
|
-
? "pe-form"
|
|
624
|
-
: null;
|
|
645
|
+
// ---- 3. Origin guard (gate for action/loader/PE modes) ----
|
|
646
|
+
const originPhase: OriginCheckPhase | null =
|
|
647
|
+
plan.mode === "action"
|
|
648
|
+
? "action"
|
|
649
|
+
: plan.mode === "loader"
|
|
650
|
+
? "loader"
|
|
651
|
+
: plan.mode === "pe-render"
|
|
652
|
+
? "pe-form"
|
|
653
|
+
: null;
|
|
625
654
|
if (originPhase) {
|
|
626
655
|
const originResult = await checkRequestOrigin(
|
|
627
656
|
request,
|
|
@@ -671,13 +700,33 @@ export function createRSCHandler<
|
|
|
671
700
|
}
|
|
672
701
|
}
|
|
673
702
|
|
|
674
|
-
//
|
|
703
|
+
// ---- 4. Execute ----
|
|
704
|
+
return executeRequest(
|
|
705
|
+
plan as ExecutableRequestPlan<TEnv>,
|
|
706
|
+
request,
|
|
707
|
+
env,
|
|
708
|
+
url,
|
|
709
|
+
variables,
|
|
710
|
+
nonce,
|
|
711
|
+
);
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
// Execute a classified request plan. Dispatches to the appropriate handler
|
|
715
|
+
// based on plan.mode. Lives in the createRSCHandler closure for access to
|
|
716
|
+
// handlerCtx, router, callOnError, etc.
|
|
717
|
+
// Only receives executable plans (version-mismatch is handled above).
|
|
718
|
+
async function executeRequest(
|
|
719
|
+
plan: ExecutableRequestPlan<TEnv>,
|
|
720
|
+
request: Request,
|
|
721
|
+
env: TEnv,
|
|
722
|
+
url: URL,
|
|
723
|
+
variables: Record<string, any>,
|
|
724
|
+
nonce: string | undefined,
|
|
725
|
+
): Promise<Response> {
|
|
726
|
+
// Common setup
|
|
675
727
|
const handleStore = requireRequestContext()._handleStore;
|
|
676
728
|
|
|
677
729
|
// Wire up error reporting for late streaming-handle failures
|
|
678
|
-
// (LateHandlePushError: handle pushed after stream completion).
|
|
679
|
-
// Without this, these errors are only caught by React's error boundary
|
|
680
|
-
// and never reach the router's onError callback or telemetry.
|
|
681
730
|
handleStore.onError = (error: Error) => {
|
|
682
731
|
const reqCtx = requireRequestContext();
|
|
683
732
|
callOnError(error, "handler", {
|
|
@@ -707,37 +756,106 @@ export function createRSCHandler<
|
|
|
707
756
|
};
|
|
708
757
|
|
|
709
758
|
// Set route params early so all execution paths can access ctx.params.
|
|
710
|
-
|
|
711
|
-
|
|
759
|
+
// Also store the classified snapshot so match/matchPartial can reuse it
|
|
760
|
+
// instead of calling resolveRoute again.
|
|
761
|
+
if (plan.mode !== "redirect") {
|
|
762
|
+
setRequestContextParams(plan.route.params, plan.route.routeKey);
|
|
763
|
+
requireRequestContext()._classifiedRoute = plan.route;
|
|
712
764
|
}
|
|
713
765
|
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
//
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
routeMiddleware:
|
|
766
|
+
const routeReverse = createReverseFunction(getRequiredRouteMap());
|
|
767
|
+
|
|
768
|
+
// ---- Response route: skip entire RSC pipeline ----
|
|
769
|
+
if (plan.mode === "response") {
|
|
770
|
+
// Build ResponseRouteMatch from plan fields. handleResponseRoute
|
|
771
|
+
// expects a flat object with params at the top level.
|
|
772
|
+
const responseMatch: ResponseRouteMatch = {
|
|
773
|
+
responseType: plan.responseType,
|
|
774
|
+
handler: plan.handler,
|
|
775
|
+
params: plan.route.params,
|
|
776
|
+
negotiated: plan.negotiated,
|
|
777
|
+
manifestEntry: plan.manifestEntry,
|
|
778
|
+
routeMiddleware: plan.routeMiddleware,
|
|
779
|
+
};
|
|
780
|
+
const responseOutcome = await withTimeout(
|
|
781
|
+
handleResponseRoute(
|
|
782
|
+
handlerCtx,
|
|
783
|
+
responseMatch,
|
|
784
|
+
request,
|
|
785
|
+
env,
|
|
786
|
+
url,
|
|
787
|
+
variables,
|
|
788
|
+
),
|
|
789
|
+
router.timeouts.renderStartMs,
|
|
790
|
+
"render-start",
|
|
791
|
+
);
|
|
792
|
+
if (responseOutcome.timedOut) {
|
|
793
|
+
return handleTimeoutResponse(
|
|
794
|
+
request,
|
|
795
|
+
env,
|
|
796
|
+
url,
|
|
797
|
+
"render-start",
|
|
798
|
+
responseOutcome.durationMs,
|
|
799
|
+
plan.route.routeKey,
|
|
800
|
+
);
|
|
801
|
+
}
|
|
802
|
+
const response = responseOutcome.result;
|
|
803
|
+
if (plan.negotiated) {
|
|
804
|
+
response.headers.append("Vary", "Accept");
|
|
805
|
+
}
|
|
806
|
+
return response;
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
// SSR setup: kick off in parallel for modes that need HTML rendering.
|
|
810
|
+
// Placed after response-route short-circuit so response/mime routes
|
|
811
|
+
// never pay for SSR work.
|
|
812
|
+
if (plan.mode !== "loader" && mayNeedSSR(request, url)) {
|
|
813
|
+
variables[SSR_SETUP_VAR] = startSSRSetup(
|
|
814
|
+
handlerCtx,
|
|
815
|
+
request,
|
|
816
|
+
env,
|
|
817
|
+
url,
|
|
818
|
+
router.debugPerformance
|
|
819
|
+
? () => requireRequestContext()._metricsStore
|
|
820
|
+
: undefined,
|
|
821
|
+
);
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
// ---- Loader fetch ----
|
|
825
|
+
if (plan.mode === "loader") {
|
|
826
|
+
return handleLoaderFetch(
|
|
827
|
+
handlerCtx,
|
|
828
|
+
request,
|
|
829
|
+
env,
|
|
830
|
+
url,
|
|
727
831
|
variables,
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
832
|
+
plan.route.params,
|
|
833
|
+
);
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
// ---- Progressive enhancement ----
|
|
837
|
+
if (plan.mode === "pe-render") {
|
|
838
|
+
const peResult = await handleProgressiveEnhancement(
|
|
839
|
+
handlerCtx,
|
|
840
|
+
request,
|
|
841
|
+
env,
|
|
842
|
+
url,
|
|
843
|
+
false, // isAction = false for PE
|
|
844
|
+
handleStore,
|
|
845
|
+
nonce,
|
|
846
|
+
{
|
|
847
|
+
routeMiddleware: plan.route.routeMiddleware,
|
|
848
|
+
variables,
|
|
849
|
+
routeReverse,
|
|
850
|
+
},
|
|
851
|
+
);
|
|
852
|
+
if (peResult) return peResult;
|
|
853
|
+
// PE handler returned null (not a PE form) — fall through to render
|
|
733
854
|
}
|
|
734
855
|
|
|
735
|
-
//
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
// the revalidation pass (identical to a normal render).
|
|
739
|
-
let actionContinuation: ActionContinuation | undefined;
|
|
740
|
-
if (isAction && actionId) {
|
|
856
|
+
// ---- Action: execute action, then revalidate wrapped in route middleware ----
|
|
857
|
+
if (plan.mode === "action") {
|
|
858
|
+
let actionContinuation: ActionContinuation | undefined;
|
|
741
859
|
try {
|
|
742
860
|
const actionOutcome = await withTimeout(
|
|
743
861
|
executeServerAction(
|
|
@@ -745,7 +863,7 @@ export function createRSCHandler<
|
|
|
745
863
|
request,
|
|
746
864
|
env,
|
|
747
865
|
url,
|
|
748
|
-
actionId,
|
|
866
|
+
plan.actionId,
|
|
749
867
|
handleStore,
|
|
750
868
|
),
|
|
751
869
|
router.timeouts.actionMs,
|
|
@@ -758,8 +876,8 @@ export function createRSCHandler<
|
|
|
758
876
|
url,
|
|
759
877
|
"action",
|
|
760
878
|
actionOutcome.durationMs,
|
|
761
|
-
|
|
762
|
-
actionId,
|
|
879
|
+
plan.route.routeKey,
|
|
880
|
+
plan.actionId,
|
|
763
881
|
);
|
|
764
882
|
}
|
|
765
883
|
const result = actionOutcome.result;
|
|
@@ -771,344 +889,293 @@ export function createRSCHandler<
|
|
|
771
889
|
request,
|
|
772
890
|
url,
|
|
773
891
|
env,
|
|
774
|
-
actionId,
|
|
892
|
+
actionId: plan.actionId,
|
|
775
893
|
handledByBoundary: false,
|
|
776
894
|
});
|
|
777
895
|
console.error(`[RSC] Action error:`, error);
|
|
778
896
|
throw error;
|
|
779
897
|
}
|
|
780
|
-
}
|
|
781
898
|
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
899
|
+
// Revalidation render wrapped in route middleware.
|
|
900
|
+
// Actions from client-side navigation include _rsc_partial — preserve
|
|
901
|
+
// the partial flag so the revalidation returns a Flight stream, not HTML.
|
|
902
|
+
// App-switch is already excluded by classifyRequest (would be full-render).
|
|
903
|
+
const isPartialAction = url.searchParams.has("_rsc_partial");
|
|
904
|
+
return executeRenderWithMiddleware(
|
|
905
|
+
plan.route.routeMiddleware,
|
|
906
|
+
plan.negotiated,
|
|
907
|
+
plan.route.routeKey,
|
|
908
|
+
routeReverse,
|
|
786
909
|
request,
|
|
787
910
|
env,
|
|
788
911
|
url,
|
|
789
912
|
variables,
|
|
790
913
|
nonce,
|
|
791
|
-
preview?.params,
|
|
792
|
-
preview?.routeKey,
|
|
793
914
|
handleStore,
|
|
915
|
+
isPartialAction,
|
|
794
916
|
actionContinuation,
|
|
795
917
|
);
|
|
796
|
-
|
|
797
|
-
response.headers.append("Vary", "Accept");
|
|
798
|
-
}
|
|
799
|
-
return response;
|
|
800
|
-
};
|
|
801
|
-
|
|
802
|
-
// Wrap the render path (with or without route middleware) in a
|
|
803
|
-
// renderStartMs timeout so slow renders are caught before output.
|
|
804
|
-
const executeRender = async (): Promise<Response> => {
|
|
805
|
-
if (preview?.routeMiddleware && preview.routeMiddleware.length > 0) {
|
|
806
|
-
const mwResponse = await executeMiddleware(
|
|
807
|
-
buildRouteMiddlewareEntries<TEnv>(preview.routeMiddleware),
|
|
808
|
-
request,
|
|
809
|
-
env,
|
|
810
|
-
variables,
|
|
811
|
-
renderHandler,
|
|
812
|
-
routeReverse,
|
|
813
|
-
);
|
|
814
|
-
|
|
815
|
-
if (
|
|
816
|
-
url.searchParams.has("_rsc_partial") ||
|
|
817
|
-
url.searchParams.has("_rsc_action")
|
|
818
|
-
) {
|
|
819
|
-
const intercepted = interceptRedirectForPartial(
|
|
820
|
-
mwResponse,
|
|
821
|
-
createRedirectFlightResponse,
|
|
822
|
-
);
|
|
823
|
-
if (intercepted) return intercepted;
|
|
824
|
-
}
|
|
825
|
-
|
|
826
|
-
return finalizeResponse(mwResponse);
|
|
827
|
-
}
|
|
918
|
+
}
|
|
828
919
|
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
920
|
+
// ---- Full render / Partial render (or PE that fell through) ----
|
|
921
|
+
if (plan.mode === "full-render" || plan.mode === "partial-render") {
|
|
922
|
+
const isPartial = plan.mode === "partial-render";
|
|
923
|
+
return executeRenderWithMiddleware(
|
|
924
|
+
plan.route.routeMiddleware,
|
|
925
|
+
plan.negotiated,
|
|
926
|
+
plan.route.routeKey,
|
|
927
|
+
routeReverse,
|
|
928
|
+
request,
|
|
929
|
+
env,
|
|
930
|
+
url,
|
|
931
|
+
variables,
|
|
932
|
+
nonce,
|
|
933
|
+
handleStore,
|
|
934
|
+
isPartial,
|
|
935
|
+
);
|
|
936
|
+
}
|
|
832
937
|
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
938
|
+
// PE that fell through (handleProgressiveEnhancement returned null)
|
|
939
|
+
// falls back to full render
|
|
940
|
+
if (plan.mode === "pe-render") {
|
|
941
|
+
return executeRenderWithMiddleware(
|
|
942
|
+
plan.route.routeMiddleware,
|
|
943
|
+
false,
|
|
944
|
+
plan.route.routeKey,
|
|
945
|
+
routeReverse,
|
|
840
946
|
request,
|
|
841
947
|
env,
|
|
842
948
|
url,
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
949
|
+
variables,
|
|
950
|
+
nonce,
|
|
951
|
+
handleStore,
|
|
952
|
+
false,
|
|
846
953
|
);
|
|
847
954
|
}
|
|
848
|
-
|
|
955
|
+
|
|
956
|
+
// Redirect plan that wasn't handled above (full-page redirect — let
|
|
957
|
+
// the pipeline handle it via match() which returns { redirect: url })
|
|
958
|
+
return executeRenderWithMiddleware(
|
|
959
|
+
plan.route.routeMiddleware,
|
|
960
|
+
false,
|
|
961
|
+
plan.route.routeKey,
|
|
962
|
+
routeReverse,
|
|
963
|
+
request,
|
|
964
|
+
env,
|
|
965
|
+
url,
|
|
966
|
+
variables,
|
|
967
|
+
nonce,
|
|
968
|
+
handleStore,
|
|
969
|
+
false,
|
|
970
|
+
);
|
|
849
971
|
}
|
|
850
972
|
|
|
851
|
-
//
|
|
852
|
-
//
|
|
853
|
-
//
|
|
854
|
-
async function
|
|
973
|
+
// Shared render execution: wraps handleRscRendering (or revalidateAfterAction)
|
|
974
|
+
// in route middleware and timeout handling. Consolidates the pattern used by
|
|
975
|
+
// action-revalidate, full-render, and partial-render modes.
|
|
976
|
+
async function executeRenderWithMiddleware(
|
|
977
|
+
routeMiddleware: import("../router/middleware-types.js").CollectedMiddleware[],
|
|
978
|
+
negotiated: boolean,
|
|
979
|
+
routeKey: string,
|
|
980
|
+
routeReverse: ReturnType<typeof createReverseFunction>,
|
|
855
981
|
request: Request,
|
|
856
982
|
env: TEnv,
|
|
857
983
|
url: URL,
|
|
858
984
|
variables: Record<string, any>,
|
|
859
985
|
nonce: string | undefined,
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
handleStore?: ReturnType<typeof requireRequestContext>["_handleStore"],
|
|
986
|
+
handleStore: ReturnType<typeof requireRequestContext>["_handleStore"],
|
|
987
|
+
isPartial: boolean,
|
|
863
988
|
actionContinuation?: ActionContinuation,
|
|
864
989
|
): Promise<Response> {
|
|
865
|
-
const
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
990
|
+
const renderHandler = async (): Promise<Response> => {
|
|
991
|
+
try {
|
|
992
|
+
let response: Response;
|
|
993
|
+
if (actionContinuation) {
|
|
994
|
+
response = await revalidateAfterAction(
|
|
995
|
+
handlerCtx,
|
|
996
|
+
request,
|
|
997
|
+
env,
|
|
998
|
+
url,
|
|
999
|
+
handleStore,
|
|
1000
|
+
actionContinuation,
|
|
1001
|
+
);
|
|
1002
|
+
} else {
|
|
1003
|
+
response = await handleRscRendering(
|
|
1004
|
+
handlerCtx,
|
|
1005
|
+
request,
|
|
1006
|
+
env,
|
|
1007
|
+
url,
|
|
1008
|
+
isPartial,
|
|
1009
|
+
handleStore,
|
|
1010
|
+
nonce,
|
|
1011
|
+
);
|
|
1012
|
+
}
|
|
1013
|
+
if (negotiated) {
|
|
1014
|
+
response.headers.append("Vary", "Accept");
|
|
1015
|
+
}
|
|
1016
|
+
return response;
|
|
1017
|
+
} catch (error) {
|
|
1018
|
+
// Check if middleware/handler returned Response
|
|
1019
|
+
if (error instanceof Response) {
|
|
1020
|
+
// During partial (client-side navigation), a 200 Response from a handler
|
|
1021
|
+
// means the route serves raw content (JSON, text, etc.), not JSX.
|
|
1022
|
+
// Signal the browser to hard-navigate so it renders the raw response.
|
|
1023
|
+
if (isPartial && error.status === 200) {
|
|
1024
|
+
console.warn(
|
|
1025
|
+
`[RSC] Route handler at ${url.pathname} returned a Response during client-side navigation. ` +
|
|
1026
|
+
`Falling back to hard navigation. Use data-external on the <Link> to avoid the extra round-trip.`,
|
|
1027
|
+
);
|
|
1028
|
+
return createResponseWithMergedHeaders(null, {
|
|
1029
|
+
status: 200,
|
|
1030
|
+
headers: {
|
|
1031
|
+
"X-RSC-Reload": stripInternalParams(url).toString(),
|
|
1032
|
+
"content-type": "text/x-component;charset=utf-8",
|
|
1033
|
+
},
|
|
1034
|
+
});
|
|
1035
|
+
}
|
|
876
1036
|
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
if (referer) {
|
|
884
|
-
try {
|
|
885
|
-
const refererUrl = new URL(referer);
|
|
886
|
-
if (refererUrl.origin === url.origin) {
|
|
887
|
-
reloadUrl = referer;
|
|
888
|
-
}
|
|
889
|
-
} catch {
|
|
890
|
-
// Malformed referer, fall back to cleanUrl
|
|
1037
|
+
if (isPartial) {
|
|
1038
|
+
const intercepted = interceptRedirectForPartial(
|
|
1039
|
+
error,
|
|
1040
|
+
createRedirectFlightResponse,
|
|
1041
|
+
);
|
|
1042
|
+
if (intercepted) return intercepted;
|
|
891
1043
|
}
|
|
1044
|
+
|
|
1045
|
+
return error;
|
|
892
1046
|
}
|
|
893
|
-
}
|
|
894
1047
|
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
const isDev = process.env.NODE_ENV !== "production";
|
|
907
|
-
if (
|
|
908
|
-
url.searchParams.has("__debug_manifest") &&
|
|
909
|
-
(isDev || router.allowDebugManifest)
|
|
910
|
-
) {
|
|
911
|
-
const trie = getRouterTrie(router.id) ?? getRouteTrie();
|
|
912
|
-
const routeManifest = getRequiredRouteMap();
|
|
913
|
-
const { extractAncestryFromTrie } =
|
|
914
|
-
await import("../build/route-trie.js");
|
|
915
|
-
return new Response(
|
|
916
|
-
JSON.stringify(
|
|
917
|
-
{
|
|
918
|
-
routerId: router.id,
|
|
919
|
-
routeManifest,
|
|
920
|
-
routeAncestry: trie ? extractAncestryFromTrie(trie) : {},
|
|
921
|
-
routeTrie: trie,
|
|
922
|
-
precomputedEntries: getPrecomputedEntries(),
|
|
923
|
-
},
|
|
924
|
-
null,
|
|
925
|
-
2,
|
|
926
|
-
),
|
|
927
|
-
{
|
|
928
|
-
headers: { "Content-Type": "application/json" },
|
|
929
|
-
},
|
|
930
|
-
);
|
|
931
|
-
}
|
|
1048
|
+
// Render 404 page for unmatched routes
|
|
1049
|
+
const isRouteNotFound =
|
|
1050
|
+
error instanceof RouteNotFoundError ||
|
|
1051
|
+
(error instanceof Error && error.name === "RouteNotFoundError");
|
|
1052
|
+
if (isRouteNotFound) {
|
|
1053
|
+
callOnError(error, "routing", {
|
|
1054
|
+
request,
|
|
1055
|
+
url,
|
|
1056
|
+
env,
|
|
1057
|
+
handledByBoundary: true,
|
|
1058
|
+
});
|
|
932
1059
|
|
|
933
|
-
|
|
1060
|
+
const notFoundOption = router.notFound;
|
|
1061
|
+
const notFoundComponent =
|
|
1062
|
+
typeof notFoundOption === "function"
|
|
1063
|
+
? notFoundOption({ pathname: url.pathname })
|
|
1064
|
+
: (notFoundOption ?? createElement("h1", null, "Not Found"));
|
|
1065
|
+
|
|
1066
|
+
const notFoundSegment = {
|
|
1067
|
+
id: "notFound",
|
|
1068
|
+
namespace: "notFound",
|
|
1069
|
+
type: "route" as const,
|
|
1070
|
+
index: 0,
|
|
1071
|
+
component: notFoundComponent,
|
|
1072
|
+
params: {},
|
|
1073
|
+
};
|
|
1074
|
+
|
|
1075
|
+
const payload: RscPayload = {
|
|
1076
|
+
metadata: {
|
|
1077
|
+
pathname: url.pathname,
|
|
1078
|
+
routerId: router.id,
|
|
1079
|
+
basename: router.basename,
|
|
1080
|
+
segments: [notFoundSegment],
|
|
1081
|
+
matched: [],
|
|
1082
|
+
diff: [],
|
|
1083
|
+
isPartial: false,
|
|
1084
|
+
rootLayout: router.rootLayout,
|
|
1085
|
+
handles: handleStore.stream(),
|
|
1086
|
+
version,
|
|
1087
|
+
themeConfig: router.themeConfig,
|
|
1088
|
+
warmupEnabled: router.warmupEnabled,
|
|
1089
|
+
initialTheme: requireRequestContext().theme,
|
|
1090
|
+
},
|
|
1091
|
+
};
|
|
934
1092
|
|
|
935
|
-
|
|
936
|
-
// Route params were already set in coreRequestHandler, but set again
|
|
937
|
-
// for callers that enter coreRequestHandlerInner directly.
|
|
938
|
-
if (routeParams) {
|
|
939
|
-
setRequestContextParams(routeParams, routeKey);
|
|
940
|
-
}
|
|
1093
|
+
const rscStream = renderToReadableStream(payload);
|
|
941
1094
|
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
handlerCtx,
|
|
948
|
-
request,
|
|
949
|
-
env,
|
|
950
|
-
url,
|
|
951
|
-
store,
|
|
952
|
-
actionContinuation,
|
|
953
|
-
);
|
|
954
|
-
}
|
|
1095
|
+
const isRscRequest =
|
|
1096
|
+
isPartial ||
|
|
1097
|
+
(!request.headers.get("accept")?.includes("text/html") &&
|
|
1098
|
+
!url.searchParams.has("__html")) ||
|
|
1099
|
+
url.searchParams.has("__rsc");
|
|
955
1100
|
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
handlerCtx,
|
|
963
|
-
request,
|
|
964
|
-
env,
|
|
965
|
-
url,
|
|
966
|
-
variables,
|
|
967
|
-
routeParams,
|
|
968
|
-
);
|
|
969
|
-
}
|
|
1101
|
+
if (isRscRequest) {
|
|
1102
|
+
return createResponseWithMergedHeaders(rscStream, {
|
|
1103
|
+
status: 404,
|
|
1104
|
+
headers: { "content-type": "text/x-component;charset=utf-8" },
|
|
1105
|
+
});
|
|
1106
|
+
}
|
|
970
1107
|
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
request,
|
|
978
|
-
env,
|
|
979
|
-
url,
|
|
980
|
-
isPartial,
|
|
981
|
-
store,
|
|
982
|
-
nonce,
|
|
983
|
-
);
|
|
984
|
-
} catch (error) {
|
|
985
|
-
// Check if middleware/handler returned Response
|
|
986
|
-
if (error instanceof Response) {
|
|
987
|
-
// During partial (client-side navigation), a 200 Response from a handler
|
|
988
|
-
// means the route serves raw content (JSON, text, etc.), not JSX.
|
|
989
|
-
// Signal the browser to hard-navigate so it renders the raw response.
|
|
990
|
-
// Only for 200 — redirects (3xx) work already because the browser follows
|
|
991
|
-
// them automatically to a URL that serves Flight data.
|
|
992
|
-
if (isPartial && error.status === 200) {
|
|
993
|
-
console.warn(
|
|
994
|
-
`[RSC] Route handler at ${url.pathname} returned a Response during client-side navigation. ` +
|
|
995
|
-
`Falling back to hard navigation. Use data-external on the <Link> to avoid the extra round-trip.`,
|
|
1108
|
+
const [ssrModule, streamMode] = await getSSRSetup(
|
|
1109
|
+
handlerCtx,
|
|
1110
|
+
request,
|
|
1111
|
+
env,
|
|
1112
|
+
url,
|
|
1113
|
+
requireRequestContext()._metricsStore,
|
|
996
1114
|
);
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
"X-RSC-Reload": stripInternalParams(url).toString(),
|
|
1001
|
-
"content-type": "text/x-component;charset=utf-8",
|
|
1002
|
-
},
|
|
1115
|
+
const htmlStream = await ssrModule.renderHTML(rscStream, {
|
|
1116
|
+
nonce,
|
|
1117
|
+
streamMode,
|
|
1003
1118
|
});
|
|
1004
|
-
}
|
|
1005
1119
|
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
);
|
|
1011
|
-
if (intercepted) return intercepted;
|
|
1120
|
+
return createResponseWithMergedHeaders(htmlStream, {
|
|
1121
|
+
status: 404,
|
|
1122
|
+
headers: { "content-type": "text/html;charset=utf-8" },
|
|
1123
|
+
});
|
|
1012
1124
|
}
|
|
1013
1125
|
|
|
1014
|
-
|
|
1015
|
-
}
|
|
1016
|
-
|
|
1017
|
-
// Render 404 page for unmatched routes
|
|
1018
|
-
// Check both instanceof and error.name for cross-bundle compatibility
|
|
1019
|
-
const isRouteNotFound =
|
|
1020
|
-
error instanceof RouteNotFoundError ||
|
|
1021
|
-
(error instanceof Error && error.name === "RouteNotFoundError");
|
|
1022
|
-
if (isRouteNotFound) {
|
|
1126
|
+
// Report unhandled errors
|
|
1023
1127
|
callOnError(error, "routing", {
|
|
1024
1128
|
request,
|
|
1025
1129
|
url,
|
|
1026
1130
|
env,
|
|
1027
|
-
handledByBoundary:
|
|
1028
|
-
});
|
|
1029
|
-
|
|
1030
|
-
// Get notFound component from router options or use default
|
|
1031
|
-
const notFoundOption = router.notFound;
|
|
1032
|
-
const notFoundComponent =
|
|
1033
|
-
typeof notFoundOption === "function"
|
|
1034
|
-
? notFoundOption({ pathname: url.pathname })
|
|
1035
|
-
: (notFoundOption ?? createElement("h1", null, "Not Found"));
|
|
1036
|
-
|
|
1037
|
-
// Create a simple segment for the 404 page
|
|
1038
|
-
const notFoundSegment = {
|
|
1039
|
-
id: "notFound",
|
|
1040
|
-
namespace: "notFound",
|
|
1041
|
-
type: "route" as const,
|
|
1042
|
-
index: 0,
|
|
1043
|
-
component: notFoundComponent,
|
|
1044
|
-
params: {},
|
|
1045
|
-
};
|
|
1046
|
-
|
|
1047
|
-
const payload: RscPayload = {
|
|
1048
|
-
metadata: {
|
|
1049
|
-
pathname: url.pathname,
|
|
1050
|
-
segments: [notFoundSegment],
|
|
1051
|
-
matched: [],
|
|
1052
|
-
diff: [],
|
|
1053
|
-
isPartial: false,
|
|
1054
|
-
rootLayout: router.rootLayout,
|
|
1055
|
-
handles: store.stream(),
|
|
1056
|
-
version,
|
|
1057
|
-
themeConfig: router.themeConfig,
|
|
1058
|
-
warmupEnabled: router.warmupEnabled,
|
|
1059
|
-
initialTheme: requireRequestContext().theme,
|
|
1060
|
-
// No routeName for not-found routes
|
|
1061
|
-
},
|
|
1062
|
-
};
|
|
1063
|
-
|
|
1064
|
-
const debugChannel = requireRequestContext()._debugChannel;
|
|
1065
|
-
const rscStream = renderToReadableStream(payload, {
|
|
1066
|
-
...(debugChannel && { debugChannel }),
|
|
1131
|
+
handledByBoundary: false,
|
|
1067
1132
|
});
|
|
1133
|
+
console.error(`[RSC] Error:`, error);
|
|
1134
|
+
throw error;
|
|
1135
|
+
}
|
|
1136
|
+
};
|
|
1068
1137
|
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
(
|
|
1074
|
-
!url.searchParams.has("__html")) ||
|
|
1075
|
-
url.searchParams.has("__rsc");
|
|
1076
|
-
|
|
1077
|
-
if (isRscRequest) {
|
|
1078
|
-
return createResponseWithMergedHeaders(rscStream, {
|
|
1079
|
-
status: 404,
|
|
1080
|
-
headers: { "content-type": "text/x-component;charset=utf-8" },
|
|
1081
|
-
});
|
|
1082
|
-
}
|
|
1083
|
-
|
|
1084
|
-
// Delegate to SSR for HTML response (reuse early setup if available)
|
|
1085
|
-
const [ssrModule, streamMode] = await getSSRSetup(
|
|
1086
|
-
handlerCtx,
|
|
1138
|
+
// Wrap the render path in a renderStartMs timeout
|
|
1139
|
+
const executeRender = async (): Promise<Response> => {
|
|
1140
|
+
if (routeMiddleware.length > 0) {
|
|
1141
|
+
const mwResponse = await executeMiddleware(
|
|
1142
|
+
buildRouteMiddlewareEntries<TEnv>(routeMiddleware),
|
|
1087
1143
|
request,
|
|
1088
1144
|
env,
|
|
1089
|
-
|
|
1090
|
-
|
|
1145
|
+
variables,
|
|
1146
|
+
renderHandler,
|
|
1147
|
+
routeReverse,
|
|
1091
1148
|
);
|
|
1092
|
-
const htmlStream = await ssrModule.renderHTML(rscStream, {
|
|
1093
|
-
nonce,
|
|
1094
|
-
streamMode,
|
|
1095
|
-
});
|
|
1096
1149
|
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1150
|
+
if (isPartial || actionContinuation) {
|
|
1151
|
+
const intercepted = interceptRedirectForPartial(
|
|
1152
|
+
mwResponse,
|
|
1153
|
+
createRedirectFlightResponse,
|
|
1154
|
+
);
|
|
1155
|
+
if (intercepted) return intercepted;
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
return finalizeResponse(mwResponse);
|
|
1101
1159
|
}
|
|
1102
1160
|
|
|
1103
|
-
|
|
1104
|
-
|
|
1161
|
+
return renderHandler();
|
|
1162
|
+
};
|
|
1163
|
+
|
|
1164
|
+
const renderOutcome = await withTimeout(
|
|
1165
|
+
executeRender(),
|
|
1166
|
+
router.timeouts.renderStartMs,
|
|
1167
|
+
"render-start",
|
|
1168
|
+
);
|
|
1169
|
+
if (renderOutcome.timedOut) {
|
|
1170
|
+
return handleTimeoutResponse(
|
|
1105
1171
|
request,
|
|
1106
|
-
url,
|
|
1107
1172
|
env,
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1173
|
+
url,
|
|
1174
|
+
"render-start",
|
|
1175
|
+
renderOutcome.durationMs,
|
|
1176
|
+
routeKey,
|
|
1177
|
+
);
|
|
1112
1178
|
}
|
|
1179
|
+
return renderOutcome.result;
|
|
1113
1180
|
}
|
|
1114
1181
|
}
|