@rangojs/router 0.0.0-experimental.fa8a383a → 0.0.0-experimental.fb6e2f40
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 +421 -121
- package/package.json +2 -2
- package/skills/cache-guide/SKILL.md +32 -0
- package/skills/caching/SKILL.md +8 -0
- package/skills/links/SKILL.md +3 -1
- package/skills/loader/SKILL.md +53 -43
- package/skills/middleware/SKILL.md +2 -0
- package/skills/parallel/SKILL.md +67 -0
- package/skills/prerender/SKILL.md +110 -68
- package/skills/route/SKILL.md +31 -0
- package/skills/router-setup/SKILL.md +87 -2
- package/skills/typesafety/SKILL.md +10 -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 -40
- package/src/browser/navigation-store.ts +43 -8
- package/src/browser/partial-update.ts +37 -4
- package/src/browser/prefetch/fetch.ts +8 -2
- package/src/browser/prefetch/queue.ts +61 -29
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/react/Link.tsx +44 -8
- package/src/browser/react/NavigationProvider.tsx +13 -4
- 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 -6
- package/src/browser/types.ts +27 -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/cache/cache-runtime.ts +15 -11
- package/src/cache/cache-scope.ts +46 -5
- package/src/cache/taint.ts +55 -0
- package/src/client.tsx +2 -56
- package/src/context-var.ts +72 -2
- 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 +42 -19
- package/src/route-definition/helpers-types.ts +10 -6
- 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 +79 -23
- package/src/router/intercept-resolution.ts +9 -4
- package/src/router/loader-resolution.ts +122 -10
- package/src/router/match-api.ts +124 -189
- package/src/router/match-middleware/background-revalidation.ts +12 -1
- package/src/router/match-middleware/cache-lookup.ts +68 -13
- package/src/router/match-middleware/cache-store.ts +21 -4
- package/src/router/match-middleware/segment-resolution.ts +53 -0
- package/src/router/match-result.ts +11 -5
- package/src/router/metrics.ts +6 -1
- package/src/router/middleware-types.ts +6 -8
- package/src/router/middleware.ts +2 -5
- 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-context.ts +1 -0
- package/src/router/router-interfaces.ts +36 -4
- package/src/router/router-options.ts +37 -11
- package/src/router/segment-resolution/fresh.ts +101 -18
- package/src/router/segment-resolution/helpers.ts +29 -24
- package/src/router/segment-resolution/revalidation.ts +122 -26
- package/src/router/types.ts +1 -0
- package/src/router.ts +54 -5
- package/src/rsc/handler.ts +460 -377
- package/src/rsc/manifest-init.ts +5 -1
- package/src/rsc/progressive-enhancement.ts +4 -0
- package/src/rsc/rsc-rendering.ts +5 -0
- package/src/rsc/server-action.ts +2 -0
- package/src/rsc/ssr-setup.ts +2 -2
- package/src/rsc/types.ts +8 -1
- package/src/server/context.ts +50 -1
- package/src/server/loader-registry.ts +9 -8
- package/src/server/request-context.ts +146 -14
- 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 +137 -33
- package/src/types/loader-types.ts +36 -9
- package/src/types/route-entry.ts +1 -1
- package/src/urls/path-helper-types.ts +9 -2
- 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/use-loader.tsx +73 -4
- 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 +88 -0
- package/src/vite/plugins/refresh-cmd.ts +88 -26
- package/src/vite/rango.ts +19 -2
- 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/rsc/handler.ts
CHANGED
|
@@ -14,10 +14,10 @@ import {
|
|
|
14
14
|
runWithRequestContext,
|
|
15
15
|
setRequestContextParams,
|
|
16
16
|
requireRequestContext,
|
|
17
|
+
getRequestContext,
|
|
17
18
|
createRequestContext,
|
|
18
19
|
} from "../server/request-context.js";
|
|
19
20
|
import * as rscDeps from "@vitejs/plugin-rsc/rsc";
|
|
20
|
-
|
|
21
21
|
import type {
|
|
22
22
|
RscPayload,
|
|
23
23
|
CreateRSCHandlerOptions,
|
|
@@ -82,6 +82,11 @@ import {
|
|
|
82
82
|
mayNeedSSR,
|
|
83
83
|
SSR_SETUP_VAR,
|
|
84
84
|
} from "./ssr-setup.js";
|
|
85
|
+
import {
|
|
86
|
+
classifyRequest,
|
|
87
|
+
type RequestPlan,
|
|
88
|
+
type ExecutableRequestPlan,
|
|
89
|
+
} from "../router/request-classification.js";
|
|
85
90
|
|
|
86
91
|
/**
|
|
87
92
|
* Create an RSC request handler.
|
|
@@ -452,6 +457,9 @@ export function createRSCHandler<
|
|
|
452
457
|
// - Server components during rendering
|
|
453
458
|
// - Error boundaries
|
|
454
459
|
// - Streaming
|
|
460
|
+
// Store basename on request context (scoped per-request via existing ALS)
|
|
461
|
+
requestContext._basename = router.basename;
|
|
462
|
+
|
|
455
463
|
return runWithRequestContext(requestContext, async () => {
|
|
456
464
|
// Core handler logic (wrapped by middleware)
|
|
457
465
|
const coreHandler = async (): Promise<Response> => {
|
|
@@ -490,7 +498,6 @@ export function createRSCHandler<
|
|
|
490
498
|
// has completed so :post spans are captured in the timeline.
|
|
491
499
|
// Handler timing parts are always emitted (even without debug metrics)
|
|
492
500
|
// so non-debug requests still get bootstrap Server-Timing entries.
|
|
493
|
-
const finalizeStart = performance.now();
|
|
494
501
|
const handlerTimingArr: string[] = variables.__handlerTiming || [];
|
|
495
502
|
// Preserve any existing Server-Timing set by response routes or middleware
|
|
496
503
|
const existingTiming = response.headers.get("Server-Timing");
|
|
@@ -507,14 +514,6 @@ export function createRSCHandler<
|
|
|
507
514
|
const totalStart = earlyMetricsStore
|
|
508
515
|
? handlerStart
|
|
509
516
|
: metricsStore.requestStart;
|
|
510
|
-
// response-finalize measures the gap between render completion and
|
|
511
|
-
// handler return: header assembly, onResponse callbacks, etc.
|
|
512
|
-
appendMetric(
|
|
513
|
-
metricsStore,
|
|
514
|
-
"response-finalize",
|
|
515
|
-
finalizeStart,
|
|
516
|
-
performance.now() - finalizeStart,
|
|
517
|
-
);
|
|
518
517
|
appendMetric(
|
|
519
518
|
metricsStore,
|
|
520
519
|
"handler:total",
|
|
@@ -536,7 +535,9 @@ export function createRSCHandler<
|
|
|
536
535
|
});
|
|
537
536
|
};
|
|
538
537
|
|
|
539
|
-
// 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.
|
|
540
541
|
async function coreRequestHandler(
|
|
541
542
|
request: Request,
|
|
542
543
|
env: TEnv,
|
|
@@ -544,71 +545,112 @@ export function createRSCHandler<
|
|
|
544
545
|
variables: Record<string, any>,
|
|
545
546
|
nonce: string | undefined,
|
|
546
547
|
): Promise<Response> {
|
|
547
|
-
const previewStart = performance.now();
|
|
548
|
-
const preview = await router.previewMatch(request, { env });
|
|
549
|
-
const previewDur = performance.now() - previewStart;
|
|
550
548
|
const handlerTiming: string[] = variables.__handlerTiming || [];
|
|
551
|
-
|
|
552
|
-
//
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
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,
|
|
562
572
|
),
|
|
563
|
-
|
|
564
|
-
|
|
573
|
+
{
|
|
574
|
+
headers: { "Content-Type": "application/json" },
|
|
575
|
+
},
|
|
565
576
|
);
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
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);
|
|
575
627
|
}
|
|
576
|
-
|
|
628
|
+
// Full requests: let the pipeline handle the redirect via match()
|
|
629
|
+
// which returns { redirect: url }. Fall through to full-render.
|
|
577
630
|
}
|
|
578
631
|
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
if (mayNeedSSR(request, url)) {
|
|
583
|
-
variables[SSR_SETUP_VAR] = startSSRSetup(
|
|
584
|
-
handlerCtx,
|
|
585
|
-
request,
|
|
586
|
-
env,
|
|
587
|
-
url,
|
|
588
|
-
router.debugPerformance
|
|
589
|
-
? () => requireRequestContext()._metricsStore
|
|
590
|
-
: undefined,
|
|
632
|
+
if (plan.mode === "version-mismatch") {
|
|
633
|
+
console.log(
|
|
634
|
+
`[RSC] Version mismatch: client=${url.searchParams.get("_rsc_v")}, server=${version}. Forcing reload.`,
|
|
591
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
|
+
});
|
|
592
643
|
}
|
|
593
644
|
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
// PE form submissions before any execution. Regular page navigations
|
|
604
|
-
// (GET without _rsc_loader/_rsc_action) are not affected.
|
|
605
|
-
const originPhase: OriginCheckPhase | null = isAction
|
|
606
|
-
? "action"
|
|
607
|
-
: isLoaderFetch
|
|
608
|
-
? "loader"
|
|
609
|
-
: request.method === "POST"
|
|
610
|
-
? "pe-form"
|
|
611
|
-
: 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;
|
|
612
654
|
if (originPhase) {
|
|
613
655
|
const originResult = await checkRequestOrigin(
|
|
614
656
|
request,
|
|
@@ -658,13 +700,33 @@ export function createRSCHandler<
|
|
|
658
700
|
}
|
|
659
701
|
}
|
|
660
702
|
|
|
661
|
-
//
|
|
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
|
|
662
727
|
const handleStore = requireRequestContext()._handleStore;
|
|
663
728
|
|
|
664
729
|
// Wire up error reporting for late streaming-handle failures
|
|
665
|
-
// (LateHandlePushError: handle pushed after stream completion).
|
|
666
|
-
// Without this, these errors are only caught by React's error boundary
|
|
667
|
-
// and never reach the router's onError callback or telemetry.
|
|
668
730
|
handleStore.onError = (error: Error) => {
|
|
669
731
|
const reqCtx = requireRequestContext();
|
|
670
732
|
callOnError(error, "handler", {
|
|
@@ -694,37 +756,106 @@ export function createRSCHandler<
|
|
|
694
756
|
};
|
|
695
757
|
|
|
696
758
|
// Set route params early so all execution paths can access ctx.params.
|
|
697
|
-
|
|
698
|
-
|
|
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;
|
|
699
764
|
}
|
|
700
765
|
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
//
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
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,
|
|
714
831
|
variables,
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
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
|
|
720
854
|
}
|
|
721
855
|
|
|
722
|
-
//
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
// the revalidation pass (identical to a normal render).
|
|
726
|
-
let actionContinuation: ActionContinuation | undefined;
|
|
727
|
-
if (isAction && actionId) {
|
|
856
|
+
// ---- Action: execute action, then revalidate wrapped in route middleware ----
|
|
857
|
+
if (plan.mode === "action") {
|
|
858
|
+
let actionContinuation: ActionContinuation | undefined;
|
|
728
859
|
try {
|
|
729
860
|
const actionOutcome = await withTimeout(
|
|
730
861
|
executeServerAction(
|
|
@@ -732,7 +863,7 @@ export function createRSCHandler<
|
|
|
732
863
|
request,
|
|
733
864
|
env,
|
|
734
865
|
url,
|
|
735
|
-
actionId,
|
|
866
|
+
plan.actionId,
|
|
736
867
|
handleStore,
|
|
737
868
|
),
|
|
738
869
|
router.timeouts.actionMs,
|
|
@@ -745,8 +876,8 @@ export function createRSCHandler<
|
|
|
745
876
|
url,
|
|
746
877
|
"action",
|
|
747
878
|
actionOutcome.durationMs,
|
|
748
|
-
|
|
749
|
-
actionId,
|
|
879
|
+
plan.route.routeKey,
|
|
880
|
+
plan.actionId,
|
|
750
881
|
);
|
|
751
882
|
}
|
|
752
883
|
const result = actionOutcome.result;
|
|
@@ -758,341 +889,293 @@ export function createRSCHandler<
|
|
|
758
889
|
request,
|
|
759
890
|
url,
|
|
760
891
|
env,
|
|
761
|
-
actionId,
|
|
892
|
+
actionId: plan.actionId,
|
|
762
893
|
handledByBoundary: false,
|
|
763
894
|
});
|
|
764
895
|
console.error(`[RSC] Action error:`, error);
|
|
765
896
|
throw error;
|
|
766
897
|
}
|
|
767
|
-
}
|
|
768
898
|
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
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,
|
|
773
909
|
request,
|
|
774
910
|
env,
|
|
775
911
|
url,
|
|
776
912
|
variables,
|
|
777
913
|
nonce,
|
|
778
|
-
preview?.params,
|
|
779
|
-
preview?.routeKey,
|
|
780
914
|
handleStore,
|
|
915
|
+
isPartialAction,
|
|
781
916
|
actionContinuation,
|
|
782
917
|
);
|
|
783
|
-
|
|
784
|
-
response.headers.append("Vary", "Accept");
|
|
785
|
-
}
|
|
786
|
-
return response;
|
|
787
|
-
};
|
|
788
|
-
|
|
789
|
-
// Wrap the render path (with or without route middleware) in a
|
|
790
|
-
// renderStartMs timeout so slow renders are caught before output.
|
|
791
|
-
const executeRender = async (): Promise<Response> => {
|
|
792
|
-
if (preview?.routeMiddleware && preview.routeMiddleware.length > 0) {
|
|
793
|
-
const mwResponse = await executeMiddleware(
|
|
794
|
-
buildRouteMiddlewareEntries<TEnv>(preview.routeMiddleware),
|
|
795
|
-
request,
|
|
796
|
-
env,
|
|
797
|
-
variables,
|
|
798
|
-
renderHandler,
|
|
799
|
-
routeReverse,
|
|
800
|
-
);
|
|
801
|
-
|
|
802
|
-
if (
|
|
803
|
-
url.searchParams.has("_rsc_partial") ||
|
|
804
|
-
url.searchParams.has("_rsc_action")
|
|
805
|
-
) {
|
|
806
|
-
const intercepted = interceptRedirectForPartial(
|
|
807
|
-
mwResponse,
|
|
808
|
-
createRedirectFlightResponse,
|
|
809
|
-
);
|
|
810
|
-
if (intercepted) return intercepted;
|
|
811
|
-
}
|
|
812
|
-
|
|
813
|
-
return finalizeResponse(mwResponse);
|
|
814
|
-
}
|
|
918
|
+
}
|
|
815
919
|
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
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
|
+
}
|
|
819
937
|
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
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,
|
|
827
946
|
request,
|
|
828
947
|
env,
|
|
829
948
|
url,
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
949
|
+
variables,
|
|
950
|
+
nonce,
|
|
951
|
+
handleStore,
|
|
952
|
+
false,
|
|
833
953
|
);
|
|
834
954
|
}
|
|
835
|
-
|
|
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
|
+
);
|
|
836
971
|
}
|
|
837
972
|
|
|
838
|
-
//
|
|
839
|
-
//
|
|
840
|
-
//
|
|
841
|
-
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>,
|
|
842
981
|
request: Request,
|
|
843
982
|
env: TEnv,
|
|
844
983
|
url: URL,
|
|
845
984
|
variables: Record<string, any>,
|
|
846
985
|
nonce: string | undefined,
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
handleStore?: ReturnType<typeof requireRequestContext>["_handleStore"],
|
|
986
|
+
handleStore: ReturnType<typeof requireRequestContext>["_handleStore"],
|
|
987
|
+
isPartial: boolean,
|
|
850
988
|
actionContinuation?: ActionContinuation,
|
|
851
989
|
): Promise<Response> {
|
|
852
|
-
const
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
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
|
+
}
|
|
863
1036
|
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
if (referer) {
|
|
871
|
-
try {
|
|
872
|
-
const refererUrl = new URL(referer);
|
|
873
|
-
if (refererUrl.origin === url.origin) {
|
|
874
|
-
reloadUrl = referer;
|
|
875
|
-
}
|
|
876
|
-
} catch {
|
|
877
|
-
// Malformed referer, fall back to cleanUrl
|
|
1037
|
+
if (isPartial) {
|
|
1038
|
+
const intercepted = interceptRedirectForPartial(
|
|
1039
|
+
error,
|
|
1040
|
+
createRedirectFlightResponse,
|
|
1041
|
+
);
|
|
1042
|
+
if (intercepted) return intercepted;
|
|
878
1043
|
}
|
|
1044
|
+
|
|
1045
|
+
return error;
|
|
879
1046
|
}
|
|
880
|
-
}
|
|
881
1047
|
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
const isDev = process.env.NODE_ENV !== "production";
|
|
894
|
-
if (
|
|
895
|
-
url.searchParams.has("__debug_manifest") &&
|
|
896
|
-
(isDev || router.allowDebugManifest)
|
|
897
|
-
) {
|
|
898
|
-
const trie = getRouterTrie(router.id) ?? getRouteTrie();
|
|
899
|
-
const routeManifest = getRequiredRouteMap();
|
|
900
|
-
const { extractAncestryFromTrie } =
|
|
901
|
-
await import("../build/route-trie.js");
|
|
902
|
-
return new Response(
|
|
903
|
-
JSON.stringify(
|
|
904
|
-
{
|
|
905
|
-
routerId: router.id,
|
|
906
|
-
routeManifest,
|
|
907
|
-
routeAncestry: trie ? extractAncestryFromTrie(trie) : {},
|
|
908
|
-
routeTrie: trie,
|
|
909
|
-
precomputedEntries: getPrecomputedEntries(),
|
|
910
|
-
},
|
|
911
|
-
null,
|
|
912
|
-
2,
|
|
913
|
-
),
|
|
914
|
-
{
|
|
915
|
-
headers: { "Content-Type": "application/json" },
|
|
916
|
-
},
|
|
917
|
-
);
|
|
918
|
-
}
|
|
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
|
+
});
|
|
919
1059
|
|
|
920
|
-
|
|
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
|
+
};
|
|
921
1092
|
|
|
922
|
-
|
|
923
|
-
// Route params were already set in coreRequestHandler, but set again
|
|
924
|
-
// for callers that enter coreRequestHandlerInner directly.
|
|
925
|
-
if (routeParams) {
|
|
926
|
-
setRequestContextParams(routeParams, routeKey);
|
|
927
|
-
}
|
|
1093
|
+
const rscStream = renderToReadableStream(payload);
|
|
928
1094
|
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
handlerCtx,
|
|
935
|
-
request,
|
|
936
|
-
env,
|
|
937
|
-
url,
|
|
938
|
-
store,
|
|
939
|
-
actionContinuation,
|
|
940
|
-
);
|
|
941
|
-
}
|
|
1095
|
+
const isRscRequest =
|
|
1096
|
+
isPartial ||
|
|
1097
|
+
(!request.headers.get("accept")?.includes("text/html") &&
|
|
1098
|
+
!url.searchParams.has("__html")) ||
|
|
1099
|
+
url.searchParams.has("__rsc");
|
|
942
1100
|
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
handlerCtx,
|
|
950
|
-
request,
|
|
951
|
-
env,
|
|
952
|
-
url,
|
|
953
|
-
variables,
|
|
954
|
-
routeParams,
|
|
955
|
-
);
|
|
956
|
-
}
|
|
1101
|
+
if (isRscRequest) {
|
|
1102
|
+
return createResponseWithMergedHeaders(rscStream, {
|
|
1103
|
+
status: 404,
|
|
1104
|
+
headers: { "content-type": "text/x-component;charset=utf-8" },
|
|
1105
|
+
});
|
|
1106
|
+
}
|
|
957
1107
|
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
request,
|
|
965
|
-
env,
|
|
966
|
-
url,
|
|
967
|
-
isPartial,
|
|
968
|
-
store,
|
|
969
|
-
nonce,
|
|
970
|
-
);
|
|
971
|
-
} catch (error) {
|
|
972
|
-
// Check if middleware/handler returned Response
|
|
973
|
-
if (error instanceof Response) {
|
|
974
|
-
// During partial (client-side navigation), a 200 Response from a handler
|
|
975
|
-
// means the route serves raw content (JSON, text, etc.), not JSX.
|
|
976
|
-
// Signal the browser to hard-navigate so it renders the raw response.
|
|
977
|
-
// Only for 200 — redirects (3xx) work already because the browser follows
|
|
978
|
-
// them automatically to a URL that serves Flight data.
|
|
979
|
-
if (isPartial && error.status === 200) {
|
|
980
|
-
console.warn(
|
|
981
|
-
`[RSC] Route handler at ${url.pathname} returned a Response during client-side navigation. ` +
|
|
982
|
-
`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,
|
|
983
1114
|
);
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
"X-RSC-Reload": stripInternalParams(url).toString(),
|
|
988
|
-
"content-type": "text/x-component;charset=utf-8",
|
|
989
|
-
},
|
|
1115
|
+
const htmlStream = await ssrModule.renderHTML(rscStream, {
|
|
1116
|
+
nonce,
|
|
1117
|
+
streamMode,
|
|
990
1118
|
});
|
|
991
|
-
}
|
|
992
1119
|
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
);
|
|
998
|
-
if (intercepted) return intercepted;
|
|
1120
|
+
return createResponseWithMergedHeaders(htmlStream, {
|
|
1121
|
+
status: 404,
|
|
1122
|
+
headers: { "content-type": "text/html;charset=utf-8" },
|
|
1123
|
+
});
|
|
999
1124
|
}
|
|
1000
1125
|
|
|
1001
|
-
|
|
1002
|
-
}
|
|
1003
|
-
|
|
1004
|
-
// Render 404 page for unmatched routes
|
|
1005
|
-
// Check both instanceof and error.name for cross-bundle compatibility
|
|
1006
|
-
const isRouteNotFound =
|
|
1007
|
-
error instanceof RouteNotFoundError ||
|
|
1008
|
-
(error instanceof Error && error.name === "RouteNotFoundError");
|
|
1009
|
-
if (isRouteNotFound) {
|
|
1126
|
+
// Report unhandled errors
|
|
1010
1127
|
callOnError(error, "routing", {
|
|
1011
1128
|
request,
|
|
1012
1129
|
url,
|
|
1013
1130
|
env,
|
|
1014
|
-
handledByBoundary:
|
|
1131
|
+
handledByBoundary: false,
|
|
1015
1132
|
});
|
|
1133
|
+
console.error(`[RSC] Error:`, error);
|
|
1134
|
+
throw error;
|
|
1135
|
+
}
|
|
1136
|
+
};
|
|
1016
1137
|
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
: (notFoundOption ?? createElement("h1", null, "Not Found"));
|
|
1023
|
-
|
|
1024
|
-
// Create a simple segment for the 404 page
|
|
1025
|
-
const notFoundSegment = {
|
|
1026
|
-
id: "notFound",
|
|
1027
|
-
namespace: "notFound",
|
|
1028
|
-
type: "route" as const,
|
|
1029
|
-
index: 0,
|
|
1030
|
-
component: notFoundComponent,
|
|
1031
|
-
params: {},
|
|
1032
|
-
};
|
|
1033
|
-
|
|
1034
|
-
const payload: RscPayload = {
|
|
1035
|
-
metadata: {
|
|
1036
|
-
pathname: url.pathname,
|
|
1037
|
-
segments: [notFoundSegment],
|
|
1038
|
-
matched: [],
|
|
1039
|
-
diff: [],
|
|
1040
|
-
isPartial: false,
|
|
1041
|
-
rootLayout: router.rootLayout,
|
|
1042
|
-
handles: store.stream(),
|
|
1043
|
-
version,
|
|
1044
|
-
themeConfig: router.themeConfig,
|
|
1045
|
-
warmupEnabled: router.warmupEnabled,
|
|
1046
|
-
initialTheme: requireRequestContext().theme,
|
|
1047
|
-
// No routeName for not-found routes
|
|
1048
|
-
},
|
|
1049
|
-
};
|
|
1050
|
-
|
|
1051
|
-
const rscStream = renderToReadableStream(payload);
|
|
1052
|
-
|
|
1053
|
-
// Determine if this is an RSC request or HTML request.
|
|
1054
|
-
// Partial requests are always RSC (see main isRscRequest comment).
|
|
1055
|
-
const isRscRequest =
|
|
1056
|
-
isPartial ||
|
|
1057
|
-
(!request.headers.get("accept")?.includes("text/html") &&
|
|
1058
|
-
!url.searchParams.has("__html")) ||
|
|
1059
|
-
url.searchParams.has("__rsc");
|
|
1060
|
-
|
|
1061
|
-
if (isRscRequest) {
|
|
1062
|
-
return createResponseWithMergedHeaders(rscStream, {
|
|
1063
|
-
status: 404,
|
|
1064
|
-
headers: { "content-type": "text/x-component;charset=utf-8" },
|
|
1065
|
-
});
|
|
1066
|
-
}
|
|
1067
|
-
|
|
1068
|
-
// Delegate to SSR for HTML response (reuse early setup if available)
|
|
1069
|
-
const [ssrModule, streamMode] = await getSSRSetup(
|
|
1070
|
-
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),
|
|
1071
1143
|
request,
|
|
1072
1144
|
env,
|
|
1073
|
-
|
|
1074
|
-
|
|
1145
|
+
variables,
|
|
1146
|
+
renderHandler,
|
|
1147
|
+
routeReverse,
|
|
1075
1148
|
);
|
|
1076
|
-
const htmlStream = await ssrModule.renderHTML(rscStream, {
|
|
1077
|
-
nonce,
|
|
1078
|
-
streamMode,
|
|
1079
|
-
});
|
|
1080
1149
|
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1150
|
+
if (isPartial || actionContinuation) {
|
|
1151
|
+
const intercepted = interceptRedirectForPartial(
|
|
1152
|
+
mwResponse,
|
|
1153
|
+
createRedirectFlightResponse,
|
|
1154
|
+
);
|
|
1155
|
+
if (intercepted) return intercepted;
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
return finalizeResponse(mwResponse);
|
|
1085
1159
|
}
|
|
1086
1160
|
|
|
1087
|
-
|
|
1088
|
-
|
|
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(
|
|
1089
1171
|
request,
|
|
1090
|
-
url,
|
|
1091
1172
|
env,
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1173
|
+
url,
|
|
1174
|
+
"render-start",
|
|
1175
|
+
renderOutcome.durationMs,
|
|
1176
|
+
routeKey,
|
|
1177
|
+
);
|
|
1096
1178
|
}
|
|
1179
|
+
return renderOutcome.result;
|
|
1097
1180
|
}
|
|
1098
1181
|
}
|