@timber-js/app 0.2.0-alpha.208 → 0.2.0-alpha.209
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{primitives-DLAnvsrk.js → actions-BerlqoXA.js} +640 -410
- package/dist/_chunks/actions-BerlqoXA.js.map +1 -0
- package/dist/_chunks/{als-registry-C6kcfprT.js → als-registry-DaxkVjt5.js} +6 -2
- package/dist/_chunks/als-registry-DaxkVjt5.js.map +1 -0
- package/dist/_chunks/{build-manifest-DTmSGLRz.js → build-manifest-DWppEdLB.js} +2 -51
- package/dist/_chunks/build-manifest-DWppEdLB.js.map +1 -0
- package/dist/_chunks/{build-output-helper-9dqCv1pZ.js → build-output-helper-RV_BRcF1.js} +50 -53
- package/dist/_chunks/build-output-helper-RV_BRcF1.js.map +1 -0
- package/dist/_chunks/{cache-api-CUD9Ezaq.js → cache-api-CR23J_NC.js} +64 -32
- package/dist/_chunks/cache-api-CR23J_NC.js.map +1 -0
- package/dist/_chunks/{chains-B4bgOl2g.js → chains-CpFg56UB.js} +2 -2
- package/dist/_chunks/{chains-B4bgOl2g.js.map → chains-CpFg56UB.js.map} +1 -1
- package/dist/_chunks/{cli-check-G8o30ldg.js → cli-check-C6Ev6wBO.js} +11 -52
- package/dist/_chunks/cli-check-C6Ev6wBO.js.map +1 -0
- package/dist/_chunks/cli-context-By7k2xVo.js +70 -0
- package/dist/_chunks/cli-context-By7k2xVo.js.map +1 -0
- package/dist/_chunks/{cli-schema-sync--LZKs8Zn.js → cli-schema-sync-CbT2AUUI.js} +3 -3
- package/dist/_chunks/{cli-schema-sync--LZKs8Zn.js.map → cli-schema-sync-CbT2AUUI.js.map} +1 -1
- package/dist/_chunks/{cloudflare-BFb__LYG.js → cloudflare-Byxl8FWP.js} +96 -53
- package/dist/_chunks/{cloudflare-BFb__LYG.js.map → cloudflare-Byxl8FWP.js.map} +1 -1
- package/dist/_chunks/{convention-lint-5KzoMg_A.js → convention-lint-jKTwKwPe.js} +21 -6
- package/dist/_chunks/convention-lint-jKTwKwPe.js.map +1 -0
- package/dist/_chunks/{dev-server-BzBxgYAV.js → dev-server-C4WZdB7L.js} +15 -167
- package/dist/_chunks/dev-server-C4WZdB7L.js.map +1 -0
- package/dist/_chunks/{error-boundary-BrHmG-2X.js → error-boundary-tA7kVfs4.js} +84 -104
- package/dist/_chunks/error-boundary-tA7kVfs4.js.map +1 -0
- package/dist/_chunks/{fs-identity-D7vb6GdI.js → fs-identity-BRKuL215.js} +3 -4
- package/dist/_chunks/fs-identity-BRKuL215.js.map +1 -0
- package/dist/_chunks/{graph-cache-CP4GEmf9.js → graph-cache-CYiUS2aS.js} +4 -5
- package/dist/_chunks/graph-cache-CYiUS2aS.js.map +1 -0
- package/dist/_chunks/{json-lossy-check-ClNvBM_3.js → json-lossy-check-ip0Qi0MT.js} +6 -3
- package/dist/_chunks/json-lossy-check-ip0Qi0MT.js.map +1 -0
- package/dist/_chunks/{live-graph-Bm5WTvcr.js → live-graph-Dv-JJCZw.js} +3 -3
- package/dist/_chunks/{live-graph-Bm5WTvcr.js.map → live-graph-Dv-JJCZw.js.map} +1 -1
- package/dist/_chunks/{logger-k2DQ4EUf.js → logger-DiDt5ppH.js} +192 -51
- package/dist/_chunks/logger-DiDt5ppH.js.map +1 -0
- package/dist/_chunks/{navigation-root-mHSK9psY.js → navigation-root-BQfo1-kG.js} +2 -2
- package/dist/_chunks/{navigation-root-mHSK9psY.js.map → navigation-root-BQfo1-kG.js.map} +1 -1
- package/dist/_chunks/{plugin-context-8idfR3UZ.js → plugin-context-BPBPc3lL.js} +28 -4
- package/dist/_chunks/plugin-context-BPBPc3lL.js.map +1 -0
- package/dist/_chunks/{poison-scan-DG5eI2_z.js → poison-scan-CpeT6_OJ.js} +2 -2
- package/dist/_chunks/{poison-scan-DG5eI2_z.js.map → poison-scan-CpeT6_OJ.js.map} +1 -1
- package/dist/_chunks/render-timeout-DOf_BBcO.js +46 -0
- package/dist/_chunks/render-timeout-DOf_BBcO.js.map +1 -0
- package/dist/_chunks/{rsc-payload-path-B_LBodc2.js → rsc-payload-path-dffcs4jp.js} +9 -3
- package/dist/_chunks/{rsc-payload-path-B_LBodc2.js.map → rsc-payload-path-dffcs4jp.js.map} +1 -1
- package/dist/_chunks/{scanner-BQ5sPIJ7.js → scanner-Bw0oq1HB.js} +2 -2
- package/dist/_chunks/{scanner-BQ5sPIJ7.js.map → scanner-Bw0oq1HB.js.map} +1 -1
- package/dist/_chunks/{navigation-context-D0TU0Jog.js → segment-context-xtPUGfdq.js} +36 -34
- package/dist/_chunks/segment-context-xtPUGfdq.js.map +1 -0
- package/dist/_chunks/{singleflight-2lUWfcAk.js → singleflight-BeVMMKi0.js} +4 -3
- package/dist/_chunks/{singleflight-2lUWfcAk.js.map → singleflight-BeVMMKi0.js.map} +1 -1
- package/dist/_chunks/{sizeof-lXffQ1Vr.js → sizeof-UwzwB1uM.js} +3 -2
- package/dist/_chunks/sizeof-UwzwB1uM.js.map +1 -0
- package/dist/_chunks/ssr-data-nA3I70_n.js +49 -0
- package/dist/_chunks/ssr-data-nA3I70_n.js.map +1 -0
- package/dist/_chunks/{state-FippDgxN.js → state-BhNGPsdi.js} +6 -8
- package/dist/_chunks/state-BhNGPsdi.js.map +1 -0
- package/dist/_chunks/{status-page-marker-CNbpUOPB.js → status-page-marker-gaihi0KZ.js} +53 -20
- package/dist/_chunks/status-page-marker-gaihi0KZ.js.map +1 -0
- package/dist/_chunks/{walkers-CN2N_bA-.js → walkers-BXExhzzk.js} +2 -2
- package/dist/_chunks/{walkers-CN2N_bA-.js.map → walkers-BXExhzzk.js.map} +1 -1
- package/dist/_chunks/write-file-atomic-D1qWqHb4.js +32 -0
- package/dist/_chunks/write-file-atomic-D1qWqHb4.js.map +1 -0
- package/dist/adapters/build-output-helper.d.ts +7 -7
- package/dist/adapters/build-output-helper.d.ts.map +1 -1
- package/dist/adapters/canonicalize-module.d.ts +8 -0
- package/dist/adapters/canonicalize-module.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.js +1 -1
- package/dist/adapters/cloudflare-kv-cache.js +2 -2
- package/dist/adapters/cloudflare.d.ts +30 -8
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +2 -2
- package/dist/adapters/compress-module.d.ts +8 -0
- package/dist/adapters/compress-module.d.ts.map +1 -1
- package/dist/adapters/fs-identity.d.ts +2 -3
- package/dist/adapters/fs-identity.d.ts.map +1 -1
- package/dist/adapters/nitro-presets.d.ts +0 -6
- package/dist/adapters/nitro-presets.d.ts.map +1 -1
- package/dist/adapters/nitro-preview.d.ts +43 -11
- package/dist/adapters/nitro-preview.d.ts.map +1 -1
- package/dist/adapters/nitro.d.ts +1 -13
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js +291 -176
- package/dist/adapters/nitro.js.map +1 -1
- package/dist/adapters/shared.d.ts +7 -2
- package/dist/adapters/shared.d.ts.map +1 -1
- package/dist/adapters/types.d.ts +105 -21
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/types.js +0 -0
- package/dist/analyze/crawl-entry.js +3 -3
- package/dist/analyze/graph-cache.d.ts.map +1 -1
- package/dist/analyze/graph-command.js +4 -4
- package/dist/cache/index.js +2 -2
- package/dist/cache/json-lossy-check.d.ts.map +1 -1
- package/dist/cache/singleflight.d.ts.map +1 -1
- package/dist/cache/sizeof.d.ts.map +1 -1
- package/dist/cache/stores/memory.js +1 -1
- package/dist/cache/tag-aware-handler.d.ts.map +1 -1
- package/dist/cdn/workers-cache-purge.js +1 -1
- package/dist/cli-check.d.ts +7 -37
- package/dist/cli-check.d.ts.map +1 -1
- package/dist/cli-context.d.ts +54 -0
- package/dist/cli-context.d.ts.map +1 -0
- package/dist/cli.d.ts +9 -9
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +20 -24
- package/dist/cli.js.map +1 -1
- package/dist/client/browser-dev.d.ts +1 -1
- package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -1
- package/dist/client/browser-entry/hydrate.d.ts +19 -29
- package/dist/client/browser-entry/hydrate.d.ts.map +1 -1
- package/dist/client/browser-entry/index.d.ts +7 -7
- package/dist/client/browser-entry/post-hydration.d.ts +6 -9
- package/dist/client/browser-entry/post-hydration.d.ts.map +1 -1
- package/dist/client/browser-entry/router-init.d.ts +6 -11
- package/dist/client/browser-entry/router-init.d.ts.map +1 -1
- package/dist/client/error-boundary.d.ts +4 -3
- package/dist/client/error-boundary.d.ts.map +1 -1
- package/dist/client/error-boundary.js +1 -1
- package/dist/client/error-reconstituter.d.ts +3 -9
- package/dist/client/error-reconstituter.d.ts.map +1 -1
- package/dist/client/history.d.ts +12 -11
- package/dist/client/history.d.ts.map +1 -1
- package/dist/client/index.d.ts +0 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +5 -6
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal.d.ts +3 -3
- package/dist/client/internal.d.ts.map +1 -1
- package/dist/client/internal.js +68 -104
- package/dist/client/internal.js.map +1 -1
- package/dist/client/navigation-commit.d.ts +16 -7
- package/dist/client/navigation-commit.d.ts.map +1 -1
- package/dist/client/navigation-context.d.ts +3 -5
- package/dist/client/navigation-context.d.ts.map +1 -1
- package/dist/client/react-root.d.ts +3 -2
- package/dist/client/react-root.d.ts.map +1 -1
- package/dist/client/router-pipeline.d.ts +1 -6
- package/dist/client/router-pipeline.d.ts.map +1 -1
- package/dist/client/router-types.d.ts +45 -39
- package/dist/client/router-types.d.ts.map +1 -1
- package/dist/client/router-url.d.ts +24 -0
- package/dist/client/router-url.d.ts.map +1 -0
- package/dist/client/router.d.ts.map +1 -1
- package/dist/client/rsc-fetch.d.ts +8 -4
- package/dist/client/rsc-fetch.d.ts.map +1 -1
- package/dist/client/ssr-data.d.ts +18 -64
- package/dist/client/ssr-data.d.ts.map +1 -1
- package/dist/client/state.d.ts +2 -5
- package/dist/client/state.d.ts.map +1 -1
- package/dist/client/use-pathname.d.ts +1 -1
- package/dist/config-types.d.ts +2 -1
- package/dist/config-types.d.ts.map +1 -1
- package/dist/config-validation.d.ts.map +1 -1
- package/dist/cookies/index.js +1 -1
- package/dist/dev-tools/dev-page-shell.d.ts +17 -0
- package/dist/dev-tools/dev-page-shell.d.ts.map +1 -1
- package/dist/dev-tools/index.d.ts +1 -1
- package/dist/dev-tools/index.d.ts.map +1 -1
- package/dist/dev-tools/instrumentation.d.ts +17 -2
- package/dist/dev-tools/instrumentation.d.ts.map +1 -1
- package/dist/dev-tools/overlay.d.ts +6 -27
- package/dist/dev-tools/overlay.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +531 -373
- package/dist/index.js.map +1 -1
- package/dist/plugin-context.d.ts +26 -40
- package/dist/plugin-context.d.ts.map +1 -1
- package/dist/plugins/build-manifest.d.ts.map +1 -1
- package/dist/plugins/build-report.d.ts +15 -2
- package/dist/plugins/build-report.d.ts.map +1 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/fonts.d.ts +19 -1
- package/dist/plugins/fonts.d.ts.map +1 -1
- package/dist/plugins/post-build.d.ts +110 -0
- package/dist/plugins/post-build.d.ts.map +1 -0
- package/dist/plugins/prebuilt-capture.d.ts +11 -4
- package/dist/plugins/prebuilt-capture.d.ts.map +1 -1
- package/dist/plugins/prebuilt.d.ts +17 -1
- package/dist/plugins/prebuilt.d.ts.map +1 -1
- package/dist/plugins/prerender-sugar.d.ts.map +1 -1
- package/dist/plugins/rsc-assets-manifest.d.ts +33 -0
- package/dist/plugins/rsc-assets-manifest.d.ts.map +1 -0
- package/dist/plugins/shims.d.ts.map +1 -1
- package/dist/plugins/static-build.d.ts +32 -9
- package/dist/plugins/static-build.d.ts.map +1 -1
- package/dist/routing/codegen-write.d.ts +0 -9
- package/dist/routing/codegen-write.d.ts.map +1 -1
- package/dist/routing/index.js +2 -2
- package/dist/routing/segment-codegen.d.ts.map +1 -1
- package/dist/server/access-gate.d.ts.map +1 -1
- package/dist/server/action-handler.d.ts +5 -4
- package/dist/server/action-handler.d.ts.map +1 -1
- package/dist/server/actions.d.ts +46 -7
- package/dist/server/actions.d.ts.map +1 -1
- package/dist/server/als-registry.d.ts +58 -5
- package/dist/server/als-registry.d.ts.map +1 -1
- package/dist/server/children-interception.d.ts.map +1 -1
- package/dist/server/cookie-context.d.ts +2 -23
- package/dist/server/cookie-context.d.ts.map +1 -1
- package/dist/server/csp-nonce.d.ts +0 -9
- package/dist/server/csp-nonce.d.ts.map +1 -1
- package/dist/server/csrf.d.ts +27 -4
- package/dist/server/csrf.d.ts.map +1 -1
- package/dist/server/debug.d.ts +0 -1
- package/dist/server/debug.d.ts.map +1 -1
- package/dist/server/default-logger.d.ts +2 -1
- package/dist/server/default-logger.d.ts.map +1 -1
- package/dist/server/deny-boundary.d.ts +12 -6
- package/dist/server/deny-boundary.d.ts.map +1 -1
- package/dist/server/deny-renderer.d.ts +2 -2
- package/dist/server/deny-renderer.d.ts.map +1 -1
- package/dist/server/error-boundary-wrapper.d.ts +7 -3
- package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
- package/dist/server/fallback-error.d.ts +9 -2
- package/dist/server/fallback-error.d.ts.map +1 -1
- package/dist/server/head-response.d.ts +4 -4
- package/dist/server/html-injectors.d.ts.map +1 -1
- package/dist/server/index.d.ts +0 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3 -4
- package/dist/server/index.js.map +1 -1
- package/dist/server/instrumentation.d.ts +10 -3
- package/dist/server/instrumentation.d.ts.map +1 -1
- package/dist/server/internal.d.ts +1 -4
- package/dist/server/internal.d.ts.map +1 -1
- package/dist/server/internal.js +961 -581
- package/dist/server/internal.js.map +1 -1
- package/dist/server/json-status-response.d.ts +34 -0
- package/dist/server/json-status-response.d.ts.map +1 -0
- package/dist/server/logger.d.ts +26 -0
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/param-coercion.d.ts +11 -6
- package/dist/server/param-coercion.d.ts.map +1 -1
- package/dist/server/pipeline-helpers.d.ts +95 -7
- package/dist/server/pipeline-helpers.d.ts.map +1 -1
- package/dist/server/pipeline-interception.d.ts +11 -0
- package/dist/server/pipeline-interception.d.ts.map +1 -1
- package/dist/server/pipeline-outcome.d.ts +11 -1
- package/dist/server/pipeline-outcome.d.ts.map +1 -1
- package/dist/server/pipeline-phases.d.ts +2 -2
- package/dist/server/pipeline-phases.d.ts.map +1 -1
- package/dist/server/pipeline.d.ts +23 -35
- package/dist/server/pipeline.d.ts.map +1 -1
- package/dist/server/prebuilt/capture-render.d.ts +25 -0
- package/dist/server/prebuilt/capture-render.d.ts.map +1 -0
- package/dist/server/prebuilt/capture-routes.d.ts +37 -0
- package/dist/server/prebuilt/capture-routes.d.ts.map +1 -0
- package/dist/server/prebuilt/capture-state.d.ts +79 -35
- package/dist/server/prebuilt/capture-state.d.ts.map +1 -1
- package/dist/server/prebuilt/lifetime.d.ts +38 -0
- package/dist/server/prebuilt/lifetime.d.ts.map +1 -0
- package/dist/server/prebuilt/slots.d.ts +7 -0
- package/dist/server/prebuilt/slots.d.ts.map +1 -1
- package/dist/server/prebuilt/synthetic-store.d.ts.map +1 -1
- package/dist/server/prebuilt-builder.d.ts.map +1 -1
- package/dist/server/prebuilt-runtime.d.ts.map +1 -1
- package/dist/server/primitives.d.ts +6 -81
- package/dist/server/primitives.d.ts.map +1 -1
- package/dist/server/react-cache-bridge.d.ts +59 -0
- package/dist/server/react-cache-bridge.d.ts.map +1 -0
- package/dist/server/react-cache-scope.d.ts +49 -0
- package/dist/server/react-cache-scope.d.ts.map +1 -0
- package/dist/server/render-timeout.d.ts +15 -0
- package/dist/server/render-timeout.d.ts.map +1 -1
- package/dist/server/render-utils.d.ts +9 -0
- package/dist/server/render-utils.d.ts.map +1 -1
- package/dist/server/request-context.d.ts +26 -5
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/route-element-builder.d.ts.map +1 -1
- package/dist/server/route-handler.d.ts.map +1 -1
- package/dist/server/route-matcher.d.ts +7 -0
- package/dist/server/route-matcher.d.ts.map +1 -1
- package/dist/server/rsc-entry/action-middleware-runner.d.ts +22 -22
- package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -1
- package/dist/server/rsc-entry/api-handler.d.ts +7 -0
- package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
- package/dist/server/rsc-entry/deny-fallback.d.ts +32 -6
- package/dist/server/rsc-entry/deny-fallback.d.ts.map +1 -1
- package/dist/server/rsc-entry/error-renderer.d.ts +11 -18
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/helpers.d.ts +0 -1
- package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts +5 -15
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- package/dist/server/rsc-entry/render-route.d.ts +5 -6
- package/dist/server/rsc-entry/render-route.d.ts.map +1 -1
- package/dist/server/rsc-entry/render-signals.d.ts +65 -0
- package/dist/server/rsc-entry/render-signals.d.ts.map +1 -0
- package/dist/server/rsc-entry/revalidate-renderer.d.ts +6 -16
- package/dist/server/rsc-entry/revalidate-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-payload.d.ts +7 -3
- package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts +8 -53
- package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts +2 -2
- package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts +9 -4
- package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +1 -1
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -1
- package/dist/server/signal-identity.d.ts +43 -0
- package/dist/server/signal-identity.d.ts.map +1 -0
- package/dist/server/slot-resolver.d.ts +4 -3
- package/dist/server/slot-resolver.d.ts.map +1 -1
- package/dist/server/slot-subtree-contain.d.ts.map +1 -1
- package/dist/server/ssr-bridge-types.d.ts +91 -53
- package/dist/server/ssr-bridge-types.d.ts.map +1 -1
- package/dist/server/ssr-entry.d.ts +8 -5
- package/dist/server/ssr-entry.d.ts.map +1 -1
- package/dist/server/ssr-render.d.ts +26 -40
- package/dist/server/ssr-render.d.ts.map +1 -1
- package/dist/server/ssr-wrappers.d.ts +1 -1
- package/dist/server/static-generator.d.ts.map +1 -1
- package/dist/server/stream-utils.d.ts +12 -0
- package/dist/server/stream-utils.d.ts.map +1 -1
- package/dist/server/tracing.d.ts +12 -16
- package/dist/server/tracing.d.ts.map +1 -1
- package/dist/server/types.d.ts +1 -1
- package/dist/server/version-skew.d.ts +3 -3
- package/dist/shared/csrf-reject.d.ts +16 -0
- package/dist/shared/csrf-reject.d.ts.map +1 -0
- package/dist/shared/error-digest.d.ts +28 -0
- package/dist/shared/error-digest.d.ts.map +1 -0
- package/dist/shared/payload-root.d.ts +11 -10
- package/dist/shared/payload-root.d.ts.map +1 -1
- package/dist/shared/rsc-payload-path.d.ts +6 -0
- package/dist/shared/rsc-payload-path.d.ts.map +1 -1
- package/dist/utils/write-file-atomic.d.ts +17 -0
- package/dist/utils/write-file-atomic.d.ts.map +1 -0
- package/docs/api/30-api-server.mdx +17 -14
- package/docs/api/32-api-cache.mdx +51 -23
- package/docs/api/34-api-config.mdx +34 -6
- package/docs/api/36-cli.mdx +11 -1
- package/docs/learn/03-fetching-data.mdx +17 -1
- package/docs/learn/04-access-control.mdx +1 -1
- package/docs/learn/10-caching.mdx +29 -11
- package/docs/learn/11-middleware.mdx +8 -2
- package/docs/learn/12-error-handling.mdx +6 -1
- package/package.json +5 -1
- package/src/adapters/build-output-helper.ts +55 -53
- package/src/adapters/canonicalize-module.ts +29 -0
- package/src/adapters/cloudflare.ts +105 -63
- package/src/adapters/compress-module.ts +16 -5
- package/src/adapters/fs-identity.ts +2 -3
- package/src/adapters/nitro-presets.ts +0 -15
- package/src/adapters/nitro-preview.ts +272 -136
- package/src/adapters/nitro.ts +119 -82
- package/src/adapters/shared.ts +23 -14
- package/src/adapters/types.ts +110 -21
- package/src/analyze/graph-cache.ts +3 -4
- package/src/cache/json-lossy-check.ts +3 -9
- package/src/cache/singleflight.ts +5 -2
- package/src/cache/sizeof.ts +3 -1
- package/src/cache/tag-aware-handler.ts +43 -26
- package/src/cli-check.ts +8 -98
- package/src/cli-context.ts +119 -0
- package/src/cli.ts +19 -28
- package/src/client/browser-dev.ts +1 -1
- package/src/client/browser-entry/action-dispatch.ts +26 -4
- package/src/client/browser-entry/hydrate.ts +53 -58
- package/src/client/browser-entry/index.ts +16 -27
- package/src/client/browser-entry/post-hydration.ts +6 -40
- package/src/client/browser-entry/router-init.ts +66 -84
- package/src/client/error-boundary.tsx +9 -41
- package/src/client/error-reconstituter.tsx +10 -5
- package/src/client/history.ts +18 -21
- package/src/client/index.ts +0 -1
- package/src/client/internal.ts +2 -7
- package/src/client/navigation-commit.ts +35 -18
- package/src/client/navigation-context.ts +3 -39
- package/src/client/react-root.ts +3 -2
- package/src/client/router-pipeline.ts +65 -128
- package/src/client/router-types.ts +46 -44
- package/src/client/router-url.ts +32 -0
- package/src/client/router.ts +43 -22
- package/src/client/rsc-fetch.ts +117 -155
- package/src/client/ssr-data.ts +19 -80
- package/src/client/state.ts +2 -9
- package/src/client/use-pathname.ts +1 -1
- package/src/config-types.ts +2 -1
- package/src/config-validation.ts +2 -1
- package/src/dev-tools/dev-page-shell.ts +18 -0
- package/src/dev-tools/index.ts +0 -2
- package/src/dev-tools/instrumentation.ts +50 -2
- package/src/dev-tools/overlay.ts +8 -238
- package/src/index.ts +24 -14
- package/src/plugin-context.ts +39 -40
- package/src/plugins/build-manifest.ts +4 -11
- package/src/plugins/build-report.ts +70 -70
- package/src/plugins/dev-server.ts +24 -44
- package/src/plugins/entries.ts +2 -1
- package/src/plugins/fonts.ts +35 -7
- package/src/plugins/post-build.ts +327 -0
- package/src/plugins/prebuilt-capture.ts +28 -32
- package/src/plugins/prebuilt.ts +54 -39
- package/src/plugins/prerender-sugar.ts +0 -4
- package/src/plugins/{adapter-build.ts → rsc-assets-manifest.ts} +20 -109
- package/src/plugins/shims.ts +1 -0
- package/src/plugins/static-build.ts +42 -74
- package/src/routing/codegen-write.ts +25 -3
- package/src/routing/segment-codegen.ts +3 -2
- package/src/rsc-runtime/vendor-types.d.ts +8 -0
- package/src/server/access-gate.tsx +2 -1
- package/src/server/action-client.ts +1 -1
- package/src/server/action-handler.ts +253 -110
- package/src/server/actions.ts +73 -25
- package/src/server/als-registry.ts +73 -5
- package/src/server/chain-url-parts.ts +1 -1
- package/src/server/children-interception.ts +2 -1
- package/src/server/cookie-context.ts +18 -48
- package/src/server/csp-nonce.ts +0 -12
- package/src/server/csrf.ts +140 -8
- package/src/server/debug.ts +0 -1
- package/src/server/default-logger.ts +2 -1
- package/src/server/deny-boundary.ts +25 -13
- package/src/server/deny-renderer.ts +30 -97
- package/src/server/error-boundary-wrapper.ts +7 -3
- package/src/server/fallback-error.ts +26 -11
- package/src/server/flight-scripts.ts +1 -1
- package/src/server/head-response.ts +4 -4
- package/src/server/html-injector-core.ts +2 -2
- package/src/server/html-injectors.ts +2 -4
- package/src/server/index.ts +0 -4
- package/src/server/instrumentation.ts +10 -3
- package/src/server/internal.ts +1 -6
- package/src/server/json-status-response.ts +105 -0
- package/src/server/logger.ts +39 -3
- package/src/server/param-coercion.ts +15 -12
- package/src/server/pipeline-helpers.ts +257 -12
- package/src/server/pipeline-interception.ts +133 -0
- package/src/server/pipeline-outcome.ts +103 -31
- package/src/server/pipeline-phases.ts +127 -237
- package/src/server/pipeline.ts +204 -207
- package/src/server/prebuilt/capture-render.ts +118 -0
- package/src/server/prebuilt/capture-routes.ts +104 -0
- package/src/server/prebuilt/capture-state.ts +155 -48
- package/src/server/prebuilt/lifetime.ts +151 -0
- package/src/server/prebuilt/slots.ts +14 -2
- package/src/server/prebuilt/synthetic-store.ts +3 -0
- package/src/server/prebuilt-builder.ts +30 -320
- package/src/server/prebuilt-runtime.ts +125 -129
- package/src/server/primitives.ts +8 -168
- package/src/server/react-cache-bridge.ts +124 -0
- package/src/server/react-cache-scope.ts +104 -0
- package/src/server/render-timeout.ts +20 -0
- package/src/server/render-utils.ts +11 -1
- package/src/server/request-context.ts +36 -9
- package/src/server/route-element-builder.ts +11 -6
- package/src/server/route-handler.ts +36 -23
- package/src/server/route-matcher.ts +15 -1
- package/src/server/rsc-entry/action-middleware-runner.ts +79 -123
- package/src/server/rsc-entry/api-handler.ts +27 -103
- package/src/server/rsc-entry/deny-fallback.ts +93 -26
- package/src/server/rsc-entry/error-renderer.ts +39 -91
- package/src/server/rsc-entry/helpers.ts +2 -4
- package/src/server/rsc-entry/index.ts +64 -58
- package/src/server/rsc-entry/render-route.ts +15 -80
- package/src/server/rsc-entry/render-signals.ts +108 -0
- package/src/server/rsc-entry/revalidate-renderer.ts +56 -57
- package/src/server/rsc-entry/rsc-payload.ts +28 -61
- package/src/server/rsc-entry/rsc-stream.ts +113 -213
- package/src/server/rsc-entry/ssr-bridge.ts +2 -2
- package/src/server/rsc-entry/ssr-renderer.ts +182 -263
- package/src/server/rsc-entry/wrap-action-dispatch.ts +12 -14
- package/src/server/signal-identity.ts +112 -0
- package/src/server/slot-resolver.ts +18 -18
- package/src/server/slot-subtree-contain.ts +2 -1
- package/src/server/ssr-bridge-types.ts +92 -56
- package/src/server/ssr-entry.ts +87 -111
- package/src/server/ssr-render.ts +55 -64
- package/src/server/ssr-wrappers.tsx +2 -2
- package/src/server/static-generator.ts +7 -42
- package/src/server/static-not-found.ts +3 -3
- package/src/server/stream-utils.ts +51 -0
- package/src/server/tracing.ts +58 -75
- package/src/server/types.ts +1 -1
- package/src/server/version-skew.ts +5 -5
- package/src/shared/csrf-reject.ts +15 -0
- package/src/shared/error-digest.ts +46 -0
- package/src/shared/payload-root.ts +11 -10
- package/src/shared/rsc-payload-path.ts +8 -1
- package/src/utils/write-file-atomic.ts +32 -0
- package/dist/_chunks/actions-jNrXdzgs.js +0 -346
- package/dist/_chunks/actions-jNrXdzgs.js.map +0 -1
- package/dist/_chunks/als-registry-C6kcfprT.js.map +0 -1
- package/dist/_chunks/build-manifest-DTmSGLRz.js.map +0 -1
- package/dist/_chunks/build-output-helper-9dqCv1pZ.js.map +0 -1
- package/dist/_chunks/cache-api-CUD9Ezaq.js.map +0 -1
- package/dist/_chunks/cli-check-G8o30ldg.js.map +0 -1
- package/dist/_chunks/convention-lint-5KzoMg_A.js.map +0 -1
- package/dist/_chunks/dev-server-BzBxgYAV.js.map +0 -1
- package/dist/_chunks/error-boundary-BrHmG-2X.js.map +0 -1
- package/dist/_chunks/fs-identity-D7vb6GdI.js.map +0 -1
- package/dist/_chunks/graph-cache-CP4GEmf9.js.map +0 -1
- package/dist/_chunks/json-lossy-check-ClNvBM_3.js.map +0 -1
- package/dist/_chunks/logger-k2DQ4EUf.js.map +0 -1
- package/dist/_chunks/navigation-context-D0TU0Jog.js.map +0 -1
- package/dist/_chunks/plugin-context-8idfR3UZ.js.map +0 -1
- package/dist/_chunks/primitives-DLAnvsrk.js.map +0 -1
- package/dist/_chunks/segment-context-D9_89u34.js +0 -34
- package/dist/_chunks/segment-context-D9_89u34.js.map +0 -1
- package/dist/_chunks/sizeof-lXffQ1Vr.js.map +0 -1
- package/dist/_chunks/ssr-data-D6T6Y3ef.js +0 -60
- package/dist/_chunks/ssr-data-D6T6Y3ef.js.map +0 -1
- package/dist/_chunks/state-FippDgxN.js.map +0 -1
- package/dist/_chunks/status-page-marker-CNbpUOPB.js.map +0 -1
- package/dist/client/types.d.ts +0 -14
- package/dist/client/types.d.ts.map +0 -1
- package/dist/plugins/adapter-build.d.ts +0 -38
- package/dist/plugins/adapter-build.d.ts.map +0 -1
- package/dist/server/asset-headers.d.ts +0 -32
- package/dist/server/asset-headers.d.ts.map +0 -1
- package/dist/server/dev-source-map.d.ts +0 -22
- package/dist/server/dev-source-map.d.ts.map +0 -1
- package/src/client/types.ts +0 -21
- package/src/server/asset-headers.ts +0 -59
- package/src/server/dev-source-map.ts +0 -31
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON status responses — the status-code chain for API consumers.
|
|
3
|
+
*
|
|
4
|
+
* `{status}.json` → `{category}.json`, leaf → root, then the bare
|
|
5
|
+
* `{"error": true, "status": N}` body. No React, so the route.ts path and
|
|
6
|
+
* the pipeline's fallback renderer can use it without loading the RSC
|
|
7
|
+
* runtime.
|
|
8
|
+
*
|
|
9
|
+
* See design/10-error-handling.md §"JSON Error Pages".
|
|
10
|
+
*/
|
|
11
|
+
import type { ManifestSegmentNode } from './route-matcher.ts';
|
|
12
|
+
/**
|
|
13
|
+
* Render the JSON status chain for `status` — `{status}.json` →
|
|
14
|
+
* `{category}.json`, leaf → root — ending in the bare
|
|
15
|
+
* `{"error": true, "status": N}` body when no file resolves.
|
|
16
|
+
*
|
|
17
|
+
* This is the one API-route error format (design/10-error-handling.md
|
|
18
|
+
* §"Format Selection for deny()"). A deny from `access.ts` or a handler, and
|
|
19
|
+
* an error the pipeline answers for a route.ts match, all end here.
|
|
20
|
+
*
|
|
21
|
+
* `droppedData` is a deny()'s data. It is only read to warn that a static
|
|
22
|
+
* JSON file cannot carry it.
|
|
23
|
+
*/
|
|
24
|
+
export declare function renderJsonStatusResponse(req: Request, status: number, segments: ManifestSegmentNode[], responseHeaders: Headers, maxIndex?: number, droppedData?: unknown): Promise<Response>;
|
|
25
|
+
/**
|
|
26
|
+
* Render a JSON status-code file for `status`.
|
|
27
|
+
*
|
|
28
|
+
* JSON status files are returned verbatim with Content-Type: application/json.
|
|
29
|
+
* No React rendering pipeline, no layout wrapping.
|
|
30
|
+
*
|
|
31
|
+
* Returns null if no JSON status file is found (caller should use bare JSON fallback).
|
|
32
|
+
*/
|
|
33
|
+
export declare function renderJsonStatusFile(req: Request, status: number, segments: ManifestSegmentNode[], responseHeaders: Headers, maxIndex?: number, droppedData?: unknown): Promise<Response | null>;
|
|
34
|
+
//# sourceMappingURL=json-status-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-status-response.d.ts","sourceRoot":"","sources":["../../src/server/json-status-response.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,eAAe,EAAE,OAAO,EACxB,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,QAAQ,CAAC,CAKnB;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,eAAe,EAAE,OAAO,EACxB,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAmC1B"}
|
package/dist/server/logger.d.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* See design/17-logging.md §"Production Logging"
|
|
9
9
|
*/
|
|
10
|
+
import type { CsrfRejectReason } from './csrf.ts';
|
|
10
11
|
/** Any object with standard log methods satisfies this — pino, winston, consola, console. */
|
|
11
12
|
export interface TimberLogger {
|
|
12
13
|
info(msg: string, data?: Record<string, unknown>): void;
|
|
@@ -25,6 +26,20 @@ export declare function setLogger(logger: TimberLogger): void;
|
|
|
25
26
|
* no custom logger is configured.
|
|
26
27
|
*/
|
|
27
28
|
export declare function getLogger(): TimberLogger;
|
|
29
|
+
/**
|
|
30
|
+
* Log a CSRF rejection. Level: warn — the 403 body is deliberately terse,
|
|
31
|
+
* so this line is the only place the rejected origin is visible (TIM-1459).
|
|
32
|
+
* `detail` names the observed origin and, where one exists, the expected one.
|
|
33
|
+
*
|
|
34
|
+
* The CSRF gate runs at the pipeline boundary, before the pipeline opens its
|
|
35
|
+
* trace scope, so a rejection mints its own `trace_id` — the field is always
|
|
36
|
+
* present (design/17-logging.md §"trace_id is Always Set").
|
|
37
|
+
*/
|
|
38
|
+
export declare function logCsrfRejected(detail: string, data: {
|
|
39
|
+
method: string;
|
|
40
|
+
path: string;
|
|
41
|
+
reason: CsrfRejectReason;
|
|
42
|
+
}): void;
|
|
28
43
|
/** Log a completed request. Level: info. */
|
|
29
44
|
export declare function logRequestCompleted(data: {
|
|
30
45
|
method: string;
|
|
@@ -60,6 +75,12 @@ export declare function logMiddlewareError(data: {
|
|
|
60
75
|
path: string;
|
|
61
76
|
error: unknown;
|
|
62
77
|
}): void;
|
|
78
|
+
/** Log unhandled error in route setup (matching, param coercion). Level: error. */
|
|
79
|
+
export declare function logRouteSetupError(data: {
|
|
80
|
+
method: string;
|
|
81
|
+
path: string;
|
|
82
|
+
error: unknown;
|
|
83
|
+
}): void;
|
|
63
84
|
/** Log unhandled render-phase error. Level: error. */
|
|
64
85
|
export declare function logRenderError(data: {
|
|
65
86
|
method: string;
|
|
@@ -98,6 +119,11 @@ export declare function logSwrRefetchFailed(data: {
|
|
|
98
119
|
cacheKey: string;
|
|
99
120
|
error: unknown;
|
|
100
121
|
}): void;
|
|
122
|
+
/** Log a cache value that loses fidelity through JSON serialization. Level: warn. */
|
|
123
|
+
export declare function logLossyCacheValue(data: {
|
|
124
|
+
cacheKey: string;
|
|
125
|
+
types: string;
|
|
126
|
+
}): void;
|
|
101
127
|
/** Log cache miss. Level: debug. */
|
|
102
128
|
export declare function logCacheMiss(data: {
|
|
103
129
|
cacheKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/server/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/server/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,7 +55,12 @@ export declare function coerceSlotParams(slotChain: Array<{
|
|
|
55
55
|
interceptedSegmentName?: string;
|
|
56
56
|
}>, rawParams: Record<string, string | string[]>): CoercedParams;
|
|
57
57
|
/**
|
|
58
|
-
*
|
|
58
|
+
* Coerce the matched route's raw segment params and return the result.
|
|
59
|
+
*
|
|
60
|
+
* Reads `match.rawSegmentParams` and never writes to `match`: the caller
|
|
61
|
+
* decides where the coerced params go. Reading the raw record makes the call
|
|
62
|
+
* repeatable — coercing a match twice runs every codec on the URL value both
|
|
63
|
+
* times, never on its own output.
|
|
59
64
|
*
|
|
60
65
|
* Codecs come from `app/schema.ts` and nowhere else (TIM-1342 completed
|
|
61
66
|
* design/41-global-params.md migration step 9). A route with no schema, or
|
|
@@ -69,10 +74,10 @@ export declare function coerceSlotParams(slotChain: Array<{
|
|
|
69
74
|
* See design/41-global-params.md §"Pipeline Integration"
|
|
70
75
|
*
|
|
71
76
|
* Stays `async` with nothing to await: it is injected as a
|
|
72
|
-
* `CoerceSegmentParamsFn` into the revalidation renderer
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
77
|
+
* `CoerceSegmentParamsFn` into the revalidation renderer, which awaits
|
|
78
|
+
* it. Making it synchronous would
|
|
79
|
+
* change that contract and remove a microtask boundary the pipeline's
|
|
80
|
+
* ordering has always had, for no gain.
|
|
76
81
|
*/
|
|
77
|
-
export declare function coerceSegmentParams(match: RouteMatch): Promise<
|
|
82
|
+
export declare function coerceSegmentParams(match: RouteMatch): Promise<CoercedParams>;
|
|
78
83
|
//# sourceMappingURL=param-coercion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"param-coercion.d.ts","sourceRoot":"","sources":["../../src/server/param-coercion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACnF;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAUD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAEzF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,KAAK,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC,EACF,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GAC3C,aAAa,CAyCf;AAED
|
|
1
|
+
{"version":3,"file":"param-coercion.d.ts","sourceRoot":"","sources":["../../src/server/param-coercion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACnF;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAUD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAEzF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,KAAK,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC,EACF,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GAC3C,aAAa,CAyCf;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAuDnF"}
|
|
@@ -10,7 +10,10 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import type { ProxyExport } from './proxy.ts';
|
|
12
12
|
import { RedirectSignal } from './primitives.ts';
|
|
13
|
+
import { type ManifestLoader } from './safe-load.ts';
|
|
14
|
+
import { type ManifestSegmentNode } from './route-matcher.ts';
|
|
13
15
|
import type { ProxyConfig } from './pipeline.ts';
|
|
16
|
+
import type { PhaseName } from './pipeline-outcome.ts';
|
|
14
17
|
/**
|
|
15
18
|
* Resolver closure produced once at pipeline construction. The lazy variant
|
|
16
19
|
* still calls `loader()` per-request (HMR relies on re-importing), but the
|
|
@@ -36,6 +39,18 @@ export declare function makeProxyResolver(proxy: ProxyConfig | ProxyExport | und
|
|
|
36
39
|
* Each cookie gets its own Set-Cookie header per RFC 6265 §4.1.
|
|
37
40
|
*/
|
|
38
41
|
export declare function applyCookieJar(headers: Headers): void;
|
|
42
|
+
/**
|
|
43
|
+
* Bring a bag the jar was already applied to up to date with the jar.
|
|
44
|
+
*
|
|
45
|
+
* `applied` is what `getSetCookieHeaders()` returned when the jar was
|
|
46
|
+
* applied to `headers`. Values the jar no longer holds (a later write to the
|
|
47
|
+
* same name replaced them) are removed, and values it gained are appended.
|
|
48
|
+
* Every cookie then appears once, with its last write (design/29-cookies.md
|
|
49
|
+
* §"Last-Write-Wins for Same Name"). `Set-Cookie` values that did not come
|
|
50
|
+
* from the jar, such as a middleware appending to `ctx.headers` directly,
|
|
51
|
+
* are left alone.
|
|
52
|
+
*/
|
|
53
|
+
export declare function syncCookieJar(headers: Headers, applied: readonly string[]): void;
|
|
39
54
|
/**
|
|
40
55
|
* Merge framework-managed response headers onto a terminal response without
|
|
41
56
|
* overwriting headers the terminal response already set itself.
|
|
@@ -60,18 +75,91 @@ export declare function mergeMissingHeaders(target: Headers, source: Headers): v
|
|
|
60
75
|
* rewrap at the framework boundary instead.
|
|
61
76
|
*/
|
|
62
77
|
export declare function cloneWithMutableHeaders(response: Response): Response;
|
|
78
|
+
/**
|
|
79
|
+
* A fresh response header bag for a page the pipeline renders, seeded with
|
|
80
|
+
* the default dynamic-page cache policy.
|
|
81
|
+
*
|
|
82
|
+
* Without a Cache-Control header, CDNs (particularly Cloudflare) may attempt
|
|
83
|
+
* to buffer/process the response differently, causing intermittent
|
|
84
|
+
* multi-second delays. This matches Next.js's default behavior. Every bag a
|
|
85
|
+
* rendered page can be written onto starts here — a matched route, the
|
|
86
|
+
* no-match 404, and a deny page for a proxy-phase signal — so none of them
|
|
87
|
+
* leaves without a cache policy. Middleware and route handlers may replace it.
|
|
88
|
+
*/
|
|
89
|
+
export declare function dynamicResponseHeaders(): Headers;
|
|
63
90
|
/**
|
|
64
91
|
* Build a redirect Response from a RedirectSignal.
|
|
65
92
|
*
|
|
66
|
-
* For RSC payload
|
|
67
|
-
* so the client router can perform a soft SPA redirect. A
|
|
68
|
-
* turned into an opaque redirect by
|
|
69
|
-
* createFromFetch. See
|
|
93
|
+
* For a client navigation (an RSC payload request for a page), returns 204 +
|
|
94
|
+
* X-Timber-Redirect so the client router can perform a soft SPA redirect. A
|
|
95
|
+
* raw 302 would be turned into an opaque redirect by
|
|
96
|
+
* fetch({redirect:'manual'}), crashing createFromFetch. See
|
|
97
|
+
* design/19-client-navigation.md. The caller decides what counts as a
|
|
98
|
+
* navigation: a route.ts match answers with a real 3xx whatever it accepts.
|
|
99
|
+
*/
|
|
100
|
+
export declare function buildRedirectResponse(signal: RedirectSignal, headers: Headers, navigation: boolean): Response;
|
|
101
|
+
/**
|
|
102
|
+
* Where an error was raised: a pipeline phase, a server action, or a
|
|
103
|
+
* handler that answers outside the page pipeline — a metadata route or the
|
|
104
|
+
* auto-generated sitemap — which reports like a route.ts handler.
|
|
70
105
|
*/
|
|
71
|
-
export
|
|
106
|
+
export type ErrorSource = PhaseName | 'action' | 'route';
|
|
72
107
|
/**
|
|
73
108
|
* Fire the user's onRequestError hook with request context.
|
|
74
|
-
*
|
|
109
|
+
*
|
|
110
|
+
* The one place a pipeline phase becomes the `phase` / `routeType` the hook
|
|
111
|
+
* reports, so every caller agrees. A render-phase error on a route.ts match
|
|
112
|
+
* is phase `'route'`, because the handler is what ran. Middleware reports
|
|
113
|
+
* as `'handler'`, its public name.
|
|
114
|
+
*/
|
|
115
|
+
export declare function fireOnRequestError(error: unknown, req: Request, source: ErrorSource, segments?: readonly ManifestSegmentNode[]): Promise<void>;
|
|
116
|
+
/**
|
|
117
|
+
* Whether an error is a failure `onRequestError` should hear about.
|
|
118
|
+
*
|
|
119
|
+
* Control-flow signals are outcomes the code chose — a `deny()` picks the
|
|
120
|
+
* page's status and data — and an abort is the client leaving. Callers answering
|
|
121
|
+
* a live request also skip everything once `req.signal` has aborted: a
|
|
122
|
+
* driver that throws "connection closed" after a disconnect is not a bug.
|
|
123
|
+
*/
|
|
124
|
+
export declare function isReportableError(error: unknown): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Log and report a render error that was answered in place rather than
|
|
127
|
+
* handed to the pipeline: a slot that degraded to its fallback, a Flight
|
|
128
|
+
* error row, a fallback page that failed and fell back again. The pipeline
|
|
129
|
+
* never sees these, so this is their one report. Errors that are not
|
|
130
|
+
* reportable (`isReportableError()`), or that arrive after the request
|
|
131
|
+
* aborted, are only logged.
|
|
132
|
+
*/
|
|
133
|
+
export declare function reportRenderError(error: unknown, req: Request, details?: {
|
|
134
|
+
errorId?: string;
|
|
135
|
+
segments?: readonly ManifestSegmentNode[];
|
|
136
|
+
}): void;
|
|
137
|
+
/**
|
|
138
|
+
* Load a module the render can do without — a status page, an error page,
|
|
139
|
+
* `global-error.tsx`, a fallback page's layout — or report why it could not
|
|
140
|
+
* load and return `null`, so the next tier answers instead of the failure
|
|
141
|
+
* taking the page down. Every such load goes through here, whether it builds
|
|
142
|
+
* a boundary for a normal render or a fallback page, so a broken module is
|
|
143
|
+
* never skipped silently.
|
|
144
|
+
*/
|
|
145
|
+
export declare function loadFallbackModule(file: ManifestLoader, req: Request, segments?: readonly ManifestSegmentNode[]): Promise<Record<string, unknown> | null>;
|
|
146
|
+
/**
|
|
147
|
+
* Run a `cache.component` stale-while-revalidate re-render as a singleflight
|
|
148
|
+
* body, and log and report its failure once for the flight. The stale
|
|
149
|
+
* payload already answered, so nothing else sees the failure.
|
|
150
|
+
*
|
|
151
|
+
* - **Once per flight.** A `.catch` on the flight's promise would run once
|
|
152
|
+
* per request that joined it, so the report happens inside the body. A
|
|
153
|
+
* body still running when the singleflight times out is reported then,
|
|
154
|
+
* with the timeout error (the signal's reason), and its later rejection
|
|
155
|
+
* is dropped.
|
|
156
|
+
* - **Against the request whose stale read started it**, read from the
|
|
157
|
+
* request context the work runs in. With no request (the build-time
|
|
158
|
+
* capture store) it is only logged.
|
|
159
|
+
* - **As phase `'render'`, route type `'page`.** A `cache.component` is a
|
|
160
|
+
* server component, so the read that started this was a page render (a
|
|
161
|
+
* revalidated page tree included). The request's own abort does not
|
|
162
|
+
* suppress the report: the work runs after the response either way.
|
|
75
163
|
*/
|
|
76
|
-
export declare function
|
|
164
|
+
export declare function runBackgroundFlight(signal: AbortSignal, work: () => Promise<unknown>, log: (error: unknown) => void): Promise<void>;
|
|
77
165
|
//# sourceMappingURL=pipeline-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-helpers.d.ts","sourceRoot":"","sources":["../../src/server/pipeline-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline-helpers.d.ts","sourceRoot":"","sources":["../../src/server/pipeline-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAS9C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAElF,OAAO,EAAmB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMvD;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAErE;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,GAC3C,aAAa,GAAG,IAAI,CAatB;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAIrD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAahF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAO1E;AAID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAMpE;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAIhD;AAID;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,OAAO,GAClB,QAAQ,CAOV;AAID;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEzD;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAOf;AAmED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEzD;AAeD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAA;CAAO,GAC5E,IAAI,CAIN;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,OAAO,EACZ,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,GACxC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAKzC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC5B,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC,CAef"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* See design/07-routing.md §"Intercepting Routes"
|
|
10
10
|
*/
|
|
11
11
|
import type { InterceptionRewrite } from '../routing/interception.ts';
|
|
12
|
+
import type { InterceptionContext, PipelineConfig, RouteMatch } from './pipeline.ts';
|
|
12
13
|
/**
|
|
13
14
|
* Check if an intercepting route applies for this soft navigation.
|
|
14
15
|
*
|
|
@@ -79,4 +80,14 @@ export declare function findInterceptionMatch(targetPathname: string, resolveSou
|
|
|
79
80
|
* Static segments must match exactly.
|
|
80
81
|
*/
|
|
81
82
|
export declare function pathnameMatchesPattern(pathname: string, pattern: string): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Resolve which route renders a soft navigation that an intercepting route
|
|
85
|
+
* may claim. Returns the canonical match unchanged when no rewrite applies.
|
|
86
|
+
*
|
|
87
|
+
* Runs during route setup, so anything it throws is a `'setup'` outcome.
|
|
88
|
+
*/
|
|
89
|
+
export declare function resolveInterceptedRoute(config: PipelineConfig, req: Request, canonicalPathname: string, canonicalMatch: RouteMatch | null): {
|
|
90
|
+
match: RouteMatch | null;
|
|
91
|
+
interception?: InterceptionContext;
|
|
92
|
+
};
|
|
82
93
|
//# sourceMappingURL=pipeline-interception.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-interception.d.ts","sourceRoot":"","sources":["../../src/server/pipeline-interception.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline-interception.d.ts","sourceRoot":"","sources":["../../src/server/pipeline-interception.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EACvD,QAAQ,EAAE,mBAAmB,EAAE,GAC9B,mBAAmB,GAAG,IAAI,CAyB5B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAsCjF;AAID;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,OAAO,EACZ,iBAAiB,EAAE,MAAM,EACzB,cAAc,EAAE,UAAU,GAAG,IAAI,GAChC;IAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,YAAY,CAAC,EAAE,mBAAmB,CAAA;CAAE,CA6FlE"}
|
|
@@ -11,7 +11,15 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { RedirectSignal, DenySignal } from './primitives.ts';
|
|
13
13
|
import type { PipelineConfig, RouteMatch } from './pipeline.ts';
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* The pipeline phase an outcome came from.
|
|
16
|
+
*
|
|
17
|
+
* `'setup'` is route setup between `proxy.ts` and `middleware.ts`: route
|
|
18
|
+
* matching, interception, and segment-param coercion. It has its own name
|
|
19
|
+
* rather than borrowing `'middleware'` because both the cookie-jar guard
|
|
20
|
+
* and `onRequestError` key on the phase (TIM-1537).
|
|
21
|
+
*/
|
|
22
|
+
export type PhaseName = 'proxy' | 'setup' | 'middleware' | 'render';
|
|
15
23
|
export type PhaseOutcome = {
|
|
16
24
|
kind: 'response';
|
|
17
25
|
phase: PhaseName;
|
|
@@ -29,6 +37,8 @@ export type PhaseOutcome = {
|
|
|
29
37
|
phase: PhaseName;
|
|
30
38
|
error: unknown;
|
|
31
39
|
};
|
|
40
|
+
/** The outcome for a value a phase threw: a signal, or an error. */
|
|
41
|
+
export declare function thrownOutcome(phase: PhaseName, thrown: unknown): PhaseOutcome;
|
|
32
42
|
export interface OutcomeContext {
|
|
33
43
|
req: Request;
|
|
34
44
|
method: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-outcome.d.ts","sourceRoot":"","sources":["../../src/server/pipeline-outcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"pipeline-outcome.d.ts","sourceRoot":"","sources":["../../src/server/pipeline-outcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAO7D,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAkFhE;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEpE,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAExD,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,YAAY,CAI7E;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAID;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,QAAQ,CAAC,CA6HnB"}
|
|
@@ -33,7 +33,7 @@ export declare function runProxyPhase(config: PipelineConfig, getProxy: ProxyRes
|
|
|
33
33
|
* returns it as a 'response' outcome. Otherwise applies the request header
|
|
34
34
|
* overlay and falls through to the render phase.
|
|
35
35
|
*/
|
|
36
|
-
export declare function runMiddlewarePhase(config: PipelineConfig, req: Request, match: RouteMatch, responseHeaders: Headers,
|
|
36
|
+
export declare function runMiddlewarePhase(config: PipelineConfig, req: Request, match: RouteMatch, responseHeaders: Headers, renderContext: RenderContext): Promise<PhaseOutcome>;
|
|
37
37
|
/**
|
|
38
38
|
* Run the render phase. Wraps the configured renderer in a span and a
|
|
39
39
|
* timing scope, and translates thrown signals into outcome variants.
|
|
@@ -49,7 +49,7 @@ export declare function runMiddlewarePhase(config: PipelineConfig, req: Request,
|
|
|
49
49
|
* while handler `Set-Cookie` values still come after them and take
|
|
50
50
|
* precedence.
|
|
51
51
|
*/
|
|
52
|
-
export declare function runRenderPhase(config: PipelineConfig, req: Request, match: RouteMatch, responseHeaders: Headers,
|
|
52
|
+
export declare function runRenderPhase(config: PipelineConfig, req: Request, match: RouteMatch, responseHeaders: Headers, { canonicalPathname, interception }: RenderContext): Promise<PhaseOutcome>;
|
|
53
53
|
/**
|
|
54
54
|
* Process a single request from canonicalization through phase dispatch.
|
|
55
55
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-phases.d.ts","sourceRoot":"","sources":["../../src/server/pipeline-phases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"pipeline-phases.d.ts","sourceRoot":"","sources":["../../src/server/pipeline-phases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAsBH,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAMrF,UAAU,aAAa;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAID;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GAC7B,OAAO,CAAC,YAAY,CAAC,CAavB;AAID;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,UAAU,EACjB,eAAe,EAAE,OAAO,EACxB,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,YAAY,CAAC,CAsDvB;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,UAAU,EACjB,eAAe,EAAE,OAAO,EACxB,EAAE,iBAAiB,EAAE,YAAY,EAAE,EAAE,aAAa,GACjD,OAAO,CAAC,YAAY,CAAC,CAYvB;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,QAAQ,CAAC,CAuRnB"}
|
|
@@ -31,15 +31,19 @@ import type { ManifestSegmentNode } from './route-matcher.ts';
|
|
|
31
31
|
export interface RouteMatch {
|
|
32
32
|
/** The matched segment chain from root to leaf. */
|
|
33
33
|
segments: ManifestSegmentNode[];
|
|
34
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Segment params as the page sees them. The matcher sets them to the raw
|
|
36
|
+
* values; whoever runs `coerceSegmentParams()` replaces them with its
|
|
37
|
+
* result, whose values may be non-string (TIM-1347).
|
|
38
|
+
*/
|
|
35
39
|
segmentParams: CoercedParams;
|
|
36
40
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
+
* Segment params as the URL carried them (catch-all segments produce
|
|
42
|
+
* string[]). Set by the matcher, which owns them, and never replaced.
|
|
43
|
+
* Slot resolution and URL-part reconstruction read these: coerced values
|
|
44
|
+
* need not round-trip to the URL (`"007"` → `7`).
|
|
41
45
|
*/
|
|
42
|
-
rawSegmentParams
|
|
46
|
+
rawSegmentParams: Record<string, string | string[]>;
|
|
43
47
|
/** Middleware chain from the segment tree, ordered root-to-leaf. */
|
|
44
48
|
middlewareChain: MiddlewareFn[];
|
|
45
49
|
}
|
|
@@ -53,7 +57,7 @@ export interface InterceptionContext {
|
|
|
53
57
|
targetPathname: string;
|
|
54
58
|
}
|
|
55
59
|
/** Function that renders a matched route into a Response. */
|
|
56
|
-
export type RouteRenderer = (req: Request, match: RouteMatch, responseHeaders: Headers,
|
|
60
|
+
export type RouteRenderer = (req: Request, match: RouteMatch, responseHeaders: Headers, interception?: InterceptionContext) => Response | Promise<Response>;
|
|
57
61
|
/** Function that sends 103 Early Hints for a matched route. */
|
|
58
62
|
export type EarlyHintsEmitter = (match: RouteMatch, req: Request, responseHeaders: Headers) => void | Promise<void>;
|
|
59
63
|
/**
|
|
@@ -144,31 +148,6 @@ export interface PipelineConfig {
|
|
|
144
148
|
* Undefined in production — zero overhead.
|
|
145
149
|
*/
|
|
146
150
|
onPipelineError?: (error: Error, phase: string) => void;
|
|
147
|
-
/**
|
|
148
|
-
* Dev error handler with RSC debug context — set by the dev server after
|
|
149
|
-
* the RSC entry module is imported. `onPipelineError` resolves debug
|
|
150
|
-
* components from ALS and delegates to this handler.
|
|
151
|
-
*
|
|
152
|
-
* This is a mutable property (not a constructor argument) because the dev
|
|
153
|
-
* server imports the RSC entry module first (which constructs the config),
|
|
154
|
-
* then wires in the overlay handler. Moving the state here (from a
|
|
155
|
-
* module-level `let`) keeps it co-located with the config it belongs to
|
|
156
|
-
* and makes it visible in tests without module-level mutation.
|
|
157
|
-
*
|
|
158
|
-
* Undefined in production — zero overhead.
|
|
159
|
-
*/
|
|
160
|
-
devPipelineErrorHandler?: (error: Error, phase: string) => void;
|
|
161
|
-
/**
|
|
162
|
-
* HMR connection options for dev-only HTML pages (dev 404 page, fallback
|
|
163
|
-
* error page) — set by the dev server after the RSC entry module is
|
|
164
|
-
* imported, like `devPipelineErrorHandler`. The RSC environment can't
|
|
165
|
-
* read the Vite server config (separate module graph), so the dev server
|
|
166
|
-
* plumbs the resolved HMR endpoint (protocol/host/port/path/token) here
|
|
167
|
-
* for the pages' auto-reload WebSocket. See TIM-1067.
|
|
168
|
-
*
|
|
169
|
-
* Undefined in production — zero overhead.
|
|
170
|
-
*/
|
|
171
|
-
devHmrOptions?: import('../dev-tools/dev-page-shell.ts').DevErrorHmrOptions;
|
|
172
151
|
/**
|
|
173
152
|
* Fallback error renderer — called when a catastrophic error escapes the
|
|
174
153
|
* render phase. Produces an HTML Response instead of a bare empty 500.
|
|
@@ -180,7 +159,13 @@ export interface PipelineConfig {
|
|
|
180
159
|
* If this function throws, the pipeline falls back to a bare
|
|
181
160
|
* `new Response(null, { status: 500 })`.
|
|
182
161
|
*/
|
|
183
|
-
renderFallbackError?: (error: unknown, req: Request, responseHeaders: Headers
|
|
162
|
+
renderFallbackError?: (error: unknown, req: Request, responseHeaders: Headers,
|
|
163
|
+
/**
|
|
164
|
+
* The matched route, when the error came after matching. A route.ts
|
|
165
|
+
* match is answered in the API route's JSON format, never a page
|
|
166
|
+
* (design/10-error-handling.md §"JSON Error Pages").
|
|
167
|
+
*/
|
|
168
|
+
match?: RouteMatch) => Response | Promise<Response>;
|
|
184
169
|
/**
|
|
185
170
|
* Fallback deny page renderer — called when a DenySignal escapes from
|
|
186
171
|
* middleware or the render phase. Renders the appropriate status-code
|
|
@@ -210,13 +195,16 @@ export interface PipelineConfig {
|
|
|
210
195
|
*
|
|
211
196
|
* The `reenter` parameter is the full pipeline function (including proxy,
|
|
212
197
|
* ALS, tracing) for the no-JS validation rerender path — the synthetic
|
|
213
|
-
* GET flows through the complete pipeline.
|
|
198
|
+
* GET flows through the complete pipeline. Its `cookies` argument becomes
|
|
199
|
+
* that request's parsed cookies (`runWithRequestContext`'s `cookies`
|
|
200
|
+
* option), so the rerender reads the action's post-mutation state without
|
|
201
|
+
* the pipeline needing the same `Request` object to reach it.
|
|
214
202
|
*
|
|
215
203
|
* Moved into the pipeline (TIM-1213) so proxy.ts runs on action POSTs,
|
|
216
204
|
* matching the design doc contract: "proxy.ts runs on every request,
|
|
217
205
|
* no exclusions."
|
|
218
206
|
*/
|
|
219
|
-
dispatchAction?: (req: Request, canonicalPath: string, reenter: (req: Request) => Promise<Response>) => Promise<Response | null>;
|
|
207
|
+
dispatchAction?: (req: Request, canonicalPath: string, reenter: (req: Request, cookies: Map<string, string>) => Promise<Response>) => Promise<Response | null>;
|
|
220
208
|
}
|
|
221
209
|
/**
|
|
222
210
|
* Create the request handler from a pipeline configuration.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/server/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAa3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAY9D;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/server/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One build-time capture entry (server/prebuilt-builder.ts): render a
|
|
3
|
+
* registered component in isolation under the synthetic build store and
|
|
4
|
+
* drain its flight payload under a deadline.
|
|
5
|
+
*/
|
|
6
|
+
import type { CoercedParams } from '../../shared/param-value.ts';
|
|
7
|
+
import type { PrebuiltRegistration } from '../prebuilt-runtime.ts';
|
|
8
|
+
import { type NestedWrapperRender } from './capture-state.ts';
|
|
9
|
+
/** Wrap payload bytes as a single-chunk stream for the smoke revival. */
|
|
10
|
+
export declare function bytesToStream(bytes: Uint8Array): ReadableStream<Uint8Array>;
|
|
11
|
+
export interface EntryOutcome {
|
|
12
|
+
bytes: Uint8Array | null;
|
|
13
|
+
failure: unknown;
|
|
14
|
+
nested: NestedWrapperRender[];
|
|
15
|
+
resolvedTags: string[] | undefined;
|
|
16
|
+
segmentParamsRead: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Render one (component, props, coerced-params) entry in isolation and drain
|
|
20
|
+
* its flight payload. Any `onError` during serialization fails the entry —
|
|
21
|
+
* a payload with an embedded error row would replay that error on every
|
|
22
|
+
* future request, so only fully clean renders are captured.
|
|
23
|
+
*/
|
|
24
|
+
export declare function renderEntry(registration: PrebuiltRegistration, props: Record<string, unknown>, coercedParams: CoercedParams, timeoutMs: number, isLayout: boolean): Promise<EntryOutcome>;
|
|
25
|
+
//# sourceMappingURL=capture-render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture-render.d.ts","sourceRoot":"","sources":["../../../src/server/prebuilt/capture-render.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAIjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAsB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAKlF,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAO3E;AASD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACnC,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,oBAAoB,EAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,YAAY,CAAC,CA6DvB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Candidate routes for the post-build capture pass
|
|
3
|
+
* (server/prebuilt-builder.ts, design/44-render-at-build-time.md §Build
|
|
4
|
+
* Phase): which pages carry prebuilt components, and which param combos
|
|
5
|
+
* to capture them for.
|
|
6
|
+
*/
|
|
7
|
+
import type { CoercedParams } from '../../shared/param-value.ts';
|
|
8
|
+
import type { ManifestFile, ManifestSegmentNode } from '../route-matcher.ts';
|
|
9
|
+
export interface CandidateRoute {
|
|
10
|
+
urlPath: string;
|
|
11
|
+
page: ManifestFile;
|
|
12
|
+
/** Layout files along the chain that declare prebuilt components. */
|
|
13
|
+
layoutsToLoad: ManifestFile[];
|
|
14
|
+
/** Component IDs attributed to this route's page + layout chain. */
|
|
15
|
+
componentIds: string[];
|
|
16
|
+
/** Component IDs from layout files (receive SlotOutlet as children). */
|
|
17
|
+
layoutComponentIds: Set<string>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Walk the manifest tree and collect pages whose file chain (page +
|
|
21
|
+
* layouts above it) has prebuilt components attributed to it. Slots and
|
|
22
|
+
* intercepting/private segments are not walked — slot-scoped prebuilt is
|
|
23
|
+
* already unkeyable at request time when slot params diverge (see
|
|
24
|
+
* resolveKeyParams in prebuilt-runtime.ts), so the build doesn't model
|
|
25
|
+
* slots either.
|
|
26
|
+
*/
|
|
27
|
+
export declare function collectCandidateRoutes(root: ManifestSegmentNode, fileComponentMap: Record<string, string[]>): CandidateRoute[];
|
|
28
|
+
export type ParamCombo = CoercedParams;
|
|
29
|
+
/**
|
|
30
|
+
* Resolve the param combos to capture for a route. Static routes have
|
|
31
|
+
* exactly one combo (the empty record) — `export const prerender`-style
|
|
32
|
+
* components on static pages need no enumerator. Dynamic routes require
|
|
33
|
+
* `generateStaticSegmentParams` (design/44 §generateStaticSegmentParams);
|
|
34
|
+
* without it every request renders live and the wrapper is a no-op.
|
|
35
|
+
*/
|
|
36
|
+
export declare function enumerateCombos(route: CandidateRoute, pageModule: Record<string, unknown>, log: (message: string) => void): Promise<ParamCombo[] | null>;
|
|
37
|
+
//# sourceMappingURL=capture-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture-routes.d.ts","sourceRoot":"","sources":["../../../src/server/prebuilt/capture-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK7E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,CAAC;IACnB,qEAAqE;IACrE,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,oEAAoE;IACpE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wEAAwE;IACxE,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,mBAAmB,EACzB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACzC,cAAc,EAAE,CAgClB;AAID,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,cAAc,EACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAmB9B"}
|