@timber-js/app 0.2.0-alpha.9 → 0.2.0-alpha.91
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-DLnUaR65.js +421 -0
- package/dist/_chunks/actions-DLnUaR65.js.map +1 -0
- package/dist/_chunks/{als-registry-B7DbZ2hS.js → als-registry-HS0LGUl2.js} +1 -1
- package/dist/_chunks/als-registry-HS0LGUl2.js.map +1 -0
- package/dist/_chunks/chunk-BYIpzuS7.js +39 -0
- package/dist/_chunks/{debug-gwlJkDuf.js → debug-ECi_61pb.js} +2 -2
- package/dist/_chunks/debug-ECi_61pb.js.map +1 -0
- package/dist/_chunks/define-C77ScO0m.js +106 -0
- package/dist/_chunks/define-C77ScO0m.js.map +1 -0
- package/dist/_chunks/define-Itxvcd7F.js +199 -0
- package/dist/_chunks/define-Itxvcd7F.js.map +1 -0
- package/dist/_chunks/define-cookie-BowvzoP0.js +94 -0
- package/dist/_chunks/define-cookie-BowvzoP0.js.map +1 -0
- package/dist/_chunks/{format-DviM89f0.js → dev-warnings-DpGRGoDi.js} +5 -44
- package/dist/_chunks/dev-warnings-DpGRGoDi.js.map +1 -0
- package/dist/_chunks/format-CYBGxKtc.js +14 -0
- package/dist/_chunks/format-CYBGxKtc.js.map +1 -0
- package/dist/_chunks/{interception-BOoWmLUA.js → interception-ErnB33JX.js} +301 -133
- package/dist/_chunks/interception-ErnB33JX.js.map +1 -0
- package/dist/_chunks/merge-search-params-Cm_KIWDX.js +41 -0
- package/dist/_chunks/merge-search-params-Cm_KIWDX.js.map +1 -0
- package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js → metadata-routes-DS3eKNmf.js} +1 -1
- package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js.map → metadata-routes-DS3eKNmf.js.map} +1 -1
- package/dist/_chunks/request-context-CK5tZqIP.js +478 -0
- package/dist/_chunks/request-context-CK5tZqIP.js.map +1 -0
- package/dist/_chunks/schema-bridge-C3xl_vfb.js +86 -0
- package/dist/_chunks/schema-bridge-C3xl_vfb.js.map +1 -0
- package/dist/_chunks/segment-classify-BDNn6EzD.js +65 -0
- package/dist/_chunks/segment-classify-BDNn6EzD.js.map +1 -0
- package/dist/_chunks/segment-context-fHFLF1PE.js +34 -0
- package/dist/_chunks/segment-context-fHFLF1PE.js.map +1 -0
- package/dist/_chunks/{ssr-data-MjmprTmO.js → ssr-data-DzuI0bIV.js} +1 -1
- package/dist/_chunks/{ssr-data-MjmprTmO.js.map → ssr-data-DzuI0bIV.js.map} +1 -1
- package/dist/_chunks/stale-reload-BX5gL1r-.js +64 -0
- package/dist/_chunks/stale-reload-BX5gL1r-.js.map +1 -0
- package/dist/_chunks/{tracing-CemImE6h.js → tracing-CCYbKn5n.js} +60 -9
- package/dist/_chunks/tracing-CCYbKn5n.js.map +1 -0
- package/dist/_chunks/use-params-Br9YSUFV.js +295 -0
- package/dist/_chunks/use-params-Br9YSUFV.js.map +1 -0
- package/dist/_chunks/{use-query-states-D5KaffOK.js → use-query-states-BiV5GJgm.js} +7 -4
- package/dist/_chunks/use-query-states-BiV5GJgm.js.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 +135 -11
- 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 +56 -13
- package/dist/adapters/nitro.js.map +1 -1
- 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 +142 -80
- 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.d.ts +6 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +8 -3
- package/dist/cli.js.map +1 -1
- package/dist/client/browser-dev.d.ts +27 -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 +10 -4
- 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 +6 -3
- 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 -21
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +229 -1018
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal.d.ts +18 -0
- package/dist/client/internal.d.ts.map +1 -0
- package/dist/client/internal.js +890 -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/top-loader.d.ts +5 -5
- package/dist/client/top-loader.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-params.d.ts +6 -4
- package/dist/client/use-params.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/codec.d.ts +33 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +2 -0
- package/dist/config-types.d.ts +266 -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 +35 -14
- package/dist/cookies/define-cookie.d.ts.map +1 -1
- package/dist/cookies/index.js +1 -83
- package/dist/fonts/bundle.d.ts +48 -0
- package/dist/fonts/bundle.d.ts.map +1 -0
- package/dist/fonts/css.d.ts +1 -0
- package/dist/fonts/css.d.ts.map +1 -1
- package/dist/fonts/dev-middleware.d.ts +22 -0
- package/dist/fonts/dev-middleware.d.ts.map +1 -0
- package/dist/fonts/pipeline.d.ts +138 -0
- package/dist/fonts/pipeline.d.ts.map +1 -0
- package/dist/fonts/transform.d.ts +72 -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 +59 -0
- package/dist/fonts/virtual-modules.d.ts.map +1 -0
- package/dist/index.d.ts +45 -190
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4294 -2453
- package/dist/index.js.map +1 -1
- 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 +3 -3
- 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-404-page.d.ts +56 -0
- package/dist/plugins/dev-404-page.d.ts.map +1 -0
- package/dist/plugins/dev-browser-logs.d.ts +84 -0
- package/dist/plugins/dev-browser-logs.d.ts.map +1 -0
- package/dist/plugins/dev-error-overlay.d.ts +49 -9
- package/dist/plugins/dev-error-overlay.d.ts.map +1 -1
- package/dist/plugins/dev-error-page.d.ts +58 -0
- package/dist/plugins/dev-error-page.d.ts.map +1 -0
- package/dist/plugins/dev-logs.d.ts +1 -1
- package/dist/plugins/dev-logs.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/dev-terminal-error.d.ts +28 -0
- package/dist/plugins/dev-terminal-error.d.ts.map +1 -0
- 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 +4 -4
- package/dist/plugins/static-build.d.ts.map +1 -1
- package/dist/routing/codegen-shared.d.ts +38 -0
- package/dist/routing/codegen-shared.d.ts.map +1 -0
- package/dist/routing/codegen-types.d.ts +36 -0
- package/dist/routing/codegen-types.d.ts.map +1 -0
- package/dist/routing/codegen.d.ts +2 -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 +2 -0
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +3 -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.map +1 -1
- package/dist/routing/segment-classify.d.ts +46 -0
- package/dist/routing/segment-classify.d.ts.map +1 -0
- package/dist/routing/status-file-lint.d.ts +2 -1
- package/dist/routing/status-file-lint.d.ts.map +1 -1
- package/dist/routing/types.d.ts +16 -4
- package/dist/routing/types.d.ts.map +1 -1
- 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 +139 -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 +32 -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 +78 -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 +4 -0
- 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 +7 -0
- 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 +32 -4
- package/dist/server/als-registry.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/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-page-resolver.d.ts +52 -0
- package/dist/server/deny-page-resolver.d.ts.map +1 -0
- package/dist/server/deny-renderer.d.ts.map +1 -1
- package/dist/server/dev-holding-server.d.ts +52 -0
- package/dist/server/dev-holding-server.d.ts.map +1 -0
- package/dist/server/dev-source-map.d.ts +22 -0
- package/dist/server/dev-source-map.d.ts.map +1 -0
- package/dist/server/dev-warnings.d.ts +1 -21
- package/dist/server/dev-warnings.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-injectors.d.ts +51 -11
- package/dist/server/html-injectors.d.ts.map +1 -1
- package/dist/server/index.d.ts +5 -43
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +195 -2800
- package/dist/server/index.js.map +1 -1
- package/dist/server/internal.d.ts +46 -0
- package/dist/server/internal.d.ts.map +1 -0
- package/dist/server/internal.js +2900 -0
- package/dist/server/internal.js.map +1 -0
- package/dist/server/logger.d.ts +25 -7
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/middleware-runner.d.ts +19 -4
- package/dist/server/middleware-runner.d.ts.map +1 -1
- package/dist/server/node-stream-transforms.d.ts +113 -0
- package/dist/server/node-stream-transforms.d.ts.map +1 -0
- package/dist/server/page-deny-boundary.d.ts +31 -0
- package/dist/server/page-deny-boundary.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.d.ts +52 -10
- package/dist/server/pipeline.d.ts.map +1 -1
- 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 +112 -43
- 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 +16 -2
- package/dist/server/route-matcher.d.ts.map +1 -1
- 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 +48 -5
- package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts +20 -3
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- 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 +14 -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/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 +23 -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/status-code-resolver.d.ts +1 -1
- 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 +4 -4
- package/dist/server/tracing.d.ts.map +1 -1
- package/dist/server/tree-builder.d.ts +22 -19
- package/dist/server/tree-builder.d.ts.map +1 -1
- package/dist/server/types.d.ts +1 -4
- package/dist/server/types.d.ts.map +1 -1
- 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 +1 -1
- package/dist/shims/navigation-client.d.ts.map +1 -1
- package/dist/shims/navigation.d.ts +3 -2
- package/dist/shims/navigation.d.ts.map +1 -1
- package/dist/utils/directive-parser.d.ts +5 -2
- package/dist/utils/directive-parser.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 +51 -16
- package/src/adapters/cloudflare-dev.ts +177 -0
- package/src/adapters/cloudflare-kv-cache.ts +142 -0
- package/src/adapters/cloudflare.ts +342 -28
- package/src/adapters/compress-module.ts +24 -4
- package/src/adapters/nitro.ts +52 -8
- 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 +31 -0
- package/src/cache/timber-cache.ts +24 -20
- package/src/cli.ts +16 -6
- package/src/client/browser-dev.ts +128 -1
- package/src/client/browser-entry/action-dispatch.ts +116 -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 +143 -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 +48 -16
- package/src/client/error-reconstituter.tsx +65 -0
- package/src/client/form.tsx +14 -7
- package/src/client/history.ts +26 -4
- package/src/client/index.ts +65 -38
- package/src/client/internal.ts +57 -0
- package/src/client/link-pending-store.ts +111 -0
- package/src/client/link.tsx +342 -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 +299 -72
- package/src/client/rsc-fetch.ts +97 -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/top-loader.tsx +18 -6
- package/src/client/use-link-status.ts +7 -7
- package/src/client/use-params.ts +7 -5
- 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/codec.ts +49 -0
- package/src/config-types.ts +264 -0
- package/src/config-validation.ts +303 -0
- package/src/content/index.ts +5 -13
- package/src/cookies/define-cookie.ts +78 -25
- package/src/cookies/index.ts +8 -0
- package/src/fonts/bundle.ts +142 -0
- package/src/fonts/css.ts +2 -1
- package/src/fonts/dev-middleware.ts +74 -0
- package/src/fonts/pipeline.ts +275 -0
- package/src/fonts/transform.ts +353 -0
- package/src/fonts/types.ts +50 -1
- package/src/fonts/virtual-modules.ts +159 -0
- package/src/index.ts +314 -355
- package/src/plugin-context.ts +240 -0
- package/src/plugins/adapter-build.ts +9 -3
- package/src/plugins/build-manifest.ts +13 -2
- package/src/plugins/build-report.ts +3 -3
- package/src/plugins/client-chunks.ts +65 -0
- package/src/plugins/content.ts +1 -1
- package/src/plugins/dev-404-page.ts +418 -0
- package/src/plugins/dev-browser-logs.ts +288 -0
- package/src/plugins/dev-error-overlay.ts +286 -42
- package/src/plugins/dev-error-page.ts +536 -0
- package/src/plugins/dev-logs.ts +1 -1
- package/src/plugins/dev-server.ts +146 -19
- package/src/plugins/dev-terminal-error.ts +217 -0
- package/src/plugins/entries.ts +111 -10
- package/src/plugins/fonts.ts +133 -638
- package/src/plugins/mdx.ts +1 -1
- package/src/plugins/routing.ts +213 -31
- package/src/plugins/server-action-exports.ts +1 -1
- package/src/plugins/server-bundle.ts +32 -1
- package/src/plugins/shims.ts +136 -35
- package/src/plugins/static-build.ts +17 -11
- package/src/routing/codegen-shared.ts +74 -0
- package/src/routing/codegen-types.ts +37 -0
- package/src/routing/codegen.ts +112 -173
- package/src/routing/convention-lint.ts +356 -0
- package/src/routing/index.ts +2 -0
- package/src/routing/link-codegen.ts +262 -0
- package/src/routing/scanner.ts +93 -23
- package/src/routing/segment-classify.ts +89 -0
- package/src/routing/status-file-lint.ts +3 -2
- package/src/routing/types.ts +17 -4
- 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 +482 -0
- package/src/search-params/index.ts +14 -20
- package/src/search-params/registry.ts +2 -2
- package/src/search-params/wrappers.ts +85 -0
- package/src/segment-params/define.ts +279 -0
- package/src/segment-params/index.ts +9 -0
- package/src/server/access-gate.tsx +70 -29
- package/src/server/action-client.ts +88 -15
- package/src/server/action-encryption.ts +144 -0
- package/src/server/action-handler.ts +53 -6
- package/src/server/actions.ts +10 -9
- package/src/server/als-registry.ts +34 -6
- package/src/server/build-manifest.ts +10 -4
- package/src/server/compress.ts +25 -7
- package/src/server/debug.ts +1 -1
- package/src/server/default-logger.ts +99 -0
- package/src/server/deny-page-resolver.ts +154 -0
- package/src/server/deny-renderer.ts +24 -38
- package/src/server/dev-holding-server.ts +185 -0
- package/src/server/dev-source-map.ts +31 -0
- package/src/server/dev-warnings.ts +4 -49
- 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-injectors.ts +280 -120
- package/src/server/index.ts +25 -177
- package/src/server/internal.ts +169 -0
- package/src/server/logger.ts +44 -36
- package/src/server/middleware-runner.ts +31 -4
- package/src/server/node-stream-transforms.ts +509 -0
- package/src/server/page-deny-boundary.tsx +56 -0
- package/src/server/pipeline-interception.ts +17 -16
- package/src/server/pipeline-metadata.ts +13 -0
- package/src/server/pipeline.ts +261 -66
- package/src/server/primitives.ts +111 -28
- package/src/server/render-timeout.ts +108 -0
- package/src/server/request-context.ts +293 -132
- package/src/server/route-element-builder.ts +283 -191
- package/src/server/route-handler.ts +24 -4
- package/src/server/route-matcher.ts +31 -20
- package/src/server/rsc-entry/api-handler.ts +15 -16
- package/src/server/rsc-entry/error-renderer.ts +305 -89
- package/src/server/rsc-entry/helpers.ts +134 -5
- package/src/server/rsc-entry/index.ts +304 -111
- package/src/server/rsc-entry/rsc-payload.ts +65 -18
- package/src/server/rsc-entry/rsc-stream.ts +81 -13
- package/src/server/rsc-entry/ssr-bridge.ts +14 -5
- package/src/server/rsc-entry/ssr-renderer.ts +171 -38
- 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 +244 -229
- package/src/server/ssr-entry.ts +215 -32
- package/src/server/ssr-render.ts +289 -67
- package/src/server/ssr-wrappers.tsx +139 -0
- package/src/server/status-code-resolver.ts +1 -1
- package/src/server/stream-utils.ts +213 -0
- package/src/server/tracing.ts +20 -9
- package/src/server/tree-builder.ts +92 -58
- package/src/server/types.ts +3 -6
- 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 +1 -1
- package/src/shims/navigation.ts +7 -2
- package/src/utils/directive-parser.ts +5 -2
- package/src/utils/state-machine.ts +111 -0
- package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
- package/dist/_chunks/debug-gwlJkDuf.js.map +0 -1
- package/dist/_chunks/format-DviM89f0.js.map +0 -1
- 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/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/cookies/index.js.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/dynamic-transform.d.ts +0 -72
- package/dist/plugins/dynamic-transform.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/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/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/dynamic-transform.ts +0 -161
- 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/prerender.ts +0 -139
- package/src/server/response-cache.ts +0 -410
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* createSearchParams — factory for SearchParamsDefinition<T>.
|
|
3
|
-
*
|
|
4
|
-
* Creates a typed, composable definition for a route's search parameters.
|
|
5
|
-
* Supports codec protocol, URL key aliasing, default-omission serialization,
|
|
6
|
-
* and composition via .extend() / .pick().
|
|
7
|
-
*
|
|
8
|
-
* Design doc: design/09-typescript.md §"Typed searchParams — search-params.ts"
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { useQueryStates as clientUseQueryStates } from '#/client/use-query-states.js';
|
|
12
|
-
|
|
13
|
-
// ---------------------------------------------------------------------------
|
|
14
|
-
// Types
|
|
15
|
-
// ---------------------------------------------------------------------------
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* A codec that converts between URL string values and typed values.
|
|
19
|
-
*
|
|
20
|
-
* nuqs parsers (parseAsInteger, parseAsString, etc.) implement this
|
|
21
|
-
* interface natively — no adapter needed.
|
|
22
|
-
*/
|
|
23
|
-
export interface SearchParamCodec<T> {
|
|
24
|
-
/** URL string → typed value. Receives undefined when the param is absent. */
|
|
25
|
-
parse(value: string | string[] | undefined): T;
|
|
26
|
-
/** Typed value → URL string. Return null to omit from URL. */
|
|
27
|
-
serialize(value: T): string | null;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/** Infer the output type of a codec. */
|
|
31
|
-
export type InferCodec<C> = C extends SearchParamCodec<infer T> ? T : never;
|
|
32
|
-
|
|
33
|
-
/** Map of property names to codecs. */
|
|
34
|
-
export type CodecMap<T extends Record<string, unknown>> = {
|
|
35
|
-
[K in keyof T]: SearchParamCodec<T[K]>;
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
/** Options for useQueryStates setter. */
|
|
39
|
-
export interface SetParamsOptions {
|
|
40
|
-
/** Update URL without server roundtrip (default: false). */
|
|
41
|
-
shallow?: boolean;
|
|
42
|
-
/** Scroll to top after update (default: true). */
|
|
43
|
-
scroll?: boolean;
|
|
44
|
-
/** 'push' (default) or 'replace' for history state. */
|
|
45
|
-
history?: 'push' | 'replace';
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/** Setter function returned by useQueryStates. */
|
|
49
|
-
export type SetParams<T> = (values: Partial<T>, options?: SetParamsOptions) => void;
|
|
50
|
-
|
|
51
|
-
/** Options for useQueryStates hook. */
|
|
52
|
-
export interface QueryStatesOptions {
|
|
53
|
-
/** Update URL without server roundtrip (default: false). */
|
|
54
|
-
shallow?: boolean;
|
|
55
|
-
/** Scroll to top after update (default: true). */
|
|
56
|
-
scroll?: boolean;
|
|
57
|
-
/** 'push' (default) or 'replace' for history state. */
|
|
58
|
-
history?: 'push' | 'replace';
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/** Options for createSearchParams and .extend(). */
|
|
62
|
-
export interface SearchParamsOptions<Keys extends string = string> {
|
|
63
|
-
/** Map property names to different URL query parameter keys. */
|
|
64
|
-
urlKeys?: Partial<Record<Keys, string>>;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* A fully typed, composable search params definition.
|
|
69
|
-
*
|
|
70
|
-
* Returned by createSearchParams(). Carries a phantom _type property
|
|
71
|
-
* for build-time type extraction.
|
|
72
|
-
*/
|
|
73
|
-
export interface SearchParamsDefinition<T extends Record<string, unknown>> {
|
|
74
|
-
/** Parse raw URL search params into typed values. */
|
|
75
|
-
parse(raw: URLSearchParams | Record<string, string | string[] | undefined>): T;
|
|
76
|
-
|
|
77
|
-
/** Client hook — reads current URL params and returns typed values + setter. */
|
|
78
|
-
useQueryStates(options?: QueryStatesOptions): [T, SetParams<T>];
|
|
79
|
-
|
|
80
|
-
/** Extend with additional codecs. Key collisions are a type error. */
|
|
81
|
-
extend<U extends Record<string, SearchParamCodec<unknown>>>(
|
|
82
|
-
codecs: U,
|
|
83
|
-
options?: SearchParamsOptions<string>
|
|
84
|
-
): SearchParamsDefinition<T & { [K in keyof U]: InferCodec<U[K]> }>;
|
|
85
|
-
|
|
86
|
-
/** Pick a subset of keys. Preserves codecs and aliases. */
|
|
87
|
-
pick<K extends keyof T & string>(...keys: K[]): SearchParamsDefinition<Pick<T, K>>;
|
|
88
|
-
|
|
89
|
-
/** Serialize values to a query string (no leading '?'), omitting defaults. */
|
|
90
|
-
serialize(values: Partial<T>): string;
|
|
91
|
-
|
|
92
|
-
/** Build a full path with query string, omitting defaults. */
|
|
93
|
-
href(pathname: string, values: Partial<T>): string;
|
|
94
|
-
|
|
95
|
-
/** Build a URLSearchParams instance, omitting defaults. */
|
|
96
|
-
toSearchParams(values: Partial<T>): URLSearchParams;
|
|
97
|
-
|
|
98
|
-
/** Read-only codec map for spreading into .extend(). Aliases NOT carried. */
|
|
99
|
-
codecs: { [K in keyof T]: SearchParamCodec<T[K]> };
|
|
100
|
-
|
|
101
|
-
/** Read-only URL key alias map. Maps property names to URL query parameter keys. */
|
|
102
|
-
readonly urlKeys: Readonly<Record<string, string>>;
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Phantom property for build-time type extraction.
|
|
106
|
-
* Never set at runtime — exists only in the type system.
|
|
107
|
-
*/
|
|
108
|
-
readonly _type?: T;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// ---------------------------------------------------------------------------
|
|
112
|
-
// Internal helpers
|
|
113
|
-
// ---------------------------------------------------------------------------
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Convert URLSearchParams or a plain record to a normalized record
|
|
117
|
-
* where repeated keys produce arrays.
|
|
118
|
-
*/
|
|
119
|
-
function normalizeRaw(
|
|
120
|
-
raw: URLSearchParams | Record<string, string | string[] | undefined>
|
|
121
|
-
): Record<string, string | string[] | undefined> {
|
|
122
|
-
if (raw instanceof URLSearchParams) {
|
|
123
|
-
const result: Record<string, string | string[] | undefined> = {};
|
|
124
|
-
for (const key of new Set(raw.keys())) {
|
|
125
|
-
const values = raw.getAll(key);
|
|
126
|
-
result[key] = values.length === 1 ? values[0] : values;
|
|
127
|
-
}
|
|
128
|
-
return result;
|
|
129
|
-
}
|
|
130
|
-
return raw;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Compute the serialized default value for a codec. Used for
|
|
135
|
-
* default-omission: when serialize(value) === serialize(parse(undefined)),
|
|
136
|
-
* the field is omitted from the URL.
|
|
137
|
-
*/
|
|
138
|
-
function getDefaultSerialized<T>(codec: SearchParamCodec<T>): string | null {
|
|
139
|
-
return codec.serialize(codec.parse(undefined));
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// ---------------------------------------------------------------------------
|
|
143
|
-
// Factory
|
|
144
|
-
// ---------------------------------------------------------------------------
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Create a SearchParamsDefinition from a codec map and optional URL key aliases.
|
|
148
|
-
*
|
|
149
|
-
* ```ts
|
|
150
|
-
* import { createSearchParams, fromSchema } from '@timber-js/app/search-params'
|
|
151
|
-
* import { z } from 'zod/v4'
|
|
152
|
-
*
|
|
153
|
-
* export default createSearchParams({
|
|
154
|
-
* page: fromSchema(z.coerce.number().int().min(1).default(1)),
|
|
155
|
-
* q: { parse: (v) => v ?? null, serialize: (v) => v },
|
|
156
|
-
* }, {
|
|
157
|
-
* urlKeys: { q: 'search' },
|
|
158
|
-
* })
|
|
159
|
-
* ```
|
|
160
|
-
*/
|
|
161
|
-
export function createSearchParams<C extends Record<string, SearchParamCodec<unknown>>>(
|
|
162
|
-
codecs: C,
|
|
163
|
-
options?: SearchParamsOptions<Extract<keyof C, string>>
|
|
164
|
-
): SearchParamsDefinition<{ [K in keyof C]: InferCodec<C[K]> }> {
|
|
165
|
-
type T = { [K in keyof C]: InferCodec<C[K]> };
|
|
166
|
-
const urlKeys: Record<string, string> = {};
|
|
167
|
-
if (options?.urlKeys) {
|
|
168
|
-
for (const [k, v] of Object.entries(options.urlKeys)) {
|
|
169
|
-
if (v !== undefined) urlKeys[k] = v;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
return buildDefinition<T>(codecs as unknown as CodecMap<T>, urlKeys);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Internal: build a SearchParamsDefinition from a typed codec map and url keys.
|
|
178
|
-
*/
|
|
179
|
-
function buildDefinition<T extends Record<string, unknown>>(
|
|
180
|
-
codecMap: CodecMap<T>,
|
|
181
|
-
urlKeys: Record<string, string>
|
|
182
|
-
): SearchParamsDefinition<T> {
|
|
183
|
-
// Pre-compute default serialized values for omission check
|
|
184
|
-
const defaultSerialized: Record<string, string | null> = {};
|
|
185
|
-
for (const key of Object.keys(codecMap)) {
|
|
186
|
-
defaultSerialized[key] = getDefaultSerialized(codecMap[key as keyof T]);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
function getUrlKey(prop: string): string {
|
|
190
|
-
return urlKeys[prop] ?? prop;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
// ---- parse ----
|
|
194
|
-
function parse(raw: URLSearchParams | Record<string, string | string[] | undefined>): T {
|
|
195
|
-
const normalized = normalizeRaw(raw);
|
|
196
|
-
const result: Record<string, unknown> = {};
|
|
197
|
-
|
|
198
|
-
for (const prop of Object.keys(codecMap)) {
|
|
199
|
-
const urlKey = getUrlKey(prop);
|
|
200
|
-
const rawValue = normalized[urlKey];
|
|
201
|
-
result[prop] = (codecMap[prop as keyof T] as SearchParamCodec<unknown>).parse(rawValue);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
return result as T;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// ---- serialize ----
|
|
208
|
-
function serialize(values: Partial<T>): string {
|
|
209
|
-
const parts: string[] = [];
|
|
210
|
-
|
|
211
|
-
for (const prop of Object.keys(codecMap)) {
|
|
212
|
-
if (!(prop in values)) continue;
|
|
213
|
-
const codec = codecMap[prop as keyof T] as SearchParamCodec<unknown>;
|
|
214
|
-
const serialized = codec.serialize(values[prop as keyof T] as unknown);
|
|
215
|
-
|
|
216
|
-
// Omit if serialized value matches the default
|
|
217
|
-
if (serialized === defaultSerialized[prop]) continue;
|
|
218
|
-
if (serialized === null) continue;
|
|
219
|
-
|
|
220
|
-
parts.push(`${encodeURIComponent(getUrlKey(prop))}=${encodeURIComponent(serialized)}`);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
return parts.join('&');
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
// ---- href ----
|
|
227
|
-
function href(pathname: string, values: Partial<T>): string {
|
|
228
|
-
const qs = serialize(values);
|
|
229
|
-
return qs ? `${pathname}?${qs}` : pathname;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
// ---- toSearchParams ----
|
|
233
|
-
function toSearchParams(values: Partial<T>): URLSearchParams {
|
|
234
|
-
const usp = new URLSearchParams();
|
|
235
|
-
|
|
236
|
-
for (const prop of Object.keys(codecMap)) {
|
|
237
|
-
if (!(prop in values)) continue;
|
|
238
|
-
const codec = codecMap[prop as keyof T] as SearchParamCodec<unknown>;
|
|
239
|
-
const serialized = codec.serialize(values[prop as keyof T] as unknown);
|
|
240
|
-
|
|
241
|
-
if (serialized === defaultSerialized[prop]) continue;
|
|
242
|
-
if (serialized === null) continue;
|
|
243
|
-
|
|
244
|
-
usp.set(getUrlKey(prop), serialized);
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
return usp;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
// ---- extend ----
|
|
251
|
-
function extend<U extends Record<string, SearchParamCodec<unknown>>>(
|
|
252
|
-
newCodecs: U,
|
|
253
|
-
extendOptions?: SearchParamsOptions<string>
|
|
254
|
-
): SearchParamsDefinition<T & { [K in keyof U]: InferCodec<U[K]> }> {
|
|
255
|
-
type Combined = T & { [K in keyof U]: InferCodec<U[K]> };
|
|
256
|
-
|
|
257
|
-
const combinedCodecs = {
|
|
258
|
-
...codecMap,
|
|
259
|
-
...newCodecs,
|
|
260
|
-
} as unknown as CodecMap<Combined>;
|
|
261
|
-
|
|
262
|
-
// Merge URL keys: extend options override, but do NOT inherit from base
|
|
263
|
-
// (aliases are route-level, not carried through .codecs)
|
|
264
|
-
const combinedUrlKeys: Record<string, string> = { ...urlKeys };
|
|
265
|
-
if (extendOptions?.urlKeys) {
|
|
266
|
-
for (const [k, v] of Object.entries(extendOptions.urlKeys)) {
|
|
267
|
-
if (v !== undefined) combinedUrlKeys[k] = v;
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
return buildDefinition<Combined>(combinedCodecs, combinedUrlKeys);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
// ---- pick ----
|
|
275
|
-
function pick<K extends keyof T & string>(...keys: K[]): SearchParamsDefinition<Pick<T, K>> {
|
|
276
|
-
const pickedCodecs: Record<string, SearchParamCodec<unknown>> = {};
|
|
277
|
-
const pickedUrlKeys: Record<string, string> = {};
|
|
278
|
-
|
|
279
|
-
for (const key of keys) {
|
|
280
|
-
pickedCodecs[key] = codecMap[key] as SearchParamCodec<unknown>;
|
|
281
|
-
if (key in urlKeys) {
|
|
282
|
-
pickedUrlKeys[key] = urlKeys[key];
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
return buildDefinition<Pick<T, K>>(
|
|
287
|
-
pickedCodecs as unknown as CodecMap<Pick<T, K>>,
|
|
288
|
-
pickedUrlKeys
|
|
289
|
-
);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
// ---- useQueryStates ----
|
|
293
|
-
// Delegates to the 'use client' implementation from use-query-states.ts.
|
|
294
|
-
//
|
|
295
|
-
// In the RSC environment: use-query-states.ts is transformed by the RSC
|
|
296
|
-
// plugin into a client reference proxy. Calling it throws — correct,
|
|
297
|
-
// because hooks can't run during server component rendering.
|
|
298
|
-
// In SSR: use-query-states.ts is the real nuqs-backed function. Hooks
|
|
299
|
-
// work during SSR's renderToReadableStream, so this works correctly.
|
|
300
|
-
// On the client: same as SSR — the real function is available.
|
|
301
|
-
function useQueryStates(options?: QueryStatesOptions): [T, SetParams<T>] {
|
|
302
|
-
return clientUseQueryStates(codecMap, options, Object.freeze({ ...urlKeys })) as [
|
|
303
|
-
T,
|
|
304
|
-
SetParams<T>,
|
|
305
|
-
];
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
const definition: SearchParamsDefinition<T> = {
|
|
309
|
-
parse,
|
|
310
|
-
useQueryStates,
|
|
311
|
-
extend,
|
|
312
|
-
pick,
|
|
313
|
-
serialize,
|
|
314
|
-
href,
|
|
315
|
-
toSearchParams,
|
|
316
|
-
codecs: codecMap,
|
|
317
|
-
urlKeys: Object.freeze({ ...urlKeys }),
|
|
318
|
-
};
|
|
319
|
-
|
|
320
|
-
return definition;
|
|
321
|
-
}
|
package/src/server/prerender.ts
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pre-rendering types and utilities.
|
|
3
|
-
*
|
|
4
|
-
* A `prerender.ts` file in a route segment signals the framework to
|
|
5
|
-
* pre-render the route's shell at build time. This module defines the
|
|
6
|
-
* types that a user exports from `prerender.ts` and utilities for
|
|
7
|
-
* loading and validating those exports.
|
|
8
|
-
*
|
|
9
|
-
* Design doc: design/15-future-prerendering.md
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { parseCacheLife } from '#/plugins/cache-transform.js';
|
|
13
|
-
|
|
14
|
-
// ---------------------------------------------------------------------------
|
|
15
|
-
// Types — user-facing exports from prerender.ts
|
|
16
|
-
// ---------------------------------------------------------------------------
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* The shape of a prerender.ts module's exports.
|
|
20
|
-
*
|
|
21
|
-
* ```ts
|
|
22
|
-
* // app/docs/[slug]/prerender.ts
|
|
23
|
-
* export async function generateParams() {
|
|
24
|
-
* return docs.map(d => ({ slug: d.slug }))
|
|
25
|
-
* }
|
|
26
|
-
* export const ttl = '1h'
|
|
27
|
-
* export const tags = ['docs']
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export interface PrerenderConfig {
|
|
31
|
-
/**
|
|
32
|
-
* Generate the set of params to pre-render at build time.
|
|
33
|
-
* Required for dynamic segments (`[param]`).
|
|
34
|
-
* Optional for static segments (the single URL is pre-rendered automatically).
|
|
35
|
-
*/
|
|
36
|
-
generateParams?: () => Promise<Record<string, string>[]> | Record<string, string>[];
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* How long the pre-rendered shell is considered fresh.
|
|
40
|
-
* Accepts duration strings ('30s', '5m', '1h', '2d', '1w') or seconds as a number.
|
|
41
|
-
* Default: Infinity (cache until explicit invalidation).
|
|
42
|
-
*/
|
|
43
|
-
ttl?: string | number;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Invalidation tags. Calling `revalidateTag('docs')` purges all
|
|
47
|
-
* pre-rendered shells with that tag.
|
|
48
|
-
*/
|
|
49
|
-
tags?: string[];
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Fallback strategy for dynamic routes without `generateParams`.
|
|
53
|
-
* Only valid in `output: 'static'` mode.
|
|
54
|
-
* - `'shell'`: emit a single pre-rendered shell that serves as client-side fallback
|
|
55
|
-
*/
|
|
56
|
-
fallback?: 'shell';
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// ---------------------------------------------------------------------------
|
|
60
|
-
// Parsed prerender config — framework-internal, with TTL resolved to seconds
|
|
61
|
-
// ---------------------------------------------------------------------------
|
|
62
|
-
|
|
63
|
-
export interface ResolvedPrerenderConfig {
|
|
64
|
-
/** TTL in seconds. Infinity if not set. */
|
|
65
|
-
ttlSeconds: number;
|
|
66
|
-
/** Invalidation tags */
|
|
67
|
-
tags: string[];
|
|
68
|
-
/** The generateParams function, if provided */
|
|
69
|
-
generateParams?: () => Promise<Record<string, string>[]> | Record<string, string>[];
|
|
70
|
-
/** Fallback strategy */
|
|
71
|
-
fallback?: 'shell';
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Resolve raw prerender.ts exports into a normalized config.
|
|
76
|
-
*
|
|
77
|
-
* Validates:
|
|
78
|
-
* - `ttl` is a valid duration string or number
|
|
79
|
-
* - `tags` is an array of strings
|
|
80
|
-
* - `fallback` is 'shell' or undefined
|
|
81
|
-
*/
|
|
82
|
-
export function resolvePrerenderConfig(raw: PrerenderConfig): ResolvedPrerenderConfig {
|
|
83
|
-
const ttlSeconds = raw.ttl != null ? parseCacheLife(raw.ttl) : Infinity;
|
|
84
|
-
|
|
85
|
-
const tags = raw.tags ?? [];
|
|
86
|
-
if (!Array.isArray(tags) || tags.some((t) => typeof t !== 'string')) {
|
|
87
|
-
throw new Error(
|
|
88
|
-
`prerender.ts: tags must be an array of strings. Got: ${JSON.stringify(raw.tags)}`
|
|
89
|
-
);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
if (raw.fallback != null && raw.fallback !== 'shell') {
|
|
93
|
-
throw new Error(
|
|
94
|
-
`prerender.ts: fallback must be 'shell' or omitted. Got: ${JSON.stringify(raw.fallback)}`
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return {
|
|
99
|
-
ttlSeconds,
|
|
100
|
-
tags,
|
|
101
|
-
generateParams: raw.generateParams,
|
|
102
|
-
fallback: raw.fallback,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// ---------------------------------------------------------------------------
|
|
107
|
-
// Build diagnostics
|
|
108
|
-
// ---------------------------------------------------------------------------
|
|
109
|
-
|
|
110
|
-
export interface PrerenderDiagnostic {
|
|
111
|
-
type: 'DYNAMIC_SEGMENT_NO_PARAMS';
|
|
112
|
-
segmentPath: string;
|
|
113
|
-
message: string;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Check if a dynamic segment has `generateParams` when prerender.ts is present.
|
|
118
|
-
* If not, emit a diagnostic — the route falls back to SSR.
|
|
119
|
-
*/
|
|
120
|
-
export function checkDynamicSegmentParams(
|
|
121
|
-
segmentPath: string,
|
|
122
|
-
isDynamic: boolean,
|
|
123
|
-
hasGenerateParams: boolean,
|
|
124
|
-
fallback?: 'shell'
|
|
125
|
-
): PrerenderDiagnostic | null {
|
|
126
|
-
if (!isDynamic) return null;
|
|
127
|
-
if (hasGenerateParams) return null;
|
|
128
|
-
if (fallback === 'shell') return null;
|
|
129
|
-
|
|
130
|
-
return {
|
|
131
|
-
type: 'DYNAMIC_SEGMENT_NO_PARAMS',
|
|
132
|
-
segmentPath,
|
|
133
|
-
message:
|
|
134
|
-
`Dynamic segment "${segmentPath}" has prerender.ts but no generateParams(). ` +
|
|
135
|
-
`The route will fall back to SSR at request time. ` +
|
|
136
|
-
`Add generateParams() to pre-render specific param values, ` +
|
|
137
|
-
`or set fallback: 'shell' (static mode only) for a client-side fallback shell.`,
|
|
138
|
-
};
|
|
139
|
-
}
|