@timber-js/app 0.2.0-alpha.2 → 0.2.0-alpha.20

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 (128) hide show
  1. package/dist/_chunks/{als-registry-k-AtAQ9R.js → als-registry-B7DbZ2hS.js} +1 -1
  2. package/dist/_chunks/{als-registry-k-AtAQ9R.js.map → als-registry-B7DbZ2hS.js.map} +1 -1
  3. package/dist/_chunks/debug-B3Gypr3D.js +108 -0
  4. package/dist/_chunks/debug-B3Gypr3D.js.map +1 -0
  5. package/dist/_chunks/{format-DNt20Kt8.js → format-RyoGQL74.js} +3 -2
  6. package/dist/_chunks/format-RyoGQL74.js.map +1 -0
  7. package/dist/_chunks/{interception-DGDIjDbR.js → interception-BOoWmLUA.js} +2 -2
  8. package/dist/_chunks/{interception-DGDIjDbR.js.map → interception-BOoWmLUA.js.map} +1 -1
  9. package/dist/_chunks/{metadata-routes-CQCnF4VK.js → metadata-routes-Cjmvi3rQ.js} +1 -1
  10. package/dist/_chunks/{metadata-routes-CQCnF4VK.js.map → metadata-routes-Cjmvi3rQ.js.map} +1 -1
  11. package/dist/_chunks/{request-context-CRj2Zh1E.js → request-context-BQUC8PHn.js} +5 -4
  12. package/dist/_chunks/request-context-BQUC8PHn.js.map +1 -0
  13. package/dist/_chunks/{ssr-data-DLnbYpj1.js → ssr-data-MjmprTmO.js} +1 -1
  14. package/dist/_chunks/{ssr-data-DLnbYpj1.js.map → ssr-data-MjmprTmO.js.map} +1 -1
  15. package/dist/_chunks/{tracing-DF0G3FB7.js → tracing-CemImE6h.js} +17 -3
  16. package/dist/_chunks/{tracing-DF0G3FB7.js.map → tracing-CemImE6h.js.map} +1 -1
  17. package/dist/_chunks/{use-cookie-dDbpCTx-.js → use-cookie-DX-l1_5E.js} +2 -2
  18. package/dist/_chunks/{use-cookie-dDbpCTx-.js.map → use-cookie-DX-l1_5E.js.map} +1 -1
  19. package/dist/_chunks/{use-query-states-DAhgj8Gx.js → use-query-states-D5KaffOK.js} +1 -1
  20. package/dist/_chunks/{use-query-states-DAhgj8Gx.js.map → use-query-states-D5KaffOK.js.map} +1 -1
  21. package/dist/adapters/nitro.d.ts +17 -1
  22. package/dist/adapters/nitro.d.ts.map +1 -1
  23. package/dist/adapters/nitro.js +17 -5
  24. package/dist/adapters/nitro.js.map +1 -1
  25. package/dist/cache/fast-hash.d.ts +22 -0
  26. package/dist/cache/fast-hash.d.ts.map +1 -0
  27. package/dist/cache/index.js +52 -10
  28. package/dist/cache/index.js.map +1 -1
  29. package/dist/cache/register-cached-function.d.ts.map +1 -1
  30. package/dist/cache/timber-cache.d.ts.map +1 -1
  31. package/dist/client/error-boundary.js +1 -1
  32. package/dist/client/index.js +3 -3
  33. package/dist/client/index.js.map +1 -1
  34. package/dist/client/link.d.ts.map +1 -1
  35. package/dist/client/router.d.ts.map +1 -1
  36. package/dist/client/segment-context.d.ts +1 -1
  37. package/dist/client/segment-context.d.ts.map +1 -1
  38. package/dist/client/segment-merger.d.ts.map +1 -1
  39. package/dist/client/stale-reload.d.ts.map +1 -1
  40. package/dist/client/top-loader.d.ts.map +1 -1
  41. package/dist/client/transition-root.d.ts +1 -1
  42. package/dist/client/transition-root.d.ts.map +1 -1
  43. package/dist/cookies/index.js +4 -4
  44. package/dist/fonts/css.d.ts +1 -0
  45. package/dist/fonts/css.d.ts.map +1 -1
  46. package/dist/fonts/local.d.ts +4 -2
  47. package/dist/fonts/local.d.ts.map +1 -1
  48. package/dist/index.d.ts +28 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +249 -21
  51. package/dist/index.js.map +1 -1
  52. package/dist/plugins/build-report.d.ts +11 -1
  53. package/dist/plugins/build-report.d.ts.map +1 -1
  54. package/dist/plugins/entries.d.ts +7 -0
  55. package/dist/plugins/entries.d.ts.map +1 -1
  56. package/dist/plugins/fonts.d.ts +9 -1
  57. package/dist/plugins/fonts.d.ts.map +1 -1
  58. package/dist/plugins/mdx.d.ts +6 -0
  59. package/dist/plugins/mdx.d.ts.map +1 -1
  60. package/dist/plugins/server-bundle.d.ts.map +1 -1
  61. package/dist/routing/index.js +1 -1
  62. package/dist/search-params/index.js +1 -1
  63. package/dist/server/access-gate.d.ts.map +1 -1
  64. package/dist/server/action-client.d.ts.map +1 -1
  65. package/dist/server/debug.d.ts +82 -0
  66. package/dist/server/debug.d.ts.map +1 -0
  67. package/dist/server/deny-renderer.d.ts.map +1 -1
  68. package/dist/server/dev-warnings.d.ts.map +1 -1
  69. package/dist/server/html-injectors.d.ts.map +1 -1
  70. package/dist/server/index.js +32 -23
  71. package/dist/server/index.js.map +1 -1
  72. package/dist/server/logger.d.ts.map +1 -1
  73. package/dist/server/pipeline.d.ts +7 -4
  74. package/dist/server/pipeline.d.ts.map +1 -1
  75. package/dist/server/primitives.d.ts.map +1 -1
  76. package/dist/server/request-context.d.ts.map +1 -1
  77. package/dist/server/route-element-builder.d.ts.map +1 -1
  78. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  79. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  80. package/dist/server/rsc-entry/rsc-stream.d.ts +6 -0
  81. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  82. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  83. package/dist/server/rsc-prop-warnings.d.ts.map +1 -1
  84. package/dist/server/tracing.d.ts +10 -0
  85. package/dist/server/tracing.d.ts.map +1 -1
  86. package/dist/server/waituntil-bridge.d.ts.map +1 -1
  87. package/dist/shims/image.d.ts +15 -15
  88. package/package.json +2 -1
  89. package/src/adapters/nitro.ts +43 -5
  90. package/src/cache/fast-hash.ts +34 -0
  91. package/src/cache/register-cached-function.ts +7 -3
  92. package/src/cache/timber-cache.ts +17 -10
  93. package/src/client/browser-entry.ts +10 -6
  94. package/src/client/link.tsx +14 -9
  95. package/src/client/router.ts +4 -6
  96. package/src/client/segment-context.ts +6 -1
  97. package/src/client/segment-merger.ts +2 -8
  98. package/src/client/stale-reload.ts +5 -7
  99. package/src/client/top-loader.tsx +23 -19
  100. package/src/client/transition-root.tsx +7 -1
  101. package/src/fonts/css.ts +2 -1
  102. package/src/fonts/local.ts +7 -3
  103. package/src/index.ts +35 -2
  104. package/src/plugins/build-report.ts +23 -3
  105. package/src/plugins/entries.ts +9 -4
  106. package/src/plugins/fonts.ts +171 -19
  107. package/src/plugins/mdx.ts +9 -5
  108. package/src/plugins/server-bundle.ts +4 -0
  109. package/src/server/access-gate.tsx +3 -2
  110. package/src/server/action-client.ts +15 -5
  111. package/src/server/debug.ts +137 -0
  112. package/src/server/deny-renderer.ts +3 -2
  113. package/src/server/dev-warnings.ts +2 -1
  114. package/src/server/html-injectors.ts +30 -10
  115. package/src/server/logger.ts +4 -3
  116. package/src/server/pipeline.ts +34 -20
  117. package/src/server/primitives.ts +2 -1
  118. package/src/server/request-context.ts +3 -2
  119. package/src/server/route-element-builder.ts +1 -6
  120. package/src/server/rsc-entry/index.ts +50 -7
  121. package/src/server/rsc-entry/rsc-payload.ts +42 -7
  122. package/src/server/rsc-entry/rsc-stream.ts +10 -5
  123. package/src/server/rsc-entry/ssr-renderer.ts +12 -5
  124. package/src/server/rsc-prop-warnings.ts +3 -1
  125. package/src/server/tracing.ts +23 -0
  126. package/src/server/waituntil-bridge.ts +4 -1
  127. package/dist/_chunks/format-DNt20Kt8.js.map +0 -1
  128. package/dist/_chunks/request-context-CRj2Zh1E.js.map +0 -1
@@ -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":"AAoBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAiC,MAAM,OAAO,CAAC;AAC5F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAMxE,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;AAE7D;;GAEG;AACH,UAAU,aAAc,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACnF,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE;QACb,UAAU,EAAE,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjC,CAAC;CACH;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACnD;;OAEG;IACH,YAAY,CAAC,EAAE;QACb,UAAU,EAAE,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjC,CAAC;CACH;AAED,MAAM,MAAM,SAAS,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAUhE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAOnD;AAID,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWpD;AAID;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,GACjD,MAAM,CAgDR;AAID;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,EACnD,YAAY,CAAC,EAAE;IACb,UAAU,EAAE,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,GACA,MAAM,CAyBR;AAID,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACpD,YAAY,CAAC,EAAE;QACb,UAAU,EAAE,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjC,CAAC;CACH,GACA,eAAe,CAIjB;AAkCD;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,MAAM,EACN,YAAY,EACZ,UAAU,EACV,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,SAAS,2CAuDX"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/client/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/client/router.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,6 @@ interface SegmentProviderProps {
34
34
  * Wraps each layout to provide segment position context.
35
35
  * Injected by rsc-entry.ts during element tree construction.
36
36
  */
37
- export declare function SegmentProvider({ segments, segmentId: _segmentId, parallelRouteKeys, children }: SegmentProviderProps): import("react").FunctionComponentElement<import("react").ProviderProps<SegmentContextValue | null>>;
37
+ export declare function SegmentProvider({ segments, segmentId: _segmentId, parallelRouteKeys, children, }: SegmentProviderProps): import("react").FunctionComponentElement<import("react").ProviderProps<SegmentContextValue | null>>;
38
38
  export {};
39
39
  //# sourceMappingURL=segment-context.d.ts.map
@@ -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,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,oBAAoB,uGASrH"}
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,uGAStB"}
@@ -1 +1 @@
1
- {"version":3,"file":"segment-merger.d.ts","sourceRoot":"","sources":["../../src/client/segment-merger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAgC,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIxF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,OAAO,EAAE,YAAY,CAAC;IACtB;;;;;OAKG;IACH,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAID;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAyC;IAExD,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIxD,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAIzD,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIjC,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;;;;;;OAYG;IACH,iBAAiB,IAAI,GAAG,CAAC,MAAM,CAAC;CASjC;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,YAAY,CAI3E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAM5D;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,kBAAkB,EAAE,CAUtE;AAuCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,mBAAmB,GACzB,IAAI,CAKN;AAqDD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,YAAY,EAC3B,eAAe,EAAE,SAAS,EAC1B,gBAAgB,CAAC,EAAE,MAAM,GACxB,YAAY,CAoCd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,OAAO,EACvB,eAAe,EAAE,MAAM,EAAE,EACzB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CA0BT"}
1
+ {"version":3,"file":"segment-merger.d.ts","sourceRoot":"","sources":["../../src/client/segment-merger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAgC,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIxF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,OAAO,EAAE,YAAY,CAAC;IACtB;;;;;OAKG;IACH,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAID;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAyC;IAExD,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIxD,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAIzD,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIjC,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;;;;;;OAYG;IACH,iBAAiB,IAAI,GAAG,CAAC,MAAM,CAAC;CASjC;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,YAAY,CAI3E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAM5D;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,kBAAkB,EAAE,CAUtE;AAuCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAKvF;AAkDD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,YAAY,EAC3B,eAAe,EAAE,SAAS,EAC1B,gBAAgB,CAAC,EAAE,MAAM,GACxB,YAAY,CAoCd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,OAAO,EACvB,eAAe,EAAE,MAAM,EAAE,EACzB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CA0BT"}
@@ -1 +1 @@
1
- {"version":3,"file":"stale-reload.d.ts","sourceRoot":"","sources":["../../src/client/stale-reload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA+B5C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C"}
1
+ {"version":3,"file":"stale-reload.d.ts","sourceRoot":"","sources":["../../src/client/stale-reload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA6B5C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"top-loader.d.ts","sourceRoot":"","sources":["../../src/client/top-loader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AASH,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA6CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA6F7F"}
1
+ {"version":3,"file":"top-loader.d.ts","sourceRoot":"","sources":["../../src/client/top-loader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AASH,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAmDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA2F7F"}
@@ -40,7 +40,7 @@ import { type TopLoaderConfig } from './top-loader.js';
40
40
  * Non-navigation renders:
41
41
  * transitionRender(newWrappedElement);
42
42
  */
43
- export declare function TransitionRoot({ initial, topLoaderConfig }: {
43
+ export declare function TransitionRoot({ initial, topLoaderConfig, }: {
44
44
  initial: ReactNode;
45
45
  topLoaderConfig?: TopLoaderConfig;
46
46
  }): ReactNode;
@@ -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;AAqBlE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,eAAe,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,SAAS,CAgDjI;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;AAqBlE;;;;;;;;;;;;;;;;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,CAgDZ;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,7 +1,7 @@
1
- import "../_chunks/als-registry-k-AtAQ9R.js";
2
- import { n as cookies } from "../_chunks/request-context-CRj2Zh1E.js";
3
- import "../_chunks/ssr-data-DLnbYpj1.js";
4
- import { t as useCookie } from "../_chunks/use-cookie-dDbpCTx-.js";
1
+ import "../_chunks/als-registry-B7DbZ2hS.js";
2
+ import { n as cookies } from "../_chunks/request-context-BQUC8PHn.js";
3
+ import "../_chunks/ssr-data-MjmprTmO.js";
4
+ import { t as useCookie } from "../_chunks/use-cookie-DX-l1_5E.js";
5
5
  //#region src/cookies/define-cookie.ts
6
6
  /**
7
7
  * defineCookie — typed cookie definitions.
@@ -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
  */
@@ -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;;;;;;;;;GASG;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"}
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"}
@@ -45,9 +45,11 @@ export declare function generateFamilyName(sources: LocalFontSrc[]): string;
45
45
  * Generate @font-face descriptors for local font sources.
46
46
  *
47
47
  * Each source entry produces one @font-face rule. The `src` descriptor
48
- * uses a `url()` pointing to the resolved file path with the inferred format.
48
+ * uses a `url()` pointing to the served path under `/_timber/fonts/`.
49
+ * The `urlPrefix` defaults to `/_timber/fonts` — the path used by both
50
+ * the dev server middleware and the production build output.
49
51
  */
50
- export declare function generateLocalFontFaces(family: string, sources: LocalFontSrc[], display: string): FontFaceDescriptor[];
52
+ export declare function generateLocalFontFaces(family: string, sources: LocalFontSrc[], display: string, urlPrefix?: string): FontFaceDescriptor[];
51
53
  /**
52
54
  * Build the className for a local font, following the same convention
53
55
  * as Google fonts: `timber-font-<lowercase-hyphenated-family>`.
@@ -1 +1 @@
1
- {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/fonts/local.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAInG;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,GAAG,YAAY,EAAE,CASzE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,YAAY,EAAE,GACtB,YAAY,EAAE,CAMhB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAYlE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,MAAM,GACd,kBAAkB,EAAE,CAWtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa,CAyB7F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAEjF"}
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/fonts/local.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAInG;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,GAAG,YAAY,EAAE,CASzE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,YAAY,EAAE,GACtB,YAAY,EAAE,CAMhB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAYlE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,SAAmB,GAC3B,kBAAkB,EAAE,CAYtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa,CAyB7F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAEjF"}
package/dist/index.d.ts CHANGED
@@ -19,6 +19,18 @@ export interface ResolvedClientJavascript {
19
19
  }
20
20
  export interface TimberUserConfig {
21
21
  output?: 'server' | 'static';
22
+ /**
23
+ * Enable timber debug logging in production builds.
24
+ *
25
+ * When `true`, timber's own diagnostics (dev warnings, verbose logging)
26
+ * are active even in production mode. React stays in production mode —
27
+ * only timber's logs are affected.
28
+ *
29
+ * Can also be enabled at runtime via the `TIMBER_DEBUG` environment variable.
30
+ *
31
+ * Default: `false`.
32
+ */
33
+ debug?: boolean;
22
34
  /**
23
35
  * Control client-side JavaScript output.
24
36
  *
@@ -68,6 +80,22 @@ export interface TimberUserConfig {
68
80
  /** Array of signing secrets for key rotation. Index 0 signs; all verify. */
69
81
  secrets?: string[];
70
82
  };
83
+ /**
84
+ * Control Server-Timing header output.
85
+ *
86
+ * - `'detailed'` — per-phase breakdown (proxy, middleware, render). Useful
87
+ * for APM / network monitoring. Exposes phase names to clients.
88
+ * - `'total'` — single `total;dur=N` entry. Safe to expose, gives
89
+ * browser DevTools useful timing without internal details.
90
+ * - `false` — no Server-Timing header at all.
91
+ *
92
+ * Default: `'detailed'` in dev, `'total'` in production.
93
+ *
94
+ * This is separate from `debug` / `TIMBER_DEBUG` — it's an intentional
95
+ * decision to expose timing data to clients, not a side effect of debug
96
+ * logging.
97
+ */
98
+ serverTiming?: 'detailed' | 'total' | false;
71
99
  /**
72
100
  * Override the app directory location. By default, timber auto-detects
73
101
  * `app/` at the project root, falling back to `src/app/`.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,MAAM,CAAC;AAwBjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qEAAqE;AACrE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC7B;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;;;;;;;;OAaG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAAC;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,GAAG,CAAC,EAAE;QACJ,oFAAoF;QACpF,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF;;;;;OAKG;IACH,OAAO,CAAC,EAAE;QACR,gEAAgE;QAChE,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,4EAA4E;QAC5E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;IAC5C;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8FAA8F;IAC9F,GAAG,CAAC,EAAE;QACJ,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;QAC1B,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;QAC1B,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;QACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/C,CAAC;IACF;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE;QACV,wDAAwD;QACxD,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,qCAAqC;QACrC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,wCAAwC;QACxC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,qDAAqD;QACrD,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,kFAAkF;QAClF,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,kCAAkC;QAClC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,wBAAwB,CAmB1F;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,gBAAgB,CAAC;IACzB,+CAA+C;IAC/C,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,uFAAuF;IACvF,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,GAAG,EAAE,OAAO,CAAC;IACb,gFAAgF;IAChF,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,mFAAmF;IACnF,KAAK,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBzE;AAmCD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,gBAAgB,GAC3B,MAAM,EAAE,CAiBV;AA6BD,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAuIhE;AAED;;;;;;;;;GASG;AAEH,MAAM,WAAW,MAAM;CAAG;AAE1B,eAAe,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { r as setViteServer, t as formatSize } from "./_chunks/format-DNt20Kt8.js";
2
- import { i as scanRoutes, n as generateRouteMap, t as collectInterceptionRewrites } from "./_chunks/interception-DGDIjDbR.js";
1
+ import { r as setViteServer, t as formatSize } from "./_chunks/format-RyoGQL74.js";
2
+ import { i as scanRoutes, n as generateRouteMap, t as collectInterceptionRewrites } from "./_chunks/interception-BOoWmLUA.js";
3
3
  import { existsSync, readFileSync } from "node:fs";
4
- import { dirname, extname, join, resolve } from "node:path";
4
+ import { dirname, extname, join, normalize, resolve } from "node:path";
5
5
  import { fileURLToPath, pathToFileURL } from "node:url";
6
6
  import { createRequire } from "node:module";
7
7
  import react from "@vitejs/plugin-react";
@@ -11933,7 +11933,9 @@ function generateConfigModule(ctx) {
11933
11933
  slowPhaseMs: ctx.config.dev?.slowPhaseMs ?? 200,
11934
11934
  slowRequestMs: ctx.config.slowRequestMs ?? 3e3,
11935
11935
  cookieSecrets,
11936
- topLoader: ctx.config.topLoader
11936
+ topLoader: ctx.config.topLoader,
11937
+ debug: ctx.config.debug ?? false,
11938
+ serverTiming: ctx.config.serverTiming
11937
11939
  };
11938
11940
  return [
11939
11941
  "// Auto-generated runtime config — do not edit.",
@@ -11951,12 +11953,14 @@ function generateConfigModule(ctx) {
11951
11953
  * extensions as timber.config.ts detection.
11952
11954
  */
11953
11955
  function detectInstrumentationFile(root) {
11954
- for (const ext of [
11956
+ const extensions = [
11955
11957
  ".ts",
11956
11958
  ".js",
11957
11959
  ".mjs"
11958
- ]) {
11959
- const candidate = resolve(root, `instrumentation${ext}`);
11960
+ ];
11961
+ const dirs = [root, resolve(root, "src")];
11962
+ for (const dir of dirs) for (const ext of extensions) {
11963
+ const candidate = resolve(dir, `instrumentation${ext}`);
11960
11964
  if (existsSync(candidate)) return candidate;
11961
11965
  }
11962
11966
  return null;
@@ -12016,17 +12020,20 @@ function timberEntries(ctx) {
12016
12020
  //#region src/plugins/mdx.ts
12017
12021
  var MDX_EXTENSIONS = ["mdx", "md"];
12018
12022
  /**
12019
- * Check if mdx-components.tsx (or .ts, .jsx, .js) exists at the project root.
12023
+ * Check if mdx-components.tsx (or .ts, .jsx, .js) exists at the project root
12024
+ * or in src/. Root takes precedence, matching Next.js behavior.
12020
12025
  * Returns the absolute path if found, otherwise undefined.
12021
12026
  */
12022
12027
  function findMdxComponents(root) {
12023
- for (const name of [
12028
+ const candidates = [
12024
12029
  "mdx-components.tsx",
12025
12030
  "mdx-components.ts",
12026
12031
  "mdx-components.jsx",
12027
12032
  "mdx-components.js"
12028
- ]) {
12029
- const p = join(root, name);
12033
+ ];
12034
+ const dirs = [root, join(root, "src")];
12035
+ for (const dir of dirs) for (const name of candidates) {
12036
+ const p = join(dir, name);
12030
12037
  if (existsSync(p)) return p;
12031
12038
  }
12032
12039
  }
@@ -12540,6 +12547,59 @@ export const coerce = stub;
12540
12547
  };
12541
12548
  }
12542
12549
  //#endregion
12550
+ //#region src/fonts/css.ts
12551
+ /**
12552
+ * Generate a single `@font-face` CSS rule from a descriptor.
12553
+ */
12554
+ function generateFontFace(desc) {
12555
+ const lines = [];
12556
+ lines.push("@font-face {");
12557
+ lines.push(` font-family: '${desc.family}';`);
12558
+ lines.push(` src: ${desc.src};`);
12559
+ if (desc.weight) lines.push(` font-weight: ${desc.weight};`);
12560
+ if (desc.style) lines.push(` font-style: ${desc.style};`);
12561
+ if (desc.display) lines.push(` font-display: ${desc.display};`);
12562
+ if (desc.unicodeRange) lines.push(` unicode-range: ${desc.unicodeRange};`);
12563
+ lines.push("}");
12564
+ return lines.join("\n");
12565
+ }
12566
+ /**
12567
+ * Generate multiple `@font-face` rules from an array of descriptors.
12568
+ */
12569
+ function generateFontFaces(descriptors) {
12570
+ return descriptors.map(generateFontFace).join("\n\n");
12571
+ }
12572
+ /**
12573
+ * Generate a scoped CSS class that sets a CSS custom property for the font.
12574
+ *
12575
+ * Example output:
12576
+ * ```css
12577
+ * .timber-font-inter {
12578
+ * --font-sans: 'Inter', 'Inter Fallback', system-ui, sans-serif;
12579
+ * font-family: 'Inter', 'Inter Fallback', system-ui, sans-serif;
12580
+ * }
12581
+ * ```
12582
+ */
12583
+ function generateVariableClass(className, variable, fontFamily) {
12584
+ return `.${className} {\n ${variable}: ${fontFamily};\n font-family: ${fontFamily};\n}`;
12585
+ }
12586
+ /**
12587
+ * Generate a scoped CSS class that applies font-family directly.
12588
+ *
12589
+ * Used when no `variable` is specified — the className applies
12590
+ * the font-family inline instead of through a CSS custom property.
12591
+ *
12592
+ * Example output:
12593
+ * ```css
12594
+ * .timber-font-inter {
12595
+ * font-family: 'Inter', 'Inter Fallback', system-ui, sans-serif;
12596
+ * }
12597
+ * ```
12598
+ */
12599
+ function generateFontFamilyClass(className, fontFamily) {
12600
+ return `.${className} {\n font-family: ${fontFamily};\n}`;
12601
+ }
12602
+ //#endregion
12543
12603
  //#region src/fonts/fallbacks.ts
12544
12604
  /**
12545
12605
  * Lookup table for commonly used Google Fonts.
@@ -12678,6 +12738,26 @@ function getGenericFamily(family) {
12678
12738
  return "sans-serif";
12679
12739
  }
12680
12740
  /**
12741
+ * Generate the full CSS for a size-adjusted fallback font.
12742
+ *
12743
+ * This produces a complete @font-face block with override descriptors
12744
+ * that FontFaceDescriptor doesn't natively support.
12745
+ */
12746
+ function generateFallbackCss(family) {
12747
+ const metrics = FALLBACK_METRICS[family.toLowerCase()];
12748
+ if (!metrics) return null;
12749
+ return [
12750
+ "@font-face {",
12751
+ ` font-family: '${`${family} Fallback`}';`,
12752
+ ` src: local('${metrics.fallbackFont}');`,
12753
+ ` size-adjust: ${metrics.sizeAdjust}%;`,
12754
+ ` ascent-override: ${metrics.ascentOverride}%;`,
12755
+ ` descent-override: ${metrics.descentOverride}%;`,
12756
+ ` line-gap-override: ${metrics.lineGapOverride}%;`,
12757
+ "}"
12758
+ ].join("\n");
12759
+ }
12760
+ /**
12681
12761
  * Check whether fallback metrics are available for a font family.
12682
12762
  */
12683
12763
  function hasFallbackMetrics(family) {
@@ -13026,6 +13106,26 @@ function generateFamilyName(sources) {
13026
13106
  return stem.replace(/[-_]?(Regular|Bold|Italic|Light|Medium|SemiBold|ExtraBold|Thin|Black|Heavy)$/i, "") || stem;
13027
13107
  }
13028
13108
  /**
13109
+ * Generate @font-face descriptors for local font sources.
13110
+ *
13111
+ * Each source entry produces one @font-face rule. The `src` descriptor
13112
+ * uses a `url()` pointing to the served path under `/_timber/fonts/`.
13113
+ * The `urlPrefix` defaults to `/_timber/fonts` — the path used by both
13114
+ * the dev server middleware and the production build output.
13115
+ */
13116
+ function generateLocalFontFaces(family, sources, display, urlPrefix = "/_timber/fonts") {
13117
+ return sources.map((entry) => {
13118
+ const format = inferFontFormat(entry.path);
13119
+ return {
13120
+ family,
13121
+ src: `url('${urlPrefix}/${entry.path.split("/").pop() ?? entry.path}') format('${format}')`,
13122
+ weight: entry.weight,
13123
+ style: entry.style,
13124
+ display
13125
+ };
13126
+ });
13127
+ }
13128
+ /**
13029
13129
  * Build the className for a local font, following the same convention
13030
13130
  * as Google fonts: `timber-font-<lowercase-hyphenated-family>`.
13031
13131
  */
@@ -13261,6 +13361,22 @@ var VIRTUAL_LOCAL = "@timber/fonts/local";
13261
13361
  var RESOLVED_GOOGLE = "\0@timber/fonts/google";
13262
13362
  var RESOLVED_LOCAL = "\0@timber/fonts/local";
13263
13363
  /**
13364
+ * Virtual side-effect module that registers font CSS on globalThis.
13365
+ *
13366
+ * When a file calls localFont() or a Google font function, the transform
13367
+ * hook injects `import 'virtual:timber-font-css-register'` into that file.
13368
+ * This virtual module sets `globalThis.__timber_font_css` with the combined
13369
+ * @font-face CSS. The RSC entry reads it at render time to inline a <style> tag.
13370
+ *
13371
+ * This approach avoids timing issues because:
13372
+ * 1. The font file is in the RSC module graph (imported by layout.tsx)
13373
+ * 2. The side-effect import is added to the font file during transform
13374
+ * 3. When layout.tsx is loaded, fonts.ts runs → side-effect module runs → globalThis is set
13375
+ * 4. RSC entry renders → reads globalThis → inlines <style>
13376
+ */
13377
+ var VIRTUAL_FONT_CSS_REGISTER = "virtual:timber-font-css-register";
13378
+ var RESOLVED_FONT_CSS_REGISTER = "\0virtual:timber-font-css-register";
13379
+ /**
13264
13380
  * Convert a font family name to a PascalCase export name.
13265
13381
  * e.g. "JetBrains Mono" → "JetBrains_Mono"
13266
13382
  */
@@ -13407,6 +13523,35 @@ function generateLocalVirtualModule() {
13407
13523
  ].join("\n");
13408
13524
  }
13409
13525
  /**
13526
+ * Generate CSS for a single extracted font.
13527
+ *
13528
+ * Includes @font-face rules (for local fonts), fallback @font-face,
13529
+ * and the scoped class rule.
13530
+ */
13531
+ function generateFontCss(font) {
13532
+ const cssParts = [];
13533
+ if (font.provider === "local" && font.localSources) {
13534
+ const faceCss = generateFontFaces(generateLocalFontFaces(font.family, font.localSources, font.display));
13535
+ if (faceCss) cssParts.push(faceCss);
13536
+ }
13537
+ const fallbackCss = generateFallbackCss(font.family);
13538
+ if (fallbackCss) cssParts.push(fallbackCss);
13539
+ if (font.variable) cssParts.push(generateVariableClass(font.className, font.variable, font.fontFamily));
13540
+ else cssParts.push(generateFontFamilyClass(font.className, font.fontFamily));
13541
+ return cssParts.join("\n\n");
13542
+ }
13543
+ /**
13544
+ * Generate the CSS output for all extracted fonts.
13545
+ *
13546
+ * Includes @font-face rules for local fonts, fallback @font-face rules,
13547
+ * and scoped classes.
13548
+ */
13549
+ function generateAllFontCss(registry) {
13550
+ const cssParts = [];
13551
+ for (const font of registry.values()) cssParts.push(generateFontCss(font));
13552
+ return cssParts.join("\n\n");
13553
+ }
13554
+ /**
13410
13555
  * Parse the local name used for the default import of `@timber/fonts/local`.
13411
13556
  *
13412
13557
  * Handles:
@@ -13457,15 +13602,63 @@ function timberFonts(ctx) {
13457
13602
  return {
13458
13603
  name: "timber-fonts",
13459
13604
  resolveId(id) {
13460
- if (id === VIRTUAL_GOOGLE) return RESOLVED_GOOGLE;
13461
- if (id === VIRTUAL_LOCAL) return RESOLVED_LOCAL;
13605
+ let cleanId = id.startsWith("\0") ? id.slice(1) : id;
13606
+ if (cleanId.startsWith(ctx.root)) {
13607
+ const stripped = cleanId.slice(ctx.root.length);
13608
+ if (stripped.startsWith("/") || stripped.startsWith("\\")) cleanId = stripped.slice(1);
13609
+ else cleanId = stripped;
13610
+ }
13611
+ if (cleanId === VIRTUAL_GOOGLE) return RESOLVED_GOOGLE;
13612
+ if (cleanId === VIRTUAL_LOCAL) return RESOLVED_LOCAL;
13613
+ if (cleanId === VIRTUAL_FONT_CSS_REGISTER) return RESOLVED_FONT_CSS_REGISTER;
13462
13614
  return null;
13463
13615
  },
13464
13616
  load(id) {
13465
13617
  if (id === RESOLVED_GOOGLE) return generateGoogleVirtualModule(registry);
13466
13618
  if (id === RESOLVED_LOCAL) return generateLocalVirtualModule();
13619
+ if (id === RESOLVED_FONT_CSS_REGISTER) {
13620
+ const css = generateAllFontCss(registry);
13621
+ return `globalThis.__timber_font_css = ${JSON.stringify(css)};`;
13622
+ }
13467
13623
  return null;
13468
13624
  },
13625
+ configureServer(server) {
13626
+ server.middlewares.use((req, res, next) => {
13627
+ const url = req.url;
13628
+ if (!url || !url.startsWith("/_timber/fonts/")) return next();
13629
+ const requestedFilename = url.slice(15);
13630
+ if (requestedFilename.includes("..") || requestedFilename.includes("/")) {
13631
+ res.statusCode = 400;
13632
+ res.end("Bad request");
13633
+ return;
13634
+ }
13635
+ for (const font of registry.values()) {
13636
+ if (font.provider !== "local" || !font.localSources) continue;
13637
+ for (const src of font.localSources) if ((src.path.split("/").pop() ?? "") === requestedFilename) {
13638
+ const absolutePath = normalize(resolve(src.path));
13639
+ if (!existsSync(absolutePath)) {
13640
+ res.statusCode = 404;
13641
+ res.end("Not found");
13642
+ return;
13643
+ }
13644
+ const data = readFileSync(absolutePath);
13645
+ const ext = absolutePath.split(".").pop()?.toLowerCase();
13646
+ res.setHeader("Content-Type", {
13647
+ woff2: "font/woff2",
13648
+ woff: "font/woff",
13649
+ ttf: "font/ttf",
13650
+ otf: "font/otf",
13651
+ eot: "application/vnd.ms-fontopen"
13652
+ }[ext ?? ""] ?? "application/octet-stream");
13653
+ res.setHeader("Cache-Control", "public, max-age=31536000, immutable");
13654
+ res.setHeader("Access-Control-Allow-Origin", "*");
13655
+ res.end(data);
13656
+ return;
13657
+ }
13658
+ }
13659
+ next();
13660
+ });
13661
+ },
13469
13662
  async buildStart() {
13470
13663
  if (ctx.dev) return;
13471
13664
  const googleFonts = [...registry.values()].filter((f) => f.provider === "google");
@@ -13521,10 +13714,13 @@ function timberFonts(ctx) {
13521
13714
  }
13522
13715
  }
13523
13716
  if (hasLocalImport) transformedCode = transformLocalFonts(transformedCode, code, id, registry, this.error.bind(this));
13524
- if (transformedCode !== code) return {
13525
- code: transformedCode,
13526
- map: null
13527
- };
13717
+ if (transformedCode !== code) {
13718
+ if (registry.size > 0) transformedCode = `import '${VIRTUAL_FONT_CSS_REGISTER}';\n` + transformedCode;
13719
+ return {
13720
+ code: transformedCode,
13721
+ map: null
13722
+ };
13723
+ }
13528
13724
  return null;
13529
13725
  },
13530
13726
  generateBundle() {
@@ -13533,6 +13729,23 @@ function timberFonts(ctx) {
13533
13729
  fileName: `_timber/fonts/${cf.hashedFilename}`,
13534
13730
  source: cf.data
13535
13731
  });
13732
+ for (const font of registry.values()) {
13733
+ if (font.provider !== "local" || !font.localSources) continue;
13734
+ for (const src of font.localSources) {
13735
+ const absolutePath = normalize(resolve(src.path));
13736
+ if (!existsSync(absolutePath)) {
13737
+ this.warn(`Local font file not found: ${absolutePath}`);
13738
+ continue;
13739
+ }
13740
+ const basename = src.path.split("/").pop() ?? src.path;
13741
+ const data = readFileSync(absolutePath);
13742
+ this.emitFile({
13743
+ type: "asset",
13744
+ fileName: `_timber/fonts/${basename}`,
13745
+ source: data
13746
+ });
13747
+ }
13748
+ }
13536
13749
  if (!ctx.buildManifest) return;
13537
13750
  const cachedByFamily = /* @__PURE__ */ new Map();
13538
13751
  for (const cf of cachedFonts) {
@@ -14400,7 +14613,17 @@ function classifyRoute(segments, outputMode = "server") {
14400
14613
  function green(text) {
14401
14614
  return `\x1b[92m${text}\x1b[39m`;
14402
14615
  }
14403
- /** Walk the route tree and collect all leaf routes (pages + API endpoints). */
14616
+ /**
14617
+ * Walk the route tree and collect all leaf routes (pages + API endpoints).
14618
+ *
14619
+ * Parallel slots (`@artists`, `@shows`, etc.) are intentionally skipped —
14620
+ * they render alongside the parent page at the same URL and are not
14621
+ * separately URL-addressable. Their JS is captured in shared/layout chunks.
14622
+ *
14623
+ * After collection, entries are deduplicated by URL path so that overlapping
14624
+ * route groups (e.g. `(browse)` and `(marketing)` both producing `/`) only
14625
+ * appear once. The entry with the largest route-specific size wins.
14626
+ */
14404
14627
  function collectRoutes(tree) {
14405
14628
  const routes = [];
14406
14629
  function walk(node, chain) {
@@ -14417,10 +14640,14 @@ function collectRoutes(tree) {
14417
14640
  entryFilePath: node.route.filePath
14418
14641
  });
14419
14642
  for (const child of node.children) walk(child, currentChain);
14420
- for (const slot of node.slots.values()) walk(slot, currentChain);
14421
14643
  }
14422
14644
  walk(tree.root, []);
14423
- return routes;
14645
+ const seen = /* @__PURE__ */ new Map();
14646
+ for (const route of routes) {
14647
+ const existing = seen.get(route.path);
14648
+ if (!existing || route.segments.length > existing.segments.length) seen.set(route.path, route);
14649
+ }
14650
+ return Array.from(seen.values());
14424
14651
  }
14425
14652
  /** Produce formatted report lines for the Vite logger. */
14426
14653
  function buildRouteReport(entries, sharedSize) {
@@ -14815,7 +15042,8 @@ function timber(config) {
14815
15042
  rsc: "virtual:timber-rsc-entry",
14816
15043
  ssr: "virtual:timber-ssr-entry",
14817
15044
  client: "virtual:timber-browser-entry"
14818
- }
15045
+ },
15046
+ clientChunks: () => "client-refs"
14819
15047
  });
14820
15048
  });
14821
15049
  return [