@timber-js/app 0.2.0-alpha.12 → 0.2.0-alpha.120
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/actions-Cw-7NfJJ.js +1101 -0
- package/dist/_chunks/actions-Cw-7NfJJ.js.map +1 -0
- package/dist/_chunks/build-output-helper-DhxiT18k.js +61 -0
- package/dist/_chunks/build-output-helper-DhxiT18k.js.map +1 -0
- package/dist/_chunks/cli-schema-sync-XV0I47Gj.js +2 -0
- package/dist/_chunks/cli-schema-sync-q2wB0DyJ.js +358 -0
- package/dist/_chunks/cli-schema-sync-q2wB0DyJ.js.map +1 -0
- package/dist/_chunks/codec-registry-V7ARyeLN.js +21 -0
- package/dist/_chunks/codec-registry-V7ARyeLN.js.map +1 -0
- package/dist/_chunks/define-8zQ8Vm7x.js +195 -0
- package/dist/_chunks/define-8zQ8Vm7x.js.map +1 -0
- package/dist/_chunks/define-zQX6e1tN.js +124 -0
- package/dist/_chunks/define-zQX6e1tN.js.map +1 -0
- package/dist/_chunks/format-CR6v1pWE.js +14 -0
- package/dist/_chunks/format-CR6v1pWE.js.map +1 -0
- package/dist/_chunks/handler-store-iqnt2ghN.js +54 -0
- package/dist/_chunks/handler-store-iqnt2ghN.js.map +1 -0
- package/dist/_chunks/logger-DDmK5skc.js +291 -0
- package/dist/_chunks/logger-DDmK5skc.js.map +1 -0
- package/dist/_chunks/merge-search-params-CwxJzBLS.js +41 -0
- package/dist/_chunks/merge-search-params-CwxJzBLS.js.map +1 -0
- package/dist/_chunks/navigation-root-DKsJ5Di7.js +96 -0
- package/dist/_chunks/navigation-root-DKsJ5Di7.js.map +1 -0
- package/dist/_chunks/registry-Dp_hJL4s.js +20 -0
- package/dist/_chunks/registry-Dp_hJL4s.js.map +1 -0
- package/dist/_chunks/resolve-schema-23Mc8aLi.js +65 -0
- package/dist/_chunks/resolve-schema-23Mc8aLi.js.map +1 -0
- package/dist/_chunks/router-ref-sektkr-t.js +28 -0
- package/dist/_chunks/router-ref-sektkr-t.js.map +1 -0
- package/dist/_chunks/scanner-DmfoB7iK.js +336 -0
- package/dist/_chunks/scanner-DmfoB7iK.js.map +1 -0
- package/dist/_chunks/schema-bridge-eL5vQDSA.js +86 -0
- package/dist/_chunks/schema-bridge-eL5vQDSA.js.map +1 -0
- package/dist/_chunks/segment-classify-CnfLLvir.js +137 -0
- package/dist/_chunks/segment-classify-CnfLLvir.js.map +1 -0
- package/dist/_chunks/segment-context-Bg0pFbLT.js +34 -0
- package/dist/_chunks/segment-context-Bg0pFbLT.js.map +1 -0
- package/dist/_chunks/{ssr-data-MjmprTmO.js → ssr-data-BO5OvEvg.js} +1 -1
- package/dist/_chunks/ssr-data-BO5OvEvg.js.map +1 -0
- package/dist/_chunks/stale-reload-BCPRG0Cv.js +64 -0
- package/dist/_chunks/stale-reload-BCPRG0Cv.js.map +1 -0
- package/dist/_chunks/tracing-DvKLzCFa.js +329 -0
- package/dist/_chunks/tracing-DvKLzCFa.js.map +1 -0
- package/dist/_chunks/{use-query-states-D5KaffOK.js → use-query-states-D9SBlAfp.js} +7 -20
- package/dist/_chunks/use-query-states-D9SBlAfp.js.map +1 -0
- package/dist/_chunks/use-segment-params-CskiK-59.js +185 -0
- package/dist/_chunks/use-segment-params-CskiK-59.js.map +1 -0
- package/dist/_chunks/validation-Bm3Je-09.js +84 -0
- package/dist/_chunks/validation-Bm3Je-09.js.map +1 -0
- package/dist/_chunks/walkers-DgOXkTts.js +609 -0
- package/dist/_chunks/walkers-DgOXkTts.js.map +1 -0
- package/dist/_chunks/{format-DviM89f0.js → warnings-B30wpfaS.js} +6 -45
- package/dist/_chunks/warnings-B30wpfaS.js.map +1 -0
- package/dist/adapters/build-output-helper.d.ts +28 -0
- package/dist/adapters/build-output-helper.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.d.ts +109 -0
- package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.js +73 -0
- package/dist/adapters/cloudflare-dev.js.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts +64 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.js +95 -0
- package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
- package/dist/adapters/cloudflare.d.ts +148 -12
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +142 -38
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/adapters/compress-module.d.ts.map +1 -1
- package/dist/adapters/nitro.d.ts +17 -1
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js +143 -45
- package/dist/adapters/nitro.js.map +1 -1
- package/dist/adapters/shared.d.ts +16 -0
- package/dist/adapters/shared.d.ts.map +1 -0
- package/dist/cache/cache-api.d.ts +24 -0
- package/dist/cache/cache-api.d.ts.map +1 -0
- package/dist/cache/handler-store.d.ts +31 -0
- package/dist/cache/handler-store.d.ts.map +1 -0
- package/dist/cache/index.d.ts +23 -7
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +151 -81
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/singleflight.d.ts +18 -1
- package/dist/cache/singleflight.d.ts.map +1 -1
- package/dist/cache/sizeof.d.ts +22 -0
- package/dist/cache/sizeof.d.ts.map +1 -0
- package/dist/cache/timber-cache.d.ts +1 -1
- package/dist/cache/timber-cache.d.ts.map +1 -1
- package/dist/cli-schema-sync.d.ts +37 -0
- package/dist/cli-schema-sync.d.ts.map +1 -0
- package/dist/cli.d.ts +14 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +42 -6
- package/dist/cli.js.map +1 -1
- package/dist/client/browser-dev.d.ts +34 -1
- package/dist/client/browser-dev.d.ts.map +1 -1
- package/dist/client/browser-entry/action-dispatch.d.ts +17 -0
- package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
- package/dist/client/browser-entry/hmr.d.ts +21 -0
- package/dist/client/browser-entry/hmr.d.ts.map +1 -0
- package/dist/client/browser-entry/hydrate.d.ts +46 -0
- package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
- package/dist/client/browser-entry/index.d.ts +30 -0
- package/dist/client/browser-entry/index.d.ts.map +1 -0
- package/dist/client/browser-entry/post-hydration.d.ts +26 -0
- package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
- package/dist/client/browser-entry/router-init.d.ts +23 -0
- package/dist/client/browser-entry/router-init.d.ts.map +1 -0
- package/dist/client/browser-entry/rsc-stream.d.ts +24 -0
- package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
- package/dist/client/browser-entry/scroll.d.ts +19 -0
- package/dist/client/browser-entry/scroll.d.ts.map +1 -0
- package/dist/client/error-boundary.d.ts +12 -5
- package/dist/client/error-boundary.d.ts.map +1 -1
- package/dist/client/error-boundary.js +29 -6
- package/dist/client/error-boundary.js.map +1 -1
- package/dist/client/error-reconstituter.d.ts +54 -0
- package/dist/client/error-reconstituter.d.ts.map +1 -0
- package/dist/client/form.d.ts +16 -27
- package/dist/client/form.d.ts.map +1 -1
- package/dist/client/history.d.ts +19 -4
- package/dist/client/history.d.ts.map +1 -1
- package/dist/client/index.d.ts +9 -24
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +172 -1100
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal.d.ts +19 -0
- package/dist/client/internal.d.ts.map +1 -0
- package/dist/client/internal.js +964 -0
- package/dist/client/internal.js.map +1 -0
- package/dist/client/link-pending-store.d.ts +63 -0
- package/dist/client/link-pending-store.d.ts.map +1 -0
- package/dist/client/link.d.ts +62 -55
- package/dist/client/link.d.ts.map +1 -1
- package/dist/client/nav-link-store.d.ts +36 -0
- package/dist/client/nav-link-store.d.ts.map +1 -0
- package/dist/client/navigation-api-types.d.ts +90 -0
- package/dist/client/navigation-api-types.d.ts.map +1 -0
- package/dist/client/navigation-api.d.ts +115 -0
- package/dist/client/navigation-api.d.ts.map +1 -0
- package/dist/client/navigation-context.d.ts +13 -2
- package/dist/client/navigation-context.d.ts.map +1 -1
- package/dist/client/{transition-root.d.ts → navigation-root.d.ts} +42 -8
- package/dist/client/navigation-root.d.ts.map +1 -0
- package/dist/client/nuqs-adapter.d.ts.map +1 -1
- package/dist/client/router-ref.d.ts +1 -1
- package/dist/client/router.d.ts +70 -4
- package/dist/client/router.d.ts.map +1 -1
- package/dist/client/rsc-fetch.d.ts +38 -3
- package/dist/client/rsc-fetch.d.ts.map +1 -1
- package/dist/client/segment-cache.d.ts +1 -1
- package/dist/client/segment-cache.d.ts.map +1 -1
- package/dist/client/segment-outlet.d.ts +63 -0
- package/dist/client/segment-outlet.d.ts.map +1 -0
- package/dist/client/ssr-data.d.ts +13 -4
- package/dist/client/ssr-data.d.ts.map +1 -1
- package/dist/client/stale-reload.d.ts +15 -0
- package/dist/client/stale-reload.d.ts.map +1 -1
- package/dist/client/state.d.ts +1 -1
- package/dist/client/top-loader.d.ts +5 -5
- package/dist/client/top-loader.d.ts.map +1 -1
- package/dist/client/use-cookie.d.ts +12 -0
- package/dist/client/use-cookie.d.ts.map +1 -1
- package/dist/client/use-link-status.d.ts +5 -5
- package/dist/client/use-link-status.d.ts.map +1 -1
- package/dist/client/{use-navigation-pending.d.ts → use-pending-navigation.d.ts} +4 -4
- package/dist/client/use-pending-navigation.d.ts.map +1 -0
- package/dist/client/use-query-states.d.ts +1 -1
- package/dist/client/use-query-states.d.ts.map +1 -1
- package/dist/client/use-router.d.ts +1 -1
- package/dist/client/{use-params.d.ts → use-segment-params.d.ts} +8 -6
- package/dist/client/use-segment-params.d.ts.map +1 -0
- package/dist/codec.d.ts +51 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +46 -0
- package/dist/codec.js.map +1 -0
- package/dist/config-types.d.ts +294 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-validation.d.ts +51 -0
- package/dist/config-validation.d.ts.map +1 -0
- package/dist/content/index.d.ts +1 -10
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +0 -2
- package/dist/cookies/define-cookie.d.ts +58 -25
- package/dist/cookies/define-cookie.d.ts.map +1 -1
- package/dist/cookies/index.d.ts +2 -1
- package/dist/cookies/index.d.ts.map +1 -1
- package/dist/cookies/index.js +251 -36
- package/dist/cookies/index.js.map +1 -1
- package/dist/cookies/json-cookie.d.ts +64 -0
- package/dist/cookies/json-cookie.d.ts.map +1 -0
- package/dist/cookies/validation.d.ts +46 -0
- package/dist/cookies/validation.d.ts.map +1 -0
- package/dist/dev-tools/404-page.d.ts +46 -0
- package/dist/dev-tools/404-page.d.ts.map +1 -0
- package/dist/dev-tools/browser-logs.d.ts +84 -0
- package/dist/dev-tools/browser-logs.d.ts.map +1 -0
- package/dist/dev-tools/error-page.d.ts +58 -0
- package/dist/dev-tools/error-page.d.ts.map +1 -0
- package/dist/dev-tools/holding-server.d.ts +54 -0
- package/dist/dev-tools/holding-server.d.ts.map +1 -0
- package/dist/dev-tools/index.d.ts +31 -0
- package/dist/dev-tools/index.d.ts.map +1 -0
- package/dist/{server/dev-span-processor.d.ts → dev-tools/instrumentation.d.ts} +26 -6
- package/dist/dev-tools/instrumentation.d.ts.map +1 -0
- package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
- package/dist/dev-tools/logger.d.ts.map +1 -0
- package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +2 -2
- package/dist/dev-tools/logs.d.ts.map +1 -0
- package/dist/dev-tools/overlay.d.ts +91 -0
- package/dist/dev-tools/overlay.d.ts.map +1 -0
- package/dist/dev-tools/stack-classifier.d.ts +34 -0
- package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
- package/dist/dev-tools/terminal.d.ts +28 -0
- package/dist/dev-tools/terminal.d.ts.map +1 -0
- package/dist/{server/dev-warnings.d.ts → dev-tools/warnings.d.ts} +2 -22
- package/dist/dev-tools/warnings.d.ts.map +1 -0
- package/dist/fonts/ast.d.ts +98 -6
- package/dist/fonts/ast.d.ts.map +1 -1
- package/dist/fonts/bundle.d.ts +48 -0
- package/dist/fonts/bundle.d.ts.map +1 -0
- package/dist/fonts/dev-middleware.d.ts +22 -0
- package/dist/fonts/dev-middleware.d.ts.map +1 -0
- package/dist/fonts/local.d.ts +1 -1
- package/dist/fonts/pipeline.d.ts +167 -0
- package/dist/fonts/pipeline.d.ts.map +1 -0
- package/dist/fonts/transform.d.ts +78 -0
- package/dist/fonts/transform.d.ts.map +1 -0
- package/dist/fonts/types.d.ts +45 -1
- package/dist/fonts/types.d.ts.map +1 -1
- package/dist/fonts/virtual-modules.d.ts +94 -0
- package/dist/fonts/virtual-modules.d.ts.map +1 -0
- package/dist/index.d.ts +46 -190
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4799 -12730
- package/dist/index.js.map +1 -1
- package/dist/params/codec-registry.d.ts +26 -0
- package/dist/params/codec-registry.d.ts.map +1 -0
- package/dist/params/define-schema.d.ts +53 -0
- package/dist/params/define-schema.d.ts.map +1 -0
- package/dist/params/index.d.ts +5 -0
- package/dist/params/index.d.ts.map +1 -0
- package/dist/params/index.js +34 -0
- package/dist/params/index.js.map +1 -0
- package/dist/params/resolve-schema.d.ts +34 -0
- package/dist/params/resolve-schema.d.ts.map +1 -0
- package/dist/plugin-context.d.ts +107 -0
- package/dist/plugin-context.d.ts.map +1 -0
- package/dist/plugins/adapter-build.d.ts +1 -1
- package/dist/plugins/adapter-build.d.ts.map +1 -1
- package/dist/plugins/build-manifest.d.ts +2 -2
- package/dist/plugins/build-manifest.d.ts.map +1 -1
- package/dist/plugins/build-report.d.ts +9 -7
- package/dist/plugins/build-report.d.ts.map +1 -1
- package/dist/plugins/client-chunks.d.ts +32 -0
- package/dist/plugins/client-chunks.d.ts.map +1 -0
- package/dist/plugins/content.d.ts +1 -1
- package/dist/plugins/content.d.ts.map +1 -1
- package/dist/plugins/dev-server.d.ts +1 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/entries.d.ts +1 -1
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/fonts.d.ts +17 -73
- package/dist/plugins/fonts.d.ts.map +1 -1
- package/dist/plugins/mdx.d.ts +1 -1
- package/dist/plugins/mdx.d.ts.map +1 -1
- package/dist/plugins/routing.d.ts +1 -1
- package/dist/plugins/routing.d.ts.map +1 -1
- package/dist/plugins/server-bundle.d.ts.map +1 -1
- package/dist/plugins/shims.d.ts +6 -5
- package/dist/plugins/shims.d.ts.map +1 -1
- package/dist/plugins/static-build.d.ts +5 -26
- package/dist/plugins/static-build.d.ts.map +1 -1
- package/dist/routing/codegen-shared.d.ts +63 -0
- package/dist/routing/codegen-shared.d.ts.map +1 -0
- package/dist/routing/codegen-types.d.ts +60 -0
- package/dist/routing/codegen-types.d.ts.map +1 -0
- package/dist/routing/codegen.d.ts +7 -2
- package/dist/routing/codegen.d.ts.map +1 -1
- package/dist/routing/convention-lint.d.ts +41 -0
- package/dist/routing/convention-lint.d.ts.map +1 -0
- package/dist/routing/index.d.ts +5 -1
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +4 -2
- package/dist/routing/link-codegen.d.ts +90 -0
- package/dist/routing/link-codegen.d.ts.map +1 -0
- package/dist/routing/scanner.d.ts +1 -10
- package/dist/routing/scanner.d.ts.map +1 -1
- package/dist/routing/segment-classify.d.ts +75 -0
- package/dist/routing/segment-classify.d.ts.map +1 -0
- package/dist/routing/segment-codegen.d.ts +38 -0
- package/dist/routing/segment-codegen.d.ts.map +1 -0
- package/dist/routing/types.d.ts +77 -25
- package/dist/routing/types.d.ts.map +1 -1
- package/dist/routing/walkers.d.ts +51 -0
- package/dist/routing/walkers.d.ts.map +1 -0
- package/dist/rsc-runtime/rsc.d.ts +1 -1
- package/dist/rsc-runtime/rsc.d.ts.map +1 -1
- package/dist/rsc-runtime/ssr.d.ts +12 -0
- package/dist/rsc-runtime/ssr.d.ts.map +1 -1
- package/dist/schema-bridge.d.ts +76 -0
- package/dist/schema-bridge.d.ts.map +1 -0
- package/dist/search-params/define.d.ts +157 -0
- package/dist/search-params/define.d.ts.map +1 -0
- package/dist/search-params/index.d.ts +4 -7
- package/dist/search-params/index.d.ts.map +1 -1
- package/dist/search-params/index.js +34 -441
- package/dist/search-params/index.js.map +1 -1
- package/dist/search-params/registry.d.ts +2 -2
- package/dist/search-params/registry.d.ts.map +1 -1
- package/dist/search-params/wrappers.d.ts +53 -0
- package/dist/search-params/wrappers.d.ts.map +1 -0
- package/dist/segment-params/define.d.ts +95 -0
- package/dist/segment-params/define.d.ts.map +1 -0
- package/dist/segment-params/index.d.ts +3 -0
- package/dist/segment-params/index.d.ts.map +1 -0
- package/dist/segment-params/index.js +2 -0
- package/dist/server/access-gate.d.ts +8 -3
- package/dist/server/access-gate.d.ts.map +1 -1
- package/dist/server/action-client.d.ts +41 -6
- package/dist/server/action-client.d.ts.map +1 -1
- package/dist/server/action-encryption.d.ts +76 -0
- package/dist/server/action-encryption.d.ts.map +1 -0
- package/dist/server/action-handler.d.ts +35 -1
- package/dist/server/action-handler.d.ts.map +1 -1
- package/dist/server/actions.d.ts +3 -6
- package/dist/server/actions.d.ts.map +1 -1
- package/dist/server/als-registry.d.ts +53 -5
- package/dist/server/als-registry.d.ts.map +1 -1
- package/dist/server/asset-headers.d.ts +1 -15
- package/dist/server/asset-headers.d.ts.map +1 -1
- package/dist/server/build-manifest.d.ts +2 -2
- package/dist/server/build-manifest.d.ts.map +1 -1
- package/dist/server/coalesce-tick.d.ts +40 -0
- package/dist/server/coalesce-tick.d.ts.map +1 -0
- package/dist/server/cookie-context.d.ts +170 -0
- package/dist/server/cookie-context.d.ts.map +1 -0
- package/dist/server/cookie-parsing.d.ts +51 -0
- package/dist/server/cookie-parsing.d.ts.map +1 -0
- package/dist/server/debug.d.ts +1 -1
- package/dist/server/default-logger.d.ts +22 -0
- package/dist/server/default-logger.d.ts.map +1 -0
- package/dist/server/deny-boundary.d.ts +90 -0
- package/dist/server/deny-boundary.d.ts.map +1 -0
- package/dist/server/deny-renderer.d.ts.map +1 -1
- package/dist/server/dev-source-map.d.ts +22 -0
- package/dist/server/dev-source-map.d.ts.map +1 -0
- package/dist/server/early-hints-sender.d.ts.map +1 -1
- package/dist/server/early-hints.d.ts +13 -5
- package/dist/server/early-hints.d.ts.map +1 -1
- package/dist/server/error-boundary-wrapper.d.ts +7 -1
- package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
- package/dist/server/fallback-error.d.ts +12 -7
- package/dist/server/fallback-error.d.ts.map +1 -1
- package/dist/server/flight-injection-state.d.ts +66 -0
- package/dist/server/flight-injection-state.d.ts.map +1 -0
- package/dist/server/flight-scripts.d.ts +42 -0
- package/dist/server/flight-scripts.d.ts.map +1 -0
- package/dist/server/flush.d.ts.map +1 -1
- package/dist/server/form-data.d.ts +29 -0
- package/dist/server/form-data.d.ts.map +1 -1
- package/dist/server/html-injector-core.d.ts +213 -0
- package/dist/server/html-injector-core.d.ts.map +1 -0
- package/dist/server/html-injectors.d.ts +81 -41
- package/dist/server/html-injectors.d.ts.map +1 -1
- package/dist/server/index.d.ts +10 -46
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +155 -2905
- package/dist/server/index.js.map +1 -1
- package/dist/server/internal.d.ts +48 -0
- package/dist/server/internal.d.ts.map +1 -0
- package/dist/server/internal.js +2947 -0
- package/dist/server/internal.js.map +1 -0
- package/dist/server/logger.d.ts +39 -7
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/middleware-runner.d.ts +36 -4
- package/dist/server/middleware-runner.d.ts.map +1 -1
- package/dist/server/node-stream-transforms.d.ts +112 -0
- package/dist/server/node-stream-transforms.d.ts.map +1 -0
- package/dist/server/param-coercion.d.ts +54 -0
- package/dist/server/param-coercion.d.ts.map +1 -0
- package/dist/server/pipeline-helpers.d.ts +95 -0
- package/dist/server/pipeline-helpers.d.ts.map +1 -0
- package/dist/server/pipeline-interception.d.ts +1 -1
- package/dist/server/pipeline-interception.d.ts.map +1 -1
- package/dist/server/pipeline-metadata.d.ts +6 -0
- package/dist/server/pipeline-metadata.d.ts.map +1 -1
- package/dist/server/pipeline-outcome.d.ts +49 -0
- package/dist/server/pipeline-outcome.d.ts.map +1 -0
- package/dist/server/pipeline-phases.d.ts +52 -0
- package/dist/server/pipeline-phases.d.ts.map +1 -0
- package/dist/server/pipeline.d.ts +118 -23
- package/dist/server/pipeline.d.ts.map +1 -1
- package/dist/server/port-resolution.d.ts +117 -0
- package/dist/server/port-resolution.d.ts.map +1 -0
- package/dist/server/primitives.d.ts +69 -18
- package/dist/server/primitives.d.ts.map +1 -1
- package/dist/server/render-timeout.d.ts +51 -0
- package/dist/server/render-timeout.d.ts.map +1 -0
- package/dist/server/request-context.d.ts +62 -107
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/route-element-builder.d.ts +27 -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 +21 -34
- package/dist/server/route-matcher.d.ts.map +1 -1
- package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
- package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
- package/dist/server/rsc-entry/api-handler.d.ts +2 -2
- package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
- package/dist/server/rsc-entry/error-renderer.d.ts +26 -13
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/helpers.d.ts +49 -6
- package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts +19 -8
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- package/dist/server/rsc-entry/render-route.d.ts +50 -0
- package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
- package/dist/server/rsc-entry/rsc-payload.d.ts +3 -3
- package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts +17 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts +1 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts +19 -4
- package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +119 -0
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
- package/dist/server/safe-load.d.ts +46 -0
- package/dist/server/safe-load.d.ts.map +1 -0
- package/dist/server/sensitive-fields.d.ts +74 -0
- package/dist/server/sensitive-fields.d.ts.map +1 -0
- package/dist/server/sitemap-generator.d.ts +129 -0
- package/dist/server/sitemap-generator.d.ts.map +1 -0
- package/dist/server/sitemap-handler.d.ts +22 -0
- package/dist/server/sitemap-handler.d.ts.map +1 -0
- package/dist/server/slot-resolver.d.ts +1 -1
- package/dist/server/slot-resolver.d.ts.map +1 -1
- package/dist/server/ssr-entry.d.ts +30 -0
- package/dist/server/ssr-entry.d.ts.map +1 -1
- package/dist/server/ssr-render.d.ts +39 -21
- package/dist/server/ssr-render.d.ts.map +1 -1
- package/dist/server/ssr-wrappers.d.ts +50 -0
- package/dist/server/ssr-wrappers.d.ts.map +1 -0
- package/dist/server/state-tree-diff.d.ts.map +1 -1
- package/dist/server/status-code-resolver.d.ts +16 -11
- package/dist/server/status-code-resolver.d.ts.map +1 -1
- package/dist/server/stream-utils.d.ts +36 -0
- package/dist/server/stream-utils.d.ts.map +1 -0
- package/dist/server/tracing.d.ts +5 -5
- package/dist/server/tracing.d.ts.map +1 -1
- package/dist/server/tree-builder.d.ts +62 -30
- package/dist/server/tree-builder.d.ts.map +1 -1
- package/dist/server/tree-match.d.ts +41 -0
- package/dist/server/tree-match.d.ts.map +1 -0
- package/dist/server/types.d.ts +49 -4
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/utils/escape-html.d.ts +14 -0
- package/dist/server/utils/escape-html.d.ts.map +1 -0
- package/dist/server/version-skew.d.ts +61 -0
- package/dist/server/version-skew.d.ts.map +1 -0
- package/dist/shared/merge-search-params.d.ts +22 -0
- package/dist/shared/merge-search-params.d.ts.map +1 -0
- package/dist/shims/font-google.d.ts +1 -1
- package/dist/shims/font-google.d.ts.map +1 -1
- package/dist/shims/font-google.js +42 -0
- package/dist/shims/font-google.js.map +1 -0
- package/dist/shims/font-local.d.ts +26 -0
- package/dist/shims/font-local.d.ts.map +1 -0
- package/dist/shims/font-local.js +20 -0
- package/dist/shims/font-local.js.map +1 -0
- package/dist/shims/headers.d.ts +2 -1
- package/dist/shims/headers.d.ts.map +1 -1
- package/dist/shims/navigation-client.d.ts +3 -1
- package/dist/shims/navigation-client.d.ts.map +1 -1
- package/dist/shims/navigation.d.ts +11 -5
- package/dist/shims/navigation.d.ts.map +1 -1
- package/dist/utils/state-machine.d.ts +80 -0
- package/dist/utils/state-machine.d.ts.map +1 -0
- package/package.json +56 -16
- package/src/adapters/build-output-helper.ts +77 -0
- package/src/adapters/cloudflare-dev.ts +177 -0
- package/src/adapters/cloudflare-kv-cache.ts +142 -0
- package/src/adapters/cloudflare.ts +350 -76
- package/src/adapters/compress-module.ts +24 -4
- package/src/adapters/nitro.ts +142 -59
- package/src/adapters/shared.ts +40 -0
- package/src/adapters/wrangler.d.ts +7 -0
- package/src/cache/cache-api.ts +38 -0
- package/src/cache/handler-store.ts +68 -0
- package/src/cache/index.ts +81 -18
- package/src/cache/singleflight.ts +62 -4
- package/src/cache/sizeof.ts +33 -0
- package/src/cache/timber-cache.ts +25 -20
- package/src/cli-schema-sync.ts +207 -0
- package/src/cli.ts +65 -8
- package/src/client/browser-dev.ts +153 -1
- package/src/client/browser-entry/action-dispatch.ts +126 -0
- package/src/client/browser-entry/hmr.ts +81 -0
- package/src/client/browser-entry/hydrate.ts +145 -0
- package/src/client/browser-entry/index.ts +149 -0
- package/src/client/browser-entry/post-hydration.ts +119 -0
- package/src/client/browser-entry/router-init.ts +193 -0
- package/src/client/browser-entry/rsc-stream.ts +157 -0
- package/src/client/browser-entry/scroll.ts +27 -0
- package/src/client/error-boundary.tsx +99 -22
- package/src/client/error-reconstituter.tsx +65 -0
- package/src/client/form.tsx +31 -32
- package/src/client/history.ts +26 -4
- package/src/client/index.ts +69 -44
- package/src/client/internal.ts +58 -0
- package/src/client/link-pending-store.ts +111 -0
- package/src/client/link.tsx +366 -113
- package/src/client/nav-link-store.ts +47 -0
- package/src/client/navigation-api-types.ts +112 -0
- package/src/client/navigation-api.ts +332 -0
- package/src/client/navigation-context.ts +31 -6
- package/src/client/navigation-root.tsx +342 -0
- package/src/client/nuqs-adapter.tsx +16 -3
- package/src/client/router-ref.ts +1 -1
- package/src/client/router.ts +300 -73
- package/src/client/rsc-fetch.ts +112 -8
- package/src/client/segment-cache.ts +1 -1
- package/src/client/segment-outlet.tsx +86 -0
- package/src/client/ssr-data.ts +13 -5
- package/src/client/stale-reload.ts +72 -3
- package/src/client/state.ts +2 -2
- package/src/client/top-loader.tsx +18 -6
- package/src/client/use-cookie.ts +31 -2
- package/src/client/use-link-status.ts +7 -7
- package/src/client/{use-navigation-pending.ts → use-pending-navigation.ts} +6 -6
- package/src/client/use-query-states.ts +9 -3
- package/src/client/use-router.ts +1 -1
- package/src/client/{use-params.ts → use-segment-params.ts} +8 -6
- package/src/codec.ts +97 -0
- package/src/config-types.ts +292 -0
- package/src/config-validation.ts +303 -0
- package/src/content/index.ts +5 -13
- package/src/cookies/define-cookie.ts +233 -53
- package/src/cookies/index.ts +12 -1
- package/src/cookies/json-cookie.ts +105 -0
- package/src/cookies/validation.ts +134 -0
- package/src/dev-tools/404-page.ts +387 -0
- package/src/dev-tools/browser-logs.ts +291 -0
- package/src/dev-tools/error-page.ts +506 -0
- package/src/dev-tools/holding-server.ts +187 -0
- package/src/dev-tools/index.ts +90 -0
- package/src/dev-tools/instrumentation.ts +176 -0
- package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +9 -5
- package/src/dev-tools/overlay.ts +469 -0
- package/src/dev-tools/stack-classifier.ts +75 -0
- package/src/dev-tools/terminal.ts +183 -0
- package/src/{server/dev-warnings.ts → dev-tools/warnings.ts} +5 -50
- package/src/fonts/ast.ts +525 -16
- package/src/fonts/bundle.ts +142 -0
- package/src/fonts/dev-middleware.ts +74 -0
- package/src/fonts/local.ts +1 -1
- package/src/fonts/pipeline.ts +314 -0
- package/src/fonts/transform.ts +317 -0
- package/src/fonts/types.ts +50 -1
- package/src/fonts/virtual-modules.ts +233 -0
- package/src/index.ts +409 -357
- package/src/params/codec-registry.ts +34 -0
- package/src/params/define-schema.ts +73 -0
- package/src/params/index.ts +11 -0
- package/src/params/resolve-schema.ts +88 -0
- package/src/plugin-context.ts +240 -0
- package/src/plugins/adapter-build.ts +12 -4
- package/src/plugins/build-manifest.ts +13 -2
- package/src/plugins/build-report.ts +16 -25
- package/src/plugins/client-chunks.ts +65 -0
- package/src/plugins/content.ts +1 -1
- package/src/plugins/dev-server.ts +175 -35
- package/src/plugins/entries.ts +111 -9
- package/src/plugins/fonts.ts +157 -654
- package/src/plugins/mdx.ts +47 -10
- package/src/plugins/routing.ts +374 -45
- package/src/plugins/server-bundle.ts +32 -1
- package/src/plugins/shims.ts +136 -35
- package/src/plugins/static-build.ts +15 -89
- package/src/routing/codegen-shared.ts +109 -0
- package/src/routing/codegen-types.ts +61 -0
- package/src/routing/codegen.ts +269 -179
- package/src/routing/convention-lint.ts +357 -0
- package/src/routing/index.ts +5 -1
- package/src/routing/interception.ts +1 -1
- package/src/routing/link-codegen.ts +308 -0
- package/src/routing/scanner.ts +107 -110
- package/src/routing/segment-classify.ts +188 -0
- package/src/routing/segment-codegen.ts +98 -0
- package/src/routing/types.ts +78 -25
- package/src/routing/walkers.ts +90 -0
- package/src/rsc-runtime/rsc.ts +2 -0
- package/src/rsc-runtime/ssr.ts +50 -0
- package/src/rsc-runtime/vendor-types.d.ts +7 -0
- package/src/{search-params/codecs.ts → schema-bridge.ts} +57 -20
- package/src/search-params/define.ts +538 -0
- package/src/search-params/index.ts +14 -20
- package/src/search-params/registry.ts +2 -2
- package/src/search-params/wrappers.ts +92 -0
- package/src/segment-params/define.ts +336 -0
- package/src/segment-params/index.ts +9 -0
- package/src/server/access-gate.tsx +76 -34
- package/src/server/action-client.ts +88 -15
- package/src/server/action-encryption.ts +144 -0
- package/src/server/action-handler.ts +112 -14
- package/src/server/actions.ts +10 -9
- package/src/server/als-registry.ts +55 -7
- package/src/server/asset-headers.ts +8 -34
- package/src/server/build-manifest.ts +10 -4
- package/src/server/coalesce-tick.ts +75 -0
- package/src/server/compress.ts +25 -7
- package/src/server/cookie-context.ts +468 -0
- package/src/server/cookie-parsing.ts +135 -0
- package/src/server/debug.ts +1 -1
- package/src/server/default-logger.ts +99 -0
- package/src/server/deny-boundary.ts +218 -0
- package/src/server/deny-renderer.ts +31 -50
- package/src/server/dev-source-map.ts +31 -0
- package/src/server/early-hints-sender.ts +3 -2
- package/src/server/early-hints.ts +36 -15
- package/src/server/error-boundary-wrapper.ts +74 -22
- package/src/server/fallback-error.ts +74 -102
- package/src/server/flight-injection-state.ts +113 -0
- package/src/server/flight-scripts.ts +62 -0
- package/src/server/flush.ts +2 -1
- package/src/server/form-data.ts +76 -0
- package/src/server/html-injector-core.ts +417 -0
- package/src/server/html-injectors.ts +235 -223
- package/src/server/index.ts +29 -183
- package/src/server/internal.ts +176 -0
- package/src/server/logger.ts +67 -36
- package/src/server/middleware-runner.ts +75 -4
- package/src/server/node-stream-transforms.ts +361 -0
- package/src/server/param-coercion.ts +206 -0
- package/src/server/pipeline-helpers.ts +204 -0
- package/src/server/pipeline-interception.ts +17 -16
- package/src/server/pipeline-metadata.ts +13 -0
- package/src/server/pipeline-outcome.ts +176 -0
- package/src/server/pipeline-phases.ts +460 -0
- package/src/server/pipeline.ts +154 -394
- package/src/server/port-resolution.ts +215 -0
- package/src/server/primitives.ts +111 -28
- package/src/server/render-timeout.ts +108 -0
- package/src/server/request-context.ts +168 -333
- package/src/server/route-element-builder.ts +309 -195
- package/src/server/route-handler.ts +24 -4
- package/src/server/route-matcher.ts +50 -231
- package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
- package/src/server/rsc-entry/api-handler.ts +16 -17
- package/src/server/rsc-entry/error-renderer.ts +305 -89
- package/src/server/rsc-entry/helpers.ts +137 -12
- package/src/server/rsc-entry/index.ts +316 -352
- package/src/server/rsc-entry/render-route.ts +307 -0
- package/src/server/rsc-entry/rsc-payload.ts +65 -18
- package/src/server/rsc-entry/rsc-stream.ts +85 -13
- package/src/server/rsc-entry/ssr-bridge.ts +14 -5
- package/src/server/rsc-entry/ssr-renderer.ts +187 -38
- package/src/server/rsc-entry/wrap-action-dispatch.ts +449 -0
- package/src/server/safe-load.ts +60 -0
- package/src/server/sensitive-fields.ts +230 -0
- package/src/server/sitemap-generator.ts +338 -0
- package/src/server/sitemap-handler.ts +126 -0
- package/src/server/slot-resolver.ts +228 -246
- package/src/server/ssr-entry.ts +229 -32
- package/src/server/ssr-render.ts +289 -67
- package/src/server/ssr-wrappers.tsx +139 -0
- package/src/server/state-tree-diff.ts +4 -1
- package/src/server/status-code-resolver.ts +112 -128
- package/src/server/stream-utils.ts +213 -0
- package/src/server/tracing.ts +21 -10
- package/src/server/tree-builder.ts +202 -90
- package/src/server/tree-match.ts +198 -0
- package/src/server/types.ts +55 -6
- package/src/server/utils/escape-html.ts +20 -0
- package/src/server/version-skew.ts +104 -0
- package/src/shared/merge-search-params.ts +55 -0
- package/src/shims/font-google.ts +1 -1
- package/src/shims/font-local.ts +34 -0
- package/src/shims/headers.ts +5 -1
- package/src/shims/navigation-client.ts +4 -3
- package/src/shims/navigation.ts +14 -7
- package/src/utils/state-machine.ts +111 -0
- package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
- package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
- package/dist/_chunks/debug-gwlJkDuf.js +0 -108
- package/dist/_chunks/debug-gwlJkDuf.js.map +0 -1
- package/dist/_chunks/format-DviM89f0.js.map +0 -1
- package/dist/_chunks/interception-BOoWmLUA.js +0 -676
- package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
- package/dist/_chunks/request-context-DIkVh_jG.js +0 -330
- package/dist/_chunks/request-context-DIkVh_jG.js.map +0 -1
- package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
- package/dist/_chunks/tracing-CemImE6h.js +0 -187
- package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
- package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
- package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
- package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
- package/dist/cache/register-cached-function.d.ts +0 -17
- package/dist/cache/register-cached-function.d.ts.map +0 -1
- package/dist/client/browser-entry.d.ts +0 -21
- package/dist/client/browser-entry.d.ts.map +0 -1
- package/dist/client/link-status-provider.d.ts +0 -11
- package/dist/client/link-status-provider.d.ts.map +0 -1
- package/dist/client/transition-root.d.ts.map +0 -1
- package/dist/client/use-navigation-pending.d.ts.map +0 -1
- package/dist/client/use-params.d.ts.map +0 -1
- package/dist/plugins/cache-transform.d.ts +0 -36
- package/dist/plugins/cache-transform.d.ts.map +0 -1
- package/dist/plugins/dev-error-overlay.d.ts +0 -60
- package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
- package/dist/plugins/dev-logs.d.ts.map +0 -1
- package/dist/plugins/dynamic-transform.d.ts +0 -72
- package/dist/plugins/dynamic-transform.d.ts.map +0 -1
- package/dist/plugins/server-action-exports.d.ts +0 -26
- package/dist/plugins/server-action-exports.d.ts.map +0 -1
- package/dist/routing/status-file-lint.d.ts +0 -33
- package/dist/routing/status-file-lint.d.ts.map +0 -1
- package/dist/search-params/analyze.d.ts +0 -54
- package/dist/search-params/analyze.d.ts.map +0 -1
- package/dist/search-params/builtin-codecs.d.ts +0 -105
- package/dist/search-params/builtin-codecs.d.ts.map +0 -1
- package/dist/search-params/codecs.d.ts +0 -53
- package/dist/search-params/codecs.d.ts.map +0 -1
- package/dist/search-params/create.d.ts +0 -106
- package/dist/search-params/create.d.ts.map +0 -1
- package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
- package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
- package/dist/server/dev-logger.d.ts.map +0 -1
- package/dist/server/dev-span-processor.d.ts.map +0 -1
- package/dist/server/dev-warnings.d.ts.map +0 -1
- package/dist/server/manifest-status-resolver.d.ts +0 -58
- package/dist/server/manifest-status-resolver.d.ts.map +0 -1
- package/dist/server/prerender.d.ts +0 -77
- package/dist/server/prerender.d.ts.map +0 -1
- package/dist/server/response-cache.d.ts +0 -54
- package/dist/server/response-cache.d.ts.map +0 -1
- package/dist/utils/directive-parser.d.ts +0 -70
- package/dist/utils/directive-parser.d.ts.map +0 -1
- package/src/cache/register-cached-function.ts +0 -103
- package/src/client/browser-entry.ts +0 -678
- package/src/client/link-status-provider.tsx +0 -30
- package/src/client/transition-root.tsx +0 -166
- package/src/plugins/cache-transform.ts +0 -199
- package/src/plugins/dev-error-overlay.ts +0 -230
- package/src/plugins/dynamic-transform.ts +0 -161
- package/src/plugins/server-action-exports.ts +0 -220
- package/src/routing/status-file-lint.ts +0 -112
- package/src/search-params/analyze.ts +0 -192
- package/src/search-params/builtin-codecs.ts +0 -228
- package/src/search-params/create.ts +0 -321
- package/src/server/dev-fetch-instrumentation.ts +0 -96
- package/src/server/dev-span-processor.ts +0 -78
- package/src/server/manifest-status-resolver.ts +0 -215
- package/src/server/prerender.ts +0 -139
- package/src/server/response-cache.ts +0 -410
- package/src/utils/directive-parser.ts +0 -529
- /package/src/{server/dev-logger.ts → dev-tools/logger.ts} +0 -0
package/src/routing/types.ts
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The route tree is built by scanning the app/ directory and recognizing
|
|
5
5
|
* file conventions (page.*, layout.*, middleware.ts, access.ts, route.ts, etc.).
|
|
6
|
+
*
|
|
7
|
+
* **Single shape, two specializations** (TIM-848):
|
|
8
|
+
*
|
|
9
|
+
* `SegmentNode<TFile>` is the one canonical in-memory shape for the
|
|
10
|
+
* timber route tree. The same interface is used at build time (with
|
|
11
|
+
* `TFile = RouteFile`) and at request time (with `TFile = ManifestFile`,
|
|
12
|
+
* see `server/route-matcher.ts`). Walkers parameterized over `TFile`
|
|
13
|
+
* work on either, eliminating the previous duplication between
|
|
14
|
+
* `SegmentNode` (Map-based) and `ManifestSegmentNode` (object-based).
|
|
15
|
+
*
|
|
16
|
+
* Keyed groups (`slots`, `statusFiles`, `jsonStatusFiles`,
|
|
17
|
+
* `legacyStatusFiles`, `metadataRoutes`) are plain `Record<string, …>`
|
|
18
|
+
* objects rather than `Map`s so that the build-time tree can be
|
|
19
|
+
* serialized into the virtual route manifest with no shape transform.
|
|
20
|
+
*
|
|
21
|
+
* See design/07-routing.md §"Route Tree Shape" and design/18-build-system.md
|
|
22
|
+
* §"Route Manifest Shape".
|
|
6
23
|
*/
|
|
7
24
|
|
|
8
25
|
/** Segment type classification */
|
|
@@ -27,7 +44,14 @@ export type InterceptionMarker = '(.)' | '(..)' | '(...)' | '(..)(..)';
|
|
|
27
44
|
/** All recognized interception markers, ordered longest-first for parsing. */
|
|
28
45
|
export const INTERCEPTION_MARKERS: InterceptionMarker[] = ['(..)(..)', '(.)', '(..)', '(...)'];
|
|
29
46
|
|
|
30
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* A single file discovered in a route segment at build time.
|
|
49
|
+
*
|
|
50
|
+
* The runtime equivalent (`ManifestFile`, defined in
|
|
51
|
+
* `server/route-matcher.ts`) replaces `extension` with a lazy `load`
|
|
52
|
+
* function. Walkers that only need `filePath` are parameterized over
|
|
53
|
+
* `TFile` and accept either.
|
|
54
|
+
*/
|
|
31
55
|
export interface RouteFile {
|
|
32
56
|
/** Absolute path to the file */
|
|
33
57
|
filePath: string;
|
|
@@ -35,8 +59,17 @@ export interface RouteFile {
|
|
|
35
59
|
extension: string;
|
|
36
60
|
}
|
|
37
61
|
|
|
38
|
-
/**
|
|
39
|
-
|
|
62
|
+
/**
|
|
63
|
+
* A node in the segment tree.
|
|
64
|
+
*
|
|
65
|
+
* Generic over `TFile` so the same interface describes both the
|
|
66
|
+
* build-time tree (`SegmentNode<RouteFile>`, the default) and the
|
|
67
|
+
* runtime manifest tree (`SegmentNode<ManifestFile>`, aliased as
|
|
68
|
+
* `ManifestSegmentNode`). All keyed groups use `Record` (not `Map`)
|
|
69
|
+
* so the build-time tree serializes to the virtual route manifest
|
|
70
|
+
* with no shape transform.
|
|
71
|
+
*/
|
|
72
|
+
export interface SegmentNode<TFile = RouteFile> {
|
|
40
73
|
/** The raw directory name (e.g. "dashboard", "[id]", "(auth)", "@sidebar") */
|
|
41
74
|
segmentName: string;
|
|
42
75
|
/** Classified segment type */
|
|
@@ -54,40 +87,60 @@ export interface SegmentNode {
|
|
|
54
87
|
interceptedSegmentName?: string;
|
|
55
88
|
|
|
56
89
|
// --- File conventions ---
|
|
57
|
-
page?:
|
|
58
|
-
layout?:
|
|
59
|
-
middleware?:
|
|
60
|
-
access?:
|
|
61
|
-
route?:
|
|
62
|
-
|
|
63
|
-
|
|
90
|
+
page?: TFile;
|
|
91
|
+
layout?: TFile;
|
|
92
|
+
middleware?: TFile;
|
|
93
|
+
access?: TFile;
|
|
94
|
+
route?: TFile;
|
|
95
|
+
/**
|
|
96
|
+
* params.ts — isomorphic convention file exporting segmentParams and/or searchParams.
|
|
97
|
+
* Discovered by the scanner like middleware.ts and access.ts.
|
|
98
|
+
* See design/07-routing.md §"params.ts Convention File"
|
|
99
|
+
*/
|
|
100
|
+
params?: TFile;
|
|
101
|
+
error?: TFile;
|
|
102
|
+
default?: TFile;
|
|
64
103
|
/** Status-code files: 4xx.tsx, 5xx.tsx, {status}.tsx (component format) */
|
|
65
|
-
statusFiles?:
|
|
104
|
+
statusFiles?: Record<string, TFile>;
|
|
66
105
|
/** JSON status-code files: 4xx.json, 5xx.json, {status}.json */
|
|
67
|
-
jsonStatusFiles?:
|
|
106
|
+
jsonStatusFiles?: Record<string, TFile>;
|
|
68
107
|
/** denied.tsx — slot-only denial rendering */
|
|
69
|
-
denied?:
|
|
108
|
+
denied?: TFile;
|
|
70
109
|
/** Legacy compat: not-found.tsx (maps to 404), forbidden.tsx (403), unauthorized.tsx (401) */
|
|
71
|
-
legacyStatusFiles?:
|
|
72
|
-
|
|
73
|
-
prerender?: RouteFile;
|
|
74
|
-
/** search-params.ts — typed search params definition for this route */
|
|
75
|
-
searchParams?: RouteFile;
|
|
110
|
+
legacyStatusFiles?: Record<string, TFile>;
|
|
111
|
+
|
|
76
112
|
/** Metadata route files (sitemap.ts, robots.ts, icon.tsx, etc.) keyed by base name */
|
|
77
|
-
metadataRoutes?:
|
|
113
|
+
metadataRoutes?: Record<string, TFile>;
|
|
78
114
|
|
|
79
115
|
// --- Children ---
|
|
80
|
-
children: SegmentNode[];
|
|
116
|
+
children: SegmentNode<TFile>[];
|
|
81
117
|
/** Parallel route slots (keyed by slot name without @) */
|
|
82
|
-
slots:
|
|
118
|
+
slots: Record<string, SegmentNode<TFile>>;
|
|
83
119
|
}
|
|
84
120
|
|
|
85
|
-
/**
|
|
86
|
-
|
|
121
|
+
/**
|
|
122
|
+
* The full route tree output from the scanner (or the root of the
|
|
123
|
+
* runtime route manifest, when `TFile = ManifestFile`).
|
|
124
|
+
*
|
|
125
|
+
* Generic so the same wrapper carries app-root metadata for both
|
|
126
|
+
* shapes. The runtime manifest extends this with `viteRoot` (see
|
|
127
|
+
* `ManifestRoot` in `server/route-matcher.ts`).
|
|
128
|
+
*/
|
|
129
|
+
export interface RouteTree<TFile = RouteFile> {
|
|
87
130
|
/** The root segment node (representing app/) */
|
|
88
|
-
root: SegmentNode
|
|
131
|
+
root: SegmentNode<TFile>;
|
|
89
132
|
/** All discovered proxy.ts files (should be at most one, in app/) */
|
|
90
|
-
proxy?:
|
|
133
|
+
proxy?: TFile;
|
|
134
|
+
/**
|
|
135
|
+
* Global error page: app/global-error.{tsx,ts,jsx,js}
|
|
136
|
+
*
|
|
137
|
+
* Rendered as a standalone full-page replacement (no layout wrapping)
|
|
138
|
+
* when no segment-level error file is found. SSR-only render path.
|
|
139
|
+
* Must provide its own <html> and <body>.
|
|
140
|
+
*
|
|
141
|
+
* See design/10-error-handling.md §"Tier 2 — Global Error Page"
|
|
142
|
+
*/
|
|
143
|
+
globalError?: TFile;
|
|
91
144
|
}
|
|
92
145
|
|
|
93
146
|
/** Configuration passed to the scanner */
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared route-tree walkers (TIM-848).
|
|
3
|
+
*
|
|
4
|
+
* Tiny helpers that walk a `SegmentNode<TFile>` tree generically. Both the
|
|
5
|
+
* build-time tree (`SegmentNode<RouteFile>`) and the runtime manifest
|
|
6
|
+
* tree (`SegmentNode<ManifestFile>`) flow through these helpers because
|
|
7
|
+
* the walker only reads the structural fields shared by both shapes
|
|
8
|
+
* (`children`, `slots`, `page`, `route`, `urlPath`).
|
|
9
|
+
*
|
|
10
|
+
* Before this module, three near-identical `collectRoutes` functions
|
|
11
|
+
* lived in `plugins/dev-404-page.ts`, `plugins/build-report.ts`, and
|
|
12
|
+
* `routing/codegen.ts`. The codegen one is special-purpose (it
|
|
13
|
+
* accumulates `ParamEntry[]` and resolves codec chains) and stays
|
|
14
|
+
* local; the other two now share `collectLeafRoutes` from this file.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import type { SegmentNode } from './types.js';
|
|
18
|
+
|
|
19
|
+
/** A leaf route discovered while walking the segment tree. */
|
|
20
|
+
export interface LeafRoute<TFile> {
|
|
21
|
+
/** URL path of the leaf (root is "/"). */
|
|
22
|
+
urlPath: string;
|
|
23
|
+
/** Segment chain from root to this leaf, inclusive. */
|
|
24
|
+
segments: SegmentNode<TFile>[];
|
|
25
|
+
/** The page file at this leaf, if any. */
|
|
26
|
+
page?: TFile;
|
|
27
|
+
/** The route handler file at this leaf, if any. */
|
|
28
|
+
route?: TFile;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Options for `collectLeafRoutes`. */
|
|
32
|
+
export interface CollectLeafRoutesOptions {
|
|
33
|
+
/**
|
|
34
|
+
* If true, recurse into parallel slots and emit slot leaves alongside
|
|
35
|
+
* the main route tree. Defaults to `false` because slots render
|
|
36
|
+
* alongside their parent at the same URL and are not separately
|
|
37
|
+
* URL-addressable. The build report excludes slots; route-listing
|
|
38
|
+
* UIs that want to show "all leaves with a page handler" can opt in.
|
|
39
|
+
*/
|
|
40
|
+
includeSlots?: boolean;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Walk a segment tree and collect every leaf with a `page` or `route`
|
|
45
|
+
* handler. Generic over `TFile` so it works on both the build-time
|
|
46
|
+
* scanner output and the runtime manifest tree.
|
|
47
|
+
*
|
|
48
|
+
* - Pages and route handlers at the same URL produce two distinct
|
|
49
|
+
* entries (the build report deduplicates by URL afterward).
|
|
50
|
+
* - Parallel slots are skipped unless `includeSlots: true` (slots
|
|
51
|
+
* share their parent's URL and are not addressable on their own).
|
|
52
|
+
* - Result is sorted by `urlPath` for deterministic output.
|
|
53
|
+
*/
|
|
54
|
+
export function collectLeafRoutes<TFile>(
|
|
55
|
+
root: SegmentNode<TFile>,
|
|
56
|
+
options: CollectLeafRoutesOptions = {}
|
|
57
|
+
): LeafRoute<TFile>[] {
|
|
58
|
+
const { includeSlots = false } = options;
|
|
59
|
+
const result: LeafRoute<TFile>[] = [];
|
|
60
|
+
walk(root, [], result, includeSlots);
|
|
61
|
+
result.sort((a, b) => a.urlPath.localeCompare(b.urlPath));
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function walk<TFile>(
|
|
66
|
+
node: SegmentNode<TFile>,
|
|
67
|
+
chain: SegmentNode<TFile>[],
|
|
68
|
+
result: LeafRoute<TFile>[],
|
|
69
|
+
includeSlots: boolean
|
|
70
|
+
): void {
|
|
71
|
+
const currentChain = [...chain, node];
|
|
72
|
+
const path = node.urlPath || '/';
|
|
73
|
+
|
|
74
|
+
if (node.page) {
|
|
75
|
+
result.push({ urlPath: path, segments: currentChain, page: node.page });
|
|
76
|
+
}
|
|
77
|
+
if (node.route) {
|
|
78
|
+
result.push({ urlPath: path, segments: currentChain, route: node.route });
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
for (const child of node.children) {
|
|
82
|
+
walk(child, currentChain, result, includeSlots);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (includeSlots) {
|
|
86
|
+
for (const slotNode of Object.values(node.slots)) {
|
|
87
|
+
walk(slotNode, currentChain, result, includeSlots);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
package/src/rsc-runtime/rsc.ts
CHANGED
package/src/rsc-runtime/ssr.ts
CHANGED
|
@@ -11,3 +11,53 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
export { createFromReadableStream } from '@vitejs/plugin-rsc/ssr';
|
|
14
|
+
|
|
15
|
+
// ─── Node.js Stream Path ─────────────────────────────────────────────────────
|
|
16
|
+
//
|
|
17
|
+
// On Node.js, createFromNodeStream reads RSC Flight data from a Node.js
|
|
18
|
+
// Readable (C++ backed) instead of a Web ReadableStream (JS reimplementation).
|
|
19
|
+
// Eliminates Promise-per-chunk overhead on the SSR decode path.
|
|
20
|
+
//
|
|
21
|
+
// The plugin only exports createFromReadableStream (via client.edge.js).
|
|
22
|
+
// createFromNodeStream lives in the vendored client.node.js. We import it
|
|
23
|
+
// directly and wire up the same serverConsumerManifest the plugin uses.
|
|
24
|
+
|
|
25
|
+
import { createServerConsumerManifest } from '@vitejs/plugin-rsc/ssr';
|
|
26
|
+
|
|
27
|
+
type CreateFromNodeStreamFn = (
|
|
28
|
+
stream: import('node:stream').Readable,
|
|
29
|
+
manifest: ReturnType<typeof createServerConsumerManifest>,
|
|
30
|
+
options?: Record<string, unknown>
|
|
31
|
+
) => React.ReactNode;
|
|
32
|
+
|
|
33
|
+
let _createFromNodeStream: CreateFromNodeStreamFn | null = null;
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
if (typeof process !== 'undefined' && process.release?.name === 'node') {
|
|
37
|
+
const clientNode = await import('@vitejs/plugin-rsc/vendor/react-server-dom/client.node');
|
|
38
|
+
if (typeof clientNode.createFromNodeStream === 'function') {
|
|
39
|
+
_createFromNodeStream = clientNode.createFromNodeStream;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
} catch {
|
|
43
|
+
// Not available — fall back to createFromReadableStream
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Decode an RSC Flight stream from a Node.js Readable.
|
|
48
|
+
*
|
|
49
|
+
* Uses the vendored createFromNodeStream which reads via Node.js native
|
|
50
|
+
* streams (C++ libuv) instead of Web ReadableStream (JS Promise per chunk).
|
|
51
|
+
*
|
|
52
|
+
* Returns null if createFromNodeStream isn't available (CF Workers, etc),
|
|
53
|
+
* signaling the caller to use createFromReadableStream instead.
|
|
54
|
+
*/
|
|
55
|
+
export function createFromNodeStream(
|
|
56
|
+
stream: import('node:stream').Readable
|
|
57
|
+
): React.ReactNode | null {
|
|
58
|
+
if (!_createFromNodeStream) return null;
|
|
59
|
+
return _createFromNodeStream(stream, createServerConsumerManifest());
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** Whether the Node.js stream RSC decode path is available. */
|
|
63
|
+
export const hasNodeStreamDecode = _createFromNodeStream !== null;
|
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* validation libraries (Zod, Valibot, ArkType).
|
|
2
|
+
* Standard Schema bridge — shared helpers for bridging Standard Schema-compatible
|
|
3
|
+
* validation libraries (Zod, Valibot, ArkType) to the Codec<T> protocol.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* This module is the single source of truth for:
|
|
6
|
+
* - StandardSchemaV1 interface (subset of the Standard Schema spec)
|
|
7
|
+
* - validateSync() helper
|
|
8
|
+
* - fromSchema() — bridge from Standard Schema to Codec<T>
|
|
9
|
+
* - fromArraySchema() — bridge for array-valued codecs
|
|
10
|
+
*
|
|
11
|
+
* These are re-exported from @timber-js/app/search-params, @timber-js/app/segment-params,
|
|
12
|
+
* and @timber-js/app/cookies for convenience. The canonical import is
|
|
13
|
+
* @timber-js/app/codec.
|
|
14
|
+
*
|
|
15
|
+
* Design doc: design/23a-search-params-triage.md §"Unify Codec<T> type"
|
|
6
16
|
*/
|
|
7
17
|
|
|
8
|
-
import type {
|
|
18
|
+
import type { Codec } from './codec.js';
|
|
9
19
|
|
|
10
20
|
// ---------------------------------------------------------------------------
|
|
11
21
|
// Standard Schema interface (subset)
|
|
@@ -15,13 +25,14 @@ import type { SearchParamCodec } from './create.js';
|
|
|
15
25
|
// We depend only on `~standard.validate` to avoid coupling to any specific lib.
|
|
16
26
|
// ---------------------------------------------------------------------------
|
|
17
27
|
|
|
18
|
-
interface
|
|
28
|
+
/** Minimal Standard Schema interface for auto-detection. */
|
|
29
|
+
export interface StandardSchemaV1<Output = unknown> {
|
|
19
30
|
'~standard': {
|
|
20
31
|
validate(value: unknown): StandardSchemaResult<Output> | Promise<StandardSchemaResult<Output>>;
|
|
21
32
|
};
|
|
22
33
|
}
|
|
23
34
|
|
|
24
|
-
type StandardSchemaResult<Output> =
|
|
35
|
+
export type StandardSchemaResult<Output> =
|
|
25
36
|
| { value: Output; issues?: undefined }
|
|
26
37
|
| { value?: undefined; issues: ReadonlyArray<{ message: string }> };
|
|
27
38
|
|
|
@@ -30,46 +41,72 @@ type StandardSchemaResult<Output> =
|
|
|
30
41
|
// ---------------------------------------------------------------------------
|
|
31
42
|
|
|
32
43
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
44
|
+
* Run a Standard Schema's `~standard.validate()` synchronously.
|
|
45
|
+
*
|
|
46
|
+
* Zod v4's signature includes `Promise` in the return union to satisfy the
|
|
47
|
+
* Standard Schema spec, but in practice Zod always validates synchronously
|
|
48
|
+
* for the schema types we use. We assert the result is sync and throw if
|
|
49
|
+
* it isn't — codec parsing must be synchronous.
|
|
37
50
|
*/
|
|
38
|
-
function validateSync<Output>(
|
|
51
|
+
export function validateSync<Output>(
|
|
39
52
|
schema: StandardSchemaV1<Output>,
|
|
40
53
|
value: unknown
|
|
41
54
|
): StandardSchemaResult<Output> {
|
|
42
55
|
const result = schema['~standard'].validate(value);
|
|
43
56
|
if (result instanceof Promise) {
|
|
44
57
|
throw new Error(
|
|
45
|
-
'[timber] fromSchema: schema returned a Promise — only sync schemas are supported
|
|
58
|
+
'[timber] fromSchema: schema returned a Promise — only sync schemas are supported.'
|
|
46
59
|
);
|
|
47
60
|
}
|
|
48
61
|
return result;
|
|
49
62
|
}
|
|
50
63
|
|
|
51
64
|
// ---------------------------------------------------------------------------
|
|
52
|
-
//
|
|
65
|
+
// Type guards
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
|
|
68
|
+
/** Check if a value is a Standard Schema object. */
|
|
69
|
+
export function isStandardSchema(value: unknown): value is StandardSchemaV1 {
|
|
70
|
+
return (
|
|
71
|
+
typeof value === 'object' &&
|
|
72
|
+
value !== null &&
|
|
73
|
+
'~standard' in value &&
|
|
74
|
+
typeof (value as StandardSchemaV1)['~standard']?.validate === 'function'
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** Check if a value is a Codec (has parse + serialize methods). */
|
|
79
|
+
export function isCodec(value: unknown): value is Codec<unknown> {
|
|
80
|
+
return (
|
|
81
|
+
typeof value === 'object' &&
|
|
82
|
+
value !== null &&
|
|
83
|
+
typeof (value as Codec<unknown>).parse === 'function' &&
|
|
84
|
+
typeof (value as Codec<unknown>).serialize === 'function'
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
// fromSchema — bridge from Standard Schema to Codec<T>
|
|
53
90
|
// ---------------------------------------------------------------------------
|
|
54
91
|
|
|
55
92
|
/**
|
|
56
93
|
* Bridge a Standard Schema-compatible schema (Zod, Valibot, ArkType) to a
|
|
57
|
-
*
|
|
94
|
+
* Codec<T>.
|
|
58
95
|
*
|
|
59
|
-
* Parse: coerces the raw
|
|
96
|
+
* Parse: coerces the raw string through the schema. On validation failure,
|
|
60
97
|
* parses `undefined` to get the schema's default value (the schema should have
|
|
61
98
|
* a `.default()` call). If that also fails, returns `undefined`.
|
|
62
99
|
*
|
|
63
100
|
* Serialize: uses `String()` for primitives, `null` for null/undefined.
|
|
64
101
|
*
|
|
65
102
|
* ```ts
|
|
66
|
-
* import { fromSchema } from '@timber-js/app/
|
|
103
|
+
* import { fromSchema } from '@timber-js/app/codec'
|
|
67
104
|
* import { z } from 'zod/v4'
|
|
68
105
|
*
|
|
69
106
|
* const pageCodec = fromSchema(z.coerce.number().int().min(1).default(1))
|
|
70
107
|
* ```
|
|
71
108
|
*/
|
|
72
|
-
export function fromSchema<T>(schema: StandardSchemaV1<T>):
|
|
109
|
+
export function fromSchema<T>(schema: StandardSchemaV1<T>): Codec<T> {
|
|
73
110
|
return {
|
|
74
111
|
parse(value: string | string[] | undefined): T {
|
|
75
112
|
// For array inputs, take the last value (consistent with URLSearchParams.get())
|
|
@@ -101,7 +138,7 @@ export function fromSchema<T>(schema: StandardSchemaV1<T>): SearchParamCodec<T>
|
|
|
101
138
|
}
|
|
102
139
|
|
|
103
140
|
// ---------------------------------------------------------------------------
|
|
104
|
-
// fromArraySchema — bridge for array-valued
|
|
141
|
+
// fromArraySchema — bridge for array-valued codecs
|
|
105
142
|
// ---------------------------------------------------------------------------
|
|
106
143
|
|
|
107
144
|
/**
|
|
@@ -109,13 +146,13 @@ export function fromSchema<T>(schema: StandardSchemaV1<T>): SearchParamCodec<T>
|
|
|
109
146
|
* and repeated query keys (`?tag=a&tag=b`).
|
|
110
147
|
*
|
|
111
148
|
* ```ts
|
|
112
|
-
* import { fromArraySchema } from '@timber-js/app/
|
|
149
|
+
* import { fromArraySchema } from '@timber-js/app/codec'
|
|
113
150
|
* import { z } from 'zod/v4'
|
|
114
151
|
*
|
|
115
152
|
* const tagsCodec = fromArraySchema(z.array(z.string()).default([]))
|
|
116
153
|
* ```
|
|
117
154
|
*/
|
|
118
|
-
export function fromArraySchema<T>(schema: StandardSchemaV1<T>):
|
|
155
|
+
export function fromArraySchema<T>(schema: StandardSchemaV1<T>): Codec<T> {
|
|
119
156
|
return {
|
|
120
157
|
parse(value: string | string[] | undefined): T {
|
|
121
158
|
// Coerce single string to array for array schemas
|