@timber-js/app 0.2.0-alpha.196 → 0.2.0-alpha.198
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-CWYtq6ii.js → actions-BS-m5SLv.js} +3 -3
- package/dist/_chunks/{actions-CWYtq6ii.js.map → actions-BS-m5SLv.js.map} +1 -1
- package/dist/_chunks/als-registry-C6kcfprT.js.map +1 -1
- package/dist/_chunks/{build-manifest-DWppEdLB.js → build-manifest-DTmSGLRz.js} +51 -2
- package/dist/_chunks/build-manifest-DTmSGLRz.js.map +1 -0
- package/dist/_chunks/{cache-api-CQeYzA5g.js → cache-api-DqzgTEqk.js} +4 -49
- package/dist/_chunks/cache-api-DqzgTEqk.js.map +1 -0
- package/dist/_chunks/{chains-h7EO-u3n.js → chains-CZG7E5zg.js} +2 -2
- package/dist/_chunks/{chains-h7EO-u3n.js.map → chains-CZG7E5zg.js.map} +1 -1
- package/dist/_chunks/{cli-check-BVthpfLS.js → cli-check-dVDi1GQz.js} +3 -3
- package/dist/_chunks/{cli-check-BVthpfLS.js.map → cli-check-dVDi1GQz.js.map} +1 -1
- package/dist/_chunks/{cli-schema-sync-3Wutm8pH.js → cli-schema-sync-DTy_-Msq.js} +2 -2
- package/dist/_chunks/{cli-schema-sync-3Wutm8pH.js.map → cli-schema-sync-DTy_-Msq.js.map} +1 -1
- package/dist/_chunks/{cloudflare-BKJC3SC_.js → cloudflare-BFb__LYG.js} +2 -2
- package/dist/_chunks/{cloudflare-BKJC3SC_.js.map → cloudflare-BFb__LYG.js.map} +1 -1
- package/dist/_chunks/{convention-lint-DO10_pVl.js → convention-lint-Ph6luW4c.js} +4 -2
- package/dist/_chunks/convention-lint-Ph6luW4c.js.map +1 -0
- package/dist/_chunks/{error-boundary-D-lkwyaD.js → error-boundary-BvRCCmbN.js} +3 -3
- package/dist/_chunks/{error-boundary-D-lkwyaD.js.map → error-boundary-BvRCCmbN.js.map} +1 -1
- package/dist/_chunks/{href-validation-CMc5JRls.js → href-validation-BIrxavIy.js} +74 -2
- package/dist/_chunks/href-validation-BIrxavIy.js.map +1 -0
- package/dist/_chunks/{live-graph-Bx4HodF1.js → live-graph-BXDsdzBv.js} +3 -3
- package/dist/_chunks/{live-graph-Bx4HodF1.js.map → live-graph-BXDsdzBv.js.map} +1 -1
- package/dist/_chunks/{logger-pumCm3Il.js → logger-DDirEsn7.js} +3 -4
- package/dist/_chunks/{logger-pumCm3Il.js.map → logger-DDirEsn7.js.map} +1 -1
- package/dist/_chunks/navigation-root-B00jjGd5.js +233 -0
- package/dist/_chunks/navigation-root-B00jjGd5.js.map +1 -0
- package/dist/_chunks/{segment-context-CjOlyB8Y.js → param-value-C8TNYchQ.js} +2 -33
- package/dist/_chunks/param-value-C8TNYchQ.js.map +1 -0
- package/dist/_chunks/{poison-scan-BAxfTT5L.js → poison-scan-BoDLgbix.js} +2 -2
- package/dist/_chunks/{poison-scan-BAxfTT5L.js.map → poison-scan-BoDLgbix.js.map} +1 -1
- package/dist/_chunks/{router-ref-BzqbPwYC.js → router-ref-8gr8qsxN.js} +2 -2
- package/dist/_chunks/{router-ref-BzqbPwYC.js.map → router-ref-8gr8qsxN.js.map} +1 -1
- package/dist/_chunks/{rsc-cache-key-DD0fl_-s.js → rsc-cache-key-ClUiXQnK.js} +2 -2
- package/dist/_chunks/{rsc-cache-key-DD0fl_-s.js.map → rsc-cache-key-ClUiXQnK.js.map} +1 -1
- package/dist/_chunks/{scanner-BRIOmHE2.js → scanner-tdFPvDYi.js} +174 -7
- package/dist/_chunks/scanner-tdFPvDYi.js.map +1 -0
- package/dist/_chunks/segment-context-D9_89u34.js +34 -0
- package/dist/_chunks/segment-context-D9_89u34.js.map +1 -0
- package/dist/_chunks/singleflight-2lUWfcAk.js +54 -0
- package/dist/_chunks/singleflight-2lUWfcAk.js.map +1 -0
- package/dist/_chunks/{ssr-data-Ya2HJPFp.js → ssr-data-BQGhTPAK.js} +2 -17
- package/dist/_chunks/ssr-data-BQGhTPAK.js.map +1 -0
- package/dist/_chunks/{walkers-BU6z9xRV.js → walkers-DNX05dC0.js} +2 -2
- package/dist/_chunks/{walkers-BU6z9xRV.js.map → walkers-DNX05dC0.js.map} +1 -1
- package/dist/adapters/cloudflare-dev.js +1 -1
- package/dist/adapters/cloudflare-kv-cache.js +1 -1
- package/dist/adapters/cloudflare.js +1 -1
- package/dist/adapters/nitro.d.ts +1 -1
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js.map +1 -1
- package/dist/analyze/crawl-entry.js +2 -2
- package/dist/analyze/graph-command.js +2 -2
- package/dist/cache/index.js +1 -1
- package/dist/cache/singleflight.d.ts +2 -0
- package/dist/cache/singleflight.d.ts.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/client/browser-entry/hydrate.d.ts +21 -15
- package/dist/client/browser-entry/hydrate.d.ts.map +1 -1
- package/dist/client/browser-entry/index.d.ts +4 -3
- package/dist/client/browser-entry/index.d.ts.map +1 -1
- package/dist/client/browser-entry/post-hydration.d.ts.map +1 -1
- package/dist/client/browser-entry/router-init.d.ts +17 -1
- package/dist/client/browser-entry/router-init.d.ts.map +1 -1
- package/dist/client/error-boundary.js +1 -1
- package/dist/client/global-context.d.ts +15 -0
- package/dist/client/global-context.d.ts.map +1 -0
- package/dist/client/index.js +138 -35
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal.d.ts +0 -1
- package/dist/client/internal.d.ts.map +1 -1
- package/dist/client/internal.js +206 -55
- package/dist/client/internal.js.map +1 -1
- package/dist/client/link.d.ts.map +1 -1
- package/dist/client/location-search.d.ts +12 -0
- package/dist/client/location-search.d.ts.map +1 -0
- package/dist/client/navigation-api.d.ts.map +1 -1
- package/dist/client/navigation-commit.d.ts +18 -0
- package/dist/client/navigation-commit.d.ts.map +1 -1
- package/dist/client/navigation-context.d.ts +13 -11
- package/dist/client/navigation-context.d.ts.map +1 -1
- package/dist/client/navigation-root.d.ts +47 -108
- package/dist/client/navigation-root.d.ts.map +1 -1
- package/dist/client/navigation-transition.d.ts +136 -0
- package/dist/client/navigation-transition.d.ts.map +1 -0
- package/dist/client/nuqs-adapter.d.ts.map +1 -1
- package/dist/client/params-context.d.ts +4 -5
- package/dist/client/params-context.d.ts.map +1 -1
- package/dist/client/react-root.d.ts +44 -0
- package/dist/client/react-root.d.ts.map +1 -0
- package/dist/client/router-pipeline.d.ts +2 -2
- package/dist/client/router-pipeline.d.ts.map +1 -1
- package/dist/client/router-types.d.ts +12 -2
- package/dist/client/router-types.d.ts.map +1 -1
- package/dist/client/router.d.ts.map +1 -1
- package/dist/client/segment-cache.d.ts +39 -0
- package/dist/client/segment-cache.d.ts.map +1 -1
- package/dist/client/segment-context.d.ts.map +1 -1
- package/dist/client/segment-outlet.d.ts +25 -14
- package/dist/client/segment-outlet.d.ts.map +1 -1
- package/dist/client/segment-update-context.d.ts +3 -9
- package/dist/client/segment-update-context.d.ts.map +1 -1
- package/dist/client/slot-content-cache-context.d.ts +35 -0
- package/dist/client/slot-content-cache-context.d.ts.map +1 -0
- package/dist/client/ssr-data.d.ts +8 -2
- package/dist/client/ssr-data.d.ts.map +1 -1
- package/dist/client/state.d.ts +0 -15
- package/dist/client/state.d.ts.map +1 -1
- package/dist/client/use-pathname.d.ts +13 -11
- package/dist/client/use-pathname.d.ts.map +1 -1
- package/dist/client/use-search-params.d.ts +13 -13
- package/dist/client/use-search-params.d.ts.map +1 -1
- package/dist/client/use-segment-params.d.ts +18 -68
- package/dist/client/use-segment-params.d.ts.map +1 -1
- package/dist/config-types.d.ts +17 -0
- package/dist/config-types.d.ts.map +1 -1
- package/dist/config-validation.d.ts.map +1 -1
- package/dist/cookies/index.js +1 -1
- package/dist/dev-tools/holding-server.d.ts +15 -10
- package/dist/dev-tools/holding-server.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -43
- package/dist/index.js.map +1 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/shims.d.ts.map +1 -1
- package/dist/plugins/static-build.d.ts +2 -2
- package/dist/plugins/static-build.d.ts.map +1 -1
- package/dist/routing/codegen-write.d.ts.map +1 -1
- package/dist/routing/index.js +2 -2
- package/dist/routing/interception-overlap.d.ts +35 -0
- package/dist/routing/interception-overlap.d.ts.map +1 -0
- package/dist/routing/interception.d.ts.map +1 -1
- package/dist/rsc-runtime/ssr.d.ts +3 -1
- package/dist/rsc-runtime/ssr.d.ts.map +1 -1
- package/dist/server/als-registry.d.ts +6 -0
- package/dist/server/als-registry.d.ts.map +1 -1
- package/dist/server/csp-nonce.d.ts +45 -0
- package/dist/server/csp-nonce.d.ts.map +1 -0
- package/dist/server/default-status-page.d.ts.map +1 -1
- package/dist/server/deny-renderer.d.ts.map +1 -1
- package/dist/server/flight-scripts.d.ts +5 -2
- package/dist/server/flight-scripts.d.ts.map +1 -1
- package/dist/server/html-injector-core.d.ts +17 -2
- package/dist/server/html-injector-core.d.ts.map +1 -1
- package/dist/server/html-injectors.d.ts +3 -2
- package/dist/server/html-injectors.d.ts.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/internal.js +86 -37
- package/dist/server/internal.js.map +1 -1
- package/dist/server/metadata-render.d.ts.map +1 -1
- package/dist/server/node-stream-transforms.d.ts +3 -17
- package/dist/server/node-stream-transforms.d.ts.map +1 -1
- package/dist/server/nuqs-ssr-provider.d.ts +7 -3
- package/dist/server/nuqs-ssr-provider.d.ts.map +1 -1
- package/dist/server/pipeline-phases.d.ts.map +1 -1
- package/dist/server/prebuilt/key-discipline.d.ts +32 -3
- package/dist/server/prebuilt/key-discipline.d.ts.map +1 -1
- package/dist/server/primitives.d.ts.map +1 -1
- package/dist/server/render-utils.d.ts +4 -3
- package/dist/server/render-utils.d.ts.map +1 -1
- package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -1
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
- package/dist/server/ssr-bridge-types.d.ts +22 -2
- package/dist/server/ssr-bridge-types.d.ts.map +1 -1
- package/dist/server/ssr-entry.d.ts.map +1 -1
- package/dist/server/ssr-render.d.ts +5 -1
- package/dist/server/ssr-render.d.ts.map +1 -1
- package/dist/server/ssr-wrappers.d.ts +59 -27
- package/dist/server/ssr-wrappers.d.ts.map +1 -1
- package/dist/server/types.d.ts +10 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/shims/navigation-rsc.d.ts +21 -0
- package/dist/shims/navigation-rsc.d.ts.map +1 -0
- package/docs/api/30-api-server.mdx +1 -0
- package/docs/api/35-api-typescript.mdx +4 -83
- package/docs/learn/03-fetching-data.mdx +1 -1
- package/docs/learn/{03b-access-control.mdx → 04-access-control.mdx} +2 -17
- package/docs/learn/05-the-flush-point.mdx +175 -0
- package/docs/learn/{05-typed-params.mdx → 06-typed-params.mdx} +1 -1
- package/docs/learn/07-typed-routes.mdx +25 -49
- package/docs/learn/{08-streaming.mdx → 09-streaming.mdx} +1 -7
- package/docs/learn/{10-middleware.mdx → 11-middleware.mdx} +1 -0
- package/package.json +3 -3
- package/src/adapters/nitro.ts +7 -7
- package/src/cache/singleflight.ts +5 -0
- package/src/client/browser-entry/hydrate.ts +54 -104
- package/src/client/browser-entry/index.ts +16 -6
- package/src/client/browser-entry/post-hydration.ts +3 -2
- package/src/client/browser-entry/router-init.ts +84 -33
- package/src/client/global-context.ts +31 -0
- package/src/client/internal.ts +1 -2
- package/src/client/link.tsx +18 -18
- package/src/client/location-search.ts +15 -0
- package/src/client/navigation-api.ts +4 -2
- package/src/client/navigation-commit.ts +48 -2
- package/src/client/navigation-context.ts +25 -37
- package/src/client/navigation-root.tsx +55 -411
- package/src/client/navigation-transition.ts +278 -0
- package/src/client/nuqs-adapter.tsx +4 -5
- package/src/client/params-context.ts +13 -18
- package/src/client/react-root.ts +72 -0
- package/src/client/router-lifecycle.ts +1 -1
- package/src/client/router-pipeline.ts +96 -22
- package/src/client/router-types.ts +12 -2
- package/src/client/router.ts +48 -36
- package/src/client/segment-cache.ts +70 -2
- package/src/client/segment-context.ts +7 -4
- package/src/client/segment-outlet.tsx +41 -86
- package/src/client/segment-update-context.ts +7 -26
- package/src/client/slot-content-cache-context.ts +43 -0
- package/src/client/ssr-data.ts +8 -2
- package/src/client/state.ts +0 -26
- package/src/client/use-pathname.ts +21 -31
- package/src/client/use-search-params.ts +31 -29
- package/src/client/use-segment-params.ts +27 -126
- package/src/config-types.ts +17 -0
- package/src/config-validation.ts +17 -0
- package/src/dev-tools/holding-server.ts +23 -12
- package/src/index.ts +26 -11
- package/src/plugins/dev-server.ts +9 -12
- package/src/plugins/entries.ts +3 -0
- package/src/plugins/shims.ts +8 -7
- package/src/plugins/static-build.ts +9 -5
- package/src/react-canary.d.ts +2 -0
- package/src/routing/codegen-write.ts +2 -0
- package/src/routing/interception-overlap.ts +141 -0
- package/src/routing/interception.ts +118 -5
- package/src/rsc-runtime/ssr.ts +3 -2
- package/src/server/als-registry.ts +6 -0
- package/src/server/csp-nonce.ts +70 -0
- package/src/server/default-status-page.ts +1 -0
- package/src/server/deny-renderer.ts +7 -3
- package/src/server/flight-scripts.ts +9 -4
- package/src/server/html-injector-core.ts +26 -9
- package/src/server/html-injectors.ts +8 -8
- package/src/server/metadata-render.ts +26 -4
- package/src/server/node-stream-transforms.ts +7 -20
- package/src/server/nuqs-ssr-provider.tsx +8 -7
- package/src/server/pipeline-phases.ts +5 -0
- package/src/server/prebuilt/key-discipline.ts +82 -13
- package/src/server/prebuilt-runtime.ts +2 -2
- package/src/server/primitives.ts +4 -4
- package/src/server/render-utils.ts +8 -4
- package/src/server/rsc-entry/action-middleware-runner.ts +7 -0
- package/src/server/rsc-entry/error-renderer.ts +5 -2
- package/src/server/rsc-entry/index.ts +8 -0
- package/src/server/rsc-entry/ssr-renderer.ts +11 -4
- package/src/server/ssr-bridge-types.ts +22 -2
- package/src/server/ssr-entry.ts +35 -28
- package/src/server/ssr-render.ts +13 -4
- package/src/server/ssr-wrappers.tsx +81 -61
- package/src/server/types.ts +10 -0
- package/src/shared/slot-params.ts +3 -4
- package/src/shims/navigation-rsc.ts +47 -0
- package/dist/_chunks/build-manifest-DWppEdLB.js.map +0 -1
- package/dist/_chunks/cache-api-CQeYzA5g.js.map +0 -1
- package/dist/_chunks/convention-lint-DO10_pVl.js.map +0 -1
- package/dist/_chunks/href-validation-CMc5JRls.js.map +0 -1
- package/dist/_chunks/scanner-BRIOmHE2.js.map +0 -1
- package/dist/_chunks/segment-context-CjOlyB8Y.js.map +0 -1
- package/dist/_chunks/slot-params-BCTmZkQB.js +0 -76
- package/dist/_chunks/slot-params-BCTmZkQB.js.map +0 -1
- package/dist/_chunks/ssr-data-Ya2HJPFp.js.map +0 -1
- package/dist/_chunks/use-segment-params-DzTBpkvj.js +0 -398
- package/dist/_chunks/use-segment-params-DzTBpkvj.js.map +0 -1
- package/docs/learn/04-loading-states.mdx +0 -67
- package/docs/learn/04b-the-flush-point.mdx +0 -115
- package/docs/learn/12-client-navigation.mdx +0 -176
- package/docs/learn/13-configuration.mdx +0 -166
- package/docs/more/01-advanced-routing.mdx +0 -344
- package/docs/more/02-advanced-forms.mdx +0 -137
- package/docs/more/03-coming-from-nextjs.mdx +0 -186
- package/docs/more/04-metadata-and-fonts.mdx +0 -193
- package/docs/more/04b-mdx.mdx +0 -229
- package/docs/more/05-content-collections.mdx +0 -90
- package/docs/more/06-instrumentation.mdx +0 -214
- package/docs/more/07-security.mdx +0 -129
- package/docs/more/08-developer-experience.mdx +0 -134
- package/docs/more/40-why-timber.mdx +0 -50
- package/docs/more/41-timber-vs-nextjs.mdx +0 -81
- package/docs/more/42-timber-vs-others.mdx +0 -68
- package/docs/more/50-ai-agent-instructions.mdx +0 -171
- /package/docs/learn/{06-forms-and-actions.mdx → 08-forms-and-actions.mdx} +0 -0
- /package/docs/learn/{09-caching.mdx → 10-caching.mdx} +0 -0
- /package/docs/learn/{11-error-handling.mdx → 12-error-handling.mdx} +0 -0
- /package/docs/learn/{14-deploying.mdx → 13-deploying.mdx} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-types.d.ts","sourceRoot":"","sources":["../../src/client/router-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"router-types.d.ts","sourceRoot":"","sources":["../../src/client/router-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,YAAY;AACpB;;;;;;;;GAQG;AACH,MAAM,EAAE,MAAM,IAAI,KACf,IAAI,CAAC;AAEV;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7D,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,kGAAkG;IAClG,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,mFAAmF;IACnF,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC5C;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CACP,WAAW,EAAE,CACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,eAAe;IACzB;;;;;;OAMG;IACH,MAAM,EAAE,YAAY,EACpB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAClC,OAAO,KACT,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KACpC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAE/C;;;OAGG;IACH,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtD;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC;IAEnC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7D;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAEzC;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,6DAA6D;IAC7D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,yFAAyF;IACzF,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3F,kDAAkD;IAClD,SAAS,IAAI,OAAO,CAAC;IACrB,4DAA4D;IAC5D,aAAa,IAAI,MAAM,GAAG,IAAI,CAAC;IAC/B,yCAAyC;IACzC,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAClE,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,iBAAiB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9C;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAEhD,gEAAgE;IAChE,YAAY,EAAE,YAAY,CAAC;IAC3B,iEAAiE;IACjE,aAAa,EAAE,aAAa,CAAC;IAC7B,4CAA4C;IAC5C,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/client/router.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAqB,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIvF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/client/router.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAqB,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIvF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAgZ7D"}
|
|
@@ -147,21 +147,60 @@ export interface PrefetchKey {
|
|
|
147
147
|
* cache is the point: the key varies by exactly what the request varies by.
|
|
148
148
|
*/
|
|
149
149
|
export declare function prefetchScopeOf(stateTree: StateTree | undefined): string;
|
|
150
|
+
/** Outcome of a prefetch flight — discriminated so NonRscResponse is a
|
|
151
|
+
* success (stores a negative entry) rather than a rejection. */
|
|
152
|
+
export type FlightOutcome = {
|
|
153
|
+
kind: 'ready';
|
|
154
|
+
result: PrefetchResult;
|
|
155
|
+
} | {
|
|
156
|
+
kind: 'non-route';
|
|
157
|
+
};
|
|
150
158
|
/**
|
|
151
159
|
* Short-lived cache for hover-triggered prefetches. Entries expire after
|
|
152
160
|
* 30 seconds. When a link is clicked, the prefetched payload is consumed
|
|
153
161
|
* (moved to the history stack) and removed from this cache.
|
|
154
162
|
*
|
|
163
|
+
* In-flight dedup (TIM-1438): concurrent fetches for the same key are
|
|
164
|
+
* coalesced by a `createSingleflight` instance. A hover starts a flight;
|
|
165
|
+
* a click for the same key joins it instead of issuing a duplicate. The
|
|
166
|
+
* singleflight enforces a 5-second timeout and cleans up automatically
|
|
167
|
+
* on settlement.
|
|
168
|
+
*
|
|
155
169
|
* timber.js does NOT prefetch on viewport intersection — only explicit
|
|
156
170
|
* hover on <Link prefetch> triggers a prefetch.
|
|
157
171
|
*/
|
|
158
172
|
export declare class PrefetchCache {
|
|
159
173
|
private static readonly TTL_MS;
|
|
160
174
|
private entries;
|
|
175
|
+
private flights;
|
|
161
176
|
set(key: PrefetchKey, result: PrefetchResult): void;
|
|
162
177
|
get(key: PrefetchKey): PrefetchResult | undefined;
|
|
178
|
+
/** True if a ready or negative entry exists for this key. */
|
|
179
|
+
has(key: PrefetchKey): boolean;
|
|
163
180
|
/** Get and remove the entry (used when navigation consumes a prefetch) */
|
|
164
181
|
consume(key: PrefetchKey): PrefetchResult | undefined;
|
|
182
|
+
/**
|
|
183
|
+
* Fetch or coalesce with an in-flight fetch for this key (TIM-1438).
|
|
184
|
+
*
|
|
185
|
+
* Concurrent callers (hover + click, repeated hovers) get the same
|
|
186
|
+
* promise. On success the result is stored as a ready entry. On
|
|
187
|
+
* NonRscResponse a negative entry is stored and the outcome is
|
|
188
|
+
* `{ kind: 'non-route' }`. Other errors (network, version skew)
|
|
189
|
+
* reject — the singleflight cleans up the key and subsequent callers
|
|
190
|
+
* retry.
|
|
191
|
+
*
|
|
192
|
+
* The singleflight signal is passed to `doFetch` so a timed-out flight
|
|
193
|
+
* aborts the underlying fetch rather than leaving it running.
|
|
194
|
+
*/
|
|
195
|
+
fetchOrCoalesce(key: PrefetchKey, doFetch: (signal: AbortSignal) => Promise<PrefetchResult>, isNonRoute: (error: unknown) => boolean): Promise<FlightOutcome>;
|
|
196
|
+
/**
|
|
197
|
+
* Join an in-flight singleflight fetch if one exists for this key.
|
|
198
|
+
* Returns the in-flight promise or undefined. Used by the click path to
|
|
199
|
+
* coalesce with a hover prefetch without starting a new flight — when no
|
|
200
|
+
* flight exists, the click issues its own fetch with the navigation's
|
|
201
|
+
* abort signal so superseded navigations abort immediately (TIM-1438).
|
|
202
|
+
*/
|
|
203
|
+
joinInflight(key: PrefetchKey): Promise<FlightOutcome> | undefined;
|
|
165
204
|
/**
|
|
166
205
|
* Store a negative entry — the URL is not a route (non-RSC Content-Type).
|
|
167
206
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segment-cache.d.ts","sourceRoot":"","sources":["../../src/client/segment-cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"segment-cache.d.ts","sourceRoot":"","sources":["../../src/client/segment-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segment-context.d.ts","sourceRoot":"","sources":["../../src/client/segment-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,0FAA0F;IAC1F,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAMD,qFAAqF;AACrF,wBAAgB,iBAAiB,IAAI,mBAAmB,GAAG,IAAI,CAE9D;AAID,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EAAE,UAAU,EACrB,iBAAiB,EACjB,QAAQ,GACT,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"segment-context.d.ts","sourceRoot":"","sources":["../../src/client/segment-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,0FAA0F;IAC1F,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAMD,qFAAqF;AACrF,wBAAgB,iBAAiB,IAAI,mBAAmB,GAAG,IAAI,CAE9D;AAID,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EAAE,UAAU,EACrB,iBAAiB,EACjB,QAAQ,GACT,EAAE,oBAAoB,uGAYtB"}
|
|
@@ -4,19 +4,29 @@
|
|
|
4
4
|
* Each layout in the segment tree is wrapped with a SegmentOutlet that:
|
|
5
5
|
* 1. Knows its segment path (prop from the server)
|
|
6
6
|
* 2. Reads from SegmentUpdateContext for partial navigation updates
|
|
7
|
-
* 3.
|
|
7
|
+
* 3. Reads from — and, at commit, writes to — the router's slot content
|
|
8
|
+
* cache, so a skipped parallel slot keeps showing what it last committed
|
|
8
9
|
*
|
|
9
|
-
* On full navigation: receives new children via props
|
|
10
|
+
* On full navigation: receives new children via props and renders them.
|
|
10
11
|
* On partial navigation (this segment skipped): the context map has no entry
|
|
11
|
-
* for this path, so the outlet
|
|
12
|
+
* for this path, so the outlet renders its children — which, because the
|
|
13
|
+
* router re-wraps the *retained* tree, are the same elements as before,
|
|
14
|
+
* preserving layout state.
|
|
12
15
|
* On partial navigation (this segment updated): the context map has content
|
|
13
16
|
* for this path, so the outlet renders the update.
|
|
17
|
+
* On a skipped parallel slot (`skip=true`, children null): the outlet renders
|
|
18
|
+
* the content it last committed for this path.
|
|
14
19
|
*
|
|
15
20
|
* Uses React context instead of useSyncExternalStore to stay compatible
|
|
16
21
|
* with concurrent rendering (transitions). All outlets re-render when the
|
|
17
22
|
* context value changes, but each bails out quickly if its segment has
|
|
18
23
|
* no update — same approach as Next.js LayoutRouter.
|
|
19
24
|
*
|
|
25
|
+
* Render is a pure read. The only write — recording committed slot content —
|
|
26
|
+
* happens in a layout effect, so a render React throws away (a superseded
|
|
27
|
+
* transition, a Suspense retry) cannot poison what a later `skip=true`
|
|
28
|
+
* resolves to (TIM-1423). See client/slot-content-cache-context.ts.
|
|
29
|
+
*
|
|
20
30
|
* Security: performance optimization only. The server always runs all
|
|
21
31
|
* access.ts files regardless of segment skipping.
|
|
22
32
|
* See design/13-security.md §"State tree manipulation".
|
|
@@ -34,24 +44,25 @@ export interface SegmentOutletProps {
|
|
|
34
44
|
/** The segment's React subtree (layout + inner content). */
|
|
35
45
|
children: ReactNode;
|
|
36
46
|
/**
|
|
37
|
-
* When true, the outlet
|
|
38
|
-
*
|
|
39
|
-
* sends an empty SegmentOutlet with skip=true, and the client keeps
|
|
40
|
-
* the previously
|
|
47
|
+
* When true, the outlet renders the content it last committed for this
|
|
48
|
+
* path instead of `children`. Used for skipped parallel route slots — the
|
|
49
|
+
* server sends an empty SegmentOutlet with skip=true, and the client keeps
|
|
50
|
+
* the previously committed slot content.
|
|
41
51
|
*/
|
|
42
52
|
skip?: boolean;
|
|
43
53
|
}
|
|
44
54
|
/**
|
|
45
55
|
* Client component boundary at each layout segment in the element tree.
|
|
46
56
|
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
57
|
+
* Resolution order, all reads:
|
|
58
|
+
* 1. An update in SegmentUpdateContext for this path → render it.
|
|
59
|
+
* 2. `skip` → render the committed content for this path (null if none —
|
|
60
|
+
* a fresh outlet with nothing committed yet renders empty and is fully
|
|
61
|
+
* rendered on the next navigation).
|
|
62
|
+
* 3. Otherwise → render `children`.
|
|
51
63
|
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* across navigations because SegmentOutlet is reconciled, not remounted.
|
|
64
|
+
* Whatever a non-skip render resolves to is recorded once React commits it.
|
|
65
|
+
* A skip render records nothing: it displayed the cache, it did not add to it.
|
|
55
66
|
*/
|
|
56
67
|
export declare function SegmentOutlet({ segmentPath, children, skip }: SegmentOutletProps): ReactNode;
|
|
57
68
|
//# sourceMappingURL=segment-outlet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segment-outlet.d.ts","sourceRoot":"","sources":["../../src/client/segment-outlet.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"segment-outlet.d.ts","sourceRoot":"","sources":["../../src/client/segment-outlet.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAIH,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIpE,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB,4DAA4D;IAC5D,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,kBAAkB,aAoBhF"}
|
|
@@ -6,16 +6,10 @@
|
|
|
6
6
|
* as the context value. Mounted SegmentOutlet components read from this
|
|
7
7
|
* context to decide whether to render the update or their cached content.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
* NavigationContext. The RSC client bundler can duplicate this module
|
|
11
|
-
* across chunks (browser-entry graph + client-reference graph). With
|
|
12
|
-
* ESM output, each chunk gets its own module scope — a bare createContext
|
|
13
|
-
* at module level would create separate instances per chunk. globalThis
|
|
14
|
-
* guarantees a single instance regardless of duplication.
|
|
15
|
-
*
|
|
9
|
+
* Singleton across bundler-duplicated chunks via `createGlobalContext`.
|
|
16
10
|
* See design/19-client-navigation.md §"Singleton Guarantee via globalThis"
|
|
17
11
|
*/
|
|
18
|
-
import
|
|
12
|
+
import type { ReactNode } from 'react';
|
|
19
13
|
export declare const EMPTY_SEGMENT_UPDATES: Map<string, ReactNode>;
|
|
20
|
-
export declare const SegmentUpdateContext:
|
|
14
|
+
export declare const SegmentUpdateContext: import("react").Context<Map<string, ReactNode>>;
|
|
21
15
|
//# sourceMappingURL=segment-update-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segment-update-context.d.ts","sourceRoot":"","sources":["../../src/client/segment-update-context.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"segment-update-context.d.ts","sourceRoot":"","sources":["../../src/client/segment-update-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,eAAO,MAAM,qBAAqB,wBAA+B,CAAC;AAElE,eAAO,MAAM,oBAAoB,iDAGhC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SlotContentCacheContext — the router-owned record of slot content the
|
|
3
|
+
* client has *committed*.
|
|
4
|
+
*
|
|
5
|
+
* The server omits a parallel slot's content when the client advertised a
|
|
6
|
+
* matching content key (`skip=true`, TIM-1370), and the outlet at that
|
|
7
|
+
* position must render what it displayed before. This Map, keyed by
|
|
8
|
+
* segmentPath, is where that content lives.
|
|
9
|
+
*
|
|
10
|
+
* Ownership and write discipline (TIM-1423):
|
|
11
|
+
*
|
|
12
|
+
* - **One instance per router.** `createTimberRouter` creates the Map and
|
|
13
|
+
* provides it above every tree it hands to React — hydration included,
|
|
14
|
+
* which builds its chain through the same `renderTree`. It is not a
|
|
15
|
+
* module or `globalThis` singleton: a process-wide Map executed during
|
|
16
|
+
* SSR would be shared by concurrent requests.
|
|
17
|
+
* - **Written only at commit.** `SegmentOutlet` writes from a layout effect,
|
|
18
|
+
* never during render. A render React discards — a transition superseded
|
|
19
|
+
* before it commits, a Suspense retry — leaves the Map untouched, so a
|
|
20
|
+
* later `skip=true` can only ever resolve to content the user actually saw.
|
|
21
|
+
* The content-key record the client advertises (`SegmentCache`, published
|
|
22
|
+
* by `NavigationRoot`'s layout effect on the same commit) and this Map
|
|
23
|
+
* are therefore written by the same React commit and cannot describe
|
|
24
|
+
* different trees.
|
|
25
|
+
* - **`null` outside a router.** SSR renders no provider and the outlet then
|
|
26
|
+
* neither reads nor writes: the server never emits `skip` during SSR, and
|
|
27
|
+
* layout effects do not run there. The default is `null` rather than a
|
|
28
|
+
* shared Map so that "no provider" cannot silently become "shared cache".
|
|
29
|
+
*
|
|
30
|
+
* Singleton across bundler-duplicated chunks via `createGlobalContext`.
|
|
31
|
+
*/
|
|
32
|
+
import type { ReactNode } from 'react';
|
|
33
|
+
export type SlotContentCache = Map<string, ReactNode>;
|
|
34
|
+
export declare const SlotContentCacheContext: import("react").Context<SlotContentCache | null>;
|
|
35
|
+
//# sourceMappingURL=slot-content-cache-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot-content-cache-context.d.ts","sourceRoot":"","sources":["../../src/client/slot-content-cache-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEtD,eAAO,MAAM,uBAAuB,kDAGnC,CAAC"}
|
|
@@ -26,8 +26,14 @@ import type { SlotParamsRecord } from '../shared/slot-params.ts';
|
|
|
26
26
|
export interface SsrData {
|
|
27
27
|
/** The request's URL pathname (e.g. '/dashboard/settings') */
|
|
28
28
|
pathname: string;
|
|
29
|
-
/**
|
|
30
|
-
|
|
29
|
+
/**
|
|
30
|
+
* The request's raw app-visible query string (`''` or `?…`), matching what
|
|
31
|
+
* `window.location.search` will hold after hydration. The raw string is
|
|
32
|
+
* the only representation carried here: it preserves repeated keys
|
|
33
|
+
* (`?tag=a&tag=b`), which a collapsed `Record<string, string>` cannot
|
|
34
|
+
* (TIM-1428). Parse with `new URLSearchParams(search)` where needed.
|
|
35
|
+
*/
|
|
36
|
+
search: string;
|
|
31
37
|
/** The request's cookies as name→value pairs */
|
|
32
38
|
cookies: Map<string, string>;
|
|
33
39
|
/** The request's route params (e.g. { id: '123' }) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr-data.d.ts","sourceRoot":"","sources":["../../src/client/ssr-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,MAAM,WAAW,OAAO;IACtB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB
|
|
1
|
+
{"version":3,"file":"ssr-data.d.ts","sourceRoot":"","sources":["../../src/client/ssr-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,MAAM,WAAW,OAAO;IACtB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,sDAAsD;IACtD,MAAM,EAAE,aAAa,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACzE;AAkBD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,OAAO,GAAG,SAAS,GAAG,IAAI,CAEjF;AAMD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,IAAI,OAAO,GAAG,SAAS,CAKhD"}
|
package/dist/client/state.d.ts
CHANGED
|
@@ -18,8 +18,6 @@
|
|
|
18
18
|
* See design/18-build-system.md §"Module Singleton Strategy" and
|
|
19
19
|
* §"Singleton State Registry".
|
|
20
20
|
*/
|
|
21
|
-
import type { CoercedParams } from '../shared/param-value.ts';
|
|
22
|
-
import type { SlotParamsRecord } from '../shared/slot-params.ts';
|
|
23
21
|
import type { RouterInstance } from './router-types.ts';
|
|
24
22
|
import type { SsrData } from './ssr-data.ts';
|
|
25
23
|
/** The global router singleton — set once during bootstrap. */
|
|
@@ -34,19 +32,6 @@ export declare function _setSsrDataProvider(provider: (() => SsrData | undefined
|
|
|
34
32
|
/** Fallback SSR data for tests and environments without ALS. */
|
|
35
33
|
export declare let currentSsrData: SsrData | undefined;
|
|
36
34
|
export declare function _setCurrentSsrData(data: SsrData | undefined): void;
|
|
37
|
-
/** Current route params snapshot — replaced (not mutated) on each navigation. */
|
|
38
|
-
export declare let currentParams: CoercedParams;
|
|
39
|
-
export declare function _setCurrentParams(params: CoercedParams): void;
|
|
40
|
-
/**
|
|
41
|
-
* Per-slot params snapshot, keyed by slot tree path — the module-level
|
|
42
|
-
* fallback behind `useSegmentParams(slotPath)` when no NavigationContext is
|
|
43
|
-
* mounted (tests, calls outside a component). Replaced, never mutated, on
|
|
44
|
-
* each navigation. See TIM-1285.
|
|
45
|
-
*/
|
|
46
|
-
export declare let currentSlotParams: SlotParamsRecord | null;
|
|
47
|
-
export declare function _setCurrentSlotParams(slotParams: SlotParamsRecord | null): void;
|
|
48
|
-
/** Listeners notified when currentParams changes. */
|
|
49
|
-
export declare const paramsListeners: Set<() => void>;
|
|
50
35
|
/** Cached search string — avoids reparsing when URL hasn't changed. */
|
|
51
36
|
export declare let cachedSearch: string;
|
|
52
37
|
export declare let cachedSearchParams: URLSearchParams;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/client/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/client/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,+DAA+D;AAC/D,eAAO,IAAI,YAAY,EAAE,cAAc,GAAG,IAAW,CAAC;AAEtD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAEpE;AAID;;;GAGG;AACH,eAAO,IAAI,eAAe,EAAE,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;AAEpE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,CAE3F;AAED,gEAAgE;AAChE,eAAO,IAAI,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;AAE/C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAElE;AAID,uEAAuE;AACvE,eAAO,IAAI,YAAY,QAAK,CAAC;AAC7B,eAAO,IAAI,kBAAkB,iBAAwB,CAAC;AAEtD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAG9E;AAID,oDAAoD;AACpD,eAAO,IAAI,SAAS,SAAQ,CAAC;AAE7B,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAElD"}
|
|
@@ -4,24 +4,26 @@
|
|
|
4
4
|
* Returns the pathname portion of the current URL (e.g. '/dashboard/settings').
|
|
5
5
|
* Updates when client-side navigation changes the URL.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* with the RSC tree render. This replaces the previous useSyncExternalStore
|
|
9
|
-
* approach which only subscribed to popstate events — meaning usePathname()
|
|
10
|
-
* did NOT re-render on forward navigation (pushState). The context approach
|
|
11
|
-
* fixes this: pathname updates in the same render pass as the new tree.
|
|
7
|
+
* One unconditional read of NavigationContext, on every side (TIM-1425):
|
|
12
8
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
9
|
+
* - In the browser, the provider wraps the RSC payload in renderRoot(), so
|
|
10
|
+
* the pathname updates in the same render pass as the new tree.
|
|
11
|
+
* - During SSR, the wrapper chain mounts the same provider with the request's
|
|
12
|
+
* pathname (TIM-1424), so this is the identical code path — no ALS read,
|
|
13
|
+
* no fallback tiers.
|
|
14
|
+
* - In the RSC environment, this module is never evaluated — the shims plugin
|
|
15
|
+
* resolves next/navigation to navigation-rsc.ts, which has a throwing stub
|
|
16
|
+
* (TIM-1420).
|
|
17
|
+
* - Called outside a component entirely, React itself throws its
|
|
18
|
+
* invalid-hook-call error — loud, not guessed-at from window.location.
|
|
15
19
|
*
|
|
16
20
|
* Compatible with Next.js's `usePathname()` from `next/navigation`.
|
|
17
21
|
*/
|
|
18
22
|
/**
|
|
19
23
|
* Read the current URL pathname.
|
|
20
24
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* ALS-backed SSR data context. Falls back to window.location.pathname
|
|
24
|
-
* when called outside a React component (e.g., in tests).
|
|
25
|
+
* Throws when no NavigationProvider is above the caller (a component rendered
|
|
26
|
+
* outside the timber app — in tests, render inside the timber providers).
|
|
25
27
|
*/
|
|
26
28
|
export declare function usePathname(): string;
|
|
27
29
|
//# sourceMappingURL=use-pathname.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-pathname.d.ts","sourceRoot":"","sources":["../../src/client/use-pathname.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"use-pathname.d.ts","sourceRoot":"","sources":["../../src/client/use-pathname.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAUpC"}
|
|
@@ -4,30 +4,30 @@
|
|
|
4
4
|
* Returns a read-only URLSearchParams instance reflecting the current
|
|
5
5
|
* URL's query string. Updates when client-side navigation changes the URL.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* with the RSC tree render during full navigations, AND by
|
|
9
|
-
* syncShallowSearch() for shallow URL updates (nuqs shallow: true,
|
|
10
|
-
* replaceUrl, or any external pushState/replaceState that changes the
|
|
11
|
-
* query string). See router-init.ts.
|
|
7
|
+
* One unconditional read of NavigationContext, on every side (TIM-1425):
|
|
12
8
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
9
|
+
* - In the browser, the provider is updated atomically with the RSC tree
|
|
10
|
+
* during full navigations, AND by syncShallowSearch() for shallow URL
|
|
11
|
+
* updates (nuqs shallow: true, replaceUrl, or any external
|
|
12
|
+
* pushState/replaceState that changes the query string). See router-init.ts.
|
|
13
|
+
* - During SSR, the wrapper chain mounts the same provider carrying the
|
|
14
|
+
* request's RAW query string (TIM-1424), so repeated keys
|
|
15
|
+
* (`?tag=a&tag=b`) survive — the collapsed record the ALS context holds
|
|
16
|
+
* cannot represent them.
|
|
17
|
+
* - In the RSC environment, this module is never evaluated — the shims plugin
|
|
18
|
+
* resolves next/navigation to navigation-rsc.ts (TIM-1420).
|
|
18
19
|
*
|
|
19
20
|
* Unlike Next.js's ReadonlyURLSearchParams, this returns a standard
|
|
20
21
|
* URLSearchParams. Mutation methods (set, delete, append) work on the
|
|
21
22
|
* local copy but do NOT affect the URL — use the router or nuqs for that.
|
|
22
23
|
*
|
|
23
|
-
* During SSR, reads the request search params from the SSR ALS context
|
|
24
|
-
* (populated by ssr-entry.ts) instead of window.location.
|
|
25
|
-
*
|
|
26
24
|
* Compatible with Next.js's `useSearchParams()` from `next/navigation`.
|
|
27
25
|
*/
|
|
28
26
|
/**
|
|
29
27
|
* Read the current URL search params.
|
|
30
28
|
*
|
|
29
|
+
* Throws when no NavigationProvider is above the caller.
|
|
30
|
+
*
|
|
31
31
|
* Compatible with Next.js's `useSearchParams()` from `next/navigation`.
|
|
32
32
|
*/
|
|
33
33
|
export declare function useSearchParams(): URLSearchParams;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-search-params.d.ts","sourceRoot":"","sources":["../../src/client/use-search-params.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"use-search-params.d.ts","sourceRoot":"","sources":["../../src/client/use-search-params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAeH;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,eAAe,CAoBjD"}
|
|
@@ -14,85 +14,35 @@
|
|
|
14
14
|
* When the Routes interface is empty (no codegen yet), the generic
|
|
15
15
|
* overload has `keyof Routes = never`, so only the fallback matches.
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
17
|
+
* One unconditional read of ParamsContext, on every side (TIM-1425):
|
|
18
|
+
*
|
|
19
|
+
* - In the browser, `PayloadRoot` publishes the payload's params above the
|
|
20
|
+
* merge point on every render path. Params update atomically with the RSC
|
|
21
|
+
* tree — no timing gap (TIM-1294, TIM-1297).
|
|
22
|
+
* - During SSR, the wrapper chain mounts the same `PayloadRoot`, fed the
|
|
23
|
+
* `params` half of `splitPayloadRoot(root)` — the identical derivation
|
|
24
|
+
* the browser performs at hydration (TIM-1424).
|
|
25
|
+
* - In the RSC environment, this module is never evaluated — the shims plugin
|
|
26
|
+
* resolves next/navigation to navigation-rsc.ts (TIM-1420).
|
|
27
|
+
* - Called outside a component entirely, React itself throws its
|
|
28
|
+
* invalid-hook-call error.
|
|
29
|
+
*
|
|
30
|
+
* The module-level subscribe/notify machinery and the `currentParams`
|
|
31
|
+
* snapshot that used to back a fourth fallback tier are gone (TIM-1425):
|
|
32
|
+
* the provider is unconditional on every render path, so nothing read them.
|
|
29
33
|
*
|
|
30
34
|
* Design doc: design/09-typescript.md §"Typed Routes"
|
|
31
35
|
*/
|
|
32
36
|
import type { CoercedParams } from '../shared/param-value.ts';
|
|
33
37
|
import type { Routes } from '../index.ts';
|
|
34
|
-
import { type SlotParamsRecord } from '../shared/slot-params.ts';
|
|
35
|
-
/**
|
|
36
|
-
* Subscribe to params changes.
|
|
37
|
-
* Retained for backward compatibility with tests that verify the
|
|
38
|
-
* subscribe/notify contract. On the client, useParams() reads from
|
|
39
|
-
* NavigationContext instead.
|
|
40
|
-
*/
|
|
41
|
-
export declare function subscribe(callback: () => void): () => void;
|
|
42
|
-
/**
|
|
43
|
-
* Get the current params snapshot (module-level fallback).
|
|
44
|
-
* Used by tests and by the hook when called outside a React component.
|
|
45
|
-
*/
|
|
46
|
-
export declare function getSnapshot(): CoercedParams;
|
|
47
|
-
/**
|
|
48
|
-
* Set the current route params in the module-level store.
|
|
49
|
-
*
|
|
50
|
-
* Called by the router on each navigation. This updates the fallback
|
|
51
|
-
* snapshot used by tests and by the hook when called outside a React
|
|
52
|
-
* component (no NavigationContext available).
|
|
53
|
-
*
|
|
54
|
-
* On the client, the primary reactivity path is NavigationContext —
|
|
55
|
-
* the router calls setNavigationState() then renderRoot() which wraps
|
|
56
|
-
* the element in NavigationProvider. setCurrentParams is still called
|
|
57
|
-
* for the module-level fallback.
|
|
58
|
-
*
|
|
59
|
-
* During SSR, params are also available via getSsrData().params
|
|
60
|
-
* (ALS-backed).
|
|
61
|
-
*/
|
|
62
|
-
export declare function setCurrentParams(params: CoercedParams): void;
|
|
63
|
-
/**
|
|
64
|
-
* Set the per-slot params snapshot in the module-level store.
|
|
65
|
-
*
|
|
66
|
-
* Paired with `setCurrentParams`: the router calls both on every navigation,
|
|
67
|
-
* including with `null` when a response carries no slot params, so a slot's
|
|
68
|
-
* params from the *previous* route cannot be read on the next one. Fill and
|
|
69
|
-
* serve are paired; so are fill and clear. See TIM-1285.
|
|
70
|
-
*/
|
|
71
|
-
export declare function setCurrentSlotParams(slotParams: SlotParamsRecord | null): void;
|
|
72
|
-
/**
|
|
73
|
-
* Notify all legacy subscribers that params have changed.
|
|
74
|
-
*
|
|
75
|
-
* Retained for backward compatibility with tests. On the client,
|
|
76
|
-
* the NavigationContext + renderRoot pattern replaces this — params
|
|
77
|
-
* update atomically with the tree render, so explicit notification
|
|
78
|
-
* is no longer needed.
|
|
79
|
-
*/
|
|
80
|
-
export declare function notifyParamsListeners(): void;
|
|
81
38
|
/**
|
|
82
39
|
* Read the current route's dynamic params.
|
|
83
40
|
*
|
|
84
41
|
* The optional `_route` argument exists only for TypeScript narrowing —
|
|
85
42
|
* it does not affect the runtime return value.
|
|
86
43
|
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* tree — no timing gap.
|
|
90
|
-
*
|
|
91
|
-
* During SSR, reads from the ALS-backed SSR data context to ensure
|
|
92
|
-
* per-request isolation across concurrent requests with streaming Suspense.
|
|
93
|
-
*
|
|
94
|
-
* When called outside a React component (e.g., in test assertions),
|
|
95
|
-
* falls back to the module-level snapshot.
|
|
44
|
+
* Throws when no `PayloadRoot` is above the caller (a component rendered
|
|
45
|
+
* outside the timber app — in tests, render inside the timber providers).
|
|
96
46
|
*
|
|
97
47
|
* @overload Typed — when a known segment path is passed, returns the
|
|
98
48
|
* exact params shape from the generated Routes interface.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-segment-params.d.ts","sourceRoot":"","sources":["../../src/client/use-segment-params.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"use-segment-params.d.ts","sourceRoot":"","sources":["../../src/client/use-segment-params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,MAAM,EACrD,WAAW,EAAE,CAAC,GACb,MAAM,CAAC,CAAC,CAAC,SAAS;IAAE,aAAa,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,aAAa,CAAC;AACpE,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC"}
|
package/dist/config-types.d.ts
CHANGED
|
@@ -287,6 +287,23 @@ export interface TimberUserConfig {
|
|
|
287
287
|
* See design/19-client-navigation.md §"X-Timber-State-Tree Header"
|
|
288
288
|
*/
|
|
289
289
|
clientSegmentCache?: boolean;
|
|
290
|
+
/**
|
|
291
|
+
* Cache behavior configuration.
|
|
292
|
+
*/
|
|
293
|
+
cache?: {
|
|
294
|
+
/**
|
|
295
|
+
* Promote the runtime-tier cache.component key-discipline warning to a
|
|
296
|
+
* hard error. When true, a cached component that reads request context
|
|
297
|
+
* (cookies, headers, searchParams) during a capture render throws
|
|
298
|
+
* instead of logging — the tainted payload is never cached.
|
|
299
|
+
*
|
|
300
|
+
* Default: false (structured error-level diagnostic, rate-limited per
|
|
301
|
+
* component). Recommended true for any app serving authenticated content.
|
|
302
|
+
*
|
|
303
|
+
* See design/45-cache-lifetimes.md §Enforcement.
|
|
304
|
+
*/
|
|
305
|
+
strictKeyDiscipline?: boolean;
|
|
306
|
+
};
|
|
290
307
|
topLoader?: {
|
|
291
308
|
/** Whether the top-loader is enabled. Default: true. */
|
|
292
309
|
enabled?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-types.d.ts","sourceRoot":"","sources":["../src/config-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config-types.d.ts","sourceRoot":"","sources":["../src/config-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-validation.d.ts","sourceRoot":"","sources":["../src/config-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"config-validation.d.ts","sourceRoot":"","sources":["../src/config-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAsCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,WAAW,EAAE,CAqKtE;AASD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAiBhE;AAeD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAOpE;AAID,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,SAAS,CAAC;CAC1B;AAOD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,EAAE,CAmB1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAgBnE"}
|
package/dist/cookies/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as assertValidCookieName, r as stringifySetCookie, t as parseCookie } from "../_chunks/dist-DtrJyBbw.js";
|
|
2
|
-
import { n as getSsrData } from "../_chunks/ssr-data-
|
|
2
|
+
import { n as getSsrData } from "../_chunks/ssr-data-BQGhTPAK.js";
|
|
3
3
|
import { a as resolveCodecOrSchema } from "../_chunks/schema-bridge-C83xa9lT.js";
|
|
4
4
|
import * as React$1 from "react";
|
|
5
5
|
import { getCookieJar } from "@timber-js/app/server";
|