@timber-js/app 0.2.0-alpha.60 → 0.2.0-alpha.62

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.
Files changed (117) hide show
  1. package/dist/_chunks/{als-registry-Ba7URUIn.js → als-registry-BJARkOcu.js} +1 -1
  2. package/dist/_chunks/{als-registry-Ba7URUIn.js.map → als-registry-BJARkOcu.js.map} +1 -1
  3. package/dist/_chunks/{define-D5STJpIr.js → define-Djpqoe1K.js} +2 -2
  4. package/dist/_chunks/{define-D5STJpIr.js.map → define-Djpqoe1K.js.map} +1 -1
  5. package/dist/_chunks/{define-cookie-DtAavax4.js → define-cookie-B2djY9w0.js} +4 -4
  6. package/dist/_chunks/{define-cookie-DtAavax4.js.map → define-cookie-B2djY9w0.js.map} +1 -1
  7. package/dist/_chunks/{define-TK8C1M3x.js → define-hdajFTq7.js} +2 -2
  8. package/dist/_chunks/{define-TK8C1M3x.js.map → define-hdajFTq7.js.map} +1 -1
  9. package/dist/_chunks/{error-boundary-DpZJBCqh.js → error-boundary-A_sgyyUP.js} +1 -1
  10. package/dist/_chunks/{error-boundary-DpZJBCqh.js.map → error-boundary-A_sgyyUP.js.map} +1 -1
  11. package/dist/_chunks/{tracing-VYETCQsg.js → handler-store-CaE0ZgVG.js} +54 -3
  12. package/dist/_chunks/handler-store-CaE0ZgVG.js.map +1 -0
  13. package/dist/_chunks/{interception-Cey5DCGr.js → interception-BVm64Jr5.js} +7 -13
  14. package/dist/_chunks/interception-BVm64Jr5.js.map +1 -0
  15. package/dist/_chunks/{metadata-routes-BU684ls2.js → metadata-routes-DS3eKNmf.js} +1 -1
  16. package/dist/_chunks/{metadata-routes-BU684ls2.js.map → metadata-routes-DS3eKNmf.js.map} +1 -1
  17. package/dist/_chunks/{request-context-0wfZsnhh.js → request-context-B_u9dyhZ.js} +4 -4
  18. package/dist/_chunks/{request-context-0wfZsnhh.js.map → request-context-B_u9dyhZ.js.map} +1 -1
  19. package/dist/_chunks/segment-classify-BDNn6EzD.js +65 -0
  20. package/dist/_chunks/segment-classify-BDNn6EzD.js.map +1 -0
  21. package/dist/_chunks/{segment-context-CyaM1mrD.js → segment-context-CVRHlkkQ.js} +1 -1
  22. package/dist/_chunks/{segment-context-CyaM1mrD.js.map → segment-context-CVRHlkkQ.js.map} +1 -1
  23. package/dist/_chunks/{stale-reload-DKN3aXxR.js → stale-reload-BeyHXZ5B.js} +5 -2
  24. package/dist/_chunks/{stale-reload-DKN3aXxR.js.map → stale-reload-BeyHXZ5B.js.map} +1 -1
  25. package/dist/_chunks/{use-query-states-wEXY2JQB.js → use-query-states-DAhgj8Gx.js} +1 -1
  26. package/dist/_chunks/{use-query-states-wEXY2JQB.js.map → use-query-states-DAhgj8Gx.js.map} +1 -1
  27. package/dist/_chunks/{wrappers-BaG1bnM3.js → wrappers-CJQ3KwVr.js} +1 -1
  28. package/dist/_chunks/{wrappers-BaG1bnM3.js.map → wrappers-CJQ3KwVr.js.map} +1 -1
  29. package/dist/cache/cache-api.d.ts +24 -0
  30. package/dist/cache/cache-api.d.ts.map +1 -0
  31. package/dist/cache/handler-store.d.ts +31 -0
  32. package/dist/cache/handler-store.d.ts.map +1 -0
  33. package/dist/cache/index.d.ts +2 -1
  34. package/dist/cache/index.d.ts.map +1 -1
  35. package/dist/cache/index.js +33 -2
  36. package/dist/cache/index.js.map +1 -1
  37. package/dist/client/error-boundary.js +1 -1
  38. package/dist/client/index.d.ts +1 -1
  39. package/dist/client/index.d.ts.map +1 -1
  40. package/dist/client/index.js +50 -21
  41. package/dist/client/index.js.map +1 -1
  42. package/dist/client/link.d.ts +6 -0
  43. package/dist/client/link.d.ts.map +1 -1
  44. package/dist/client/rsc-fetch.d.ts.map +1 -1
  45. package/dist/client/stale-reload.d.ts.map +1 -1
  46. package/dist/client/transition-root.d.ts +12 -0
  47. package/dist/client/transition-root.d.ts.map +1 -1
  48. package/dist/cookies/index.js +1 -1
  49. package/dist/index.js +55 -3
  50. package/dist/index.js.map +1 -1
  51. package/dist/params/define.d.ts.map +1 -1
  52. package/dist/params/index.js +3 -3
  53. package/dist/plugins/dev-browser-logs.d.ts.map +1 -1
  54. package/dist/plugins/entries.d.ts.map +1 -1
  55. package/dist/routing/index.d.ts +2 -0
  56. package/dist/routing/index.d.ts.map +1 -1
  57. package/dist/routing/index.js +3 -2
  58. package/dist/routing/scanner.d.ts.map +1 -1
  59. package/dist/routing/segment-classify.d.ts +46 -0
  60. package/dist/routing/segment-classify.d.ts.map +1 -0
  61. package/dist/search-params/index.js +3 -3
  62. package/dist/server/actions.d.ts +0 -3
  63. package/dist/server/actions.d.ts.map +1 -1
  64. package/dist/server/deny-renderer.d.ts.map +1 -1
  65. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  66. package/dist/server/fallback-error.d.ts.map +1 -1
  67. package/dist/server/index.js +100 -17
  68. package/dist/server/index.js.map +1 -1
  69. package/dist/server/pipeline-interception.d.ts.map +1 -1
  70. package/dist/server/pipeline.d.ts.map +1 -1
  71. package/dist/server/route-element-builder.d.ts.map +1 -1
  72. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  73. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  74. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  75. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  76. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  77. package/dist/server/safe-load.d.ts +46 -0
  78. package/dist/server/safe-load.d.ts.map +1 -0
  79. package/dist/server/slot-resolver.d.ts.map +1 -1
  80. package/dist/server/stream-utils.d.ts.map +1 -1
  81. package/dist/server/tracing.d.ts.map +1 -1
  82. package/package.json +1 -1
  83. package/src/cache/cache-api.ts +38 -0
  84. package/src/cache/handler-store.ts +68 -0
  85. package/src/cache/index.ts +2 -1
  86. package/src/client/browser-entry.ts +90 -31
  87. package/src/client/index.ts +1 -1
  88. package/src/client/link.tsx +81 -46
  89. package/src/client/rsc-fetch.ts +3 -1
  90. package/src/client/stale-reload.ts +19 -2
  91. package/src/client/transition-root.tsx +27 -0
  92. package/src/params/define.ts +11 -4
  93. package/src/plugins/dev-browser-logs.ts +10 -0
  94. package/src/plugins/entries.ts +61 -0
  95. package/src/plugins/routing.ts +1 -1
  96. package/src/routing/index.ts +2 -0
  97. package/src/routing/scanner.ts +7 -16
  98. package/src/routing/segment-classify.ts +89 -0
  99. package/src/server/actions.ts +7 -6
  100. package/src/server/deny-renderer.ts +4 -3
  101. package/src/server/error-boundary-wrapper.ts +9 -6
  102. package/src/server/fallback-error.ts +20 -7
  103. package/src/server/pipeline-interception.ts +16 -15
  104. package/src/server/pipeline.ts +20 -2
  105. package/src/server/route-element-builder.ts +5 -4
  106. package/src/server/rsc-entry/api-handler.ts +4 -3
  107. package/src/server/rsc-entry/error-renderer.ts +25 -10
  108. package/src/server/rsc-entry/index.ts +24 -0
  109. package/src/server/rsc-entry/rsc-payload.ts +1 -1
  110. package/src/server/rsc-entry/ssr-bridge.ts +13 -4
  111. package/src/server/rsc-entry/ssr-renderer.ts +12 -1
  112. package/src/server/safe-load.ts +60 -0
  113. package/src/server/slot-resolver.ts +3 -1
  114. package/src/server/stream-utils.ts +10 -6
  115. package/src/server/tracing.ts +14 -3
  116. package/dist/_chunks/interception-Cey5DCGr.js.map +0 -1
  117. package/dist/_chunks/tracing-VYETCQsg.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import { type AnchorHTMLAttributes, type ReactNode } from 'react';
2
2
  import type { SearchParamsDefinition } from '../search-params/define.js';
3
+ import { type UrlSegment } from '../routing/segment-classify.js';
3
4
  export type OnNavigateEvent = {
4
5
  preventDefault: () => void;
5
6
  };
@@ -92,6 +93,11 @@ export declare function isInternalHref(href: string): boolean;
92
93
  * - [...param] → catch-all (joined with /)
93
94
  * - [[...param]] → optional catch-all (omitted if undefined/empty)
94
95
  */
96
+ /**
97
+ * Parse a route pattern's path portion into classified segments.
98
+ * Exported for testing. Uses the shared character-based classifier.
99
+ */
100
+ export declare function parseSegments(pattern: string): UrlSegment[];
95
101
  export declare function interpolateParams(pattern: string, params: Record<string, string | number | string[]>): string;
96
102
  /**
97
103
  * Resolve the final href string from Link props.
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/client/link.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/client/link.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rsc-fetch.d.ts","sourceRoot":"","sources":["../../src/client/rsc-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,uFAAuF;AACvF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACnC,uFAAuF;IACvF,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAClC,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjD,+EAA+E;IAC/E,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAClC;AAID,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAoCnD,8DAA8D;AAC9D,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE7D;AAED,oCAAoC;AACpC,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAErD;AAID,sEAAsE;AACtE,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAE/C,kDAAkD;AAClD,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAE7D;AAID,wBAAgB,eAAe,CAC7B,SAAS,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,EAC7C,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBxB;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE,GAAG,IAAI,CAQ5E;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE,GAAG,IAAI,CAQ3E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,IAAI,CAS1E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAQ1F;AAID;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBACjB,GAAG,EAAE,MAAM;CAIxB;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;;CAI1C;AAED;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBACT,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAKxC;AAID;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,EAClC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CAoEtB"}
1
+ {"version":3,"file":"rsc-fetch.d.ts","sourceRoot":"","sources":["../../src/client/rsc-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,uFAAuF;AACvF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACnC,uFAAuF;IACvF,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAClC,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjD,+EAA+E;IAC/E,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAClC;AAID,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAoCnD,8DAA8D;AAC9D,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE7D;AAED,oCAAoC;AACpC,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAErD;AAID,sEAAsE;AACtE,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAE/C,kDAAkD;AAClD,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAE7D;AAID,wBAAgB,eAAe,CAC7B,SAAS,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,EAC7C,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBxB;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE,GAAG,IAAI,CAQ5E;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE,GAAG,IAAI,CAQ3E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,IAAI,CAS1E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAQ1F;AAID;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBACjB,GAAG,EAAE,MAAM;CAIxB;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;;CAI1C;AAED;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBACT,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAKxC;AAID;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,EAClC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CAsEtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"stale-reload.d.ts","sourceRoot":"","sources":["../../src/client/stale-reload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAcH;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI9D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAYxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA0C5C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAO3C"}
1
+ {"version":3,"file":"stale-reload.d.ts","sourceRoot":"","sources":["../../src/client/stale-reload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAcH;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI9D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAYxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAqD5C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAa3C"}
@@ -71,4 +71,16 @@ export declare function navigateTransition(pendingUrl: string, perform: () => Pr
71
71
  * Used by browser-entry.ts to guard against renders before hydration.
72
72
  */
73
73
  export declare function isTransitionRootReady(): boolean;
74
+ /**
75
+ * Install one-shot deferred callbacks for the no-RSC bootstrap path (TIM-600).
76
+ *
77
+ * When there's no RSC payload, we can't create a React root immediately —
78
+ * `createRoot(document).render(...)` would blank the SSR HTML. Instead,
79
+ * this sets up `_transitionRender` and `_navigateTransition` so that the
80
+ * first client navigation triggers root creation via `createAndMount`.
81
+ *
82
+ * After `createAndMount` runs, TransitionRoot renders and overwrites these
83
+ * callbacks with its real `startTransition`-based implementations.
84
+ */
85
+ export declare function installDeferredNavigation(createAndMount: (initial: ReactNode) => void): void;
74
86
  //# sourceMappingURL=transition-root.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transition-root.d.ts","sourceRoot":"","sources":["../../src/client/transition-root.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzF,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAsBlE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,GAAG,SAAS,CA2DZ;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAIzD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C"}
1
+ {"version":3,"file":"transition-root.d.ts","sourceRoot":"","sources":["../../src/client/transition-root.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzF,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAsBlE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,GAAG,SAAS,CA2DZ;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAIzD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI,CAc5F"}
@@ -1,2 +1,2 @@
1
- import { n as defineCookie } from "../_chunks/define-cookie-DtAavax4.js";
1
+ import { n as defineCookie } from "../_chunks/define-cookie-B2djY9w0.js";
2
2
  export { defineCookie };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { r as __toESM, t as __commonJSMin } from "./_chunks/chunk-DYhsFzuS.js";
2
2
  import { r as setViteServer, t as formatSize } from "./_chunks/format-cX7wzEp2.js";
3
- import { i as scanRoutes, n as generateRouteMap, t as collectInterceptionRewrites } from "./_chunks/interception-Cey5DCGr.js";
3
+ import { i as scanRoutes, n as generateRouteMap, t as collectInterceptionRewrites } from "./_chunks/interception-BVm64Jr5.js";
4
4
  import { existsSync, readFileSync } from "node:fs";
5
5
  import { dirname, extname, join, normalize, resolve } from "node:path";
6
6
  import { createRequire } from "node:module";
@@ -11902,7 +11902,8 @@ var VIRTUAL_IDS = {
11902
11902
  ssrEntry: "virtual:timber-ssr-entry",
11903
11903
  browserEntry: "virtual:timber-browser-entry",
11904
11904
  config: "virtual:timber-config",
11905
- instrumentation: "virtual:timber-instrumentation"
11905
+ instrumentation: "virtual:timber-instrumentation",
11906
+ cacheHandler: "virtual:timber-cache-handler"
11906
11907
  };
11907
11908
  /**
11908
11909
  * Map from virtual module IDs to their resolved file paths.
@@ -11922,6 +11923,8 @@ var ENTRY_FILE_MAP = {
11922
11923
  var RESOLVED_CONFIG_ID = `\0${VIRTUAL_IDS.config}`;
11923
11924
  /** The \0-prefixed resolved ID for virtual:timber-instrumentation */
11924
11925
  var RESOLVED_INSTRUMENTATION_ID = `\0${VIRTUAL_IDS.instrumentation}`;
11926
+ /** The \0-prefixed resolved ID for virtual:timber-cache-handler */
11927
+ var RESOLVED_CACHE_HANDLER_ID = `\0${VIRTUAL_IDS.cacheHandler}`;
11925
11928
  /**
11926
11929
  * Strip the \0 prefix from a module ID.
11927
11930
  *
@@ -12025,6 +12028,51 @@ function generateInstrumentationModule(instrumentationPath) {
12025
12028
  ].join("\n");
12026
12029
  }
12027
12030
  /**
12031
+ * Detect the user's timber.config file at the project root.
12032
+ * Returns the absolute path or null if not found.
12033
+ */
12034
+ function detectConfigFile(root) {
12035
+ for (const name of [
12036
+ "timber.config.ts",
12037
+ "timber.config.js",
12038
+ "timber.config.mjs"
12039
+ ]) {
12040
+ const candidate = resolve(root, name);
12041
+ if (existsSync(candidate)) return candidate;
12042
+ }
12043
+ return null;
12044
+ }
12045
+ /**
12046
+ * Generate the virtual:timber-cache-handler module source.
12047
+ *
12048
+ * When the user's config has a cacheHandler, generates a module that
12049
+ * dynamically imports the config file and extracts the cacheHandler.
12050
+ * The cacheHandler is a class instance (e.g. RedisCacheHandler) that
12051
+ * cannot be JSON-serialized into virtual:timber-config, so it must
12052
+ * be loaded at runtime via dynamic import. See TIM-599.
12053
+ */
12054
+ function generateCacheHandlerModule(configPath, hasCacheHandler) {
12055
+ if (configPath && hasCacheHandler) return [
12056
+ "// Auto-generated cache handler loader — do not edit.",
12057
+ "// Generated by timber-entries plugin.",
12058
+ "",
12059
+ `export default async function loadCacheHandler() {`,
12060
+ ` const mod = await import(${JSON.stringify(configPath)});`,
12061
+ ` const config = mod.default ?? mod;`,
12062
+ ` return config.cacheHandler ?? null;`,
12063
+ `}`
12064
+ ].join("\n");
12065
+ return [
12066
+ "// Auto-generated cache handler loader — do not edit.",
12067
+ "// Generated by timber-entries plugin.",
12068
+ "// No cacheHandler configured in timber.config.",
12069
+ "",
12070
+ `export default async function loadCacheHandler() {`,
12071
+ ` return null;`,
12072
+ `}`
12073
+ ].join("\n");
12074
+ }
12075
+ /**
12028
12076
  * Create the timber-entries Vite plugin.
12029
12077
  *
12030
12078
  * Hooks: resolveId, load
@@ -12038,11 +12086,13 @@ function timberEntries(ctx) {
12038
12086
  if (cleanId in ENTRY_FILE_MAP) return ENTRY_FILE_MAP[cleanId];
12039
12087
  if (cleanId === VIRTUAL_IDS.config) return RESOLVED_CONFIG_ID;
12040
12088
  if (cleanId === VIRTUAL_IDS.instrumentation) return RESOLVED_INSTRUMENTATION_ID;
12089
+ if (cleanId === VIRTUAL_IDS.cacheHandler) return RESOLVED_CACHE_HANDLER_ID;
12041
12090
  return null;
12042
12091
  },
12043
12092
  load(id) {
12044
12093
  if (id === RESOLVED_CONFIG_ID) return generateConfigModule(ctx);
12045
12094
  if (id === RESOLVED_INSTRUMENTATION_ID) return generateInstrumentationModule(detectInstrumentationFile(ctx.root));
12095
+ if (id === RESOLVED_CACHE_HANDLER_ID) return generateCacheHandlerModule(detectConfigFile(ctx.root), ctx.config.cacheHandler != null);
12046
12096
  return null;
12047
12097
  }
12048
12098
  };
@@ -12235,7 +12285,7 @@ var RESOLVED_VIRTUAL_ID$1 = `\0${VIRTUAL_MODULE_ID$1}`;
12235
12285
  /**
12236
12286
  * File convention names we track for changes that require manifest regeneration.
12237
12287
  */
12238
- var ROUTE_FILE_PATTERNS = /\/(page|layout|middleware|access|route|error|default|denied|params|\d{3}|[45]xx|not-found|forbidden|unauthorized|sitemap|robots|manifest|favicon|icon|opengraph-image|twitter-image|apple-icon)\./;
12288
+ var ROUTE_FILE_PATTERNS = /\/(page|layout|middleware|access|route|error|global-error|default|denied|params|\d{3}|[45]xx|not-found|forbidden|unauthorized|sitemap|robots|manifest|favicon|icon|opengraph-image|twitter-image|apple-icon)\./;
12239
12289
  /**
12240
12290
  * Create the timber-routing Vite plugin.
12241
12291
  *
@@ -14559,6 +14609,8 @@ function timberDevBrowserLogs(ctx) {
14559
14609
  configureServer(server) {
14560
14610
  const threshold = ctx.config.devBrowserLogs ?? "warn";
14561
14611
  if (threshold === "none") return;
14612
+ const script = generateClientScript(threshold);
14613
+ if (script) globalThis.__timber_dev_browser_log_script = `<script type="module">${script}<\/script>`;
14562
14614
  server.hot.on(HMR_EVENT, (payload) => {
14563
14615
  try {
14564
14616
  if (!shouldForwardLevel(payload.level, threshold)) return;