@timber-js/app 0.2.0-alpha.7 → 0.2.0-alpha.71
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/LICENSE +8 -0
- package/dist/_chunks/{als-registry-B7DbZ2hS.js → als-registry-BJARkOcu.js} +1 -1
- package/dist/_chunks/als-registry-BJARkOcu.js.map +1 -0
- package/dist/_chunks/chunk-DYhsFzuS.js +33 -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-CGuYoRHU.js +199 -0
- package/dist/_chunks/define-CGuYoRHU.js.map +1 -0
- package/dist/_chunks/define-Dz1bqwaS.js +106 -0
- package/dist/_chunks/define-Dz1bqwaS.js.map +1 -0
- package/dist/_chunks/define-cookie-B5mewxwM.js +93 -0
- package/dist/_chunks/define-cookie-B5mewxwM.js.map +1 -0
- package/dist/_chunks/error-boundary-D9hzsveV.js +216 -0
- package/dist/_chunks/error-boundary-D9hzsveV.js.map +1 -0
- package/dist/_chunks/{format-DviM89f0.js → format-Rn922VH2.js} +3 -20
- package/dist/_chunks/format-Rn922VH2.js.map +1 -0
- package/dist/_chunks/{tracing-Cwn7697K.js → handler-store-BVePM7hp.js} +68 -3
- package/dist/_chunks/handler-store-BVePM7hp.js.map +1 -0
- package/dist/_chunks/{interception-BOoWmLUA.js → interception-CEdHHviP.js} +171 -97
- package/dist/_chunks/interception-CEdHHviP.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-DIkVh_jG.js → request-context-CywiO4jV.js} +181 -69
- package/dist/_chunks/request-context-CywiO4jV.js.map +1 -0
- package/dist/_chunks/schema-bridge-C4SwjCQD.js +86 -0
- package/dist/_chunks/schema-bridge-C4SwjCQD.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-hzuJ048X.js +72 -0
- package/dist/_chunks/segment-context-hzuJ048X.js.map +1 -0
- package/dist/_chunks/stale-reload-BLUC_Pl_.js +64 -0
- package/dist/_chunks/stale-reload-BLUC_Pl_.js.map +1 -0
- package/dist/_chunks/{use-query-states-D5KaffOK.js → use-query-states-DAhgj8Gx.js} +1 -1
- package/dist/_chunks/use-query-states-DAhgj8Gx.js.map +1 -0
- package/dist/_chunks/wrappers-LZbghvn0.js +63 -0
- package/dist/_chunks/wrappers-LZbghvn0.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.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/fast-hash.d.ts +22 -0
- package/dist/cache/fast-hash.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 +7 -5
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +111 -73
- 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/timber-cache.d.ts +1 -1
- package/dist/cache/timber-cache.d.ts.map +1 -1
- 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 +1 -125
- 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 +2 -2
- 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 +6 -5
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +537 -166
- package/dist/client/index.js.map +1 -1
- package/dist/client/link-pending-store.d.ts +78 -0
- package/dist/client/link-pending-store.d.ts.map +1 -0
- package/dist/client/link.d.ts +90 -32
- 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.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-context.d.ts +1 -1
- package/dist/client/segment-context.d.ts.map +1 -1
- package/dist/client/segment-merger.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 +3 -3
- package/dist/client/top-loader.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-query-states.d.ts +1 -1
- package/dist/client/use-query-states.d.ts.map +1 -1
- package/dist/codec.d.ts +23 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +2 -0
- package/dist/cookies/define-cookie.d.ts +35 -14
- package/dist/cookies/define-cookie.d.ts.map +1 -1
- package/dist/cookies/index.d.ts +2 -0
- package/dist/cookies/index.d.ts.map +1 -1
- package/dist/cookies/index.js +3 -84
- package/dist/fonts/css.d.ts +1 -0
- package/dist/fonts/css.d.ts.map +1 -1
- package/dist/index.d.ts +154 -38
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12092 -11916
- package/dist/index.js.map +1 -1
- 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-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 +26 -1
- package/dist/plugins/dev-error-overlay.d.ts.map +1 -1
- 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/entries.d.ts +1 -1
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/fonts.d.ts +19 -5
- 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 +1 -1
- package/dist/plugins/static-build.d.ts.map +1 -1
- package/dist/routing/codegen.d.ts +2 -2
- package/dist/routing/codegen.d.ts.map +1 -1
- 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/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 -6
- package/dist/search-params/index.d.ts.map +1 -1
- package/dist/search-params/index.js +4 -474
- package/dist/search-params/registry.d.ts +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 +7 -0
- package/dist/segment-params/index.d.ts.map +1 -0
- package/dist/segment-params/index.js +4 -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 +12 -1
- 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.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-warnings.d.ts +0 -14
- 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 +4 -3
- 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 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2176 -1663
- package/dist/server/index.js.map +1 -1
- 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 +32 -10
- package/dist/server/pipeline.d.ts.map +1 -1
- package/dist/server/primitives.d.ts +30 -3
- 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 +76 -37
- 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 +9 -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 +8 -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 +10 -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/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 +22 -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 +10 -0
- 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/server/waituntil-bridge.d.ts.map +1 -1
- 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/navigation-client.d.ts +1 -1
- package/dist/shims/navigation-client.d.ts.map +1 -1
- package/dist/shims/navigation.d.ts +1 -1
- 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 +37 -17
- package/src/adapters/cloudflare-dev.ts +177 -0
- package/src/adapters/cloudflare.ts +342 -28
- package/src/adapters/compress-module.ts +24 -4
- package/src/adapters/nitro.ts +58 -9
- package/src/adapters/wrangler.d.ts +7 -0
- package/src/cache/cache-api.ts +38 -0
- package/src/cache/fast-hash.ts +34 -0
- package/src/cache/handler-store.ts +68 -0
- package/src/cache/index.ts +9 -5
- package/src/cache/singleflight.ts +62 -4
- package/src/cache/timber-cache.ts +40 -29
- package/src/cli.ts +0 -0
- package/src/client/browser-entry.ts +314 -142
- package/src/client/error-boundary.tsx +48 -16
- package/src/client/error-reconstituter.tsx +65 -0
- package/src/client/form.tsx +2 -2
- package/src/client/history.ts +26 -4
- package/src/client/index.ts +13 -4
- package/src/client/link-pending-store.ts +136 -0
- package/src/client/link.tsx +346 -105
- 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 +27 -6
- package/src/client/navigation-root.tsx +346 -0
- package/src/client/nuqs-adapter.tsx +16 -3
- package/src/client/router.ts +302 -77
- package/src/client/rsc-fetch.ts +93 -5
- package/src/client/segment-cache.ts +1 -1
- package/src/client/segment-context.ts +6 -1
- package/src/client/segment-merger.ts +2 -8
- package/src/client/segment-outlet.tsx +86 -0
- package/src/client/ssr-data.ts +13 -5
- package/src/client/stale-reload.ts +73 -6
- package/src/client/top-loader.tsx +22 -13
- package/src/client/use-navigation-pending.ts +1 -1
- package/src/client/use-params.ts +7 -5
- package/src/client/use-query-states.ts +2 -2
- package/src/codec.ts +34 -0
- package/src/cookies/define-cookie.ts +72 -21
- package/src/cookies/index.ts +7 -0
- package/src/fonts/css.ts +2 -1
- package/src/index.ts +328 -92
- package/src/plugins/adapter-build.ts +8 -2
- 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-browser-logs.ts +288 -0
- package/src/plugins/dev-error-overlay.ts +70 -1
- package/src/plugins/dev-logs.ts +1 -1
- package/src/plugins/dev-server.ts +55 -9
- package/src/plugins/entries.ts +70 -9
- package/src/plugins/fonts.ts +167 -61
- package/src/plugins/mdx.ts +1 -1
- package/src/plugins/routing.ts +57 -17
- package/src/plugins/server-action-exports.ts +1 -1
- package/src/plugins/server-bundle.ts +32 -1
- package/src/plugins/shims.ts +76 -33
- package/src/plugins/static-build.ts +10 -6
- package/src/routing/codegen.ts +165 -105
- package/src/routing/index.ts +2 -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 +13 -19
- package/src/search-params/registry.ts +1 -1
- package/src/search-params/wrappers.ts +85 -0
- package/src/segment-params/define.ts +279 -0
- package/src/segment-params/index.ts +28 -0
- package/src/server/access-gate.tsx +70 -29
- package/src/server/action-client.ts +28 -3
- package/src/server/action-encryption.ts +144 -0
- package/src/server/action-handler.ts +20 -3
- package/src/server/actions.ts +10 -9
- package/src/server/als-registry.ts +32 -4
- 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-warnings.ts +2 -28
- package/src/server/early-hints.ts +36 -15
- package/src/server/error-boundary-wrapper.ts +74 -22
- package/src/server/fallback-error.ts +31 -15
- 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 +277 -117
- package/src/server/index.ts +9 -5
- 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 +195 -51
- package/src/server/primitives.ts +47 -5
- package/src/server/render-timeout.ts +108 -0
- package/src/server/request-context.ts +240 -117
- package/src/server/route-element-builder.ts +284 -197
- package/src/server/route-handler.ts +24 -4
- package/src/server/route-matcher.ts +24 -20
- package/src/server/rsc-entry/api-handler.ts +15 -16
- package/src/server/rsc-entry/error-renderer.ts +300 -89
- package/src/server/rsc-entry/helpers.ts +134 -5
- package/src/server/rsc-entry/index.ts +202 -113
- package/src/server/rsc-entry/rsc-payload.ts +100 -21
- package/src/server/rsc-entry/rsc-stream.ts +74 -18
- package/src/server/rsc-entry/ssr-bridge.ts +14 -5
- package/src/server/rsc-entry/ssr-renderer.ts +173 -40
- package/src/server/safe-load.ts +60 -0
- package/src/server/sitemap-generator.ts +338 -0
- package/src/server/sitemap-handler.ts +126 -0
- package/src/server/slot-resolver.ts +243 -228
- package/src/server/ssr-entry.ts +211 -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 +37 -3
- 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/server/waituntil-bridge.ts +4 -1
- 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/navigation-client.ts +1 -1
- package/src/shims/navigation.ts +2 -1
- 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.map +0 -1
- package/dist/_chunks/ssr-data-MjmprTmO.js +0 -88
- package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
- package/dist/_chunks/tracing-Cwn7697K.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/error-boundary.js.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/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/search-params/index.js.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 -53
- package/dist/server/response-cache.d.ts.map +0 -1
- package/src/cache/register-cached-function.ts +0 -99
- package/src/client/link-status-provider.tsx +0 -30
- package/src/client/transition-root.tsx +0 -160
- 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 -277
|
@@ -2,28 +2,35 @@
|
|
|
2
2
|
* defineCookie — typed cookie definitions.
|
|
3
3
|
*
|
|
4
4
|
* Bundles name + codec + options into a reusable CookieDefinition<T>
|
|
5
|
-
* with .
|
|
5
|
+
* with async .getCookie(), .setCookie(), .deleteCookie() server methods
|
|
6
|
+
* and a sync .useCookie() client hook.
|
|
7
|
+
*
|
|
8
|
+
* Server methods are async to future-proof the API for v2 features
|
|
9
|
+
* (signed cookies via crypto.subtle, encrypted cookies, external stores).
|
|
6
10
|
*
|
|
7
11
|
* Reuses the SearchParamCodec protocol via fromSchema() bridge.
|
|
8
12
|
* Validation on read returns the codec default (never throws).
|
|
9
13
|
*
|
|
14
|
+
* IMPORTANT: This module must NOT have top-level value imports from either
|
|
15
|
+
* server or client modules. Server methods lazy-import request-context;
|
|
16
|
+
* useCookie() lazy-imports use-cookie. This ensures:
|
|
17
|
+
* - Client bundles don't pull in ALS/server code
|
|
18
|
+
* - RSC bundles don't pull in useSyncExternalStore/client code
|
|
19
|
+
* - Tree-shaking is not required for correctness
|
|
20
|
+
*
|
|
10
21
|
* See design/29-cookies.md §"Typed Cookies with Schema Validation"
|
|
11
22
|
*/
|
|
12
|
-
import type { CookieOptions } from '
|
|
23
|
+
import type { CookieOptions } from '../server/request-context.js';
|
|
24
|
+
import type { Codec } from '../codec.js';
|
|
13
25
|
/**
|
|
14
26
|
* A codec that converts between string cookie values and typed values.
|
|
15
|
-
*
|
|
27
|
+
* Type alias for the shared Codec<T> protocol.
|
|
16
28
|
*/
|
|
17
|
-
export
|
|
18
|
-
parse(value: string | string[] | undefined): T;
|
|
19
|
-
serialize(value: T): string | null;
|
|
20
|
-
}
|
|
29
|
+
export type CookieCodec<T> = Codec<T>;
|
|
21
30
|
/** Options for defineCookie: codec + CookieOptions merged. */
|
|
22
|
-
export interface DefineCookieOptions<T> extends
|
|
31
|
+
export interface DefineCookieOptions<T> extends CookieOptions {
|
|
23
32
|
/** Codec for parsing/serializing the cookie value. */
|
|
24
33
|
codec: CookieCodec<T>;
|
|
25
|
-
/** Sign the cookie with HMAC-SHA256. */
|
|
26
|
-
signed?: boolean;
|
|
27
34
|
}
|
|
28
35
|
/** A fully typed cookie definition with server and client methods. */
|
|
29
36
|
export interface CookieDefinition<T> {
|
|
@@ -34,20 +41,27 @@ export interface CookieDefinition<T> {
|
|
|
34
41
|
/** The codec used for parsing/serializing. */
|
|
35
42
|
readonly codec: CookieCodec<T>;
|
|
36
43
|
/** Server: read the typed value from the current request. */
|
|
37
|
-
|
|
44
|
+
getCookie(): Promise<T>;
|
|
38
45
|
/** Server: set the typed value on the response. */
|
|
39
|
-
|
|
46
|
+
setCookie(value: T): Promise<void>;
|
|
40
47
|
/** Server: delete the cookie. */
|
|
41
|
-
|
|
48
|
+
deleteCookie(): Promise<void>;
|
|
42
49
|
/** Client: React hook for reading/writing this cookie. Returns [value, setter, deleter]. */
|
|
43
50
|
useCookie(): [T, (value: T) => void, () => void];
|
|
44
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Register the client cookie module. Called by the client entry to wire
|
|
54
|
+
* up the lazy reference without a top-level import.
|
|
55
|
+
*
|
|
56
|
+
* @internal — framework use only
|
|
57
|
+
*/
|
|
58
|
+
export declare function _registerUseCookieModule(mod: typeof import('../client/use-cookie.js')): void;
|
|
45
59
|
/**
|
|
46
60
|
* Define a typed cookie.
|
|
47
61
|
*
|
|
48
62
|
* ```ts
|
|
49
63
|
* import { defineCookie } from '@timber-js/app/cookies';
|
|
50
|
-
* import { fromSchema } from '@timber-js/app/
|
|
64
|
+
* import { fromSchema } from '@timber-js/app/codec';
|
|
51
65
|
* import { z } from 'zod/v4';
|
|
52
66
|
*
|
|
53
67
|
* export const themeCookie = defineCookie('theme', {
|
|
@@ -55,6 +69,13 @@ export interface CookieDefinition<T> {
|
|
|
55
69
|
* httpOnly: false,
|
|
56
70
|
* maxAge: 60 * 60 * 24 * 365,
|
|
57
71
|
* });
|
|
72
|
+
*
|
|
73
|
+
* // Server
|
|
74
|
+
* const theme = await themeCookie.getCookie();
|
|
75
|
+
* await themeCookie.setCookie('dark');
|
|
76
|
+
*
|
|
77
|
+
* // Client
|
|
78
|
+
* const [theme, setTheme] = themeCookie.useCookie();
|
|
58
79
|
* ```
|
|
59
80
|
*/
|
|
60
81
|
export declare function defineCookie<T>(name: string, options: DefineCookieOptions<T>): CookieDefinition<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-cookie.d.ts","sourceRoot":"","sources":["../../src/cookies/define-cookie.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"define-cookie.d.ts","sourceRoot":"","sources":["../../src/cookies/define-cookie.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAKlE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAEtC,8DAA8D;AAC9D,MAAM,WAAW,mBAAmB,CAAC,CAAC,CAAE,SAAQ,aAAa;IAC3D,sDAAsD;IACtD,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CACvB;AAED,sEAAsE;AACtE,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAE/B,6DAA6D;IAC7D,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,mDAAmD;IACnD,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,iCAAiC;IACjC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B,4FAA4F;IAC5F,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;CAClD;AAyBD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,cAAc,yBAAyB,CAAC,GAAG,IAAI,CAE5F;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC9B,gBAAgB,CAAC,CAAC,CAAC,CAiErB"}
|
package/dist/cookies/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { defineCookie } from './define-cookie.js';
|
|
2
2
|
export type { CookieDefinition, CookieCodec, DefineCookieOptions } from './define-cookie.js';
|
|
3
|
+
export type { Codec } from '../codec.js';
|
|
4
|
+
export { cookies } from '../server/request-context.js';
|
|
3
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cookies/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cookies/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG7F,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/cookies/index.js
CHANGED
|
@@ -1,84 +1,3 @@
|
|
|
1
|
-
import "../_chunks/
|
|
2
|
-
import { n as
|
|
3
|
-
|
|
4
|
-
import { t as useCookie } from "../_chunks/use-cookie-DX-l1_5E.js";
|
|
5
|
-
//#region src/cookies/define-cookie.ts
|
|
6
|
-
/**
|
|
7
|
-
* defineCookie — typed cookie definitions.
|
|
8
|
-
*
|
|
9
|
-
* Bundles name + codec + options into a reusable CookieDefinition<T>
|
|
10
|
-
* with .get(), .set(), .delete() server methods and a .useCookie() client hook.
|
|
11
|
-
*
|
|
12
|
-
* Reuses the SearchParamCodec protocol via fromSchema() bridge.
|
|
13
|
-
* Validation on read returns the codec default (never throws).
|
|
14
|
-
*
|
|
15
|
-
* See design/29-cookies.md §"Typed Cookies with Schema Validation"
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* Define a typed cookie.
|
|
19
|
-
*
|
|
20
|
-
* ```ts
|
|
21
|
-
* import { defineCookie } from '@timber-js/app/cookies';
|
|
22
|
-
* import { fromSchema } from '@timber-js/app/search-params';
|
|
23
|
-
* import { z } from 'zod/v4';
|
|
24
|
-
*
|
|
25
|
-
* export const themeCookie = defineCookie('theme', {
|
|
26
|
-
* codec: fromSchema(z.enum(['light', 'dark', 'system']).default('system')),
|
|
27
|
-
* httpOnly: false,
|
|
28
|
-
* maxAge: 60 * 60 * 24 * 365,
|
|
29
|
-
* });
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
function defineCookie(name, options) {
|
|
33
|
-
const { codec, ...cookieOpts } = options;
|
|
34
|
-
const resolvedOptions = { ...cookieOpts };
|
|
35
|
-
return {
|
|
36
|
-
name,
|
|
37
|
-
options: resolvedOptions,
|
|
38
|
-
codec,
|
|
39
|
-
get() {
|
|
40
|
-
const jar = cookies();
|
|
41
|
-
const raw = resolvedOptions.signed ? jar.getSigned(name) : jar.get(name);
|
|
42
|
-
return codec.parse(raw);
|
|
43
|
-
},
|
|
44
|
-
set(value) {
|
|
45
|
-
const serialized = codec.serialize(value);
|
|
46
|
-
if (serialized === null) cookies().delete(name, {
|
|
47
|
-
path: resolvedOptions.path,
|
|
48
|
-
domain: resolvedOptions.domain
|
|
49
|
-
});
|
|
50
|
-
else cookies().set(name, serialized, resolvedOptions);
|
|
51
|
-
},
|
|
52
|
-
delete() {
|
|
53
|
-
cookies().delete(name, {
|
|
54
|
-
path: resolvedOptions.path,
|
|
55
|
-
domain: resolvedOptions.domain
|
|
56
|
-
});
|
|
57
|
-
},
|
|
58
|
-
useCookie() {
|
|
59
|
-
const [raw, setRaw, deleteRaw] = useCookie(name, {
|
|
60
|
-
path: resolvedOptions.path,
|
|
61
|
-
domain: resolvedOptions.domain,
|
|
62
|
-
maxAge: resolvedOptions.maxAge,
|
|
63
|
-
expires: resolvedOptions.expires,
|
|
64
|
-
sameSite: resolvedOptions.sameSite,
|
|
65
|
-
secure: resolvedOptions.secure
|
|
66
|
-
});
|
|
67
|
-
const parsed = codec.parse(raw);
|
|
68
|
-
const setTyped = (value) => {
|
|
69
|
-
const serialized = codec.serialize(value);
|
|
70
|
-
if (serialized === null) deleteRaw();
|
|
71
|
-
else setRaw(serialized);
|
|
72
|
-
};
|
|
73
|
-
return [
|
|
74
|
-
parsed,
|
|
75
|
-
setTyped,
|
|
76
|
-
deleteRaw
|
|
77
|
-
];
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
//#endregion
|
|
82
|
-
export { defineCookie };
|
|
83
|
-
|
|
84
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import { n as cookies } from "../_chunks/request-context-CywiO4jV.js";
|
|
2
|
+
import { n as defineCookie } from "../_chunks/define-cookie-B5mewxwM.js";
|
|
3
|
+
export { cookies, defineCookie };
|
package/dist/fonts/css.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export declare function generateFontFaces(descriptors: FontFaceDescriptor[]): st
|
|
|
22
22
|
* ```css
|
|
23
23
|
* .timber-font-inter {
|
|
24
24
|
* --font-sans: 'Inter', 'Inter Fallback', system-ui, sans-serif;
|
|
25
|
+
* font-family: 'Inter', 'Inter Fallback', system-ui, sans-serif;
|
|
25
26
|
* }
|
|
26
27
|
* ```
|
|
27
28
|
*/
|
package/dist/fonts/css.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../src/fonts/css.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAWjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAE3E;AAED
|
|
1
|
+
{"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../src/fonts/css.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAWjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAE3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,MAAM,CAER;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAErF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -63,23 +63,54 @@ export interface TimberUserConfig {
|
|
|
63
63
|
* See design/17-logging.md §"slowRequestMs".
|
|
64
64
|
*/
|
|
65
65
|
slowRequestMs?: number;
|
|
66
|
+
/**
|
|
67
|
+
* Render timeout in milliseconds. If an SSR render or RSC stream read
|
|
68
|
+
* does not complete within this duration, the render is aborted and
|
|
69
|
+
* the connection is closed. Protects against hung fetches and Suspense
|
|
70
|
+
* components that never resolve.
|
|
71
|
+
*
|
|
72
|
+
* Set to 0 to disable (not recommended in production).
|
|
73
|
+
* Default: 30000 (30 seconds).
|
|
74
|
+
*
|
|
75
|
+
* See design/02-rendering-pipeline.md §"Streaming Constraints".
|
|
76
|
+
*/
|
|
77
|
+
renderTimeoutMs?: number;
|
|
78
|
+
/**
|
|
79
|
+
* Forward browser console output to the server terminal in dev mode.
|
|
80
|
+
*
|
|
81
|
+
* Sets the minimum log level to forward:
|
|
82
|
+
* - `'error'` — only `console.error`
|
|
83
|
+
* - `'warn'` — `console.error` + `console.warn` (default)
|
|
84
|
+
* - `'info'` — `console.error` + `console.warn` + `console.info`
|
|
85
|
+
* - `'none'` — disabled
|
|
86
|
+
*
|
|
87
|
+
* Does not intercept `console.log` or `console.debug` (too noisy).
|
|
88
|
+
* No effect in production builds.
|
|
89
|
+
*
|
|
90
|
+
* See TIM-513.
|
|
91
|
+
*/
|
|
92
|
+
devBrowserLogs?: 'error' | 'warn' | 'info' | 'none';
|
|
66
93
|
/** Dev-mode options. These have no effect in production builds. */
|
|
67
94
|
dev?: {
|
|
68
95
|
/** Threshold in ms to highlight slow phases in dev logging output. Default: 200. */
|
|
69
96
|
slowPhaseMs?: number;
|
|
70
97
|
};
|
|
71
98
|
/**
|
|
72
|
-
*
|
|
99
|
+
* Control Server-Timing header output.
|
|
100
|
+
*
|
|
101
|
+
* - `'detailed'` — per-phase breakdown (proxy, middleware, render). Useful
|
|
102
|
+
* for APM / network monitoring. Exposes phase names to clients.
|
|
103
|
+
* - `'total'` — single `total;dur=N` entry. Safe to expose, gives
|
|
104
|
+
* browser DevTools useful timing without internal details.
|
|
105
|
+
* - `false` — no Server-Timing header at all.
|
|
106
|
+
*
|
|
107
|
+
* Default: `'detailed'` in dev, `'total'` in production.
|
|
73
108
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
109
|
+
* This is separate from `debug` / `TIMBER_DEBUG` — it's an intentional
|
|
110
|
+
* decision to expose timing data to clients, not a side effect of debug
|
|
111
|
+
* logging.
|
|
76
112
|
*/
|
|
77
|
-
|
|
78
|
-
/** Single signing secret. Shorthand for `secrets: [secret]`. */
|
|
79
|
-
secret?: string;
|
|
80
|
-
/** Array of signing secrets for key rotation. Index 0 signs; all verify. */
|
|
81
|
-
secrets?: string[];
|
|
82
|
-
};
|
|
113
|
+
serverTiming?: 'detailed' | 'total' | false;
|
|
83
114
|
/**
|
|
84
115
|
* Override the app directory location. By default, timber auto-detects
|
|
85
116
|
* `app/` at the project root, falling back to `src/app/`.
|
|
@@ -105,6 +136,75 @@ export interface TimberUserConfig {
|
|
|
105
136
|
*
|
|
106
137
|
* See LOCAL-336 for design decisions.
|
|
107
138
|
*/
|
|
139
|
+
/**
|
|
140
|
+
* Server action bound args encryption configuration.
|
|
141
|
+
*
|
|
142
|
+
* The RSC plugin encrypts closure variables captured by 'use server' functions
|
|
143
|
+
* using AES-256-GCM so they are opaque and tamper-proof in the Flight payload.
|
|
144
|
+
* Encryption is always enabled in production.
|
|
145
|
+
*
|
|
146
|
+
* The encryption key is auto-generated at build time and embedded in the server bundle,
|
|
147
|
+
* so all instances running the same build share the same key automatically.
|
|
148
|
+
* For rolling/blue-green deployments where multiple builds coexist, set
|
|
149
|
+
* `TIMBER_ACTIONS_ENCRYPTION_KEY` env var to share a key across builds.
|
|
150
|
+
*
|
|
151
|
+
* See design/08-forms-and-actions.md §"Security"
|
|
152
|
+
*/
|
|
153
|
+
actionEncryption?: {
|
|
154
|
+
/**
|
|
155
|
+
* Disable encryption in dev mode for easier debugging of bound args.
|
|
156
|
+
* Has no effect in production — encryption is always enabled.
|
|
157
|
+
* Default: false (encryption is on in dev too).
|
|
158
|
+
*/
|
|
159
|
+
disableInDev?: boolean;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* Enable the React Compiler (babel-plugin-react-compiler) for automatic
|
|
163
|
+
* memoization of components and hooks at build time.
|
|
164
|
+
*
|
|
165
|
+
* - `true` — enable with default options
|
|
166
|
+
* - `{ compilationMode, target }` — enable with custom options
|
|
167
|
+
* - `compilationMode: 'annotation'` — only compile files with `'use memo'`
|
|
168
|
+
* - `target: '18'` — target React 18 (uses react-compiler-runtime package)
|
|
169
|
+
* - `false` or omitted — disabled (default)
|
|
170
|
+
*
|
|
171
|
+
* Uses `@vitejs/plugin-react`'s built-in `reactCompilerPreset`, which:
|
|
172
|
+
* - Applies Babel only for the compiler pass (OXC handles JSX)
|
|
173
|
+
* - Automatically scopes to client environment only
|
|
174
|
+
* - Uses `react/compiler-runtime` built into React 19
|
|
175
|
+
*
|
|
176
|
+
* Requires `babel-plugin-react-compiler` as a peer dependency.
|
|
177
|
+
*/
|
|
178
|
+
reactCompiler?: boolean | {
|
|
179
|
+
compilationMode?: string;
|
|
180
|
+
target?: string;
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Auto-generate sitemap.xml from the route tree.
|
|
184
|
+
*
|
|
185
|
+
* When enabled, timber walks the file-system route tree and produces a sitemap
|
|
186
|
+
* for all discoverable pages. Dynamic routes with `generateStaticParams()` are
|
|
187
|
+
* enumerated. Routes protected by `access.ts` are excluded by default.
|
|
188
|
+
*
|
|
189
|
+
* If a user-authored `sitemap.ts` or `sitemap.xml` exists at the app root,
|
|
190
|
+
* auto-generation is disabled — the user takes full control.
|
|
191
|
+
*
|
|
192
|
+
* Supports automatic pagination (sitemap index) for sites with > 50,000 URLs.
|
|
193
|
+
*
|
|
194
|
+
* See design/16-metadata.md §"Auto-generated Sitemap"
|
|
195
|
+
*/
|
|
196
|
+
sitemap?: {
|
|
197
|
+
/** Must be explicitly `true` to enable auto-generation. Default: false. */
|
|
198
|
+
enabled?: boolean;
|
|
199
|
+
/** Base URL for absolute URLs in the sitemap. Required when enabled. e.g., 'https://example.com' */
|
|
200
|
+
baseUrl?: string;
|
|
201
|
+
/** Default `<changefreq>` for all entries. Optional. */
|
|
202
|
+
defaultChangeFrequency?: string;
|
|
203
|
+
/** Default `<priority>` for all entries (0.0–1.0). Optional. */
|
|
204
|
+
defaultPriority?: number;
|
|
205
|
+
/** Include routes protected by `access.ts`. Default: false. */
|
|
206
|
+
includeProtected?: boolean;
|
|
207
|
+
};
|
|
108
208
|
topLoader?: {
|
|
109
209
|
/** Whether the top-loader is enabled. Default: true. */
|
|
110
210
|
enabled?: boolean;
|
|
@@ -119,32 +219,6 @@ export interface TimberUserConfig {
|
|
|
119
219
|
/** CSS z-index. Default: 1600. */
|
|
120
220
|
zIndex?: number;
|
|
121
221
|
};
|
|
122
|
-
/**
|
|
123
|
-
* Response-level caching and deduplication.
|
|
124
|
-
*
|
|
125
|
-
* When enabled, concurrent requests to the same URL share a single render
|
|
126
|
-
* (singleflight), and recently rendered responses are reused from a short-TTL
|
|
127
|
-
* LRU cache without re-executing the RSC-to-SSR pipeline.
|
|
128
|
-
*
|
|
129
|
-
* Set to `false` to disable entirely. Default: enabled with sensible defaults.
|
|
130
|
-
*
|
|
131
|
-
* See design/31-benchmarking.md for performance context.
|
|
132
|
-
*/
|
|
133
|
-
responseCache?: false | {
|
|
134
|
-
/** Maximum number of entries in the LRU cache. Default: 150. */
|
|
135
|
-
maxSize?: number;
|
|
136
|
-
/** TTL for cached entries in milliseconds. Default: 5000 (5s). */
|
|
137
|
-
ttlMs?: number;
|
|
138
|
-
/**
|
|
139
|
-
* When true (default), requests with Cookie or Authorization headers
|
|
140
|
-
* bypass the cache entirely. This prevents sharing user-specific
|
|
141
|
-
* responses across requests.
|
|
142
|
-
*
|
|
143
|
-
* Set to false to cache all responses regardless of auth state.
|
|
144
|
-
* Only do this if your pages are truly public and don't vary by user.
|
|
145
|
-
*/
|
|
146
|
-
publicOnly?: boolean;
|
|
147
|
-
};
|
|
148
222
|
}
|
|
149
223
|
/**
|
|
150
224
|
* Resolve `clientJavascript` into a fully resolved config.
|
|
@@ -171,10 +245,10 @@ export interface PluginContext {
|
|
|
171
245
|
dev: boolean;
|
|
172
246
|
/** CSS build manifest (populated by adapter after client build, null in dev) */
|
|
173
247
|
buildManifest: BuildManifest | null;
|
|
248
|
+
/** Per-build deployment ID for version skew detection (null in dev) */
|
|
249
|
+
deploymentId: string | null;
|
|
174
250
|
/** Startup timer for profiling cold start phases (active in dev, no-op in prod) */
|
|
175
251
|
timer: StartupTimer;
|
|
176
|
-
/** URL path to font CSS file, set by timber-fonts when fonts are registered */
|
|
177
|
-
fontCssUrl?: string;
|
|
178
252
|
}
|
|
179
253
|
/**
|
|
180
254
|
* Resolve the app directory. Checks (in order):
|
|
@@ -185,6 +259,14 @@ export interface PluginContext {
|
|
|
185
259
|
* Throws if none exist.
|
|
186
260
|
*/
|
|
187
261
|
export declare function resolveAppDir(root: string, configAppDir?: string): string;
|
|
262
|
+
/**
|
|
263
|
+
* Load timber.config.ts (or .js, .mjs) from the project root.
|
|
264
|
+
* Returns the config object or null if no config file is found.
|
|
265
|
+
*
|
|
266
|
+
* Uses require() which works for ESM modules on Node 22.12+.
|
|
267
|
+
* This keeps timber() synchronous — no async config loading needed.
|
|
268
|
+
*/
|
|
269
|
+
export declare function loadTimberConfigFile(root: string): TimberUserConfig | null;
|
|
188
270
|
/**
|
|
189
271
|
* Detect config keys set in both inline (vite.config.ts) and file (timber.config.ts)
|
|
190
272
|
* and warn the user. The `output` key is excluded because it defaults to 'server'
|
|
@@ -193,12 +275,27 @@ export declare function resolveAppDir(root: string, configAppDir?: string): stri
|
|
|
193
275
|
* Returns the list of conflicting key names (for testing).
|
|
194
276
|
*/
|
|
195
277
|
export declare function warnConfigConflicts(inline: TimberUserConfig, fileConfig: TimberUserConfig): string[];
|
|
278
|
+
/**
|
|
279
|
+
* Create the timber Vite plugin array.
|
|
280
|
+
*
|
|
281
|
+
* Loads timber.config.ts and all dependencies synchronously before
|
|
282
|
+
* constructing the plugin array. This ensures ALL plugins — including
|
|
283
|
+
* the RSC plugin and React Compiler — see the fully merged config
|
|
284
|
+
* (inline + file-based). No async, no deferred config, no stale reads.
|
|
285
|
+
*
|
|
286
|
+
* Requires Node >= 22.12 for synchronous require() of ESM modules
|
|
287
|
+
* (@vitejs/plugin-rsc is ESM-only).
|
|
288
|
+
*
|
|
289
|
+
* Previous versions used async loading and deferred config merging,
|
|
290
|
+
* causing file-based config for reactCompiler, actionEncryption, and
|
|
291
|
+
* output mode to be silently ignored. See TIM-451.
|
|
292
|
+
*/
|
|
196
293
|
export declare function timber(config?: TimberUserConfig): PluginOption[];
|
|
197
294
|
/**
|
|
198
295
|
* Route map interface — augmented by the generated timber-routes.d.ts.
|
|
199
296
|
*
|
|
200
297
|
* Each key is a route path pattern. Values have:
|
|
201
|
-
*
|
|
298
|
+
* segmentParams: shape of URL segment params (e.g. { id: string })
|
|
202
299
|
* searchParams: parsed type from search-params.ts, or {} if none
|
|
203
300
|
*
|
|
204
301
|
* This interface is empty by default and populated via codegen.
|
|
@@ -206,5 +303,24 @@ export declare function timber(config?: TimberUserConfig): PluginOption[];
|
|
|
206
303
|
*/
|
|
207
304
|
export interface Routes {
|
|
208
305
|
}
|
|
306
|
+
/**
|
|
307
|
+
* Type-safe helper for timber.config.ts files.
|
|
308
|
+
*
|
|
309
|
+
* A pass-through identity function that provides autocomplete and
|
|
310
|
+
* type checking for timber configuration. No runtime validation —
|
|
311
|
+
* purely a DX convenience (same pattern as Vite's defineConfig).
|
|
312
|
+
*
|
|
313
|
+
* @example
|
|
314
|
+
* ```ts
|
|
315
|
+
* // timber.config.ts
|
|
316
|
+
* import { defineConfig } from '@timber-js/app';
|
|
317
|
+
*
|
|
318
|
+
* export default defineConfig({
|
|
319
|
+
* output: 'server',
|
|
320
|
+
* pageExtensions: ['tsx', 'ts', 'mdx'],
|
|
321
|
+
* });
|
|
322
|
+
* ```
|
|
323
|
+
*/
|
|
324
|
+
export declare function defineConfig(config: TimberUserConfig): TimberUserConfig;
|
|
209
325
|
export default timber;
|
|
210
326
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|